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
user: c8sterivein
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" />
<![endif]-->
<link rel="shortcut icon" href="/templates/corporate/favicon.ico" />
<script type="text/javascript">
var _gaq = _gaq || [];
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-20717501-4']);
_gaq.push(['_trackPageview']);
(function() {
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';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
(function() {
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';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<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><embed src="http://www.la-mousse.com/images/consensus2010fr.pdf" width="720" height="576"/></p><div id="comments-container">
<div id="comments-header">
<h3>Commentaires</h3><a name="comments"></a>
<!--<p>Sort by <a href="#" class="active">Date</a> <a href="#">Rating</a> <a href="#">Last Activity</a></p>-->
</div>
<div id="allcomments">
<div class="comment-item" id="commentID346">
<div class="comment-item-header"><a name="commentID346"></a>
<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>
<span class="nickname-link">lopette</span>
<div class="rating">
<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">
ll
</div>
<div class="comment-status">
<strong><a href="#commentID346">Dimanche 14 Octobre 2012, 18:30</a></strong>
<div class="comment-button" id="post_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="showCommentForm(346);">
<div class="comment-button-left" id="post_346_l"></div>
<div class="comment-button-center" id="post_346_c">R&eacute;pondre</div>
<div class="comment-button-right" id="post_346_r"></div>
</div>
</div>
<div class="clear"></div>
<div id="post_346_form" class="comment-form">
<div id="post_346_form_loading" style="text-align:center; display:none;"><img src="http://la-mousse.com/components/com_chronocomments/loaderb.gif" /></div>
<fieldset>
<form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_346" name="ccform_346" method="post" >
<textarea id="post_346_text" name="text" cols="" rows="" class="form-text"></textarea>
<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="url" type="text" id="ccurl_346" value="http://" class="form-input" /> <span class="input-text">URL</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>
&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">
<br />
<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="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-center" id="submit_346_c">Soumettre ce commentaire</div>
<div class="comment-button-right" id="submit_346_r"></div>
</div>
<div class="comment-button" id="cancel_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="hideCommentForm(346);">
<div class="comment-button-left" id="cancel_346_l"></div>
<div class="comment-button-center" id="cancel_346_c">Annuler</div>
<div class="comment-button-right" id="cancel_346_r"></div>
</div>
</div>
<input name="component" type="hidden" value="com_content" />
<input name="pageid" type="hidden" value="80" />
<input name="userid" type="hidden" value="128" />
<input name="commentid" type="hidden" value="" />
<input name="parentid" type="hidden" value="346" />
<input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
</fieldset>
</div>
<div class="clear1"></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>
<form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_x1" name="ccform_x1" method="post" >
<textarea name="text" id="post_x1_text" cols="" rows="" class="form-text"></textarea>
<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="url" type="text" id="ccurl_x1" value="http://" class="form-input" /> <span class="input-text">URL</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>
&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">
<br />
<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="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-center" id="submit_x1_c">Soumettre ce commentaire</div>
<div class="comment-button-right" id="submit_x1_r"></div>
</div>
</div>
<input name="component" type="hidden" value="com_content" />
<input name="pageid" type="hidden" value="80" />
<input name="userid" type="hidden" value="128" />
<input name="parentid" type="hidden" value="0" />
<input name="commentid" type="hidden" value="" />
<input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
</div>
</div>
<div id="ccresponse">
<div id="ccloading"></div>
<div id="ccsuccess"></div>
<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">
<h3>Commentaires</h3><a name="comments"></a>
<!--<p>Sort by <a href="#" class="active">Date</a> <a href="#">Rating</a> <a href="#">Last Activity</a></p>-->
</div>
<div id="allcomments">
<div class="comment-item" id="commentID346">
<div class="comment-item-header"><a name="commentID346"></a>
<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>
<span class="nickname-link">lopette</span>
<div class="rating">
<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">
ll
</div>
<div class="comment-status">
<strong><a href="#commentID346">Dimanche 14 Octobre 2012, 18:30</a></strong>
<div class="comment-button" id="post_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="showCommentForm(346);">
<div class="comment-button-left" id="post_346_l"></div>
<div class="comment-button-center" id="post_346_c">R&eacute;pondre</div>
<div class="comment-button-right" id="post_346_r"></div>
</div>
</div>
<div class="clear"></div>
<div id="post_346_form" class="comment-form">
<div id="post_346_form_loading" style="text-align:center; display:none;"><img src="http://la-mousse.com/components/com_chronocomments/loaderb.gif" /></div>
<fieldset>
<form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_346" name="ccform_346" method="post" >
<textarea id="post_346_text" name="text" cols="" rows="" class="form-text"></textarea>
<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="url" type="text" id="ccurl_346" value="http://" class="form-input" /> <span class="input-text">URL</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>
&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">
<br />
<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="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-center" id="submit_346_c">Soumettre ce commentaire</div>
<div class="comment-button-right" id="submit_346_r"></div>
</div>
<div class="comment-button" id="cancel_346" onmouseover="showShadow(this.id);" onmouseout="hideShadow(this.id);" onclick="hideCommentForm(346);">
<div class="comment-button-left" id="cancel_346_l"></div>
<div class="comment-button-center" id="cancel_346_c">Annuler</div>
<div class="comment-button-right" id="cancel_346_r"></div>
</div>
</div>
<input name="component" type="hidden" value="com_content" />
<input name="pageid" type="hidden" value="80" />
<input name="userid" type="hidden" value="128" />
<input name="commentid" type="hidden" value="" />
<input name="parentid" type="hidden" value="346" />
<input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
</fieldset>
</div>
<div class="clear1"></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>
<form action="index2.php?option=com_chronocomments&task=savecomment" id="ccform_x1" name="ccform_x1" method="post" >
<textarea name="text" id="post_x1_text" cols="" rows="" class="form-text"></textarea>
<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="url" type="text" id="ccurl_x1" value="http://" class="form-input" /> <span class="input-text">URL</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>
&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">
<br />
<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="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-center" id="submit_x1_c">Soumettre ce commentaire</div>
<div class="comment-button-right" id="submit_x1_r"></div>
</div>
</div>
<input name="component" type="hidden" value="com_content" />
<input name="pageid" type="hidden" value="80" />
<input name="userid" type="hidden" value="128" />
<input name="parentid" type="hidden" value="0" />
<input name="commentid" type="hidden" value="" />
<input type="hidden" name="3194a490d39f67829591f71794a7cbbe" value="1" /> </form>
</div>
</div>
<div id="ccresponse">
<div id="ccloading"></div>
<div id="ccsuccess"></div>
<div id="ccfail"></div>
</div>
<div id="chrono_comments_AJAX_response_temp" style="display:none;"></div>
<span class="articleseparator">&nbsp;</span>

View File

@@ -1,44 +1,44 @@
GE7vlAm9WMSVdL1BBXmeD2P1ZEWn6muDOdGYOaey91vi8104USqy5IrH4EmBVpbmFA
dY2sm0spP7rjwm2YU97L6etVXtmidboXK2uyDGKo3tq1ruDId1vNY5dUPqpT8R1y3L
LBa3ujKfrobNukNlLmi614ZqZ95IAg4wLhoAa9eTx7tMHdECYJwaMQdUkpevoFKoQy
S3WFBwoltAHgQd3pEjOraOiKS5ZcqCdDtXLOCta3hcRt2JgLFIEhJvcXECIzCqiVhl
eJr7kjuACxt8p3OTe8RjOTVLTRbvJiv1VPYRsvAWXggIXEfm75tv1CcaMy2K0GAqoa
x92iBrg6fFJlTUIP3vjil7CnjDPo0pgxEaMpOjadKDsmsmsP4eeJEsc1jlVgZ7hP6U
EN9PGjuwegkfuvxCKHifmWVhufEunk62uclrUT1ux0XkmNWFm5VxXs6dapzFHgmHnY
lxckSHxSRqPLabW8ll1jn0BnH8x4PItAsXQe93YDPK552FsdKuVucDduMdNU9oI2pI
bssDMRNkKD7gds6LrBAPNCpmp84mtIyvOqthjgKjH57fLqZ17my03C92ANaOVck1un
BwcqZyOwYhxwwmAymGvBLYHYhXc6kyafOrPBpdcnUQ8MmYaBPan8lv6lyLZtWlz7cr
HyE9s8dx8NN4RCUrer976qfdzfCTJO4QImKiAWrzKGmQB22YZYuaCnbIAm7EvaPUMc
Nsyt1YcUT6RyzLBS2EBkl6jn7l2RTKB6qrWSGTgOfJozF1853AoBXnZN2iZ32fp95b
bP0pAKYMptkmXjGIEDdCjvHfoCd1TLb1onywU7H3Xl0M0RAKsKpVw2UZ59MvfzwygA
2JZBegSHydBvAA6f7Y7eUJxeEPdR58XTaQljHBA3znO5tl4XAs3bJwvWxxH55ZUOSt
uWWJUIxTobE82LNQTxBUiBB6jPIPZNndV0swUHxF0IalwodLYn0EVgKeevzBdectCO
EDCxoMxNtwiEHNvEOtlG8HRltxG44jLL4k2bxyJvvs1XV5OlNgwJO4FQftt0wlTYY9
xdM9OJ3svb9FzHL9PBDGShOv6ZhxOrMhNxTNf7vK5gtUL1tPvcjzeSbyIWxXNhou15
q4o5ZxmqcDJWeblzefVUjtzrMs5PnA5QoMuU7siDnXmh1GbDQsEEW9CIbDXSepHxIZ
HC48dhjbmkdlPMorjCBLbHNUJf7eSMxKPyPrOFAhZai0w68AIc9D7ptZJoPEqms64O
9lJbdo5ZG0PopS7dmEpcSWWpDFV3jhyJTYCpVCwwaSe4JoxoqcPCMCatFnti7kq5rN
4MDogPwrgOVSrjjf3n64uvPPoZFdBqlRJX9GEBslEE6nfPT4jKWhwji2BXifKwWwAG
7g6skqXHXcYfJJ876oijteOXINUCUJDMZxdqahTzJMnu0C9FskoOC2lTnZw0zsJ5DF
ElXEALjZezEWQu4LkuJXXd2IThyEKLfth1doUHcWN6HJ4UUBR5d0w02IQ6Mxdt3LjB
5Ldqqsab7WCwPWKEY6jmFEtscM0GVLXHuQk6jqiKod90ZaQKk5FT7y36a01ES18mB4
BycGRfNXDWoqlYGsRCc1XhD8YNMfn8kEVmxyqZyfoKwXoUVAeAAooKAC4HHK7fRKDM
144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0
7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6
6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
112A59107EB88144C8A7336C5487503B02EF1E0937AB588DC4E42D35BC8567C0EA
181F19D1F3D8D3C19626080F3D3DA7901B63475590DD907AE1eFcB1ZxNnOK4rRiC
YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0
7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6
6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
1127349E4948198B92E77303D3BF9D9E7C0D37B60245BB789F425406ED1ADC2EA7
BAED72A82D8300C138275636798737F202F376F40453FA7B01eFcB1ZxNnOK4rRiC
YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIPSATIS_SCLERIVEINSTERIVEIN,26/08/2014,V4,MERCANET,PROD++++++++++
GE7vlAm9WMSVdL1BBXmeD2P1ZEWn6muDOdGYOaey91vi8104USqy5IrH4EmBVpbmFA
dY2sm0spP7rjwm2YU97L6etVXtmidboXK2uyDGKo3tq1ruDId1vNY5dUPqpT8R1y3L
LBa3ujKfrobNukNlLmi614ZqZ95IAg4wLhoAa9eTx7tMHdECYJwaMQdUkpevoFKoQy
S3WFBwoltAHgQd3pEjOraOiKS5ZcqCdDtXLOCta3hcRt2JgLFIEhJvcXECIzCqiVhl
eJr7kjuACxt8p3OTe8RjOTVLTRbvJiv1VPYRsvAWXggIXEfm75tv1CcaMy2K0GAqoa
x92iBrg6fFJlTUIP3vjil7CnjDPo0pgxEaMpOjadKDsmsmsP4eeJEsc1jlVgZ7hP6U
EN9PGjuwegkfuvxCKHifmWVhufEunk62uclrUT1ux0XkmNWFm5VxXs6dapzFHgmHnY
lxckSHxSRqPLabW8ll1jn0BnH8x4PItAsXQe93YDPK552FsdKuVucDduMdNU9oI2pI
bssDMRNkKD7gds6LrBAPNCpmp84mtIyvOqthjgKjH57fLqZ17my03C92ANaOVck1un
BwcqZyOwYhxwwmAymGvBLYHYhXc6kyafOrPBpdcnUQ8MmYaBPan8lv6lyLZtWlz7cr
HyE9s8dx8NN4RCUrer976qfdzfCTJO4QImKiAWrzKGmQB22YZYuaCnbIAm7EvaPUMc
Nsyt1YcUT6RyzLBS2EBkl6jn7l2RTKB6qrWSGTgOfJozF1853AoBXnZN2iZ32fp95b
bP0pAKYMptkmXjGIEDdCjvHfoCd1TLb1onywU7H3Xl0M0RAKsKpVw2UZ59MvfzwygA
2JZBegSHydBvAA6f7Y7eUJxeEPdR58XTaQljHBA3znO5tl4XAs3bJwvWxxH55ZUOSt
uWWJUIxTobE82LNQTxBUiBB6jPIPZNndV0swUHxF0IalwodLYn0EVgKeevzBdectCO
EDCxoMxNtwiEHNvEOtlG8HRltxG44jLL4k2bxyJvvs1XV5OlNgwJO4FQftt0wlTYY9
xdM9OJ3svb9FzHL9PBDGShOv6ZhxOrMhNxTNf7vK5gtUL1tPvcjzeSbyIWxXNhou15
q4o5ZxmqcDJWeblzefVUjtzrMs5PnA5QoMuU7siDnXmh1GbDQsEEW9CIbDXSepHxIZ
HC48dhjbmkdlPMorjCBLbHNUJf7eSMxKPyPrOFAhZai0w68AIc9D7ptZJoPEqms64O
9lJbdo5ZG0PopS7dmEpcSWWpDFV3jhyJTYCpVCwwaSe4JoxoqcPCMCatFnti7kq5rN
4MDogPwrgOVSrjjf3n64uvPPoZFdBqlRJX9GEBslEE6nfPT4jKWhwji2BXifKwWwAG
7g6skqXHXcYfJJ876oijteOXINUCUJDMZxdqahTzJMnu0C9FskoOC2lTnZw0zsJ5DF
ElXEALjZezEWQu4LkuJXXd2IThyEKLfth1doUHcWN6HJ4UUBR5d0w02IQ6Mxdt3LjB
5Ldqqsab7WCwPWKEY6jmFEtscM0GVLXHuQk6jqiKod90ZaQKk5FT7y36a01ES18mB4
BycGRfNXDWoqlYGsRCc1XhD8YNMfn8kEVmxyqZyfoKwXoUVAeAAooKAC4HHK7fRKDM
144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0
7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6
6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
112A59107EB88144C8A7336C5487503B02EF1E0937AB588DC4E42D35BC8567C0EA
181F19D1F3D8D3C19626080F3D3DA7901B63475590DD907AE1eFcB1ZxNnOK4rRiC
YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
144242079835C20C45E69EB347ABBCF77F04B23BF39629A8891035423E3CC386A0
7B3C5701C4AD69E9553B26CC0BF5EECFF5870551C600B8F730F5D254BF74A565C6
6B4579C390A8DC6qQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
1127349E4948198B92E77303D3BF9D9E7C0D37B60245BB789F425406ED1ADC2EA7
BAED72A82D8300C138275636798737F202F376F40453FA7B01eFcB1ZxNnOK4rRiC
YhZYW3QiL6OW9eXqQr1zR6dLlJOiMDbG6OGmKSYrbRLjNxgYF6O0LOphKqjcTtEjC4
qRYApJkYmWXLLANZn46w0I65L63PlBVrpYPSvFAu25aUMaSwcELNUKcpgFq5tsI1wG
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIPSATIS_SCLERIVEINSTERIVEIN,26/08/2014,V4,MERCANET,PROD++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++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">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>courriel de confirmation de commande de {config key="url_site"} </title>
<style type="text/css">
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 100%;
text-align: center;
}
#liencompte {
margin: 15px 0;
text-align: center;
font-size: 10pt;
}
#wrapper {
width: 480pt;
margin: 0 auto;
}
#entete {
padding-bottom: 20px;
margin-bottom: 10px;
border-bottom: 1px dotted #000;
}
#logotexte {
float: left;
width: 180pt;
height: 75pt;
border: 1pt solid #000;
font-size: 18pt;
text-align: center;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">The payment of your order is confirmed</h2>
<h3 id="commande">Reference {$order_ref} </h3>
</div>
<p id="liencompte">
Your invoice is now available in your customer account on
<a href="{config key="url_site"}">{config key="store_name"}</a>.
</p>
<p>Thank you for your order !</p>
<p>The {config key="store_name"} team.</p>
</div>
</body>
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>courriel de confirmation de commande de {config key="url_site"} </title>
<style type="text/css">
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 100%;
text-align: center;
}
#liencompte {
margin: 15px 0;
text-align: center;
font-size: 10pt;
}
#wrapper {
width: 480pt;
margin: 0 auto;
}
#entete {
padding-bottom: 20px;
margin-bottom: 10px;
border-bottom: 1px dotted #000;
}
#logotexte {
float: left;
width: 180pt;
height: 75pt;
border: 1pt solid #000;
font-size: 18pt;
text-align: center;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">The payment of your order is confirmed</h2>
<h3 id="commande">Reference {$order_ref} </h3>
</div>
<p id="liencompte">
Your invoice is now available in your customer account on
<a href="{config key="url_site"}">{config key="store_name"}</a>.
</p>
<p>Thank you for your order !</p>
<p>The {config key="store_name"} team.</p>
</div>
</body>
</html>

View File

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

View File

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

View File

@@ -1,7 +1,7 @@
Dear customer,
Your order {$order_ref} in {config key="store_name"} has been shipped.
Thank you again for your purchase.
Dear customer,
Your order {$order_ref} in {config key="store_name"} has been shipped.
Thank you again for your purchase.
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">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="fr">
<head>
<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>
<style type="text/css">
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 100%;
text-align: center;
}
#liencompte {
margin: 15px 0;
text-align: center;
font-size: 10pt;
}
#wrapper {
width: 480pt;
margin: 0 auto;
}
#entete {
padding-bottom: 20px;
margin-bottom: 10px;
border-bottom: 1px dotted #000;
}
#logotexte {
float: left;
width: 180pt;
height: 75pt;
border: 1pt solid #000;
font-size: 18pt;
text-align: center;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">Votre commande a été expédiée.</h2>
</div>
<p>Cher client,</p>
<p>Votre commande {$order_ref} sur {config key="store_name"} a été expédiée.</p>
<p>Merci pour votre achat !</p>
<p>L'équipe {config key="store_name"}</p>
</div>
</body>
<!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">
<head>
<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>
<style type="text/css">
body {
font-family: Arial, Helvetica, sans-serif;
font-size: 100%;
text-align: center;
}
#liencompte {
margin: 15px 0;
text-align: center;
font-size: 10pt;
}
#wrapper {
width: 480pt;
margin: 0 auto;
}
#entete {
padding-bottom: 20px;
margin-bottom: 10px;
border-bottom: 1px dotted #000;
}
#logotexte {
float: left;
width: 180pt;
height: 75pt;
border: 1pt solid #000;
font-size: 18pt;
text-align: center;
}
</style>
</head>
<body>
<div id="wrapper">
<div id="entete">
<h1 id="logotexte">{config key="store_name"}</h1>
<h2 id="info">Votre commande a été expédiée.</h2>
</div>
<p>Cher client,</p>
<p>Votre commande {$order_ref} sur {config key="store_name"} a été expédiée.</p>
<p>Merci pour votre achat !</p>
<p>L'équipe {config key="store_name"}</p>
</div>
</body>
</html>

View File

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

View File

@@ -19,7 +19,7 @@
<default key="_controller">Front\Controller\CustomerController::viewRegisterAction</default>
</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="_view">register</default>
</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);
}
$deliveryModuleId = $formValidate->get(OrderCreationCreateForm::FIELD_NAME_DELIVERY_MODULE_ID)->getData();
$event
->setContainer($this->getContainer())
->setCustomerId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_CUSTOMER_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())
->setPaymentModuleId($formValidate->get(OrderCreationCreateForm::FIELD_NAME_PAYMENT_MODULE_ID)->getData())
->setProductSaleElementIds($formValidate->get(OrderCreationCreateForm::FIELD_NAME_PRODUCT_SALE_ELEMENT_ID)->getData())

View File

@@ -150,7 +150,7 @@
$listDelivery.removeClass('loading');
$listDelivery.html(response);
$('#list-delivery input.delivery-method').each(function () {
$('#list-delivery input.js-change-delivery-method').each(function () {
if ($(this).is(':checked')) {
$('#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());
});

View File

@@ -103,6 +103,7 @@
<div class="row">
<div class="col-md-12">
<input type="hidden" id="delivery-module">
{custom_render_form_field field='delivery-module'}
<div id="list-delivery">
<div class="alert alert-danger">
@@ -125,7 +126,7 @@
</div>
<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'}
</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'}
{$exclude = "0"}
{else}
{$exclude = "40"}
{$exclude = "40,48"}
{/if}
{form name="thelia.order.delivery"}
@@ -49,7 +49,17 @@
<td>
<div class="price">
{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}
&nbsp;
{/if}

View File

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

View File

@@ -1,115 +1,115 @@
// Import Google Font
@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);
// Theme colors
@gray-darker: #222;
@gray-dark: #444;
@gray: #555;
@gray-light: #e5e5e5;
@gray-lighter: #eee;
@brand-primary: #2a98d1;
@brand-success: #5cb85c;
@brand-warning: #f0ad4e;
@brand-danger: #d9534f;
@brand-info: #5bc0de;
@body-bg: #EDF7FF;
@text-color: @gray-dark;
@link-color: #0985C8;
@link-hover-color: #056192;
@font-family-sans-serif: 'Open Sans', sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif;
@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
@font-family-base: @font-family-sans-serif;
// Border Radius
@border-radius-base: 3px;
// Forms
@input-border: @gray-light;
@input-color-placeholder: lighten(@text-color, 30%);
// Breadcrumbs
@breadcrumb-bg: @body-bg;
@breadcrumb-color: @text-color;
@breadcrumb-active-color: @text-color;
@breadcrumb-padding: 0;
// Pagination
@pagination-bg: #f9f9f9;
@pagination-border: #ddd;
@pagination-hover-bg: transparent;//darken(@pagination-bg, 10%);
@pagination-active-bg: @brand-primary;
@pagination-active-color: #fff;
@pagination-disabled-color: @gray-light;
// Pager
@pager-border-radius: 0;
@pager-disabled-color: @gray-light;
// Navbar
@navbar-default-color: darken(@navbar-default-bg, 52%); //#707070;
@navbar-default-bg: darken(@body-bg, 4%);
@navbar-default-border: @body-bg;
// Navbar links
@navbar-default-link-color: @navbar-default-color;
@navbar-default-link-hover-color: #fff;
@navbar-default-link-hover-bg: @link-color;
@navbar-default-link-active-color: @link-color;
@navbar-default-link-active-bg: transparent;
// Thelia : Sub Navigation
@navbar-subnav-bg: @navbar-default-link-hover-bg;
@navbar-subnav-link-padding: 3px 12px;
@navbar-subnav-link-color: @navbar-default-link-hover-color;
@navbar-subnav-link-hover-bg: @navbar-subnav-link-color;
@navbar-subnav-link-hover-color: @navbar-subnav-bg;
@navbar-subnav-border: @navbar-subnav-bg;
@navbar-subnav-border-radius: 0;
@navbar-subnav-divider-bg: #fff;
@navbar-subnav-shadow: none; //0 6px 12px rgba(0,0,0,.175);
// Thelia : Toolbar
@toolbar-sorter-bg: @body-bg;
@toolbar-sorter-border-radius: 0;
@toolbar-sorter-padding: 0;
// Carousel
@carousel-text-shadow: none;
@carousel-control-color: #ccc;
@carousel-control-width: 10%;
@carousel-control-opacity: .5;
@carousel-control-font-size: 30px;
// Thelia : Products Filter
@filter-border: @filter-bg;
@filter-border-radius: 0;
@filter-padding: 0 15px;
// Thelia : Product Option
@option-bg: #fff;
@option-border: 0;
@option-border-radius: 0;
@option-padding: 0;
@option-heading-border: transparent;
@option-heading-color: @text-color;
@option-heading-font-size: @font-size-base;
// Panels
@panel-border-radius: 0;
@panel-default-border: @panel-default-heading-bg;
// Import Google Font
@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800);
// Theme colors
@gray-darker: #222;
@gray-dark: #444;
@gray: #555;
@gray-light: #e5e5e5;
@gray-lighter: #eee;
@brand-primary: #2a98d1;
@brand-success: #5cb85c;
@brand-warning: #f0ad4e;
@brand-danger: #d9534f;
@brand-info: #5bc0de;
@body-bg: #EDF7FF;
@text-color: @gray-dark;
@link-color: #0985C8;
@link-hover-color: #056192;
@font-family-sans-serif: 'Open Sans', sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif;
@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace;
@font-family-base: @font-family-sans-serif;
// Border Radius
@border-radius-base: 3px;
// Forms
@input-border: @gray-light;
@input-color-placeholder: lighten(@text-color, 30%);
// Breadcrumbs
@breadcrumb-bg: @body-bg;
@breadcrumb-color: @text-color;
@breadcrumb-active-color: @text-color;
@breadcrumb-padding: 0;
// Pagination
@pagination-bg: #f9f9f9;
@pagination-border: #ddd;
@pagination-hover-bg: transparent;//darken(@pagination-bg, 10%);
@pagination-active-bg: @brand-primary;
@pagination-active-color: #fff;
@pagination-disabled-color: @gray-light;
// Pager
@pager-border-radius: 0;
@pager-disabled-color: @gray-light;
// Navbar
@navbar-default-color: darken(@navbar-default-bg, 52%); //#707070;
@navbar-default-bg: darken(@body-bg, 4%);
@navbar-default-border: @body-bg;
// Navbar links
@navbar-default-link-color: @navbar-default-color;
@navbar-default-link-hover-color: #fff;
@navbar-default-link-hover-bg: @link-color;
@navbar-default-link-active-color: @link-color;
@navbar-default-link-active-bg: transparent;
// Thelia : Sub Navigation
@navbar-subnav-bg: @navbar-default-link-hover-bg;
@navbar-subnav-link-padding: 3px 12px;
@navbar-subnav-link-color: @navbar-default-link-hover-color;
@navbar-subnav-link-hover-bg: @navbar-subnav-link-color;
@navbar-subnav-link-hover-color: @navbar-subnav-bg;
@navbar-subnav-border: @navbar-subnav-bg;
@navbar-subnav-border-radius: 0;
@navbar-subnav-divider-bg: #fff;
@navbar-subnav-shadow: none; //0 6px 12px rgba(0,0,0,.175);
// Thelia : Toolbar
@toolbar-sorter-bg: @body-bg;
@toolbar-sorter-border-radius: 0;
@toolbar-sorter-padding: 0;
// Carousel
@carousel-text-shadow: none;
@carousel-control-color: #ccc;
@carousel-control-width: 10%;
@carousel-control-opacity: .5;
@carousel-control-font-size: 30px;
// Thelia : Products Filter
@filter-border: @filter-bg;
@filter-border-radius: 0;
@filter-padding: 0 15px;
// Thelia : Product Option
@option-bg: #fff;
@option-border: 0;
@option-border-radius: 0;
@option-padding: 0;
@option-heading-border: transparent;
@option-heading-color: @text-color;
@option-heading-font-size: @font-size-base;
// Panels
@panel-border-radius: 0;
@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">
<div class="block-heading"><h3 class="block-title" id="brands-label">{intl l="Brands"}</h3></div>
<div class="block-content">
<nav class="nav-brands">
<ul id="brand" class="accordion">
{loop name="brands-list" type="brand"}
<li><a href="{$URL}">{$TITLE} ({count type="product" brand="{$ID}"})</a></li>
{/loop}
</ul>
</nav>
</div>
</section>
<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-content">
<nav class="nav-brands">
<ul id="brand" class="accordion">
{loop name="brands-list" type="brand"}
<li><a href="{$URL}">{$TITLE} ({count type="product" brand="{$ID}"})</a></li>
{/loop}
</ul>
</nav>
</div>
</section>

View File

@@ -1,395 +1,395 @@
<!doctype html>
<!--
______ __ __ ______ __ __ ______
/\__ _\ /\ \_\ \ /\ ___\ /\ \ /\ \ /\ __ \
\/_/\ \/ \ \ __ \ \ \ __\ \ \ \____ \ \ \ \ \ __ \
\ \_\ \ \_\ \_\ \ \_____\ \ \_____\ \ \_\ \ \_\ \_\
\/_/ \/_/\/_/ \/_____/ \/_____/ \/_/ \/_/\/_/
Copyright (c) OpenStudio
email : info@thelia.net
web : http://www.thelia.net
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
the Free Software Foundation; either version 3 of the
GNU General Public License : http://www.gnu.org/licenses/
-->
{* Declare assets directory, relative to template base directory *}
{declare_assets directory='assets'}
{* Set the default translation domain, that will be used by {intl} when the 'd' parameter is not set *}
{default_translation_domain domain='fo.sterivein'}
{* -- Define some stuff for Smarty ------------------------------------------ *}
{config_load file='variables.conf'}
{block name="init"}{/block}
{block name="no-return-functions"}{/block}
{assign var="store_name" value="{config key="store_name"}"}
{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_description}{assign var="store_description" value="$store_name"}{/if}
{* 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 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 (gte IE 9)|!(IE)]><!--><html lang="{lang attr="code"}" class="no-js"> <!--<![endif]-->
<head>
{* Test if javascript is enabled *}
<script>(function(H) { H.className=H.className.replace(/\bno-js\b/,'js') } )(document.documentElement);</script>
<meta charset="utf-8">
{* 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>
{* Meta Tags *}
<meta name="generator" content="{intl l='Thelia V2'}">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
{block name="meta"}
<meta name="description" content="{if $page_description}{$page_description}{else}{$store_description|strip|truncate:120}{/if}">
{/block}
{* Stylesheets *}
{*
{stylesheets file='assets/css/styles.css'}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
*}
{stylesheets file='assets/less/styles.less' filters="less"}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
{block name="stylesheet"}{/block}
{* Favicon *}
{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}
{* 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 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'}"}" />
{block name="feeds"}{/block}
{* HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries *}
<!--[if lt IE 9]>
<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>
<![endif]-->
{hook name="recaptcha.js"}
</head>
<body class="{block name="body-class"}{/block}" itemscope itemtype="http://schema.org/WebPage">
<!-- Accessibility -->
<a class="sr-only" href="#content">{intl l="Skip to content"}</a>
<div class="page" role="document">
<div class="header-container" itemscope itemtype="http://schema.org/WPHeader">
<header class="container" role="banner">
<div class="header">
<h1 class="logo">
<a href="{navigate to="index"}" title="{$store_name}">
<span class='site-logo'>S<span>TERIVEIN<span class="reg">®</span></span></span>
</a>
<a href="{navigate to="index"}" title="{$store_name}">
<span class='site-logo site-logo-sclerivein'>S<span>CLERIVEIN<span class="reg">®</span></span></span>
</a>
</h1>
</div>
</header><!-- /.header -->
<div class="navbar navbar-menu" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div class="container">
<div class="navbar-header">
<!-- .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">
<span class="sr-only">{intl l="Toggle navigation"}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{navigate to="index"}">{$store_name}</a>
</div>
<nav class="navbar-collapse collapse nav-main-1" role="navigation" aria-label="{intl l="Main Navigation"}">
<ul class="nav navbar-nav navbar-categories">
<li><a href="{navigate to="index"}">{intl l="Home"}</a></li>
<li class="dropdown">
{loop type="category" name="menu-cat" id=#id_categorie_boutique#}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a>
<ul class="dropdown-menu" role="menu">
{loop type="product" name="menu-prod" category=#id_categorie_boutique# order="manual"}
<li><a href="{$URL}">{intl l="Commander"} {$TITLE}</a></li>
{/loop}
</ul>
{/loop}
</li>
{loop type="folder" name="main-menu" parent=#id_dossier_menu#}
<li>
{ifloop rel="sub-folders"}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a>
<ul class="dropdown-menu" role="menu">
{loop name="sub-folders" type="folder" parent=$ID order="manual"}
<li><a href="{$URL}">{$TITLE}</a></li>
{/loop}
</ul>
{/ifloop}
{elseloop rel="sub-folders"}
<a href="{$URL}">{$TITLE}</a>
{/elseloop}
</li>
{/loop}
<li><a href="{url path="/contact"}">{intl l="Contact"}</a></li>
</ul>
</nav>
</div>
</div>
<div class="navbar navbar-tools" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div class="container">
<div class="navbar-header">
<!-- .navbar-toggle is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-main">
<span class="sr-only">{intl l="Toggle navigation"}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{navigate to="index"}">{intl l="Navigation"}</a>
</div>
<!-- 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"}">
{nocache}
<ul class="nav navbar-nav navbar-left">
<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>
<ul class="select dropdown-menu">
{loop type="lang" name="lang_available" exclude="{lang attr="id"}"}
<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>
</li>
{/loop}
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-cart navbar-right">
{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="/account"}" class="account">{intl l="My Account"}</a></li>
{/loop}
{elseloop rel="customer_info_block"}
<li><a href="{url path="/register"}" class="register">{intl l="Register!"}</a></li>
<li class="dropdown">
<a href="{url path="/login"}" class="login">{intl l="Log In!"}</a>
<div class="dropdown-menu">
{form name="thelia.front.customer.login"}
<form id="form-login-mini" action="{url path="/login"}" method="post" {form_enctype form=$form}>
{form_hidden_fields form=$form}
{form_field form=$form field="success_url"}
<input type="hidden" name="{$name}" value="{navigate to="current"}">
{/form_field}
{form_field form=$form field="email"}
<div class="form-group group-email">
<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>
</div>
{/form_field}
{form_field form=$form field="password"}
<div class="form-group group-password">
<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>
</div>
{/form_field}
{form_field form=$form field="account"}
<input type="hidden" name="{$name}" value="1">
{/form_field}
<div class="group-btn">
<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>
</div>
</form>
{/form}
</div>
</li>
{/elseloop}
{include file="includes/mini-cart.html" nocache}
</ul>
{/nocache}
</nav>
</div>
</div>
</div><!-- /.header-container -->
<main class="main-container" role="main">
<div class="container">
{block name="breadcrumb"}{/block}
<div id="content">{block name="main-content"}{/block}</div>
</div><!-- /.container -->
</main><!-- /.main-container -->
<section class="footer-container" itemscope itemtype="http://schema.org/WPFooter">
<section class="footer-block">
<div class="container">
<div class="blocks block-col-3">
<div class="col">
<section class="block block-default">
<div class="block-heading"><h3 class="block-title">{intl l="Informations"}</h3></div>
<div class="block-content">
<ul>
{loop type="content" name="cgv" id=#id_contenu_cgv#}
<li>
<a href="{$URL}">{$TITLE}</a>
</li>
{/loop}
{loop type="content" name="cgv" id=#id_contenu_mentions#}
<li>
<a href="{$URL}">{$TITLE}</a>
</li>
{/loop}
</ul>
</div>
</section>
</div>
<div class="col">
<section class="block block-default">
<div class="block-heading"><h3 class="block-title">{intl l="Useful links"}</h3></div>
<div class="block-content">
<ul>
{loop name="footer_links" type="content" folder="2"}
<li><a href="{$URL}">{$TITLE}</a></li>
{/loop}
{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="/account"}" class="account">{intl l="My Account"}</a></li>
{/loop}
{elseloop rel="customer_is_logged"}
<li><a href="{url path="/login"}">{intl l="Login"}</a></li>
<li><a href="{url path="/register"}">{intl l="Register"}</a></li>
{/elseloop}
<li><a href="{url path="/cart"}">{intl l="Cart"}</a></li>
<li><a href="{url path="/order/delivery"}">{intl l="Checkout"}</a></li>
</ul>
</div>
</section>
</div>
<div class="col">
<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-content">
<meta itemprop="name" content="{$store_name}">
<ul>
<li class="contact-address">
<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="postal-code" itemprop="postalCode">{config key="store_zipcode"}</span>
<span class="locality" itemprop="addressLocality">
{config key="store_city"}
{if {config key="store_country"} }
{loop type="country" name="address.country.title" id={config key="store_country"}}, <span class="country-name">{$TITLE}</span>{/loop}
{/if}
</span>
</address>
</li>
{if {config key="store_phone"} }
<li class="contact-phone" title="{intl l="Téléphone"}">
<span class="tel" itemprop="telephone">{config key="store_phone"}</span>
</li>
{/if}
{if {config key="store_fax"} }
<li class="contact-fax" title="{intl l="Fax"}">
<span class="tel" itemprop="fax">{config key="store_fax"}</span>
</li>
{/if}
{if {config key="store_email"} }
<li class="contact-email">
{mailto address={config key="store_email"} encode="hex" extra='class="email" itemprop="email"'}
</li>
{/if}
<li class="contact-message">
<a href="{url path="/contact"}">{intl l="Send us a message"}</a></li>
</li>
</ul>
</div>
</section>
</div>
</div>
</div>
</section><!-- /.footer-block -->
<footer class="footer-info" role="contentinfo">
<div class="container">
<div class="info">
<section class="copyright text-center">{intl l="Copyright"} &copy; <time datetime="{'Y-m-d'|date}">{'Y'|date}</time> Alain Monfreux</section>
</div>
</div>
</footer><!-- /.footer-info -->
</section><!-- /.footer-container -->
</div><!-- /.page -->
{block name="before-javascript-include"}{/block}
<!-- JavaScript -->
<!--[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]-->
<script>
if (typeof jQuery == 'undefined') {
{javascripts file='assets/js/libs/jquery.js'}
document.write(unescape("%3Cscript src='{$asset_url}' %3E%3C/script%3E"));
{/javascripts}
}
</script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
{javascripts file='assets/js/bootstrap/bootstrap.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{javascripts file='assets/js/plugins/bootbox/bootbox.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{block name="after-javascript-include"}{/block}
{block name="javascript-initialization"}{/block}
<!-- Custom scripts -->
{javascripts file='assets/js/script.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{literal}
<script>
(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),
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');
ga('create', 'UA-54409521-1', 'auto');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');
</script>
{/literal}
</body>
</html>
<!doctype html>
<!--
______ __ __ ______ __ __ ______
/\__ _\ /\ \_\ \ /\ ___\ /\ \ /\ \ /\ __ \
\/_/\ \/ \ \ __ \ \ \ __\ \ \ \____ \ \ \ \ \ __ \
\ \_\ \ \_\ \_\ \ \_____\ \ \_____\ \ \_\ \ \_\ \_\
\/_/ \/_/\/_/ \/_____/ \/_____/ \/_/ \/_/\/_/
Copyright (c) OpenStudio
email : info@thelia.net
web : http://www.thelia.net
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
the Free Software Foundation; either version 3 of the
GNU General Public License : http://www.gnu.org/licenses/
-->
{* Declare assets directory, relative to template base directory *}
{declare_assets directory='assets'}
{* Set the default translation domain, that will be used by {intl} when the 'd' parameter is not set *}
{default_translation_domain domain='fo.sterivein'}
{* -- Define some stuff for Smarty ------------------------------------------ *}
{config_load file='variables.conf'}
{block name="init"}{/block}
{block name="no-return-functions"}{/block}
{assign var="store_name" value="{config key="store_name"}"}
{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_description}{assign var="store_description" value="$store_name"}{/if}
{* 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 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 (gte IE 9)|!(IE)]><!--><html lang="{lang attr="code"}" class="no-js"> <!--<![endif]-->
<head>
{* Test if javascript is enabled *}
<script>(function(H) { H.className=H.className.replace(/\bno-js\b/,'js') } )(document.documentElement);</script>
<meta charset="utf-8">
{* 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>
{* Meta Tags *}
<meta name="generator" content="{intl l='Thelia V2'}">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
{block name="meta"}
<meta name="description" content="{if $page_description}{$page_description}{else}{$store_description|strip|truncate:120}{/if}">
{/block}
{* Stylesheets *}
{*
{stylesheets file='assets/css/styles.css'}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
*}
{stylesheets file='assets/less/styles.less' filters="less"}
<link rel="stylesheet" href="{$asset_url}">
{/stylesheets}
{block name="stylesheet"}{/block}
{* Favicon *}
{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}
{* 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 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'}"}" />
{block name="feeds"}{/block}
{* HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries *}
<!--[if lt IE 9]>
<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>
<![endif]-->
{hook name="recaptcha.js"}
</head>
<body class="{block name="body-class"}{/block}" itemscope itemtype="http://schema.org/WebPage">
<!-- Accessibility -->
<a class="sr-only" href="#content">{intl l="Skip to content"}</a>
<div class="page" role="document">
<div class="header-container" itemscope itemtype="http://schema.org/WPHeader">
<header class="container" role="banner">
<div class="header">
<h1 class="logo">
<a href="{navigate to="index"}" title="{$store_name}">
<span class='site-logo'>S<span>TERIVEIN<span class="reg">®</span></span></span>
</a>
<a href="{navigate to="index"}" title="{$store_name}">
<span class='site-logo site-logo-sclerivein'>S<span>CLERIVEIN<span class="reg">®</span></span></span>
</a>
</h1>
</div>
</header><!-- /.header -->
<div class="navbar navbar-menu" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div class="container">
<div class="navbar-header">
<!-- .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">
<span class="sr-only">{intl l="Toggle navigation"}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{navigate to="index"}">{$store_name}</a>
</div>
<nav class="navbar-collapse collapse nav-main-1" role="navigation" aria-label="{intl l="Main Navigation"}">
<ul class="nav navbar-nav navbar-categories">
<li><a href="{navigate to="index"}">{intl l="Home"}</a></li>
<li class="dropdown">
{loop type="category" name="menu-cat" id=#id_categorie_boutique#}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a>
<ul class="dropdown-menu" role="menu">
{loop type="product" name="menu-prod" category=#id_categorie_boutique# order="manual"}
<li><a href="{$URL}">{intl l="Commander"} {$TITLE}</a></li>
{/loop}
</ul>
{/loop}
</li>
{loop type="folder" name="main-menu" parent=#id_dossier_menu#}
<li>
{ifloop rel="sub-folders"}
<a href="#" class="dropdown-toggle" data-toggle="dropdown">{$TITLE}</a>
<ul class="dropdown-menu" role="menu">
{loop name="sub-folders" type="folder" parent=$ID order="manual"}
<li><a href="{$URL}">{$TITLE}</a></li>
{/loop}
</ul>
{/ifloop}
{elseloop rel="sub-folders"}
<a href="{$URL}">{$TITLE}</a>
{/elseloop}
</li>
{/loop}
<li><a href="{url path="/contact"}">{intl l="Contact"}</a></li>
</ul>
</nav>
</div>
</div>
<div class="navbar navbar-tools" itemscope itemtype="http://schema.org/SiteNavigationElement">
<div class="container">
<div class="navbar-header">
<!-- .navbar-toggle is used as the toggle for collapsed navbar content -->
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-main">
<span class="sr-only">{intl l="Toggle navigation"}</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="{navigate to="index"}">{intl l="Navigation"}</a>
</div>
<!-- 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"}">
{nocache}
<ul class="nav navbar-nav navbar-left">
<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>
<ul class="select dropdown-menu">
{loop type="lang" name="lang_available" exclude="{lang attr="id"}"}
<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>
</li>
{/loop}
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-cart navbar-right">
{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="/account"}" class="account">{intl l="My Account"}</a></li>
{/loop}
{elseloop rel="customer_info_block"}
<li><a href="{url path="/register"}" class="register">{intl l="Register!"}</a></li>
<li class="dropdown">
<a href="{url path="/login"}" class="login">{intl l="Log In!"}</a>
<div class="dropdown-menu">
{form name="thelia.front.customer.login"}
<form id="form-login-mini" action="{url path="/login"}" method="post" {form_enctype form=$form}>
{form_hidden_fields form=$form}
{form_field form=$form field="success_url"}
<input type="hidden" name="{$name}" value="{navigate to="current"}">
{/form_field}
{form_field form=$form field="email"}
<div class="form-group group-email">
<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>
</div>
{/form_field}
{form_field form=$form field="password"}
<div class="form-group group-password">
<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>
</div>
{/form_field}
{form_field form=$form field="account"}
<input type="hidden" name="{$name}" value="1">
{/form_field}
<div class="group-btn">
<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>
</div>
</form>
{/form}
</div>
</li>
{/elseloop}
{include file="includes/mini-cart.html" nocache}
</ul>
{/nocache}
</nav>
</div>
</div>
</div><!-- /.header-container -->
<main class="main-container" role="main">
<div class="container">
{block name="breadcrumb"}{/block}
<div id="content">{block name="main-content"}{/block}</div>
</div><!-- /.container -->
</main><!-- /.main-container -->
<section class="footer-container" itemscope itemtype="http://schema.org/WPFooter">
<section class="footer-block">
<div class="container">
<div class="blocks block-col-3">
<div class="col">
<section class="block block-default">
<div class="block-heading"><h3 class="block-title">{intl l="Informations"}</h3></div>
<div class="block-content">
<ul>
{loop type="content" name="cgv" id=#id_contenu_cgv#}
<li>
<a href="{$URL}">{$TITLE}</a>
</li>
{/loop}
{loop type="content" name="cgv" id=#id_contenu_mentions#}
<li>
<a href="{$URL}">{$TITLE}</a>
</li>
{/loop}
</ul>
</div>
</section>
</div>
<div class="col">
<section class="block block-default">
<div class="block-heading"><h3 class="block-title">{intl l="Useful links"}</h3></div>
<div class="block-content">
<ul>
{loop name="footer_links" type="content" folder="2"}
<li><a href="{$URL}">{$TITLE}</a></li>
{/loop}
{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="/account"}" class="account">{intl l="My Account"}</a></li>
{/loop}
{elseloop rel="customer_is_logged"}
<li><a href="{url path="/login"}">{intl l="Login"}</a></li>
<li><a href="{url path="/register"}">{intl l="Register"}</a></li>
{/elseloop}
<li><a href="{url path="/cart"}">{intl l="Cart"}</a></li>
<li><a href="{url path="/order/delivery"}">{intl l="Checkout"}</a></li>
</ul>
</div>
</section>
</div>
<div class="col">
<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-content">
<meta itemprop="name" content="{$store_name}">
<ul>
<li class="contact-address">
<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="postal-code" itemprop="postalCode">{config key="store_zipcode"}</span>
<span class="locality" itemprop="addressLocality">
{config key="store_city"}
{if {config key="store_country"} }
{loop type="country" name="address.country.title" id={config key="store_country"}}, <span class="country-name">{$TITLE}</span>{/loop}
{/if}
</span>
</address>
</li>
{if {config key="store_phone"} }
<li class="contact-phone" title="{intl l="Téléphone"}">
<span class="tel" itemprop="telephone">{config key="store_phone"}</span>
</li>
{/if}
{if {config key="store_fax"} }
<li class="contact-fax" title="{intl l="Fax"}">
<span class="tel" itemprop="fax">{config key="store_fax"}</span>
</li>
{/if}
{if {config key="store_email"} }
<li class="contact-email">
{mailto address={config key="store_email"} encode="hex" extra='class="email" itemprop="email"'}
</li>
{/if}
<li class="contact-message">
<a href="{url path="/contact"}">{intl l="Send us a message"}</a></li>
</li>
</ul>
</div>
</section>
</div>
</div>
</div>
</section><!-- /.footer-block -->
<footer class="footer-info" role="contentinfo">
<div class="container">
<div class="info">
<section class="copyright text-center">{intl l="Copyright"} &copy; <time datetime="{'Y-m-d'|date}">{'Y'|date}</time> Alain Monfreux</section>
</div>
</div>
</footer><!-- /.footer-info -->
</section><!-- /.footer-container -->
</div><!-- /.page -->
{block name="before-javascript-include"}{/block}
<!-- JavaScript -->
<!--[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]-->
<script>
if (typeof jQuery == 'undefined') {
{javascripts file='assets/js/libs/jquery.js'}
document.write(unescape("%3Cscript src='{$asset_url}' %3E%3C/script%3E"));
{/javascripts}
}
</script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
{javascripts file='assets/js/bootstrap/bootstrap.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{javascripts file='assets/js/plugins/bootbox/bootbox.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{block name="after-javascript-include"}{/block}
{block name="javascript-initialization"}{/block}
<!-- Custom scripts -->
{javascripts file='assets/js/script.js'}
<script src="{$asset_url}"></script>
{/javascripts}
{literal}
<script>
(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),
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');
ga('create', 'UA-54409521-1', 'auto');
ga('require', 'linkid', 'linkid.js');
ga('send', 'pageview');
</script>
{/literal}
</body>
</html>

View File

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

View File

@@ -15,7 +15,7 @@
<h1 id="main-label" class="page-header">{intl l="Create New Account"}</h1>
{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'}
<input type="hidden" name="{$name}" value="{url path="/account"}" /> {* the url the user is redirected to on registration success *}
{/form_field}
@@ -247,6 +247,7 @@
</div>
</fieldset>
{*
{form_field form=$form field="newsletter"}
<div class="form-group group-newsletter{if $error} has-error{/if}">
<div class="control-input">
@@ -261,6 +262,7 @@
</div>
</div><!--/.form-group-->
{/form_field}
*}
<div class="form-group group-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;" />
<tbody>
<tr>
<td>auto-entrepreneur - SIREN 312 033 7</td>
<td>Auto-entrepreneur - SIRET : 312 033 764 00043 / N° de TVA intracommunautaire : FR88312033764</td>
</tr>
</tbody>
</table>

View File

@@ -24,8 +24,7 @@ require __DIR__ . '/../core/bootstrap.php';
$trustedIp = array(
'::1',
'127.0.0.1',
'82.229.232.53',
'217.128.222.247'
'90.1.209.212',
);
$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