Compare commits

...

10 Commits

47 changed files with 3038 additions and 19112 deletions

19524
.idea/workspace.xml generated

File diff suppressed because it is too large Load Diff

View File

@@ -3,4 +3,4 @@ database:
driver: mysql driver: mysql
user: c8sterivein user: c8sterivein
password: sterivein-bd-2014 password: sterivein-bd-2014
dsn: mysql:host=localhost;dbname=c8sterivein dsn: mysql:host=127.0.0.1;dbname=c8sterivein

View File

@@ -58,21 +58,21 @@ var OWNER_CANT_VOTE = 'OWNER_CANT_VOTE';
<link href="/templates/corporate/css/ie.css" rel="stylesheet" type="text/css" /> <link href="/templates/corporate/css/ie.css" rel="stylesheet" type="text/css" />
<![endif]--> <![endif]-->
<link rel="shortcut icon" href="/templates/corporate/favicon.ico" /> <link rel="shortcut icon" href="/templates/corporate/favicon.ico" />
<script type="text/javascript"> <script type="text/javascript">
var _gaq = _gaq || []; var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-20717501-4']); _gaq.push(['_setAccount', 'UA-20717501-4']);
_gaq.push(['_trackPageview']); _gaq.push(['_trackPageview']);
(function() { (function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})(); })();
</script> </script>
</head> </head>
<body> <body>
@@ -117,107 +117,107 @@ _gaq.push(['_trackPageview']);
<p><img src="/images/stories/fran.gif" border="0" alt="fran.gif" title="fran.gif" /></p> <p><img src="/images/stories/fran.gif" border="0" alt="fran.gif" title="fran.gif" /></p>
<p><embed src="http://www.la-mousse.com/images/consensus2010fr.pdf" width="720" height="576"/></p><div id="comments-container">
<div id="comments-header">
<p><embed src="http://www.la-mousse.com/images/consensus2010fr.pdf" width="720" height="576"/></p><div id="comments-container"> <h3>Commentaires</h3><a name="comments"></a>
<div id="comments-header"> <!--<p>Sort by <a href="#" class="active">Date</a> <a href="#">Rating</a> <a href="#">Last Activity</a></p>-->
<h3>Commentaires</h3><a name="comments"></a> </div>
<!--<p>Sort by <a href="#" class="active">Date</a> <a href="#">Rating</a> <a href="#">Last Activity</a></p>--> <div id="allcomments">
</div> <div class="comment-item" id="commentID346">
<div id="allcomments"> <div class="comment-item-header"><a name="commentID346"></a>
<div class="comment-item" id="commentID346"> <a href="/component/comprofiler/userprofile/lopette.html"><img src="http://la-mousse.com/components/com_chronocomments/images/avatar1.png" alt="avatar" class="avatar" width="26" height="26" /></a>
<div class="comment-item-header"><a name="commentID346"></a> <span class="nickname-link">lopette</span>
<a href="/component/comprofiler/userprofile/lopette.html"><img src="http://la-mousse.com/components/com_chronocomments/images/avatar1.png" alt="avatar" class="avatar" width="26" height="26" /></a> <div class="rating">
<span class="nickname-link">lopette</span> <div class="score" id="score346">+5</div> <div id="plus_346" class="rating-plus" onmouseover="showPlus(this.id);" onClick="addPlus(346);" onmouseout="hidePlus(this.id);">&nbsp;</div> <div id="minus_346" class="rating-minus" onmouseover="showMinus(this.id);" onClick="addMinus(346);" onmouseout="hideMinus(this.id);">&nbsp;</div>
<div class="rating"> </div>
<div class="score" id="score346">+5</div> <div id="plus_346" class="rating-plus" onmouseover="showPlus(this.id);" onClick="addPlus(346);" onmouseout="hidePlus(this.id);">&nbsp;</div> <div id="minus_346" class="rating-minus" onmouseover="showMinus(this.id);" onClick="addMinus(346);" onmouseout="hideMinus(this.id);">&nbsp;</div> </div>
</div> <div class="comment-body">
</div> ll
<div class="comment-body"> </div>
ll <div class="comment-status">
</div> <strong><a href="#commentID346">Dimanche 14 Octobre 2012, 18:30</a></strong>
<div class="comment-status"> <div class="comment-button" id="post_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="showCommentForm(346);">
<strong><a href="#commentID346">Dimanche 14 Octobre 2012, 18:30</a></strong> <div class="comment-button-left" id="post_346_l"></div>
<div class="comment-button" id="post_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="showCommentForm(346);"> <div class="comment-button-center" id="post_346_c">R&eacute;pondre</div>
<div class="comment-button-left" id="post_346_l"></div> <div class="comment-button-right" id="post_346_r"></div>
<div class="comment-button-center" id="post_346_c">R&eacute;pondre</div> </div>
<div class="comment-button-right" id="post_346_r"></div> </div>
</div> <div class="clear"></div>
</div> <div id="post_346_form" class="comment-form">
<div class="clear"></div> <div id="post_346_form_loading" style="text-align:center; display:none;"><img src="http://la-mousse.com/components/com_chronocomments/loaderb.gif" /></div>
<div id="post_346_form" class="comment-form"> <fieldset>
<div id="post_346_form_loading" style="text-align:center; display:none;"><img src="http://la-mousse.com/components/com_chronocomments/loaderb.gif" /></div> <form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_346" name="ccform_346" method="post" >
<fieldset> <textarea id="post_346_text" name="text" cols="" rows="" class="form-text"></textarea>
<form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_346" name="ccform_346" method="post" > <input name="name" type="text" id="ccname_346" class="form-input" value="MONFREUX" /> <span class="input-text">Nom *</span><br /> <input name="email" type="text" id="ccemail_346" class="form-input" value="dr.monfreux@sterivein.com" /> <span class="input-text">Courriel (pour v&eacute;rification & r&eacute;ponses)</span><br />
<textarea id="post_346_text" name="text" cols="" rows="" class="form-text"></textarea> <input name="url" type="text" id="ccurl_346" value="http://" class="form-input" /> <span class="input-text">URL</span><br />
<input name="name" type="text" id="ccname_346" class="form-input" value="MONFREUX" /> <span class="input-text">Nom *</span><br /> <input name="email" type="text" id="ccemail_346" class="form-input" value="dr.monfreux@sterivein.com" /> <span class="input-text">Courriel (pour v&eacute;rification & r&eacute;ponses)</span><br /> <input name="comment_captcha" type="text" size="5" style="width:30%" id="comment_captcha_346" class="form-input" /> <span class="input-text">Code</span>
<input name="url" type="text" id="ccurl_346" value="http://" class="form-input" /> <span class="input-text">URL</span><br /> &nbsp;&nbsp;<img id="comment_captcha_img" class="comment_captcha_img" src="http://la-mousse.com/components/com_chronocomments/chrono_verification.php?imtype=1&anticache=7111">
<input name="comment_captcha" type="text" size="5" style="width:30%" id="comment_captcha_346" class="form-input" /> <span class="input-text">Code</span> <br />
&nbsp;&nbsp;<img id="comment_captcha_img" class="comment_captcha_img" src="http://la-mousse.com/components/com_chronocomments/chrono_verification.php?imtype=1&anticache=7111"> <span class="input-text"><!-- You are not allowed to remove the next credit link without a ChronoComments license from ChronoEngine.com --><strong>ChronoComments by </strong><a target="_blank" href="http://www.chronoengine.com"><strong>Joomla Professional Solutions</strong></a></span>
<br /> <div class="clear"></div>
<span class="input-text"><!-- You are not allowed to remove the next credit link without a ChronoComments license from ChronoEngine.com --><strong>ChronoComments by </strong><a target="_blank" href="http://www.chronoengine.com"><strong>Joomla Professional Solutions</strong></a></span> <div class="comment-status">
<div class="clear"></div>
<div class="comment-status"> <div class="comment-button" id="submit_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="submitCommentForm(346);">
<div class="comment-button-left" id="submit_346_l"></div>
<div class="comment-button" id="submit_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="submitCommentForm(346);"> <div class="comment-button-center" id="submit_346_c">Soumettre ce commentaire</div>
<div class="comment-button-left" id="submit_346_l"></div> <div class="comment-button-right" id="submit_346_r"></div>
<div class="comment-button-center" id="submit_346_c">Soumettre ce commentaire</div> </div>
<div class="comment-button-right" id="submit_346_r"></div> <div class="comment-button" id="cancel_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="hideCommentForm(346);">
</div> <div class="comment-button-left" id="cancel_346_l"></div>
<div class="comment-button" id="cancel_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="hideCommentForm(346);"> <div class="comment-button-center" id="cancel_346_c">Annuler</div>
<div class="comment-button-left" id="cancel_346_l"></div> <div class="comment-button-right" id="cancel_346_r"></div>
<div class="comment-button-center" id="cancel_346_c">Annuler</div> </div>
<div class="comment-button-right" id="cancel_346_r"></div> </div>
</div> <input name="component" type="hidden" value="com_content" />
</div> <input name="pageid" type="hidden" value="80" />
<input name="component" type="hidden" value="com_content" /> <input name="userid" type="hidden" value="128" />
<input name="pageid" type="hidden" value="80" /> <input name="commentid" type="hidden" value="" />
<input name="userid" type="hidden" value="128" /> <input name="parentid" type="hidden" value="346" />
<input name="commentid" type="hidden" value="" /> <input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
<input name="parentid" type="hidden" value="346" /> </fieldset>
<input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form> </div>
</fieldset> <div class="clear1"></div>
</div>
<div class="clear1"></div> </div>
</div>
</div>
</div>
<div id="post_x1_form" class="comment-form display">
<div id="post_x1_form_loading" style="text-align:center; display:none;"><img src="http://la-mousse.com/components/com_chronocomments/loaderb.gif" /></div>
<div id="post_x1_form" class="comment-form display"> <form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_x1" name="ccform_x1" method="post" >
<div id="post_x1_form_loading" style="text-align:center; display:none;"><img src="http://la-mousse.com/components/com_chronocomments/loaderb.gif" /></div> <textarea name="text" id="post_x1_text" cols="" rows="" class="form-text"></textarea>
<form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_x1" name="ccform_x1" method="post" > <input name="name" type="text" id="ccname_x1" class="form-input" value="MONFREUX" /> <span class="input-text">Nom *</span><br /> <input name="email" type="text" id="ccemail_x1" class="form-input" value="dr.monfreux@sterivein.com" /> <span class="input-text">Courriel (pour v&eacute;rification & r&eacute;ponses)</span><br />
<textarea name="text" id="post_x1_text" cols="" rows="" class="form-text"></textarea> <input name="url" type="text" id="ccurl_x1" value="http://" class="form-input" /> <span class="input-text">URL</span><br />
<input name="name" type="text" id="ccname_x1" class="form-input" value="MONFREUX" /> <span class="input-text">Nom *</span><br /> <input name="email" type="text" id="ccemail_x1" class="form-input" value="dr.monfreux@sterivein.com" /> <span class="input-text">Courriel (pour v&eacute;rification & r&eacute;ponses)</span><br /> <input name="comment_captcha" type="text" size="5" style="width:30%" id="comment_captcha_x1" class="form-input" /> <span class="input-text">Code</span>
<input name="url" type="text" id="ccurl_x1" value="http://" class="form-input" /> <span class="input-text">URL</span><br /> &nbsp;&nbsp;<img id="comment_captcha_img" class="comment_captcha_img" src="http://la-mousse.com/components/com_chronocomments/chrono_verification.php?imtype=1&anticache=71140">
<input name="comment_captcha" type="text" size="5" style="width:30%" id="comment_captcha_x1" class="form-input" /> <span class="input-text">Code</span> <br />
&nbsp;&nbsp;<img id="comment_captcha_img" class="comment_captcha_img" src="http://la-mousse.com/components/com_chronocomments/chrono_verification.php?imtype=1&anticache=71140"> <span class="input-text"><!-- You are not allowed to remove the next credit link without a ChronoComments license from ChronoEngine.com --><strong>ChronoComments by </strong><a target="_blank" href="http://www.chronoengine.com"><strong>Joomla Professional Solutions</strong></a></span>
<br /> <div class="clear"></div>
<span class="input-text"><!-- You are not allowed to remove the next credit link without a ChronoComments license from ChronoEngine.com --><strong>ChronoComments by </strong><a target="_blank" href="http://www.chronoengine.com"><strong>Joomla Professional Solutions</strong></a></span> <div class="comment-status">
<div class="clear"></div>
<div class="comment-status"> <div class="comment-button" id="submit_x1" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="submitCommentForm('x1');">
<div class="comment-button-left" id="submit_x1_l"></div>
<div class="comment-button" id="submit_x1" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="submitCommentForm('x1');"> <div class="comment-button-center" id="submit_x1_c">Soumettre ce commentaire</div>
<div class="comment-button-left" id="submit_x1_l"></div> <div class="comment-button-right" id="submit_x1_r"></div>
<div class="comment-button-center" id="submit_x1_c">Soumettre ce commentaire</div> </div>
<div class="comment-button-right" id="submit_x1_r"></div>
</div> </div>
<input name="component" type="hidden" value="com_content" />
</div> <input name="pageid" type="hidden" value="80" />
<input name="component" type="hidden" value="com_content" /> <input name="userid" type="hidden" value="128" />
<input name="pageid" type="hidden" value="80" /> <input name="parentid" type="hidden" value="0" />
<input name="userid" type="hidden" value="128" /> <input name="commentid" type="hidden" value="" />
<input name="parentid" type="hidden" value="0" /> <input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
<input name="commentid" type="hidden" value="" /> </div>
<input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
</div> </div>
<div id="ccresponse">
</div> <div id="ccloading"></div>
<div id="ccresponse"> <div id="ccsuccess"></div>
<div id="ccloading"></div> <div id="ccfail"></div>
<div id="ccsuccess"></div> </div>
<div id="chrono_comments_AJAX_response_temp" style="display:none;"></div> <div id="chrono_comments_AJAX_response_temp" style="display:none;"></div>
<span class="articleseparator">&nbsp;</span> <span class="articleseparator">&nbsp;</span>

View File

@@ -1,44 +1,44 @@
GE7vlAm9WMSVdL1BBXmeD2P1ZEWn6muDOdGYOaey91vi8104USqy5IrH4EmBVpbmFA GE7vlAm9WMSVdL1BBXmeD2P1ZEWn6muDOdGYOaey91vi8104USqy5IrH4EmBVpbmFA
dY2sm0spP7rjwm2YU97L6etVXtmidboXK2uyDGKo3tq1ruDId1vNY5dUPqpT8R1y3L dY2sm0spP7rjwm2YU97L6etVXtmidboXK2uyDGKo3tq1ruDId1vNY5dUPqpT8R1y3L
LBa3ujKfrobNukNlLmi614ZqZ95IAg4wLhoAa9eTx7tMHdECYJwaMQdUkpevoFKoQy LBa3ujKfrobNukNlLmi614ZqZ95IAg4wLhoAa9eTx7tMHdECYJwaMQdUkpevoFKoQy
S3WFBwoltAHgQd3pEjOraOiKS5ZcqCdDtXLOCta3hcRt2JgLFIEhJvcXECIzCqiVhl S3WFBwoltAHgQd3pEjOraOiKS5ZcqCdDtXLOCta3hcRt2JgLFIEhJvcXECIzCqiVhl
eJr7kjuACxt8p3OTe8RjOTVLTRbvJiv1VPYRsvAWXggIXEfm75tv1CcaMy2K0GAqoa eJr7kjuACxt8p3OTe8RjOTVLTRbvJiv1VPYRsvAWXggIXEfm75tv1CcaMy2K0GAqoa
x92iBrg6fFJlTUIP3vjil7CnjDPo0pgxEaMpOjadKDsmsmsP4eeJEsc1jlVgZ7hP6U x92iBrg6fFJlTUIP3vjil7CnjDPo0pgxEaMpOjadKDsmsmsP4eeJEsc1jlVgZ7hP6U
EN9PGjuwegkfuvxCKHifmWVhufEunk62uclrUT1ux0XkmNWFm5VxXs6dapzFHgmHnY EN9PGjuwegkfuvxCKHifmWVhufEunk62uclrUT1ux0XkmNWFm5VxXs6dapzFHgmHnY
lxckSHxSRqPLabW8ll1jn0BnH8x4PItAsXQe93YDPK552FsdKuVucDduMdNU9oI2pI lxckSHxSRqPLabW8ll1jn0BnH8x4PItAsXQe93YDPK552FsdKuVucDduMdNU9oI2pI
bssDMRNkKD7gds6LrBAPNCpmp84mtIyvOqthjgKjH57fLqZ17my03C92ANaOVck1un bssDMRNkKD7gds6LrBAPNCpmp84mtIyvOqthjgKjH57fLqZ17my03C92ANaOVck1un
BwcqZyOwYhxwwmAymGvBLYHYhXc6kyafOrPBpdcnUQ8MmYaBPan8lv6lyLZtWlz7cr BwcqZyOwYhxwwmAymGvBLYHYhXc6kyafOrPBpdcnUQ8MmYaBPan8lv6lyLZtWlz7cr
HyE9s8dx8NN4RCUrer976qfdzfCTJO4QImKiAWrzKGmQB22YZYuaCnbIAm7EvaPUMc HyE9s8dx8NN4RCUrer976qfdzfCTJO4QImKiAWrzKGmQB22YZYuaCnbIAm7EvaPUMc
Nsyt1YcUT6RyzLBS2EBkl6jn7l2RTKB6qrWSGTgOfJozF1853AoBXnZN2iZ32fp95b Nsyt1YcUT6RyzLBS2EBkl6jn7l2RTKB6qrWSGTgOfJozF1853AoBXnZN2iZ32fp95b
bP0pAKYMptkmXjGIEDdCjvHfoCd1TLb1onywU7H3Xl0M0RAKsKpVw2UZ59MvfzwygA bP0pAKYMptkmXjGIEDdCjvHfoCd1TLb1onywU7H3Xl0M0RAKsKpVw2UZ59MvfzwygA
2JZBegSHydBvAA6f7Y7eUJxeEPdR58XTaQljHBA3znO5tl4XAs3bJwvWxxH55ZUOSt 2JZBegSHydBvAA6f7Y7eUJxeEPdR58XTaQljHBA3znO5tl4XAs3bJwvWxxH55ZUOSt
uWWJUIxTobE82LNQTxBUiBB6jPIPZNndV0swUHxF0IalwodLYn0EVgKeevzBdectCO uWWJUIxTobE82LNQTxBUiBB6jPIPZNndV0swUHxF0IalwodLYn0EVgKeevzBdectCO
EDCxoMxNtwiEHNvEOtlG8HRltxG44jLL4k2bxyJvvs1XV5OlNgwJO4FQftt0wlTYY9 EDCxoMxNtwiEHNvEOtlG8HRltxG44jLL4k2bxyJvvs1XV5OlNgwJO4FQftt0wlTYY9
xdM9OJ3svb9FzHL9PBDGShOv6ZhxOrMhNxTNf7vK5gtUL1tPvcjzeSbyIWxXNhou15 xdM9OJ3svb9FzHL9PBDGShOv6ZhxOrMhNxTNf7vK5gtUL1tPvcjzeSbyIWxXNhou15
q4o5ZxmqcDJWeblzefVUjtzrMs5PnA5QoMuU7siDnXmh1GbDQsEEW9CIbDXSepHxIZ q4o5ZxmqcDJWeblzefVUjtzrMs5PnA5QoMuU7siDnXmh1GbDQsEEW9CIbDXSepHxIZ
HC48dhjbmkdlPMorjCBLbHNUJf7eSMxKPyPrOFAhZai0w68AIc9D7ptZJoPEqms64O HC48dhjbmkdlPMorjCBLbHNUJf7eSMxKPyPrOFAhZai0w68AIc9D7ptZJoPEqms64O
9lJbdo5ZG0PopS7dmEpcSWWpDFV3jhyJTYCpVCwwaSe4JoxoqcPCMCatFnti7kq5rN 9lJbdo5ZG0PopS7dmEpcSWWpDFV3jhyJTYCpVCwwaSe4JoxoqcPCMCatFnti7kq5rN
4MDogPwrgOVSrjjf3n64uvPPoZFdBqlRJX9GEBslEE6nfPT4jKWhwji2BXifKwWwAG 4MDogPwrgOVSrjjf3n64uvPPoZFdBqlRJX9GEBslEE6nfPT4jKWhwji2BXifKwWwAG
7g6skqXHXcYfJJ876oijteOXINUCUJDMZxdqahTzJMnu0C9FskoOC2lTnZw0zsJ5DF 7g6skqXHXcYfJJ876oijteOXINUCUJDMZxdqahTzJMnu0C9FskoOC2lTnZw0zsJ5DF
ElXEALjZezEWQu4LkuJXXd2IThyEKLfth1doUHcWN6HJ4UUBR5d0w02IQ6Mxdt3LjB ElXEALjZezEWQu4LkuJXXd2IThyEKLfth1doUHcWN6HJ4UUBR5d0w02IQ6Mxdt3LjB
5Ldqqsab7WCwPWKEY6jmFEtscM0GVLXHuQk6jqiKod90ZaQKk5FT7y36a01ES18mB4 5Ldqqsab7WCwPWKEY6jmFEtscM0GVLXHuQk6jqiKod90ZaQKk5FT7y36a01ES18mB4
BycGRfNXDWoqlYGsRCc1XhD8YNMfn8kEVmxyqZyfoKwXoUVAeAAooKAC4HHK7fRKDM BycGRfNXDWoqlYGsRCc1XhD8YNMfn8kEVmxyqZyfoKwXoUVAeAAooKAC4HHK7fRKDM
144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0 144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0
7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6 7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6
6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4 6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
112A59107EB88144C8A7336C5487503B02EF1E0937AB588DC4E42D35BC8567C0EA 112A59107EB88144C8A7336C5487503B02EF1E0937AB588DC4E42D35BC8567C0EA
181F19D1F3D8D3C19626080F3D3DA7901B63475590DD907AE1eFcB1ZxNnOK4rRiC 181F19D1F3D8D3C19626080F3D3DA7901B63475590DD907AE1eFcB1ZxNnOK4rRiC
YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4 YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0 144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0
7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6 7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6
6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4 6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
1127349E4948198B92E77303D3BF9D9E7C0D37B60245BB789F425406ED1ADC2EA7 1127349E4948198B92E77303D3BF9D9E7C0D37B60245BB789F425406ED1ADC2EA7
BAED72A82D8300C138275636798737F202F376F40453FA7B01eFcB1ZxNnOK4rRiC BAED72A82D8300C138275636798737F202F376F40453FA7B01eFcB1ZxNnOK4rRiC
YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4 YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIPSATIS_SCLERIVEINSTERIVEIN,26/08/2014,V4,MERCANET,PROD++++++++++ SIPSATIS_SCLERIVEINSTERIVEIN,26/08/2014,V4,MERCANET,PROD++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++END +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++END

View File

@@ -1,60 +1,60 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>courriel de confirmation de commande de {config key="url_site"} </title> <title>courriel de confirmation de commande de {config key="url_site"} </title>
<style type="text/css"> <style type="text/css">
body { body {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
font-size: 100%; font-size: 100%;
text-align: center; text-align: center;
} }
#liencompte { #liencompte {
margin: 15px 0; margin: 15px 0;
text-align: center; text-align: center;
font-size: 10pt; font-size: 10pt;
} }
#wrapper { #wrapper {
width: 480pt; width: 480pt;
margin: 0 auto; margin: 0 auto;
} }
#entete { #entete {
padding-bottom: 20px; padding-bottom: 20px;
margin-bottom: 10px; margin-bottom: 10px;
border-bottom: 1px dotted #000; border-bottom: 1px dotted #000;
} }
#logotexte { #logotexte {
float: left; float: left;
width: 180pt; width: 180pt;
height: 75pt; height: 75pt;
border: 1pt solid #000; border: 1pt solid #000;
font-size: 18pt; font-size: 18pt;
text-align: center; text-align: center;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="wrapper"> <div id="wrapper">
<div id="entete"> <div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1> <h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">The payment of your order is confirmed</h2> <h2 id="info">The payment of your order is confirmed</h2>
<h3 id="commande">Reference {$order_ref} </h3> <h3 id="commande">Reference {$order_ref} </h3>
</div> </div>
<p id="liencompte"> <p id="liencompte">
Your invoice is now available in your customer account on Your invoice is now available in your customer account on
<a href="{config key="url_site"}">{config key="store_name"}</a>. <a href="{config key="url_site"}">{config key="store_name"}</a>.
</p> </p>
<p>Thank you for your order !</p> <p>Thank you for your order !</p>
<p>The {config key="store_name"} team.</p> <p>The {config key="store_name"} team.</p>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,9 @@
Dear customer, Dear customer,
This is a confirmation of the payment of your order {$order_ref} via Payzen on our shop. This is a confirmation of the payment of your order {$order_ref} via Payzen on our shop.
Your invoice is now available in your customer account at {config key="url_site"} Your invoice is now available in your customer account at {config key="url_site"}
Thank you again for your purchase. Thank you again for your purchase.
The {config key="store_name"} team. The {config key="store_name"} team.

View File

@@ -1,62 +1,62 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Confirmation du paiement de votre commande sur {config key="url_site"} </title> <title>Confirmation du paiement de votre commande sur {config key="url_site"} </title>
<style type="text/css"> <style type="text/css">
body { body {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
font-size: 100%; font-size: 100%;
text-align: center; text-align: center;
} }
#liencompte { #liencompte {
margin: 15px 0; margin: 15px 0;
text-align: center; text-align: center;
font-size: 10pt; font-size: 10pt;
} }
#wrapper { #wrapper {
width: 480pt; width: 480pt;
margin: 0 auto; margin: 0 auto;
} }
#entete { #entete {
padding-bottom: 20px; padding-bottom: 20px;
margin-bottom: 10px; margin-bottom: 10px;
border-bottom: 1px dotted #000; border-bottom: 1px dotted #000;
} }
#logotexte { #logotexte {
float: left; float: left;
width: 180pt; width: 180pt;
height: 75pt; height: 75pt;
border: 1pt solid #000; border: 1pt solid #000;
font-size: 18pt; font-size: 18pt;
text-align: center; text-align: center;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="wrapper"> <div id="wrapper">
<div id="entete"> <div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1> <h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">Confirmation du paiement de votre commande</h2> <h2 id="info">Confirmation du paiement de votre commande</h2>
<h3 id="commande">N&deg; {$order_ref}</h3> <h3 id="commande">N&deg; {$order_ref}</h3>
</div> </div>
<p id="liencompte"> <p id="liencompte">
Le suivi de votre commande est disponible dans la rubrique mon compte sur Le suivi de votre commande est disponible dans la rubrique mon compte sur
<a href="{config key="url_site"}">{config key="url_site"}</a> <a href="{config key="url_site"}">{config key="url_site"}</a>
</p> </p>
<p>Merci pour votre achat !</p> <p>Merci pour votre achat !</p>
<p>L'équipe {config key="store_name"}</p> <p>L'équipe {config key="store_name"}</p>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,9 +1,9 @@
Cher client, Cher client,
Ce message confirme le paiement de votre commande numero {$order_ref} via Payzen sur notre boutique. Ce message confirme le paiement de votre commande numero {$order_ref} via Payzen sur notre boutique.
Votre facture est maintenant disponible dans votre compte client à l'adresse {config key="url_site"} Votre facture est maintenant disponible dans votre compte client à l'adresse {config key="url_site"}
Merci encore pour votre achat ! Merci encore pour votre achat !
L'équipe {config key="store_name"} L'équipe {config key="store_name"}

View File

@@ -1,55 +1,55 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Order {config key="url_site"} </title> <title>Order {config key="url_site"} </title>
<style type="text/css"> <style type="text/css">
body { body {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
font-size: 100%; font-size: 100%;
text-align: center; text-align: center;
} }
#liencompte { #liencompte {
margin: 15px 0; margin: 15px 0;
text-align: center; text-align: center;
font-size: 10pt; font-size: 10pt;
} }
#wrapper { #wrapper {
width: 480pt; width: 480pt;
margin: 0 auto; margin: 0 auto;
} }
#entete { #entete {
padding-bottom: 20px; padding-bottom: 20px;
margin-bottom: 10px; margin-bottom: 10px;
border-bottom: 1px dotted #000; border-bottom: 1px dotted #000;
} }
#logotexte { #logotexte {
float: left; float: left;
width: 180pt; width: 180pt;
height: 75pt; height: 75pt;
border: 1pt solid #000; border: 1pt solid #000;
font-size: 18pt; font-size: 18pt;
text-align: center; text-align: center;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="wrapper"> <div id="wrapper">
<div id="entete"> <div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1> <h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">Your order has been shipped.</h2> <h2 id="info">Your order has been shipped.</h2>
</div> </div>
<p>Dear customer,<p> <p>Dear customer,<p>
<p>Your order {$order_ref} in {config key="store_name"} has been shipped.<p> <p>Your order {$order_ref} in {config key="store_name"} has been shipped.<p>
<p>Thank you for your order !</p> <p>Thank you for your order !</p>
<p>The {config key="store_name"} team.</p> <p>The {config key="store_name"} team.</p>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,7 +1,7 @@
Dear customer, Dear customer,
Your order {$order_ref} in {config key="store_name"} has been shipped. Your order {$order_ref} in {config key="store_name"} has been shipped.
Thank you again for your purchase. Thank you again for your purchase.
The {config key="store_name"} team. The {config key="store_name"} team.

View File

@@ -1,57 +1,57 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Confirmation de l'expédition de votre commande sur {config key="url_site"}</title> <title>Confirmation de l'expédition de votre commande sur {config key="url_site"}</title>
<style type="text/css"> <style type="text/css">
body { body {
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
font-size: 100%; font-size: 100%;
text-align: center; text-align: center;
} }
#liencompte { #liencompte {
margin: 15px 0; margin: 15px 0;
text-align: center; text-align: center;
font-size: 10pt; font-size: 10pt;
} }
#wrapper { #wrapper {
width: 480pt; width: 480pt;
margin: 0 auto; margin: 0 auto;
} }
#entete { #entete {
padding-bottom: 20px; padding-bottom: 20px;
margin-bottom: 10px; margin-bottom: 10px;
border-bottom: 1px dotted #000; border-bottom: 1px dotted #000;
} }
#logotexte { #logotexte {
float: left; float: left;
width: 180pt; width: 180pt;
height: 75pt; height: 75pt;
border: 1pt solid #000; border: 1pt solid #000;
font-size: 18pt; font-size: 18pt;
text-align: center; text-align: center;
} }
</style> </style>
</head> </head>
<body> <body>
<div id="wrapper"> <div id="wrapper">
<div id="entete"> <div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1> <h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">Votre commande a été expédiée.</h2> <h2 id="info">Votre commande a été expédiée.</h2>
</div> </div>
<p>Cher client,</p> <p>Cher client,</p>
<p>Votre commande {$order_ref} sur {config key="store_name"} a été expédiée.</p> <p>Votre commande {$order_ref} sur {config key="store_name"} a été expédiée.</p>
<p>Merci pour votre achat !</p> <p>Merci pour votre achat !</p>
<p>L'équipe {config key="store_name"}</p> <p>L'équipe {config key="store_name"}</p>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -1,7 +1,7 @@
Cher client, Cher client,
Ce message confirme que votre commande {$order_ref} sur {config key="store_name"} a été expédiée. Ce message confirme que votre commande {$order_ref} sur {config key="store_name"} a été expédiée.
Merci encore pour votre achat ! Merci encore pour votre achat !
L'équipe {config key="store_name"} L'équipe {config key="store_name"}

View File

@@ -19,7 +19,7 @@
<default key="_controller">Front\Controller\CustomerController::viewRegisterAction</default> <default key="_controller">Front\Controller\CustomerController::viewRegisterAction</default>
</route> </route>
<route id="customer.create.process" path="/register" methods="post"> <route id="customer.create.process" path="/registerCustomer" methods="post">
<default key="_controller">Front\Controller\CustomerController::createAction</default> <default key="_controller">Front\Controller\CustomerController::createAction</default>
<default key="_view">register</default> <default key="_view">register</default>
</route> </route>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
</config>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://thelia.net/schema/dic/module"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_2.xsd">
<fullnamespace>LivraisonForfaitaire\LivraisonForfaitaire</fullnamespace>
<descriptive locale="en_US">
<title>Permet de gérer des montants de frais de livraison forfaitaires, pour les commandes passées dans le backOffice</title>
</descriptive>
<descriptive locale="fr_FR">
<title>Permet de gérer des montants de frais de livraison forfaitaires, pour les commandes passées dans le backOffice</title>
</descriptive>
<languages>
<language>en_US</language>
<language>fr_FR</language>
</languages>
<version>1.0.0</version>
<authors>
<author>
<name>Laurent LE CORRE</name>
<email>laurent@thecoredev.fr</email>
</author>
</authors>
<type>delivery</type>
<thelia>2.2.0</thelia>
<stability>other</stability>
<mandatory>0</mandatory>
<hidden>0</hidden>
</module>

View File

@@ -0,0 +1,55 @@
<?php
namespace LivraisonForfaitaire;
use Thelia\Model\Country;
use Thelia\Module\AbstractDeliveryModule;
class LivraisonForfaitaire extends AbstractDeliveryModule
{
/** @var string */
const DOMAIN_NAME = 'livraisonforfaitaire';
/**
* calculate and return delivery price
*
* @param Country $country
* @throws \Exception
*
* @return mixed
*/
public function getPostage(Country $country)
{
if (null !== $area = $this->getAreaForCountry($country)) {
$select = $this->getRequest()->get('select-forfait');
if ($select !== null && $select !== "")
$postage = $select;
else
$postage = $area->getPostage();
} else {
throw new \InvalidArgumentException("Country or Area should not be null");
}
return $postage === null ? 0 : $postage;
}
/**
* This method is called by the Delivery loop, to check if the current module has to be displayed to the customer.
* Override it to implements your delivery rules/
*
* If you return true, the delivery method will de displayed to the customer
* If you return false, the delivery method will not be displayed
*
* @param Country $country the country to deliver to.
*
* @return boolean
*/
public function isValidDelivery(Country $country)
{
// We should find an area for the country.
return null !== $this->getAreaForCountry($country);
}
}

View File

@@ -0,0 +1,55 @@
# Livraison Forfaitaire
Add a short description here. You can also add a screenshot if needed.
## Installation
### Manually
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the module is LivraisonForfaitaire.
* Activate it in your thelia administration panel
### Composer
Add it in your main thelia composer.json file
```
composer require your-vendor/livraison-forfaitaire-module:~1.0
```
## Usage
Explain here how to use your module, how to configure it, etc.
## Hook
If your module use one or more hook, fill this part. Explain which hooks are used.
## Loop
If your module declare one or more loop, describe them here like this :
[loop name]
### Input arguments
|Argument |Description |
|--- |--- |
|**arg1** | describe arg1 with an exemple. |
|**arg2** | describe arg2 with an exemple. |
### Output arguments
|Variable |Description |
|--- |--- |
|$VAR1 | describe $VAR1 variable |
|$VAR2 | describe $VAR2 variable |
### Exemple
Add a complete exemple of your loop
## Other ?
If you have other think to put, feel free to complete your readme as you want.

View File

@@ -0,0 +1,11 @@
{
"name": "your-vendor/livraison-forfaitaire-module",
"license": "LGPL-3.0+",
"type": "thelia-module",
"require": {
"thelia/installer": "~1.1"
},
"extra": {
"installer-name": "LivraisonForfaitaire"
}
}

View File

@@ -157,11 +157,12 @@ class OrderCreationAdminController extends BaseAdminController
$event->setRedirect(0); $event->setRedirect(0);
} }
$deliveryModuleId = $formValidate->get(OrderCreationCreateForm::FIELD_NAME_DELIVERY_MODULE_ID)->getData();
$event $event
->setContainer($this->getContainer()) ->setContainer($this->getContainer())
->setCustomerId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_CUSTOMER_ID)->getData()) ->setCustomerId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_CUSTOMER_ID)->getData())
->setDeliveryAddressId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_DELIVERY_ADDRESS_ID)->getData()) ->setDeliveryAddressId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_DELIVERY_ADDRESS_ID)->getData())
->setDeliveryModuleId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_DELIVERY_MODULE_ID)->getData()) ->setDeliveryModuleId($deliveryModuleId)
->setInvoiceAddressId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_INVOICE_ADDRESS_ID)->getData()) ->setInvoiceAddressId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_INVOICE_ADDRESS_ID)->getData())
->setPaymentModuleId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_PAYMENT_MODULE_ID)->getData()) ->setPaymentModuleId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_PAYMENT_MODULE_ID)->getData())
->setProductSaleElementIds($formValidate->get(OrderCreationCreateForm::FIELD_NAME_PRODUCT_SALE_ELEMENT_ID)->getData()) ->setProductSaleElementIds($formValidate->get(OrderCreationCreateForm::FIELD_NAME_PRODUCT_SALE_ELEMENT_ID)->getData())

View File

@@ -150,7 +150,7 @@
$listDelivery.removeClass('loading'); $listDelivery.removeClass('loading');
$listDelivery.html(response); $listDelivery.html(response);
$('#list-delivery input.delivery-method').each(function () { $('#list-delivery input.js-change-delivery-method').each(function () {
if ($(this).is(':checked')) { if ($(this).is(':checked')) {
$('#delivery-module').val($(this).val()); $('#delivery-module').val($(this).val());
} }
@@ -185,7 +185,7 @@
} }
}); });
$listDelivery.on('change', '.delivery-method', function () { $listDelivery.on('change', '.js-change-delivery-method', function () {
$('#delivery-module').val($(this).val()); $('#delivery-module').val($(this).val());
}); });

View File

@@ -103,6 +103,7 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<input type="hidden" id="delivery-module">
{custom_render_form_field field='delivery-module'} {custom_render_form_field field='delivery-module'}
<div id="list-delivery"> <div id="list-delivery">
<div class="alert alert-danger"> <div class="alert alert-danger">
@@ -125,7 +126,7 @@
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div "id="create-order-form-td-check-payment-redirect"> <div id="create-order-form-td-check-payment-redirect">
{render_form_field field='redirects_payment'} {render_form_field field='redirects_payment'}
</div> </div>
</div> </div>

View File

@@ -0,0 +1,42 @@
<?php
/**
* Created by Laurent LE CORRE <laurent@thecoredev.fr>
* Date: 12/01/2021
*/
namespace PurgeFakeCustomer\Command;
use PurgeFakeCustomer\Event\FakeCustomerEvent;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Thelia\Command\ContainerAwareCommand;
use Thelia\Model\ConfigQuery;
class FakeCustomerPurge extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName("fakecustomers:purge")
->setDescription("Purge all fake customers")
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$output->writeln(
sprintf("<info>Deleting fake customers</info>")
);
$critere = ConfigQuery::read('purgefakecustomer_critere', '');
$event = new FakeCustomerEvent($critere, $input->getOption('verbose'));
$this->getDispatcher()->dispatch(FakeCustomerEvent::PURGE, $event);
foreach ($event->getStatus() as $status => $level) {
$output->writeln("<$level>$status</$level>");
}
$output->writeln(sprintf("<info>%d fake customers deleted (Ids : %s)</info>", $event->getDeletedCount(), $event->getDeletedList()));
}
}

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<config xmlns="http://thelia.net/schema/dic/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/config http://thelia.net/schema/dic/config/thelia-1.0.xsd">
<commands>
<command class="PurgeFakeCustomer\Command\FakeCustomerPurge" />
</commands>
<services>
<service id="purgefakecustomer.purge" class="PurgeFakeCustomer\EventListener\EventManager">
<argument type="service" id="event_dispatcher" />
<tag name="kernel.event_subscriber"/>
</service>
</services>
</config>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="http://thelia.net/schema/dic/module"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://thelia.net/schema/dic/module http://thelia.net/schema/dic/module/module-2_2.xsd">
<fullnamespace>PurgeFakeCustomer\PurgeFakeCustomer</fullnamespace>
<descriptive locale="en_US">
<title>Delete fake customers</title>
</descriptive>
<descriptive locale="fr_FR">
<title>Supprime des faux comptes clients</title>
</descriptive>
<languages>
<language>en_US</language>
<language>fr_FR</language>
</languages>
<version>1.0</version>
<authors>
<author>
<name>Laurent LE CORRE</name>
<email>laurent@thecoredev.fr</email>
</author>
</authors>
<type>classic</type>
<thelia>2.3.0</thelia>
<stability>beta</stability>
<mandatory>0</mandatory>
<hidden>0</hidden>
</module>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="purgefakecustomer.purge" path="/purgefakecustomer/{secretKey}">
<default key="_controller">PurgeFakeCustomer\Controller\PurgeController::purge</default>
<requirement key="secretKey">.+</requirement>
</route>
</routes>

View File

@@ -0,0 +1 @@
sterivein-2021

View File

@@ -0,0 +1,41 @@
<?php
namespace PurgeFakeCustomer\Controller;
use PurgeFakeCustomer\Event\FakeCustomerEvent;
use Thelia\Controller\Front\BaseFrontController;
use Thelia\Core\HttpFoundation\Response;
use Thelia\Model\ConfigQuery;
/**
* Created by Laurent LE CORRE <laurent@thecoredev.fr>
* Date: 12/01/2021
*/
class PurgeController extends BaseFrontController
{
public function purge($secretKey)
{
$responseText = '';
$storedSecretKey = trim(@file_get_contents(__DIR__ .'/../Config/secret-key.txt'));
if ($storedSecretKey != $secretKey) {
$responseText .= sprintf("ERROR: key verification failed.<br>");
} else {
$critere = ConfigQuery::read('purgefakecustomer_critere', '');
$responseText .= sprintf("INFO: Deleting fake customers<br>");
$verbose = $this->getRequest()->query->get('verbose', false);
$event = new FakeCustomerEvent($critere, !empty($verbose));
$this->getDispatcher()->dispatch(FakeCustomerEvent::PURGE, $event);
foreach ($event->getStatus() as $status => $level) {
$responseText .= strtoupper($level) . ": $status<br>";
}
$responseText .= sprintf("INFO: %d fake customers deleted (Ids : %s)<br>", $event->getDeletedCount(), $event->getDeletedList());
}
return new Response($responseText);
}
}

View File

@@ -0,0 +1,104 @@
<?php
namespace PurgeFakeCustomer\Event;
use Thelia\Core\Event\ActionEvent;
class FakeCustomerEvent extends ActionEvent
{
const PURGE = 'purgefakecustomer.purge';
/* Critère de purge des faux clients */
protected $critere;
/** @var string[] */
protected $status = [];
/** @var bool */
protected $verbose;
/** @var int */
protected $deletedCount = 0;
/** @var string */
protected $deletedList = '';
/**
* FakeCustomerEvent constructor.
*/
public function __construct($critere, $verbose = false)
{
$this->critere = $critere;
$this->verbose = $verbose;
}
/**
* @return string
*/
public function getCritere()
{
return $this->critere;
}
/**
* @return string[]
*/
public function getStatus()
{
return $this->status;
}
/**
* @param string $status
* @return $this
*/
public function appendStatus($status, $level = 'info')
{
$this->status[$status] = $level;
return $this;
}
/**
* @return boolean
*/
public function isVerbose()
{
return $this->verbose;
}
/**
* @return int
*/
public function getDeletedCount()
{
return $this->deletedCount;
}
/**
* @param int $deletedCount
* @return $this
*/
public function setDeletedCount($deletedCount)
{
$this->deletedCount = $deletedCount;
return $this;
}
/**
* @return string
*/
public function getDeletedList()
{
return $this->deletedList;
}
/**
* @param string $deletedList
* @return $this
*/
public function setDeletedList($deletedList)
{
$this->deletedList = $deletedList;
return $this;
}
}

View File

@@ -0,0 +1,110 @@
<?php
/**
* Created by Laurent LE CORRE <laurent@thecoredev.fr>
* Date: 12/01/2021
*/
namespace PurgeFakeCustomer\EventListener;
use PurgeFakeCustomer\Controller\Admin\AdminController;
use Propel\Runtime\Exception\PropelException;
use Propel\Runtime\Propel;
use PurgeFakeCustomer\Event\FakeCustomerEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Thelia\Log\Tlog;
use Thelia\Model\CustomerQuery;
use Thelia\Model\Map\FeatureTableMap;
class EventManager implements EventSubscriberInterface
{
public function purge(FakeCustomerEvent $event)
{
$con = Propel::getServiceContainer()->getReadConnection(FeatureTableMap::DATABASE_NAME);
$critereComplet = '';
$critere = $event->getCritere();
if ($critere !== '') $critereComplet = $critere . ' AND ';
/* On ne supprime que les faux clients n'ayant pas passé de commande. */
$critereComplet .= '`customer_id` NOT IN (SELECT DISTINCT(`customer_id`) FROM `order`)';
$toBeDeleted = $deleted = $nbAvant = $nbApres = 0;
$listeId = '';
$sql = 'SELECT `customer_id` FROM `address` WHERE ' . $critereComplet;
try {
$stmt = $con->prepare($sql);
$stmt->execute();
} catch (Exception $e) {
Propel::log($e->getMessage(), Propel::LOG_ERR);
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
}
if ($rows = $stmt->fetchAll(\PDO::FETCH_NUM))
{
$stmt->closeCursor();
$toBeDeleted = count($rows);
$listeId = '(';
foreach ($rows as $id) {
$listeId .= $id[0] . ',';
}
$listeId = substr($listeId, 0, -1) . ')';
$event->setDeletedList(substr($listeId, 1, -1));
/* On va logguer quelques infos de ces faux clients */
$stmt->closeCursor();
$sql = 'SELECT `customer_id`, `firstname`, `lastname`, `address1`, `zipcode`, `city`, `country_id` FROM `address` WHERE `customer_id` IN ' . $listeId;
try {
$stmt = $con->prepare($sql);
$stmt->execute();
if ($rows = $stmt->fetchAll(\PDO::FETCH_OBJ)) {
foreach ($rows as $fakeCustomer) {
$customerAsString = sprintf("Deleted fake customer -> Id: %d - Firstname: %s - Lastname: %s - Address: %s - ZipCode: %s - City: %s - Country_id: %d",
$fakeCustomer->customer_id,
$fakeCustomer->firstname,
$fakeCustomer->lastname,
$fakeCustomer->address1,
$fakeCustomer->zipcode,
$fakeCustomer->city,
$fakeCustomer->country_id);
Tlog::getInstance()->addWarning($customerAsString);
}
}
} catch (Exception $e) {
Propel::log($e->getMessage(), Propel::LOG_ERR);
throw new PropelException(sprintf('Unable to execute SELECT statement [%s]', $sql), 0, $e);
}
$nbAvant = CustomerQuery::create()->count();
/* Le OnCascade permet de supprimer toutes les infos du client juste en le supprimant dans la table CUSTOMER */
$sql = 'DELETE FROM `customer` WHERE `id` IN ' . $listeId;
try {
$stmt = $con->prepare($sql);
$stmt->execute();
} catch (Exception $e) {
Propel::log($e->getMessage(), Propel::LOG_ERR);
throw new PropelException(sprintf('Unable to execute DELETE statement [%s]', $sql), 0, $e);
}
$nbApres = CustomerQuery::create()->count();
$deleted = $nbAvant - $nbApres;
}
$stmt->closeCursor();
$event->setDeletedList(substr($listeId, 1, -1));
$event->setDeletedCount($deleted);
return ($toBeDeleted === $deleted);
}
/**
* @inheritdoc
*/
public static function getSubscribedEvents()
{
return [
FakeCustomerEvent::PURGE => ["purge", 128]
];
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace PurgeFakeCustomer;
use Thelia\Module\BaseModule;
class PurgeFakeCustomer extends BaseModule
{
/** @var string */
const DOMAIN_NAME = 'purgefakecustomer';
}

View File

@@ -0,0 +1,55 @@
# Purge Fake Customer
Add a short description here. You can also add a screenshot if needed.
## Installation
### Manually
* Copy the module into ```<thelia_root>/local/modules/``` directory and be sure that the name of the module is PurgeFakeCustomer.
* Activate it in your thelia administration panel
### Composer
Add it in your main thelia composer.json file
```
composer require your-vendor/purge-fake-customer-module:~1.0
```
## Usage
Explain here how to use your module, how to configure it, etc.
## Hook
If your module use one or more hook, fill this part. Explain which hooks are used.
## Loop
If your module declare one or more loop, describe them here like this :
[loop name]
### Input arguments
|Argument |Description |
|--- |--- |
|**arg1** | describe arg1 with an exemple. |
|**arg2** | describe arg2 with an exemple. |
### Output arguments
|Variable |Description |
|--- |--- |
|$VAR1 | describe $VAR1 variable |
|$VAR2 | describe $VAR2 variable |
### Exemple
Add a complete exemple of your loop
## Other ?
If you have other think to put, feel free to complete your readme as you want.

View File

@@ -0,0 +1,11 @@
{
"name": "your-vendor/purge-fake-customer-module",
"license": "LGPL-3.0+",
"type": "thelia-module",
"require": {
"thelia/installer": "~1.1"
},
"extra": {
"installer-name": "PurgeFakeCustomer"
}
}

View File

@@ -0,0 +1,4 @@
<?php
return array(
// 'an english string' => 'The displayed english string',
);

View File

@@ -0,0 +1,8 @@
<?php
return array(
'Error' => 'Erreur',
'Secret key' => 'Clé secrète',
'Site key' => 'Clé du site',
'Sorry, it seems that you\'re not human.' => 'Désolé, il semblerait que vous ne soyez pas un être humain.'
);

View File

@@ -1,2 +0,0 @@
order deny,allow
deny from all

View File

@@ -3,7 +3,7 @@
{if $smarty.get.back == '1'} {if $smarty.get.back == '1'}
{$exclude = "0"} {$exclude = "0"}
{else} {else}
{$exclude = "40"} {$exclude = "40,48"}
{/if} {/if}
{form name="thelia.order.delivery"} {form name="thelia.order.delivery"}
@@ -49,7 +49,17 @@
<td> <td>
<div class="price"> <div class="price">
{if $POSTAGE >= 0} {if $POSTAGE >= 0}
{format_money number=$POSTAGE symbol={currency attr='symbol'}} {if $CODE eq "LivraisonForfaitaire"}
{assign var="montantsChaine" value={config key="livraisons_forfaitaires.montants"}|default:"0"}
{assign var="montantsTableau" value=";"|explode:"$montantsChaine"}
<select id="select-forfait" name="select-forfait">
{foreach from=$montantsTableau item=montant}
<option value="{$montant}">{format_money number="{$montant}" symbol={currency attr='symbol'}}</option>
{/foreach}
</select>
{else}
{format_money number=$POSTAGE symbol={currency attr='symbol'}}
{/if}
{else} {else}
&nbsp; &nbsp;
{/if} {/if}

View File

@@ -1,11 +1,11 @@
/* Bootstrap */ /* Bootstrap */
@import "bootstrap/bootstrap"; @import "bootstrap/bootstrap";
/* FontAwesome */ /* FontAwesome */
@import "fontawesome/font-awesome"; @import "fontawesome/font-awesome";
/* Thelia */ /* Thelia */
@import "thelia/import"; @import "thelia/import";
/* Theme */ /* Theme */
@import "../themes/default/less/import"; @import "../themes/default/less/import";

View File

@@ -1,115 +1,115 @@
// Import Google Font // Import Google Font
@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800); @import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);
// Theme colors // Theme colors
@gray-darker: #222; @gray-darker: #222;
@gray-dark: #444; @gray-dark: #444;
@gray: #555; @gray: #555;
@gray-light: #e5e5e5; @gray-light: #e5e5e5;
@gray-lighter: #eee; @gray-lighter: #eee;
@brand-primary: #2a98d1; @brand-primary: #2a98d1;
@brand-success: #5cb85c; @brand-success: #5cb85c;
@brand-warning: #f0ad4e; @brand-warning: #f0ad4e;
@brand-danger: #d9534f; @brand-danger: #d9534f;
@brand-info: #5bc0de; @brand-info: #5bc0de;
@body-bg: #EDF7FF; @body-bg: #EDF7FF;
@text-color: @gray-dark; @text-color: @gray-dark;
@link-color: #0985C8; @link-color: #0985C8;
@link-hover-color: #056192; @link-hover-color: #056192;
@font-family-sans-serif: 'Open Sans', sans-serif; @font-family-sans-serif: 'Open Sans', sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif; @font-family-serif: Georgia, "Times New Roman", Times, serif;
@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace; @font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
@font-family-base: @font-family-sans-serif; @font-family-base: @font-family-sans-serif;
// Border Radius // Border Radius
@border-radius-base: 3px; @border-radius-base: 3px;
// Forms // Forms
@input-border: @gray-light; @input-border: @gray-light;
@input-color-placeholder: lighten(@text-color, 30%); @input-color-placeholder: lighten(@text-color, 30%);
// Breadcrumbs // Breadcrumbs
@breadcrumb-bg: @body-bg; @breadcrumb-bg: @body-bg;
@breadcrumb-color: @text-color; @breadcrumb-color: @text-color;
@breadcrumb-active-color: @text-color; @breadcrumb-active-color: @text-color;
@breadcrumb-padding: 0; @breadcrumb-padding: 0;
// Pagination // Pagination
@pagination-bg: #f9f9f9; @pagination-bg: #f9f9f9;
@pagination-border: #ddd; @pagination-border: #ddd;
@pagination-hover-bg: transparent;//darken(@pagination-bg, 10%); @pagination-hover-bg: transparent;//darken(@pagination-bg, 10%);
@pagination-active-bg: @brand-primary; @pagination-active-bg: @brand-primary;
@pagination-active-color: #fff; @pagination-active-color: #fff;
@pagination-disabled-color: @gray-light; @pagination-disabled-color: @gray-light;
// Pager // Pager
@pager-border-radius: 0; @pager-border-radius: 0;
@pager-disabled-color: @gray-light; @pager-disabled-color: @gray-light;
// Navbar // Navbar
@navbar-default-color: darken(@navbar-default-bg, 52%); //#707070; @navbar-default-color: darken(@navbar-default-bg, 52%); //#707070;
@navbar-default-bg: darken(@body-bg, 4%); @navbar-default-bg: darken(@body-bg, 4%);
@navbar-default-border: @body-bg; @navbar-default-border: @body-bg;
// Navbar links // Navbar links
@navbar-default-link-color: @navbar-default-color; @navbar-default-link-color: @navbar-default-color;
@navbar-default-link-hover-color: #fff; @navbar-default-link-hover-color: #fff;
@navbar-default-link-hover-bg: @link-color; @navbar-default-link-hover-bg: @link-color;
@navbar-default-link-active-color: @link-color; @navbar-default-link-active-color: @link-color;
@navbar-default-link-active-bg: transparent; @navbar-default-link-active-bg: transparent;
// Thelia : Sub Navigation // Thelia : Sub Navigation
@navbar-subnav-bg: @navbar-default-link-hover-bg; @navbar-subnav-bg: @navbar-default-link-hover-bg;
@navbar-subnav-link-padding: 3px 12px; @navbar-subnav-link-padding: 3px 12px;
@navbar-subnav-link-color: @navbar-default-link-hover-color; @navbar-subnav-link-color: @navbar-default-link-hover-color;
@navbar-subnav-link-hover-bg: @navbar-subnav-link-color; @navbar-subnav-link-hover-bg: @navbar-subnav-link-color;
@navbar-subnav-link-hover-color: @navbar-subnav-bg; @navbar-subnav-link-hover-color: @navbar-subnav-bg;
@navbar-subnav-border: @navbar-subnav-bg; @navbar-subnav-border: @navbar-subnav-bg;
@navbar-subnav-border-radius: 0; @navbar-subnav-border-radius: 0;
@navbar-subnav-divider-bg: #fff; @navbar-subnav-divider-bg: #fff;
@navbar-subnav-shadow: none; //0 6px 12px rgba(0,0,0,.175); @navbar-subnav-shadow: none; //0 6px 12px rgba(0,0,0,.175);
// Thelia : Toolbar // Thelia : Toolbar
@toolbar-sorter-bg: @body-bg; @toolbar-sorter-bg: @body-bg;
@toolbar-sorter-border-radius: 0; @toolbar-sorter-border-radius: 0;
@toolbar-sorter-padding: 0; @toolbar-sorter-padding: 0;
// Carousel // Carousel
@carousel-text-shadow: none; @carousel-text-shadow: none;
@carousel-control-color: #ccc; @carousel-control-color: #ccc;
@carousel-control-width: 10%; @carousel-control-width: 10%;
@carousel-control-opacity: .5; @carousel-control-opacity: .5;
@carousel-control-font-size: 30px; @carousel-control-font-size: 30px;
// Thelia : Products Filter // Thelia : Products Filter
@filter-border: @filter-bg; @filter-border: @filter-bg;
@filter-border-radius: 0; @filter-border-radius: 0;
@filter-padding: 0 15px; @filter-padding: 0 15px;
// Thelia : Product Option // Thelia : Product Option
@option-bg: #fff; @option-bg: #fff;
@option-border: 0; @option-border: 0;
@option-border-radius: 0; @option-border-radius: 0;
@option-padding: 0; @option-padding: 0;
@option-heading-border: transparent; @option-heading-border: transparent;
@option-heading-color: @text-color; @option-heading-color: @text-color;
@option-heading-font-size: @font-size-base; @option-heading-font-size: @font-size-base;
// Panels // Panels
@panel-border-radius: 0; @panel-border-radius: 0;
@panel-default-border: @panel-default-heading-bg; @panel-default-border: @panel-default-heading-bg;

View File

@@ -1,12 +1,12 @@
<section id="brands" class="block block-nav" role="navigation" aria-labelledby="brands-label"> <section id="brands" class="block block-nav" role="navigation" aria-labelledby="brands-label">
<div class="block-heading"><h3 class="block-title" id="brands-label">{intl l="Brands"}</h3></div> <div class="block-heading"><h3 class="block-title" id="brands-label">{intl l="Brands"}</h3></div>
<div class="block-content"> <div class="block-content">
<nav class="nav-brands"> <nav class="nav-brands">
<ul id="brand" class="accordion"> <ul id="brand" class="accordion">
{loop name="brands-list" type="brand"} {loop name="brands-list" type="brand"}
<li><a href="{$URL}">{$TITLE} ({count type="product" brand="{$ID}"})</a></li> <li><a href="{$URL}">{$TITLE} ({count type="product" brand="{$ID}"})</a></li>
{/loop} {/loop}
</ul> </ul>
</nav> </nav>
</div> </div>
</section> </section>

View File

@@ -1,395 +1,395 @@
<!doctype html> <!doctype html>
<!-- <!--
______ __ __ ______ __ __ ______ ______ __ __ ______ __ __ ______
/\__ _\ /\ \_\ \ /\ ___\ /\ \ /\ \ /\ __ \ /\__ _\ /\ \_\ \ /\ ___\ /\ \ /\ \ /\ __ \
\/_/\ \/ \ \ __ \ \ \ __\ \ \ \____ \ \ \ \ \ __ \ \/_/\ \/ \ \ __ \ \ \ __\ \ \ \____ \ \ \ \ \ __ \
\ \_\ \ \_\ \_\ \ \_____\ \ \_____\ \ \_\ \ \_\ \_\ \ \_\ \ \_\ \_\ \ \_____\ \ \_____\ \ \_\ \ \_\ \_\
\/_/ \/_/\/_/ \/_____/ \/_____/ \/_/ \/_/\/_/ \/_/ \/_/\/_/ \/_____/ \/_____/ \/_/ \/_/\/_/
Copyright (c) OpenStudio Copyright (c) OpenStudio
email : info@thelia.net email : info@thelia.net
web : http://www.thelia.net web : http://www.thelia.net
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the the Free Software Foundation; either version 3 of the
GNU General Public License : http://www.gnu.org/licenses/ GNU General Public License : http://www.gnu.org/licenses/
--> -->
{* Declare assets directory, relative to template base directory *} {* Declare assets directory, relative to template base directory *}
{declare_assets directory='assets'} {declare_assets directory='assets'}
{* Set the default translation domain, that will be used by {intl} when the 'd' parameter is not set *} {* Set the default translation domain, that will be used by {intl} when the 'd' parameter is not set *}
{default_translation_domain domain='fo.sterivein'} {default_translation_domain domain='fo.sterivein'}
{* -- Define some stuff for Smarty ------------------------------------------ *} {* -- Define some stuff for Smarty ------------------------------------------ *}
{config_load file='variables.conf'} {config_load file='variables.conf'}
{block name="init"}{/block} {block name="init"}{/block}
{block name="no-return-functions"}{/block} {block name="no-return-functions"}{/block}
{assign var="store_name" value="{config key="store_name"}"} {assign var="store_name" value="{config key="store_name"}"}
{assign var="store_description" value="{config key="store_description"}"} {assign var="store_description" value="{config key="store_description"}"}
{if not $store_name}{assign var="store_name" value="{intl l='Thelia V2'}"}{/if} {if not $store_name}{assign var="store_name" value="{intl l='Thelia V2'}"}{/if}
{if not $store_description}{assign var="store_description" value="$store_name"}{/if} {if not $store_description}{assign var="store_description" value="$store_name"}{/if}
{* paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither *} {* paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither *}
<!--[if lt IE 7 ]><html class="no-js oldie ie6" lang="{lang attr="code"}"> <![endif]--> <!--[if lt IE 7 ]><html class="no-js oldie ie6" lang="{lang attr="code"}"> <![endif]-->
<!--[if IE 7 ]><html class="no-js oldie ie7" lang="{lang attr="code"}"> <![endif]--> <!--[if IE 7 ]><html class="no-js oldie ie7" lang="{lang attr="code"}"> <![endif]-->
<!--[if IE 8 ]><html class="no-js oldie ie8" lang="{lang attr="code"}"> <![endif]--> <!--[if IE 8 ]><html class="no-js oldie ie8" lang="{lang attr="code"}"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><html lang="{lang attr="code"}" class="no-js"> <!--<![endif]--> <!--[if (gte IE 9)|!(IE)]><!--><html lang="{lang attr="code"}" class="no-js"> <!--<![endif]-->
<head> <head>
{* Test if javascript is enabled *} {* Test if javascript is enabled *}
<script>(function(H) { H.className=H.className.replace(/\bno-js\b/,'js') } )(document.documentElement);</script> <script>(function(H) { H.className=H.className.replace(/\bno-js\b/,'js') } )(document.documentElement);</script>
<meta charset="utf-8"> <meta charset="utf-8">
{* Page Title *} {* Page Title *}
<title>{block name="page-title"}{strip}{if $page_title}{$page_title}{elseif $breadcrumbs}{foreach from=$breadcrumbs|array_reverse item=breadcrumb}{$breadcrumb.title|unescape} - {/foreach}{$store_name}{/if}{/strip}{/block}</title> <title>{block name="page-title"}{strip}{if $page_title}{$page_title}{elseif $breadcrumbs}{foreach from=$breadcrumbs|array_reverse item=breadcrumb}{$breadcrumb.title|unescape} - {/foreach}{$store_name}{/if}{/strip}{/block}</title>
{* Meta Tags *} {* Meta Tags *}
<meta name="generator" content="{intl l='Thelia V2'}"> <meta name="generator" content="{intl l='Thelia V2'}">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
{block name="meta"} {block name="meta"}
<meta name="description" content="{if $page_description}{$page_description}{else}{$store_description|strip|truncate:120}{/if}"> <meta name="description" content="{if $page_description}{$page_description}{else}{$store_description|strip|truncate:120}{/if}">
{/block} {/block}
{* Stylesheets *} {* Stylesheets *}
{* {*
{stylesheets file='assets/css/styles.css'} {stylesheets file='assets/css/styles.css'}
<link rel="stylesheet" href="{$asset_url}"> <link rel="stylesheet" href="{$asset_url}">
{/stylesheets} {/stylesheets}
*} *}
{stylesheets file='assets/less/styles.less' filters="less"} {stylesheets file='assets/less/styles.less' filters="less"}
<link rel="stylesheet" href="{$asset_url}"> <link rel="stylesheet" href="{$asset_url}">
{/stylesheets} {/stylesheets}
{block name="stylesheet"}{/block} {block name="stylesheet"}{/block}
{* Favicon *} {* Favicon *}
{images file='assets/img/favicon.ico'}<link rel="shortcut icon" type="image/x-icon" href="{$asset_url}">{/images} {images file='assets/img/favicon.ico'}<link rel="shortcut icon" type="image/x-icon" href="{$asset_url}">{/images}
{images file='assets/img/favicon.png'}<link rel="icon" type="image/png" href="{$asset_url}" />{/images} {images file='assets/img/favicon.png'}<link rel="icon" type="image/png" href="{$asset_url}" />{/images}
{* Feeds *} {* Feeds *}
<link rel="alternate" type="application/rss+xml" title="{intl l='All products'}" href="{url path="/feed/catalog/{lang attr="locale"}"}" /> <link rel="alternate" type="application/rss+xml" title="{intl l='All products'}" href="{url path="/feed/catalog/{lang attr="locale"}"}" />
<link rel="alternate" type="application/rss+xml" title="{intl l='All contents'}" href="{url path="/feed/content/{lang attr="locale"}"}" /> <link rel="alternate" type="application/rss+xml" title="{intl l='All contents'}" href="{url path="/feed/content/{lang attr="locale"}"}" />
<link rel="alternate" type="application/rss+xml" title="{intl l='All brands'}" href="{url path="/feed/brand/{lang attr='locale'}"}" /> <link rel="alternate" type="application/rss+xml" title="{intl l='All brands'}" href="{url path="/feed/brand/{lang attr='locale'}"}" />
{block name="feeds"}{/block} {block name="feeds"}{/block}
{* HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries *} {* HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries *}
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script> <script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]--> <![endif]-->
{hook name="recaptcha.js"} {hook name="recaptcha.js"}
</head> </head>
<body class="{block name="body-class"}{/block}" itemscope itemtype="http://schema.org/WebPage"> <body class="{block name="body-class"}{/block}" itemscope itemtype="http://schema.org/WebPage">
<!-- Accessibility --> <!-- Accessibility -->
<a class="sr-only" href="#content">{intl l="Skip to content"}</a> <a class="sr-only" href="#content">{intl l="Skip to content"}</a>
<div class="page" role="document"> <div class="page" role="document">
<div class="header-container" itemscope itemtype="http://schema.org/WPHeader"> <div class="header-container" itemscope itemtype="http://schema.org/WPHeader">
<header class="container" role="banner"> <header class="container" role="banner">
<div class="header"> <div class="header">
<h1 class="logo"> <h1 class="logo">
<a href="{navigate to="index"}" title="{$store_name}"> <a href="{navigate to="index"}" title="{$store_name}">
<span class='site-logo'>S<span>TERIVEIN<span class="reg">®</span></span></span> <span class='site-logo'>S<span>TERIVEIN<span class="reg">®</span></span></span>
</a> </a>
<a href="{navigate to="index"}" title="{$store_name}"> <a href="{navigate to="index"}" title="{$store_name}">
<span class='site-logo site-logo-sclerivein'>S<span>CLERIVEIN<span class="reg">®</span></span></span> <span class='site-logo site-logo-sclerivein'>S<span>CLERIVEIN<span class="reg">®</span></span></span>
</a> </a>
</h1> </h1>
</div> </div>
</header><!-- /.header --> </header><!-- /.header -->
<div class="navbar navbar-menu" itemscope itemtype="http://schema.org/SiteNavigationElement"> <div class="navbar navbar-menu" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div class="container"> <div class="container">
<div class="navbar-header"> <div class="navbar-header">
<!-- .navbar-toggle is used as the toggle for collapsed navbar content --> <!-- .navbar-toggle is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-main-1"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-main-1">
<span class="sr-only">{intl l="Toggle navigation"}</span> <span class="sr-only">{intl l="Toggle navigation"}</span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="{navigate to="index"}">{$store_name}</a> <a class="navbar-brand" href="{navigate to="index"}">{$store_name}</a>
</div> </div>
<nav class="navbar-collapse collapse nav-main-1" role="navigation" aria-label="{intl l="Main Navigation"}"> <nav class="navbar-collapse collapse nav-main-1" role="navigation" aria-label="{intl l="Main Navigation"}">
<ul class="nav navbar-nav navbar-categories"> <ul class="nav navbar-nav navbar-categories">
<li><a href="{navigate to="index"}">{intl l="Home"}</a></li> <li><a href="{navigate to="index"}">{intl l="Home"}</a></li>
<li class="dropdown"> <li class="dropdown">
{loop type="category" name="menu-cat" id=#id_categorie_boutique#} {loop type="category" name="menu-cat" id=#id_categorie_boutique#}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a> <a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
{loop type="product" name="menu-prod" category=#id_categorie_boutique# order="manual"} {loop type="product" name="menu-prod" category=#id_categorie_boutique# order="manual"}
<li><a href="{$URL}">{intl l="Commander"} {$TITLE}</a></li> <li><a href="{$URL}">{intl l="Commander"} {$TITLE}</a></li>
{/loop} {/loop}
</ul> </ul>
{/loop} {/loop}
</li> </li>
{loop type="folder" name="main-menu" parent=#id_dossier_menu#} {loop type="folder" name="main-menu" parent=#id_dossier_menu#}
<li> <li>
{ifloop rel="sub-folders"} {ifloop rel="sub-folders"}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a> <a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
{loop name="sub-folders" type="folder" parent=$ID order="manual"} {loop name="sub-folders" type="folder" parent=$ID order="manual"}
<li><a href="{$URL}">{$TITLE}</a></li> <li><a href="{$URL}">{$TITLE}</a></li>
{/loop} {/loop}
</ul> </ul>
{/ifloop} {/ifloop}
{elseloop rel="sub-folders"} {elseloop rel="sub-folders"}
<a href="{$URL}">{$TITLE}</a> <a href="{$URL}">{$TITLE}</a>
{/elseloop} {/elseloop}
</li> </li>
{/loop} {/loop}
<li><a href="{url path="/contact"}">{intl l="Contact"}</a></li> <li><a href="{url path="/contact"}">{intl l="Contact"}</a></li>
</ul> </ul>
</nav> </nav>
</div> </div>
</div> </div>
<div class="navbar navbar-tools" itemscope itemtype="http://schema.org/SiteNavigationElement"> <div class="navbar navbar-tools" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div class="container"> <div class="container">
<div class="navbar-header"> <div class="navbar-header">
<!-- .navbar-toggle is used as the toggle for collapsed navbar content --> <!-- .navbar-toggle is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-main"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-main">
<span class="sr-only">{intl l="Toggle navigation"}</span> <span class="sr-only">{intl l="Toggle navigation"}</span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a class="navbar-brand" href="{navigate to="index"}">{intl l="Navigation"}</a> <a class="navbar-brand" href="{navigate to="index"}">{intl l="Navigation"}</a>
</div> </div>
<!-- Place everything within .nav-collapse to hide it until above 768px --> <!-- Place everything within .nav-collapse to hide it until above 768px -->
<nav class="navbar-collapse collapse nav-main" role="navigation" aria-label="{intl l="Main Navigation"}"> <nav class="navbar-collapse collapse nav-main" role="navigation" aria-label="{intl l="Main Navigation"}">
{nocache} {nocache}
<ul class="nav navbar-nav navbar-left"> <ul class="nav navbar-nav navbar-left">
<li> <li>
<a class="current dropdown-toggle" data-toggle="dropdown" href="{url path="/language"}">{images file="assets/img/flags/{lang attr="code"}.png"}<img src="{$asset_url}" alt="{$CODE}">{/images} {lang attr="title"}</a> <a class="current dropdown-toggle" data-toggle="dropdown" href="{url path="/language"}">{images file="assets/img/flags/{lang attr="code"}.png"}<img src="{$asset_url}" alt="{$CODE}">{/images} {lang attr="title"}</a>
<ul class="select dropdown-menu"> <ul class="select dropdown-menu">
{loop type="lang" name="lang_available" exclude="{lang attr="id"}"} {loop type="lang" name="lang_available" exclude="{lang attr="id"}"}
<li> <li>
<a href="{url path="{navigate to="current"}" lang={$CODE}}">{images file="assets/img/flags/{$CODE}.png"}<img src="{$asset_url}" alt="{$CODE}">{/images} {$TITLE}</a> <a href="{url path="{navigate to="current"}" lang={$CODE}}">{images file="assets/img/flags/{$CODE}.png"}<img src="{$asset_url}" alt="{$CODE}">{/images} {$TITLE}</a>
</li> </li>
{/loop} {/loop}
</ul> </ul>
</li> </li>
</ul> </ul>
<ul class="nav navbar-nav navbar-cart navbar-right"> <ul class="nav navbar-nav navbar-cart navbar-right">
{loop type="auth" name="customer_info_block" role="CUSTOMER"} {loop type="auth" name="customer_info_block" role="CUSTOMER"}
<li><a href="{url path="/logout"}" class="logout">{intl l="Log out!"}</a></li> <li><a href="{url path="/logout"}" class="logout">{intl l="Log out!"}</a></li>
<li><a href="{url path="/account"}" class="account">{intl l="My Account"}</a></li> <li><a href="{url path="/account"}" class="account">{intl l="My Account"}</a></li>
{/loop} {/loop}
{elseloop rel="customer_info_block"} {elseloop rel="customer_info_block"}
<li><a href="{url path="/register"}" class="register">{intl l="Register!"}</a></li> <li><a href="{url path="/register"}" class="register">{intl l="Register!"}</a></li>
<li class="dropdown"> <li class="dropdown">
<a href="{url path="/login"}" class="login">{intl l="Log In!"}</a> <a href="{url path="/login"}" class="login">{intl l="Log In!"}</a>
<div class="dropdown-menu"> <div class="dropdown-menu">
{form name="thelia.front.customer.login"} {form name="thelia.front.customer.login"}
<form id="form-login-mini" action="{url path="/login"}" method="post" {form_enctype form=$form}> <form id="form-login-mini" action="{url path="/login"}" method="post" {form_enctype form=$form}>
{form_hidden_fields form=$form} {form_hidden_fields form=$form}
{form_field form=$form field="success_url"} {form_field form=$form field="success_url"}
<input type="hidden" name="{$name}" value="{navigate to="current"}"> <input type="hidden" name="{$name}" value="{navigate to="current"}">
{/form_field} {/form_field}
{form_field form=$form field="email"} {form_field form=$form field="email"}
<div class="form-group group-email"> <div class="form-group group-email">
<label for="{$label_attr.for}-mini">{intl l="Email address"}</label> <label for="{$label_attr.for}-mini">{intl l="Email address"}</label>
<input type="email" name="{$name}" id="{$label_attr.for}-mini" class="form-control" maxlength="255" aria-required="true" required> <input type="email" name="{$name}" id="{$label_attr.for}-mini" class="form-control" maxlength="255" aria-required="true" required>
</div> </div>
{/form_field} {/form_field}
{form_field form=$form field="password"} {form_field form=$form field="password"}
<div class="form-group group-password"> <div class="form-group group-password">
<label for="{$label_attr.for}-mini">{intl l="Password"}</label> <label for="{$label_attr.for}-mini">{intl l="Password"}</label>
<input type="password" name="{$name}" id="{$label_attr.for}-mini" class="form-control" maxlength="255" aria-required="true" required> <input type="password" name="{$name}" id="{$label_attr.for}-mini" class="form-control" maxlength="255" aria-required="true" required>
</div> </div>
{/form_field} {/form_field}
{form_field form=$form field="account"} {form_field form=$form field="account"}
<input type="hidden" name="{$name}" value="1"> <input type="hidden" name="{$name}" value="1">
{/form_field} {/form_field}
<div class="group-btn"> <div class="group-btn">
<button type="submit" class="btn btn-login-mini">{intl l="Sign In"}</button> <button type="submit" class="btn btn-login-mini">{intl l="Sign In"}</button>
<a href="{url path="/register"}" class="btn btn-register-mini">{intl l="Register"}</a> <a href="{url path="/register"}" class="btn btn-register-mini">{intl l="Register"}</a>
</div> </div>
</form> </form>
{/form} {/form}
</div> </div>
</li> </li>
{/elseloop} {/elseloop}
{include file="includes/mini-cart.html" nocache} {include file="includes/mini-cart.html" nocache}
</ul> </ul>
{/nocache} {/nocache}
</nav> </nav>
</div> </div>
</div> </div>
</div><!-- /.header-container --> </div><!-- /.header-container -->
<main class="main-container" role="main"> <main class="main-container" role="main">
<div class="container"> <div class="container">
{block name="breadcrumb"}{/block} {block name="breadcrumb"}{/block}
<div id="content">{block name="main-content"}{/block}</div> <div id="content">{block name="main-content"}{/block}</div>
</div><!-- /.container --> </div><!-- /.container -->
</main><!-- /.main-container --> </main><!-- /.main-container -->
<section class="footer-container" itemscope itemtype="http://schema.org/WPFooter"> <section class="footer-container" itemscope itemtype="http://schema.org/WPFooter">
<section class="footer-block"> <section class="footer-block">
<div class="container"> <div class="container">
<div class="blocks block-col-3"> <div class="blocks block-col-3">
<div class="col"> <div class="col">
<section class="block block-default"> <section class="block block-default">
<div class="block-heading"><h3 class="block-title">{intl l="Informations"}</h3></div> <div class="block-heading"><h3 class="block-title">{intl l="Informations"}</h3></div>
<div class="block-content"> <div class="block-content">
<ul> <ul>
{loop type="content" name="cgv" id=#id_contenu_cgv#} {loop type="content" name="cgv" id=#id_contenu_cgv#}
<li> <li>
<a href="{$URL}">{$TITLE}</a> <a href="{$URL}">{$TITLE}</a>
</li> </li>
{/loop} {/loop}
{loop type="content" name="cgv" id=#id_contenu_mentions#} {loop type="content" name="cgv" id=#id_contenu_mentions#}
<li> <li>
<a href="{$URL}">{$TITLE}</a> <a href="{$URL}">{$TITLE}</a>
</li> </li>
{/loop} {/loop}
</ul> </ul>
</div> </div>
</section> </section>
</div> </div>
<div class="col"> <div class="col">
<section class="block block-default"> <section class="block block-default">
<div class="block-heading"><h3 class="block-title">{intl l="Useful links"}</h3></div> <div class="block-heading"><h3 class="block-title">{intl l="Useful links"}</h3></div>
<div class="block-content"> <div class="block-content">
<ul> <ul>
{loop name="footer_links" type="content" folder="2"} {loop name="footer_links" type="content" folder="2"}
<li><a href="{$URL}">{$TITLE}</a></li> <li><a href="{$URL}">{$TITLE}</a></li>
{/loop} {/loop}
{loop type="auth" name="customer_is_logged" role="CUSTOMER"} {loop type="auth" name="customer_is_logged" role="CUSTOMER"}
<li><a href="{url path="/logout"}" class="logout">{intl l="Log out!"}</a></li> <li><a href="{url path="/logout"}" class="logout">{intl l="Log out!"}</a></li>
<li><a href="{url path="/account"}" class="account">{intl l="My Account"}</a></li> <li><a href="{url path="/account"}" class="account">{intl l="My Account"}</a></li>
{/loop} {/loop}
{elseloop rel="customer_is_logged"} {elseloop rel="customer_is_logged"}
<li><a href="{url path="/login"}">{intl l="Login"}</a></li> <li><a href="{url path="/login"}">{intl l="Login"}</a></li>
<li><a href="{url path="/register"}">{intl l="Register"}</a></li> <li><a href="{url path="/register"}">{intl l="Register"}</a></li>
{/elseloop} {/elseloop}
<li><a href="{url path="/cart"}">{intl l="Cart"}</a></li> <li><a href="{url path="/cart"}">{intl l="Cart"}</a></li>
<li><a href="{url path="/order/delivery"}">{intl l="Checkout"}</a></li> <li><a href="{url path="/order/delivery"}">{intl l="Checkout"}</a></li>
</ul> </ul>
</div> </div>
</section> </section>
</div> </div>
<div class="col"> <div class="col">
<section class="block block-contact" itemscope itemtype="http://schema.org/Organization"> <section class="block block-contact" itemscope itemtype="http://schema.org/Organization">
<div class="block-heading"><h3 class="block-title">{intl l="Contact Us"}</h3></div> <div class="block-heading"><h3 class="block-title">{intl l="Contact Us"}</h3></div>
<div class="block-content"> <div class="block-content">
<meta itemprop="name" content="{$store_name}"> <meta itemprop="name" content="{$store_name}">
<ul> <ul>
<li class="contact-address"> <li class="contact-address">
<address class="adr" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress"> <address class="adr" itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
<span class="street-address" itemprop="streetAddress">{config key="store_address1"} {config key="store_address2"} {config key="store_address3"}</span><br> <span class="street-address" itemprop="streetAddress">{config key="store_address1"} {config key="store_address2"} {config key="store_address3"}</span><br>
<span class="postal-code" itemprop="postalCode">{config key="store_zipcode"}</span> <span class="postal-code" itemprop="postalCode">{config key="store_zipcode"}</span>
<span class="locality" itemprop="addressLocality"> <span class="locality" itemprop="addressLocality">
{config key="store_city"} {config key="store_city"}
{if {config key="store_country"} } {if {config key="store_country"} }
{loop type="country" name="address.country.title" id={config key="store_country"}}, <span class="country-name">{$TITLE}</span>{/loop} {loop type="country" name="address.country.title" id={config key="store_country"}}, <span class="country-name">{$TITLE}</span>{/loop}
{/if} {/if}
</span> </span>
</address> </address>
</li> </li>
{if {config key="store_phone"} } {if {config key="store_phone"} }
<li class="contact-phone" title="{intl l="Téléphone"}"> <li class="contact-phone" title="{intl l="Téléphone"}">
<span class="tel" itemprop="telephone">{config key="store_phone"}</span> <span class="tel" itemprop="telephone">{config key="store_phone"}</span>
</li> </li>
{/if} {/if}
{if {config key="store_fax"} } {if {config key="store_fax"} }
<li class="contact-fax" title="{intl l="Fax"}"> <li class="contact-fax" title="{intl l="Fax"}">
<span class="tel" itemprop="fax">{config key="store_fax"}</span> <span class="tel" itemprop="fax">{config key="store_fax"}</span>
</li> </li>
{/if} {/if}
{if {config key="store_email"} } {if {config key="store_email"} }
<li class="contact-email"> <li class="contact-email">
{mailto address={config key="store_email"} encode="hex" extra='class="email" itemprop="email"'} {mailto address={config key="store_email"} encode="hex" extra='class="email" itemprop="email"'}
</li> </li>
{/if} {/if}
<li class="contact-message"> <li class="contact-message">
<a href="{url path="/contact"}">{intl l="Send us a message"}</a></li> <a href="{url path="/contact"}">{intl l="Send us a message"}</a></li>
</li> </li>
</ul> </ul>
</div> </div>
</section> </section>
</div> </div>
</div> </div>
</div> </div>
</section><!-- /.footer-block --> </section><!-- /.footer-block -->
<footer class="footer-info" role="contentinfo"> <footer class="footer-info" role="contentinfo">
<div class="container"> <div class="container">
<div class="info"> <div class="info">
<section class="copyright text-center">{intl l="Copyright"} &copy; <time datetime="{'Y-m-d'|date}">{'Y'|date}</time> Alain Monfreux</section> <section class="copyright text-center">{intl l="Copyright"} &copy; <time datetime="{'Y-m-d'|date}">{'Y'|date}</time> Alain Monfreux</section>
</div> </div>
</div> </div>
</footer><!-- /.footer-info --> </footer><!-- /.footer-info -->
</section><!-- /.footer-container --> </section><!-- /.footer-container -->
</div><!-- /.page --> </div><!-- /.page -->
{block name="before-javascript-include"}{/block} {block name="before-javascript-include"}{/block}
<!-- JavaScript --> <!-- JavaScript -->
<!--[if lt IE 9]><script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <![endif]--> <!--[if lt IE 9]><script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--><script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!--<![endif]--> <!--[if (gte IE 9)|!(IE)]><!--><script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!--<![endif]-->
<script> <script>
if (typeof jQuery == 'undefined') { if (typeof jQuery == 'undefined') {
{javascripts file='assets/js/libs/jquery.js'} {javascripts file='assets/js/libs/jquery.js'}
document.write(unescape("%3Cscript src='{$asset_url}' %3E%3C/script%3E")); document.write(unescape("%3Cscript src='{$asset_url}' %3E%3C/script%3E"));
{/javascripts} {/javascripts}
} }
</script> </script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script> <script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
{javascripts file='assets/js/bootstrap/bootstrap.js'} {javascripts file='assets/js/bootstrap/bootstrap.js'}
<script src="{$asset_url}"></script> <script src="{$asset_url}"></script>
{/javascripts} {/javascripts}
{javascripts file='assets/js/plugins/bootbox/bootbox.js'} {javascripts file='assets/js/plugins/bootbox/bootbox.js'}
<script src="{$asset_url}"></script> <script src="{$asset_url}"></script>
{/javascripts} {/javascripts}
{block name="after-javascript-include"}{/block} {block name="after-javascript-include"}{/block}
{block name="javascript-initialization"}{/block} {block name="javascript-initialization"}{/block}
<!-- Custom scripts --> <!-- Custom scripts -->
{javascripts file='assets/js/script.js'} {javascripts file='assets/js/script.js'}
<script src="{$asset_url}"></script> <script src="{$asset_url}"></script>
{/javascripts} {/javascripts}
{literal} {literal}
<script> <script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-54409521-1', 'auto'); ga('create', 'UA-54409521-1', 'auto');
ga('require', 'linkid', 'linkid.js'); ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview'); ga('send', 'pageview');
</script> </script>
{/literal} {/literal}
</body> </body>
</html> </html>

View File

@@ -1,44 +1,44 @@
{extends file="layout.tpl"} {extends file="layout.tpl"}
{* Body Class *} {* Body Class *}
{block name="body-class"}page-password{/block} {block name="body-class"}page-password{/block}
{* Breadcrumb *} {* Breadcrumb *}
{block name='no-return-functions' append} {block name='no-return-functions' append}
{$breadcrumbs = [ {$breadcrumbs = [
['title' => {intl l="Password"}, 'url'=>{url path="/password"}] ['title' => {intl l="Password"}, 'url'=>{url path="/password"}]
]} ]}
{/block} {/block}
{block name="main-content"} {block name="main-content"}
<div class="main"> <div class="main">
<article class="col-main" role="main" aria-labelledby="main-label"> <article class="col-main" role="main" aria-labelledby="main-label">
<h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1> <h1 id="main-label" class="page-header">{intl l="Password Forgotten"}</h1>
{form name="thelia.front.customer.lostpassword"} {form name="thelia.front.customer.lostpassword"}
<form id="form-forgotpassword" action="{url path="/password"}" method="post"> <form id="form-forgotpassword" action="{url path="/password"}" method="post">
{form_hidden_fields form=$form} {form_hidden_fields form=$form}
<p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p> <p>{intl l="Please enter your email address below."} {intl l="You will receive a link to reset your password."}</p>
{if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if} {if $form_error}<div class="alert alert-danger">{$form_error_message}</div>{/if}
{form_field form=$form field="email"} {form_field form=$form field="email"}
<div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}"> <div class="form-group group-email {if $error}has-error{elseif !$error && $value != ""}has-success{/if}">
<label for="{$label_attr.for}">{$label}</label> <label for="{$label_attr.for}">{$label}</label>
<div class="control-input"> <div class="control-input">
<input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required> <input type="email" name="{$name}" value="{$value}" id="{$label_attr.for}" class="form-control" maxlength="255" aria-required="true" autofocus required>
{if $error} {if $error}
<span class="help-block">{$message}</span> <span class="help-block">{$message}</span>
{elseif !$error && $value != ""} {elseif !$error && $value != ""}
<span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span> <span class="help-block"><span class="icon-ok"></span> {intl l="You will receive a link to reset your password."}</span>
{/if} {/if}
</div> </div>
</div> </div>
{/form_field} {/form_field}
<div class="group-btn"> <div class="group-btn">
<a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a> <a href="{url path="/login"}" class="btn btn-cancel">{intl l="Cancel"}</a>
<button type="submit" class="btn btn-forgot">{intl l="Send"}</button> <button type="submit" class="btn btn-forgot">{intl l="Send"}</button>
</div> </div>
</form> </form>
{/form} {/form}
</article> </article>
</div> </div>
{/block} {/block}

View File

@@ -15,7 +15,7 @@
<h1 id="main-label" class="page-header">{intl l="Create New Account"}</h1> <h1 id="main-label" class="page-header">{intl l="Create New Account"}</h1>
{form name="thelia.front.customer.create"} {form name="thelia.front.customer.create"}
<form id="form-register" class="form-horizontal" action="{url path="/register"}" method="post"> <form id="form-register" class="form-horizontal" action="{url path="/registerCustomer"}" method="post">
{form_field form=$form field='success_url'} {form_field form=$form field='success_url'}
<input type="hidden" name="{$name}" value="{url path="/account"}" /> {* the url the user is redirected to on registration success *} <input type="hidden" name="{$name}" value="{url path="/account"}" /> {* the url the user is redirected to on registration success *}
{/form_field} {/form_field}
@@ -247,6 +247,7 @@
</div> </div>
</fieldset> </fieldset>
{*
{form_field form=$form field="newsletter"} {form_field form=$form field="newsletter"}
<div class="form-group group-newsletter{if $error} has-error{/if}"> <div class="form-group group-newsletter{if $error} has-error{/if}">
<div class="control-input"> <div class="control-input">
@@ -261,6 +262,7 @@
</div> </div>
</div><!--/.form-group--> </div><!--/.form-group-->
{/form_field} {/form_field}
*}
<div class="form-group group-btn"> <div class="form-group group-btn">
<div class="control-btn"> <div class="control-btn">

View File

@@ -54,7 +54,7 @@
<col style="width: 80%; padding: 1mm; border: none; border-top: 1px solid #000; text-align: center;" /> <col style="width: 80%; padding: 1mm; border: none; border-top: 1px solid #000; text-align: center;" />
<tbody> <tbody>
<tr> <tr>
<td>auto-entrepreneur - SIREN 312 033 7</td> <td>Auto-entrepreneur - SIRET : 312 033 764 00043 / N° de TVA intracommunautaire : FR88312033764</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -24,8 +24,7 @@ require __DIR__ . '/../core/bootstrap.php';
$trustedIp = array( $trustedIp = array(
'::1', '::1',
'127.0.0.1', '127.0.0.1',
'82.229.232.53', '90.1.209.212',
'217.128.222.247'
); );
$request = Request::createFromGlobals(); $request = Request::createFromGlobals();

View File

@@ -1 +1 @@
/var/www/clients/client8/web16/web/thelia/local/modules/Tinymce/Resources/js/tinymce /Volumes/Dev/Sources/Clients/sterivein/thelia/local/modules/Tinymce/Resources/js/tinymce