LiveOptim_free - Version 1.0.0

Version Notes

Improve your SEO without manual intervention at your site : save precious time ! LiveOptim instantly processes 100% of your content and adds links & HTML tags around your keywords to go : 100% Google Friendly.

Download this release

Release Info

Developer Erwan Milbéo
Extension LiveOptim_free
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (138) hide show
  1. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Accueil.php +2 -0
  2. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Balise.php +1 -0
  3. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Cible.php +10 -0
  4. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Config.php +13 -0
  5. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Header.php +9 -0
  6. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Home.php +9 -0
  7. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Inscription.php +9 -0
  8. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Motcle.php +24 -0
  9. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Pagesrestriction.php +9 -0
  10. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Parametres.php +28 -0
  11. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Pattern.php +10 -0
  12. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Patterncible2.php +2 -0
  13. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Tuto.php +9 -0
  14. app/code/local/Mkt/LiveOptim/Block/Adminhtml/Tutoriel.php +2 -0
  15. app/code/local/Mkt/LiveOptim/Block/LiveOptim.php +17 -0
  16. app/code/local/Mkt/LiveOptim/Helper/Data.php +24 -0
  17. app/code/local/Mkt/LiveOptim/Model/Baliseignore.php +10 -0
  18. app/code/local/Mkt/LiveOptim/Model/Baliseignorer.php +2 -0
  19. app/code/local/Mkt/LiveOptim/Model/Capping.php +11 -0
  20. app/code/local/Mkt/LiveOptim/Model/Motcle.php +11 -0
  21. app/code/local/Mkt/LiveOptim/Model/Mysql4/ActionsReactions/Collection.php +2 -0
  22. app/code/local/Mkt/LiveOptim/Model/Mysql4/Baliseignore.php +10 -0
  23. app/code/local/Mkt/LiveOptim/Model/Mysql4/Baliseignore/Collection.php +10 -0
  24. app/code/local/Mkt/LiveOptim/Model/Mysql4/Capping.php +10 -0
  25. app/code/local/Mkt/LiveOptim/Model/Mysql4/Capping/Collection.php +10 -0
  26. app/code/local/Mkt/LiveOptim/Model/Mysql4/LiveMotCles/Collection.php +2 -0
  27. app/code/local/Mkt/LiveOptim/Model/Mysql4/LiveOptimPackage/Collection.php +2 -0
  28. app/code/local/Mkt/LiveOptim/Model/Mysql4/Motcle.php +10 -0
  29. app/code/local/Mkt/LiveOptim/Model/Mysql4/Motcle/Collection.php +10 -0
  30. app/code/local/Mkt/LiveOptim/Model/Mysql4/Pagesrestriction.php +2 -0
  31. app/code/local/Mkt/LiveOptim/Model/Mysql4/Pagesrestriction/Collection.php +2 -0
  32. app/code/local/Mkt/LiveOptim/Model/Mysql4/Parametres.php +10 -0
  33. app/code/local/Mkt/LiveOptim/Model/Mysql4/Parametres/Collection.php +10 -0
  34. app/code/local/Mkt/LiveOptim/Model/Mysql4/Pattern.php +2 -0
  35. app/code/local/Mkt/LiveOptim/Model/Mysql4/Pattern/Collection.php +2 -0
  36. app/code/local/Mkt/LiveOptim/Model/Mysql4/Patterncible.php +2 -0
  37. app/code/local/Mkt/LiveOptim/Model/Mysql4/Patterncible/Collection.php +2 -0
  38. app/code/local/Mkt/LiveOptim/Model/Mysql4/codesHttp/Collection.php +2 -0
  39. app/code/local/Mkt/LiveOptim/Model/Observer.php +56 -0
  40. app/code/local/Mkt/LiveOptim/Model/Pagesrestriction.php +2 -0
  41. app/code/local/Mkt/LiveOptim/Model/Parametres.php +11 -0
  42. app/code/local/Mkt/LiveOptim/Model/Pattern.php +2 -0
  43. app/code/local/Mkt/LiveOptim/Model/Patterncible.php +2 -0
  44. app/code/local/Mkt/LiveOptim/Model/Status.php +15 -0
  45. app/code/local/Mkt/LiveOptim/controllers/Adminhtml/LiveoptimController.php +172 -0
  46. app/code/local/Mkt/LiveOptim/etc/config.xml +189 -0
  47. app/code/local/Mkt/LiveOptim/lib/actions/baliseIgnore/listerBaliseIgnore.php +13 -0
  48. app/code/local/Mkt/LiveOptim/lib/actions/codeHTTP/code401.php +11 -0
  49. app/code/local/Mkt/LiveOptim/lib/actions/codeHTTP/code403.php +11 -0
  50. app/code/local/Mkt/LiveOptim/lib/actions/codeHTTP/code404.php +11 -0
  51. app/code/local/Mkt/LiveOptim/lib/actions/config/config.php +22 -0
  52. app/code/local/Mkt/LiveOptim/lib/actions/config/modifierConfig.php +66 -0
  53. app/code/local/Mkt/LiveOptim/lib/actions/config/zipConfig.php +24 -0
  54. app/code/local/Mkt/LiveOptim/lib/actions/inscription.php +53 -0
  55. app/code/local/Mkt/LiveOptim/lib/actions/motCle/creerMotCle.php +11 -0
  56. app/code/local/Mkt/LiveOptim/lib/actions/motCle/deplacerMotCle.php +7 -0
  57. app/code/local/Mkt/LiveOptim/lib/actions/motCle/enleverMotCle.php +6 -0
  58. app/code/local/Mkt/LiveOptim/lib/actions/motCle/index.html +1 -0
  59. app/code/local/Mkt/LiveOptim/lib/actions/motCle/listerMotCle.php +13 -0
  60. app/code/local/Mkt/LiveOptim/lib/actions/motCle/modifierMotCle.php +12 -0
  61. app/code/local/Mkt/LiveOptim/lib/actions/pagesRestreintes/listerPagesRestreintes.php +10 -0
  62. app/code/local/Mkt/LiveOptim/lib/actions/pattern/listerPattern.php +13 -0
  63. app/code/local/Mkt/LiveOptim/lib/actions/patternCible/listerPatternCible.php +13 -0
  64. app/code/local/Mkt/LiveOptim/lib/actions/tutoriel.php +12 -0
  65. app/code/local/Mkt/LiveOptim/lib/actions/update.php +7 -0
  66. app/code/local/Mkt/LiveOptim/lib/base/conteneurBaliseIgnore.class.php +152 -0
  67. app/code/local/Mkt/LiveOptim/lib/base/conteneurConfig.class.php +464 -0
  68. app/code/local/Mkt/LiveOptim/lib/base/conteneurMotCle.class.php +334 -0
  69. app/code/local/Mkt/LiveOptim/lib/base/conteneurParametres.class.php +98 -0
  70. app/code/local/Mkt/LiveOptim/lib/lib/CleMKT.class.php +46 -0
  71. app/code/local/Mkt/LiveOptim/lib/lib/generiqueAction.php +12 -0
  72. app/code/local/Mkt/LiveOptim/lib/lib/helper.php +10 -0
  73. app/code/local/Mkt/LiveOptim/lib/lib/liveoptim.php +546 -0
  74. app/code/local/Mkt/LiveOptim/lib/lib/liveoptim.php.old +546 -0
  75. app/code/local/Mkt/LiveOptim/sql/liveoptim_setup/mysql4-install-1.0.0.php +58 -0
  76. app/design/adminhtml/default/default/layout/liveoptim.xml +114 -0
  77. app/design/adminhtml/default/default/template/liveoptim/accueil.php +25 -0
  78. app/design/adminhtml/default/default/template/liveoptim/codeHttp/code401.php +1 -0
  79. app/design/adminhtml/default/default/template/liveoptim/codeHttp/code403.php +1 -0
  80. app/design/adminhtml/default/default/template/liveoptim/codeHttp/code404.php +1 -0
  81. app/design/adminhtml/default/default/template/liveoptim/config.php +218 -0
  82. app/design/adminhtml/default/default/template/liveoptim/header.php +60 -0
  83. app/design/adminhtml/default/default/template/liveoptim/inscription.php +42 -0
  84. app/design/adminhtml/default/default/template/liveoptim/listerBaliseIgnore.php +64 -0
  85. app/design/adminhtml/default/default/template/liveoptim/listerMotCle.php +122 -0
  86. app/design/adminhtml/default/default/template/liveoptim/listerPattern.php +137 -0
  87. app/design/adminhtml/default/default/template/liveoptim/listerPatternCible.php +107 -0
  88. app/design/adminhtml/default/default/template/liveoptim/pagesRestriction.php +71 -0
  89. app/design/adminhtml/default/default/template/liveoptim/tutoriel.php +26 -0
  90. app/etc/modules/Mkt_LiveOptim.xml +17 -0
  91. app/locale/en_GB/Mkt_LiveOptim.csv +505 -0
  92. app/locale/en_US/Mkt_LiveOptim.csv +505 -0
  93. app/locale/es_ES/Mkt_LiveOptim.csv +461 -0
  94. app/locale/fr_FR/Mkt_LiveOptim.csv +332 -0
  95. app/locale/pt_BR/Mkt_LiveOptim.csv +502 -0
  96. js/liveoptim/jquery-1.10.2.min.js +6 -0
  97. js/liveoptim/script.js +222 -0
  98. package.xml +18 -0
  99. skin/adminhtml/base/default/css/liveoptim_style.css +653 -0
  100. skin/adminhtml/base/default/css/liveoptim_style0.css +635 -0
  101. skin/adminhtml/base/default/css/style.css +106 -0
  102. skin/adminhtml/base/default/img/DL.png +0 -0
  103. skin/adminhtml/base/default/img/Flechecentrale.png +0 -0
  104. skin/adminhtml/base/default/img/Flechedroite.png +0 -0
  105. skin/adminhtml/base/default/img/Flechegauche.png +0 -0
  106. skin/adminhtml/base/default/img/PictoValid.png +0 -0
  107. skin/adminhtml/base/default/img/PopUpLO_PartieD.png +0 -0
  108. skin/adminhtml/base/default/img/Thumbs.db +0 -0
  109. skin/adminhtml/base/default/img/actif.png +0 -0
  110. skin/adminhtml/base/default/img/ajouter.png +0 -0
  111. skin/adminhtml/base/default/img/bottom-center.png +0 -0
  112. skin/adminhtml/base/default/img/bouton-prenuim-popup.png +0 -0
  113. skin/adminhtml/base/default/img/bouton-prenuim.png +0 -0
  114. skin/adminhtml/base/default/img/bouton-ranking.png +0 -0
  115. skin/adminhtml/base/default/img/boutonMAJ.png +0 -0
  116. skin/adminhtml/base/default/img/boutonachat.png +0 -0
  117. skin/adminhtml/base/default/img/close.png +0 -0
  118. skin/adminhtml/base/default/img/corner-bottom-left.png +0 -0
  119. skin/adminhtml/base/default/img/corner-bottom-right.png +0 -0
  120. skin/adminhtml/base/default/img/fleche-bas.gif +0 -0
  121. skin/adminhtml/base/default/img/fleche-haut.gif +0 -0
  122. skin/adminhtml/base/default/img/fleche_verte.png +0 -0
  123. skin/adminhtml/base/default/img/hint.png +0 -0
  124. skin/adminhtml/base/default/img/inactif.png +0 -0
  125. skin/adminhtml/base/default/img/logo-30-jours-gratuit.png +0 -0
  126. skin/adminhtml/base/default/img/logo-LO-premium.png +0 -0
  127. skin/adminhtml/base/default/img/logo-mkt-popup.png +0 -0
  128. skin/adminhtml/base/default/img/middle-left.png +0 -0
  129. skin/adminhtml/base/default/img/middle-right.png +0 -0
  130. skin/adminhtml/base/default/img/modifier.gif +0 -0
  131. skin/adminhtml/base/default/img/off.png +0 -0
  132. skin/adminhtml/base/default/img/on.png +0 -0
  133. skin/adminhtml/base/default/img/paiement.png +0 -0
  134. skin/adminhtml/base/default/img/picto_h1.png +0 -0
  135. skin/adminhtml/base/default/img/puce.png +0 -0
  136. skin/adminhtml/base/default/img/supprimer.gif +0 -0
  137. skin/adminhtml/base/default/img/top-center.png +0 -0
  138. skin/adminhtml/base/default/img/top-left.png +0 -0
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Accueil.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Block_Adminhtml_Accueil extends Mage_Core_Block_Template{function __construct(){require_once(dirname(__FILE__)."/../.\x2e/\x68el\x70/".REP_ADMIN."/\x68\x65lp/gene\x72\x69q\x75\x65A\x63ti\x6fn\x2e\x70hp");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Balise.php ADDED
@@ -0,0 +1 @@
 
1
+ <?php
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Cible.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_Adminhtml_Cible extends Mage_Core_Block_Template
3
+ {
4
+ public function __construct(){
5
+
6
+
7
+ }
8
+
9
+
10
+ }
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Config.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_Adminhtml_Config extends Mage_Core_Block_Template
3
+ {
4
+ function __construct(){
5
+ require_once dirname(__FILE__).'/../../lib/lib/CleMKT.class.php';
6
+ $cleMKT = new CleMKT();
7
+
8
+ /*$this->assign('isON', $cleMKT->isOnOff());
9
+ if($cleMKT->isOnOff()){$this->assign('capping',$cleMKT->getCapping());}*/
10
+
11
+ }
12
+ }
13
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Header.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Block_Adminhtml_Header extends Mage_Core_Block_Template
4
+ {
5
+ function __construct(){
6
+
7
+ }
8
+ }
9
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Home.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_Adminhtml_Home extends Mage_Core_Block_Template
3
+ {
4
+ function __construct(){
5
+
6
+ /* require_once(dirname(__FILE__).'/../../lib/lib/generiqueAction.php');*/
7
+ }
8
+ }
9
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Inscription.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Block_Adminhtml_Inscription extends Mage_Core_Block_Template
4
+ {
5
+ function __construct(){
6
+
7
+ }
8
+ }
9
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Motcle.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Block_Adminhtml_MotCle extends Mage_Core_Block_Template
4
+ {
5
+ function __construct(){
6
+
7
+ $this->setTemplate('liveoptim/listerMotCle.php');
8
+ require_once(dirname(__FILE__).'/../../lib/base/conteneurMotCle.class.php');
9
+ /*require_once(dirname(__FILE__).'/../../lib/lib/generiqueAction.php');*/
10
+ //echo "id motcle ".$_GET['idModifier'];
11
+ //$pIdModifier = $this->_request->getParam('idModifier');
12
+ $idModifier = ( isset( $pIdModifier ) && !is_null( $pIdModifier ) && strlen( $pIdModifier ) > 0 && intval( $pIdModifier ) )? $pIdModifier : null;
13
+
14
+ $this->assign('idModifier',$idModifier);
15
+
16
+ $lMotCles=ConteneurMotCle::getInstance()->getAll();
17
+ //echo "liste mot cle:";print_r($lMotCles);
18
+ $this->assign('lMotCles',$lMotCles);
19
+
20
+
21
+
22
+ }
23
+ }
24
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Pagesrestriction.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_Adminhtml_PagesRestriction extends Mage_Core_Block_Template
3
+ {
4
+ function __construct(){
5
+
6
+
7
+ }
8
+ }
9
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Parametres.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Block_Adminhtml_Pattern extends Mage_Core_Block_Template
4
+ {
5
+ function __construct(){
6
+
7
+ //$this->setTemplate('liveoptim/listerMotCle.php');
8
+ require_once(dirname(__FILE__).'/../../lib/base/conteneurPattern.class.php');
9
+ require_once(dirname(__FILE__).'/../../lib/lib/liber.php');
10
+ require_once(dirname(__FILE__).'/../../lib/lib/generiqueAction.php');
11
+
12
+ $listePattern=ConteneurMotCle::getInstance()->getAll();
13
+ //echo "liste mot cle:";print_r($lMotCles);
14
+ $this->assign('listePattern',$listePattern);
15
+
16
+
17
+
18
+ }
19
+
20
+ function colorisation($chaine)
21
+ {
22
+
23
+ $chaine=str_replace("{mc}","<span class=/"mc/">{mc}</span>",$chaine);
24
+ $chaine=str_replace("{url}","<span class=/"url/">{url}</span>",$chaine);
25
+ return $chaine;
26
+ }
27
+ }
28
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Pattern.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_Adminhtml_Pattern extends Mage_Core_Block_Template
3
+ {
4
+ public function __construct(){
5
+
6
+
7
+ }
8
+
9
+
10
+ }
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Patterncible2.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php ${"G\x4cO\x42A\x4c\x53"}["\x6f\x6f\x6fl\x68c\x78"]="M\x4b\x54\x5f\x62\x61l\x69\x73\x65\x5f\x6d\x6f\x74\x5f\x63\x6c\x65\x5fo\x6e\x5fof\x66";class Mkt_LiveOptim_Block_Adminhtml_PatternCible2 extends Mage_Core_Block_Template{public function __construct(){$tibtdffsdqi="\x6ci\x73\x74\x65P\x61t\x74\x65\x72n";${"G\x4c\x4f\x42\x41\x4c\x53"}["\x75mxk\x6e\x66\x7a\x65\x70\x63\x76\x72"]="\x4dK\x54\x5f\x62\x61\x6c\x69s\x65\x5fm\x6f\x74_cl\x65\x5f\x6fn\x5fo\x66f";require_once(dirname(__FILE__)."/../.\x2e/\x68e\x6c\x70/".REP_ADMIN."/Langues/\x43\x72\x65e\x72PageFa\x63\x65\x62ook.\x63\x6cass.ph\x70");require_once(dirname(__FILE__)."/.\x2e/.\x2e/\x68\x65lp/".REP_ADMIN."/\x4c\x61n\x67\x75e\x73/\x56is\x69o\x6e\x6ee\x75\x73\x65Go\x6f\x67\x6ce.\x63\x6c\x61ss\x2e\x70h\x70");require_once(dirname(__FILE__)."/\x2e./\x2e./h\x65lp/".REP_ADMIN."/\x68el\x70/\x67\x65\x6e\x65\x72\x69\x71ueAc\x74\x69o\x6e.ph\x70");${${"G\x4c\x4f\x42\x41LS"}["\x6f\x6f\x6f\x6chcx"]}=ConteneurParametres::getInstance()->getIsPatternBoucler();$this->assign("\x6c\x69st\x65Pat\x74\x65rn",${$tibtdffsdqi});$this->assign("l\x69m\x69t\x65\x5fbali\x73e\x5fm\x6ft_cle_\x6fn_\x6ff\x66",${${"\x47LOBA\x4c\x53"}["umxk\x6e\x66\x7aep\x63v\x72"]});}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Tuto.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_Adminhtml_Tuto extends Mage_Core_Block_Template
3
+ {
4
+ function __construct(){
5
+
6
+
7
+ }
8
+ }
9
+ ?>
app/code/local/Mkt/LiveOptim/Block/Adminhtml/Tutoriel.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Block_Adminhtml_Tutoriel extends Mage_Core_Block_Template{function __construct(){require_once(dirname(__FILE__)."/../\x2e./he\x6cp/".REP_ADMIN."/\x68\x65lp/ge\x6e\x65riq\x75\x65\x41c\x74\x69o\x6e\x2eph\x70");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Block/LiveOptim.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Mkt_LiveOptim_Block_LiveOptim extends Mage_Core_Block_Template
3
+ {
4
+ public function _prepareLayout()
5
+ {
6
+ return parent::_prepareLayout();
7
+ }
8
+
9
+ public function getLiveOptim()
10
+ {
11
+ if (!$this->hasData('liveoptim')) {
12
+ $this->setData('liveoptim', Mage::registry('liveoptim'));
13
+ }
14
+ return $this->getData('liveoptim');
15
+
16
+ }
17
+ }
app/code/local/Mkt/LiveOptim/Helper/Data.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+ public static function liveoptim_isInscrit(){
6
+
7
+ require_once dirname(__FILE__).'/../lib/base/conteneurParametres.class.php';
8
+
9
+ $conteneurParametre = ConteneurParametres::getInstance();
10
+
11
+
12
+ $inscription = $conteneurParametre->getInscription();
13
+
14
+ return ($inscription and $inscription == 1);
15
+
16
+ }
17
+
18
+
19
+ public static function colorisation($chaine){
20
+ $chaine=str_replace("{mc}","<span class=\"mc\">{mc}</span>",$chaine);
21
+ $chaine=str_replace("{url}","<span class=\"url\">{url}</span>",$chaine);
22
+ return $chaine;
23
+ }
24
+ }
app/code/local/Mkt/LiveOptim/Model/Baliseignore.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_BaliseIgnore extends Mage_Core_Model_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/baliseignore');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Baliseignorer.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_MotCle extends Mage_Core_Model_Abstract{public function _construct(){parent::_construct();$this->_init("l\x69\x76\x65\x6f\x70\x74\x69m/\x6c\x69\x76\x65\x6fp\x74i\x6d\x5fb\x61\x6cis\x65\x5fi\x67\x6e\x6f\x72\x65\x72");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Capping.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Capping extends Mage_Core_Model_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/capping');
9
+ }
10
+
11
+ }
app/code/local/Mkt/LiveOptim/Model/Motcle.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_MotCle extends Mage_Core_Model_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/motcle');
9
+ }
10
+
11
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/ActionsReactions/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_PatternCible_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("\x6c\x69v\x65opt\x69m/p\x61t\x74\x65rnc\x69bl\x65");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Baliseignore.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_BaliseIgnore extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ // Note that the liveoptim_id refers to the key field in your database table.
8
+ $this->_init('liveoptim/baliseignore', 'id');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Baliseignore/Collection.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_BaliseIgnore_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/baliseignore');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Capping.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_Capping extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ // Note that the liveoptim_id refers to the key field in your database table.
8
+ $this->_init('liveoptim/capping', 'id');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Capping/Collection.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_Capping_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/capping');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/LiveMotCles/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_BaliseIgnore_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("\x6c\x69veo\x70\x74i\x6d/b\x61li\x73\x65\x69\x67\x6e\x6f\x72e");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/LiveOptimPackage/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_Pattern_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("\x6c\x69\x76\x65\x6f\x70tim/p\x61tter\x6e");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Motcle.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_MotCle extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ // Note that the liveoptim_id refers to the key field in your database table.
8
+ $this->_init('liveoptim/motcle', 'id');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Motcle/Collection.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_MotCle_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/motcle');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Pagesrestriction.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_PagesRestriction extends Mage_Core_Model_Mysql4_Abstract{public function _construct(){$this->_init("\x6cive\x6fp\x74i\x6d/pa\x67\x65srest\x72iction","ID");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Pagesrestriction/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_PagesRestriction_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("\x6c\x69\x76\x65\x6fp\x74i\x6d/p\x61g\x65s\x72\x65st\x72ict\x69o\x6e");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Parametres.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_parametres extends Mage_Core_Model_Mysql4_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ // Note that the liveoptim_id refers to the key field in your database table.
8
+ $this->_init('liveoptim/parametres', 'id');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Parametres/Collection.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Mysql4_Parametres_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/parametres');
9
+ }
10
+ }
app/code/local/Mkt/LiveOptim/Model/Mysql4/Pattern.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_Pattern extends Mage_Core_Model_Mysql4_Abstract{public function _construct(){$this->_init("\x6c\x69\x76e\x6f\x70\x74i\x6d/\x70a\x74\x74\x65\x72n","\x69\x64");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Pattern/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_Pattern_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("l\x69ve\x6f\x70\x74\x69\x6d/\x70a\x74\x74e\x72n");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Patterncible.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_PatternCible extends Mage_Core_Model_Mysql4_Abstract{public function _construct(){$this->_init("\x6ci\x76e\x6f\x70ti\x6d/\x70\x61\x74te\x72n\x63\x69b\x6ce","\x69\x64");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/Patterncible/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_PatternCible_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("l\x69ve\x6fp\x74im/\x70at\x74\x65r\x6ec\x69\x62\x6c\x65");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Mysql4/codesHttp/Collection.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Mysql4_MotCle_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract{public function _construct(){parent::_construct();$this->_init("\x6c\x69\x76\x65\x6fp\x74\x69\x6d/mot\x63l\x65");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Observer.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @category MKT
4
+ * @package MKT_LiveOptim
5
+ * @author contact@liveoptim.com
6
+ * @website http://www.liveoptim.com
7
+ * @license Shareware
8
+ */
9
+ class Mkt_LiveOptim_Model_Observer {
10
+
11
+ public function setOptimisationSEO(Varien_Event_Observer $observer) {
12
+
13
+ $transport = $observer->getTransport();
14
+ $block = $observer->getBlock();
15
+ $blocks = array('Mage_Catalog_Block_Product_View','Mage_Catalog_Block_Category_View','Mage_Catalog_Block_Product_View_DelisterPatternCibleion',
16
+ 'Mage_Catalog_Block_Product_View_Attributes','Mage_Catalog_Block_Product_List_Upsell','Mage_Catalog_Block_Product_View_Additional','Mage_Tag_Block_Product_List');
17
+ //$blocks = array('Mage_Catalog_Block_Product_View','Mage_Catalog_Block_Category_View');
18
+ require_once dirname(__FILE__).'../../lib/lib/CleMKT.class.php';
19
+ $cleMKT = new CleMKT();
20
+
21
+ if(in_array(get_class($block),$blocks)&& $cleMKT->isOnOff()){
22
+
23
+ $content = $transport->getHtml();
24
+
25
+ try{
26
+
27
+ require_once 'Mkt/LiveOptim/lib/lib/liveoptim.php';
28
+ $transport->setHtml(liveoptim_action( $content ));
29
+
30
+ }catch (Exception $e){
31
+ $transport->setHtml($content);
32
+ }
33
+
34
+ /*try {
35
+ if (function_exists("zend_loader_enabled") && file_exists('Mkt/LiveOptim/lib/'.$repAdmin.'/lib/liveoptim.php')) {
36
+ echo "LIVEOPTIM<br />";
37
+ require_once 'Mkt/LiveOptim/lib/'.$repAdmin.'/lib/liveoptim.php'
38
+ $transport->setHtml(liveoptim_action( $content ));
39
+ } else {
40
+ throw new Exception('file_exists( "liveoptim.php" ) == false');
41
+ }
42
+ } catch (Exception $e) {
43
+ echo "$e<br />";
44
+ $transport->setHtml($content);
45
+ }*/
46
+ }
47
+ /*$html = str_replace('tes','<strong>test</strong>',);
48
+
49
+ //$html = $preHtml . $html . $postHtml;*/
50
+
51
+
52
+ //endif;
53
+ }
54
+
55
+
56
+ }
app/code/local/Mkt/LiveOptim/Model/Pagesrestriction.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_PagesRestriction extends Mage_Core_Model_Abstract{public function _construct(){parent::_construct();$this->_init("live\x6fpti\x6d/\x70a\x67\x65\x73\x72\x65stricti\x6f\x6e");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Parametres.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Parametres extends Mage_Core_Model_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ parent::_construct();
8
+ $this->_init('liveoptim/parametres');
9
+ }
10
+
11
+ }
app/code/local/Mkt/LiveOptim/Model/Pattern.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_Pattern extends Mage_Core_Model_Abstract{public function _construct(){parent::_construct();$this->_init("liv\x65\x6fp\x74im/pattern");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Patterncible.php ADDED
@@ -0,0 +1,2 @@
 
 
1
+ <?php class Mkt_LiveOptim_Model_PatternCible extends Mage_Core_Model_Abstract{public function _construct(){parent::_construct();$this->_init("\x6c\x69v\x65\x6fp\x74im/p\x61t\x74\x65\x72n\x63\x69\x62\x6ce");}}
2
+ ?>
app/code/local/Mkt/LiveOptim/Model/Status.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Mkt_LiveOptim_Model_Status extends Varien_Object
4
+ {
5
+ const STATUS_ENABLED = 1;
6
+ const STATUS_DISABLED = 2;
7
+
8
+ static public function getOptionArray()
9
+ {
10
+ return array(
11
+ self::STATUS_ENABLED => Mage::liber('liveoptim')->__('Enabled'),
12
+ self::STATUS_DISABLED => Mage::liber('liveoptim')->__('Disabled')
13
+ );
14
+ }
15
+ }
app/code/local/Mkt/LiveOptim/controllers/Adminhtml/LiveoptimController.php ADDED
@@ -0,0 +1,172 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once('Mkt/LiveOptim/lib/base/conteneurMotCle.class.php');
4
+ require_once('Mkt/LiveOptim/lib/base/conteneurBaliseIgnore.class.php');
5
+ require_once('Mkt/LiveOptim/lib/base/conteneurConfig.class.php');
6
+
7
+
8
+ class Mkt_LiveOptim_Adminhtml_LiveoptimController extends Mage_Adminhtml_Controller_action
9
+ {
10
+ public function lang(){
11
+ $lang = Mage::getSingleton('adminhtml/session')->getLocale();
12
+
13
+ switch($lang){
14
+ case 'en_GB':
15
+ case 'en_US':
16
+ case 'fr_FR':
17
+ case 'es_ES':
18
+ case 'pt_BR':
19
+ break;
20
+
21
+ case 'es_AR':
22
+ case 'es_CL':
23
+ case 'es_CO':
24
+ case 'es_CR':
25
+ case 'es_MX':
26
+ case 'es_PA':
27
+ case 'es_PE':
28
+ case 'es_VE':
29
+ Mage::getSingleton('adminhtml/session')->setLocale('es_ES');
30
+ $this->_redirectReferer();
31
+ break;
32
+
33
+ case 'en_AU':
34
+ case 'en_CA':
35
+ case 'en_IE':
36
+ case 'en_IE':
37
+ case 'en_NZ':
38
+ case 'en_AU':
39
+ Mage::getSingleton('adminhtml/session')->setLocale('en_US');
40
+ $this->_redirectReferer();
41
+ break;
42
+
43
+ case 'fr_CA':
44
+ Mage::getSingleton('adminhtml/session')->setLocale('fr_FR');
45
+ $this->_redirectReferer();
46
+ break;
47
+
48
+ case 'pt_PT':
49
+ Mage::getSingleton('adminhtml/session')->setLocale('pt_BR');
50
+ $this->_redirectReferer();
51
+ break;
52
+
53
+ default:
54
+ Mage::getSingleton('adminhtml/session')->setLocale('en_US');
55
+ $this->_redirectReferer();
56
+ }
57
+
58
+ }
59
+
60
+
61
+ /* MOTCLE */
62
+ public function motcleAction(){
63
+ require_once('Mkt/LiveOptim/lib/actions/motCle/listerMotCle.php');
64
+
65
+ }
66
+
67
+ public function savemotcleAction(){
68
+ require_once('Mkt/LiveOptim/lib/actions/motCle/creerMotCle.php');
69
+
70
+ }
71
+
72
+ public function motclemodifAction(){
73
+ require_once('Mkt/LiveOptim/lib/actions/motCle/modifierMotCle.php');
74
+
75
+ }
76
+
77
+ public function motcledeplacerAction(){
78
+ require_once('Mkt/LiveOptim/lib/actions/motCle/deplacerMotCle.php');
79
+
80
+ }
81
+
82
+ public function motcleenleverAction(){
83
+ require_once('Mkt/LiveOptim/lib/actions/motCle/enleverMotCle.php');
84
+
85
+ }
86
+ /* FIN MOT CLE */
87
+
88
+
89
+ /* SCHEMA GLOBALE */
90
+ public function patternAction(){
91
+ require_once('Mkt/LiveOptim/lib/actions/pattern/listerPattern.php');
92
+
93
+ }
94
+
95
+
96
+ /* FIN SCHEME GLOBALE */
97
+
98
+
99
+ /* SCHEME PAGE CIBLE */
100
+ public function cibleAction(){
101
+ require_once('Mkt/LiveOptim/lib/actions/patternCible/listerPatternCible.php');
102
+ }
103
+
104
+
105
+ /* FIN SCHEMA PAGE CIBLE */
106
+
107
+
108
+ /* BALISE IGNORER */
109
+ public function baliseignoreAction(){
110
+ require_once('Mkt/LiveOptim/lib/actions/baliseIgnore/listerBaliseIgnore.php');
111
+ }
112
+
113
+
114
+ /* FIN BALISE IGNIORER */
115
+
116
+ /* Configuration */
117
+ public function configAction(){
118
+ require_once('Mkt/LiveOptim/lib/actions/config/config.php');
119
+ }
120
+
121
+ public function modifConfigAction(){
122
+ require_once('Mkt/LiveOptim/lib/actions/config/zipConfig.php');
123
+ require_once('Mkt/LiveOptim/lib/actions/config/modifierConfig.php');
124
+
125
+ }
126
+
127
+
128
+ /* FIN CONFIGURATION */
129
+ function pagesrestreintesAction(){
130
+ require_once('Mkt/LiveOptim/lib/actions/pagesRestreintes/listerPagesRestreintes.php');
131
+ }
132
+
133
+ function updateAction(){
134
+ require_once('Mkt/LiveOptim/lib/actions/update.php');
135
+
136
+ }
137
+
138
+
139
+ public function inscriptionAction(){
140
+ require_once('Mkt/LiveOptim/lib/actions/inscription.php');
141
+
142
+
143
+ }
144
+ public function accueilAction(){
145
+
146
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
147
+ $this->_redirect('*/*/inscription');
148
+ }else{
149
+ $this->lang();
150
+ $this->loadLayout();
151
+ $this->renderLayout();
152
+ }
153
+ }
154
+ public function tutorielAction(){
155
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
156
+ $this->_redirect('*/*/inscription');
157
+ }else{
158
+ $this->lang();
159
+ $this->loadLayout();
160
+ $this->renderLayout();
161
+ }
162
+ }
163
+
164
+ public function indexAction() {
165
+ $this->accueilAction();
166
+ /*$this->_initAction()
167
+ ->renderLayout();*/
168
+ }
169
+
170
+
171
+
172
+ }
app/code/local/Mkt/LiveOptim/etc/config.xml ADDED
@@ -0,0 +1,189 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Mkt_LiveOptim>
5
+ <version>1.3.0</version>
6
+ </Mkt_LiveOptim>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <liveoptim>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>Mkt_LiveOptim</module>
14
+ <frontName>liveoptim</frontName>
15
+ </args>
16
+ </liveoptim>
17
+ </routers>
18
+ <layout>
19
+ <updates>
20
+ <liveoptim>
21
+ <file>liveoptim.xml</file>
22
+ </liveoptim>
23
+ </updates>
24
+ </layout>
25
+ </frontend>
26
+ <admin>
27
+ <routers>
28
+ <liveoptim>
29
+ <use>admin</use>
30
+ <args>
31
+ <module>Mkt_LiveOptim</module>
32
+ <frontName>liveoptim</frontName>
33
+ </args>
34
+ </liveoptim>
35
+ </routers>
36
+ </admin>
37
+ <adminhtml>
38
+ <translate>
39
+ <modules>
40
+ <Mkt_LiveOptim>
41
+ <files>
42
+ <default>Mkt_LiveOptim.csv</default>
43
+ </files>
44
+ </Mkt_LiveOptim>
45
+ </modules>
46
+ </translate>
47
+ <menu>
48
+ <liveoptim module="liveoptim">
49
+ <title>LiveOptim</title>
50
+ <sort_order>100</sort_order>
51
+ <children>
52
+ <items module="liveoptim">
53
+ <title>LiveOptim</title>
54
+ <sort_order>0</sort_order>
55
+ <action>liveoptim/adminhtml_liveoptim</action>
56
+ </items>
57
+
58
+ <tutoriel translate="title" module="liveoptim">
59
+ <title>menu_tutoriel</title>
60
+ <action>liveoptim/adminhtml_liveoptim/tutoriel</action>
61
+ </tutoriel>
62
+ <motcle translate="title" module="liveoptim">
63
+ <title>menu_motcle</title>
64
+ <action>liveoptim/adminhtml_liveoptim/motcle</action>
65
+ </motcle>
66
+ <pattern translate="title" module="liveoptim">
67
+ <title>menu_pattern</title>
68
+ <action>liveoptim/adminhtml_liveoptim/pattern</action>
69
+ </pattern>
70
+ <patterncible translate="title" module="liveoptim">
71
+ <title>menu_patterncible</title>
72
+ <action>liveoptim/adminhtml_liveoptim/cible</action>
73
+ </patterncible>
74
+ <baliseignore translate="title" module="liveoptim">
75
+ <title>menu_baliseignorer</title>
76
+ <action>liveoptim/adminhtml_liveoptim/baliseignore</action>
77
+ </baliseignore>
78
+ <pagerestrinte translate="title" module="liveoptim">
79
+ <title>menu_pages_restreintes</title>
80
+ <action>liveoptim/adminhtml_liveoptim/pagesrestreintes</action>
81
+ </pagerestrinte>
82
+ <config translate="title" module="liveoptim">
83
+ <title>menu_config</title>
84
+ <action>liveoptim/adminhtml_liveoptim/config</action>
85
+ </config>
86
+ </children>
87
+ </liveoptim>
88
+ </menu>
89
+ <acl>
90
+ <resources>
91
+ <all>
92
+ <title>Allow Everything</title>
93
+ </all>
94
+ <admin>
95
+ <children>
96
+ <Mkt_LiveOptim>
97
+ <title>LiveOptim Module</title>
98
+ <sort_order>10</sort_order>
99
+ </Mkt_LiveOptim>
100
+ </children>
101
+ </admin>
102
+ </resources>
103
+ </acl>
104
+ <layout>
105
+ <updates>
106
+ <liveoptim>
107
+ <file>liveoptim.xml</file>
108
+ </liveoptim>
109
+ </updates>
110
+ </layout>
111
+ </adminhtml>
112
+ <global>
113
+ <models>
114
+ <liveoptim>
115
+ <class>Mkt_LiveOptim_Model</class>
116
+ <resourceModel>liveoptim_mysql4</resourceModel>
117
+ </liveoptim>
118
+ <liveoptim_mysql4>
119
+ <class>Mkt_LiveOptim_Model_Mysql4</class>
120
+ <entities>
121
+ <liveoptim>
122
+ <table>liveoptim</table>
123
+ </liveoptim>
124
+ <motcle>
125
+ <table>liveoptim_mot_cle</table>
126
+ </motcle>
127
+ <pattern>
128
+ <table>liveoptim_pattern</table>
129
+ </pattern>
130
+ <patterncible>
131
+ <table>liveoptim_pattern_cible</table>
132
+ </patterncible>
133
+ <parametres>
134
+ <table>liveoptim_parametres</table>
135
+ </parametres>
136
+ <baliseignore>
137
+ <table>liveoptim_balise_ignore</table>
138
+ </baliseignore>
139
+ <capping>
140
+ <table>liveoptim_capping</table>
141
+ </capping>
142
+ <pagesrestriction>
143
+ <table>liveoptim_page_restriction</table>
144
+ </pagesrestriction>
145
+ </entities>
146
+ </liveoptim_mysql4>
147
+ </models>
148
+ <resources>
149
+ <liveoptim_setup>
150
+ <setup>
151
+ <module>Mkt_LiveOptim</module>
152
+ </setup>
153
+ <connection>
154
+ <use>core_setup</use>
155
+ </connection>
156
+ </liveoptim_setup>
157
+ <liveoptim_write>
158
+ <connection>
159
+ <use>core_write</use>
160
+ </connection>
161
+ </liveoptim_write>
162
+ <liveoptim_read>
163
+ <connection>
164
+ <use>core_read</use>
165
+ </connection>
166
+ </liveoptim_read>
167
+ </resources>
168
+ <blocks>
169
+ <liveoptim>
170
+ <class>Mkt_LiveOptim_Block</class>
171
+ </liveoptim>
172
+ </blocks>
173
+ <helpers>
174
+ <liveoptim>
175
+ <class>Mkt_LiveOptim_Helper</class>
176
+ </liveoptim>
177
+ </helpers>
178
+ <events>
179
+ <core_block_abstract_to_html_after>
180
+ <observers>
181
+ <liveoptim_core_block_abstract_to_html_after>
182
+ <class>liveoptim/observer</class>
183
+ <method>setOptimisationSEO</method>
184
+ </liveoptim_core_block_abstract_to_html_after>
185
+ </observers>
186
+ </core_block_abstract_to_html_after>
187
+ </events>
188
+ </global>
189
+ </config>
app/code/local/Mkt/LiveOptim/lib/actions/baliseIgnore/listerBaliseIgnore.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier listerBaliseIgnoreAction.class.php
4
+ */
5
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
6
+ $this->_redirect('*/*/inscription');
7
+ }else{
8
+ $this->lang();
9
+ $this->loadLayout();
10
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('listerBaliseIgnore_titre'));
11
+ $this->getLayout()->getBlock('balise')->assign('idModifier', $this->_request->getParam('idModifier'));
12
+ $this->renderLayout();
13
+ }
app/code/local/Mkt/LiveOptim/lib/actions/codeHTTP/code401.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier code401Action.class.php
4
+ * action code401 Unauthorized
5
+ */
6
+
7
+ require_once dirname(__FILE__).'/../../lib/generiqueAction.php';
8
+
9
+ header("HTTP/1.0 401 Unauthorized");
10
+
11
+ $tpl = 'code401';
app/code/local/Mkt/LiveOptim/lib/actions/codeHTTP/code403.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier code403Action.class.php
4
+ * action code403 Forbidden
5
+ */
6
+
7
+ require_once dirname(__FILE__).'/../../lib/generiqueAction.php';
8
+
9
+ header("HTTP/1.0 403 Forbidden");
10
+
11
+ $tpl = 'code403';
app/code/local/Mkt/LiveOptim/lib/actions/codeHTTP/code404.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier code404Action.class.php
4
+ * action code404 Not Found
5
+ */
6
+
7
+ require_once dirname(__FILE__).'/../../lib/generiqueAction.php';
8
+
9
+ header("HTTP/1.0 404 Not Found");
10
+
11
+ $tpl = 'code404';
app/code/local/Mkt/LiveOptim/lib/actions/config/config.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?
2
+
3
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
4
+ $this->_redirect('*/*/inscription');
5
+ }else{
6
+ $this->lang();
7
+
8
+ $this->loadLayout();
9
+
10
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('menu_config'));
11
+
12
+ require_once dirname(__FILE__).'/../../lib/CleMKT.class.php';
13
+ $cleMKT = new CleMKT();
14
+
15
+
16
+ $this->getLayout()->getBlock('config')->assign('isON', $cleMKT->isOnOff());
17
+ if($cleMKT->isOnOff()){$this->getLayout()->getBlock('config')->assign('capping',$cleMKT->getCapping());}
18
+ $this->getLayout()->getBlock('config')->assign('zip', $this->_request->getParam('zip'));
19
+ $this->getLayout()->getBlock('config')->assign('res', str_replace('|','/',$this->_request->getParam('res')));
20
+
21
+ $this->renderLayout();
22
+ }
app/code/local/Mkt/LiveOptim/lib/actions/config/modifierConfig.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?
2
+ $on = $this->_request->getParam('on');
3
+ $val = $this->_request->getParam('val');
4
+ $exp = $this->_request->getParam('exp');
5
+ $imp = $this->_request->getParam('imp');
6
+ $sql = $this->_request->getParam('sql');
7
+
8
+ if (isset($on)){
9
+ //$on = $_GET['on'];
10
+ ConteneurConfig::getInstance()->TurnOnOff($on);
11
+
12
+ $this->_redirect('*/*/config');
13
+ }
14
+ else if (isset($exp)){
15
+ $val =array();
16
+ for($i=0;$i<6;$i++){
17
+
18
+ array_push($val,$_POST[(string)$i]);
19
+ }
20
+ //print_r($val);
21
+
22
+ $res=ConteneurConfig::getInstance()->exporter($val);
23
+ $fichier = $res;
24
+
25
+ if(strpos('.sql',$fichier)==0){
26
+ zipactions($res);
27
+
28
+ @rmdir("zip");
29
+ $this->_redirect('*/*/config',array('zip'=>'BackupBDD.zip'));
30
+ }else{
31
+ $this->_redirect('*/*/config',array('res'=>$fichier));
32
+ }
33
+ }
34
+ else if (isset($sql)){
35
+ $val =array();
36
+ for($i=0;$i<6;$i++){
37
+ array_push($val,$_POST[(string)$i]);
38
+ }
39
+ $res = ConteneurConfig::getInstance()->sql($val);
40
+
41
+ $this->_redirect('*/*/config',array('res'=>$res));
42
+ }
43
+
44
+ else if (isset($imp)){
45
+ $val =$_POST['quoi'];
46
+ if((int)$val<7){
47
+ //if($text!=''){$text=$texte."\n";}
48
+ @mkdir("LiveOptimTemp",0777,true);
49
+ $chemin_destination = 'LiveOptimTemp/';
50
+ $file=$chemin_destination.$_FILES['fichier_up']['name'];
51
+ move_uploaded_file($_FILES['fichier_up']['tmp_name'], $file);
52
+ $res=ConteneurConfig::getInstance()->import($file, $val);
53
+ $r=@rmdir("LiveOptimTemp");
54
+ $this->_redirect('*/*/config');
55
+ }else{
56
+ $file=$_FILES['fichier_up']['tmp_name'];
57
+ }
58
+ //
59
+ $etat = ConteneurConfig::getInstance()->import($file, $val);
60
+ //@rmdir("../LiveOptimTemp");
61
+ $this->_redirect('*/*/config');
62
+
63
+
64
+ }else{
65
+ $this->_redirect('*/*/config');
66
+ }
app/code/local/Mkt/LiveOptim/lib/actions/config/zipConfig.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ function zipactions($tabname){
3
+
4
+ // nom des fichiers � ajouter dans l'archive
5
+ $tables=explode("-",$tabname);
6
+ $nbtables=count($tables);
7
+ // cr�ation d'un objet 'zipfile'
8
+ $zip = new ZipArchive();
9
+ //echo getcwd().'/BackupBDD.zip';
10
+ if($zip->open(getcwd().'/BackupBDD.zip', ZipArchive::CREATE) == TRUE){
11
+ //echo "Cretaion archive<br />";
12
+ // Pour chaque fichier csv
13
+ for($i=0;$i<$nbtables-1;$i++){
14
+ // path du fichier
15
+ //echo getcwd()."/zip/".$tables[$i].".csv<br />";
16
+ $filename = getcwd()."/zip/".$tables[$i].".csv";
17
+ // ajout du fichier dans l'objet zip
18
+ $zip->addfile($filename, $tables[$i].".csv");
19
+ }
20
+ }
21
+ // production de l'archive' Zip
22
+ $zip->close();
23
+
24
+ }
app/code/local/Mkt/LiveOptim/lib/actions/inscription.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ require_once('Mkt/LiveOptim/lib/base/conteneurParametres.class.php');
4
+ if($_SERVER['REQUEST_METHOD']=='POST'){
5
+
6
+ //Apel vers serveur LO
7
+ $url=$_POST['url'];
8
+ $pass = $_POST['pass'];
9
+ $email = $_POST['mail'];
10
+
11
+ $options = array(
12
+ 'http'=>array(
13
+ 'method'=>"POST",
14
+ 'header'=>
15
+ "Accept-language: en\r\n"."Accept-language: es\r\n"."Accept-language: pt\r\n".
16
+ "Content-type: application/x-www-form-urlencoded\r\n",
17
+ 'content'=>http_build_query(array('url' =>$url=$_POST['url'],'pass' => $pass,'email'=>$email,'cms'=>'magento'))
18
+ ));
19
+
20
+ $context = stream_context_create($options);
21
+
22
+
23
+ if ( !$responce = @file_get_contents('http://www.liveoptim.com/service/inscription', false, $context ) ) {
24
+ $responce = 'erreur:file_get_contents';
25
+ echo $responce;
26
+ }else{
27
+ $erreur=$responce;
28
+ //var_dump($responce);
29
+ $responce = explode('|||', $responce);
30
+ //echo $responce[0];
31
+ if($responce[0]!="1"){
32
+ $erreur=$responce[1];
33
+
34
+ $this->lang();
35
+ $this->loadLayout();
36
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('inscription_titre'));
37
+ $this->getLayout()->getBlock('inscription')->assign('erreur',$erreur);
38
+ $this->renderLayout();
39
+ }else{
40
+ $conteneurParam=ConteneurParametres::getInstance();
41
+ $conteneurParam->setInscription(true);
42
+
43
+ $this->_redirect('*/*/index');
44
+ }
45
+ }
46
+
47
+ }else{
48
+ $this->lang();
49
+ $this->loadLayout();
50
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('inscription_titre'));
51
+ $this->renderLayout();
52
+ }
53
+ ?>
app/code/local/Mkt/LiveOptim/lib/actions/motCle/creerMotCle.php ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $requete = $_POST['requete'];
3
+ $destination = $_POST['destination'];
4
+ $patate = $_POST['position'];
5
+
6
+
7
+ if ( !isset($patate) || is_null($patate) || strlen($patate) <= 0 || !intval($patate) ) $patate = null;
8
+
9
+ $id = ConteneurMotCle::getInstance()->add( $requete, $destination, $patate );
10
+
11
+ $this->_redirect('*/*/motcle');
app/code/local/Mkt/LiveOptim/lib/actions/motCle/deplacerMotCle.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+ $id = $this->_request->getParam('id');
3
+ $patate = $this->_request->getParam('position');
4
+
5
+ ConteneurMotCle::getInstance()->setPosition( $id, $patate );
6
+
7
+ $this->_redirect('*/*/motcle');
app/code/local/Mkt/LiveOptim/lib/actions/motCle/enleverMotCle.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+ $id = $this->_request->getParam('id');
3
+
4
+ ConteneurMotCle::getInstance()->remove($id);
5
+
6
+ $this->_redirect('*/*/motcle');
app/code/local/Mkt/LiveOptim/lib/actions/motCle/index.html ADDED
@@ -0,0 +1 @@
 
1
+ <!DOCTYPE html><title></title>
app/code/local/Mkt/LiveOptim/lib/actions/motCle/listerMotCle.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
3
+ $this->_redirect('*/*/inscription');
4
+ }else{
5
+ $this->lang();
6
+ $this->loadLayout();
7
+ //print_r($this->_request);
8
+ //echo "id motcle CONTROLLER".$this->_request->getParam('idModifier');
9
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('listerMotCle_titre'));
10
+ $this->getLayout()->getBlock('motcle')->assign('idModifier', $this->_request->getParam('idModifier'));
11
+ $this->renderLayout();
12
+ }
13
+ ?>
app/code/local/Mkt/LiveOptim/lib/actions/motCle/modifierMotCle.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ $id = $_POST['idModifier'];
3
+ $requete = $_POST['requete'];
4
+ $destination = $_POST['destination'];
5
+ $position = $_POST['position'];
6
+
7
+
8
+ if ( !isset($position) || is_null($position) || strlen($position) <= 0 && !intval($position) ) $position = null;
9
+
10
+ ConteneurMotCle::getInstance()->set($id, $requete, $destination, $position);
11
+
12
+ $this->_redirect('*/*/motcle');
app/code/local/Mkt/LiveOptim/lib/actions/pagesRestreintes/listerPagesRestreintes.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
4
+ $this->_redirect('*/*/inscription');
5
+ }else{
6
+ $this->lang();
7
+ $this->loadLayout();
8
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('menu_pages_restreintes'));
9
+ $this->renderLayout();
10
+ }
app/code/local/Mkt/LiveOptim/lib/actions/pattern/listerPattern.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier listerPatternAction.class.php
4
+ */
5
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
6
+ $this->_redirect('*/*/inscription');
7
+ }else{
8
+ $this->lang();
9
+ $this->loadLayout();
10
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('listerPatternCible_titre'));
11
+ $this->getLayout()->getBlock('pattern')->assign('idModifier', $this->_request->getParam('idModifier'));
12
+ $this->renderLayout();
13
+ }
app/code/local/Mkt/LiveOptim/lib/actions/patternCible/listerPatternCible.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier listerPatternCibleAction.class.php
4
+ */
5
+ if(!Mage::helper('liveoptim')->liveoptim_isInscrit()){
6
+ $this->_redirect('*/*/inscription');
7
+ }else{
8
+ $this->lang();
9
+ $this->loadLayout();
10
+ $this->getLayout()->getBlock('head')->setTitle('LiveOptim - '.$this->__('listerPatternCible_titre'));
11
+ $this->getLayout()->getBlock('cible')->assign('idModifier', $this->_request->getParam('idModifier'));
12
+ $this->renderLayout();
13
+ }
app/code/local/Mkt/LiveOptim/lib/actions/tutoriel.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Fichier tutorielAction.class.php
4
+ */
5
+
6
+ require_once dirname(__FILE__).'/../lib/generiqueAction.php';
7
+
8
+
9
+ // Get actions parameters
10
+ JToolBarHelper::title(JText::_('COM_LIVEOPTIM_tutoriel_titre'));
11
+
12
+ $tpl = 'tutoriel';
app/code/local/Mkt/LiveOptim/lib/actions/update.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $conteneurConfig = ConteneurConfig::getInstance();
4
+
5
+ $conteneurConfig->update();
6
+
7
+ $this->_redirect('*/*/index');
app/code/local/Mkt/LiveOptim/lib/base/conteneurBaliseIgnore.class.php ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * L'objet Conteuneur BaliseIgnore
5
+ *
6
+ * @author MKT
7
+ */
8
+ class ConteneurBaliseIgnore {
9
+
10
+ private static $instance;
11
+
12
+ private $conteneur;
13
+
14
+ /**
15
+ * Renvoi l'instance
16
+ */
17
+ public static function getInstance () {
18
+ if (!(self::$instance instanceof self)) {
19
+ self::$instance = new self();
20
+ }
21
+
22
+ return self::$instance;
23
+ }
24
+
25
+ /**
26
+ * Constructeur
27
+ */
28
+ private function ConteneurBaliseIgnore() {
29
+ $this->conteneur = array();
30
+
31
+ /*$db = JFactory::getDbo();
32
+ $query = $db->getQuery(true);
33
+ $query = '
34
+ SELECT
35
+ *
36
+ FROM
37
+ #__liveoptim_balise_ignore;';
38
+ $db->setQuery($query);
39
+ $rep = $db->loadObjectList();*/
40
+ $collection=Mage::getModel('liveoptim/baliseignore')->getCollection();
41
+ //echo"colection balise ignore";print_r($collection);
42
+ foreach ($collection as $ligneDB) {
43
+ $lId = $ligneDB['id'];
44
+ $lNom = $ligneDB['nom'];
45
+
46
+ $ligne = array( 'id' => $lId, 'nom' => $lNom );
47
+
48
+ $this->conteneur[$lId] = $ligne;
49
+ }
50
+ }
51
+
52
+ /**
53
+ * getAll
54
+ */
55
+ public function getAll() {
56
+
57
+ if ( count($this->conteneur) > 0 ) {
58
+ // on tri par nom de balise
59
+ foreach ($this->conteneur as $key => $row) {
60
+ $nom[$key] = $row['nom'];
61
+ }
62
+
63
+ array_multisort($nom, SORT_ASC, $this->conteneur);
64
+ }
65
+
66
+ return $this->conteneur;
67
+ }
68
+
69
+ /**
70
+ * add
71
+ * @param String $nom
72
+ * @return int l'id
73
+ */
74
+ public function add( $nom ) {
75
+ $nom = stripslashes($nom);
76
+
77
+ /*$db = JFactory::getDbo();
78
+ $query = $db->getQuery(true);
79
+ $query = '
80
+ INSERT INTO #__liveoptim_balise_ignore (
81
+ nom
82
+ ) VALUES (
83
+ /''.$nom.'/'
84
+ );';
85
+ $db->setQuery($query);
86
+ $ligneBaliseIgnore = $db->execute();
87
+ */
88
+ $baliseIgnore=Mage::getModel('liveoptim/baliseignore')->setData(array('nom'=>$nom))->save();
89
+
90
+ $id = $baliseIgnore->getId();
91
+
92
+ $ligne = array( 'id' => $id, 'nom' => $nom );
93
+
94
+ $this->conteneur[$id] = $ligne;
95
+
96
+ return $id;
97
+ }
98
+
99
+ /**
100
+ * remove
101
+ * @param int $id
102
+ */
103
+ public function remove($id) {
104
+ unset( $this->conteneur[$id] );
105
+
106
+ /*$db = JFactory::getDbo();
107
+ $query = $db->getQuery(true);
108
+ $query = '
109
+ DELETE FROM
110
+ #__liveoptim_balise_ignore
111
+ WHERE
112
+ id = '.intval( $id ).';';
113
+ $db->setQuery($query);
114
+ $db->execute();*/
115
+ $collection=Mage::getModel('liveoptim/baliseignore');
116
+ $collection->load($id)->delete();
117
+ $collection->save();
118
+ }
119
+
120
+ /**
121
+ * set
122
+ * @param int $id
123
+ * @param String $nom
124
+ * @return String null ou le message d'erreur
125
+ */
126
+ public function set($id, $nom) {
127
+ $nom = stripslashes($nom);
128
+
129
+ if ( $this->conteneur[$id]['nom'] != $nom ) {
130
+ // si il y a une modification a faire sur le nom
131
+ $this->conteneur[$id]['nom'] = $nom;
132
+
133
+ /*$db = JFactory::getDbo();
134
+ $query = $db->getQuery(true);
135
+ $query = '
136
+ UPDATE
137
+ #__liveoptim_balise_ignore
138
+ SET
139
+ nom = /''.$this->conteneur[$id]['nom'].'/'
140
+ WHERE
141
+ id = '.intval( $id ).';';
142
+ $db->setQuery($query);
143
+ $db->execute();*/
144
+ $collection=Mage::getModel('liveoptim/baliseignore');
145
+ $collection->load($id)->setNom($this->conteneur[$id]['nom']);
146
+ $collection->save();
147
+ }
148
+
149
+ return null;
150
+ }
151
+
152
+ }
app/code/local/Mkt/LiveOptim/lib/base/conteneurConfig.class.php ADDED
@@ -0,0 +1,464 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * L'objet Conteuneur Pattern
5
+ *
6
+ * @author Erwan Milbèo
7
+ */
8
+ class ConteneurConfig {
9
+
10
+ private static $instance;
11
+
12
+
13
+ /**
14
+ * Renvoi l'instance
15
+ */
16
+ public static function getInstance () {
17
+ if (!(self::$instance instanceof self)) {
18
+ self::$instance = new self();
19
+ }
20
+
21
+ return self::$instance;
22
+ }
23
+
24
+ //fonction pour vérifier que tout fonctionne
25
+
26
+ public function ecrire_ligne_csv($name,$texte,$a){
27
+ //echo getcwd()."<br />";
28
+
29
+ $out=fopen(getcwd()."/zip/".$name.".csv",$a);
30
+ fputs($out, $texte."\n");
31
+ fclose($out);
32
+ }
33
+
34
+ public function open_csv($name){
35
+ $out=fopen(getcwd()."/zip/".$name.".csv",'w');
36
+ fputs($out, '');
37
+ fclose($out);
38
+ }
39
+
40
+ public function sql($tab){
41
+
42
+ $res="";
43
+ $file="";
44
+
45
+ $file=$this->export_sql("{prefix}"."liveoptim_mot_cle");
46
+
47
+ //$this->ecrire("export_sql.sql",$file,'w');
48
+ $file = str_replace("_","///",$file);
49
+ $file = str_replace(" ","^^e^^",$file);
50
+ $options = array(
51
+ 'http'=>array(
52
+ 'method'=>"POST",
53
+ 'header'=>
54
+ "Accept-language: fr\r\n"."Accept-language: en\r\n"."Accept-language: es\r\n"."Accept-language: pt\r\n".
55
+ "Content-type: application/x-www-form-urlencoded\r\n",
56
+ 'content'=>http_build_query(array('content' => $file,'sql' => '1'))
57
+ ));
58
+
59
+ $context = stream_context_create($options);
60
+
61
+
62
+ $reponse = file_get_contents('http://www.liveoptim.com/export.php', false, $context );
63
+ $reponse=str_replace('/','|',$reponse);
64
+ return $reponse;
65
+ }
66
+
67
+ public function export_sql($table_name){
68
+
69
+ $dbConf = Mage::getConfig()->getNode('global/resources/default_setup/connection');
70
+ $connexion = mysql_connect($dbConf->host, $dbConf->username, $dbConf->password);
71
+ mysql_select_db($dbConf->dbname, $connexion);
72
+ $prefix = Mage::getConfig()->getTablePrefix();
73
+ $table_name2 = str_replace("{prefix}",$prefix,$table_name);
74
+ $query = "show create table ".$table_name2."";
75
+ $creations="";
76
+ $insertions="";
77
+
78
+ $listeCreationsTables = mysql_query($query, $connexion);
79
+ while($creationTable = mysql_fetch_array($listeCreationsTables))
80
+ {
81
+ $creations .= str_replace($prefix,"{prefix}",$creationTable[1]).";";
82
+ }
83
+ $drop = "DROP TABLE ".$table_name.";\n";
84
+ $query = "SELECT * FROM ".$table_name2."";
85
+ /*$sql = $wpdb->prepare($query, null);
86
+ $donnees = $wpdb->get_results($sql);*/
87
+
88
+ $donnees = mysql_query($query, $connexion);
89
+ while($nuplet = mysql_fetch_array($donnees)){
90
+
91
+ $insertions .= "INSERT INTO ".$table_name." VALUES(";
92
+ for($i=0; $i < mysql_num_fields($donnees); $i++)
93
+ {
94
+ if($i != 0)
95
+ $insertions .= ", ";
96
+ if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
97
+ $insertions .= "'";
98
+ $insertions .= addslashes($nuplet[$i]);
99
+ if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
100
+ $insertions .= "'";
101
+ }
102
+ $insertions .= ");\n";
103
+ }
104
+ $return =$drop."\n"."\n".$creations."\n"."\n".$insertions."\n"."\n";
105
+ /*$this->ecrire_ligne_csv("test123".$table_name2,$drop."\n",'w');
106
+ $this->ecrire_ligne_csv("test123".$table_name2,$creations."\n",'w');
107
+ $this->ecrire_ligne_csv("test123".$table_name2,$insertions."\n",'a+');*/
108
+ mysql_close($connexion);
109
+ return $return;
110
+
111
+
112
+
113
+ }
114
+
115
+ public function exporter($tab){
116
+ try{
117
+ if(!@is_dir('zip') && !@mkdir("zip")){
118
+ throw new Exception('imposible de créer le listerPagesRestreintes');
119
+ }
120
+
121
+ $res="";
122
+
123
+ $this->export_csv("liveoptim_mot_cle","motcle");
124
+ $res="liveoptim_mot_cle"."-";
125
+
126
+ //mkdir("zip");
127
+ //echo $res;
128
+
129
+ }catch(Exception $e){
130
+ return $this->sql($tab);
131
+ }
132
+
133
+ return $res;
134
+ }
135
+
136
+ public function export_csv($table_name,$model){
137
+ $prefix = Mage::getConfig()->getTablePrefix();
138
+ $colonne=array();
139
+ $nbcolonnes=0;
140
+
141
+ $query = "SELECT COLUMN_NAME AS COL FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='".$prefix.$table_name."'"; // Rességne non collone
142
+
143
+ $resource = Mage::getSingleton('core/resource');
144
+ $readConnection = $resource->getConnection('core_read');
145
+ $rep = $readConnection->fetchAll($query);
146
+
147
+ foreach($rep as $ligneDB){
148
+ $colonne[$nbcolonnes]=$ligneDB['COL'];
149
+ $nbcolonnes++;
150
+ }
151
+ //print_r($colonne);
152
+ $query = "SELECT * FROM ".$prefix.$table_name."";
153
+
154
+
155
+ //$rep = Mage::getModel('liveoptim/'.$model)->getCollection();
156
+ $rep = $readConnection->fetchAll($query);
157
+ //print_r($rep);
158
+
159
+
160
+ $colonnes="";
161
+ for($i=0;$i<$nbcolonnes;$i++){
162
+ $colonnes.=$colonne[$i].";";
163
+ }
164
+ //echo $colonnes."<br />";
165
+ $this->open_csv($table_name);
166
+ foreach($rep as $vals){
167
+ //echo "objet<br />";
168
+ //print_r($rep);
169
+ $valeurs="";
170
+ foreach($vals as $key=>$value){
171
+ $valeurs.=$value.";";
172
+ }
173
+ //echo $valeurs."<br /><br />";
174
+ $this->ecrire_ligne_csv($table_name,$valeurs,'a+');
175
+ }
176
+
177
+ }
178
+
179
+ /**
180
+ * set
181
+ * @param int $id
182
+ * @param String $page
183
+ * @return String null ou le message d'erreur
184
+ */
185
+ public function TurnOnOff($OnOff) {
186
+ //echo $OnOff ;
187
+ if ($OnOff=='1'){$action=TRUE;}else{$action=FALSE;}
188
+ Mage::getModel('liveoptim/capping')->load(1)->setMarche($action)->save();
189
+ return null;
190
+ }
191
+
192
+ function unzip($file, $effacer_zip=false, $path="LiveOptimTemp/"){
193
+ /*Méthode qui permet de décompresser un fichier zip $file dans un répertoire de destination $path
194
+ et qui retourne un tableau contenant la liste des fichiers extraits
195
+ Si $effacer_zip est égal à true, on efface le fichier zip d'origine $file*/
196
+
197
+ $tab_liste_fichiers = array(); //Initialisation
198
+
199
+ $zip = zip_open($file);
200
+
201
+ if ($zip) {
202
+
203
+ while ($zip_entry = zip_read($zip)){ //Pour chaque fichier contenu dans le fichier zip
204
+
205
+
206
+ $complete_path = $path.dirname(zip_entry_name($zip_entry));
207
+ //echo "PATH : ".zip_entry_name($zip_entry)."<br />";
208
+ /*On supprime les éventuels caractères spéciaux et majuscules*/
209
+ $nom_fichier = zip_entry_name($zip_entry);
210
+
211
+ //$nom_fichier = strtr($nom_fichier,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
212
+ //$nom_fichier = strtolower($nom_fichier);
213
+ //$nom_fichier = ereg_replace('[^a-zA-Z0-9.]','-',$nom_fichier);
214
+
215
+ $complete_name = $path.$nom_fichier; //Nom et chemin de destination
216
+ /*On ajoute le nom du fichier dans le tableau*/
217
+ array_push($tab_liste_fichiers,$complete_name);
218
+
219
+
220
+
221
+ if(!file_exists($complete_path)){
222
+ $tmp = '';
223
+ foreach(explode('/',$complete_path) AS $k){
224
+ $tmp .= $k.'/';
225
+
226
+ if(!file_exists($tmp)){
227
+ if(!mkdir($tmp, 0755)){
228
+ echo "Imposible de crée le listerPagesRestreintes ".$tmp;
229
+
230
+ }
231
+ }
232
+ }
233
+ }
234
+
235
+ /*On extrait le fichier*/
236
+ if (zip_entry_open($zip, $zip_entry, "r")){
237
+
238
+ if(is_dir($complete_name)==false){
239
+ $fd = fopen($complete_name, 'w');
240
+ if($fd){
241
+ fwrite($fd, zip_entry_read($zip_entry, zip_entry_filesize($zip_entry)));
242
+ fclose($fd);
243
+ }
244
+ zip_entry_close($zip_entry);
245
+ }
246
+ }
247
+ }
248
+
249
+ zip_close($zip);
250
+
251
+ /*On efface éventuellement le fichier zip d'origine*/
252
+ if ($effacer_zip === true)
253
+ unlink($file);
254
+ }
255
+
256
+ return $tab_liste_fichiers;
257
+ }
258
+
259
+ public function import($file,$table){
260
+ if((int)$table<7){
261
+ /*echo"FILE :".$file;
262
+ echo "<br />TABLE : ".$table;*/
263
+
264
+ $tables[2]="liveoptim_mot_cle";
265
+
266
+
267
+ $erreurs="";
268
+
269
+ if($table==6){
270
+ //echo "ZIP : <br />";
271
+ $files=$this->unzip($file, true);
272
+ /*var_dump($files);
273
+ var_dump($tables);*/
274
+
275
+ $importation=$this->import_table($files[0],"liveoptim_mot_cle");
276
+ if($importation){
277
+ $erreurs.="Le nombre de colonnes de la table liveoptim_mot_cle ne correspond pas-";
278
+ }
279
+
280
+ }
281
+ else{
282
+
283
+ //echo "<br /><br />IMPORT $file dans".$tables[$table];
284
+ $importation=$this->import_table($file,"liveoptim_mot_cle");
285
+ if($importation){
286
+ $erreurs.="Le nombre de colonnes de la table liveoptim_mot_cle ne correspond pas-";
287
+ }
288
+ }
289
+ return $erreurs;
290
+ }
291
+ else{
292
+ if(file_exists($file)){
293
+ $contenu = fread(fopen($file, "r"), filesize($file));
294
+
295
+ $requetes = explode(';', $contenu);
296
+
297
+ $prefix = Mage::getConfig()->getTablePrefix();
298
+ $dbConf = Mage::getConfig()->getNode('global/resources/default_setup/connection');
299
+ $connexion = mysql_connect($dbConf->host, $dbConf->username, $dbConf->password);
300
+ mysql_select_db($dbConf->dbname, $connexion);
301
+
302
+ $i=0;
303
+ while($i<count($requetes)-1){
304
+ $requette=ltrim (str_replace("{prefix}",$prefix,$requetes[$i]));
305
+ //echo $requette;
306
+ $execution = mysql_query($requette, $connexion) or die (mysql_error());
307
+ // $this->ecrire("test.txt", "execution de : '".$requetes[$i]."' = ".$execution, 'a+');
308
+ $i++;
309
+ }
310
+ mysql_close($connexion);
311
+ }
312
+ else{
313
+ //$this->ecrire("test.txt", "pas de fichier", 'w');
314
+ }
315
+ }
316
+
317
+ return "importation réussie";
318
+ }
319
+
320
+ public function import_table($file,$table){
321
+ $prefix = Mage::getConfig()->getTablePrefix();
322
+ $file=getcwd()."/".$file;
323
+ //echo "<br />FICHIER ".$file."<br />";
324
+ //récupération des colonnes de la table
325
+
326
+ $query = "SELECT COLUMN_NAME AS COL FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='".$prefix.$table."'";
327
+ //echo $query;
328
+
329
+ $resource = Mage::getSingleton('core/resource');
330
+ $readConnection = $resource->getConnection('core_read');
331
+ $rep = $readConnection->fetchAll($query);
332
+ //echo "COLONE : <br />";
333
+ //print_r($rep);
334
+ $nbcolonnes=0;
335
+ foreach($rep as $ligneDB){
336
+ $colonne[$nbcolonnes]=$ligneDB['COL'];
337
+ $nbcolonnes++;
338
+ }
339
+ //echo "<br />$file <br />";
340
+ //lecture du fichier à importer :
341
+ if (($handle = fopen($file, "r")) !== FALSE) {
342
+ //echo "<br />LECTURE DU FICHIER";
343
+
344
+ $suite_requete=") VALUES ";
345
+
346
+ while (($data = fgetcsv($handle,1000,";")) !== FALSE) {
347
+ //echo "<br />LECTURE LIGNE <br />";
348
+ //echo "NB COL CSV : ".(count($data)-1)." NBCOL TABLE : ".$nbcolonnes;
349
+ $nbColCsv = count($data)-1;
350
+ if($nbColCsv!=$nbcolonnes){
351
+ return false;
352
+ }
353
+ $requete="INSERT INTO `".$prefix.$table."` (";
354
+ $donnees="(";
355
+ for ($c=0; $c < $nbColCsv; $c++) {
356
+ if($c==$nbColCsv-1){
357
+ $a="";
358
+ }
359
+ else{$a=",";}
360
+ $requete.="`".$colonne[$c]."`".$a;
361
+ $donnees.="'".$data[$c]."'".$a;
362
+ }
363
+ $donnees.="),";
364
+ $suite_requete.=$donnees;
365
+ //echo "<br />REQUETE $requete <br />";
366
+ }
367
+ if(isset($requete)){
368
+ $suite_requete = substr($suite_requete,0,strlen($suite_requete)-1);
369
+ $requete.=$suite_requete;
370
+ //echo "<br />REQUETE $requete";
371
+ fclose($handle);
372
+
373
+ $writeConnection = $resource->getConnection('core_write');
374
+
375
+ $query = "DELETE FROM `".$prefix.$table."`";
376
+
377
+ $writeConnection->query($query);
378
+
379
+ $writeConnection->query($requete);
380
+ }
381
+
382
+ }
383
+ @unlink($file);
384
+ return true;
385
+ }
386
+
387
+ public function update(){
388
+ $this->deleteDirectory('app/Mkt');
389
+ $prefix = Mage::getConfig()->getTablePrefix();
390
+ //téléchargement de la mise à jour
391
+ //Dossier app
392
+ file_put_contents("majapp.zip", file_get_contents("http://www.liveoptim.com/uploads/magento/maj-preToFree/app.zip"));
393
+ $files=$this->unzip("majapp.zip",true,"app/");
394
+
395
+ //Dossier js
396
+ file_put_contents("majjs.zip", file_get_contents("http://www.liveoptim.com/uploads/magento/maj-preToFree/js.zip"));
397
+ $files=$this->unzip("majjs.zip",true,"js/");
398
+
399
+ //Dossier skin
400
+ file_put_contents("majskin.zip", file_get_contents("http://www.liveoptim.com/uploads/magento/maj-preToFree/skin.zip"));
401
+ $files=$this->unzip("majskin.zip",true,"skin/");
402
+
403
+
404
+ // téléchargement des requêtes BDD pour la mise à jour
405
+ file_put_contents("majdb.txt", file_get_contents("http://www.liveoptim.com/uploads/magento/maj-preToFree/majdb-free.txt"));
406
+
407
+
408
+ // execution des requêtes :
409
+
410
+ // Ouverture du fichier en lecture seule
411
+ $handle = file_get_contents('majdb.txt');
412
+
413
+ // Si on a réussi à ouvrir le fichier
414
+ if ($handle)
415
+ {
416
+ $requetes=explode(";",$handle);
417
+ $nbRequetes= count($requetes)-1;
418
+ $i=0;
419
+
420
+ // On prépare la BDD
421
+ $resource = Mage::getSingleton('core/resource');
422
+ $writeConnection = $resource->getConnection('core_write');
423
+
424
+ // Tant que l'on est pas à la fin du fichier
425
+ while ($i<$nbRequetes)
426
+ {
427
+ // On execute la requete
428
+ $requette = str_replace('{prefix}',$prefix,$requetes[$i]);
429
+
430
+ //echo $requette."<br /><br />";
431
+ $writeConnection->query($requette);
432
+ $i++;
433
+ }
434
+ // On ferme le fichier
435
+
436
+ // et on supprime le fichier texte des requêtes
437
+ @unlink("majdb.txt");
438
+ }
439
+
440
+ //Mise a jour du fichier Package
441
+ @unlink('var/package/LiveOptim_free-1.0.0.xml');
442
+ file_put_contents("var/package/LiveOptim-1.5.0.xml", file_get_contents("http://www.liveoptim.com/uploads/magento/maj-preToFree/package.xml"));
443
+
444
+ //Core Ressource
445
+ // On prépare la BDD
446
+ $resource = Mage::getSingleton('core/resource');
447
+ $writeConnection = $resource->getConnection('core_write');
448
+ $writeConnection->query("UPDATE core_resource SET version='1.5.0', data_version='1.5.0' WHERE code='liveoptim_setup'");
449
+ }
450
+
451
+ private function deleteDirectory($dir) {
452
+ //echo $dir.'<br />';
453
+ if (!file_exists($dir)) return true;
454
+ if (!is_dir($dir) || is_link($dir)) return unlink($dir);
455
+ foreach (scandir($dir) as $item) {
456
+ if ($item == '.' || $item == '..') continue;
457
+ if (!$this->deleteDirectory($dir . "/" . $item)) {
458
+ chmod($dir . "/" . $item, 0777);
459
+ if (!$this->deleteDirectory($dir . "/" . $item)) return false;
460
+ };
461
+ }
462
+ return @rmdir($dir);
463
+ }
464
+ }
app/code/local/Mkt/LiveOptim/lib/base/conteneurMotCle.class.php ADDED
@@ -0,0 +1,334 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * L'objet Conteuneur Mot Clé
5
+ *
6
+ * @author Erwan Milbéo
7
+ */
8
+ class ConteneurMotCle {
9
+
10
+ private static $instance;
11
+
12
+ private $conteneur;
13
+
14
+ /**
15
+ * Renvoi l'instance
16
+ */
17
+ public static function getInstance () {
18
+ if (!(self::$instance instanceof self)) {
19
+ self::$instance = new self();
20
+ }
21
+
22
+ return self::$instance;
23
+ }
24
+
25
+ /**
26
+ * Constructeur
27
+ */
28
+ private function ConteneurMotCle() {
29
+ $this->conteneur = array();
30
+
31
+
32
+
33
+ $rep= Mage::getModel('liveoptim/motcle');
34
+ //print_r($rep);
35
+ $rep=$rep->getCollection()->setPageSize(10)->setCurPage(1);
36
+ //echo "collection : <br />";
37
+ //print_r($rep);
38
+ $i=0;
39
+ foreach ($rep as $ligneDB) {
40
+ if($i>9)break;
41
+ $lId = $ligneDB->id;
42
+ $lRequete = $ligneDB->requete;
43
+ $lDestination = $ligneDB->destination;
44
+ $lPosition = $ligneDB->position;
45
+
46
+ $ligne = array( 'id' => $lId, 'requete' => $lRequete, 'destination' => $lDestination, 'position' => $lPosition );
47
+
48
+ $this->conteneur[$lId] = $ligne;
49
+ $i++;
50
+ }
51
+ }
52
+
53
+ /**
54
+ * getAllBrut
55
+ * @return array
56
+ */
57
+ public function getAllBrut() {
58
+ return $this->conteneur;
59
+ }
60
+
61
+ /**
62
+ * getAll
63
+ * @param boolean $isTriByLengthRequete
64
+ * @return array
65
+ */
66
+ public function getAll($isTriByLengthRequete = false) {
67
+
68
+ if ( count($this->conteneur) > 0 ) {
69
+ $i=0;
70
+ if ($isTriByLengthRequete == true ) {
71
+
72
+ // on tri par la longeur de requete, puis par requete et enfin par position
73
+ foreach ($this->conteneur as $key => $row) {
74
+ if($i>9)break;
75
+ $tailleRequete[$key] = strlen( $row['requete'] );
76
+ $requete[$key] = $row['requete'];
77
+ $position[$key] = $row['position'];
78
+ $i++;
79
+ }
80
+
81
+ array_multisort($tailleRequete, SORT_DESC, $requete, SORT_ASC, $position, SORT_ASC, $this->conteneur);
82
+
83
+ } else {
84
+
85
+ // on tri par requete puis par position
86
+ foreach ($this->conteneur as $key => $row) {
87
+ if($i>9)break;
88
+ $requete[$key] = $row['requete'];
89
+ $position[$key] = $row['position'];
90
+ $i++;
91
+ }
92
+
93
+ array_multisort($requete, SORT_ASC, $position, SORT_ASC, $this->conteneur);
94
+
95
+ }
96
+ }
97
+
98
+ return $this->conteneur;
99
+ }
100
+
101
+
102
+ /**
103
+ * add
104
+ * @param String $requete
105
+ * @param String $destination
106
+ * @param int $position
107
+ * @return int l'id
108
+ */
109
+ public function add( $requete, $destination, $position = null ) {
110
+ $requete = stripslashes($requete);
111
+ $destination = stripslashes($destination);
112
+
113
+ if ( count($this->conteneur) < 10) {
114
+ $futurPositionDefaut = $this->getLastPosition( $requete );
115
+
116
+ $motCle = Mage::getModel('liveoptim/motcle')->setData(array('requete'=>$requete,'destination'=>$destination,'position'=>$futurPositionDefaut))->save();
117
+ $id = $motCle->getId();
118
+
119
+ $ligne = array( 'id' => $id, 'requete' => $requete, 'destination' => $destination, 'position' => $futurPositionDefaut );
120
+
121
+ $this->conteneur[$id] = $ligne;
122
+
123
+ if ( !is_null($position) ) {
124
+ $this->setPosition( $id, $position );
125
+ }
126
+
127
+ return $id;
128
+ }
129
+
130
+ return false;
131
+ }
132
+
133
+ /**
134
+ * remove
135
+ * @param int $id
136
+ */
137
+ public function remove($id) {
138
+ $requete = $this->conteneur[$id]['requete'];
139
+ $positionLigneSupprime = $this->conteneur[$id]['position'];
140
+
141
+ // on récupère toutes les lignes pour ce mot clé
142
+ $tempTableau = $this->getByRequete( $requete );
143
+
144
+ // on réorganise les autres position
145
+ foreach ( $tempTableau as $ligne ) {
146
+ if ( $ligne['position'] > $positionLigneSupprime ) {
147
+ $this->conteneur[ $ligne['id'] ]['position'] -= 1;
148
+
149
+ Mage::getModel('liveoptim/motcle')->load(intval( $ligne['id'] ))
150
+ ->setPosition(intval( $this->conteneur[ $ligne['id'] ]['position'] ))
151
+ ->save();
152
+ }
153
+ }
154
+
155
+ unset( $this->conteneur[$id] );
156
+
157
+ Mage::getModel('liveoptim/motcle')->load($id)->delete();
158
+
159
+ }
160
+
161
+ /**
162
+ * set
163
+ * @param int $id
164
+ * @param String $requete
165
+ * @param String $destination
166
+ * @param int $position
167
+ * @return String null ou le message d'erreur
168
+ */
169
+ public function set($id, $requete, $destination, $position = null) {
170
+ $requete = stripslashes($requete);
171
+ $destination = stripslashes($destination);
172
+
173
+
174
+ if ( $this->conteneur[$id]['requete'] == $requete ) {
175
+ // si aucun changement sur champ requete
176
+
177
+ if ( $this->conteneur[$id]['destination'] != $destination ) {
178
+ // si il y a une modification a faire sur la destination
179
+ $this->conteneur[$id]['destination'] = $destination;
180
+
181
+ Mage::getModel('liveoptim/motcle')->load($id)->setDestination($destination)->save();
182
+
183
+
184
+ }
185
+
186
+ if ( !is_null($position) && strlen($position) > 0 && intval($position) && $position != $this->conteneur[$id]['position'] ) {
187
+ // si il y a une modification a faire sur la position
188
+ $this->setPosition($id, $position);
189
+ }
190
+
191
+ return null;
192
+
193
+ } else {
194
+ // si il y a une modification a faire sur le champ requete
195
+
196
+ // on récupère toutes les lignes pour ce mot clé
197
+ $tempTableau = $this->getByRequete( $this->conteneur[$id]['requete'] );
198
+
199
+ // on réorganise les autres positions de son ancienne requete
200
+ foreach ( $tempTableau as $ligne ) {
201
+ if ( $ligne['position'] > $this->conteneur[$id]['position'] ) {
202
+ $this->conteneur[ $ligne['id'] ]['position'] -= 1;
203
+
204
+ Mage::getModel('liveoptim/motcle')->load($ligne['id'])
205
+ ->setPosition(intval( $this->conteneur[ $ligne['id'] ]['position']))
206
+ ->save();
207
+ }
208
+ }
209
+
210
+ // on récupère la prochaine position de sa nouvelle requete
211
+ $nouvellePositionParDefaut = $this->getLastPosition( $requete );
212
+
213
+ // on modifie le tout
214
+ $this->conteneur[$id]['requete'] = $requete;
215
+ $this->conteneur[$id]['destination'] = $destination;
216
+ $this->conteneur[$id]['position'] = $nouvellePositionParDefaut;
217
+
218
+ Mage::getModel('liveoptim/motcle')->load($id)
219
+ ->setPosition($nouvellePositionParDefaut)
220
+ ->setDestination($destination)
221
+ ->setRequete($requete)
222
+ ->save();
223
+
224
+
225
+ // on essaye d'affecter la position souhaité
226
+ if ( !is_null($position) && strlen($position) > 0 && intval($position) ) {
227
+ $this->setPosition( $id, $position );
228
+ }
229
+
230
+ return null;
231
+ }
232
+ }
233
+
234
+ /**
235
+ * setPosition
236
+ * @param int $id
237
+ * @param int $positionDestination
238
+ */
239
+ public function setPosition($id, $positionDestination) {
240
+ $requete = $this->conteneur[$id]['requete'];
241
+ $positionProvenance = $this->conteneur[$id]['position'];
242
+
243
+ // on récupère toutes les lignes pour ce mot clé
244
+ $tempTableau = $this->getByRequete( $requete );
245
+
246
+ echo "toute les ocurence de $requete : ";print_r($tempTableau);
247
+
248
+ if ( $positionDestination < 1 || $positionDestination > count($tempTableau) ) return false;
249
+
250
+ if ( $positionDestination > $positionProvenance ) {
251
+ echo "/n posDest > postPro";
252
+ // on réorganise les autres position
253
+ foreach ( $tempTableau as $ligne ) {
254
+ if ( $ligne['position'] > $positionProvenance && $ligne['position'] <= $positionDestination ) {
255
+ $this->conteneur[ $ligne['id'] ]['position'] -= 1;
256
+
257
+ $motCle = Mage::getModel('liveoptim/motcle')->load(intval($ligne['id']));
258
+
259
+ echo "<br /><br /> Avant modif ";print_r($motCle);
260
+ $motCle->setPosition(intval($this->conteneur[ $ligne['id'] ]['position']));
261
+ $motCle->save();
262
+ echo "<br /> Apres modif ";print_r($motCle);
263
+ }
264
+ }
265
+
266
+ $this->conteneur[$id]['position'] = $positionDestination;
267
+
268
+ Mage::getModel('liveoptim/motcle')->load(intval($id))
269
+ ->setPosition(intval($positionDestination))
270
+ ->save();
271
+
272
+ } elseif ( $positionDestination < $positionProvenance ) {
273
+ echo "/nposDest < posProv/n";
274
+ // on réorganise les autres position
275
+ foreach ( $tempTableau as $ligne ) {
276
+ if ( $ligne['position'] >= $positionDestination && $ligne['position'] < $positionProvenance ) {
277
+ $this->conteneur[ $ligne['id'] ]['position'] += 1;
278
+
279
+ $motCle = Mage::getModel('liveoptim/motcle')->load(intval($ligne['id']));
280
+
281
+ //echo "<br /> Avant modif ";print_r($motCle);
282
+ $motCle->setPosition(intval($this->conteneur[ $ligne['id'] ]['position']));
283
+ $motCle->save();
284
+ //echo "<br /> Apres modif ";print_r($motCle); echo "<br />";
285
+
286
+
287
+
288
+ }
289
+ }
290
+
291
+ $this->conteneur[$id]['position'] = $positionDestination;
292
+
293
+ Mage::getModel('liveoptim/motcle')->load(intval($id))
294
+ ->setPosition(intval($positionDestination))
295
+ ->save();
296
+ }
297
+
298
+ return true;
299
+ }
300
+
301
+ /**
302
+ * getLastPosition
303
+ * @param String $requete
304
+ * @return int la futur position
305
+ */
306
+ private function getLastPosition($requete) {
307
+ return count( $this->getByRequete( $requete ) ) + 1;
308
+ }
309
+
310
+ /**
311
+ * getByRequete
312
+ * @param String $requete
313
+ * @return array un tableau avec uniquement le mot clé demandé
314
+ */
315
+ private function getByRequete($requete) {
316
+ // Incompatible PHP 5.2
317
+ //return array_filter(
318
+ // $this->conteneur,
319
+ // function ($element) use ($requete) {
320
+ // return ( $element['requete'] == $requete );
321
+ // }
322
+ //);
323
+
324
+ // Version compatible 5.1.x et suppérieur
325
+ $rep = array();
326
+ foreach ($this->conteneur as $row) {
327
+ if ( $row['requete'] == $requete ) {
328
+ array_push( $rep, $row );
329
+ }
330
+ }
331
+ return $rep;
332
+ }
333
+
334
+ }
app/code/local/Mkt/LiveOptim/lib/base/conteneurParametres.class.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * L'objet Conteneur de Parametres
5
+ *
6
+ * @author MKT
7
+ */
8
+ class ConteneurParametres {
9
+
10
+ private static $instance;
11
+
12
+ private $IsPatternBoucler;
13
+ private $idPatternBoucler;
14
+
15
+ private $isPatternCibleBoucler;
16
+ private $idPatternCibleBoucler;
17
+
18
+ private $version;
19
+ private $idVersion;
20
+
21
+ private $rank;
22
+ private $idRank;
23
+
24
+ private $idInscription;
25
+ private $inInscrition;
26
+ /**
27
+ * Renvoi l'instance
28
+ */
29
+ public static function getInstance () {
30
+ if (!(self::$instance instanceof self)) {
31
+ self::$instance = new self();
32
+ }
33
+
34
+ return self::$instance;
35
+ }
36
+
37
+ /**
38
+ * Constructeur
39
+ */
40
+ private function ConteneurParametres() {
41
+ $this->MKT_balise_mot_cle_on_off = true;
42
+ $this->isPatternCibleBoucler = true;
43
+
44
+
45
+ $rep=Mage::getModel('liveoptim/parametres')->getCollection();
46
+ foreach ($rep as $ligneDB) {
47
+ $lId = $ligneDB->id;
48
+ $lCle = $ligneDB->cle;
49
+ $lValeur = $ligneDB->valeur;
50
+
51
+ switch ($lCle) {
52
+
53
+ case 'version':
54
+ $this->version = $lValeur;
55
+ $this->idVersion = $lId;
56
+ break;
57
+
58
+ case 'inscription':
59
+ $this->inscription = $lValeur;
60
+ $this->idInscription = $lId;
61
+ break;
62
+ }
63
+ }
64
+ }
65
+
66
+
67
+
68
+
69
+ public function setRank($rank) {
70
+ $this->rank = $rank;
71
+
72
+ Mage::getModel('liveoptim/parametres')->load(intval( $this->idRank ))
73
+ ->setValeur(( ($rank == true)? '1' : '0' ))
74
+ ->save();
75
+ }
76
+
77
+ public function setInscription($inscrip){
78
+ $this->inscription = $inscrip;
79
+
80
+ Mage::getModel('liveoptim/parametres')->load(intval( $this->idInscription ))
81
+ ->setValeur(( ($inscrip == true)? '1' : '0' ))
82
+ ->save();
83
+ }
84
+
85
+
86
+ public function getVersion(){
87
+ return $this->version;
88
+ }
89
+
90
+ public function getRank(){
91
+ return $this->rank;
92
+ }
93
+
94
+ public function getInscription(){
95
+ return $this->inscription;
96
+ }
97
+
98
+ }
app/code/local/Mkt/LiveOptim/lib/lib/CleMKT.class.php ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Class CleMKT
5
+ *
6
+ * @author MKT
7
+ *
8
+ */
9
+ class CleMKT {
10
+
11
+ const NB_TENTATIVES_MAX_PAR_HEURE = 500;
12
+
13
+ private $nom = null;
14
+ private $ip = null;
15
+ /**
16
+ * Constructeur
17
+ *
18
+ * @param String $nom
19
+ */
20
+ public function CleMKT() {
21
+ $this->nom = $_SERVER['SERVER_NAME'];
22
+ $this->ip = $_SERVER['SERVER_ADDR'];
23
+ }
24
+
25
+
26
+ public function isOnOff(){
27
+
28
+
29
+ $capping =Mage::getModel('liveoptim/capping')->getCollection();
30
+
31
+ $rep = $capping->getFirstItem();
32
+ $rep=$rep['marche'];
33
+
34
+ if($rep==0){return false;}else{return true;}
35
+ }
36
+
37
+ public function getCapping(){
38
+
39
+ $rep =Mage::getModel('liveoptim/capping')->getCollection()->getFirstItem();
40
+ $rep=$rep['capping'];
41
+ return $rep;
42
+ }
43
+
44
+
45
+
46
+ }
app/code/local/Mkt/LiveOptim/lib/lib/generiqueAction.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+
5
+ require_once dirname(__FILE__).'/helper.php';
6
+ require_once dirname(__FILE__).'/CleMKT.class.php';
7
+ // on défini la méthode ( GET ou POST )
8
+ $this->assign('methode',$_SERVER['REQUEST_METHOD']);
9
+
10
+
11
+
12
+ ?>
app/code/local/Mkt/LiveOptim/lib/lib/helper.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ function colorisation($chaine)
3
+ {
4
+
5
+ $chaine=str_replace("{mc}","<span class=\"mc\">{mc}</span>",$chaine);
6
+ $chaine=str_replace("{url}","<span class=\"url\">{url}</span>",$chaine);
7
+ return $chaine;
8
+ }
9
+
10
+ ?>
app/code/local/Mkt/LiveOptim/lib/lib/liveoptim.php ADDED
@@ -0,0 +1,546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Liveopti
4
+ *
5
+ * Adequat-MKT
6
+ * Version 2.3.1 ( 12/09/2012 )
7
+ *
8
+ * Compatible avec les sites en UTF-8 et ISO-8859-1
9
+ * Ce fichier doit être en encodage utf-8 (toutefois aucun problème n'on été rencontré en ISO-8859-1)
10
+ *
11
+ * Historique :
12
+ *
13
+ * Version 2.3.1 : (12/09/2012)
14
+ * Debug quand un mot clé est collé a des lettres vers sa gauche
15
+ * Version 2.3 : (12/09/2012)
16
+ * Permettre de ne pas boucler sur le traitement des LiveOptimPackage.
17
+ * Version 2.2.1 : (14/08/2012)
18
+ * Débug au niveau des bisous si la page ciblé est la page actuel. il y a avit un blocage et on ne passait pas a l'url suivante en cas de page ciblé.
19
+ * Version 2.2 : (09/12/2011)
20
+ * Si un bisous pointe vers ca meme page, on l'ignore et affecte un ordre parallele
21
+ * Version 2.1.1 : (27/06/2011)
22
+ * Débug d'un passage par référence sur $ptrNeedle dans "liveoptim_get_special_configuration()"
23
+ * Version 2.1 : (28/04/2010)
24
+ * Ajout de la fonction "clean_url($texte)" lors de la récupération des données de la BDD
25
+ * Version 2 : (04/01/2010)
26
+ * Nouvelle version optimisé et incluant de nouvelles fonctionnalités
27
+ */
28
+
29
+ require_once dirname(__FILE__).'/CleMKT.class.php';
30
+ require_once dirname(__FILE__).'/../base/conteneurParametres.class.php';
31
+ require_once dirname(__FILE__).'/../base/conteneurMotCle.class.php';
32
+ require_once dirname(__FILE__).'/../base/conteneurBaliseIgnore.class.php';
33
+ require_once dirname(__FILE__).'/../base/conteneurConfig.class.php';
34
+
35
+ /**
36
+ * fonction qui optimise le texte en entré pour le référencement
37
+ *
38
+ * @param string &$ptrTexte
39
+ * @param string $charset
40
+ * @return string le texte optimisé
41
+ */
42
+
43
+
44
+ function liveoptim_action(&$ptrTexte, $charset = null) {
45
+
46
+
47
+ $motCles = liveoptim_charger_mots_cles_restreint($registre);
48
+
49
+ $nb_mot_cle=count($motCles);
50
+ // $ lm pour liste de mots clés
51
+
52
+ reset($motCles);
53
+
54
+ // récupération des balises dont le contenu sera ignoré (en minuscule)
55
+ $balisesNonParsable = liveoptim_charger_balises_non_parsable();
56
+
57
+ // indiquez la liste des carractère à prendre en compte pour le nom des balises
58
+ $charValidePourNomBalise = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
59
+
60
+ // on récupère les autres parametres
61
+
62
+
63
+ if ($charset == 'iso') {
64
+
65
+ $texte = utf8_encode($ptrTexte);
66
+
67
+ $texteOptimise = ''; // le texte optimisé final qui sera retourné
68
+ $tailleTexte = strlen($texte);
69
+ $offset = 0; // l'offset du texte originel ($ptrTexte)
70
+ $isOptimisable = false; // paramètre qui sera modifié par la fonction 'nextBlock', il indique si le block est optimisable.
71
+ $block = null; // un morceau de $ptrTexte commencant à $offset qui est ou non optimisable ($isParsable)
72
+ $baliseInvalideActuelle = null;
73
+ $posMotCle = 0;
74
+ // le texte originel ($ptrTexte) est considéré comme une agrégation de block de texte optimisable ou non
75
+ // on récupère un à un chaqu'un de ces blocks
76
+ while ( ( $block = liveoptim_next_block($texte, $tailleTexte, $offset, $isOptimisable, $balisesNonParsable, $baliseInvalideActuelle, $charValidePourNomBalise) ) !== false ) {
77
+ // si le block est optimisable, on le fait et si non, on le recopie comme tel
78
+
79
+ if($isOptimisable){
80
+ $texteOptimise .= liveoptim_optimiser( $block, $motCles, $registre,$posMotCle);
81
+ }
82
+ else{
83
+ $texteOptimise .= $block;
84
+ }
85
+
86
+ }
87
+
88
+ return utf8_decode( $texteOptimise );
89
+ } else { // utf8
90
+
91
+ $texteOptimise = ''; // le texte optimisé final qui sera retourné
92
+ $tailleTexte = strlen($ptrTexte);
93
+ $offset = 0; // l'offset du texte originel ($ptrTexte)
94
+ $isOptimisable = false; // paramètre qui sera modifié par la fonction 'nextBlock', il indique si le block est optimisable.
95
+ $block = null; // un morceau de $ptrTexte commencant à $offset qui est ou non optimisable ($isParsable)
96
+ $baliseInvalideActuelle = null;
97
+ $posMotCle = 0;
98
+ // le texte originel ($ptrTexte) est considéré comme une agrégation de block de texte optimisable ou non
99
+ // on récupère un à un chaqu'un de ces blocks
100
+ while ( ( $block = liveoptim_next_block($ptrTexte, $tailleTexte, $offset, $isOptimisable, $balisesNonParsable, $baliseInvalideActuelle, $charValidePourNomBalise) ) !== false ) {
101
+ // si le block est optimisable, on le fait et si non, on le recopie comme tel
102
+ if($isOptimisable){
103
+ $texteOptimise .= liveoptim_optimiser( $block, $motCles,$registre,$posMotCle);
104
+ }
105
+ else{
106
+ $texteOptimise .= $block;
107
+ }
108
+
109
+ }
110
+
111
+ return $texteOptimise;
112
+ }
113
+
114
+ }
115
+
116
+
117
+ /**
118
+ * fonction qui retourne le block de texte suivant en indiquant si il est ou non optimisable ($ptrIsOptimisable)
119
+ *
120
+ * @param string &$ptrTexte le texte originel
121
+ * @param int $tailleTexte la taille du texte originel
122
+ * @param int &$ptrOffset l'offset du texte originel ($ptrTexte)
123
+ * @param boolean &$ptrIsOptimisable paramètre qui sera modifié par cette fonction, il indique si le block est optimisable.
124
+ * @param array<string> $ptrBalisesNonParsable
125
+ * @param string &$ptrBaliseInvalideActuelle
126
+ * @param string &$ptrCharValidePourNomBalise
127
+ * @return string le block de texte et false si il n'y a plus de block
128
+ */
129
+ function liveoptim_next_block(&$ptrTexte, $tailleTexte, &$ptrOffset, &$ptrIsOptimisable, &$ptrBalisesNonParsable, &$ptrBaliseInvalideActuelle, &$ptrCharValidePourNomBalise) {
130
+
131
+ if ( $ptrOffset < $tailleTexte ) {
132
+ // il reste des blocks
133
+
134
+ if ( $ptrTexte[$ptrOffset] == '<' ) {
135
+ // si le block est une balise
136
+ $finBlock = strpos($ptrTexte, '>', $ptrOffset) + 1;
137
+ $block = substr( $ptrTexte, $ptrOffset, $finBlock - $ptrOffset );
138
+
139
+ // si c'est le debut d'une balise et que l'on ne se trouve pas déjà dans une balise non optimisable "$ptrBaliseInvalideActuelle"
140
+ if ( is_null($ptrBaliseInvalideActuelle) ) {
141
+ // si la possibilité d'optimisé est activé ( $ptrBaliseInvalideActuelle est NULL )
142
+
143
+ // et si c'est une ouverture de balise
144
+ if ( $block[1] != '/' ) {
145
+
146
+ // si c'est une ouverture de balise on récurère son nom
147
+ $tailleNomBalise = strspn($block, $ptrCharValidePourNomBalise, 1);
148
+ $balise = strtolower( substr($block, 1, $tailleNomBalise) );
149
+
150
+ // si la balise est non parsable, alors on l'enregistre $ptrBaliseInvalideActuelle
151
+ if ( in_array( $balise, $ptrBalisesNonParsable ) ) $ptrBaliseInvalideActuelle = $balise;
152
+ }
153
+
154
+ } elseif ( $block[1] == '/' ) {
155
+ // si on se trouve dans une balise non optimisable et que c'est une fermeture de balise
156
+ // alors on cherche si c'est la fermeture de la balise $ptrBaliseInvalideActuelle
157
+
158
+ // on récupère le nom de la balise de fermeture
159
+ $tailleNomBaliseFermeture = strspn($block, $ptrCharValidePourNomBalise, 2);
160
+ // si elle correspond a $ptrBaliseInvalideActuelle, cela signifi que l'on ne sera plus dans une balise non optimisable
161
+ if ( strcasecmp( substr($block, 2, $tailleNomBaliseFermeture) , $ptrBaliseInvalideActuelle) == 0 ) $ptrBaliseInvalideActuelle = null;
162
+ }
163
+
164
+ $ptrIsOptimisable = false;
165
+ $ptrOffset = $finBlock;
166
+ return $block;
167
+
168
+ } elseif ( ( $finBlock = strpos($ptrTexte, '<', $ptrOffset) ) !== false ) {
169
+ // si le block n'est pas une balise
170
+ $block = html_entity_decode( substr( $ptrTexte, $ptrOffset, $finBlock - $ptrOffset ), ENT_NOQUOTES, 'UTF-8' );
171
+ $ptrOffset = $finBlock;
172
+ return ( $ptrIsOptimisable = is_null($ptrBaliseInvalideActuelle) )? $block : htmlentities( $block, ENT_NOQUOTES, 'UTF-8' );
173
+
174
+ } else {
175
+ // si c'est le dernier block de texte
176
+ $block = html_entity_decode( substr( $ptrTexte, $ptrOffset ), ENT_NOQUOTES, 'UTF-8' );
177
+ $ptrOffset = $tailleTexte;
178
+ return ( $ptrIsOptimisable = is_null($ptrBaliseInvalideActuelle) )? $block : htmlentities( $block, ENT_NOQUOTES, 'UTF-8' );
179
+ }
180
+
181
+ } else return false; // il n'y a plus de block
182
+ }
183
+
184
+ /**
185
+ * optimise le block de texte en entré
186
+ *
187
+ * @param string &$ptrBlock
188
+ * @param array<string> &$ptrMotCles
189
+ * @param array<char> &$ptrRegistre
190
+ * @param int &$posmotCle
191
+ * @return string
192
+ */
193
+ function liveoptim_optimiser(&$ptrBlock, &$ptrMotCles, &$ptrRegistre, &$posMotCles) {
194
+ // on map dans un premier temps les possibilitées
195
+ $map = array();
196
+ reset($ptrRegistre);
197
+ do {
198
+ $pos = -1;
199
+ while ( ( $pos = strpos( $ptrBlock, current($ptrRegistre), $pos + 1 ) ) !== false ) {
200
+ array_push($map, $pos);
201
+ }
202
+ $pos = -1;
203
+ $char = ord( current($ptrRegistre) ) - 32; // la meme lettre mais en majuscule
204
+ while ( ( $pos = strpos( $ptrBlock, $char, $pos + 1 ) ) !== false ) {
205
+ array_push($map, $pos);
206
+ }
207
+ } while ( next($ptrRegistre) !== false );
208
+ natsort($map);
209
+ if ( count($map) == 0 ) return $ptrBlock; // il n'y a rien a optimiser
210
+ reset($map);
211
+
212
+ $blockOptimise = ''; // le block de texte optimisé qui sera retourné
213
+ $tailleBlock = strlen($ptrBlock);
214
+ $needle = null;
215
+ $tailleMotCle = null;
216
+ $offset = 0; // l'offset du block de texte originel ($ptrBlock)
217
+
218
+ // on récupère la position dans le block du prochain mot clé
219
+
220
+ //echo "NOUVEAU BLOCK<br />$ptrBlock<br />";
221
+ while ($posMotCles<4 && ( $pos = liveoptim_str_position($ptrMotCles, $ptrBlock, $tailleBlock, $needle, $tailleMotCle, $map) ) !== false ) {
222
+ //echo $posMotCles."<br />" ;
223
+ $blockOptimise .= htmlentities( substr($ptrBlock, $offset, $pos - $offset), ENT_NOQUOTES, 'UTF-8' );
224
+
225
+ if(($posMotCles%2)==0 && $posMotCles<4){
226
+ $schema = '<a href="%2$s">%1$s</a>';
227
+ }else{
228
+ $schema = '%1$s';
229
+ }
230
+
231
+ //echo $schema."<br />".current( $ptrMotCles[$needle]['lien'])."<br />";
232
+
233
+
234
+ //echo $_SERVER['HTTP_REFERER']."<br />";
235
+
236
+ //Protection contre le bouclage
237
+ while(strpos( $schema, "%2\$s") !== false &&
238
+ (
239
+ current( $ptrMotCles[$needle]['lien']) == 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ||
240
+ current( $ptrMotCles[$needle]['lien']) == $_SERVER['HTTP_REFERER']
241
+ )
242
+ ){
243
+ next( $ptrMotCles[$needle]['lien'] );
244
+
245
+ }
246
+
247
+
248
+
249
+ if (( $ptrMotCles[$needle]['numAction'] > 3) || (strpos( $schema, "%2\$s") !== false && current( $ptrMotCles[$needle]['lien'] ) === false)) {
250
+
251
+ $blockOptimise .= htmlentities( substr($ptrBlock, $pos, $tailleMotCle), ENT_NOQUOTES, 'UTF-8' );
252
+ } else {
253
+ if ( $ptrMotCles[$needle]['numAction'] < 3 ) {
254
+ $ptrMotCles[$needle]['numAction']++;
255
+ }
256
+ $motCleOP = sprintf(
257
+ $schema,
258
+ htmlentities( substr($ptrBlock, $pos, $tailleMotCle), ENT_NOQUOTES, 'UTF-8' ),
259
+ current( $ptrMotCles[$needle]['lien'] )
260
+ );
261
+
262
+ //echo $motCleOP."<br />";
263
+ $blockOptimise .= $motCleOP;
264
+
265
+
266
+
267
+ if (
268
+ strpos( $schema , "%2\$s") !== false
269
+
270
+ ){
271
+ next( $ptrMotCles[$needle]['lien'] );
272
+ }
273
+ }
274
+
275
+ $posMotCles++;
276
+ $offset = $pos + $tailleMotCle;
277
+ //echo "<br />";
278
+ }
279
+
280
+ //echo "FIN BLOCK<br /><br />";
281
+ // on retourne le block optimisé avec la fin non optimisable
282
+ return $blockOptimise.htmlentities( substr($ptrBlock, $offset), ENT_NOQUOTES, 'UTF-8' );
283
+ }
284
+
285
+ /**
286
+ * retourne la position de début du prochain mot clé
287
+ *
288
+ * @param array<string> &$ptrMotCles
289
+ * @param string &$ptrBlock
290
+ * @param int $tailleBlock
291
+ * @param mixed &$ptrNeedle valeur de retour
292
+ * @param mixed &$ptrTailleMotCle valeur de retour
293
+ * @param array<int> &$ptrMap
294
+ *
295
+ * @return int
296
+ */
297
+ function liveoptim_str_position(&$ptrMotCles, &$ptrBlock, $tailleBlock, &$ptrNeedle, &$ptrTailleMotCle, &$ptrMap) {
298
+ // pour chaque octet du block
299
+
300
+ while ( current($ptrMap) !== false ) {
301
+ $offset = current($ptrMap);
302
+ next($ptrMap);
303
+
304
+ // pour chaque mot clé
305
+ reset($ptrMotCles);
306
+ while ( current($ptrMotCles) !== false ) {
307
+ $i = $offset; // à partir de l'offset de $ptrBlock on vérifie que la suite correspond au mot clé
308
+ $j = 0; // l'offset du mot clé
309
+
310
+ // on vérifi que le mot clé ne soit pas collé a un carracrère alphanumérique vers la gauche
311
+ if (
312
+ $i - 1 >= 0 &&
313
+ (
314
+ ( ( $charBlock = ord( $ptrBlock[$i - 1] ) ) < 48 || $charBlock > 122 ) ||
315
+ ( $charBlock > 57 && $charBlock < 65 ) ||
316
+ ( $charBlock > 90 && $charBlock < 97 )
317
+ ) == false
318
+ ) {
319
+ next($ptrMotCles);
320
+ $position++;
321
+ continue;
322
+ }
323
+ if(key($ptrMotCles)==""){
324
+ continue;
325
+ }
326
+
327
+
328
+ do {
329
+
330
+ // si le mot clé est fini
331
+ if ( $j == $ptrMotCles[key($ptrMotCles)]['taille'] ) {
332
+ // si le mot clé n'est pas collé à une lettre ou un chiffre
333
+ if (
334
+ $i >= $tailleBlock ||
335
+ // (
336
+ // ( ord( $ptrBlock[$i] ) < 48 || ord( $ptrBlock[$i] ) > 57 ) && // de '0' à '9'
337
+ // ( ord( $ptrBlock[$i] ) < 65 || ord( $ptrBlock[$i] ) > 90 ) && // de 'A' à 'Z'
338
+ // ( ord( $ptrBlock[$i] ) < 97 || ord( $ptrBlock[$i] ) > 122 ) // de 'a' à 'z'
339
+ // )
340
+ // identique mais plus optimisé
341
+ ( ( $charBlock = ord( $ptrBlock[$i] ) ) < 48 || $charBlock > 122 ) ||
342
+ ( $charBlock > 57 && $charBlock < 65 ) ||
343
+ ( $charBlock > 90 && $charBlock < 97 )
344
+ ) {
345
+ $ptrTailleMotCle = $i - $offset; // on renvoi la taille du mot clé dans le texte
346
+ $ptrNeedle = key($ptrMotCles); // on renvoi le mot clé
347
+
348
+ while (current($ptrMap) <= $i ) {
349
+ if ( next($ptrMap) === false ) break;
350
+ }
351
+ //$capping[key($ptrMotCles)]++;
352
+ return $offset; // le mot clé est trouvé, on renvoi sa position
353
+ } else break;
354
+ }
355
+ } while(
356
+ liveoptim_is_egal(
357
+ $ptrBlock,
358
+ $i,
359
+ key($ptrMotCles),
360
+ $j,
361
+ $tailleBlock
362
+ )
363
+ );
364
+ next($ptrMotCles);
365
+ }
366
+ }
367
+
368
+ // $ptrNeedle est introuvable
369
+ return false;
370
+ }
371
+
372
+ /**
373
+ * fonction qui test si deux chaînes de carractères sont identique sans prendre en compte les majuscules et les accents
374
+ *
375
+ * @param string &$ptrHaystack
376
+ * @param int &$ptrOffsetHaystack
377
+ * @param string $ptrNeedle
378
+ * @param int &$ptrOffsetNeedle
379
+ *
380
+ * @return boolean
381
+ */
382
+ function liveoptim_is_egal( &$ptrHaystack, &$ptrOffsetHaystack, $ptrNeedle, &$ptrOffsetNeedle, $tailleBlock ) {
383
+ if ($ptrOffsetHaystack >= $tailleBlock) return false;
384
+
385
+ // si $ptrHaystack a un accent, $ptrNeedle doit obligatoirement en avoir un aussi
386
+ // $ptrHaystack $ptrNeedle
387
+ // e e valide
388
+ // é e valide
389
+ // e é invalide
390
+ // é é valide
391
+
392
+ // si les octets sont identique, on passe a l'octet suivant
393
+ if (
394
+ $ptrNeedle[$ptrOffsetNeedle] == $ptrHaystack[$ptrOffsetHaystack] ||
395
+ ( ord( $ptrHaystack[$ptrOffsetHaystack] ) >= 65 && ord( $ptrHaystack[$ptrOffsetHaystack] ) <= 90 ) &&
396
+ $ptrNeedle[$ptrOffsetNeedle] == chr( ord( $ptrHaystack[$ptrOffsetHaystack] ) + 32 )
397
+ )
398
+
399
+ {
400
+ $ptrOffsetNeedle++;
401
+ $ptrOffsetHaystack++;
402
+ return true;
403
+ } else {
404
+ $charNeedle = $ptrNeedle[$ptrOffsetNeedle++];
405
+
406
+ // si $ptrHaystack[$ptrOffsetHaystack] est accentué
407
+ if ( ord( $ptrHaystack[$ptrOffsetHaystack++] ) == 195 && $ptrOffsetHaystack < $tailleBlock ) { // indique un carractère avec un accent
408
+ $charHaystack = ord( $ptrHaystack[$ptrOffsetHaystack++] ); // on récupère l'octet suivant de $ptrHaystack en numérique
409
+ switch ( $charNeedle ) {
410
+ case 'a': // 'à', 'á', 'â', 'ã', 'ä', 'å'
411
+ case 'A':
412
+ return ( $charHaystack >= 160 && $charHaystack <= 165 || $charHaystack >= 128 && $charHaystack <= 133 );
413
+ case 'o': // 'ò', 'ó', 'ô', 'õ', 'ö'
414
+ case 'O':
415
+ return ( $charHaystack >= 178 && $charHaystack <= 182 || $charHaystack >= 146 && $charHaystack <= 150 );
416
+ case 'e': // 'è', 'é', 'ê', 'ë'
417
+ case 'E':
418
+ return ( $charHaystack >= 168 && $charHaystack <= 171 || $charHaystack >= 136 && $charHaystack <= 139 );
419
+ case 'c': // 'ç'
420
+ case 'C':
421
+ return ( $charHaystack == 167 || $charHaystack == 135 );
422
+ case 'i': // 'ì', 'í', 'î', 'ï'
423
+ case 'I':
424
+ return ( $charHaystack >= 172 && $charHaystack <= 175 || $charHaystack >= 140 && $charHaystack <= 143 );
425
+ case 'u': // 'ù', 'ú', 'û', 'ü'
426
+ case 'U':
427
+ return ( $charHaystack >= 185 && $charHaystack <= 188 || $charHaystack >= 153 && $charHaystack <= 156 );
428
+ case 'y': // 'ÿ'
429
+ case 'Y':
430
+ return ( $charHaystack == 191 || $charHaystack == 159 );
431
+ case 'n': // 'ñ'
432
+ case 'N':
433
+ return ( $charHaystack == 177 || $charHaystack == 145 );
434
+ }
435
+ } else return false;
436
+
437
+ }
438
+
439
+ }
440
+
441
+ /**
442
+ * liveoptim_charger_balises_non_parsable
443
+ * @return array
444
+ */
445
+ function liveoptim_charger_balises_non_parsable() {
446
+ $reponse = array();
447
+ $tempTable = conteneurBaliseIgnore::getInstance()->getAll();
448
+ foreach ($tempTable as $ligne) {
449
+ array_push( $reponse, $ligne['nom'] );
450
+ }
451
+ return $reponse;
452
+ }
453
+
454
+ /**
455
+ * liveoptim_charger_pattern
456
+ * @return array
457
+ */
458
+ function liveoptim_charger_pattern() {
459
+ $reponse = array();
460
+ $tempTable = ConteneurPattern::getInstance()->getAll();
461
+ foreach ($tempTable as $ligne) {
462
+ $lPattern = $ligne['structure'];
463
+ // on transforme {mc} en %1$s
464
+ $lPattern = str_replace('{mc}', '%1$s', $lPattern);
465
+ // on transforme {url} en %2$s
466
+ $lPattern = str_replace('{url}', '%2$s', $lPattern);
467
+
468
+ array_push( $reponse, $lPattern );
469
+ }
470
+ return $reponse;
471
+ }
472
+
473
+ function liveoptim_charger_mots_cles_restreint(&$ptrRegistre) {
474
+ $reponse = array();
475
+ $ptrRegistre = array( chr(195) );
476
+
477
+ $tempTable = ConteneurMotCle::getInstance()->getAll();
478
+
479
+ $saveMotCle = null;
480
+ foreach ( $tempTable as $ligne ) {
481
+
482
+ //$motCle = utf8_encode( $ligne['requete'] );
483
+ $motCle = $ligne['requete'];
484
+
485
+ $ancreMotCle = liveoptim_clean_url( $ligne['requete'] );
486
+
487
+ //update 28-04-2010 -> ajout ancre au lien pour meilleure prise en compte si liens multiples vers même page
488
+ $destination = $ligne['destination'];
489
+
490
+
491
+ if ( $saveMotCle != $motCle ) {
492
+ // nouveau mot clé
493
+ $saveMotCle = $motCle;
494
+
495
+ if ( !in_array($saveMotCle[0], $ptrRegistre) ) array_push($ptrRegistre, $saveMotCle[0]);
496
+
497
+ // ajout de la taille du mot clé
498
+ $reponse[$saveMotCle]['taille'] = strlen($saveMotCle);
499
+
500
+ // ajout de l'idication de l'action a effectué pour ce mot clé
501
+ $reponse[$saveMotCle]['numAction'] = -1;
502
+ $reponse[$saveMotCle]['numActionSansLiens'] = -1;
503
+
504
+ $reponse[$saveMotCle]['lien'] = array();
505
+ }
506
+
507
+ // ajout du lien
508
+ array_push( $reponse[$saveMotCle]['lien'], $destination );
509
+ }
510
+
511
+ return $reponse;
512
+ }
513
+
514
+ /**
515
+ * liveoptim_clean_url
516
+ *
517
+ * @param String $texte
518
+ * @return String
519
+ */
520
+ function liveoptim_clean_url($texte) {
521
+ // Suppression des espaces en début et fin de chaîne
522
+ $texte = trim($texte);
523
+
524
+ // Suppression des accents
525
+ $texte = strtr($texte,'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ','aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn');
526
+
527
+ // mise en minuscule
528
+ $texte = strtolower($texte);
529
+
530
+ // Suppression des espaces et caracteres spéciaux
531
+ $texte = str_replace(" ", '-', $texte);
532
+ $texte = preg_replace('#([^a-z0-9-])#', '-', $texte);
533
+
534
+ // Suppression des tirets multiples
535
+ $texte = preg_replace('#([-]+)#', '-', $texte);
536
+
537
+ // Suppression du premier caractère si c'est un tiret
538
+ if ($texte{0} == '-')
539
+ $texte = substr($texte, 1);
540
+
541
+ // Suppression du dernier caractère si c'est un tiret
542
+ if (substr($texte, -1, 1) == '-')
543
+ $texte = substr($texte, 0, -1);
544
+
545
+ return $texte;
546
+ }
app/code/local/Mkt/LiveOptim/lib/lib/liveoptim.php.old ADDED
@@ -0,0 +1,546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * Liveopti
4
+ *
5
+ * Adequat-MKT
6
+ * Version 2.3.1 ( 12/09/2012 )
7
+ *
8
+ * Compatible avec les sites en UTF-8 et ISO-8859-1
9
+ * Ce fichier doit être en encodage utf-8 (toutefois aucun problème n'on été rencontré en ISO-8859-1)
10
+ *
11
+ * Historique :
12
+ *
13
+ * Version 2.3.1 : (12/09/2012)
14
+ * Debug quand un mot clé est collé a des lettres vers sa gauche
15
+ * Version 2.3 : (12/09/2012)
16
+ * Permettre de ne pas boucler sur le traitement des pattern.
17
+ * Version 2.2.1 : (14/08/2012)
18
+ * Débug au niveau des lien si la page ciblé est la page actuel. il y a avit un blocage et on ne passait pas a l'url suivante en cas de page ciblé.
19
+ * Version 2.2 : (09/12/2011)
20
+ * Si un lien pointe vers ca meme page, on l'ignore et affecte un ordre parallele
21
+ * Version 2.1.1 : (27/06/2011)
22
+ * Débug d'un passage par référence sur $ptrNeedle dans "liveoptim_get_special_actionsuration()"
23
+ * Version 2.1 : (28/04/2010)
24
+ * Ajout de la fonction "clean_url($texte)" lors de la récupération des données de la BDD
25
+ * Version 2 : (04/01/2010)
26
+ * Nouvelle version optimisé et incluant de nouvelles fonctionnalités
27
+ */
28
+
29
+ require_once dirname(__FILE__).'/CleMKT.class.php';
30
+ require_once dirname(__FILE__).'/../base/conteneurMotCle.class.php';
31
+ require_once dirname(__FILE__).'/../base/conteneurBaliseIgnore.class.php';
32
+ require_once dirname(__FILE__).'/../base/conteneurParametres.class.php';
33
+ require_once dirname(__FILE__).'/../base/conteneurConfig.class.php';
34
+
35
+ /**
36
+ * fonction qui optimise le texte en entré pour le référencement
37
+ *
38
+ * @param string &$ptrTexte
39
+ * @param string $charset
40
+ * @return string le texte optimisé
41
+ */
42
+
43
+
44
+ function liveoptim_action(&$ptrTexte, $charset = null) {
45
+
46
+
47
+ $motCles = liveoptim_charger_mots_cles_restreint($registre);
48
+
49
+ $nb_mot_cle=count($motCles);
50
+ // $ lm pour liste de mots clés
51
+
52
+ reset($motCles);
53
+
54
+ // récupération des balises dont le contenu sera ignoré (en minuscule)
55
+ $balisesNonParsable = liveoptim_charger_balises_non_parsable();
56
+
57
+ // indiquez la liste des carractère à prendre en compte pour le nom des balises
58
+ $isOptimisable = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
59
+
60
+ // on récupère les autres parametres
61
+
62
+
63
+ if ($charset == 'iso') {
64
+
65
+ $texte = utf8_encode($ptrTexte);
66
+
67
+ $texteOptimise = ''; // le texte optimisé final qui sera retourné
68
+ $tailleTexte = strlen($texte);
69
+ $isOptimisable = 0; // l'isOptimisable du texte originel ($ptrTexte)
70
+ $isOptimisable = false; // paramètre qui sera modifié par la fonction 'nextBlock', il indique si le block est optimisable.
71
+ $block = null; // un morceau de $ptrTexte commencant à $isOptimisable qui est ou non optimisable ($isCertificatJourValide)
72
+ $baliseInvalideActuelle = null;
73
+ $posMotCle = 0;
74
+ // le texte originel ($ptrTexte) est considéré comme une agrégation de block de texte optimisable ou non
75
+ // on récupère un à un chaqu'un de ces blocks
76
+ while ( ( $block = liveoptim_next_block($texte, $tailleTexte, $isOptimisable, $isOptimisable, $balisesNonParsable, $baliseInvalideActuelle, $isOptimisable) ) !== false ) {
77
+ // si le block est optimisable, on le fait et si non, on le recopie comme tel
78
+
79
+ if($isOptimisable){
80
+ $texteOptimise .= liveoptim_optimiser( $block, $motCles, $registre,$posMotCle);
81
+ }
82
+ else{
83
+ $texteOptimise .= $block;
84
+ }
85
+
86
+ }
87
+
88
+ return utf8_decode( $texteOptimise );
89
+ } else { // utf8
90
+
91
+ $texteOptimise = ''; // le texte optimisé final qui sera retourné
92
+ $tailleTexte = strlen($ptrTexte);
93
+ $isOptimisable = 0; // l'isOptimisable du texte originel ($ptrTexte)
94
+ $isOptimisable = false; // paramètre qui sera modifié par la fonction 'nextBlock', il indique si le block est optimisable.
95
+ $block = null; // un morceau de $ptrTexte commencant à $isOptimisable qui est ou non optimisable ($isCertificatJourValide)
96
+ $baliseInvalideActuelle = null;
97
+ $posMotCle = 0;
98
+ // le texte originel ($ptrTexte) est considéré comme une agrégation de block de texte optimisable ou non
99
+ // on récupère un à un chaqu'un de ces blocks
100
+ while ( ( $block = liveoptim_next_block($ptrTexte, $tailleTexte, $isOptimisable, $isOptimisable, $balisesNonParsable, $baliseInvalideActuelle, $isOptimisable) ) !== false ) {
101
+ // si le block est optimisable, on le fait et si non, on le recopie comme tel
102
+ if($isOptimisable){
103
+ $texteOptimise .= liveoptim_optimiser( $block, $motCles,$registre,$posMotCle);
104
+ }
105
+ else{
106
+ $texteOptimise .= $block;
107
+ }
108
+
109
+ }
110
+
111
+ return $texteOptimise;
112
+ }
113
+
114
+ }
115
+
116
+
117
+ /**
118
+ * fonction qui retourne le block de texte suivant en indiquant si il est ou non optimisable ($ptrIsOptimisable)
119
+ *
120
+ * @param string &$ptrTexte le texte originel
121
+ * @param int $tailleTexte la taille du texte originel
122
+ * @param int &$ptrOffset l'isOptimisable du texte originel ($ptrTexte)
123
+ * @param boolean &$ptrIsOptimisable paramètre qui sera modifié par cette fonction, il indique si le block est optimisable.
124
+ * @param array<string> $ptrBalisesNonParsable
125
+ * @param string &$ptrBaliseInvalideActuelle
126
+ * @param string &$ptrCharValidePourNomBalise
127
+ * @return string le block de texte et false si il n'y a plus de block
128
+ */
129
+ function liveoptim_next_block(&$ptrTexte, $tailleTexte, &$ptrOffset, &$ptrIsOptimisable, &$ptrBalisesNonParsable, &$ptrBaliseInvalideActuelle, &$ptrCharValidePourNomBalise) {
130
+
131
+ if ( $ptrOffset < $tailleTexte ) {
132
+ // il reste des blocks
133
+
134
+ if ( $ptrTexte[$ptrOffset] == '<' ) {
135
+ // si le block est une balise
136
+ $finBlock = strpos($ptrTexte, '>', $ptrOffset) + 1;
137
+ $block = substr( $ptrTexte, $ptrOffset, $finBlock - $ptrOffset );
138
+
139
+ // si c'est le debut d'une balise et que l'on ne se trouve pas déjà dans une balise non optimisable "$ptrBaliseInvalideActuelle"
140
+ if ( is_null($ptrBaliseInvalideActuelle) ) {
141
+ // si la possibilité d'optimisé est activé ( $ptrBaliseInvalideActuelle est NULL )
142
+
143
+ // et si c'est une ouverture de balise
144
+ if ( $block[1] != '/' ) {
145
+
146
+ // si c'est une ouverture de balise on récurère son nom
147
+ $tailleNomBalise = strspn($block, $ptrCharValidePourNomBalise, 1);
148
+ $balise = strtolower( substr($block, 1, $tailleNomBalise) );
149
+
150
+ // si la balise est non parsable, alors on l'enregistre $ptrBaliseInvalideActuelle
151
+ if ( in_array( $balise, $ptrBalisesNonParsable ) ) $ptrBaliseInvalideActuelle = $balise;
152
+ }
153
+
154
+ } elseif ( $block[1] == '/' ) {
155
+ // si on se trouve dans une balise non optimisable et que c'est une fermeture de balise
156
+ // alors on cherche si c'est la fermeture de la balise $ptrBaliseInvalideActuelle
157
+
158
+ // on récupère le nom de la balise de fermeture
159
+ $tailleNomBaliseFermeture = strspn($block, $ptrCharValidePourNomBalise, 2);
160
+ // si elle correspond a $ptrBaliseInvalideActuelle, cela signifi que l'on ne sera plus dans une balise non optimisable
161
+ if ( strcasecmp( substr($block, 2, $tailleNomBaliseFermeture) , $ptrBaliseInvalideActuelle) == 0 ) $ptrBaliseInvalideActuelle = null;
162
+ }
163
+
164
+ $ptrIsOptimisable = false;
165
+ $ptrOffset = $finBlock;
166
+ return $block;
167
+
168
+ } elseif ( ( $finBlock = strpos($ptrTexte, '<', $ptrOffset) ) !== false ) {
169
+ // si le block n'est pas une balise
170
+ $block = html_entity_decode( substr( $ptrTexte, $ptrOffset, $finBlock - $ptrOffset ), ENT_NOQUOTES, 'UTF-8' );
171
+ $ptrOffset = $finBlock;
172
+ return ( $ptrIsOptimisable = is_null($ptrBaliseInvalideActuelle) )? $block : htmlentities( $block, ENT_NOQUOTES, 'UTF-8' );
173
+
174
+ } else {
175
+ // si c'est le dernier block de texte
176
+ $block = html_entity_decode( substr( $ptrTexte, $ptrOffset ), ENT_NOQUOTES, 'UTF-8' );
177
+ $ptrOffset = $tailleTexte;
178
+ return ( $ptrIsOptimisable = is_null($ptrBaliseInvalideActuelle) )? $block : htmlentities( $block, ENT_NOQUOTES, 'UTF-8' );
179
+ }
180
+
181
+ } else return false; // il n'y a plus de block
182
+ }
183
+
184
+ /**
185
+ * optimise le block de texte en entré
186
+ *
187
+ * @param string &$ptrBlock
188
+ * @param array<string> &$ptrMotCles
189
+ * @param array<char> &$ptrRegistre
190
+ * @param int &$posmotCle
191
+ * @return string
192
+ */
193
+ function liveoptim_optimiser(&$ptrBlock, &$ptrMotCles, &$ptrRegistre, &$posMotCles) {
194
+ // on map dans un premier temps les possibilitées
195
+ $map = array();
196
+ reset($ptrRegistre);
197
+ do {
198
+ $pos = -1;
199
+ while ( ( $pos = strpos( $ptrBlock, current($ptrRegistre), $pos + 1 ) ) !== false ) {
200
+ array_push($map, $pos);
201
+ }
202
+ $pos = -1;
203
+ $char = ord( current($ptrRegistre) ) - 32; // la meme lettre mais en majuscule
204
+ while ( ( $pos = strpos( $ptrBlock, $char, $pos + 1 ) ) !== false ) {
205
+ array_push($map, $pos);
206
+ }
207
+ } while ( next($ptrRegistre) !== false );
208
+ natsort($map);
209
+ if ( count($map) == 0 ) return $ptrBlock; // il n'y a rien a optimiser
210
+ reset($map);
211
+
212
+ $blockOptimise = ''; // le block de texte optimisé qui sera retourné
213
+ $tailleBlock = strlen($ptrBlock);
214
+ $needle = null;
215
+ $tailleMotCle = null;
216
+ $isOptimisable = 0; // l'isOptimisable du block de texte originel ($ptrBlock)
217
+
218
+ // on récupère la position dans le block du prochain mot clé
219
+
220
+ //echo "NOUVEAU BLOCK<br />$ptrBlock<br />";
221
+ while ($posMotCles<4 && ( $pos = liveoptim_str_position($ptrMotCles, $ptrBlock, $tailleBlock, $needle, $tailleMotCle, $map) ) !== false ) {
222
+ //echo $posMotCles."<br />" ;
223
+ $blockOptimise .= htmlentities( substr($ptrBlock, $isOptimisable, $pos - $isOptimisable), ENT_NOQUOTES, 'UTF-8' );
224
+
225
+ if(($posMotCles%2)==0 && $posMotCles<4){
226
+ $schema = '<a href="%2$s">%1$s</a>';
227
+ }else{
228
+ $schema = '%1$s';
229
+ }
230
+
231
+ //echo $schema."<br />".current( $ptrMotCles[$needle]['lien'])."<br />";
232
+
233
+
234
+ //echo $_SERVER['HTTP_REFERER']."<br />";
235
+
236
+ //Protection contre le bouclage
237
+ while(strpos( $schema, "%2\$s") !== false &&
238
+ (
239
+ current( $ptrMotCles[$needle]['lien']) == 'http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ||
240
+ current( $ptrMotCles[$needle]['lien']) == $_SERVER['HTTP_REFERER']
241
+ )
242
+ ){
243
+ next( $ptrMotCles[$needle]['lien'] );
244
+
245
+ }
246
+
247
+
248
+
249
+ if (( $ptrMotCles[$needle]['numAction'] > 3) || (strpos( $schema, "%2\$s") !== false && current( $ptrMotCles[$needle]['lien'] ) === false)) {
250
+
251
+ $blockOptimise .= htmlentities( substr($ptrBlock, $pos, $tailleMotCle), ENT_NOQUOTES, 'UTF-8' );
252
+ } else {
253
+ if ( $ptrMotCles[$needle]['numAction'] < 3 ) {
254
+ $ptrMotCles[$needle]['numAction']++;
255
+ }
256
+ $motCleOP = sprintf(
257
+ $schema,
258
+ htmlentities( substr($ptrBlock, $pos, $tailleMotCle), ENT_NOQUOTES, 'UTF-8' ),
259
+ current( $ptrMotCles[$needle]['lien'] )
260
+ );
261
+
262
+ //echo $motCleOP."<br />";
263
+ $blockOptimise .= $motCleOP;
264
+
265
+
266
+
267
+ if (
268
+ strpos( $schema , "%2\$s") !== false
269
+
270
+ ){
271
+ next( $ptrMotCles[$needle]['lien'] );
272
+ }
273
+ }
274
+
275
+ $posMotCles++;
276
+ $isOptimisable = $pos + $tailleMotCle;
277
+ //echo "<br />";
278
+ }
279
+
280
+ //echo "FIN BLOCK<br /><br />";
281
+ // on retourne le block optimisé avec la fin non optimisable
282
+ return $blockOptimise.htmlentities( substr($ptrBlock, $isOptimisable), ENT_NOQUOTES, 'UTF-8' );
283
+ }
284
+
285
+ /**
286
+ * retourne la position de début du prochain mot clé
287
+ *
288
+ * @param array<string> &$ptrMotCles
289
+ * @param string &$ptrBlock
290
+ * @param int $tailleBlock
291
+ * @param mixed &$ptrNeedle valeur de retour
292
+ * @param mixed &$ptrTailleMotCle valeur de retour
293
+ * @param array<int> &$ptrMap
294
+ *
295
+ * @return int
296
+ */
297
+ function liveoptim_str_position(&$ptrMotCles, &$ptrBlock, $tailleBlock, &$ptrNeedle, &$ptrTailleMotCle, &$ptrMap) {
298
+ // pour chaque octet du block
299
+
300
+ while ( current($ptrMap) !== false ) {
301
+ $isOptimisable = current($ptrMap);
302
+ next($ptrMap);
303
+
304
+ // pour chaque mot clé
305
+ reset($ptrMotCles);
306
+ while ( current($ptrMotCles) !== false ) {
307
+ $i = $isOptimisable; // à partir de l'isOptimisable de $ptrBlock on vérifie que la suite correspond au mot clé
308
+ $j = 0; // l'isOptimisable du mot clé
309
+
310
+ // on vérifi que le mot clé ne soit pas collé a un carracrère alphanumérique vers la gauche
311
+ if (
312
+ $i - 1 >= 0 &&
313
+ (
314
+ ( ( $charBlock = ord( $ptrBlock[$i - 1] ) ) < 48 || $charBlock > 122 ) ||
315
+ ( $charBlock > 57 && $charBlock < 65 ) ||
316
+ ( $charBlock > 90 && $charBlock < 97 )
317
+ ) == false
318
+ ) {
319
+ next($ptrMotCles);
320
+ $position++;
321
+ continue;
322
+ }
323
+ if(key($ptrMotCles)==""){
324
+ continue;
325
+ }
326
+
327
+
328
+ do {
329
+
330
+ // si le mot clé est fini
331
+ if ( $j == $ptrMotCles[key($ptrMotCles)]['taille'] ) {
332
+ // si le mot clé n'est pas collé à une lettre ou un chiffre
333
+ if (
334
+ $i >= $tailleBlock ||
335
+ // (
336
+ // ( ord( $ptrBlock[$i] ) < 48 || ord( $ptrBlock[$i] ) > 57 ) && // de '0' à '9'
337
+ // ( ord( $ptrBlock[$i] ) < 65 || ord( $ptrBlock[$i] ) > 90 ) && // de 'A' à 'Z'
338
+ // ( ord( $ptrBlock[$i] ) < 97 || ord( $ptrBlock[$i] ) > 122 ) // de 'a' à 'z'
339
+ // )
340
+ // identique mais plus optimisé
341
+ ( ( $charBlock = ord( $ptrBlock[$i] ) ) < 48 || $charBlock > 122 ) ||
342
+ ( $charBlock > 57 && $charBlock < 65 ) ||
343
+ ( $charBlock > 90 && $charBlock < 97 )
344
+ ) {
345
+ $ptrTailleMotCle = $i - $isOptimisable; // on renvoi la taille du mot clé dans le texte
346
+ $ptrNeedle = key($ptrMotCles); // on renvoi le mot clé
347
+
348
+ while (current($ptrMap) <= $i ) {
349
+ if ( next($ptrMap) === false ) break;
350
+ }
351
+ //$capping[key($ptrMotCles)]++;
352
+ return $isOptimisable; // le mot clé est trouvé, on renvoi sa position
353
+ } else break;
354
+ }
355
+ } while(
356
+ liveoptim_is_egal(
357
+ $ptrBlock,
358
+ $i,
359
+ key($ptrMotCles),
360
+ $j,
361
+ $tailleBlock
362
+ )
363
+ );
364
+ next($ptrMotCles);
365
+ }
366
+ }
367
+
368
+ // $ptrNeedle est introuvable
369
+ return false;
370
+ }
371
+
372
+ /**
373
+ * fonction qui test si deux chaînes de carractères sont identique sans prendre en compte les majuscules et les accents
374
+ *
375
+ * @param string &$ptrHaystack
376
+ * @param int &$ptrOffsetHaystack
377
+ * @param string $ptrNeedle
378
+ * @param int &$ptrOffsetNeedle
379
+ *
380
+ * @return boolean
381
+ */
382
+ function liveoptim_is_egal( &$ptrHaystack, &$ptrOffsetHaystack, $ptrNeedle, &$ptrOffsetNeedle, $tailleBlock ) {
383
+ if ($ptrOffsetHaystack >= $tailleBlock) return false;
384
+
385
+ // si $ptrHaystack a un accent, $ptrNeedle doit obligatoirement en avoir un aussi
386
+ // $ptrHaystack $ptrNeedle
387
+ // e e valide
388
+ // é e valide
389
+ // e é invalide
390
+ // é é valide
391
+
392
+ // si les octets sont identique, on passe a l'octet suivant
393
+ if (
394
+ $ptrNeedle[$ptrOffsetNeedle] == $ptrHaystack[$ptrOffsetHaystack] ||
395
+ ( ord( $ptrHaystack[$ptrOffsetHaystack] ) >= 65 && ord( $ptrHaystack[$ptrOffsetHaystack] ) <= 90 ) &&
396
+ $ptrNeedle[$ptrOffsetNeedle] == chr( ord( $ptrHaystack[$ptrOffsetHaystack] ) + 32 )
397
+ )
398
+
399
+ {
400
+ $ptrOffsetNeedle++;
401
+ $ptrOffsetHaystack++;
402
+ return true;
403
+ } else {
404
+ $charNeedle = $ptrNeedle[$ptrOffsetNeedle++];
405
+
406
+ // si $ptrHaystack[$ptrOffsetHaystack] est accentué
407
+ if ( ord( $ptrHaystack[$ptrOffsetHaystack++] ) == 195 && $ptrOffsetHaystack < $tailleBlock ) { // indique un carractère avec un accent
408
+ $charHaystack = ord( $ptrHaystack[$ptrOffsetHaystack++] ); // on récupère l'octet suivant de $ptrHaystack en numérique
409
+ switch ( $charNeedle ) {
410
+ case 'a': // 'à', 'á', 'â', 'ã', 'ä', 'å'
411
+ case 'A':
412
+ return ( $charHaystack >= 160 && $charHaystack <= 165 || $charHaystack >= 128 && $charHaystack <= 133 );
413
+ case 'o': // 'ò', 'ó', 'ô', 'õ', 'ö'
414
+ case 'O':
415
+ return ( $charHaystack >= 178 && $charHaystack <= 182 || $charHaystack >= 146 && $charHaystack <= 150 );
416
+ case 'e': // 'è', 'é', 'ê', 'ë'
417
+ case 'E':
418
+ return ( $charHaystack >= 168 && $charHaystack <= 171 || $charHaystack >= 136 && $charHaystack <= 139 );
419
+ case 'c': // 'ç'
420
+ case 'C':
421
+ return ( $charHaystack == 167 || $charHaystack == 135 );
422
+ case 'i': // 'ì', 'í', 'î', 'ï'
423
+ case 'I':
424
+ return ( $charHaystack >= 172 && $charHaystack <= 175 || $charHaystack >= 140 && $charHaystack <= 143 );
425
+ case 'u': // 'ù', 'ú', 'û', 'ü'
426
+ case 'U':
427
+ return ( $charHaystack >= 185 && $charHaystack <= 188 || $charHaystack >= 153 && $charHaystack <= 156 );
428
+ case 'y': // 'ÿ'
429
+ case 'Y':
430
+ return ( $charHaystack == 191 || $charHaystack == 159 );
431
+ case 'n': // 'ñ'
432
+ case 'N':
433
+ return ( $charHaystack == 177 || $charHaystack == 145 );
434
+ }
435
+ } else return false;
436
+
437
+ }
438
+
439
+ }
440
+
441
+ /**
442
+ * liveoptim_charger_balises_non_parsable
443
+ * @return array
444
+ */
445
+ function liveoptim_charger_balises_non_parsable() {
446
+ $reponse = array();
447
+ $tempTable = conteneurBaliseIgnore::getInstance()->getAll();
448
+ foreach ($tempTable as $ligne) {
449
+ array_push( $reponse, $ligne['nom'] );
450
+ }
451
+ return $reponse;
452
+ }
453
+
454
+ /**
455
+ * liveoptim_charger_pattern
456
+ * @return array
457
+ */
458
+ function liveoptim_charger_pattern() {
459
+ $reponse = array();
460
+ $tempTable = ConteneurPattern::getInstance()->getAll();
461
+ foreach ($tempTable as $ligne) {
462
+ $lPattern = $ligne['structure'];
463
+ // on transforme {mc} en %1$s
464
+ $lPattern = str_replace('{mc}', '%1$s', $lPattern);
465
+ // on transforme {url} en %2$s
466
+ $lPattern = str_replace('{url}', '%2$s', $lPattern);
467
+
468
+ array_push( $reponse, $lPattern );
469
+ }
470
+ return $reponse;
471
+ }
472
+
473
+ function liveoptim_charger_mots_cles_restreint(&$ptrRegistre) {
474
+ $reponse = array();
475
+ $ptrRegistre = array( chr(195) );
476
+
477
+ $tempTable = ConteneurMotCle::getInstance()->getAll();
478
+
479
+ $saveMotCle = null;
480
+ foreach ( $tempTable as $ligne ) {
481
+
482
+ //$motCle = utf8_encode( $ligne['requete'] );
483
+ $motCle = $ligne['requete'];
484
+
485
+ $ancreMotCle = liveoptim_clean_url( $ligne['requete'] );
486
+
487
+ //update 28-04-2010 -> ajout ancre au lien pour meilleure prise en compte si liens multiples vers même page
488
+ $destination = $ligne['destination'];
489
+
490
+
491
+ if ( $saveMotCle != $motCle ) {
492
+ // nouveau mot clé
493
+ $saveMotCle = $motCle;
494
+
495
+ if ( !in_array($saveMotCle[0], $ptrRegistre) ) array_push($ptrRegistre, $saveMotCle[0]);
496
+
497
+ // ajout de la taille du mot clé
498
+ $reponse[$saveMotCle]['taille'] = strlen($saveMotCle);
499
+
500
+ // ajout de l'idication de l'action a effectué pour ce mot clé
501
+ $reponse[$saveMotCle]['numAction'] = -1;
502
+ $reponse[$saveMotCle]['numActionSansLiens'] = -1;
503
+
504
+ $reponse[$saveMotCle]['lien'] = array();
505
+ }
506
+
507
+ // ajout du lien
508
+ array_push( $reponse[$saveMotCle]['lien'], $destination );
509
+ }
510
+
511
+ return $reponse;
512
+ }
513
+
514
+ /**
515
+ * liveoptim_clean_url
516
+ *
517
+ * @param String $texte
518
+ * @return String
519
+ */
520
+ function liveoptim_clean_url($texte) {
521
+ // Suppression des espaces en début et fin de chaîne
522
+ $texte = trim($texte);
523
+
524
+ // Suppression des accents
525
+ $texte = strtr($texte,'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËéèêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ','aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn');
526
+
527
+ // mise en minuscule
528
+ $texte = strtolower($texte);
529
+
530
+ // Suppression des espaces et caracteres spéciaux
531
+ $texte = str_replace(" ", '-', $texte);
532
+ $texte = preg_replace('#([^a-z0-9-])#', '-', $texte);
533
+
534
+ // Suppression des tirets multiples
535
+ $texte = preg_replace('#([-]+)#', '-', $texte);
536
+
537
+ // Suppression du premier caractère si c'est un tiret
538
+ if ($texte{0} == '-')
539
+ $texte = substr($texte, 1);
540
+
541
+ // Suppression du dernier caractère si c'est un tiret
542
+ if (substr($texte, -1, 1) == '-')
543
+ $texte = substr($texte, 0, -1);
544
+
545
+ return $texte;
546
+ }
app/code/local/Mkt/LiveOptim/sql/liveoptim_setup/mysql4-install-1.0.0.php ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $prefix = Mage::getConfig()->getTablePrefix();
4
+
5
+ $installer = $this;
6
+
7
+ $installer->startSetup();
8
+
9
+ $installer->run("
10
+
11
+ DROP TABLE IF EXISTS `".$prefix."liveoptim_balise_ignore`;
12
+ CREATE TABLE IF NOT EXISTS `".$prefix."liveoptim_balise_ignore` (
13
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
14
+ `nom` varchar(255) NOT NULL,
15
+ PRIMARY KEY (`id`)
16
+ );
17
+
18
+ INSERT INTO ".$prefix."liveoptim_balise_ignore (id,nom) VALUES
19
+ (1,'a'),(2,'h1'),(3,'h2'),(4,'h3'),(5,'h4'),(6,'h5'),
20
+ (7,'h6'),(8,'strong'),(9,'em'),(10,'u'),(11,'i'),
21
+ (12,'b'),(13,'embed'),(14,'object'),(15,'style');
22
+
23
+ DROP TABLE IF EXISTS `".$prefix."liveoptim_mot_cle`;
24
+ CREATE TABLE IF NOT EXISTS `".$prefix."liveoptim_mot_cle` (
25
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
26
+ `requete` varchar(255) NOT NULL,
27
+ `destination` varchar(255) NOT NULL,
28
+ `position` int(10) unsigned NOT NULL,
29
+ PRIMARY KEY (`id`)
30
+ );
31
+
32
+ DROP TABLE IF EXISTS `".$prefix."liveoptim_capping`;
33
+ CREATE TABLE IF NOT EXISTS `".$prefix."liveoptim_capping` (
34
+ `id` int(1) NOT NULL,
35
+ `capping` varchar(255) NOT NULL,
36
+ `marche` varchar(255) NOT NULL,
37
+ PRIMARY KEY (`id`)
38
+ );
39
+ INSERT INTO `".$prefix."liveoptim_capping` (id,capping,marche) VALUES
40
+ (1,'3','1');
41
+
42
+ DROP TABLE IF EXISTS `".$prefix."liveoptim_parametres`;
43
+ CREATE TABLE IF NOT EXISTS `".$prefix."liveoptim_parametres` (
44
+ `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
45
+ `cle` varchar(255) NOT NULL,
46
+ `valeur` varchar(255) NOT NULL,
47
+ PRIMARY KEY (`id`)
48
+ );
49
+
50
+ INSERT INTO `".$prefix."liveoptim_parametres` (id,cle,valeur) VALUES
51
+ (3,'certificat_mkt_jour',''),(4,'tentative_maj_nb','0'),
52
+ (5,'tentative_maj_date','2012-01-01 00:00:00'),
53
+ (6,'version','1.0.0'),(8,'inscription','0')
54
+ ;
55
+
56
+ ");
57
+
58
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/liveoptim.xml ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout version="0.1.0">
3
+ <default>
4
+
5
+ </default>
6
+ <liveoptim_adminhtml_liveoptim_index>
7
+ <reference name="head">
8
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
9
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
10
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
11
+ </reference>
12
+ <reference name="content">
13
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
14
+ <block type="liveoptim/adminhtml_home" name="home" template="liveoptim/accueil.php"/>
15
+ </reference>
16
+ </liveoptim_adminhtml_liveoptim_index>
17
+
18
+ <liveoptim_adminhtml_liveoptim_inscription>
19
+ <reference name="head">
20
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
21
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
22
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
23
+ </reference>
24
+ <reference name="content">
25
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
26
+ <block type="liveoptim/adminhtml_inscription" name="inscription" template="liveoptim/inscription.php"/>
27
+ </reference>
28
+ </liveoptim_adminhtml_liveoptim_inscription>
29
+
30
+ <liveoptim_adminhtml_liveoptim_tutoriel>
31
+ <reference name="head">
32
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
33
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
34
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
35
+ </reference>
36
+ <reference name="content">
37
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
38
+ <block type="liveoptim/adminhtml_tuto" name="tuto" template="liveoptim/tutoriel.php"/>
39
+ <!--<block type="liveoptim/adminhtml_truc" name="truc" template="liveoptim/truc.php"/>-->
40
+ </reference>
41
+ </liveoptim_adminhtml_liveoptim_tutoriel>
42
+
43
+ <liveoptim_adminhtml_liveoptim_motcle>
44
+ <reference name="head">
45
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
46
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
47
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
48
+ </reference>
49
+ <reference name="content">
50
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
51
+ <block type="liveoptim/adminhtml_motcle" name="motcle" />
52
+ </reference>
53
+ </liveoptim_adminhtml_liveoptim_motcle>
54
+
55
+ <liveoptim_adminhtml_liveoptim_baliseignore>
56
+ <reference name="head">
57
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
58
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
59
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
60
+ </reference>
61
+ <reference name="content">
62
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
63
+ <block type="liveoptim/adminhtml_balise" name="balise" template="liveoptim/listerBaliseIgnore.php"/>
64
+ </reference>
65
+ </liveoptim_adminhtml_liveoptim_baliseignore>
66
+
67
+ <liveoptim_adminhtml_liveoptim_pattern>
68
+ <reference name="head">
69
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
70
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
71
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
72
+ </reference>
73
+ <reference name="content">
74
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
75
+ <block type="liveoptim/adminhtml_pattern" name="pattern" template="liveoptim/listerPattern.php"/>
76
+ </reference>
77
+ </liveoptim_adminhtml_liveoptim_pattern>
78
+
79
+ <liveoptim_adminhtml_liveoptim_cible>
80
+ <reference name="head">
81
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
82
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
83
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
84
+ </reference>
85
+ <reference name="content">
86
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
87
+ <block type="liveoptim/adminhtml_cible" name="cible" template="liveoptim/listerPatternCible.php"/>
88
+ </reference>
89
+ </liveoptim_adminhtml_liveoptim_cible>
90
+
91
+ <liveoptim_adminhtml_liveoptim_config>
92
+ <reference name="head">
93
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
94
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
95
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
96
+ </reference>
97
+ <reference name="content">
98
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
99
+ <block type="liveoptim/adminhtml_config" name="config" template="liveoptim/config.php"/>
100
+ </reference>
101
+ </liveoptim_adminhtml_liveoptim_config>
102
+
103
+ <liveoptim_adminhtml_liveoptim_pagesrestreintes>
104
+ <reference name="head">
105
+ <action method="addCss"><stylesheet>css/liveoptim_style.css</stylesheet></action>
106
+ <action method="addJs"><stylesheet>liveoptim/jquery-1.10.2.min.js</stylesheet></action>
107
+ <action method="addJs"><stylesheet>liveoptim/script.js</stylesheet></action>
108
+ </reference>
109
+ <reference name="content">
110
+ <block type="liveoptim/adminhtml_header" name="lo_header" template="liveoptim/header.php"/>
111
+ <block type="liveoptim/adminhtml_pagesrestriction" name="pagesrestriction" template="liveoptim/pagesRestriction.php"/>
112
+ </reference>
113
+ </liveoptim_adminhtml_liveoptim_pagesrestreintes>
114
+ </layout>
app/design/adminhtml/default/default/template/liveoptim/accueil.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <?php /*<div id="icon-options-general" class="icon32"></div>*/ ?>
3
+ <?php if ( $is_file_get_contents_disable ) { ?>
4
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
5
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
6
+ You need to activate this function in order to run LiveOptim.
7
+ </div>
8
+ <?php } ?>
9
+ <h2>
10
+ <?php echo __('accueil_titre'); ?>
11
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo __('accueil_copte_client_actif'); ?>"/>
12
+ </h2>
13
+ <br />
14
+ <br />
15
+
16
+
17
+ <p>
18
+ <?php echo __('accueil_contenu',Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/motcle'),
19
+ Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/pattern'),
20
+ Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/cible'),
21
+ Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/baliseignore'),
22
+ Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/pagesrestreintes')
23
+ ); ?>
24
+ </p>
25
+ </div>
app/design/adminhtml/default/default/template/liveoptim/codeHttp/code401.php ADDED
@@ -0,0 +1 @@
 
1
+ <h2><?php echo $langue['code401_titre']; ?></h2>
app/design/adminhtml/default/default/template/liveoptim/codeHttp/code403.php ADDED
@@ -0,0 +1 @@
 
1
+ <h2><?php echo $langue['code403_titre']; ?></h2>
app/design/adminhtml/default/default/template/liveoptim/codeHttp/code404.php ADDED
@@ -0,0 +1 @@
 
1
+ <h2><?php echo $langue['code404_titre']; ?></h2>
app/design/adminhtml/default/default/template/liveoptim/config.php ADDED
@@ -0,0 +1,218 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <?php $acheteur = $isCompteActifSurServeur; ?>
3
+ <?php $expire = $isCompteExpire; ?>
4
+ <?php if ( $is_file_get_contents_disable ) { ?>
5
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
6
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
7
+ You need to activate this function in order to run LiveOptim.
8
+ </div>
9
+
10
+ <?php } ?>
11
+
12
+ <br />
13
+
14
+ <?php $acheteur = $isCompteActifSurServeur; ?>
15
+ <?php $expire = $isCompteExpire; ?>
16
+
17
+ <div id="j-main-container" class="span10" style="width: 100%;">
18
+ <div class="clearfix"></div>
19
+ <h2>
20
+ <?php echo __('menu_config'); ?>
21
+
22
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo __('accueil_copte_client_actif'); ?>"/>
23
+
24
+
25
+
26
+
27
+ </h2>
28
+ <br />
29
+ <div style="width: 50%;border-right: 1px solid #D8D8D8; float:left">
30
+ <!--<div style="padding-left:10%">-->
31
+ <div style="padding-left:10%">
32
+ <table style="padding-top: 45px;">
33
+ <tr>
34
+ <td style="padding-left: 40px">
35
+ <strong>LiveOptim :</strong><img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre1LiveoptimOuvrir();" onmouseout="fenetre1LiveoptimFermer();" />
36
+ &nbsp;&nbsp;&nbsp;&nbsp;
37
+ <div id="fenetre1Liveoptim" style="display:none">
38
+ <?php echo $this->__('hintPattern_config',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?>
39
+ </div>
40
+ </td>
41
+ <td style="padding-left: 30px; vertical-align: center">
42
+ <?php if ( $isON == false ) { ?>
43
+ <a href="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/modifconfig",array('on'=>1))?>"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/off.png" alt="off" style="width: 45px"></a>
44
+ <?php } else { ?>
45
+ <a href="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/modifconfig",array('on'=>2))?>"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/on.png" alt="on" style="width: 45px"></a>
46
+ <?php } ?>
47
+ </td></tr>
48
+ </table>
49
+
50
+ <?php if ($isON) { ?>
51
+ <table style="padding-top: 30px" class="table table-striped">
52
+ <thead>
53
+ <tr>
54
+ <th class="structure nowrap center">
55
+ <?php echo $this->__('config_limite_capping');?>
56
+ <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre4LiveoptimOuvrir();" onmouseout="fenetre4LiveoptimFermer();" />
57
+ <div id="fenetre4Liveoptim" style="display:none">
58
+ <?php echo $this->__('hintPattern_config_limite',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?>
59
+ </div>
60
+ </th>
61
+ <th width="100px" class="action nowrap center"><?php echo $this->__('listerBaliseIgnore_action');"listerpatern cible" ?></th>
62
+ </tr>
63
+ </thead>
64
+ <tbody>
65
+ <tr>
66
+
67
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
68
+ <td class="page"><input name="valcap" type="text" value="<?php echo $capping ?>"/></td>
69
+ <td class="action"><input class="ajouter" value="<?php echo $this->__('listerPatternCible_modifier'); ?>" type="button" onClick="fenetreInfoPreniumOuvrir()"/></td>
70
+
71
+ </tr>
72
+ </tbody>
73
+ </table>
74
+
75
+ <?php } ?>
76
+ <br />
77
+ <form action="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/modifconfig",array('exp'=>'1'))?>" method="post">
78
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
79
+ <table>
80
+ <tr>
81
+ <td>
82
+ <span style="font-size:14px;font-weight:bold"><?php echo $this->__('config_backup_title'); ?></span><img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre5LiveoptimOuvrir();" onmouseout="fenetre5LiveoptimFermer();" /><br />
83
+ <div id="fenetre5Liveoptim" style="display:none">
84
+ <?php echo $this->__('hintPattern_config_csv',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
85
+ </div>
86
+ </td>
87
+ </tr>
88
+ <tr>
89
+ <td style="padding-left:20px">
90
+ <span><?php echo $this->__('config_export_csv'); ?></span>
91
+ <div id="div_chck" style="padding-top:10px">
92
+ <label class="label" for="checkbox1"><?php echo $this->__('menu_baliseignorer'); ?></label><br />
93
+ <label class="label" for="checkbox2"><?php echo $this->__('menu_config'); ?></label><br />
94
+ <input style="margin-right:5px" type="checkbox" name="2" id="checkbox3" checked><label for="checkbox3"><?php echo $this->__('menu_motcle');?></label><br />
95
+ <label class="label" for="checkbox4"><?php echo $this->__('menu_pages_restreintes');?></label><br />
96
+ <label class="label" for="checkbox5"><?php echo $this->__('menu_pattern'); ?></label><br />
97
+ <label class="label" for="checkbox5"><?php echo $this->__('menu_patterncible'); ?></label>
98
+ </div>
99
+ </td>
100
+ </tr>
101
+ <tr>
102
+ <td style="padding-left:50px;padding-top:10px">
103
+ <input type="submit" value="<?php echo $this->__('config_bouton_export') ?>" name="Export-CSV">
104
+ <?php if(isset($zip)){?>
105
+ <a target="_blank" href="<?='/'.$zip; ?>"><img alt="ddl zip" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/DL.png" style="width: 45px"></a>
106
+ <?php } else if(is_dir("zip")){
107
+ $handle=opendir("zip");
108
+ while (false !== ($fichier = readdir($handle))) {
109
+ if (($fichier != ".") && ($fichier != "..")) {
110
+ @unlink("zip/".$fichier);
111
+ }
112
+ }
113
+ @unlink("BackupBDD.zip");
114
+ } ?>
115
+ </td>
116
+ </tr>
117
+ </table>
118
+
119
+ <br /><br />
120
+
121
+ <br />
122
+
123
+
124
+ </form>
125
+ </div>
126
+ </div>
127
+ </div>
128
+ <!--</div>-->
129
+ <div>
130
+ <center>
131
+ <form action="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/modifconfig",array('sql'=>'1'))?>" method="post">
132
+ <table style="float: right; width: 40%;">
133
+ <tr>
134
+ <td style="width:220px">
135
+ <?php echo $this->__('config_backup_sql');?> <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre6LiveoptimOuvrir();" onmouseout="fenetre6LiveoptimFermer();" />
136
+
137
+ <div id="fenetre6Liveoptim" style="display:none">
138
+ <?php echo $this->__('hintPattern_config_Export',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?>
139
+ </div>
140
+
141
+ </td>
142
+
143
+ <td>
144
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
145
+ <input type="submit" value="SQL" name="Export-SQL">
146
+ </td>
147
+ <td>
148
+ <?php if(isset($res)&& $res!=""){?>
149
+ <a target="_blank" href="<?php echo $res?>"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/DL.png" alt="download" style="width: 45px"></a>
150
+ <?php
151
+ unset($res);
152
+ }?>
153
+
154
+ </td>
155
+
156
+ </tr>
157
+ </table>
158
+ </form>
159
+ <div id="fenetreInfoPrenuim">
160
+ <?php echo __('hintPrenium'); ?>
161
+ </div>
162
+ <form name="import_import" action="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/modifconfig",array('imp'=>'1'))?>" method="POST" enctype="multipart/form-data" onSubmit="return verifFile('<?php echo $this->__('config_fichier_vide'); ?>',' <?php echo $this->__('config_fichier_ncsv');?>','<?php echo $this->__('config_fichier_nzip'); ?>',document.getElementsByName('fichier_up')[0].value,document.getElementsByName('quoi')[0].value);">
163
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
164
+ <table style="float: right; width: 40%; padding-top: 50px">
165
+ <tr>
166
+ <td><span style="font-size:14px;font-weight:bold"><?php echo $this->__('config_import_title') ?></span></td>
167
+ </tr>
168
+ <tr>
169
+ <td style="padding-left:20px" ><?php echo $this->__('config_importation');?></td>
170
+ <td>
171
+ <SELECT name="quoi">
172
+ <OPTION VALUE=2><?php echo $this->__('menu_motcle'); ?>
173
+ <option value="6">ZIP</option>
174
+ <OPTION VALUE=7>SQL
175
+ </SELECT>
176
+ </td>
177
+ </tr>
178
+ <tr>
179
+ <td style="padding-left:20px" ><?php echo $this->__('config_table_file'); ?></td>
180
+ <td>
181
+ <input type="file" name="fichier_up" onchange="" />
182
+ <input type="hidden" name="MAX_FILE_SIZE" value="9999999999">
183
+ </td>
184
+ </tr>
185
+ <tr>
186
+ <td></td>
187
+ <td><input type="submit" value='<?php echo $this->__('config_import_validation') ?>'></td>
188
+ </tr>
189
+ </table>
190
+ </form><br />
191
+ <br />
192
+ <table style="float: right; width: 40%; padding-top: 50px">
193
+ <tr>
194
+ <td>
195
+ <span style="font-size:14px;font-weight:bold"><?php echo __('COM_LIVEOPTIM_CACHE_TITRE') ?></span>
196
+ </td>
197
+ <tr>
198
+ <tr>
199
+ <td>
200
+ <p>
201
+ <?php echo __('COM_LIVEOPTIM_CACHE_TEXT') ?>
202
+ </p>
203
+ <input type="button" onClick="fenetreInfoPreniumOuvrir()" style="display:inline-block;margin:10px 36px 0 106px;font-size: 16px ;background-color: #FE2E2E;color: #EFFBF2" value="<?php echo __('COM_LIVEOPTIM_BTN_CACHE_ACTIV'); ?>"/>
204
+
205
+
206
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
207
+ <input type="button" onClick="fenetreInfoPreniumOuvrir()" name="Vide cache" value="<?php echo __('COM_LIVEOPTIM_BTN_CACHE_VIDE')?>">
208
+ </td>
209
+ </tr>
210
+ </table>
211
+
212
+ </center>
213
+ </div>
214
+ <div style="clear:both"></div>
215
+ <p style="font-size: 14px; font-weight: bold; margin-left: 100px; width: 200px;">
216
+ Copyright 2012
217
+ </p>
218
+ </div>
app/design/adminhtml/default/default/template/liveoptim/header.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div id="infoPrenium" style="margin-top:calc(); display: none;">
2
+ <div class="header"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/logo-mkt-popup.png"></img></div>
3
+ <div class="center">
4
+
5
+ <div class="center-rigth">
6
+ <span class="all_prod"><?php echo __('COM_LIVEOPTIM_FNT_PRE_ALL_PRODUCT') ?></span>
7
+ <img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/Flechegauche.png"/>
8
+ <img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/Flechecentrale.png"/>
9
+ <img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/Flechedroite.png"/><br />
10
+ <div id="others_product">
11
+ <span class="txt_other"><?php echo __('COM_LIVEOPTIM_FNT_PRE_OTHER_PRODUCT') ?></span><br />
12
+ <a class="btn_plusInfo" target="_blank" href="http://www.liveoptim.com/other-products/"><?php echo __('COM_LIVEOPTIM_FNT_PRE_MORE_INFO') ?></a>
13
+ </div>
14
+
15
+ </div>
16
+ <div class="center-left">
17
+ <span class="logo-lo-prenium"></span>
18
+ <span class="logo-30jours-gratuit"></span>
19
+ <div id="conteneur-detail">
20
+ <div>
21
+ <span class="header-left"></span>
22
+ <span class="header-middle"></span>
23
+ <span class="header-right"></span>
24
+ </div>
25
+ <div class="middle-left">
26
+ <div class="middle-right">
27
+ <div class="feature-premium">
28
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_UN_KEY') ?></span>
29
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_UN_TARGET') ?></span><br />
30
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_CACHE') ?></span>
31
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_CUSTOM_TAG') ?></span><br />
32
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_TARGET') ?></span>
33
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_LOOP') ?></span><br />
34
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_CAPPING') ?></span>
35
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_EXCLUD_PAGES') ?></span><br />
36
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_EXECEPTION') ?></span>
37
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_SUPPORT') ?></span><br />
38
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_TWITER') ?></span>
39
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_HOTLINE') ?></span><br />
40
+ <span class="detail"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/PictoValid.png"><?php echo __('COM_LIVEOPTIM_FNT_PRE_CHAT') ?> </span><br />
41
+ <a class="btn_Prenuim" href="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/update")?>"><?php echo __('COM_LIVEOPTIM_FNT_PRE_UPGRADE') ?></a>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <div class="footer-left">
46
+ <div class="footer-right">
47
+ <span class="footer-middle"></span>
48
+ </div>
49
+ </div>
50
+ </div>
51
+
52
+ </div>
53
+
54
+ </div>
55
+ <div ><img class="close" onclick="displayInfoPrenium()" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/close.png"></img></div>
56
+
57
+ </div>
58
+ <div style='width: 100%; background-color: #787878; text-align: center; padding:5px 0 5px 0;<?php echo $margin ?>'>
59
+ <p style='color: #FFFFFF;'><?php echo __('COM_LIVEOPTIM_LICENCE_FREE')."<br />". __('COM_LIVEOPTIM_BOUTON_PRENIUM');?></p>
60
+ </div>
app/design/adminhtml/default/default/template/liveoptim/inscription.php ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ *
5
+ * LiveOptim - Optimize the content of your articles and automatically tickets to easily improve your position in the results of search engines: Google, Baidu, Yandex, Bing ...
6
+ * License: GPLv3
7
+ * License URI: http://www.gnu.org/licenses/gpl.htm
8
+ * Copyright (C) 2012 Erwan MILBEO � All rights reserved
9
+ * For more information see the README
10
+ * Any question will find answer on
11
+ * [support@liveoptim.com](mailto:support@liveoptim.com)
12
+ * our Timelines : [US-EN](https://twitter.com/LiveOptim_US) | [FR](https://twitter.com/LiveOptim_FR) | [ES](https://twitter.com/LiveOptim_ES)
13
+ *
14
+ */
15
+
16
+ ?>
17
+ <br />
18
+ <h2>
19
+ <?php echo __('inscription_titre'); ?>
20
+
21
+
22
+ <img class="picto_inactif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/inactif.png" title="<?php echo __('accueil_compte_client_inactif'); ?>" alt="<?php echo __('accueil_compte_client_inactif'); ?>"/>
23
+
24
+ </h2>
25
+
26
+ <div style="margin-top:20px">
27
+
28
+ <?php echo __('inscription_texte');$lang = Mage::getSingleton('adminhtml/session')->getLocale();?>
29
+ <br /><br />
30
+
31
+ <form id="insciption" action="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/inscription")?>" method="post" style="width:350px">
32
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
33
+ <?php if(isset($erreur)){ ?>
34
+ <div style="color:red;margin:0 auto;font-weight: bold;text-align: center;"><?php echo __($erreur); ?></div><br /><br />
35
+ <?php } ?>
36
+ <input type="hidden" name="url" value="<?php echo $_SERVER['HTTP_HOST']?>"/>
37
+ <label style="width: 200px; display: inline-block;padding-left:30px" for="url"><?php echo __('inscription_url')?></label><input style="width" type="text" name="url" value="<?php echo $_SERVER['HTTP_HOST']?>" disabled /><br />
38
+ <label style="width: 200px; display: inline-block;padding-left:30px" for="mail"><?php echo __('inscription_email')?></label><input type="email" name="mail" /><br />
39
+ <label style="width: 200px; display: inline-block;padding-left:30px" for="pass"><?php echo __('inscription_pass')?></label><input type="password" name="pass" /><br /> <label style="width: 200px; display: inline-block;padding-left:30px" for="lang"><?php echo __('inscription_lang')?></label> <select name="lang" > <option <?php echo ($lang=="en_US" || $lang=="en_GB")?'selected="selected"':'' ?>value="us">English</option> <option <?php echo ($lang=="fr_FR")?'selected="selected"':'' ?> value="fr">French</option> <option <?php echo ($lang=="pt_BR")?'selected="selected"':'' ?>value="pt">Brazilian Portuguese</option> <option <?php echo ($lang=="es_ES")?'selected="selected"':'' ?>value="es">Spanish</option> </select>
40
+ <input style="display: block; margin: 10px 136px;" type="submit" name="btnInscription" value="<?php echo __('inscription_btnInscrip') ?>" />
41
+ </form>
42
+ </div>
app/design/adminhtml/default/default/template/liveoptim/listerBaliseIgnore.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <?php $acheteur = $isCompteActifSurServeur; ?>
3
+ <?php $expire = $isCompteExpire; ?>
4
+ <?php if ( $is_file_get_contents_disable ) { ?>
5
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
6
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
7
+ You need to activate this function in order to run LiveOptim.
8
+ </div>
9
+ <?php } ?>
10
+ <br />
11
+ <h2>
12
+ <?php echo __('listerBaliseIgnore_titre'); ?>
13
+
14
+ <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetreLiveoptimOuvrir();" onmouseout="fenetreLiveoptimFermer();" />
15
+
16
+
17
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo __('accueil_copte_client_actif'); ?>"/>
18
+
19
+
20
+ <div id="fenetreLiveoptim">
21
+ <?php echo __('hintBaliseIgnore',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?>
22
+ </div>
23
+ </div>
24
+ </h2>
25
+ <?php echo __('listerBaliseIgnore_text1'); ?>
26
+
27
+ <div id="lo_content">
28
+ <table class="wp-list-table widefat fixed posts" cellspacing="0">
29
+ <thead>
30
+ <tr>
31
+ <th class="nom"><?php echo __('listerBaliseIgnore_nom'); ?><img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre1LiveoptimOuvrir();" onmouseout="fenetre1LiveoptimFermer();" />
32
+
33
+ <div id="fenetre1Liveoptim" style="display:none">
34
+ <?php echo $this->__('hintBaliseIgnore',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
35
+ </div></th>
36
+ <th class="action"><?php echo __('listerBaliseIgnore_action'); ?></th>
37
+ </tr>
38
+ </thead>
39
+ <div id="fenetreInfoPrenuim">
40
+ <?php echo __('hintPrenium'); ?>
41
+ </div>
42
+ <tbody>
43
+ <tr>
44
+ <td class="nom"><input name="nom" type="text" /></td>
45
+ <td class="action"><input class="ajouter" value="<?php echo __('listerBaliseIgnore_ajouter'); ?>" type="button" onclick="fenetreInfoPreniumOuvrir()"/></td>
46
+ </tr>
47
+
48
+ <?php foreach ( $listeBaliseIgnorer as $lBaliseIgnore ) { ?>
49
+ <tr>
50
+ <td class="nom"><?php echo $lBaliseIgnore['nom']; ?></td>
51
+ <td class="action">
52
+ <a href="#" onclick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerBaliseIgnore_modifier'); ?>" /></a>
53
+ <a href="#" onclick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerBaliseIgnore_balises_supprimer'); ?>" /></a>
54
+ </td>
55
+ </tr>
56
+ <?php } ?>
57
+ </tbody>
58
+ </table>
59
+
60
+ <br />
61
+ <p>
62
+ Copyright 2012
63
+ </p>
64
+ </div>
app/design/adminhtml/default/default/template/liveoptim/listerMotCle.php ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <?php if ( $is_file_get_contents_disable ) { ?>
3
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
4
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
5
+ You need to activate this function in order to run LiveOptim.
6
+ </div>
7
+ <?php } ?>
8
+
9
+ <br />
10
+ <h2>
11
+
12
+ <?php echo __('listerMotCle_titre');?>
13
+
14
+ <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetreLiveoptimOuvrir();" onmouseout="fenetreLiveoptimFermer();" />
15
+
16
+
17
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/actif.png" title="<?php echo $this->__('accueil_copte_client_actif'); ?>" alt="<?php echo $this->__('accueil_copte_client_actif'); ?>"/>
18
+
19
+ <div id="fenetreLiveoptim" style="display:none">
20
+ <?php echo $this->__('hintMotCle',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
21
+ </div>
22
+ </h2>
23
+ <?php echo __('listerMotCle_table_requete_text'); ?>
24
+
25
+ <div style=' text-align: center; padding:0px 0 0px 0; '>
26
+ <img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/fleche_verte.png" />
27
+ <img style="margin-left: 72px;" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/fleche_verte.png" />
28
+ <img style="margin-left: 72px;" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/fleche_verte.png" />
29
+
30
+
31
+
32
+ <div id="lo_content">
33
+ <table class="wp-list-table widefat fixed posts" style ="margin-left: 240px;" cellspacing="0">
34
+ <thead>
35
+ <tr>
36
+ <th class="requete"><?php echo __('listerMotCle_table_requete'); ?> <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre1LiveoptimOuvrir();" onmouseout="fenetre1LiveoptimFermer();" />
37
+
38
+ <div id="fenetre1Liveoptim" style="display:none">
39
+ <?php echo $this->__('hintMotCle_requete',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
40
+ </div></th>
41
+ <th class="destination"><?php echo $this->__('listerMotCle_table_destination'); ?> <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre2LiveoptimOuvrir();" onmouseout="fenetre2LiveoptimFermer();" />
42
+
43
+ <div id="fenetre2Liveoptim" style="display:none">
44
+ <?php echo $this->__('hintMotCle_destination',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
45
+ </div></th>
46
+ <th class="position"><?php echo $this->__('listerMotCle_table_position'); ?> <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre3LiveoptimOuvrir();" onmouseout="fenetre3LiveoptimFermer();" />
47
+
48
+ <div id="fenetre3Liveoptim" style="display:none">
49
+ <?php echo $this->__('hintMotCle_position',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
50
+ </div></th>
51
+ <th class="action"><?php echo $this->__('listerMotCle_table_action'); ?></th>
52
+ </tr>
53
+ </thead>
54
+
55
+ <tbody>
56
+ <?php
57
+ $nb = count($lMotCles);
58
+ ?>
59
+ <!--<form action="<?php echo Mage::getUrl('liveoptim/adminhtml_liveoptim/savemotcle') ?>" method="post" onSubmit="<?php echo ( $nb<10 )? "return verifRequetteMotCle('".__('listerMotCle_msg_alert')."')" :" return displayRestriction('".__('COM_LIVEOPTIM_MSG_MOT_CLE')."')"?>" > -->
60
+ <form action="<?php echo Mage::getUrl('liveoptim/adminhtml_liveoptim/savemotcle') ?>" method="post" onSubmit="<?php echo "return verifRequetteMotCle('".__('listerMotCle_msg_alert')."')"?>" >
61
+ <tr>
62
+
63
+
64
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
65
+ <td class="requete"><input name="requete" type="text" /></td>
66
+ <td class="destination"><input name="destination" type="text" /></td>
67
+ <td class="position"><input name="position" type="text" /></td>
68
+ <td class="action"><input class="ajouter" value="<?php echo $this->__('listerMotCle_ajouter'); ?>" type="submit" /></td>
69
+
70
+
71
+ </tr>
72
+ </form>
73
+ <?php
74
+ $i=0;
75
+ foreach ( $lMotCles as $lMotCle ) {
76
+ if($i>9)break;
77
+ ?>
78
+
79
+ <?php if ( !is_null( $idModifier) && $idModifier == $lMotCle['id'] ) { ?>
80
+
81
+ <form action="<?php echo Mage::getUrl("liveoptim/adminhtml_liveoptim/motclemodif") ?>" method="post">
82
+ <input name="idModifier" value="<?php echo $lMotCle['id']; ?>" type="hidden" />
83
+ <input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />
84
+ <tr>
85
+ <td class="requete"><input name="requete" value="<?php echo $lMotCle['requete']; ?>" type="text" /></td>
86
+ <td class="destination"><input name="destination" value="<?php echo $lMotCle['destination']; ?>" type="text" /></td>
87
+ <td class="position"><input name="position" value="<?php echo $lMotCle['position']; ?>" type="text" /></td>
88
+ <td class="action">
89
+ <input class="modifier" value="<?php echo $this->__('listerMotCle_modifier'); ?>" type="submit" />
90
+ <a href="<?php echo Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/motcleenlever',array('id'=>$lMotCle['id']))?>" onclick="return confirm('<?php echo $this->__('listerMotCle_confirmation_suppression'); ?>');"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/supprimer.gif" alt="<?php echo $this->__('listerMotCle_supprimer'); ?>" /></a>
91
+ </td>
92
+ </tr>
93
+ </form>
94
+
95
+ <?php } else { ?>
96
+
97
+ <tr>
98
+ <td class="requete"><?php echo $lMotCle['requete']; ?></td>
99
+ <td class="destination"><?php echo $lMotCle['destination']; ?></td>
100
+ <td class="position">
101
+ <a href="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/motcledeplacer",array('id'=>$lMotCle['id'],'position'=>$lMotCle['position'] - 1))?>"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/fleche-haut.gif" alt="<?php echo $this->__('listerMotCle_monter'); ?>" /></a>
102
+ <span><?php echo $lMotCle['position']; ?></span>
103
+ <a href="<?php echo Mage::helper('adminhtml')->getUrl("liveoptim/adminhtml_liveoptim/motcledeplacer",array('id'=>$lMotCle['id'],'position'=>$lMotCle['position'] + 1))?>"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/fleche-bas.gif" alt="<?php echo $this->__('listerMotCle_descendre'); ?>" /></a>
104
+ </td>
105
+ <td class="action">
106
+ <a href="<?php echo Mage::helper("adminhtml")->getUrl('liveoptim/adminhtml_liveoptim/motcle',array('idModifier'=>$lMotCle['id']))?>"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/modifier.gif" alt="<?php echo $this->__('listerMotCle_modifier'); ?>" /></a>
107
+ <a href="<?php echo Mage::helper('adminhtml')->getUrl('liveoptim/adminhtml_liveoptim/motcleenlever',array('id'=>$lMotCle['id']))?>" onclick="return confirm('<?php echo $this->__('listerMotCle_confirmation_suppression'); ?>');"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default/img' ?>/supprimer.gif" alt="<?php echo $this->__('listerMotCle_supprimer'); ?>" /></a>
108
+ </td>
109
+ </tr>
110
+
111
+ <?php } ?>
112
+
113
+ <?php
114
+ $i++;
115
+ } ?>
116
+ </tbody>
117
+ </table>
118
+ <br />
119
+ <p>
120
+ Copyright 2012
121
+ </p>
122
+ </div>
app/design/adminhtml/default/default/template/liveoptim/listerPattern.php ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+
3
+
4
+ <?php if ( $is_file_get_contents_disable ) { ?>
5
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
6
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
7
+ You need to activate this function in order to run LiveOptim.
8
+ </div>
9
+ <?php } ?>
10
+
11
+ <br />
12
+
13
+ <h2>
14
+ <?php echo __('listerPattern_titre'); ?>
15
+
16
+ <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetreLiveoptimOuvrir();" onmouseout="fenetreLiveoptimFermer();" />
17
+
18
+
19
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo __('accueil_copte_client_actif'); ?>"/>
20
+
21
+
22
+
23
+
24
+ <div id="fenetreLiveoptim">
25
+ <?php echo __('hintPattern',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
26
+ </div>
27
+ </h2>
28
+ <?php echo __('listerPattern_text'); ?>
29
+ <div id="lo_content">
30
+
31
+ <p class="parametrage">
32
+ <?php echo __('listerPattern_boucler'); ?>
33
+ <?php if ($isPatternBoucler == true) { ?><?php echo __('listerPattern_oui'); ?><?php } else { ?><?php echo __('listerPattern_non'); ?><?php } ?>
34
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><?php echo __('modifier');?></a>
35
+ </p>
36
+
37
+ <div id="fenetreInfoPrenuim">
38
+ <?php echo __('hintPrenium'); ?>
39
+ </div>
40
+
41
+ <table class="wp-list-table widefat fixed posts" cellspacing="0">
42
+ <thead>
43
+ <tr>
44
+ <th class="structure"><?php echo __('listerPattern_table_structure'); ?> <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre1LiveoptimOuvrir();" onmouseout="fenetre1LiveoptimFermer();" />
45
+
46
+ <div id="fenetre1Liveoptim" style="display:none">
47
+ <?php echo $this->__('hintPattern',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
48
+ </div></th>
49
+ <th class="position"><?php echo __('listerPattern_table_position'); ?></th>
50
+ <th class="action"><?php echo __('listerPattern_table_action'); ?></th>
51
+ </tr>
52
+ </thead>
53
+
54
+ <tbody>
55
+ <tr>
56
+
57
+
58
+ <td class="structure"><input name="structure" type="text" /></td>
59
+ <td class="position"><input name="position" type="text" /></td>
60
+
61
+ <td class="action"><input class="ajouter" value="<?php echo __('listerPattern_ajouter'); ?>" type="button" onClick="fenetreInfoPreniumOuvrir()" /></td>
62
+
63
+ </form>
64
+ </tr>
65
+
66
+
67
+ <tr>
68
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '<a href="{url}">{mc}</a>' ) ); ?></td>
69
+ <td class="position">
70
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPattern_monter'); ?>" /></a>
71
+ <span>1</span>
72
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPattern_descendre'); ?>" /></a>
73
+ </td>
74
+
75
+ <td class="action">
76
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPattern_modifier'); ?>" /></a>
77
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPattern_supprimer'); ?>" /></a>
78
+
79
+ </td>
80
+ </tr>
81
+
82
+ <tr>
83
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '{mc}' ) ); ?></td>
84
+ <td class="position">
85
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPattern_monter'); ?>" /></a>
86
+ <span>2</span>
87
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPattern_descendre'); ?>" /></a>
88
+ </td>
89
+
90
+ <td class="action">
91
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPattern_modifier'); ?>" /></a>
92
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPattern_supprimer'); ?>" /></a>
93
+
94
+ </td>
95
+ </tr>
96
+
97
+ <tr>
98
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '<a href="{url}">{mc}</a>' ) ); ?></td>
99
+ <td class="position">
100
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPattern_monter'); ?>" /></a>
101
+ <span>3</span>
102
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPattern_descendre'); ?>" /></a>
103
+ </td>
104
+
105
+ <td class="action">
106
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPattern_modifier'); ?>" /></a>
107
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPattern_supprimer'); ?>" /></a>
108
+
109
+ </td>
110
+ </tr>
111
+
112
+ <tr>
113
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '{mc}' ) ); ?></td>
114
+ <td class="position">
115
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPattern_monter'); ?>" /></a>
116
+ <span>4</span>
117
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPattern_descendre'); ?>" /></a>
118
+ </td>
119
+
120
+ <td class="action">
121
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPattern_modifier'); ?>" /></a>
122
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPattern_supprimer'); ?>" /></a>
123
+
124
+ </td>
125
+ </tr>
126
+
127
+
128
+
129
+
130
+
131
+ </tbody>
132
+ </table>
133
+ <br />
134
+ <p>
135
+ Copyright 2012
136
+ </p>
137
+ </div>
app/design/adminhtml/default/default/template/liveoptim/listerPatternCible.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <?php $acheteur = $isCompteActifSurServeur; ?>
3
+ <?php $expire = $isCompteExpire; ?>
4
+ <?php if ( $is_file_get_contents_disable ) { ?>
5
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
6
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
7
+ You need to activate this function in order to run LiveOptim.
8
+ </div>
9
+ <?php } ?>
10
+ <br />
11
+ <h2>
12
+ <?php echo __('listerPatternCible_titre'); ?>
13
+
14
+ <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetreLiveoptimOuvrir();" onmouseout="fenetreLiveoptimFermer();" />
15
+
16
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo __('accueil_copte_client_actif'); ?>"/>
17
+
18
+
19
+
20
+ <div id="fenetreLiveoptim">
21
+ <?php echo __('hintPattern',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
22
+ </div>
23
+ </h2>
24
+ <?php echo __('listerPatternCible_text'); ?>
25
+
26
+ <div id="lo_content">
27
+ <p class="parametrage">
28
+ <?php echo __('listerPatternCible_boucler'); ?>
29
+ <?php echo __('listerPatternCible_non'); ?>
30
+ <a href="#" onclick="fenetreInfoPreniumOuvrir()"><?php echo __('modifier');?></a>
31
+ </p>
32
+
33
+ <div id="dispoPrenium"><span><?php echo __('hintPrenium'); ?></span></div>
34
+ <table style="width: 500px;" cellspacing="0">
35
+ <thead>
36
+ <tr>
37
+ <th class="structure"><?php echo __('listerPatternCible_table_structure'); ?> <img class="hint" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/hint.png" alt="?" onmouseover="fenetre1LiveoptimOuvrir();" onmouseout="fenetre1LiveoptimFermer();" />
38
+
39
+ <div id="fenetre1Liveoptim" style="display:none">
40
+ <?php echo $this->__('hintPattern_cible_structure',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?></div>
41
+ </div>
42
+ <div id="fenetreInfoPrenuim">
43
+ <?php echo __('hintPrenium'); ?>
44
+ </div>
45
+ </th>
46
+ <th class="position"><?php echo __('listerPatternCible_table_position'); ?></th>
47
+ <th class="action"><?php echo __('listerPatternCible_table_action'); ?></th>
48
+ </tr>
49
+ </thead>
50
+
51
+ <tbody>
52
+ <tr>
53
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '<strong>{mc}</strong>' )); ?></td>
54
+ <td class="position">
55
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPatternCible_monter'); ?>" /></a>
56
+ <span>1</span>
57
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPatternCible_descendre'); ?>" /></a>
58
+ </td>
59
+ <td class="action">
60
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPatternCible_modifier'); ?>" /></a>
61
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPatternCible_supprimer'); ?>" /></a>
62
+ </td>
63
+ </tr>
64
+ <tr>
65
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '<em>{mc}</em>' )); ?></td>
66
+ <td class="position">
67
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPatternCible_monter'); ?>" /></a>
68
+ <span>2</span>
69
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPatternCible_descendre'); ?>" /></a>
70
+ </td>
71
+ <td class="action">
72
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPatternCible_modifier'); ?>" /></a>
73
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPatternCible_supprimer'); ?>" /></a>
74
+ </td>
75
+ </tr>
76
+
77
+ <tr>
78
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '{mc}' )); ?></td>
79
+ <td class="position">
80
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPatternCible_monter'); ?>" /></a>
81
+ <span>3</span>
82
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPatternCible_descendre'); ?>" /></a>
83
+ </td>
84
+ <td class="action">
85
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPatternCible_modifier'); ?>" /></a>
86
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPatternCible_supprimer'); ?>" /></a>
87
+ </td>
88
+ </tr>
89
+ <tr>
90
+ <td class="structure"><?php echo Mage::helper('liveoptim')->colorisation( htmlentities( '{mc}' )); ?></td>
91
+ <td class="position">
92
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-haut.gif" alt="<?php echo __('listerPatternCible_monter'); ?>" /></a>
93
+ <span>4</span>
94
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/fleche-bas.gif" alt="<?php echo __('listerPatternCible_descendre'); ?>" /></a>
95
+ </td>
96
+ <td class="action">
97
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/modifier.gif" alt="<?php echo __('listerPatternCible_modifier'); ?>" /></a>
98
+ <a href="#" onClick="fenetreInfoPreniumOuvrir()"><img src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/supprimer.gif" alt="<?php echo __('listerPatternCible_supprimer'); ?>" /></a>
99
+ </td>
100
+ </tr>
101
+ </tbody>
102
+ </table>
103
+ <br />
104
+ <p>
105
+ Copyright 2012
106
+ </p>
107
+ </div>
app/design/adminhtml/default/default/template/liveoptim/pagesRestriction.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <div id="j-main-container">
3
+ <div class="clearfix"></div>
4
+ <?php $acheteur = $isCompteActifSurServeur; ?>
5
+ <?php $expire = $isCompteExpire; ?>
6
+ <?php if ( $is_file_get_contents_disable ) { ?>
7
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
8
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
9
+ You need to activate this function in order to run LiveOptim.
10
+ </div>
11
+ <?php
12
+ }
13
+ ?>
14
+
15
+ <br />
16
+ <h2>
17
+ <?php echo __('menu_pages_restreintes'); ?>
18
+
19
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo ('accueil_copte_client_actif'); ?>"/>
20
+
21
+ <div id="fenetreLiveoptim" style="display:none">
22
+ <?php echo $this->__('hintPageRestriction',Mage::getBaseUrl('skin').'adminhtml/base/default/img/hint.png'); ?>
23
+ </div>
24
+
25
+ </h2>
26
+ <?php echo $this->__('listerBaliseIgnore_text'); ?>
27
+
28
+ <div id="lo_content">
29
+ <div id="fenetreInfoPrenuim">
30
+ <?php echo __('hintPrenium'); ?>
31
+ </div>
32
+
33
+ <table class="table table-striped">
34
+ <thead>
35
+ <tr>
36
+ <th class="structure nowrap center"><?php echo "Page"; ?></th>
37
+ <th width="100px" class="action nowrap center"><?php echo $this->__('listerBaliseIgnore_action'); ?></th>
38
+ </tr>
39
+ </thead>
40
+ <tfoot>
41
+ <tr>
42
+ <td colspan="3">
43
+ <div class="pagination pagination-toolbar">
44
+ <input type="hidden" name="limitstart" value="0" />
45
+ </div>
46
+ </td>
47
+ </tr>
48
+ </tfoot>
49
+ <tbody>
50
+ <tr>
51
+ <td class="page" style="width:300px"><input name="page" type="text" style="width:90%"/></td>
52
+ <td class="action"><input class="ajouter" value="<?php echo $this->__('listerBaliseIgnore_ajouter'); ?>" type="button" onclick="fenetreInfoPreniumOuvrir()" /></td>
53
+ </tr>
54
+
55
+ <tr>
56
+ <td class="structure">http://mywebsite.com/excluded-page</td>
57
+ <td class="action">
58
+ <a href="#" onclick="fenetreInfoPreniumOuvrir()"><img src="components/com_liveoptim/assets/img/supprimer.gif" alt="<?php echo $this->__('listerBaliseIgnore_supprimer'); ?>" /></a>
59
+ </td>
60
+ </tr>
61
+
62
+
63
+ </tbody>
64
+ </table>
65
+
66
+ <div class="accordion" id="accordion1"></div>
67
+
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </div>
app/design/adminhtml/default/default/template/liveoptim/tutoriel.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="liveoptim">
2
+ <?php /*<div id="icon-options-general" class="icon32"></div>*/ ?>
3
+
4
+ <?php if ( $is_file_get_contents_disable ) { ?>
5
+ <div style="background:none repeat scroll 0 0 #FF4040;color:white;display:block;margin:10px 0;padding:5px;text-align:center;width:800px;">
6
+ The <em>file_get_contents ()</em> PHP function is disabled in the server configuration : <strong>allow_url_fopen=0</strong><br />
7
+ You need to activate this function in order to run LiveOptim.
8
+ </div>
9
+ <?php } ?>
10
+
11
+ <h2>
12
+ <?php echo __('tutoriel_titre'); ?>
13
+
14
+
15
+
16
+ <img class="picto_actif" src="<?php echo Mage::getBaseUrl('skin').'adminhtml/base/default' ?>/img/actif.png" title="<?php echo __('accueil_copte_client_actif'); ?>" alt="<?php echo ('accueil_copte_client_actif'); ?>"/>
17
+
18
+ </h2>
19
+ <br />
20
+
21
+ <br /><br />
22
+ <div id="lo_content">
23
+ <p>
24
+ <?php echo __('COM_LIVEOPTIM_TUTO'); ?>
25
+ </p>
26
+ </div>
app/etc/modules/Mkt_LiveOptim.xml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * @category Mkt
5
+ * @package Mkt_LiveOptim
6
+ * @author contac@liveoptim.com
7
+ * @website http://www.liveoptim.com
8
+ */
9
+ -->
10
+ <config>
11
+ <modules>
12
+ <Mkt_LiveOptim>
13
+ <active>true</active>
14
+ <codePool>local</codePool>
15
+ </Mkt_LiveOptim>
16
+ </modules>
17
+ </config>
app/locale/en_GB/Mkt_LiveOptim.csv ADDED
@@ -0,0 +1,505 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //menu
2
+ "menu_accueil","LiveOptim"
3
+ "menu_tutoriel","Tutorial"
4
+ "menu_motcle","Keywords"
5
+ "menu_pattern","Global pattern"
6
+ "menu_patterncible","Target page pattern"
7
+ "menu_baliseignorer","Restrictions"
8
+ "menu_config","Configuration"
9
+ "menu_pages_restreintes","Restricted pages"
10
+
11
+ "all_expire","Your are using a constrained version of LiveOptim.<br />
12
+ Benefit from the effects of LiveOptim for an unlimited number of keywords or configurations. Buy now your License and find all your advanced configurations !"
13
+ "all_non_inscrit","To use the module you must first register. You can register at <a class='link_liveoptim' href='http://www.liveoptim.com' target=\"_blank\">LiveOptim's Website</a>"
14
+ "all_compte_test","You are using a trial version.<br />
15
+ Benefit from the effects of LiveOptim on your site for an unlimited time, buy now your License !"
16
+ "all_bouton_buy","<a class='btn_buy' href='http://www.liveoptim.com/us/paiement/choix-du-mode.html'>BUY</a>"
17
+ "all_bouton_MaJ","<a class='btn_MaJ' href='%s'>updates<br /> available</a>"
18
+
19
+ "parametrage","Configuration"
20
+ "contact","Contact us"
21
+ "facebook","Join us"
22
+ "twitter","Need help?"
23
+ "twitter2","@liveoptim"
24
+ "inscription_message","Register your website to activate LiveOptim"
25
+ "accueil_erreur_pas_de_compte","Inactive account."
26
+ "accueil_inscrivez_vous_ici","Registration"
27
+ "accueil_copte_client_actif","Account activated"
28
+ "accueil_compte_client_inactif","Inactive account."
29
+ "accueil_mots_cles","Keywords"
30
+ "accueil_balise_ignores","Processing exceptions"
31
+ "accueil_pattern","Global tag schema"
32
+ "accueil_pattern_cible","Target page tag schema"
33
+ "accueil_nouveau_mdp","New password"
34
+ "modifier","Modify"
35
+
36
+
37
+
38
+ // connexion.php
39
+ "connexion_1","Admin access"
40
+ "connexion_content","Enter your password below to log in as LiveOptim <sup>&copy;</sup>administrator"
41
+ "connexion_titre","Password:"
42
+ "connexion_connexion","Log in"
43
+ "connexion_messageErreur_1","Incorrect password"
44
+
45
+
46
+
47
+ // nouveauMdp.php
48
+ "nouveauMdp_titre","Welcome to LiveOptim<sup>&copy;</sup>"
49
+ "nouveauMdp_content","
50
+ Specify the password that will connect you to
51
+ the adminstration module, and guard it carefully.
52
+ "
53
+ "nouveauMdp_titre","Choose a password :"
54
+ "nouveauMdp_ancien_mdp","Old password :"
55
+ "nouveauMdp_nouveau_mdp","Password :"
56
+ "nouveauMdp_nouveau_mdp_2","Confirmation :"
57
+ "nouveauMdp_connexion","Save"
58
+ "nouveauMdp_messageErreur_1","Invalid passwords "
59
+
60
+
61
+
62
+ // accueil.php
63
+ "accueil_accueil","Home"
64
+ "accueil_titre","Welcome to your LiveOptim dashboard"
65
+ "accueil_contenu","
66
+
67
+ <p>From this interface, you can configure how LiveOptim works on your site:</p>
68
+
69
+ <ul>
70
+
71
+ <li>
72
+
73
+ Key phrases
74
+
75
+ <ul>
76
+
77
+ <li>
78
+
79
+ <a href='%s'>Add key phrases</a>
80
+
81
+ <p>
82
+
83
+ Add or modify your list of strategic key phrases and
84
+
85
+ the URLs for associated pages
86
+
87
+ </p>
88
+
89
+ </li>
90
+
91
+ </ul>
92
+
93
+ </li>
94
+
95
+ <li>
96
+
97
+ Configuration:
98
+
99
+ <ul>
100
+
101
+ <li>
102
+
103
+ <a href='%s'>Global tag schema</a>
104
+
105
+ <p>
106
+
107
+ Tags applied by default<span class='lo_ps'>*</span> by the function that
108
+ handles the key phrases in your content, and their order of appearance
109
+
110
+ </p>
111
+
112
+ </li>
113
+
114
+ <li>
115
+
116
+ <a href='%s'>Tag schema for target page</a><span class='txt_prenium'>(premium version)</span>
117
+
118
+ <p>
119
+
120
+ Reconfigure tags for key phrases when
121
+
122
+ processed on their target page(s)
123
+
124
+ </p>
125
+
126
+ </li>
127
+
128
+ <li>
129
+
130
+ <a href='%s'>Processing Exceptions</a>
131
+
132
+ <p>
133
+
134
+ Tags delimiting content that must not be processed by the
135
+ function<span class='lo_ps'>*</span>
136
+
137
+ </p>
138
+
139
+ </li>
140
+
141
+ <li>
142
+
143
+ <a href='%s'>Pages without LiveOptim\'s optimisations</a><span class='txt_prenium'>(premium version)</span>
144
+
145
+ <p>
146
+
147
+ Modify the pages in which the content must not be handled by the function
148
+
149
+ </p>
150
+
151
+ </li>
152
+
153
+ </ul>
154
+
155
+ </li>
156
+
157
+ </ul>
158
+ <p class='txt_etoile'><i><span class='lo_ps'>*</span> Modification available in the premium version </i></p>
159
+ "
160
+
161
+
162
+
163
+ // tutoriel.php
164
+ "tutoriel_titre","Tutorial"
165
+ "COM_LIVEOPTIM_TUTO","
166
+ <div >
167
+ <img src='http://www.liveoptim.com/img/layout/video.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
168
+ <div style='padding-top:80px;'>
169
+ <p style='font-size:18px'>
170
+ Let us guide you through the tutorial video by <u><a href='http://www.youtube.com/watch?v=b2rbn4gphYc' target='_blank'>clicking here</a></u>
171
+ </p>
172
+ </div>
173
+ </div>
174
+ <div>
175
+ <img src='http://www.liveoptim.com/img/layout/book.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
176
+ <div style='padding-top:80px; margin-top:70px;'>
177
+ <p style='font-size:18px'>
178
+ Download the full tutorial for the Liveoptim plugin for Magento by <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_uk.pdf' target='_blank'>clicking here</a></u>
179
+ </p>
180
+ </div>
181
+ </div>"
182
+
183
+ "tutoriel_contenu","<p>Please download the full tutorial for LiveOptim : <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_uk.pdf' target=\"_blank\">Download</a></u></p>"
184
+
185
+
186
+
187
+ // listerBaliseIgnore.php
188
+ "hintBaliseIgnore","
189
+ <div class='hint2'><img src='%s' alt='?' />
190
+ <p>Indicate here the tags that delimit content that must not be processed by LiveOptim</p>
191
+ </div>"
192
+ "listerBaliseIgnore_accueil","Home"
193
+ "listerBaliseIgnore_balises_ignores","Processing exceptions"
194
+ "listerBaliseIgnore_titre","Processing exceptions"
195
+ "listerBaliseIgnore_nom","Surname"
196
+ "listerBaliseIgnore_action","Action"
197
+ "listerBaliseIgnore_confirmation_suppression","Are you sure you want to delete this restriction?"
198
+ "listerBaliseIgnore_supprimer","Delete"
199
+ "listerBaliseIgnore_modifier","Modify"
200
+ "listerBaliseIgnore_ajouter","Add"
201
+
202
+
203
+
204
+ // layout.php, layoutConnexion.php, layoutNouveauMdp.php
205
+ "layout_title","LiveOptim Admin"
206
+ "layout_deconnexion","Disconnect"
207
+ "layout_liveoptim","LiveOptim"
208
+
209
+
210
+
211
+ // listerMotCle.php
212
+ "COM_LIVEOPTIM_BOUTON_RANKING","<a class='btn_rank' href='#' onclick='ajaxOuvrirFenetreNouveauRapport();'>Start ranking</a>"
213
+ "COM_LIVEOPTIM_MS_APRES","Please log on <a id="lien_so" href="http://www.statoptim.com/controleur.php?cible=identification&cible2=apercu-rapport&recherche=ranking&id_projet=" target="_blank" >Statoptim</a> to see the position of your site.
214
+ Please have your access (mailed to your registration)."
215
+ "COM_LIVEOPTIM_MS_AVANT","Please wait while the ranking.(Do not close this window)"
216
+ "hintMotCle","
217
+ <div class='hint2'>
218
+ <img src='%s' alt='?'/>
219
+ <p>Enter the strategic key phrases for your positioning,the associated target page(s) and the order in which they must be processed (if you define more than one target page for the same key phrase)
220
+ </p>
221
+ <h2>Tips:</h2>
222
+ <ul>
223
+ <li>Vary the Target pages based on your key phrases.</li>
224
+ <li>Do not modify the target pages of a key phrase too often</li>
225
+ </ul>
226
+ </div>"
227
+ "listerMotCle_accueil","Home"
228
+ "listerMotCle_mots_cles","Keywords"
229
+ "listerMotCle_titre","Managing key phrases and target pages"
230
+ "listerMotCle_table_requete","Keyword"
231
+ "listerMotCle_table_destination","Address of target page (<em>with prefix HTTP://)"
232
+ "listerMotCle_table_position","Position"
233
+ "listerMotCle_table_action","Action"
234
+ "listerMotCle_confirmation_suppression","Are you sure you want to delete this keyword?"
235
+ "listerMotCle_supprimer","Delete"
236
+ "listerMotCle_modifier","Modify"
237
+ "listerMotCle_monter","Send higher"
238
+ "listerMotCle_descendre","Send lower"
239
+ "listerMotCle_ajouter","Add"
240
+ "listerMotCle_table_requete_text","
241
+ <div style='margin-top:20px'>
242
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space: Please enter your keywords here to boost your traffic!</span></p>
243
+ <ol style='font-size:14px;'>
244
+ <li>Add a keyword in 'Request'</li>
245
+ <li>Associate it with a page on your site</li>
246
+ <li>Click 'add', and do the same for each keyword.</li>
247
+ </ol>
248
+ <em>(Please note: Get more tips by clicking <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> next to each element)</em><br><br>
249
+ </div>"
250
+ "hintMotCle_requete","
251
+ <div class='hint2'>
252
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
253
+ <p>Enter here the key phrases by which you want to be visible in the search engines.</p>
254
+ <h2>Recommendations for use:</h2>
255
+ <ul>
256
+ <span class='mc'><li >Multiply the input keys on your site: <br />Mix generic keywords and keywords with longer tails.</li></span><br />
257
+ <li>
258
+ Example: <br />
259
+ generic keyword: 'fashion'<br />
260
+ long-tail keyword: 'Women's fashion blog'<br />
261
+ <br />
262
+ generic keyword: 'travel'<br />
263
+ long-tail keyword: 'Travel London cheap'<br />
264
+ </li><br />
265
+ <li>These keywords&#44; when used individually&#44; generate some traffic&#44; but when they're combined&#44; they can increase your traffic by up to 80&#37;.</li>
266
+ </ul>
267
+ </div>"
268
+ "hintMotCle_destination","
269
+ <div class='hint2'>
270
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
271
+ <p>Check one or more pages related to the keyword. This is the page you want to position using the key phrase.</p>
272
+ <h2>Recommendations for use :</h2>
273
+ <ul>
274
+ <li>Enter multiple URLs for the same keyword to diversify the target pages.<br />
275
+ You just have to add the same keyword using a different URL.
276
+ </li>
277
+ </ul>
278
+ </div>"
279
+ "hintMotCle_position","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Using the same keyword, you can define multiple associated pages. The position is only used in this case.
280
+
281
+ </p>
282
+ <h2>Recommendations for use :</h2>
283
+ <ul>
284
+ <li>Enter multiple URLs for one keyword in order to diversify the target pages.<br />
285
+ </li>
286
+ <li>The URLs of these pages are then treated according to an order of priority that is attributed to them and that you can define(using the arrows or by entering a value).
287
+ </li>
288
+ <li>The function will then create a first link to the first url, and a second link to a second url, for the same content.
289
+ </li>
290
+ <li>Please note : is not the order of the keywords that counts, but the order of the URLs.
291
+ </li>
292
+ </ul> </div> "
293
+ "listerBaliseIgnore_text1","
294
+ <div style='margin-top:20px'>
295
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122">Welcome to your Optimization space : Here you'll find the the tags you need to use for the function!</span></p>
296
+ <span style='font-size :18px; font-weight:bold'>This is an advanced setting. We recommend that you leave the default setting.<br/><br/></span>
297
+ </div>"
298
+ "listerPattern_text","
299
+ <div style='margin-top:20px'>
300
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space : Personalize the optimizations applied to your content here!!</span></p>
301
+ <ol style='font-size:14px;'>
302
+ <li>Solution 1: Leave the default setting.</li>
303
+ <li>Solution 2: Personalize it to conform to your site!!</li>
304
+ </ol>
305
+ <em>(Please note: Get more tips by clicking <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> next to each element)</em>
306
+ </div>"
307
+ "listerPatternCible_text","
308
+ <div style='margin-top:20px'>
309
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space :
310
+ Personalize the optimizations applied specifically to target pages (i.e. pages associated with a keyword)!!
311
+ </span>
312
+ </p>
313
+ <ol style='font-size:14px;'>
314
+ <li>Solution 1: Leave the default setting.</li>
315
+ <li>Solution 2: Personalize it to conform to your site!!</li>
316
+ </ol>
317
+ <em>(Please note: Get more tips by clicking <img class='hint' src='/skin/adminhtml/base/default/img/hint.png'alt='?'> next to each element)</em>
318
+ </div>"
319
+ "listerBaliseIgnore_text","
320
+ <div style='margin-top:20px'>
321
+ <p>
322
+ <span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space : Personalize the pages processed by LiveOptim !</span>
323
+ </p>
324
+ <span style='font-size: 18px;font-weight:bold; '>
325
+ Add the page of your site that you do not want to optimize with LiveOptim !
326
+ </span>
327
+ </div>"
328
+
329
+ "hintPattern_config","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Activate / deactivate the function via this button
330
+ </p> </div> "
331
+ "hintPattern_config_limite","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Set a high limit for optimization
332
+ </p>
333
+ <h2>Recommendations for use :</h2>
334
+ <ul>
335
+ <li>By default, there is a limit of 5 optimizations for the same keyword in a page.<br />
336
+ </li>
337
+ <li>We advise you not to go beyond this.</li>
338
+ <li>
339
+ You can reduce this value if you want !</li>
340
+ </ul> </div>"
341
+ "hintPattern_config_Export","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png'alt='?'/> <p>Export your keyword/target page database and your settings before disabling the plugin or update! </p> </div>"
342
+ "hintPattern_config_csv","<div class='hint2> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p> You can import your settings, by simply selecting the table you want to import, or import all tables (that is, six tables) as a zip file.
343
+ </p> </div>"
344
+ // listerPattern.php
345
+ "hintPattern","
346
+ <div class='hint2'>
347
+ <img src='%s' alt='?'/>
348
+ <p>
349
+ Configure the tags added by LiveOptim on a given keyword every time it is encountered on a page (excluding target pages), by using <span class='mc'>{mc}</span> to indicate the key phrase and<span class='url'>{url}</span> to indicate the URL for the links. You can also choose to process the schema as a loop.
350
+ </p>
351
+ <h2>For example, to run the process below: </h2>
352
+ <ul>
353
+ <li>&lt;strong&gt;<span class='mc'>Key phrase</span>&lt;/strong&gt;<em> (first occurence)</em></li>
354
+ <li>&lt;a href=&#34;<span class='url'>http://www.example.com/page-cible.html</span>&#34;&gt;<span class='mc'>Key phrase</span>&lt;/a&gt;<em>(second occurence)</em></li>
355
+ <li><span class='mc'>Key phrase</span><em> (third occurence)</em></li>
356
+ </ul>
357
+ <h2>Populate the following structure</h2>
358
+ <ul>
359
+ <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
360
+ <li>&lt;a href=&#34;<span class='url'>{url}</span>&#34;&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
361
+ <li><span class='mc'>{mc}</span></li>
362
+ </ul>
363
+ </div>"
364
+ "listerPattern_pattern","Global tag schema"
365
+ "listerPattern_titre","Global tag schema"
366
+ "listerPattern_boucler","Process as loop : "
367
+ "listerPattern_oui","Yes"
368
+ "listerPattern_non","No"
369
+ "listerPattern_table_structure","Structure"
370
+ "listerPattern_table_position","Position"
371
+ "listerPattern_table_action","Action"
372
+ "listerPattern_confirmation_suppression","Are you sure you want to delete this schema?"
373
+ "listerPattern_supprimer","Delete"
374
+ "listerPattern_modifier","Modify"
375
+ "listerPattern_monter","Send higher"
376
+ "listerPattern_descendre","Send lower"
377
+ "listerPattern_ajouter","Add"
378
+
379
+
380
+
381
+ // listerPatternCible.php
382
+ "hintPatternCible","
383
+ <div class='hint2'>
384
+ <img src='%s' alt='?'/>
385
+ <p>Configure the tags added by LiveOptim on the same keyword every time it is encountered on an associated target page, by using <span class="mc">{mc}</span> to indicate the key phrase and <span class="url">{url}</span> to indicate the URL for the links. You can also choose to process the schema as a loop.</p>
386
+ <h2>For example, run the process below: </h2>
387
+ <ul>
388
+ <li>&lt;strong&gt;<span class='mc'>Key phrase</span>&lt;/strong&gt;</li>
389
+ <li>&lt;a href=�<span class='url'>http://www.example.com/page-cible.html</span>�&gt;<span class='mc'>Key phrase</span>&lt;/a&gt;</li>
390
+ <li><span class="mc">Key phrase</span></li></ul><h2>Populate the following structure</h2><ul><li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
391
+ <li>&lt;a href=�<span class='url'>{url}</span>�&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
392
+ <li><span class="mc">{mc}</span></li>
393
+ </ul>
394
+ </div>"
395
+ "listerPatternCible_accueil","Home"
396
+ "listerPatternCible_pattern","Target page tag schema"
397
+ "listerPatternCible_titre","Target page tag schema"
398
+ "listerPatternCible_boucler","Loop"
399
+ "listerPatternCible_oui","Yes"
400
+ "listerPatternCible_non","No"
401
+ "listerPatternCible_table_structure","Structure"
402
+ "listerPatternCible_table_position","Position"
403
+ "listerPatternCible_table_action","Action"
404
+ "listerPatternCible_confirmation_suppression","Are you sure you want to delete this schema?"
405
+ "listerPatternCible_supprimer","Delete"
406
+ "listerPatternCible_modifier","Modify"
407
+ "listerPatternCible_monter","Send higher"
408
+ "listerPatternCible_descendre","Send lower"
409
+ "listerPatternCible_ajouter","Add"
410
+
411
+ "config_limite_capping","Limite"
412
+ "config_valcap_sup","You are about to use a value not recommended by MKT. See www.liveoptim.com"
413
+ "config_valcap_nan","The limit must be an integer"
414
+ "config_valcap_nan","Please enter a value"
415
+ "config_export_csv","Do a backup of the LiveOptim configuration"
416
+ "config_table_file","File:"
417
+ "config_table_all","All (zip)"
418
+ "config_fichier_vide","Please upload a file"
419
+ "config_fichier_ncsv","The file is not a CSV"
420
+ "config_fichier_nzip","The file is not a ZIP archive"
421
+ "config_tout_cocher","Tick all boxes"
422
+ "config_tout_decocher","Untick all boxes"
423
+ "config_bouton_export","Export CSV"
424
+ "config_importation","Table to import: "
425
+ "config_import_validation","Confirm"
426
+ "config_backup_title","Parameter backup"
427
+ "config_import_title","Restoring Settings"
428
+ "config_backup_sql","SQL Backup"
429
+
430
+ //Cache
431
+ "COM_LIVEOPTIM_CACHE_TITRE","Cache Management"
432
+ "COM_LIVEOPTIM_CACHE_TEXT","LiveOptim uses a cache to speed up the processing of your pages <br />
433
+ Click below to delete this cache"
434
+ "COM_LIVEOPTIM_BTN_CACHE_VIDE","DELETE CACHE"
435
+ "COM_LIVEOPTIM_BTN_CACHE_ACTIV","ACTIVATE"
436
+
437
+ //version FREE
438
+ "COM_LIVEOPTIM_LICENCE_FREE","You are currently use the free version of LiveOptim, however some functionalities are disabled. <br />
439
+ <b>Upgrade to the Premium version to benefit all the available functionalities:<br />
440
+ FREE TEST FOR 30 DAYS.</b>"
441
+ "COM_LIVEOPTIM_BOUTON_PRENIUM","<a class='btn_Prenuim' href='#' onclick='displayInfoPrenium()'><b>PREMIUM UPDATE</b> <br /><i>(30 days free)</i></a>"
442
+ "hintPrenium","<div onclick='fenetreInfoPreniumFermer()' class='hint2'> <img alt='?' src='/skin/adminhtml/base/default/img/hint.png'><br> This funtionality is not available in free version.<br /> Upgrade to the Premium version for benefiting it. </div>"
443
+ "COM_LIVEOPTIM_MSG_MOT_CLE","You can add only 10 keywords associated to each page. Upgrade your LiveOptim: no more limits with keywords."
444
+ "COM_LIVEOPTIM_MSG_PAGES_RESTREINTE","You are allowed to use only 10 restricted pages. With Premium version you will have no limits."
445
+
446
+ //Inscription
447
+ "inscription_titre","Registration"
448
+ "inscription_texte","Using the plugin requires creating an account with our services"
449
+ "inscription_email","Email : "
450
+ "inscription_url","URL of your site:"
451
+ "inscription_pass","Password for your account:"
452
+ "inscription_btnInscrip","START OPTIMIZATION"
453
+
454
+ "inscription_mail_vide","You must enter an email address"
455
+ "inscription_mail_trop_long","You must enter a shorter email address"
456
+ "inscription_mail_invalid","You must enter a valid email address"
457
+ "inscription_url_vide","You must enter the domain name on which LiveOptim<sup>&copy;</sup> will be activated"
458
+ "inscription_url_trop_long","You must enter a shorter domain name"
459
+ "inscription_url_deja_util","This domain name is already in use"
460
+ "inscription_compte_already_create_wrong_email","The account already exists! Please indicate the address with which you registered."
461
+ "inscription_compte_already_create_wrong_password","Existing account, please enter the password of your account LiveOptim."
462
+
463
+
464
+ //Fenetre Prenuim
465
+
466
+ "COM_LIVEOPTIM_FNT_PRE_ALL_PRODUCT","ALL OUR PRODUCTS"
467
+ "COM_LIVEOPTIM_FNT_PRE_OTHER_PRODUCT","See also the other products in the range of LiveOptim"
468
+ "COM_LIVEOPTIM_FNT_PRE_MORE_INFO","MORE INFO"
469
+
470
+ "COM_LIVEOPTIM_FNT_PRE_TXT_MKT900","1-year SEO service for your website.<br />
471
+ Free hotline, 7-day-a-week timeline, support team, etc...<br />"
472
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_MKT900","&euro;900 INC. TAXES"
473
+ "COM_LIVEOPTIM_FNT_PRE_TXT_SO","All your SEO analyses on 1 platform!<br />
474
+ Site audit, ranking on demand, analytic monitoring of positions, etc...<br />"
475
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_SO","&euro;9.90 INC. TAXES / MONTH"
476
+ "COM_LIVEOPTIM_FNT_PRE_COMING_SOON","COMING SOON"
477
+
478
+
479
+ "COM_LIVEOPTIM_FNT_PRE_UN_KEY","Unlimited Keywords"
480
+ "COM_LIVEOPTIM_FNT_PRE_UN_TARGET","Unlimited Target Pages"
481
+ "COM_LIVEOPTIM_FNT_PRE_CACHE","Cache system included<br />(Loading time optimization)"
482
+ "COM_LIVEOPTIM_FNT_PRE_CUSTOM_TAG","Customization of tags order"
483
+ "COM_LIVEOPTIM_FNT_PRE_TARGET","Specific Tag Schema on Target pages"
484
+ "COM_LIVEOPTIM_FNT_PRE_LOOP","Option : Tagging loop"
485
+ "COM_LIVEOPTIM_FNT_PRE_CAPPING","Capping System <br />(Suroptimization Alert)"
486
+ "COM_LIVEOPTIM_FNT_PRE_EXCLUD_PAGES","Option : excluded pages (without tagging)"
487
+ "COM_LIVEOPTIM_FNT_PRE_EXECEPTION","Preconfigure exceptions tags"
488
+ "COM_LIVEOPTIM_FNT_PRE_SUPPORT","Premium Support"
489
+ "COM_LIVEOPTIM_FNT_PRE_TWITER","Twitter Timeline Support 24/7"
490
+ "COM_LIVEOPTIM_FNT_PRE_HOTLINE","Free Hotline"
491
+ "COM_LIVEOPTIM_FNT_PRE_CHAT","LiveChat"
492
+ "COM_LIVEOPTIM_FNT_PRE_UPGRADE","UPGRADE"
493
+
494
+
495
+
496
+ "pages_restrintes","Page"
497
+
498
+ // code401.php
499
+ "code401_titre","Code 401."
500
+
501
+ // code403.php
502
+ "code403_titre","Code 403."
503
+
504
+ // code404.php
505
+ "code404_titre","Code 404."
app/locale/en_US/Mkt_LiveOptim.csv ADDED
@@ -0,0 +1,505 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //menu
2
+ "menu_accueil","LiveOptim"
3
+ "menu_tutoriel","Tutorial"
4
+ "menu_motcle","Keywords"
5
+ "menu_pattern","Global pattern"
6
+ "menu_patterncible","Target page pattern"
7
+ "menu_baliseignorer","Restrictions"
8
+ "menu_config","Configuration"
9
+ "menu_pages_restreintes","Restricted pages"
10
+
11
+ "all_expire","Your are using a constrained version of LiveOptim.<br />
12
+ Benefit from the effects of LiveOptim for an unlimited number of keywords or configurations. Buy now your License and find all your advanced configurations !"
13
+ "all_non_inscrit","To use the module you must first register. You can register at <a class='link_liveoptim' href='http://www.liveoptim.com' target=\"_blank\">LiveOptim's Website</a>"
14
+ "all_compte_test","You are using a trial version.<br />
15
+ Benefit from the effects of LiveOptim on your site for an unlimited time, buy now your License !"
16
+ "all_bouton_buy","<a class='btn_buy' href='http://www.liveoptim.com/us/paiement/choix-du-mode.html'>BUY</a>"
17
+ "all_bouton_MaJ","<a class='btn_MaJ' href='%s'>updates<br /> available</a>"
18
+
19
+ "parametrage","Configuration"
20
+ "contact","Contact us"
21
+ "facebook","Join us"
22
+ "twitter","Need help?"
23
+ "twitter2","@liveoptim"
24
+ "inscription_message","Register your website to activate LiveOptim"
25
+ "accueil_erreur_pas_de_compte","Inactive account."
26
+ "accueil_inscrivez_vous_ici","Registration"
27
+ "accueil_copte_client_actif","Account activated"
28
+ "accueil_compte_client_inactif","Inactive account."
29
+ "accueil_mots_cles","Keywords"
30
+ "accueil_balise_ignores","Processing exceptions"
31
+ "accueil_pattern","Global tag schema"
32
+ "accueil_pattern_cible","Target page tag schema"
33
+ "accueil_nouveau_mdp","New password"
34
+ "modifier","Modify"
35
+
36
+
37
+
38
+ // connexion.php
39
+ "connexion_1","Admin access"
40
+ "connexion_content","Enter your password below to log in as LiveOptim <sup>&copy;</sup>administrator"
41
+ "connexion_titre","Password:"
42
+ "connexion_connexion","Log in"
43
+ "connexion_messageErreur_1","Incorrect password"
44
+
45
+
46
+
47
+ // nouveauMdp.php
48
+ "nouveauMdp_titre","Welcome to LiveOptim<sup>&copy;</sup>"
49
+ "nouveauMdp_content","
50
+ Specify the password that will connect you to
51
+ the adminstration module, and guard it carefully.
52
+ "
53
+ "nouveauMdp_titre","Choose a password :"
54
+ "nouveauMdp_ancien_mdp","Old password :"
55
+ "nouveauMdp_nouveau_mdp","Password :"
56
+ "nouveauMdp_nouveau_mdp_2","Confirmation :"
57
+ "nouveauMdp_connexion","Save"
58
+ "nouveauMdp_messageErreur_1","Invalid passwords "
59
+
60
+
61
+
62
+ // accueil.php
63
+ "accueil_accueil","Home"
64
+ "accueil_titre","Welcome to your LiveOptim dashboard"
65
+ "accueil_contenu","
66
+
67
+ <p>From this interface, you can configure how LiveOptim works on your site:</p>
68
+
69
+ <ul>
70
+
71
+ <li>
72
+
73
+ Key phrases
74
+
75
+ <ul>
76
+
77
+ <li>
78
+
79
+ <a href='%s'>Add key phrases</a>
80
+
81
+ <p>
82
+
83
+ Add or modify your list of strategic key phrases and
84
+
85
+ the URLs for associated pages
86
+
87
+ </p>
88
+
89
+ </li>
90
+
91
+ </ul>
92
+
93
+ </li>
94
+
95
+ <li>
96
+
97
+ Configuration:
98
+
99
+ <ul>
100
+
101
+ <li>
102
+
103
+ <a href='%s'>Global tag schema</a>
104
+
105
+ <p>
106
+
107
+ Tags applied by default<span class='lo_ps'>*</span> by the function that
108
+ handles the key phrases in your content, and their order of appearance
109
+
110
+ </p>
111
+
112
+ </li>
113
+
114
+ <li>
115
+
116
+ <a href='%s'>Tag schema for target page</a><span class='txt_prenium'>(premium version)</span>
117
+
118
+ <p>
119
+
120
+ Reconfigure tags for key phrases when
121
+
122
+ processed on their target page(s)
123
+
124
+ </p>
125
+
126
+ </li>
127
+
128
+ <li>
129
+
130
+ <a href='%s'>Processing Exceptions</a>
131
+
132
+ <p>
133
+
134
+ Tags delimiting content that must not be processed by the
135
+ function<span class='lo_ps'>*</span>
136
+
137
+ </p>
138
+
139
+ </li>
140
+
141
+ <li>
142
+
143
+ <a href='%s'>Pages without LiveOptim\'s optimisations</a><span class='txt_prenium'>(premium version)</span>
144
+
145
+ <p>
146
+
147
+ Modify the pages in which the content must not be handled by the function
148
+
149
+ </p>
150
+
151
+ </li>
152
+
153
+ </ul>
154
+
155
+ </li>
156
+
157
+ </ul>
158
+ <p class='txt_etoile'><i><span class='lo_ps'>*</span> Modification available in the premium version </i></p>
159
+ "
160
+
161
+
162
+
163
+ // tutoriel.php
164
+ "tutoriel_titre","Tutorial"
165
+ "COM_LIVEOPTIM_TUTO","
166
+ <div >
167
+ <img src='http://www.liveoptim.com/img/layout/video.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
168
+ <div style='padding-top:80px;'>
169
+ <p style='font-size:18px'>
170
+ Let us guide you through the tutorial video by <u><a href='http://www.youtube.com/watch?v=b2rbn4gphYc' target='_blank'>clicking here</a></u>
171
+ </p>
172
+ </div>
173
+ </div>
174
+ <div>
175
+ <img src='http://www.liveoptim.com/img/layout/book.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
176
+ <div style='padding-top:80px; margin-top:70px;'>
177
+ <p style='font-size:18px'>
178
+ Download the full tutorial for the Liveoptim plugin for Magento by <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_uk.pdf' target='_blank'>clicking here</a></u>
179
+ </p>
180
+ </div>
181
+ </div>"
182
+
183
+ "tutoriel_contenu","<p>Please download the full tutorial for LiveOptim : <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_uk.pdf' target=\"_blank\">Download</a></u></p>"
184
+
185
+
186
+
187
+ // listerBaliseIgnore.php
188
+ "hintBaliseIgnore","
189
+ <div class='hint2'><img src='%s' alt='?' />
190
+ <p>Indicate here the tags that delimit content that must not be processed by LiveOptim</p>
191
+ </div>"
192
+ "listerBaliseIgnore_accueil","Home"
193
+ "listerBaliseIgnore_balises_ignores","Processing exceptions"
194
+ "listerBaliseIgnore_titre","Processing exceptions"
195
+ "listerBaliseIgnore_nom","Surname"
196
+ "listerBaliseIgnore_action","Action"
197
+ "listerBaliseIgnore_confirmation_suppression","Are you sure you want to delete this restriction?"
198
+ "listerBaliseIgnore_supprimer","Delete"
199
+ "listerBaliseIgnore_modifier","Modify"
200
+ "listerBaliseIgnore_ajouter","Add"
201
+
202
+
203
+
204
+ // layout.php, layoutConnexion.php, layoutNouveauMdp.php
205
+ "layout_title","LiveOptim Admin"
206
+ "layout_deconnexion","Disconnect"
207
+ "layout_liveoptim","LiveOptim"
208
+
209
+
210
+
211
+ // listerMotCle.php
212
+ "COM_LIVEOPTIM_BOUTON_RANKING","<a class='btn_rank' href='#' onclick='ajaxOuvrirFenetreNouveauRapport();'>Start ranking</a>"
213
+ "COM_LIVEOPTIM_MS_APRES","Please log on <a id="lien_so" href="http://www.statoptim.com/controleur.php?cible=identification&cible2=apercu-rapport&recherche=ranking&id_projet=" target="_blank" >Statoptim</a> to see the position of your site.
214
+ Please have your access (mailed to your registration)."
215
+ "COM_LIVEOPTIM_MS_AVANT","Please wait while the ranking.(Do not close this window)"
216
+ "hintMotCle","
217
+ <div class='hint2'>
218
+ <img src='%s' alt='?'/>
219
+ <p>Enter the strategic key phrases for your positioning,the associated target page(s) and the order in which they must be processed (if you define more than one target page for the same key phrase)
220
+ </p>
221
+ <h2>Tips:</h2>
222
+ <ul>
223
+ <li>Vary the Target pages based on your key phrases.</li>
224
+ <li>Do not modify the target pages of a key phrase too often</li>
225
+ </ul>
226
+ </div>"
227
+ "listerMotCle_accueil","Home"
228
+ "listerMotCle_mots_cles","Keywords"
229
+ "listerMotCle_titre","Managing key phrases and target pages"
230
+ "listerMotCle_table_requete","Keyword"
231
+ "listerMotCle_table_destination","Address of target page (<em>with prefix HTTP://)"
232
+ "listerMotCle_table_position","Position"
233
+ "listerMotCle_table_action","Action"
234
+ "listerMotCle_confirmation_suppression","Are you sure you want to delete this keyword?"
235
+ "listerMotCle_supprimer","Delete"
236
+ "listerMotCle_modifier","Modify"
237
+ "listerMotCle_monter","Send higher"
238
+ "listerMotCle_descendre","Send lower"
239
+ "listerMotCle_ajouter","Add"
240
+ "listerMotCle_table_requete_text","
241
+ <div style='margin-top:20px'>
242
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space: Please enter your keywords here to boost your traffic!</span></p>
243
+ <ol style='font-size:14px;'>
244
+ <li>Add a keyword in 'Request'</li>
245
+ <li>Associate it with a page on your site</li>
246
+ <li>Click 'add', and do the same for each keyword.</li>
247
+ </ol>
248
+ <em>(Please note: Get more tips by clicking <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> next to each element)</em><br><br>
249
+ </div>"
250
+ "hintMotCle_requete","
251
+ <div class='hint2'>
252
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
253
+ <p>Enter here the key phrases by which you want to be visible in the search engines.</p>
254
+ <h2>Recommendations for use:</h2>
255
+ <ul>
256
+ <span class='mc'><li >Multiply the input keys on your site: <br />Mix generic keywords and keywords with longer tails.</li></span><br />
257
+ <li>
258
+ Example: <br />
259
+ generic keyword: 'fashion'<br />
260
+ long-tail keyword: 'Women's fashion blog'<br />
261
+ <br />
262
+ generic keyword: 'travel'<br />
263
+ long-tail keyword: 'Travel London cheap'<br />
264
+ </li><br />
265
+ <li>These keywords&#44; when used individually&#44; generate some traffic&#44; but when they're combined&#44; they can increase your traffic by up to 80&#37;.</li>
266
+ </ul>
267
+ </div>"
268
+ "hintMotCle_destination","
269
+ <div class='hint2'>
270
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
271
+ <p>Check one or more pages related to the keyword. This is the page you want to position using the key phrase.</p>
272
+ <h2>Recommendations for use :</h2>
273
+ <ul>
274
+ <li>Enter multiple URLs for the same keyword to diversify the target pages.<br />
275
+ You just have to add the same keyword using a different URL.
276
+ </li>
277
+ </ul>
278
+ </div>"
279
+ "hintMotCle_position","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Using the same keyword, you can define multiple associated pages. The position is only used in this case.
280
+
281
+ </p>
282
+ <h2>Recommendations for use :</h2>
283
+ <ul>
284
+ <li>Enter multiple URLs for one keyword in order to diversify the target pages.<br />
285
+ </li>
286
+ <li>The URLs of these pages are then treated according to an order of priority that is attributed to them and that you can define(using the arrows or by entering a value).
287
+ </li>
288
+ <li>The function will then create a first link to the first url, and a second link to a second url, for the same content.
289
+ </li>
290
+ <li>Please note : is not the order of the keywords that counts, but the order of the URLs.
291
+ </li>
292
+ </ul> </div> "
293
+ "listerBaliseIgnore_text1","
294
+ <div style='margin-top:20px'>
295
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122">Welcome to your Optimization space : Here you'll find the the tags you need to use for the function!</span></p>
296
+ <span style='font-size :18px; font-weight:bold'>This is an advanced setting. We recommend that you leave the default setting.<br/><br/></span>
297
+ </div>"
298
+ "listerPattern_text","
299
+ <div style='margin-top:20px'>
300
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space : Personalize the optimizations applied to your content here!!</span></p>
301
+ <ol style='font-size:14px;'>
302
+ <li>Solution 1: Leave the default setting.</li>
303
+ <li>Solution 2: Personalize it to conform to your site!!</li>
304
+ </ol>
305
+ <em>(Please note: Get more tips by clicking <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> next to each element)</em>
306
+ </div>"
307
+ "listerPatternCible_text","
308
+ <div style='margin-top:20px'>
309
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space :
310
+ Personalize the optimizations applied specifically to target pages (i.e. pages associated with a keyword)!!
311
+ </span>
312
+ </p>
313
+ <ol style='font-size:14px;'>
314
+ <li>Solution 1: Leave the default setting.</li>
315
+ <li>Solution 2: Personalize it to conform to your site!!</li>
316
+ </ol>
317
+ <em>(Please note: Get more tips by clicking <img class='hint' src='/skin/adminhtml/base/default/img/hint.png'alt='?'> next to each element)</em>
318
+ </div>"
319
+ "listerBaliseIgnore_text","
320
+ <div style='margin-top:20px'>
321
+ <p>
322
+ <span style='font-size: 18px;font-weight:bold; color:#bf4122'>Welcome to your Optimization space : Personalize the pages processed by LiveOptim !</span>
323
+ </p>
324
+ <span style='font-size: 18px;font-weight:bold; '>
325
+ Add the page of your site that you do not want to optimize with LiveOptim !
326
+ </span>
327
+ </div>"
328
+
329
+ "hintPattern_config","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Activate / deactivate the function via this button
330
+ </p> </div> "
331
+ "hintPattern_config_limite","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Set a high limit for optimization
332
+ </p>
333
+ <h2>Recommendations for use :</h2>
334
+ <ul>
335
+ <li>By default, there is a limit of 5 optimizations for the same keyword in a page.<br />
336
+ </li>
337
+ <li>We advise you not to go beyond this.</li>
338
+ <li>
339
+ You can reduce this value if you want !</li>
340
+ </ul> </div>"
341
+ "hintPattern_config_Export","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png'alt='?'/> <p>Export your keyword/target page database and your settings before disabling the plugin or update! </p> </div>"
342
+ "hintPattern_config_csv","<div class='hint2> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p> You can import your settings, by simply selecting the table you want to import, or import all tables (that is, six tables) as a zip file.
343
+ </p> </div>"
344
+ // listerPattern.php
345
+ "hintPattern","
346
+ <div class='hint2'>
347
+ <img src='%s' alt='?'/>
348
+ <p>
349
+ Configure the tags added by LiveOptim on a given keyword every time it is encountered on a page (excluding target pages), by using <span class='mc'>{mc}</span> to indicate the key phrase and<span class='url'>{url}</span> to indicate the URL for the links. You can also choose to process the schema as a loop.
350
+ </p>
351
+ <h2>For example, to run the process below: </h2>
352
+ <ul>
353
+ <li>&lt;strong&gt;<span class='mc'>Key phrase</span>&lt;/strong&gt;<em> (first occurence)</em></li>
354
+ <li>&lt;a href=&#34;<span class='url'>http://www.example.com/page-cible.html</span>&#34;&gt;<span class='mc'>Key phrase</span>&lt;/a&gt;<em>(second occurence)</em></li>
355
+ <li><span class='mc'>Key phrase</span><em> (third occurence)</em></li>
356
+ </ul>
357
+ <h2>Populate the following structure</h2>
358
+ <ul>
359
+ <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
360
+ <li>&lt;a href=&#34;<span class='url'>{url}</span>&#34;&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
361
+ <li><span class='mc'>{mc}</span></li>
362
+ </ul>
363
+ </div>"
364
+ "listerPattern_pattern","Global tag schema"
365
+ "listerPattern_titre","Global tag schema"
366
+ "listerPattern_boucler","Process as loop : "
367
+ "listerPattern_oui","Yes"
368
+ "listerPattern_non","No"
369
+ "listerPattern_table_structure","Structure"
370
+ "listerPattern_table_position","Position"
371
+ "listerPattern_table_action","Action"
372
+ "listerPattern_confirmation_suppression","Are you sure you want to delete this schema?"
373
+ "listerPattern_supprimer","Delete"
374
+ "listerPattern_modifier","Modify"
375
+ "listerPattern_monter","Send higher"
376
+ "listerPattern_descendre","Send lower"
377
+ "listerPattern_ajouter","Add"
378
+
379
+
380
+
381
+ // listerPatternCible.php
382
+ "hintPatternCible","
383
+ <div class='hint2'>
384
+ <img src='%s' alt='?'/>
385
+ <p>Configure the tags added by LiveOptim on the same keyword every time it is encountered on an associated target page, by using <span class="mc">{mc}</span> to indicate the key phrase and <span class="url">{url}</span> to indicate the URL for the links. You can also choose to process the schema as a loop.</p>
386
+ <h2>For example, run the process below: </h2>
387
+ <ul>
388
+ <li>&lt;strong&gt;<span class='mc'>Key phrase</span>&lt;/strong&gt;</li>
389
+ <li>&lt;a href=�<span class='url'>http://www.example.com/page-cible.html</span>�&gt;<span class='mc'>Key phrase</span>&lt;/a&gt;</li>
390
+ <li><span class="mc">Key phrase</span></li></ul><h2>Populate the following structure</h2><ul><li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
391
+ <li>&lt;a href=�<span class='url'>{url}</span>�&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
392
+ <li><span class="mc">{mc}</span></li>
393
+ </ul>
394
+ </div>"
395
+ "listerPatternCible_accueil","Home"
396
+ "listerPatternCible_pattern","Target page tag schema"
397
+ "listerPatternCible_titre","Target page tag schema"
398
+ "listerPatternCible_boucler","Loop"
399
+ "listerPatternCible_oui","Yes"
400
+ "listerPatternCible_non","No"
401
+ "listerPatternCible_table_structure","Structure"
402
+ "listerPatternCible_table_position","Position"
403
+ "listerPatternCible_table_action","Action"
404
+ "listerPatternCible_confirmation_suppression","Are you sure you want to delete this schema?"
405
+ "listerPatternCible_supprimer","Delete"
406
+ "listerPatternCible_modifier","Modify"
407
+ "listerPatternCible_monter","Send higher"
408
+ "listerPatternCible_descendre","Send lower"
409
+ "listerPatternCible_ajouter","Add"
410
+
411
+ "config_limite_capping","Limite"
412
+ "config_valcap_sup","You are about to use a value not recommended by MKT. See www.liveoptim.com"
413
+ "config_valcap_nan","The limit must be an integer"
414
+ "config_valcap_nan","Please enter a value"
415
+ "config_export_csv","Do a backup of the LiveOptim configuration"
416
+ "config_table_file","File:"
417
+ "config_table_all","All (zip)"
418
+ "config_fichier_vide","Please upload a file"
419
+ "config_fichier_ncsv","The file is not a CSV"
420
+ "config_fichier_nzip","The file is not a ZIP archive"
421
+ "config_tout_cocher","Tick all boxes"
422
+ "config_tout_decocher","Untick all boxes"
423
+ "config_bouton_export","Export CSV"
424
+ "config_importation","Table to import: "
425
+ "config_import_validation","Confirm"
426
+ "config_backup_title","Parameter backup"
427
+ "config_import_title","Restoring Settings"
428
+ "config_backup_sql","SQL Backup"
429
+
430
+ //Cache
431
+ "COM_LIVEOPTIM_CACHE_TITRE","Cache Management"
432
+ "COM_LIVEOPTIM_CACHE_TEXT","LiveOptim uses a cache to speed up the processing of your pages <br />
433
+ Click below to delete this cache"
434
+ "COM_LIVEOPTIM_BTN_CACHE_VIDE","DELETE CACHE"
435
+ "COM_LIVEOPTIM_BTN_CACHE_ACTIV","ACTIVATE"
436
+
437
+ //version FREE
438
+ "COM_LIVEOPTIM_LICENCE_FREE","You are currently use the free version of LiveOptim, however some functionalities are disabled. <br />
439
+ <b>Upgrade to the Premium version to benefit all the available functionalities:<br />
440
+ FREE TEST FOR 30 DAYS.</b>"
441
+ "COM_LIVEOPTIM_BOUTON_PRENIUM","<a class='btn_Prenuim' href='#' onclick='displayInfoPrenium()'><b>PREMIUM UPDATE</b> <br /><i>(30 days free)</i></a>"
442
+ "hintPrenium","<div onclick='fenetreInfoPreniumFermer()' class='hint2'> <img alt='?' src='/skin/adminhtml/base/default/img/hint.png'><br> This funtionality is not available in free version.<br /> Upgrade to the Premium version for benefiting it. </div>"
443
+ "COM_LIVEOPTIM_MSG_MOT_CLE","You can add only 10 keywords associated to each page. Upgrade your LiveOptim: no more limits with keywords."
444
+ "COM_LIVEOPTIM_MSG_PAGES_RESTREINTE","You are allowed to use only 10 restricted pages. With Premium version you will have no limits."
445
+
446
+ //Inscription
447
+ "inscription_titre","Registration"
448
+ "inscription_texte","Using the plugin requires creating an account with our services"
449
+ "inscription_email","Email : "
450
+ "inscription_url","URL of your site:"
451
+ "inscription_pass","Password for your account:"
452
+ "inscription_btnInscrip","START OPTIMIZATION"
453
+
454
+ "inscription_mail_vide","You must enter an email address"
455
+ "inscription_mail_trop_long","You must enter a shorter email address"
456
+ "inscription_mail_invalid","You must enter a valid email address"
457
+ "inscription_url_vide","You must enter the domain name on which LiveOptim<sup>&copy;</sup> will be activated"
458
+ "inscription_url_trop_long","You must enter a shorter domain name"
459
+ "inscription_url_deja_util","This domain name is already in use"
460
+ "inscription_compte_already_create_wrong_email","The account already exists! Please indicate the address with which you registered."
461
+ "inscription_compte_already_create_wrong_password","Existing account, please enter the password of your account LiveOptim."
462
+
463
+
464
+ //Fenetre Prenuim
465
+
466
+ "COM_LIVEOPTIM_FNT_PRE_ALL_PRODUCT","ALL OUR PRODUCTS"
467
+ "COM_LIVEOPTIM_FNT_PRE_OTHER_PRODUCT","See also the other products in the range of LiveOptim"
468
+ "COM_LIVEOPTIM_FNT_PRE_MORE_INFO","MORE INFO"
469
+
470
+ "COM_LIVEOPTIM_FNT_PRE_TXT_MKT900","1-year SEO service for your website.<br />
471
+ Free hotline, 7-day-a-week timeline, support team, etc...<br />"
472
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_MKT900","&euro;900 INC. TAXES"
473
+ "COM_LIVEOPTIM_FNT_PRE_TXT_SO","All your SEO analyses on 1 platform!<br />
474
+ Site audit, ranking on demand, analytic monitoring of positions, etc...<br />"
475
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_SO","&euro;9.90 INC. TAXES / MONTH"
476
+ "COM_LIVEOPTIM_FNT_PRE_COMING_SOON","COMING SOON"
477
+
478
+
479
+ "COM_LIVEOPTIM_FNT_PRE_UN_KEY","Unlimited Keywords"
480
+ "COM_LIVEOPTIM_FNT_PRE_UN_TARGET","Unlimited Target Pages"
481
+ "COM_LIVEOPTIM_FNT_PRE_CACHE","Cache system included<br />(Loading time optimization)"
482
+ "COM_LIVEOPTIM_FNT_PRE_CUSTOM_TAG","Customization of tags order"
483
+ "COM_LIVEOPTIM_FNT_PRE_TARGET","Specific Tag Schema on Target pages"
484
+ "COM_LIVEOPTIM_FNT_PRE_LOOP","Option : Tagging loop"
485
+ "COM_LIVEOPTIM_FNT_PRE_CAPPING","Capping System <br />(Suroptimization Alert)"
486
+ "COM_LIVEOPTIM_FNT_PRE_EXCLUD_PAGES","Option : excluded pages (without tagging)"
487
+ "COM_LIVEOPTIM_FNT_PRE_EXECEPTION","Preconfigure exceptions tags"
488
+ "COM_LIVEOPTIM_FNT_PRE_SUPPORT","Premium Support"
489
+ "COM_LIVEOPTIM_FNT_PRE_TWITER","Twitter Timeline Support 24/7"
490
+ "COM_LIVEOPTIM_FNT_PRE_HOTLINE","Free Hotline"
491
+ "COM_LIVEOPTIM_FNT_PRE_CHAT","LiveChat"
492
+ "COM_LIVEOPTIM_FNT_PRE_UPGRADE","UPGRADE"
493
+
494
+
495
+
496
+ "pages_restrintes","Page"
497
+
498
+ // code401.php
499
+ "code401_titre","Code 401."
500
+
501
+ // code403.php
502
+ "code403_titre","Code 403."
503
+
504
+ // code404.php
505
+ "code404_titre","Code 404."
app/locale/es_ES/Mkt_LiveOptim.csv ADDED
@@ -0,0 +1,461 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //menu
2
+ "menu_accueil","LiveOptim"
3
+ "menu_tutoriel","Tutorial"
4
+ "menu_motcle","Palabras clave"
5
+ "menu_pattern","Esquema general"
6
+ "menu_patterncible","Esquema de páginas meta"
7
+ "menu_baliseignorer","Excepción"
8
+ "menu_config","Configuración"
9
+ "menu_pages_restreintes","Páginas restringidas"
10
+
11
+ "all_expire","Utilizando una versión limitada de LiveOptim.<br />
12
+ Disfruta de los efectos de LiveOptim sin límite de palavras chaves o de parametrización. Compra ahora su licencia e encuentra la configuración avanzada!"
13
+ "all_non_inscrit","Usted no puede utilizar el módulo si no se ha inscrito previamente. Usted puede inscribirse en <a class='link_liveoptim' href='http://www.liveoptim.com' target='_blank'>el sitio de LiveOptim</a>"
14
+ "all_compte_test","Utilizando una versión de evaluación.<br />
15
+ Disfruta de los efectos de LiveOptim sin límite de duración, compra ahora su licencia !"
16
+ "all_bouton_buy","<a class='btn_buy' href='http://www.liveoptim.com/es/paiement/choix-du-mode.html'>COMPRA</a>"
17
+ "all_bouton_MaJ","<a class='btn_MaJ' href='%s'>actualizaciones<br /> disponibles</a>"
18
+
19
+ "parametrage","Configuración"
20
+ "contact","Póngase en contacto con nosotros."
21
+ "facebook","Únase a nosotros."
22
+ "twitter","¿Necesita ayuda?"
23
+ "twitter2","@liveoptim"
24
+ "inscription_message","Anote su página web para activar LiveOptim."
25
+ "accueil_erreur_pas_de_compte","Cuenta inactiva."
26
+ "accueil_inscrivez_vous_ici","Inscripción."
27
+ "accueil_copte_client_actif","Cuenta activada."
28
+ "accueil_compte_client_inactif","Cuenta inactiva."
29
+ "accueil_mots_cles","Palabras clave."
30
+ "accueil_balise_ignores","Excepciones de procesamiento."
31
+ "accueil_pattern","Esquema de etiquetado global."
32
+ "accueil_pattern_cible","Esquema de etiquetado en la página meta."
33
+ "accueil_nouveau_mdp","Nueva contraseña."
34
+ "modifier","Modificar"
35
+
36
+
37
+
38
+ // connexion.php
39
+ "connexion_1","Acceso a administración"
40
+ "connexion_content","Indique a continuación su contraseña de acceso a la administración de LiveOptim<sup>&copy;</sup>."
41
+ "connexion_titre","Contraseña :"
42
+ "connexion_connexion","Conexión."
43
+ "connexion_messageErreur_1","Error en la contraseña/Contraseña errónea;"
44
+
45
+
46
+
47
+ // nouveauMdp.php
48
+ "nouveauMdp_titre","Bienvenida a LiveOptim<sup>&copy;</sup>"
49
+ "nouveauMdp_content","
50
+ Defina la contraseña que le servirá para conectarse al departamento
51
+ de administración del módulo y guárdela bien."
52
+ "nouveauMdp_titre","Elección de la contraseña :"
53
+ "nouveauMdp_ancien_mdp","Antigua contraseña :"
54
+ "nouveauMdp_nouveau_mdp","Contraseña :"
55
+ "nouveauMdp_nouveau_mdp_2","Confirmación :"
56
+ "nouveauMdp_connexion","Guardar"
57
+ "nouveauMdp_messageErreur_1","Contraseñas no válidas "
58
+
59
+
60
+
61
+ // accueil.php
62
+ "accueil_accueil","Inicio"
63
+ "accueil_titre","Bienvenido a la interfaz de administración de LiveOptim"
64
+ "accueil_contenu","
65
+ <p>
66
+ Desde esta interfaz puede configurar el funcionamiento de LiveOptim en su página web:
67
+ </p>
68
+ <ul>
69
+ <li>
70
+ Grupos de palabras clave
71
+ <ul>
72
+ <li>
73
+ <a href=%s'>Se agregan grupos de palabras clave</a>.
74
+ <p>
75
+ Agregue o modifique su lista de grupos de palabras clave estratégicas y
76
+ las URL de las páginas meta asociadas
77
+ </p>
78
+ </li>
79
+ </ul>
80
+ </li>
81
+ <li>
82
+ Configuración:
83
+ <ul>
84
+ <li>
85
+ <a href='%s'>Esquema de etiquetado global</a>
86
+ <p>
87
+ Sistema de etiquetado aplica por defecto<span class='lo_ps'>*</span> por la función en las
88
+ palabras clave presentes en sus contenidos, así como su orden de aparición.
89
+ </p>
90
+ </li>
91
+ <li>
92
+ <a href='%s'>Esquema de etiquetado en la página meta</a><span class='txt_prenium'>(versión premium)</span>
93
+ <p>
94
+ Modifique la configuración de las etiquetas en los grupos de palabras clave cuando
95
+ sean procesadas en su(s) página(s) meta.
96
+ </p>
97
+ </li>
98
+ <li>
99
+ <a href='%s'>Excepciones de procesamiento</a>
100
+ <p>
101
+ Las etiquetas en las que los contenidos no deben ser
102
+ procesados por la función<span class='lo_ps'>*</span>.
103
+ </p>
104
+ </li>
105
+ <li>
106
+ <a href='%s'>Páginas sin optimizaciones de LiveOptim</a><span class='txt_prenium'>(versión premium)</span>
107
+ <p>
108
+ Editar las páginas en las que los contenidos no deben ser procesados por la función
109
+ </p>
110
+ </li>
111
+ </ul>
112
+ </li>
113
+ </ul>
114
+ <p class='txt_etoile'><i><span class='lo_ps'>*</span> Modificación disponible en la versión premium</i></p>"
115
+
116
+
117
+
118
+ // tutoriel.php
119
+ "tutoriel_titre","Tutorial "
120
+ "COM_LIVEOPTIM_TUTO","
121
+ <div >
122
+ <img src='http://www.liveoptim.com/img/layout/video.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
123
+ <div style='padding-top:80px;'>
124
+ <p style='font-size:18px'>Déjese guiar, vea el video con las instrucciones haciendo <u><a href='http://www.youtube.com/watch?v=b2rbn4gphYc' target='_blank'>clic aquí</a></u>
125
+ </p>
126
+ </div>
127
+ </div>
128
+ <div>
129
+ <img src='http://www.liveoptim.com/img/layout/book.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
130
+ <div style='padding-top:80px; margin-top:70px;'>
131
+ <p style='font-size:18px'>Descargue las instrucciones completas del plugin LiveOptim para Magento haciendo <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_es.pdf' target='_blank'>clic aquí</a></u>
132
+ </p>
133
+ </div>
134
+ </div>"
135
+
136
+ "tutoriel_contenu","<p>Descargar el tutorial haciendo clic en el siguiente enlace:<u><a href='http://www.liveoptim.com/docs/magento_tutoriel_es.pdf' target='_blank'>Tutorial</a></u></p>"
137
+
138
+
139
+
140
+ // listerBaliseIgnore.php
141
+ "hintBaliseIgnore","<div class='hint2'> <div class='hint2'><img src='%s' alt='?'/><p>Indique aquí las etiquetas en las que el contenido no debe tratarse con LiveOptim.</p></div>"
142
+ "listerBaliseIgnore_accueil","Inicio"
143
+ "listerBaliseIgnore_balises_ignores","Excepciones de procesamiento"
144
+ "listerBaliseIgnore_titre","Excepciones de procesamiento"
145
+ "listerBaliseIgnore_nom","Apellido"
146
+ "listerBaliseIgnore_action","Acción"
147
+ "listerBaliseIgnore_confirmation_suppression","¿Está seguro de que desea borrar esta restricción?"
148
+ "listerBaliseIgnore_supprimer","Borrar"
149
+ "listerBaliseIgnore_modifier","Modificar"
150
+ "listerBaliseIgnore_ajouter","Añadir"
151
+
152
+
153
+
154
+ // layout.php, layoutConnexion.php, layoutNouveauMdp.php
155
+ "layout_title","Administración de Liveoptim"
156
+ "layout_deconnexion","Desconexión"
157
+ "layout_liveoptim","Liveoptim"
158
+
159
+
160
+
161
+ // listerMotCle.php
162
+ "COM_LIVEOPTIM_BOUTON_RANKING","<a class='btn_rank' href='#' onclick='ajaxOuvrirFenetreNouveauRapport();'>Start ranking</a>"
163
+ "COM_LIVEOPTIM_MS_APRES","Por favor acceda<a id='lien_so' href='http://www.statoptim.com/controleur.php?cible=identification&cible2=apercu-rapport&recherche=ranking&id_projet=' target='_blank' >Statoptim</a> para ver la posición de su sitio.
164
+ Tenga a mano el acceso (por correo en su registro)."
165
+ "COM_LIVEOPTIM_MS_AVANT","Por favor espere mientras el ranking.(No cierre esta ventana)"
166
+ "hintMotCle","
167
+ <div class='hint2'>
168
+ <img src='%s' alt='?'/>
169
+ <p>Indique los grupos de palabras clave estratégicas para su posicionamiento,la página o páginas meta asociadas y su orden de procesamiento (si se definen varias páginas meta para el mismo grupo de palabras clave).</p>
170
+ <h2>Consejos de utilización:</h2>
171
+ <ul>
172
+ <li>Modifique las páginas meta dependiendo de los grupos de palabras clave.</li>
173
+ <li>No modifique con demasiada frecuencia las páginas meta de un grupo de palabras clave.</li>
174
+ </ul>
175
+ </div>"
176
+ "listerMotCle_accueil","Inicio"
177
+ "listerMotCle_mots_cles","Palabras clave"
178
+ "listerMotCle_titre","Gestión de los grupos de palabras clave y de las páginas meta"
179
+ "listerMotCle_table_requete","Palabras Clave"
180
+ "listerMotCle_table_destination","Dirección de la palabra clave (<em>con prefijo HTTP://</em>)"
181
+ "listerMotCle_table_position","Posición"
182
+ "listerMotCle_table_action","Acción"
183
+ "listerMotCle_confirmation_suppression","¿Está seguro de que desea borrar esta palabra clave?"
184
+ "listerMotCle_supprimer","Borrar"
185
+ "listerMotCle_modifier","Modificar"
186
+ "listerMotCle_monter","Subir"
187
+ "listerMotCle_descendre","Bajar"
188
+ "listerMotCle_ajouter","Añadir"
189
+ "listerMotCle_msg_alert","Por favor complete la parte Palabra-clave !"
190
+
191
+ "listerMotCle_table_requete_text","
192
+ <div style='margin-top:20px'>
193
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenido a su espacio de Optimización: ¡Indique aquí sus palabras clave y, de este modo, aumente su tráfico!</span></p>
194
+ <ol style='font-size:14px;'>
195
+ <li>Agregue una palabra clave en &#34;Requête&#34; (Búsqueda)</li>
196
+ <li>Asóciela con una página de su sitio</li>
197
+ <li>Haga clic en &#34;ajouter&#34; (agregar), y así sucesivamente para cada palabra clave.</li>
198
+ </ol>
199
+ <em>(Nota: Obtendrá más consejos haciendo clic en <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> junto a cada elemento)</em><br><br>
200
+ </div>"
201
+ "listerBaliseIgnore_text1","
202
+ <div style='margin-top:20px'>
203
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenido a su espacio de Optimización : ¡Aquí encontrará los anuncios sobre los cuales la función no volverá a pasar!</span>
204
+ </p>
205
+ <span style='font-size :18px; font-weight:bold'>Se trata de de una configuración avanzada. Le aconsejamos conservar la configuración por defecto</span>
206
+ </div>"
207
+ "listerPattern_text","
208
+ <div style='margin-top:20px'>
209
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenido a su espacio de Optimización:¡Personalice aquí las optimizaciones aplicadas a sus contenidos !</span></p>
210
+ <ol style="font-size:14px;">
211
+ <li>Solución 1: conserve la configuración por defecto</li>
212
+ <li>Solución 2: ¡personalícela para adaptarla a sus prácticas !</li>
213
+ </ol>
214
+ <em>(Nota: Obtendrá más consejos haciendo clic en <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> junto a cada elemento)</em>
215
+ </div>"
216
+ "listerPatternCible_text","
217
+ <div style='margin-top:20px'>
218
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenido a su espacio de Optimización:¡Personalice aquí las optimizaciones aplicadas específicamente a las páginas objetivo (es decir, a las páginas asociadas con una palabra clave)!</span></p>
219
+ <ol style='font-size:14px;'>
220
+ <li>Solución 1: conserve la configuración por defecto</li>
221
+ <li>Solución 2: ¡personalícela para adaptarla a sus prácticas !</li>
222
+ </ol>
223
+ <em>(Nota: Obtendrá más consejos haciendo clic en <img class='hint' src/skin/adminhtml/base/default/img/hint.png' alt='?'> junto a cada elemento)</em>
224
+ </div>"
225
+ "listerBaliseIgnore_text","
226
+ <div style='margin-top:20px'>
227
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenido a su espacio de Optimización :¡Personalice las páginas tratadas por LiveOptim !</span></p>
228
+ <span style='font-size: 18px;font-weight:bold; '>¡Agregue la página de su sitio que usted no quiere optimizar con LiveOptim !</span>
229
+ </div>"
230
+ "hintMotCle_requete","
231
+ <div class='hint2'>
232
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
233
+ <p> Indique aquí las expresiones clave que usted desea que estén visibles en los motores. </p>
234
+ <h2>Consejos de utilización:</h2>
235
+ <ul>
236
+ <span class='mc'><li>Multiplique las palabras clave para ingresar a su sitio: <br />
237
+ Mezcle palabras clave genéricas y palabras clave más largas que hacen cola. </li></span><br />
238
+ <li> Ejemplo : <br />
239
+ palabra clave genérica: &#34;mode&#34; (modo)<br />
240
+ palabra clave más larga que hace cola: "blog de mode féminine (blog de moda femenina)<br />
241
+ <br />
242
+ palabra clave genérica: &#34;voyage&#34; (viaje)<br />
243
+ palabra clave más larga que hace cola: &#34;voyage londres pas cher&#34; (viaje a londres económico)<br /></li><br />
244
+ <li>Estas palabras clave, tomadas individualmente, generan poco tráfico pero, una vez que se acumulan, pueden pesar hasta un 80&#37; de su tráfico.</li>
245
+ </ul>
246
+ </div>"
247
+ "hintMotCle_destination","
248
+ <div class='hint2'>
249
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
250
+ <p>Indique aquí una o varias páginas asociadas a la palabra clave. Se trata de la página que usted desea posicionar en relación con esta expresión clave.</p>
251
+ <h2>Consejos de utilización :</h2>
252
+ <ul>
253
+ <li>Indique varios URL para una misma palabra clave con el fin de diversificar las páginas objetivo.<br />
254
+ Solo tiene que agregar la misma palabra clave con un URL diferente
255
+ </li>
256
+ </ul>
257
+ </div>"
258
+ "hintMotCle_position","
259
+ <div class='hint2'>
260
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
261
+ <p>Usted puede definir para una misma palabra clave varias páginas asociadas. La posición sirve exclusivamente en este caso específico.</p>
262
+ <h2>Consejos de utilización :</h2>
263
+ <ul>
264
+ <li>Indique varios URL para una misma palabra clave con el fin de diversificar las páginas objetivo<br /></li>
265
+ <li>Los URL de estas páginas son seleccionados según un orden de prioridad que le son atribuidos y que usted puede definir (a través de flechas o indicando un valor). </li>
266
+ <li>La función hará entonces un primer enlace hacia el primer url, y un segundo enlace hacia el segundo url, para el mismo contenido</li>
267
+ <li>Nota: no se trata del orden de las palabras clave sino del de los URL.</li>
268
+ </ul>
269
+ </div>"
270
+ "hintPattern_config","
271
+ <div class='hint2'>
272
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
273
+ <p>Active/Desactive la función a través de este botón</p>
274
+ </div>"
275
+ "hintPattern_config_limite","
276
+ <div class='hint2'>
277
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
278
+ <p>Configure un límite alto de optimización</p>
279
+ <h2>Consejos de utilización :</h2>
280
+ <ul>
281
+ <li>Por defecto, límite de 5 optimizaciones de la misma palabra clave en una página<br /></li>
282
+ <li>Le aconsejamos no sobrepasar este valor.</li>
283
+ <li>¡Si lo desea, puede disminuir este valor! </li>
284
+ </ul>
285
+ </div>"
286
+ "hintPattern_config_Export","
287
+ <div class='hint2'>
288
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
289
+ <p>¡Exporte su base de palabras clave/páginas objetivo y sus configuraciones antes de cualquier desactivación del plugin o actualización ! </p>
290
+ </div>"
291
+ "hintPattern_config_csv","
292
+ <div class='hint2'>
293
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
294
+ <p> Usted puede importar sus configuraciones, solo tiene que seleccionar la tabla que desea importar o todas las tablas (es decir, 6 tablas) en un archivo .zip. </p>
295
+ </div>"
296
+
297
+ // listerPattern.php
298
+ "hintPattern","
299
+ <div class='hint2'>
300
+ <img src='%s' alt='?'/>
301
+ <p>Configure las etiquetas agregadas por LiveOptim en la misma palabra clave cada vez que aparezca en una página (sin páginas meta)&#44; utilizando <span class='mc'>{mc}</span> para indicar el grupo de palabras clave y<span class='url'>{url}</span> para indicar la URL meta por los enlaces. También puede optar por procesar el esquema en bucle.</p>
302
+ <h2>Ejemplo para efectuar el siguiente procesamiento: Toirf</h2>
303
+ <ul>
304
+ <li>&lt;strong&gt;<span class='mc'>Dupoo desion clé</span>&lt;/strong&gt;<em> primera aparición)</em></li>
305
+ <li>&lt;a href=&#34;<span class='url'>http://www.example.com/page-cible.html</span>&#34;&gt;<span class='mc'>Grupo de palabras clave</span>&lt;/a&gt;<em>(segunda aparición)</em></li>
306
+ <li><span class='mc'>Grupo de palabras clave</span><em> (tercera aparición)</em></li>
307
+ </ul>
308
+ <h2>Indique la siguiente estructura</h2>
309
+ <ul>
310
+ <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
311
+ <li>&lt;a href=&#34;<span class='url'>{url}</span>&#34;&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
312
+ <li><span class='mc'>{mc}</span></li>
313
+ </ul>
314
+ </div>"
315
+ "listerPattern_pattern","Esquema de etiquetado global"
316
+ "listerPattern_titre","Esquema de etiquetado global"
317
+ "listerPattern_boucler","Efectuar el procesamiento en bucle : "
318
+ "listerPattern_oui","Sí"
319
+ "listerPattern_non","No"
320
+ "listerPattern_table_structure","Estructura"
321
+ "listerPattern_table_position","Posición"
322
+ "listerPattern_table_action","Acción"
323
+ "listerPattern_confirmation_suppression","¿Está seguro de que desea borrar este esquema?"
324
+ "listerPattern_supprimer","Borrar"
325
+ "listerPattern_modifier","Modificar"
326
+ "listerPattern_monter","Subir"
327
+ "listerPattern_descendre","Bajar"
328
+ "listerPattern_ajouter","Añadir"
329
+
330
+
331
+
332
+ // listerPatternCible.php
333
+ "hintPatternCible","
334
+ <div class='hint2'>
335
+ <img src='%s' alt='?'/>
336
+ <p>Configure las etiquetas agregadas por LiveOptim en una misma palabra clave cada vez que aparezca en una página meta asociada&#44; utilizando <span class='mc'>{mc}</span> para indicar el grupo de palabras clave y <span class='url'>{url}</span> para indicar la URL meta para los enlaces. También puede optar por procesar el esquema en bucle.</p>
337
+ <h2>Ejemplo para llevar a cabo el siguiente procesamiento: </h2>
338
+ <ul>
339
+ <li>&lt;strong&gt;<span class='mc'>Palabra clave</span>&lt;/strong&gt;</li>
340
+ <li>&lt;a href=&#34;<span class='url'>http://www.example.com/page-cible.html</span>&#34;&gt;<span class='mc'>Grupo de palabras clave</span>&lt;/a&gt;</li>
341
+ <li><span class='mc'>Grupo de palabras clave</span></li>
342
+ </ul>
343
+ <h2>Indique la siguiente estructura.</h2>
344
+ <ul>
345
+ <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
346
+ <li>&lt;a href=&#34;<span class='url'>{url}</span>&#34;&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
347
+ <li><span class="mc">{mc}</span>
348
+ </li>
349
+ </ul>
350
+ </div>"
351
+ "listerPatternCible_accueil","Inicio"
352
+ "listerPatternCible_pattern","Esquema de etiquetado sobre una página meta"
353
+ "listerPatternCible_titre","Esquema de etiquetado sobre una página meta"
354
+ "listerPatternCible_boucler","Cerrar"
355
+ "listerPatternCible_oui","Sí"
356
+ "listerPatternCible_non","No"
357
+ "listerPatternCible_table_structure","Estructura"
358
+ "listerPatternCible_table_position","Posición"
359
+ "listerPatternCible_table_action","Acción"
360
+ "listerPatternCible_confirmation_suppression","¿Está seguro de que desea borrar este esquema?"
361
+ "listerPatternCible_supprimer","Borrar"
362
+ "listerPatternCible_modifier","Modificar"
363
+ "listerPatternCible_monter","Subir"
364
+ "listerPatternCible_descendre","Bajar"
365
+ "listerPatternCible_ajouter","Añadir"
366
+
367
+ "config_limite_capping","Límite"
368
+ "config_valcap_sup","Usted va a utilizar un valor no aconsejado por MKT. Infórmese en www.liveoptim.com"
369
+ "config_valcap_nan","El límite debe ser un entero"
370
+ "config_valcap_nan","Informe un valor"
371
+ "config_export_csv","Grabe la configuración de LiveOptim"
372
+ "config_table_file","Archivo:"
373
+ "config_table_all","Todos (zip)"
374
+ "config_fichier_vide","Descargue un archivo"
375
+ "config_fichier_ncsv","El archivo no es un CSV"
376
+ "config_fichier_nzip","El archivo no es un archivo ZIP"
377
+ "config_tout_cocher","Marcar todo"
378
+ "config_tout_decocher","Desmarcar todo"
379
+ "config_bouton_export","Exportar CSV"
380
+ "config_importation","Tabla a importar:"
381
+ "config_import_validation","Validar"
382
+ "config_backup_title","Salvar parámetros"
383
+ "config_import_title","Restauración de los parámetros"
384
+ "config_backup_sql","Exportar SQL"
385
+ "pages_restrintes","Página"
386
+
387
+
388
+ //Cache
389
+ "COM_LIVEOPTIM_CACHE_TITRE","Gestión de la caché"
390
+ "COM_LIVEOPTIM_CACHE_TEXT","LiveOptim utiliza una caché para agilizar el procesamiento de páginas
391
+ Haz clic abajo para suprimir el cache"
392
+ "COM_LIVEOPTIM_BTN_CACHE_VIDE","BORRAR EL CACHÉ"
393
+ "COM_LIVEOPTIM_BTN_CACHE_ACTIV","ACTIVAR"
394
+
395
+
396
+ //Version Free
397
+ "COM_LIVEOPTIM_LICENCE_FREE","Usted esta utilizando la versión gratuita de LiveOptim, sin embargo, algunas funciones están desactivadas.<br />
398
+ <b>Pase a la versión Premium para poder aprovechar todas las funciones:<br />
399
+ prueba gratis durante 30 días</b>"
400
+ "COM_LIVEOPTIM_BOUTON_PRENIUM","<a class='btn_Prenuim' href='#' onclick='displayInfoPrenium()'><b>ACTUALIZACIÓN PREMIUM</b> <br /><i>(30 DÍAS GRATUITOS)</i></a>"
401
+ "hintPrenium","<div onclick='fenetreInfoPreniumFermer()' class='hint2'><img alt='?' src='/skin/adminhtml/base/default/img/hint.png'><br>Esta función no se encuentra disponible en la versión gratuita, pase a la versión Premiun para poder acceder a ella.</div>"
402
+ "COM_LIVEOPTIM_MSG_MOT_CLE","Usted solo puede ajuntar 10 palabras claves determinadas para cada pagina. Actualice su LiveOptim: No mas limites de palabras claves."
403
+ "COM_LIVEOPTIM_MSG_PAGES_RESTREINTE","Usted solo tiene derecho máximo a 10 paginas. Pase a la versión Premium para no tener ningún limite de paginas."
404
+
405
+ //Inscription
406
+ "inscription_titre","Registration"
407
+ "inscription_texte","La utilizaciòn del plugin requiere la creaciòn de una cuenta"
408
+ "inscription_email","Correo Electrónico : "
409
+ "inscription_url","Nombre del dominio :"
410
+ "inscription_pass","Contraseña :"
411
+ "inscription_btnInscrip","COMENZAR LA OPTIMIZACIÒN"
412
+
413
+ "inscription_mail_vide","Debe indicar una dirección de correo electrónico."
414
+ "inscription_mail_trop_long","Debe indicar una dirección de correo electrónico más corta."
415
+ "inscription_mail_invalid","Debe indicar una dirección de correo electrónico válida."
416
+ "inscription_url_vide","Debe indicar el nombre del dominio en el que se activará LiveOptim<sup>&copy;</sup>"
417
+ "inscription_url_trop_long","Debe indicar un nombre de dominio más corto."
418
+ "inscription_url_deja_util","Este nombre de dominio ya ha sido utilizado."
419
+ "inscription_compte_already_create_wrong_email","The account already exists! Please indicate the address with which you registered."
420
+ "inscription_compte_already_create_wrong_password","Existing account, please enter the password of your account LiveOptim."
421
+
422
+ //Fenetre Prenuim
423
+
424
+ "COM_LIVEOPTIM_FNT_PRE_ALL_PRODUCT","TODOS NUESTROS PRODUCTOS"
425
+ "COM_LIVEOPTIM_FNT_PRE_OTHER_PRODUCT","Ver también los otros productos de la gama de LiveOptim"
426
+ "COM_LIVEOPTIM_FNT_PRE_MORE_INFO","MORE INFO"
427
+
428
+
429
+ "COM_LIVEOPTIM_FNT_PRE_TXT_MKT900","1 Prestation TOTALE d\'un an sur votre site web.
430
+ Hotline gratuite, timeline 7/7, team support, etc... <br />"
431
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_MKT900","900&euro; TTC"
432
+ "COM_LIVEOPTIM_FNT_PRE_TXT_SO","Toutes vos analyses SEO sur 1 plateforme !
433
+ Audit de site, ranking à la demande, suivi analytic des positions, etc...<br />"
434
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_SO","9.90&euro; TTC / MOIS"
435
+ "COM_LIVEOPTIM_FNT_PRE_COMING_SOON","Pronto"
436
+
437
+ "COM_LIVEOPTIM_FNT_PRE_UN_KEY","Palabras-clave ilimitadas"
438
+ "COM_LIVEOPTIM_FNT_PRE_UN_TARGET"," Páginas de destino ilimatadas"
439
+ "COM_LIVEOPTIM_FNT_PRE_CACHE"," Sistema de cache incluido <br />(Optimización del tiempo de carga)"
440
+ "COM_LIVEOPTIM_FNT_PRE_CUSTOM_TAG","Configuración avanzada de los esquemas de etiquetado"
441
+ "COM_LIVEOPTIM_FNT_PRE_TARGET","Adaptación del esquema de etiquetado de la páginas de destino "
442
+ "COM_LIVEOPTIM_FNT_PRE_LOOP","Opcional : etiquetado en bucle "
443
+ "COM_LIVEOPTIM_FNT_PRE_CAPPING","Sistema de limitación <br />(Alerta de Optimización)"
444
+ "COM_LIVEOPTIM_FNT_PRE_EXCLUD_PAGES","Opcional : páginas excluidas (sin optimización)"
445
+ "COM_LIVEOPTIM_FNT_PRE_EXECEPTION","Personalización de los etiquetados restringidos"
446
+ "COM_LIVEOPTIM_FNT_PRE_SUPPORT","Ayuda Premium"
447
+ "COM_LIVEOPTIM_FNT_PRE_TWITER","Ayuda Twitter 24/7"
448
+ "COM_LIVEOPTIM_FNT_PRE_HOTLINE","Asistencia telefonica gratuita "
449
+ "COM_LIVEOPTIM_FNT_PRE_CHAT","LiveChat "
450
+ "COM_LIVEOPTIM_FNT_PRE_UPGRADE","ACTUALIZACIONES"
451
+
452
+
453
+ // code401.php
454
+ "code401_titre","Código 401."
455
+
456
+ // code403.php
457
+ "code403_titre","Código 403."
458
+
459
+ // code404.php
460
+ "code404_titre","Código 404."
461
+
app/locale/fr_FR/Mkt_LiveOptim.csv ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //menu
2
+ "menu_accueil","LiveOptim"
3
+ "menu_tutoriel","Tutoriel"
4
+ "menu_motcle","Mots Clé"
5
+ "menu_pattern","Schéma Global"
6
+ "menu_patterncible","Schéma sur page cible"
7
+ "menu_baliseignorer","Restrictions"
8
+ "menu_config","Configuration"
9
+ "menu_pages_restreintes","Pages restreintes"
10
+
11
+ "all_expire","Vous utilisez une version bridée.<br />
12
+ Bénéficiez des effets de LiveOptim sans limite de mots-clés ou de paramétrage. Acheter dès maintenant votre licence et retrouvez votre configuration avancée !"
13
+ "all_non_inscrit","Vous ne pouvez utiliser le module sans être inscrit au préalable. Vous pouvez vous inscrire sur <a class='link_liveoptim' href='http://www.liveoptim.com' target='_blank'>le site de LiveOptim</a>"
14
+ "all_compte_test","Vous utilisez une version d'essai.<br />
15
+ Bénéficiez des effets de LiveOptim sur votre site sans limite de durée, achetez dès maintenant votre licence !"
16
+ "all_bouton_buy","<a class='btn_buy' href='http://www.liveoptim.com/fr/paiement/choix-du-mode.html'>ACHETER</a>"
17
+ "all_bouton_MaJ","<a class='btn_MaJ' href='%s'>MISE A JOUR<br />DISPONIBLE</a>"
18
+ "accueil_accueil","Accueil"
19
+ "accueil_titre","Bienvenue sur votre console d'administration LiveOptim"
20
+ "accueil_contenu","
21
+
22
+ <p>Depuis cette interface, vous pouvez paramétrer le fonctionnement de LiveOptim sur votre site :</p>
23
+ <ul>
24
+ <li>Expressions clés
25
+ <ul>
26
+ <li><a href='%s'>Ajout d'expressions</a>
27
+ <p>Ajoutez ou modifiez votre liste d’expresions clés stratégiques et
28
+ les URL des pages cibles associées</p></li>
29
+ </ul>
30
+ </li>
31
+ <li>Paramétrage :
32
+ <ul>
33
+ <li><a href='%s'>Schéma de balisage global</a>
34
+ <p>Schéma de balisage appliqué par défaut<span class='lo_ps'>*</span> par la fonction sur les expressions clés présentes dans vos contenus&#44; et leur ordre d’apparition</p>
35
+ </li>
36
+ <li><a href='%s'>Schéma de balisage sur page cible</a><span class='txt_prenium'>(version premium)</span>
37
+ <p>Modifiez le paramétrage des balises sur les expressions clés lorsqu’elles sont traitées sur leur(s) page(s) cible(s)</p>
38
+ </li>
39
+ <li><a href='%s'>Exceptions de traitement</a>
40
+ <p>Balises au sein desquelles les contenus ne doivent pas être traités par la fonction<span class='lo_ps'>*</span></p>
41
+ </li>
42
+ <li><a href='%s'>Pages restreintes</a><span class='txt_prenium'>(version premium)</span>
43
+ <p>Modifiez les pages au sein desquelles les contenus ne doivent pas être traitées par la fonction</p>
44
+ </li>
45
+ </ul>
46
+ </li>
47
+ </ul>
48
+ <p class='txt_etoile'><i><span class='lo_ps'>*</span> Modification disponible dans la version prenium</i></p>"
49
+ "parametrage","Paramétrage"
50
+ "contact","Nous contacter"
51
+ "facebook","Rejoignez-nous"
52
+ "twitter","Besoin d'aide ?"
53
+ "twitter2","@liveoptim"
54
+ "inscription_message","Inscrivez votre site pour activer LiveOptim"
55
+ "accueil_erreur_pas_de_compte","Compte inactif."
56
+ "accueil_inscrivez_vous_ici","Inscription"
57
+ "accueil_copte_client_actif","Compte activé"
58
+ "accueil_compte_client_inactif","Compte non activé"
59
+ "accueil_mots_cles","Mots Clés"
60
+ "accueil_balise_ignores","Exceptions de traitement"
61
+ "accueil_pattern","Schéma de balisage global"
62
+ "accueil_pattern_cible","Schéma de balisage sur page cible"
63
+ "accueil_nouveau_mdp","Nouveau mot de passe"
64
+ "modifier","Modifier"
65
+
66
+
67
+
68
+ // connexion.php
69
+ "connexion_1","Acc&egrave;s administration"
70
+ "connexion_content","
71
+ Indiquez ci-dessous votre mot de passe de connexion &agrave; l'administration LiveOptim<sup>&copy;</sup>
72
+
73
+ "
74
+ "connexion_titre","Mot de passe :"
75
+ "connexion_connexion","Connexion"
76
+ "connexion_messageErreur_1","Mot de passe erron&eacute;"
77
+
78
+ // nouveauMdp.php
79
+ "nouveauMdp_titre","Bienvenue sur LiveOptim<sup>&copy;</sup>"
80
+ "nouveauMdp_content","
81
+ D&eacute;finissez le mot de passe qui vous servira &agrave; vous connecter
82
+ &agrave; l&quot;administration du module, et conservez-le pr&eacute;cieusement.
83
+
84
+ "
85
+ "nouveauMdp_titre","Choix du mot de passe :"
86
+ "nouveauMdp_ancien_mdp","Ancien mot de passe :"
87
+ "nouveauMdp_nouveau_mdp","Mot de passe :"
88
+ "nouveauMdp_nouveau_mdp_2","Confirmation :"
89
+ "nouveauMdp_connexion","Enregistrer"
90
+ "nouveauMdp_messageErreur_1","Mots de passe invalides "
91
+
92
+
93
+
94
+ // accueil.php
95
+
96
+
97
+
98
+
99
+ // tutoriel.php
100
+ "tutoriel_titre","Tutoriel"
101
+ "COM_LIVEOPTIM_TUTO","<div ><img src='http://liveoptim.veille-mkt.com//img/layout/video.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'><div style='padding-top:80px;'><p style='font-size:18px'>Laissez-vous guider par la vidéo tutoriel en
102
+ <u><a href='http://www.youtube.com/mktvideolab' target='_blank'>cliquant ici</a></u></p></div></div>
103
+ <div><img src='http://liveoptim.veille-mkt.com//img/layout/book.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'><div style='padding-top:80px; margin-top:70px;'><p style='font-size:18px'>Téléchargez le tutoriel complet du plugin Liveoptim pour Magento en
104
+ <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_fr.pdf' target='_blank'>cliquant ici</a></u></p></div></div>"
105
+
106
+ "tutoriel_contenu","
107
+ <p>T&eacute;l&eacute;chargez le tutoriel complet du plugin Liveoptim pour Magento en <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_fr.pdf' target='_blank'>cliquant ici</a></u></p>
108
+
109
+ "
110
+
111
+
112
+
113
+ // listerBaliseIgnore.php
114
+
115
+ "listerBaliseIgnore_accueil","Accueil"
116
+ "hintPattern_config_Export","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Exportez votre base de mots-clés/pages cible et vos paramètres avant toute désactivation du plugin ou mise à jour ! </p> </div>"
117
+ "hintPattern_config_csv","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p> Vous pouvez réaliser l’import de vos paramètres ; il vous suffit de choisir la table que vous souhaitez importer ou d’importer toutes les tables (soit 6 tables) en zip.
118
+ </p> </div>"
119
+ "hintPattern_config_limite","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt="?"/> <p>Paramétrez une limite haute d'optimisations
120
+ </p>
121
+ <h2>Conseils d'utilisation :</h2>
122
+ <ul>
123
+ <li>Par défaut, limite de 5 optimisation du même mot-clé dans une page<br />
124
+ </li>
125
+ <li>Nous vous conseillons de ne pas aller au-délà.</li>
126
+ <li>
127
+ Vous pouvez diminuer cette valeur si vous le souhaitez !/li>
128
+ </ul> </div>"
129
+ "hintPattern_config","<div class='hint2'> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Activez / Désactivez la fonction via ce bouton
130
+ </p> </div> "
131
+ "listerBaliseIgnore_balises_ignores","Exceptions de traitement"
132
+ "listerBaliseIgnore_titre","Exceptions de traitement"
133
+ "listerBaliseIgnore_nom","Nom"
134
+ "listerBaliseIgnore_text1","<div style='margin-top:20px'>
135
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenue dans votre espace Optimisation :
136
+ Vous trouvez ici les balises sur lesquelles la fonction ne repassera pas !
137
+ </span></p>
138
+ <span style='font-size :18px; font-weight:bold'>
139
+ 'Il s'agit d'un paramétrage avancé. Nous vous conseillons de laisser le paramétrage par défaut'<br/><br/>
140
+ </span>
141
+ </div>"
142
+ "listerBaliseIgnore_action","Action"
143
+ "listerBaliseIgnore_text","<div style='margin-top:20px'>
144
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenue dans votre espace Optimisation :
145
+ Personnalisez les pages traitées par LiveOptim !
146
+ </span></p>
147
+ <span style='font-size: 18px;font-weight:bold; '>
148
+ Ajoutez la page de votre site que vous ne souhaitez pas optimiser avec LiveOptim !
149
+ </span>
150
+
151
+
152
+ </div>"
153
+ "listerBaliseIgnore_confirmation_suppression","Etes-vous sur de vouloir supprimer cette restriction ?"
154
+ "listerBaliseIgnore_supprimer","Supprimer"
155
+ "listerBaliseIgnore_modifier","Modifier"
156
+ "listerBaliseIgnore_ajouter","Ajouter"
157
+ "hintBaliseIgnore"," <div class='hint2'><img src='%s' alt='?'/> <p>Indiquez ici les balises au sein desquelles le contenu ne doit pas être traité par LiveOptim</p></div>"
158
+
159
+ // layout.php, layoutConnexion.php, layoutNouveauMdp.php
160
+ "layout_title","Admin de Liveoptim"
161
+ "layout_deconnexion","Déconnexion"
162
+ "layout_liveoptim","Liveoptim"
163
+
164
+ // listerMotCle.php
165
+ "COM_LIVEOPTIM_BOUTON_RANKING","<a class='btn_rank' href='#' onclick='ajaxOuvrirFenetreNouveauRapport();'>Lance ranking</a>"
166
+ "COM_LIVEOPTIM_MS_APRES","Veuillez vous connecter sur <a id='lien_so' href='http://www.statoptim.com/controleur.php?cible=identification&cible2=apercu-rapport&recherche=ranking&id_projet=' target='_blank' >Statoptim</a> pour voir les positions de votre site.Munissez-vous de vos accès (envoyés par mail à votre inscription)."
167
+ "COM_LIVEOPTIM_MS_AVANT","Veuillez patienter durant le ranking.(Ne pas fermer cette fenêtre)"
168
+ "listerMotCle_table_requete_text","<div style='margin-top:20px'><p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenue dans votre espace Optimisation :<br />Renseignez ici vos mots-clés et boostez ainsi votre trafic !</span></p><ol style='font-size:14px;'><li>Ajoutez un mot-clé dans 'Requête'</li><li>Associez lui une page de votre site</li> <li>Cliquez sur 'ajouter', et ainsi de suite pour chaque mot-clé. </li></ol><em>(NB: Plus de conseils en cliquant sur <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> à côté de chaque élément)</em><br><br></div>"
169
+ "hintMotCle"," <div class='hint2'><img src='%s' alt='?'/> <p>Renseignez les expressions clés stratégiques pour votre positionnement, la ou les pages cibles associées et leur ordre de traitement (si vous définissez plusieurs pages cibles pour une même expression clé)</p> <h2>Conseils d'utilisation :</h2> <ul> <li>Variez les pages Cibles en fonction de vos expressions clés.</li><li>Ne modifiez pas trop fréquemment les pages cibles d’une expression clé</li></ul> </div> "
170
+ "hintMotCle_position","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Vous pouvez définir pour un même mot-clé plusieurs pages associées.<br/> La position sert uniquement dans ce cas là.</p><h2>Conseils d'utilisation :</h2> <ul> <li>Renseignez plusieurs URLs pour un même mot-clé afin de diversifier les pages cibles<br /></li> <li>Les URLS de ces pages ont alors triées selon un ordre de priorité qui leur est attribué et<br/> que vous pouvez définir (via les flèches ou en renseignant une valeur).</li> <li>La fonction fera alors un premier lien vers la première url&#44;<br/> et un second lien vers la seconde url&#44; pour le même contenu</li> <li>NB : il ne s'agit pas de l'ordre des mots-clés mais celui des URLs.</li> </ul> </div>
171
+ "hintMotCle_destination","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Renseignez ici une ou plusieurs pages associées au mot-clé. </p><p>Il s'agit de la page que vous souhaitez positionner sur cette expression clé.</p> <h2>Conseils d'utilisation :</h2> <ul> <li>Renseignez plusieurs URLs pour un même mot-clé afin de diversifier les pages cibles.<br />Il vous suffit d'ajouter le même mot-clé avec une URL différente</li> </ul> </div>
172
+ "hintMotCle_requete"," <div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/><p> Renseignez ici les expressions clés sur lesquelles vous souhaitez être visible dans les moteurs. </p> <h2>Conseils d'utilisation :</h2> <ul> <span class='mc'><li >Multipliez les clés d'entrées sur votre site : <br />Mixez mots-clés génériques et mots-clés plus longue traine. </li></span><br /><li> Exemple : <br />mot-clé générique : 'mode'<br />mot-clé longue traine : "blog de mode féminine"<br /><br />mot-clé générique : 'voyage'<br />mot-clé longue traine : 'voyage londres pas cher'<br /></li><br /><li>Ces mots-clés&#44; pris individuellement&#44; génèrent peu de trafic mais&#44; une fois cumulés&#44; peuvent peser jusqu’à 80 &#37; de votre trafic.</li> </ul> </div>
173
+ "listerMotCle_accueil","Accueil"
174
+ "listerMotCle_mots_cles","Mots Clés"
175
+ "listerMotCle_titre","Gestion des expressions clés et des pages cibles"
176
+ "listerMotCle_table_requete","Mot Clés"
177
+ "listerMotCle_table_destination","Adresse de la page cible (<em>avec préfixe HTTP://)"
178
+ "listerMotCle_table_position","Position"
179
+ "listerMotCle_table_action","Action"
180
+ "listerMotCle_confirmation_suppression","Etes-vous sur de vouloir supprimer ce mot clé ?"
181
+ "listerMotCle_supprimer","Supprimer"
182
+ "listerMotCle_modifier","Modifier"
183
+ "listerMotCle_monter","Monter"
184
+ "listerMotCle_descendre","Descendre"
185
+ "listerMotCle_ajouter","Ajouter"
186
+ "listerMotCle_msg_alert","Veuillez remplir le champ Mot-clé !"
187
+
188
+ // listerPattern.php
189
+ "hintPattern"," <div class='hint2'><img src='%s' alt='?'/> <p>Paramétrez les balises ajoutées par LiveOptim sur un même mot clé à chaque fois qu'il sera rencontré dans une page (hors pages cibles), en utilisant <span class='mc'>{mc}</span> pour indiquer l'expression clé et <span class='url'>{url}</span> pour indiquer l'URL cible pour les liens. Vous pouvez également choisir de traiter le schéma en boucle.</p><h2>Exemple, pour opérer le traitement ci-dessous : </h2><ul><li>&lt;strong&gt;<span class='mc'>Expression clé</span>&lt;/strong&gt;<em> (première occurence)</em></li><li>&lt;a href=”<span class='url'>http://www.example.com/page-cible.html</span>”&gt;<span class='mc'>Expression clé</span>&lt;/a&gt;<em>(deuxième occurence)</em></li><li><span class='mc'>Expression clé</span><em> (troisième occurence)</em></li></ul><h2>Renseignez la structure suivante</h2><ul> <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li> <li>&lt;a href=”<span class='url'>{url}</span>”&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li> <li><span class='mc'>{mc}</span></li> </ul></div> "
190
+ "listerPattern_accueil","Accueil"
191
+ "hintPattern_structure","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Paramétrez les balises ajoutées par LiveOptim sur un même mot clé à chaque fois qu'il sera rencontré dans une page (hors pages cibles), en utilisant <span class="mc">{mc}</span> pour indiquer l'expression clé et <span class="url">{url}</span> pour indiquer l'URL cible pour les liens. Vous pouvez également choisir de traiter le schéma en boucle.</p><h2>Exemple, pour opérer le traitement ci-dessous : </h2> <ul><li>&lt;strong&gt;<span class="mc">Expression clé</span>&lt;/strong&gt;<em> (première occurence)</em></li> <li>&lt;a href=”<span class="url">http://www.example.com/page-cible.html</span>”&gt;<span class="mc">Expression clé</span>&lt;/a&gt;<em>(deuxième occurence)</em></li><li><span class="mc">Expression clé</span><em> (troisième occurence)</em></li> </ul> <h2>Renseignez la structure suivante</h2> <ul> <li>&lt;strong&gt;<span class="mc">{mc}</span>&lt;/strong&gt;</li> <li>&lt;a href=”<span class="url">{url}</span>”&gt;<span class="mc">{mc}</span>&lt;/a&gt;</li> <li><span class="mc">{mc}</span></li> </ul> </div>"
192
+ "listerPattern_pattern","Schéma de balisage global"
193
+ "listerPattern_titre","Schéma de balisage global"
194
+ "listerPattern_boucler","Effectuer le traitement en boucle : "
195
+ "listerPattern_text","<div style='margin-top:20px'><p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenue dans votre espace Optimisation :Personnalisez ici les optimisations appliquées à vos contenus !</span></p><ol style='font-size:14px;'><li>Solution 1 : laissez le paramétrage par défaut</li><li>Solution 2 : personnalise le pour s'adapter à vos pratiques !</li></ol><em>(NB: Plus de conseils en cliquant sur <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> à côté de chaque élément)</em></div>"
196
+ "listerPattern_oui","Oui"
197
+ "listerPattern_non","Non"
198
+ "listerPattern_table_structure","Structure"
199
+ "listerPattern_table_position","Position"
200
+ "listerPattern_table_action","Action"
201
+ "listerPattern_confirmation_suppression","Etes-vous sur de vouloir supprimer ce schéma ?"
202
+ "listerPattern_supprimer","Supprimer"
203
+ "listerPattern_modifier","Modifier"
204
+ "listerPattern_monter","Monter"
205
+ "listerPattern_descendre","Descendre"
206
+ "listerPattern_ajouter","Ajouter"
207
+
208
+
209
+
210
+ // listerPatternCible.php
211
+ "hintPatternCible"," <div class='hint2'><img src='%s' alt='?'/> <p>Paramétrez les balises ajoutées par LiveOptim sur un même mot clé à chaque fois qu'il sera rencontré dans une page cible associée, en utilisant <span class='mc'>{mc}</span> pour indiquer l'expression clé et <span class='url'>{url}</span> pour indiquer l'URL cible pour les liens. Vous pouvez également choisir de traiter le schéma en boucle.</p><h2>Exemple, opérer le traitement ci-dessous : </h2><ul><li>&lt;strong&gt;<span class='mc'>Expression clé</span>&lt;/strong&gt;</li><li>&lt;a href=”<span class='url'>http://www.example.com/page-cible.html</span>”&gt;<span class='mc'>Expression clé</span>&lt;/a&gt;</li><li><span class='mc'>Expression clé</span></li></ul><h2>Renseignez la structure suivante</h2><ul> <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li> <li>&lt;a href=”<span class='url'>{url}</span><span class='mc'>{mc}</span>&lt;/a&gt;</li> <li><span class='mc'>{mc}</span></li> </ul></div> "
212
+ "listerPatternCible_accueil","Accueil"
213
+ "hintPattern_cible_structure","<div class="hint2"> <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/> <p>Paramétrez les balises ajoutées par LiveOptim sur un même mot clé à chaque fois qu'il sera rencontré dans une page cible associée, en utilisant <span class="mc">{mc}</span> pour indiquer l'expression clé et <span class="url">{url}</span> pour indiquer l'URL cible pour les liens. Vous pouvez également choisir de traiter le schéma en boucle.</p><h2>Exemple, opérer le traitement ci-dessous : </h2> <ul><li>&lt;strong&gt;<span class="mc">Expression clé</span>&lt;/strong&gt;</li> <li>&lt;a href=”<span class="url">http://www.example.com/page-cible.html</span>”&gt;<span class="mc">Expression clé</span>&lt;/a&gt;</li><li><span class="mc">Expression clé</span></li> </ul> <h2>Renseignez la structure suivante</h2> <ul> <li>&lt;strong&gt;<span class="mc">{mc}</span>&lt;/strong&gt;</li> <li>&lt;a href=”<span class="url">{url}</span>”&gt;<span class="mc">{mc}</span>&lt;/a&gt;</li> <li><span class="mc">{mc}</span></li> </ul> </div>"
214
+ "listerPatternCible_text","<div style='margin-top:20px'>
215
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bienvenue dans votre espace Optimisation :
216
+ Personnaliser ici les optimisations appliquées spécifiquement aux pages cibles (c'est-à-dire les pages associés à un mot-clé)!
217
+ </span></p><ol style='font-size:14px;'><li>
218
+ Solution 1 : laissez le paramétrage par défaut</li>
219
+ <li>Solution 2 : personnalise le pour s'adapter à vos pratiques !</li></ol>
220
+ <em>(NB: Plus de conseils en cliquant sur <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> à côté de chaque élément)</em></div>
221
+
222
+ "
223
+ "listerPatternCible_pattern","Schéma de balisage sur page cible"
224
+ "listerPatternCible_titre","Schéma de balisage sur page cible"
225
+ "listerPatternCible_boucler","Boucler"
226
+ "listerPatternCible_oui","Oui"
227
+ "listerPatternCible_non","Non"
228
+ "listerPatternCible_table_structure","Structure"
229
+ "listerPatternCible_table_position","Position"
230
+ "listerPatternCible_table_action","Action"
231
+ "listerPatternCible_confirmation_suppression","Etes-vous sur de vouloir supprimer ce schéma ?"
232
+ "listerPatternCible_supprimer","Supprimer"
233
+ "listerPatternCible_modifier","Modifier"
234
+ "listerPatternCible_monter","Monter"
235
+ "listerPatternCible_descendre","Descendre"
236
+ "listerPatternCible_ajouter","Ajouter"
237
+
238
+
239
+
240
+ "config_limite_capping","Limite"
241
+ "config_valcap_sup","Vous allez utiliser une valeur déconseillée par MKT. Renseignez-vous sur www.liveoptim.com"
242
+ "config_valcap_nan","La limite doit être un entier"
243
+ "config_valcap_null","Veuillez renseigner une valeur"
244
+ "config_export_csv","Faire une sauvegarde de la configuration de LiveOptim"
245
+ "config_table_file","Fichier :"
246
+ "config_table_all","Toutes (zip)"
247
+ "config_fichier_vide","Veuillez uploade un fichier"
248
+ "config_fichier_ncsv","Le fichier n'est pas un CSV"
249
+ "config_fichier_nzip","Le fichier n'est pas une archive ZIP"
250
+ "config_tout_cocher","Tout cocher"
251
+ "config_tout_decocher","Tout décocher"
252
+ "config_bouton_export","Export CSV"
253
+ "config_importation","Table à importer : "
254
+ "config_import_validation","Valider"
255
+ "config_backup_title","Sauvegarde des param&egrave;tres"
256
+ "config_import_title","Restauration des param&egrave;tres"
257
+ "config_backup_sql","Export SQL"
258
+ "pages_restrintes","Page"
259
+
260
+
261
+ "COM_LIVEOPTIM_LICENCE_FREE","Vous utilisez la version gratuite de LiveOptim, certaines fonctionnalités sont désactivées.<br />
262
+ <b>Passez à la version premium pour profiter de toutes les fonctionnalités<br />
263
+ ESSAI GRATUIT PENDANT 30 JOURS.</b>"
264
+ "COM_LIVEOPTIM_BOUTON_PRENIUM","<a class='btn_Prenuim' href='#' onclick='displayInfoPrenium()'><b>MISE À JOUR PREMIUM</b> <br /><i>(30 jours gratuits)</i></a>"
265
+ "hintPrenium","<div onclick='fenetreInfoPreniumFermer()' class='hint2'> <img alt='?' src='/skin/adminhtml/base/default/img/hint.png'><br> Cette fonctionalité est indisponible dans la version gratuite. <br> Passez à la version Premium pour en disposer. </div>"
266
+ "COM_LIVEOPTIM_MSG_MOT_CLE","Vous ne pouvez ajouter que 10 associations mot clé/page cible. Upgradez votre LiveOptim : plus aucune limite de mots-clés"
267
+ "COM_LIVEOPTIM_MSG_PAGES_RESTREINTE","Vous n'avez le droit qu'à 10 pages restreintes. Passez à la version Premium pour ne plus avoir de limite."
268
+
269
+ //Cache
270
+ "COM_LIVEOPTIM_CACHE_TITRE","Gestion du cache"
271
+ "COM_LIVEOPTIM_CACHE_TEXT","LiveOptim utilise un système de cache pour accélérer le traitement de vos pages<br />Cliquer ci-dessous pour vider ce cache"
272
+ "COM_LIVEOPTIM_BTN_CACHE_VIDE",VIDER LE CACHE"
273
+ "COM_LIVEOPTIM_BTN_CACHE_ACTIV","Activer"
274
+
275
+ //Inscription
276
+ "inscription_titre","Inscription"
277
+ "inscription_texte","L'utilisation du plugin requiert la création d'un compte auprès de nos services"
278
+ "inscription_email","Email : "
279
+ "inscription_url","URL de votre site :"
280
+ "inscription_pass","Mot de passe de votre compte :"
281
+ "inscription_btnInscrip","COMMENCER L'OPTIMISATION"
282
+
283
+ "inscription_mail_vide","Vous devez indiquer un e-mail"
284
+ "inscription_mail_trop_long","Vous devez indiquer un e-mail plus court"
285
+ "inscription_mail_invalid","Vous devez indiquer un e-mail valide"
286
+ "inscription_url_vide","Vous devez indiquer le nom de domaine sur lequel sera activé LiveOptim<sup>&copy;</sup>"
287
+ "inscription_url_trop_long","Vous devez indiquer un nom de domaine plus court"
288
+ "inscription_url_deja_util","Ce nom de domaine a déjà été utilisé"
289
+ "inscription_compte_already_create_wrong_email","Le compte existe déja! Veuillez indiquer l'adresse avec laquelle vous vous ête inscrit."
290
+ "inscription_compte_already_create_wrong_password","Compte existant, veuillez renseigner le mot de passe de votre compte LiveOptim."
291
+
292
+
293
+ //Fenetre Prenuim
294
+
295
+ "COM_LIVEOPTIM_FNT_PRE_ALL_PRODUCT","TOUT NOS PRODUITS"
296
+ "COM_LIVEOPTIM_FNT_PRE_OTHER_PRODUCT","Découvrez aussi les autres produits de la gamme de LiveOptim"
297
+ "COM_LIVEOPTIM_FNT_PRE_MORE_INFO","+ D'INFO"
298
+
299
+ "COM_LIVEOPTIM_FNT_PRE_TXT_MKT900","1 Prestation TOTALE d'un an sur votre site web.
300
+ Hotline gratuite, timeline 7/7, team support, etc... <br />"
301
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_MKT900","900&euro; TTC"
302
+ "COM_LIVEOPTIM_FNT_PRE_TXT_SO"," Toutes vos analyses SEO sur 1 plateforme !
303
+ Audit de site, ranking à la demande, suivi analytic des positions, etc...<br />"
304
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_SO","9.90&euro; TTC / MOIS"
305
+ "COM_LIVEOPTIM_FNT_PRE_COMING_SOON","Bientôt"
306
+
307
+
308
+
309
+ "COM_LIVEOPTIM_FNT_PRE_UN_KEY","Mots clés illimités "
310
+ "COM_LIVEOPTIM_FNT_PRE_UN_TARGET","Pages cible illimitées "
311
+ "COM_LIVEOPTIM_FNT_PRE_CACHE","Système de cache inclus <br />(Optimisation du temps de chargement) "
312
+ "COM_LIVEOPTIM_FNT_PRE_CUSTOM_TAG","Personalisation des schémas d'optimisation"
313
+ "COM_LIVEOPTIM_FNT_PRE_TARGET","Schéma d'optimisation spécifique sur pages cibles"
314
+ "COM_LIVEOPTIM_FNT_PRE_LOOP","Option: schéma en boucle "
315
+ "COM_LIVEOPTIM_FNT_PRE_CAPPING","Système de Capping <br />(Alerte de Sur-Optimisation) "
316
+ "COM_LIVEOPTIM_FNT_PRE_EXCLUD_PAGES","Option : pages exclues (sans optimisation)"
317
+ "COM_LIVEOPTIM_FNT_PRE_EXECEPTION","Personnalisation des balises restreintes"
318
+ "COM_LIVEOPTIM_FNT_PRE_SUPPORT","Support Premium "
319
+ "COM_LIVEOPTIM_FNT_PRE_TWITER","Support 24/7 Twiter Timeline "
320
+ "COM_LIVEOPTIM_FNT_PRE_HOTLINE","Hotline Gratuit"
321
+ "COM_LIVEOPTIM_FNT_PRE_CHAT","LiveChat "
322
+ "COM_LIVEOPTIM_FNT_PRE_UPGRADE","METTRE A JOUR"
323
+
324
+
325
+ // code401.php
326
+ "code401_titre","Code 401."
327
+
328
+ // code403.php
329
+ "code403_titre","Code 403."
330
+
331
+ // code404.php
332
+ "code404_titre","Code 404."
app/locale/pt_BR/Mkt_LiveOptim.csv ADDED
@@ -0,0 +1,502 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ //menu
2
+ "menu_accueil","LiveOptim"
3
+ "menu_tutoriel","Tutorial"
4
+ "menu_motcle","Palabras clave"
5
+ "menu_pattern","Esquema general"
6
+ "menu_patterncible","Esquema de páginas meta"
7
+ "menu_baliseignorer","Excepción"
8
+ "menu_config","Configuração"
9
+ "menu_pages_restreintes","Páginas restritas"
10
+
11
+ "all_expire","Utilizando uma versão limitada da LiveOptim.<br />
12
+ Benefício efeitos da LiveOptim sem nenhum limite de palavras-chave e de personalização, compre a sua licença agora e encontre a sua configuração avançada! !"
13
+ "all_non_inscrit","Você não pode usar o módulo sem antes ter se registrado. Você pode se registrar no <a class='link_liveoptim'href='http://www.liveoptim.com' target='_blank'>site de LiveOptim</a>"
14
+ "all_compte_test","Você está usando uma versão experimental.<br />
15
+ Benefício efeitos LiveOptim em seu site, sem nenhum limite de tempo, compre a sua licença agora!"
16
+ "all_bouton_buy","<a class='btn_buy' href='http://www.liveoptim.com/pt/paiement/choix-du-mode.html'>COMPRE</a>"
17
+ "all_bouton_MaJ","<a class='btn_MaJ' href='%s'>atualizações<br />disponíveis</a>"
18
+
19
+ "parametrage","Configuração"
20
+ "contact","Fale conosco"
21
+ "facebook","Junte-se a nós"
22
+ "twitter","Precisa de ajuda?"
23
+ "twitter2","@liveoptim"
24
+ "inscription_message","Inscreva o seu site para ativar o LiveOptim"
25
+ "accueil_erreur_pas_de_compte","Conta inativa."
26
+ "accueil_inscrivez_vous_ici","Inscrição"
27
+ "accueil_copte_client_actif","Conta ativada"
28
+ "accueil_compte_client_inactif","Conta inativa."
29
+ "accueil_mots_cles","Palavras-chave"
30
+ "accueil_balise_ignores","Exceções de tratamento"
31
+ "accueil_pattern","Esquema de marcação global"
32
+ "accueil_pattern_cible","Esquema de marcação na página de destino"
33
+ "accueil_nouveau_mdp","Nova senha"
34
+ "modifier","Modificar"
35
+
36
+
37
+
38
+ // connexion.php
39
+ "connexion_1","Acesso à administração"
40
+ "connexion_content","Digite abaixo a sua senha de conexão à administração do LiveOptim<sup>&copy;</sup>"
41
+ "connexion_titre","Senha :"
42
+ "connexion_connexion","Conexão"
43
+ "connexion_messageErreur_1","Senha incorreta"
44
+
45
+
46
+
47
+ // nouveauMdp.php
48
+ "nouveauMdp_titre","Bem-vindo ao LiveOptim<sup>&copy;</sup>"
49
+ "nouveauMdp_content","Defina a senha que servir para se conectar com a administração do módulo e guarde-a cuidadosamente."
50
+ "nouveauMdp_titre","Escolha da senha :"
51
+ "nouveauMdp_ancien_mdp","Senha antiga :"
52
+ "nouveauMdp_nouveau_mdp","Senha :"
53
+ "nouveauMdp_nouveau_mdp_2","Confirmação :"
54
+ "nouveauMdp_connexion","Salvar"
55
+ "nouveauMdp_messageErreur_1","Senhas inválidas "
56
+
57
+
58
+
59
+ // accueil.php
60
+ "accueil_accueil","Página Inicial"
61
+ "accueil_titre","Bem-vindo ao seu painel de administração do LiveOptim"
62
+ "accueil_contenu","
63
+ <p>
64
+ A partir desta interface, você poderá configurar a execução do LiveOptim no seu site:
65
+
66
+ </p>
67
+
68
+ <ul>
69
+
70
+ <li>
71
+
72
+ Expressões-chave
73
+
74
+ <ul>
75
+
76
+ <li>
77
+
78
+ <a href='%s'>Acréscimo de expressões-chave</a>
79
+
80
+ <p>
81
+
82
+ Adicione ou modifique a sua lista de expressões-chave estratégicas e
83
+
84
+ as URLs das páginas de destino associadas
85
+
86
+ </p>
87
+
88
+ </li>
89
+
90
+ </ul>
91
+
92
+ </li>
93
+
94
+ <li>
95
+
96
+ Configuração:
97
+
98
+ <ul>
99
+
100
+ <li>
101
+
102
+ <a href='%s'>Esquema de marcação global</a>
103
+
104
+ <p>
105
+
106
+ Esquema de otimização aplicado por função default<span class='lo_ps'>*</span> sobre o expressões-chave presentes nos seus conteúdos e sua ordem de de exibição
107
+
108
+ </p>
109
+
110
+ </li>
111
+
112
+ <li>
113
+
114
+ <a href='%s'>Esquema de marcação na página de destino</a><span class='txt_prenium'>(versão premium)</span>
115
+
116
+ <p>
117
+
118
+ Modifique a configuração das marcações nas expressões-chave quando elas
119
+
120
+ forem tratadas em sua(s) página(s) de destino
121
+
122
+ </p>
123
+
124
+ </li>
125
+
126
+ <li>
127
+
128
+ <a href='%s'>Exceções de tratamento</a>
129
+
130
+ <p>
131
+
132
+ Marcações nas quais os conteúdos não devem ser
133
+ processados pela função<span class='lo_ps'>*</span></p>.
134
+
135
+ </p>
136
+
137
+ </li>
138
+
139
+ <li>
140
+
141
+ <a href='%s'>Páginas sem otimizações</a><span class='txt_prenium'>(versão premium)</span>
142
+
143
+ <p>
144
+
145
+ Modifique páginas em quais os conteúdos não devem ser processados pela função
146
+
147
+ </p>
148
+
149
+ </li>
150
+
151
+ </ul>
152
+
153
+ </li>
154
+
155
+ </ul>
156
+ <p class='txt_etoile'><i><span class='lo_ps'>*</span> Modificação disponível na versão premium</i></p>"
157
+
158
+
159
+
160
+ // tutoriel.php
161
+ "tutoriel_titre","Tutoriel"
162
+ "COM_LIVEOPTIM_TUTO","
163
+ <div >
164
+ <img src='http://www.liveoptim.com/img/layout/video.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
165
+ <div style='padding-top:80px;'>
166
+ <p style='font-size:18px'>Deixe-nos guiá-lo pelo vídeo tutorial <u><a href='http://www.youtube.com/watch?v=b2rbn4gphYc' target='_blank'>clicando aqui</a></u>
167
+ </p>
168
+ </div>
169
+ </div>
170
+ <div>
171
+ <img src='http://www.liveoptim.com/img/layout/book.png' alt='' style='float:left; margin: 0px 20px 0px 20px;'>
172
+ <div style='padding-top:80px; margin-top:70px;'>
173
+ <p style='font-size:18px'>Faça o download do tutorial completo do plugin do Liveoptim para Magneto <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_bre.pdf' target='_blank'>clicando aqui</a></u>
174
+ </p>
175
+ </div>
176
+ </div>"
177
+
178
+ "tutoriel_contenu","<p>Você pode baixar o tutorial clicando no link abaixo <u><a href='http://www.liveoptim.com/docs/magento_tutoriel_bre.pdf' target='_blank'>Tutorial</a></u></p>"
179
+
180
+
181
+
182
+ // listerBaliseIgnore.php
183
+ "hintBaliseIgnore","<div class='hint2'><img src='%s' alt='?'/><p>Insira aqui as marcações nas quais o conteúdo não deve ser processado pelo LiveOptim</p></div>"
184
+ "listerBaliseIgnore_accueil","Página Inicial"
185
+ "listerBaliseIgnore_balises_ignores","Exceções de tratamento"
186
+ "listerBaliseIgnore_titre","Exceções de tratamento"
187
+ "listerBaliseIgnore_nom","Nome"
188
+ "listerBaliseIgnore_action","Ação"
189
+ "listerBaliseIgnore_confirmation_suppression","Tem certeza que quer remover esta restrição?"
190
+ "listerBaliseIgnore_supprimer","Remover"
191
+ "listerBaliseIgnore_modifier","Modificar"
192
+ "listerBaliseIgnore_ajouter","Suplementar"
193
+
194
+
195
+
196
+ // layout.php, layoutConnexion.php, layoutNouveauMdp.php
197
+ "layout_title","Admin de Liveoptim"
198
+ "layout_deconnexion","Logoff"
199
+ "layout_liveoptim","Liveoptim"
200
+
201
+
202
+
203
+ // listerMotCle.php
204
+ "COM_LIVEOPTIM_BOUTON_RANKING","<a class='btn_rank' href='#' onclick='ajaxOuvrirFenetreNouveauRapport();'>Start ranking</a>"
205
+ "COM_LIVEOPTIM_MS_APRES","
206
+ Por favor efectue login <a id='lien_so' href='http://www.statoptim.com/controleur.php?cible=identification&cible2=apercu-rapport&recherche=ranking&id_projet=' target='_blank' >Statoptim</a> para ver a posição do seu site.Por favor, tenham o seu acesso (enviado para a sua inscrição)."
207
+ "COM_LIVEOPTIM_MS_AVANT","Por favor, aguarde enquanto o ranking. (Não feche esta janela)"
208
+ "hintMotCle","
209
+ <div class='hint2'><img src='%s' alt='?'/>
210
+ <p>Insira as expressões-chave estratégicas para o seu posicionamento,a(s) página(s) de destino associada(s) e a ordem de tratamento (se você definir várias páginas de destino para uma mesma expressão-chave)</p>
211
+ <h2>Dicas de uso:</h2>
212
+ <ul>
213
+ <li>Varie as páginas de destino em função de suas expressões-chave.</li>
214
+ <li>Não modifique com muita frequência as páginas de destino de uma expressão-chave</li>
215
+ </ul>
216
+ </div>"
217
+ "listerMotCle_accueil","Página Inicial"
218
+ "listerMotCle_mots_cles","Palavras-chave"
219
+ "listerMotCle_titre","Gerenciamento de expressões-chave e páginas de destino"
220
+ "listerMotCle_table_requete","Palabras chave"
221
+ "listerMotCle_table_destination","Endereço da página de destino (<em>com prefixo HTTP://</em>)"
222
+ "listerMotCle_table_position","Posição"
223
+ "listerMotCle_table_action","Ação"
224
+ "listerMotCle_confirmation_suppression","Tem certeza que quer remover esta palavra-chave?"
225
+ "listerMotCle_supprimer","Remover"
226
+ "listerMotCle_modifier","Modificar"
227
+ "listerMotCle_monter","Para Cima"
228
+ "listerMotCle_descendre","Para Baixo"
229
+ "listerMotCle_ajouter","Suplementar"
230
+ "listerMotCle_msg_alert","Por favor preencha a parte palavra-chave !"
231
+
232
+ "listerMotCle_table_requete_text","
233
+ <div style='margin-top:20px'>
234
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bem-vindo ao seu espaço de a sua otimização: Insira aqui as palavras-chave e impulsione o seu tráfego! </span></p>
235
+ <ol style='font-size:14px;'>
236
+ <li>Adicione uma palavra-chave em &#34;Solicitar&#34;</li>
237
+ <li>Associe-o a uma página do seu site</li>
238
+ <li>Clique em &#34;Adicionar&#34; e assim por diante para cada palavra-chave. </li>
239
+ </ol>
240
+ <em>(NB: Para saber mais, clique em <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> que está ao lado de cada elemento)</em><br>
241
+ <br>
242
+ </div>"
243
+ "listerBaliseIgnore_text1","
244
+ <div style='margin-top:20px'>
245
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bem-vindo ao seu espaço de a sua otimização: Aqui você encontra os limites que a função não ultrapassar !</span></p>
246
+ <span style='font-size :18px; font-weight:bold'>Esta é uma configuração avançada. Recomendamos que você deixe a configuração padrão<br/><br/></span>
247
+ </div>"
248
+ "listerPattern_text","
249
+ <div style='margin-top:20px'>
250
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bem-vindo ao seu espaço de a sua otimização: Personalize aqui as otimizações aplicadas ao seu conteúdo !</span></p>
251
+ <ol style='font-size:14px;'>
252
+ <li>Solução 1: Deixe a configuração padrão</li>
253
+ <li>Solução 2: Personalize para adaptá-la às suas práticas !</li>
254
+ </ol>
255
+ <em>(NB: Para saber mais, clique em <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> que está ao lado de cada elemento)</em>
256
+ </div>"
257
+ "listerPatternCible_text","
258
+ <div style='margin-top:20px'>
259
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bem-vindo ao seu espaço de a sua otimização: Personalize aqui as otimizações aplicadas especificamente às páginas de destino (ou seja, páginas associadas à palavra-chave)!</span>
260
+ </p>
261
+ <ol style='font-size:14px;'>
262
+ <li>Solução: Deixe a configuração padrão</li>
263
+ <li>Solução: Personalize para adaptá-la às suas práticas !</li>
264
+ </ol>
265
+ <em>(NB: Para saber mais, clique em <img class='hint' src='/skin/adminhtml/base/default/img/hint.png' alt='?'> que está ao lado de cada elemento)</em></div>"
266
+ "listerBaliseIgnore_text","
267
+ <div style='margin-top:20px'>
268
+ <p><span style='font-size: 18px;font-weight:bold; color:#bf4122'>Bem-vindo ao seu espaço de a sua otimização: Personalize as páginas processadas pelo LiveOptim!</span></p>
269
+ <span style='font-size: 18px;font-weight:bold;'>Adicione a página do seu site que você não quer otimizar com LiveOptim !</span>
270
+ </div>"
271
+ "hintMotCle_requete","
272
+ <div class='hint2'>
273
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
274
+ <p>Informe aqui as expressões-chave que deseja manter visíveis nos motores.</p>
275
+ <h2>Recomendações de uso:</h2>
276
+ <ul>
277
+ <span class='mc'><li >Multiplique as chaves de entrada no seu site : <br />
278
+ Misture palavras-chave genéricas e palavras-chave de comprimento mais longo. </li></span><br />
279
+ <li> Exemplo : <br />palavra-chave genérica: &#34;Modo&#34;<br />
280
+ palavra-chave de comprimento mais longo &#34;blog de moda feminina&#34;<br /><br />
281
+ palavra-chave genérica: &#34;Viagemv&#34; <br />
282
+ palavra-chave de comprimento mais longo &#34;viagem para Londres mais barato&#34;<br />
283
+ </li><br />
284
+ <li>Essas palavras-chave&#44; consideradas individualmente&#44; geram algum tráfego mas&#44; quando combinadas&#44; podem representar até 80&#37; do seu tráfego.</li>
285
+ </ul>
286
+ </div>"
287
+ "hintMotCle_destination","
288
+ <div class='hint2'>
289
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
290
+ <p>Informe aqui uma ou mais páginas associadas à palavra-chave. Esta é a página em que você deseja posicionar esta expressão-chave.</p>
291
+ <h2>Recomendações de uso :</h2>
292
+ <ul>
293
+ <li>Informe mais URLs para a mesma palavra-chave para diversificar as páginas-alvo<br />
294
+ Basta adicionar a mesma palavra-chave com uma URL diferente
295
+ </li>
296
+ </ul>
297
+ </div>"
298
+ "hintMotCle_position","
299
+ <div class='hint2'>
300
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
301
+ <p>Você pode definir para a mesma palavra-chave várias páginas associadas. A posição será única neste caso.</p>
302
+ <h2>Recomendações de uso: </h2>
303
+ <ul>
304
+ <li>Informe mais URLs para a mesma palavra-chave para diversificar as páginas-alvo<br /></li>
305
+ <li>As URLs dessas páginas serão, então, classificadas em ordem de prioridade que lhe são atribuídas e você pode definir (através de setas ou inserção de valor).</li>
306
+ <li>A função fará então um primeiro link para a primeira url e um segundo link para a segunda URL para o mesmo conteúdo</li>
307
+ <li>NB: não é a ordem das palavras-chave, mas sim as URLs.</li>
308
+ </ul>
309
+ </div> "
310
+ "hintPattern_config","
311
+ <div class='hint2'>
312
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
313
+ <p>Ative / desative a função através deste botão</p>
314
+ </div> "
315
+ "hintPattern_config_limite","
316
+ <div class='hint2'>
317
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
318
+ <p>Configure um limite alto de otimização</p>
319
+ <h2>Recomendações de uso :</h2>
320
+ <ul>
321
+ <li>Por padrão, limite em 5 otimizações da mesma palavra-chave em uma página<br /></li>
322
+ <li>Aconselhamos a não ir além disso.</li>
323
+ <li>Você pode reduzir este valor, se quiser ! </li>
324
+ </ul>
325
+ </div>"
326
+ "hintPattern_config_Export","
327
+ <div class='hint2'>
328
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
329
+ <p>Exporte sua base de palavras-chave/páginas-alvo e suas configurações antes de desabilitar ou atualizar o plugin! </p>
330
+ </div>"
331
+ "hintPattern_config_csv","
332
+ <div class='hint2'>
333
+ <img src='/skin/adminhtml/base/default/img/hint.png' alt='?'/>
334
+ <p> Você pode fazer a importação de suas configurações; basta selecionar a tabela que deseja importar ou importar todas as tabelas (ou seja, 6 tabelas) em zip.</p>
335
+ </div>"
336
+ // listerPattern.php
337
+ "hintPattern","
338
+ <div class='hint2'>
339
+ <img src='%s' alt='?'/>
340
+ <p>Configure as marcações adicionadas pelo LiveOptim em uma mesma palavra-chave toda vez que for encontrada em uma página (fora as páginas de destino), utilizando <span class='mc'>{mc}</span> para indicar a expressão-chave e <span class='url'>{url}</span> para indicar a URL de destino para os links. Você também pode optar por tratar o esquema em loop.</p>
341
+ <h2>Para operar o tratamento abaixo, por exemplo: </h2>
342
+ <ul>
343
+ <li>&lt;strong&gt;<span class='mc'>Expressão- chave</span>&lt;/strong&gt;<em> (primeira ocorrência)</em></li>
344
+ <li>&lt;a href=&#34;<span class='url'>http://www.example.com/page-cible.html</span>&#34;&gt;<span class='mc'>Expressão-chave</span>&lt;/a&gt;<em>(segunda ocorrência)</em></li>
345
+ <li><span class='mc'>Expressão-chave</span><em> (terceira ocorrência)</em></li>
346
+ </ul>
347
+ <h2>Digite a seguinte estrutura</h2>
348
+ <ul>
349
+ <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
350
+ <li>&lt;a href=&#34;<span class='url'>{url}</span>&#34;&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
351
+ <li><span class="mc">{mc}</span></li>
352
+ </ul>
353
+ </div>"
354
+ "listerPattern_pattern","Esquema de marcação global"
355
+ "listerPattern_titre","Esquema de marcação global"
356
+ "listerPattern_boucler","Realizar o tratamento em loop : "
357
+ "listerPattern_oui","Sim"
358
+ "listerPattern_non","Não"
359
+ "listerPattern_table_structure","Estrutura"
360
+ "listerPattern_table_position","Posição"
361
+ "listerPattern_table_action","Ação"
362
+ "listerPattern_confirmation_suppression","Tem certeza que quer remover este esquema?"
363
+ "listerPattern_supprimer","Remover"
364
+ "listerPattern_modifier","Modificar"
365
+ "listerPattern_monter","Para Cima"
366
+ "listerPattern_descendre","Para Baixo"
367
+ "listerPattern_ajouter","Suplementar"
368
+
369
+
370
+
371
+ // listerPatternCible.php
372
+ "hintPatternCible","
373
+ <div class='hint2'>
374
+ <img src='%s' alt='?'/>
375
+ <p>Configure as marcações adicionadas pelo LiveOptim em uma mesma palavra-chave toda vez que que for encontrada em uma página de destino associada, usando <span class='mc'>{mc}</span> para indicar a expressão-chave e <span class='url'>{url}</span> para indicar a URL de destino para os links. Você também pode optar por tratar o esquema em loop.</p>
376
+ <h2>Operar o tratamento abaixo, por exemplo: </h2>
377
+ <ul>
378
+ <li>&lt;strong&gt;<span class='mc'>Expressão-chave</span>&lt;/strong&gt;</li>
379
+ <li>&lt;a href=&#34;<span class='url'>http://www.example.com/page-cible.html</span>&#34;&gt;<span class='mc'>Expressão-chave</span>&lt;/a&gt;</li>
380
+ <li><span class='mc'>Expressão-chave</span></li>
381
+ </ul>
382
+ <h2>Digite a seguinte estrutura</h2>
383
+ <ul>
384
+ <li>&lt;strong&gt;<span class='mc'>{mc}</span>&lt;/strong&gt;</li>
385
+ <li>&lt;a href=&#34;<span class='url'>{url}</span>&#34;&gt;<span class='mc'>{mc}</span>&lt;/a&gt;</li>
386
+ <li><span class="mc">{mc}</span></li>
387
+ </ul>
388
+ </div>"
389
+ "listerPatternCible_accueil","Página Inicial"
390
+ "listerPatternCible_pattern","Esquema de marcação em página de destino"
391
+ "listerPatternCible_titre","Esquema de marcação em página de destino"
392
+ "listerPatternCible_boucler","Em loop"
393
+ "listerPatternCible_oui","Sim"
394
+ "listerPatternCible_non","Não"
395
+ "listerPatternCible_table_structure","Estrutura"
396
+ "listerPatternCible_table_position","Posição"
397
+ "listerPatternCible_table_action","Ação"
398
+ "listerPatternCible_confirmation_suppression","Tem certeza que quer remover este esquema?"
399
+ "listerPatternCible_supprimer","Remover"
400
+ "listerPatternCible_modifier","Modificar"
401
+ "listerPatternCible_monter","Para Cima"
402
+ "listerPatternCible_descendre","Para Baixo"
403
+ "listerPatternCible_ajouter","Suplementar"
404
+
405
+ "config_limite_capping","Limite"
406
+ "config_valcap_sup","Você vai utilizar um valor que a MKT não recomenda. Obtenha informações em www.liveoptim.com"
407
+ "config_valcap_nan","O limite deve ser um número inteiro"
408
+ "config_valcap_nan","Informe um valor"
409
+ "config_export_csv","Fazer um backup da configuração de LiveOptim"
410
+ "config_table_file","Arquivo:"
411
+ "config_table_all","Todos (zip)"
412
+ "config_fichier_vide","Faça upload de um arquivo"
413
+ "config_fichier_ncsv","O arquivo não é um CSV"
414
+ "config_fichier_nzip","O arquivo não é um arquivo ZIP"
415
+ "config_tout_cocher","Marcar tudo"
416
+ "config_tout_decocher","Desmarcar tudo"
417
+ "config_bouton_export","Exportar CSV"
418
+ "config_importation","Tabela a importar: "
419
+ "config_import_validation","Validar"
420
+ "config_backup_title","Salvar parâmetros"
421
+ "config_import_title","A Restauração dos parâmetros"
422
+ "config_backup_sql","Exportar SQL"
423
+
424
+
425
+ "pages_restrintes","Página"
426
+
427
+
428
+
429
+ //Cache
430
+ "COM_LIVEOPTIM_CACHE_TITRE","Gerenciamento de cache"
431
+ "COM_LIVEOPTIM_CACHE_TEXT","LiveOptim usa um cache para acelerar o processamento de suas páginas <br />
432
+ Clique abaixo para suprimir esse cache"
433
+ "COM_LIVEOPTIM_BTN_CACHE_VIDE","ESVAZIAR CACHE"
434
+ "COM_LIVEOPTIM_BTN_CACHE_ACTIV","ATIVAR"
435
+
436
+ //version FREE
437
+ "COM_LIVEOPTIM_LICENCE_FREE","Você utiliza a versão gratuita de LivOptim, certas funcionalidades estão desativadas. <br />
438
+ <b>Passe à versão premium para aproveitar todas as funcionalidades:<br />
439
+ VERSÃO GRATUITA DURANTE 30 DIAS.</b>"
440
+ "COM_LIVEOPTIM_BOUTON_PRENIUM","<a class='btn_Prenuim' href='#' onclick='displayInfoPrenium()'><b>ATUALIZAÇÃO PREMIUM</b> <br /><i>(30 dias de graça)</i></a>"
441
+ "hintPrenium","<div onclick='fenetreInfoPreniumFermer()' class='hint2'> <img alt='?' src='/skin/adminhtml/base/default/img/hint.png'><br>Esta funcionalidade nao está disponível na versão gratuita .<br/> Para obtê-la passe à versão Premium.</div>"
442
+ "COM_LIVEOPTIM_MSG_MOT_CLE","Só pode acrescentar 10 associações palavra-chave/página de destino. Faça um Upgrade ao seu LiveOptim : sem limite de palavras-chave."
443
+ "COM_LIVEOPTIM_MSG_PAGES_RESTREINTE","Só pode escolher 10 páginas no máximo . Passe à versão Premium sem limite."
444
+
445
+ //Inscription
446
+ "inscription_titre","Registration"
447
+ "inscription_texte","Using the plugin requires creating an account with our services"
448
+ "inscription_email","Email : "
449
+ "inscription_url","URL of your site:"
450
+ "inscription_pass","Password for your account:"
451
+ "inscription_btnInscrip","START OPTIMIZATION"
452
+
453
+ "inscription_mail_vide","É preciso inserir um e-mail"
454
+ "inscription_mail_trop_long","É preciso inserir um e-mail mais curto"
455
+ "inscription_mail_invalid","É preciso inserir um e-mail válido"
456
+ "inscription_url_vide","É preciso inserir o nome do domínio no qual o LiveOptim<sup>&copy;</sup> será ativado"
457
+ "inscription_url_trop_long","É preciso inserir um nome de domínio mais curto"
458
+ "inscription_url_deja_util","Este nome de domínio já foi utilizado"
459
+ "inscription_compte_already_create_wrong_email","The account already exists! Please indicate the address with which you registered."
460
+ "inscription_compte_already_create_wrong_password","Existing account, please enter the password of your account LiveOptim."
461
+
462
+ //Fenetre Prenuim
463
+
464
+ "COM_LIVEOPTIM_FNT_PRE_ALL_PRODUCT","TODOS OS NOSSOS PRODUTOS"
465
+ "COM_LIVEOPTIM_FNT_PRE_OTHER_PRODUCT","Veja também os outros produtos da gama de LiveOptim"
466
+ "COM_LIVEOPTIM_FNT_PRE_MORE_INFO","MORE INFO"
467
+ "COM_LIVEOPTIM_FNT_PRE_TXT_MKT900","1-year SEO service for your website.<br />
468
+ Free hotline, 7-day-a-week timeline, support team, etc...<br />"
469
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_MKT900","&euro;900 INC. TAXES"
470
+ "COM_LIVEOPTIM_FNT_PRE_TXT_SO","All your SEO analyses on 1 platform!<br />
471
+ Site audit, ranking on demand, analytic monitoring of positions, etc...<br />"
472
+ "COM_LIVEOPTIM_FNT_PRE_PRIX_SO","&euro;9.90 INC. TAXES / MONTH"
473
+ "COM_LIVEOPTIM_FNT_PRE_COMING_SOON","EM BREVE"
474
+
475
+ "COM_LIVEOPTIM_FNT_PRE_UN_KEY","Palavras-chaves ilimitadas"
476
+ "COM_LIVEOPTIM_FNT_PRE_UN_TARGET","Páginas de destino ilimitadas"
477
+ "COM_LIVEOPTIM_FNT_PRE_CACHE","Sistema de cache incluído<br /> (otimização do tempo de carregamento"
478
+ "COM_LIVEOPTIM_FNT_PRE_CUSTOM_TAG","Personalisação dos esquemas de otimização"
479
+ "COM_LIVEOPTIM_FNT_PRE_TARGET","Esquema specífico de otimização das páginas de destino"
480
+ "COM_LIVEOPTIM_FNT_PRE_LOOP","Opção: esquema de marcação em laço"
481
+ "COM_LIVEOPTIM_FNT_PRE_CAPPING","Sistema de controlo com alerta em caso de otimização excessiva"
482
+ "COM_LIVEOPTIM_FNT_PRE_EXCLUD_PAGES","Opção: exclusão de páginas sem otimização"
483
+ "COM_LIVEOPTIM_FNT_PRE_EXECEPTION","Preconfigure exceptions tags"
484
+ "COM_LIVEOPTIM_FNT_PRE_SUPPORT","Apoio Premium"
485
+ "COM_LIVEOPTIM_FNT_PRE_TWITER","Timeline do Twitter Apoio 24/7"
486
+ "COM_LIVEOPTIM_FNT_PRE_HOTLINE","Hotline Gratuita"
487
+ "COM_LIVEOPTIM_FNT_PRE_CHAT","LiveChat"
488
+ "COM_LIVEOPTIM_FNT_PRE_UPGRADE","ATUALIZAÇÕES"
489
+
490
+
491
+
492
+
493
+ // code401.php
494
+ "code401_titre","Código 401."
495
+
496
+ // code403.php
497
+ "code403_titre","Código 403."
498
+
499
+ // code404.php
500
+ "code404_titre","Código 404."
501
+
502
+ );
js/liveoptim/jquery-1.10.2.min.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ /*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
2
+ //@ sourceMappingURL=jquery-1.10.2.min.map
3
+ */
4
+ (function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav></:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t
5
+ }({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Ct=/^(?:checkbox|radio)$/i,Nt=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle);
6
+ u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=un(e,t),Pt.detach()),Gt[e]=n),n}function un(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,n){x.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(x.css(e,"display"))?x.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x.support.opacity||(x.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=x.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===x.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,n){return n?x.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,n){x.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?x(e).position()[n]+"px":r):t}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!x.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||x.css(e,"display"))},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(x.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Ct.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),x.param=function(e,n){var r,i=[],o=function(e,t){t=x.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var mn,yn,vn=x.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Cn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Nn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=x.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=o.href}catch(Ln){yn=a.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(T)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(l){var u;return o[l]=!0,x.each(e[l]||[],function(e,l){var c=l(n,r,i);return"string"!=typeof c||a||o[c]?a?!(u=c):t:(n.dataTypes.unshift(c),s(c),!1)}),u}return s(n.dataTypes[0])||!o["*"]&&s("*")}function _n(e,n){var r,i,o=x.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,l=e.indexOf(" ");return l>=0&&(i=e.slice(l,e.length),e=e.slice(0,l)),x.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&x.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?x("<div>").append(x.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Cn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?_n(_n(e,x.ajaxSettings),t):_n(x.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,l,u,c,p=x.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?x(f):x.event,h=x.Deferred(),g=x.Callbacks("once memory"),m=p.statusCode||{},y={},v={},b=0,w="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return b||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>b)for(t in e)m[t]=[m[t],e[t]];else C.always(e[C.status]);return this},abort:function(e){var t=e||w;return u&&u.abort(t),k(0,t),this}};if(h.promise(C).complete=g.add,C.success=C.done,C.error=C.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=x.trim(p.dataType||"*").toLowerCase().match(T)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?"80":"443"))===(mn[3]||("http:"===mn[1]?"80":"443")))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=x.param(p.data,p.traditional)),qn(An,p,n,C),2===b)return C;l=p.global,l&&0===x.active++&&x.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Nn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(x.lastModified[o]&&C.setRequestHeader("If-Modified-Since",x.lastModified[o]),x.etag[o]&&C.setRequestHeader("If-None-Match",x.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)C.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,C,p)===!1||2===b))return C.abort();w="abort";for(i in{success:1,error:1,complete:1})C[i](p[i]);if(u=qn(jn,p,n,C)){C.readyState=1,l&&d.trigger("ajaxSend",[C,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){C.abort("timeout")},p.timeout));try{b=1,u.send(y,k)}catch(N){if(!(2>b))throw N;k(-1,N)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,N=n;2!==b&&(b=2,s&&clearTimeout(s),u=t,a=i||"",C.readyState=e>0?4:0,c=e>=200&&300>e||304===e,r&&(w=Mn(p,C,r)),w=On(p,w,C,c),c?(p.ifModified&&(T=C.getResponseHeader("Last-Modified"),T&&(x.lastModified[o]=T),T=C.getResponseHeader("etag"),T&&(x.etag[o]=T)),204===e||"HEAD"===p.type?N="nocontent":304===e?N="notmodified":(N=w.state,y=w.data,v=w.error,c=!v)):(v=N,(e||!N)&&(N="error",0>e&&(e=0))),C.status=e,C.statusText=(n||N)+"",c?h.resolveWith(f,[y,N,C]):h.rejectWith(f,[C,N,v]),C.statusCode(m),m=t,l&&d.trigger(c?"ajaxSuccess":"ajaxError",[C,p,c?y:v]),g.fireWith(f,[C,N]),l&&(d.trigger("ajaxComplete",[C,p]),--x.active||x.event.trigger("ajaxStop")))}return C},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,n){return x.get(e,t,n,"script")}}),x.each(["get","post"],function(e,n){x[n]=function(e,r,i,o){return x.isFunction(r)&&(o=o||i,i=r,r=t),x.ajax({url:e,type:n,dataType:o,data:r,success:i})}});function Mn(e,n,r){var i,o,a,s,l=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in l)if(l[s]&&l[s].test(o)){u.unshift(s);break}if(u[0]in r)a=u[0];else{for(s in r){if(!u[0]||e.converters[s+" "+u[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==u[0]&&u.unshift(a),r[a]):t}function On(e,t,n,r){var i,o,a,s,l,u={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)u[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(a=u[l+" "+o]||u["* "+o],!a)for(i in u)if(s=i.split(" "),s[1]===o&&(a=u[l+" "+s[0]]||u["* "+s[0]])){a===!0?a=u[i]:u[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(p){return{state:"parsererror",error:a?p:"No conversion from "+l+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),x.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=a.head||x("head")[0]||a.documentElement;return{send:function(t,i){n=a.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var Fn=[],Bn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Fn.pop()||x.expando+"_"+vn++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,l=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return l||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=x.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,l?n[l]=n[l].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||x.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,Fn.push(o)),s&&x.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}x.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=x.ajaxSettings.xhr(),x.support.cors=!!Rn&&"withCredentials"in Rn,Rn=x.support.ajax=!!Rn,Rn&&x.ajaxTransport(function(n){if(!n.crossDomain||x.support.cors){var r;return{send:function(i,o){var a,s,l=n.xhr();if(n.username?l.open(n.type,n.url,n.async,n.username,n.password):l.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)l[s]=n.xhrFields[s];n.mimeType&&l.overrideMimeType&&l.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)l.setRequestHeader(s,i[s])}catch(u){}l.send(n.hasContent&&n.data||null),r=function(e,i){var s,u,c,p;try{if(r&&(i||4===l.readyState))if(r=t,a&&(l.onreadystatechange=x.noop,$n&&delete Pn[a]),i)4!==l.readyState&&l.abort();else{p={},s=l.status,u=l.getAllResponseHeaders(),"string"==typeof l.responseText&&(p.text=l.responseText);try{c=l.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,u)},n.async?4===l.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},x(e).unload($n)),Pn[a]=r),l.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+w+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Yn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),a=(x.cssNumber[e]||"px"!==o&&+r)&&Yn.exec(x.css(n.elem,e)),s=1,l=20;if(a&&a[3]!==o){o=o||a[3],i=i||[],a=+r||1;do s=s||".5",a/=s,x.style(n.elem,e,a+o);while(s!==(s=n.cur()/r)&&1!==s&&--l)}return i&&(a=n.start=+a||+r||0,n.unit=o,n.end=i[1]?a+(i[1]+1)*i[2]:+i[2]),n}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=x.now()}function Zn(e,t,n){var r,i=(Qn[t]||[]).concat(Qn["*"]),o=0,a=i.length;for(;a>o;o++)if(r=i[o].call(n,t,e))return r}function er(e,t,n){var r,i,o=0,a=Gn.length,s=x.Deferred().always(function(){delete l.elem}),l=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,u.startTime+u.duration-t),r=n/u.duration||0,o=1-r,a=0,l=u.tweens.length;for(;l>a;a++)u.tweens[a].run(o);return s.notifyWith(e,[u,o,n]),1>o&&l?n:(s.resolveWith(e,[u]),!1)},u=s.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,u.opts,t,n,u.opts.specialEasing[t]||u.opts.easing);return u.tweens.push(r),r},stop:function(t){var n=0,r=t?u.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)u.tweens[n].run(1);return t?s.resolveWith(e,[u,t]):s.rejectWith(e,[u,t]),this}}),c=u.props;for(tr(c,u.opts.specialEasing);a>o;o++)if(r=Gn[o].call(u,e,c,u.opts))return r;return x.map(c,Zn,u),x.isFunction(u.opts.start)&&u.opts.start.call(e,u),x.fx.timer(x.extend(l,{elem:e,anim:u,queue:u.opts.queue})),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always)}function tr(e,t){var n,r,i,o,a;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=x.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(er,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,l,u=this,c={},p=e.style,f=e.nodeType&&nn(e),d=x._data(e,"fxshow");n.queue||(s=x._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,l=s.empty.fire,s.empty.fire=function(){s.unqueued||l()}),s.unqueued++,u.always(function(){u.always(function(){s.unqueued--,x.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(x.support.inlineBlockNeedsLayout&&"inline"!==ln(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",x.support.shrinkWrapBlocks||u.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],Vn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show"))continue;c[r]=d&&d[r]||x.style(e,r)}if(!x.isEmptyObject(c)){d?"hidden"in d&&(f=d.hidden):d=x._data(e,"fxshow",{}),o&&(d.hidden=!f),f?x(e).show():u.done(function(){x(e).hide()}),u.done(function(){var t;x._removeData(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)a=Zn(f?d[r]:0,r,u),r in d||(d[r]=a.start,f&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}x.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),a=function(){var t=er(this,x.extend({},e),o);(i||x._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=x.timers,a=x._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=x._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,a=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=rr.prototype.init,x.fx.tick=function(){var e,n=x.timers,r=0;for(Xn=x.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||x.fx.stop(),Xn=t},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){Un||(Un=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(Un),Un=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){x.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,x.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},x.offset={setOffset:function(e,t,n){var r=x.css(e,"position");"static"===r&&(e.style.position="relative");var i=x(e),o=i.offset(),a=x.css(e,"top"),s=x.css(e,"left"),l=("absolute"===r||"fixed"===r)&&x.inArray("auto",[a,s])>-1,u={},c={},p,f;l?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),x.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(u.top=t.top-o.top+p),null!=t.left&&(u.left=t.left-o.left+f),"using"in t?t.using.call(e,u):i.css(u)}},x.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===x.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(n=e.offset()),n.top+=x.css(e[0],"borderTopWidth",!0),n.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-x.css(r,"marginTop",!0),left:t.left-n.left-x.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);x.fn[e]=function(i){return x.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?x(a).scrollLeft():o,r?o:x(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return x.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}x.each({Height:"height",Width:"width"},function(e,n){x.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){x.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return x.access(this,function(n,r,i){var o;return x.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?x.css(n,r,s):x.style(n,r,i,s)},n,a?i:t,a,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:(e.jQuery=e.$=x,"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}))})(window);
js/liveoptim/script.js ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ function fenetreLiveoptimOuvrir() {
3
+ var elementFenetre = document.getElementById('fenetreLiveoptim');
4
+ elementFenetre.style.display = 'block';
5
+ }
6
+
7
+ function fenetreLiveoptimFermer() {
8
+ var elementFenetre = document.getElementById('fenetreLiveoptim');
9
+ elementFenetre.style.display = 'none';
10
+ }
11
+ function fenetre1LiveoptimOuvrir() {
12
+ var elementFenetre1 = document.getElementById('fenetre1Liveoptim');
13
+ elementFenetre1.style.display = 'block';
14
+ }
15
+
16
+ function fenetre1LiveoptimFermer() {
17
+ var elementFenetre1 = document.getElementById('fenetre1Liveoptim');
18
+ elementFenetre1.style.display = 'none';
19
+ }
20
+ function fenetre2LiveoptimOuvrir() {
21
+ var elementFenetre2 = document.getElementById('fenetre2Liveoptim');
22
+ elementFenetre2.style.display = 'block';
23
+ }
24
+
25
+ function fenetre2LiveoptimFermer() {
26
+ var elementFenetre2 = document.getElementById('fenetre2Liveoptim');
27
+ elementFenetre2.style.display = 'none';
28
+ }
29
+ function fenetre3LiveoptimOuvrir() {
30
+ var elementFenetre3 = document.getElementById('fenetre3Liveoptim');
31
+ elementFenetre3.style.display = 'block';
32
+ }
33
+
34
+ function fenetre3LiveoptimFermer() {
35
+ var elementFenetre3 = document.getElementById('fenetre3Liveoptim');
36
+ elementFenetre3.style.display = 'none';
37
+ }
38
+ function fenetre4LiveoptimOuvrir() {
39
+ var elementFenetre4 = document.getElementById('fenetre4Liveoptim');
40
+ elementFenetre4.style.display = 'block';
41
+ }
42
+
43
+ function fenetre4LiveoptimFermer() {
44
+ var elementFenetre4 = document.getElementById('fenetre4Liveoptim');
45
+ elementFenetre4.style.display = 'none';
46
+ }
47
+ function fenetre5LiveoptimOuvrir() {
48
+ var elementFenetre5 = document.getElementById('fenetre5Liveoptim');
49
+ elementFenetre5.style.display = 'block';
50
+ }
51
+
52
+ function fenetre5LiveoptimFermer() {
53
+ var elementFenetre5 = document.getElementById('fenetre5Liveoptim');
54
+ elementFenetre5.style.display = 'none';
55
+ }
56
+ function fenetre6LiveoptimOuvrir() {
57
+ var elementFenetre6 = document.getElementById('fenetre6Liveoptim');
58
+ elementFenetre6.style.display = 'block';
59
+ }
60
+
61
+ function fenetre6LiveoptimFermer() {
62
+ var elementFenetre6 = document.getElementById('fenetre6Liveoptim');
63
+ elementFenetre6.style.display = 'none';
64
+ }
65
+
66
+ function verifRequetteMotCle(msg){
67
+ if(document.getElementsByName('requete')[0].value==''){
68
+ alert(msg);
69
+ return false;
70
+ }
71
+ return true;
72
+ }
73
+
74
+ function fenetreInfoPreniumOuvrir() {
75
+ var elementInfoPrenium = document.getElementById('fenetreInfoPrenuim');
76
+ elementInfoPrenium.style.display = 'block';
77
+ }
78
+
79
+ function fenetreInfoPreniumFermer() {
80
+ var elementInfoPrenium = document.getElementById('fenetreInfoPrenuim');
81
+ elementInfoPrenium.style.display = 'none';
82
+ }
83
+
84
+
85
+ jQuery.noConflict();
86
+
87
+ function displayInfoPrenium(){
88
+ var elementInfoPrenium = jQuery('#infoPrenium');
89
+
90
+ if (elementInfoPrenium.css('display') == 'none'){
91
+ elementInfoPrenium.fadeIn(1000);
92
+ }else{
93
+ elementInfoPrenium.fadeOut(1000);
94
+ }
95
+
96
+ }
97
+
98
+ function displayRestriction(msg){
99
+ alert(msg);
100
+ return false;
101
+ }
102
+
103
+
104
+ function GereChkbox(conteneur, a_faire) {
105
+ var blnEtat=null;
106
+ var Chckbox = document.getElementById(conteneur).firstChild;
107
+ while (Chckbox!=null) {
108
+ if (Chckbox.nodeName=="INPUT")
109
+ if (Chckbox.getAttribute("type")=="checkbox") {
110
+ blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox.getAttribute("id")).checked) ? false : true;
111
+ document.getElementById(Chckbox.getAttribute("id")).checked=blnEtat;
112
+ }
113
+ Chckbox = Chckbox.nextSibling;
114
+ }
115
+ }
116
+
117
+ function verifFile(msg1,msg2,msg3,file,val){
118
+
119
+ str=file+'';
120
+ val=Number(val)+0;
121
+ if(str==''){
122
+ alert(msg1);
123
+ return false;
124
+ }
125
+ if(val==7){
126
+ ext="sql";
127
+ msg="This is not a SQL file"
128
+ }else if(val==6){
129
+ ext="zip";
130
+ msg=msg3;
131
+ }
132
+ else{
133
+ ext='csv';
134
+ msg=msg2;
135
+ }
136
+ extension=str.substring(str.length-3,str.length);
137
+
138
+ if(extension==ext){
139
+ booltest=false;
140
+ }
141
+ else{
142
+ booltest=true;
143
+ }
144
+
145
+ if (booltest){
146
+ alert(msg);
147
+ resetFileInput();
148
+ return false;
149
+ }
150
+ return true;
151
+ }
152
+
153
+ function resetFileInput()
154
+ {
155
+ var valeurs = new Array();
156
+ var i;
157
+ for (i=0;i<document.forms['import_import'].length;i++) {
158
+ if (document.forms['import_import'].elements[i].getAttribute('type') != 'file')
159
+ valeurs[i] = document.forms['import_import'].elements[i].value;
160
+ }
161
+ document.forms['import_import'].reset();
162
+ for (i=0;i<valeurs.length;i++) {
163
+ if (document.forms['import_import'].elements[i].getAttribute('type') != 'file')
164
+ document.forms['import_import'].elements[i].value = valeurs[i];
165
+ }
166
+ }
167
+ /**
168
+ * ajaxOuvrirFenetreNouveauRapport
169
+ */
170
+ function ajaxOuvrirFenetreNouveauRapport() {
171
+ // Creation de l'objet XMLHttpRequest
172
+
173
+
174
+ document.getElementById( "rank_attente" ).style.display = '';
175
+ get_Xhr();
176
+
177
+ xhr.onreadystatechange = function() {
178
+ if (xhr.readyState == 4 && xhr.status == 200) {
179
+ // Que fera AJAX si tout se passe bien, il va inserer dans le composant HTML d'id idElement
180
+ // le resultat de la page appell�e
181
+ document.getElementById( "rank_resultat" ).style.display = '';
182
+ document.getElementById( "rank_attente" ).style.display = 'none';
183
+ var id_projet=document.getElementById( "lien_so" );
184
+ id_projet.setAttribute("href",id_projet.getAttribute("href")+xhr.responseText);
185
+
186
+
187
+
188
+ }
189
+ }
190
+
191
+ // Nous allons interroger la page php souhait� pour recuperer la reponse
192
+ xhr.open("POST", "/app/code/local/Mkt/LiveOptim/help/5_2/config/ranking/rank_google_bing.php", true);
193
+ xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
194
+
195
+ // Nous envoyons avec la requete ci dessus les parametres
196
+ xhr.send( "" );
197
+ }
198
+
199
+
200
+ var xhr = null;
201
+ /**
202
+ * Fonction de cr?ation d'objet XMLHttRequest
203
+ */
204
+ function get_Xhr() {
205
+ if (window.XMLHttpRequest) {
206
+ xhr = new XMLHttpRequest();
207
+ } else if (window.ActiveXOject) {
208
+ try {
209
+ xhr = new ActiveXObject("Msxml2.XMLHTTP");
210
+ } catch (e) {
211
+ try {
212
+ xhr = new ActiveXObject("Microsoft.XMLHTTP");
213
+ } catch (el) {
214
+ xhr = null;
215
+ }
216
+ }
217
+ } else {
218
+ alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest\nVeuillez le mettre � jour.");
219
+ }
220
+ return xhr;
221
+ }
222
+
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>LiveOptim_free</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license uri="http://www.gnu.org/licenses/gpl.html">GPL v3</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Improve your SEO without manual intervention at your site : save precious time ! LiveOptim instantly processes 100% of your content and adds links &amp; HTML tags around your keywords to go : 100% Google Friendly.</summary>
10
+ <description>Improve your SEO without manual intervention at your site : save precious time ! LiveOptim instantly processes 100% of your content and adds links &amp; HTML tags around your keywords to go : 100% Google Friendly.</description>
11
+ <notes>Improve your SEO without manual intervention at your site : save precious time ! LiveOptim instantly processes 100% of your content and adds links &amp; HTML tags around your keywords to go : 100% Google Friendly.</notes>
12
+ <authors><author><name>Erwan Milb&#xE9;o</name><user>LiveOptimplugin</user><email>smo@adequat-mkt.com</email></author></authors>
13
+ <date>2014-02-07</date>
14
+ <time>17:41:06</time>
15
+ <contents><target name="magelocal"><dir name="Mkt"><dir name="LiveOptim"><dir name="Block"><dir name="Adminhtml"><file name="Accueil.php" hash="5a22739c0a69060726e1848442fab0ed"/><file name="Balise.php" hash="6ab2910265f264d5c5e2bb5076bdc71e"/><file name="Cible.php" hash="e7757187475d77f6f751a2391cc19d6a"/><file name="Config.php" hash="2097ffc830c57888060549dcc985e56d"/><file name="Header.php" hash="47aaeffb391cf577f28082c795572359"/><file name="Home.php" hash="ab1002791adaf3df05009e14c03eae40"/><file name="Inscription.php" hash="a64dec3099a997e1d0f857dfc32f8835"/><file name="Motcle.php" hash="d8ff3a07c0cea3f6ca5f0113b18a41eb"/><file name="Pagesrestriction.php" hash="0d15106095be1fae4d61462cdcd46284"/><file name="Parametres.php" hash="649ceb6285c19659aedce2f760f3f285"/><file name="Pattern.php" hash="818558c701cbbd7750b31e8871ff72c4"/><file name="Patterncible2.php" hash="58d7d7492ffd1292fbc3728bed44aa07"/><file name="Tuto.php" hash="34d756a381db6130d2df927e8d2ec802"/><file name="Tutoriel.php" hash="d08bdf63ec98430e54068a7228681984"/></dir><file name="LiveOptim.php" hash="2245f2feef0153b7cdf4f2577ea5274f"/></dir><dir name="Helper"><file name="Data.php" hash="bcf0cc3c5f782fc36b4f517eab6a0a31"/></dir><dir name="Model"><file name="Baliseignore.php" hash="943c6382228ec9c6cda8b90e474e47a9"/><file name="Baliseignorer.php" hash="3eb7aef78dd3dd1171580843edcabd7e"/><file name="Capping.php" hash="c018a85a1d6e956105ae4712ecc8c519"/><file name="Motcle.php" hash="883eafaf2083677511bd9d5d698f5179"/><dir name="Mysql4"><dir name="ActionsReactions"><file name="Collection.php" hash="68c44eabb763153f343f156fb438f673"/></dir><dir name="Baliseignore"><file name="Collection.php" hash="0e9d26640420713bde774b7d06633c23"/></dir><file name="Baliseignore.php" hash="cdcb3d68d30e52e2423203beb987760b"/><dir name="Capping"><file name="Collection.php" hash="379b7c82649e57915fd1ecced41ca002"/></dir><file name="Capping.php" hash="e30d1c7f7f490746aa0e5f7e51731c28"/><dir name="LiveMotCles"><file name="Collection.php" hash="6a4add0f2a0554eb6c35aa8ff1ef877e"/></dir><dir name="LiveOptimPackage"><file name="Collection.php" hash="1996ec6b97a96315d3c1be1931571d50"/></dir><dir name="Motcle"><file name="Collection.php" hash="feb55a1c8d01b9bf54949417cb2ae4b7"/></dir><file name="Motcle.php" hash="0167c3960c3c61f095f4faabc8f0cec3"/><dir name="Pagesrestriction"><file name="Collection.php" hash="ff3b0c9d3d1d530236639d4a476acbfe"/></dir><file name="Pagesrestriction.php" hash="07d513325e9a047581aa825662e1f769"/><dir name="Parametres"><file name="Collection.php" hash="7e16794f92f7e9dbb129ef097a7323e4"/></dir><file name="Parametres.php" hash="dce76966f0e73cd9a64712ef38208e11"/><dir name="Pattern"><file name="Collection.php" hash="6d0a8877ef7c8389e28a55e3d5ceb335"/></dir><file name="Pattern.php" hash="f0de6c69d28ae5b086864690231e3525"/><dir name="Patterncible"><file name="Collection.php" hash="ea0cacd8cc56ba82777b51681c105b28"/></dir><file name="Patterncible.php" hash="dd9109d257643645c2096ac33fadfd75"/><dir name="codesHttp"><file name="Collection.php" hash="4a457a9b2579005d16bb08a2ebd933c8"/></dir></dir><file name="Observer.php" hash="10706023f55b100dabb62d08d32cb2d1"/><file name="Pagesrestriction.php" hash="05b8edd9cadf836228d3b8bfa87c20c8"/><file name="Parametres.php" hash="45b6d3300346c76510c5c03f3bcabcb6"/><file name="Pattern.php" hash="5c2b6b6f354475dcd1e7ec419a07bdab"/><file name="Patterncible.php" hash="ec9f6f78e45e4ab37fae1a8527a62e58"/><file name="Status.php" hash="e2b6ab14ab5bce6144dd1f5c9a7aaea5"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="LiveoptimController.php" hash="d9b73d1fbf604df2b9d8b4a140f68ac4"/></dir></dir><dir name="etc"><file name="config.xml" hash="cf022f1c2267f66086bca308fcbf446b"/></dir><dir name="lib"><dir name="actions"><dir name="baliseIgnore"><file name="listerBaliseIgnore.php" hash="91071e9b4394c346a1525a35836a3bbf"/></dir><dir name="codeHTTP"><file name="code401.php" hash="1e17a8d1979922c7bfcdc31c4f56ac4f"/><file name="code403.php" hash="d4c01158fc473f0f4fdc4de3d7d78d07"/><file name="code404.php" hash="59fb45bd6be59632c164622cf1009ed7"/></dir><dir name="config"><file name="config.php" hash="a9d93155716412547d51dce44103bd7e"/><file name="modifierConfig.php" hash="abac43a99fd882b78d474c87d8928a97"/><file name="zipConfig.php" hash="201ab551cc4b3ee1daf370514790c7f3"/></dir><file name="inscription.php" hash="0b8c5ffcc118f190ee6744cd4e819c1b"/><dir name="motCle"><file name="creerMotCle.php" hash="e98165d885b7949b6552dcee0e08dd0a"/><file name="deplacerMotCle.php" hash="36c303e0bc7d6f1252cc7f0021fafbf7"/><file name="enleverMotCle.php" hash="5bf919cad955a7f988ea567ed7fc30b0"/><file name="index.html" hash="4bc588543cce98c48136c541a8c73c0b"/><file name="listerMotCle.php" hash="542a6b9e9d6995ab53846564df496270"/><file name="modifierMotCle.php" hash="14e931ebfcc70f390e300dd85a0c5962"/></dir><dir name="pagesRestreintes"><file name="listerPagesRestreintes.php" hash="dd8258b63d4131f0160603b849597b58"/></dir><dir name="pattern"><file name="listerPattern.php" hash="493190ccb2716813ad0876ba682ee1d7"/></dir><dir name="patternCible"><file name="listerPatternCible.php" hash="500f291f84fc91f32ed96dde884cd53e"/></dir><file name="tutoriel.php" hash="8bd97258c2e8f4c0c25ffd8a9884816d"/><file name="update.php" hash="e64a9299cc6e083c5e5cf88e754e46d2"/></dir><dir name="base"><file name="conteneurBaliseIgnore.class.php" hash="7b6427f3dde5c36bffd5f07dd76c0ce2"/><file name="conteneurConfig.class.php" hash="46beb2f12698801e5be364baf6f91245"/><file name="conteneurMotCle.class.php" hash="d0502686ece4e287264ce8f3912644f3"/><file name="conteneurParametres.class.php" hash="a5b38db949e0e4d81d06115d070e4f4e"/></dir><dir name="lib"><file name="CleMKT.class.php" hash="02f08861d153ee08baacdb4de258f8ff"/><file name="generiqueAction.php" hash="79f1292c593ade12e98df218d1036ccc"/><file name="helper.php" hash="e404c684af357fcdc47c4cb695fc9806"/><file name="liveoptim.php" hash="3e451a460da78e6b418aa6b88a16a002"/><file name="liveoptim.php.old" hash="cce09190f09a4698249cb22bab15b049"/></dir></dir><dir name="sql"><dir name="liveoptim_setup"><file name="mysql4-install-1.0.0.php" hash="49c02e9045584c94d1e3315ab2fad4b6"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Mkt_LiveOptim.xml" hash="59c1c88b6a53ef63720431008d4f7bd7"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="liveoptim.xml" hash="2d984067c496a515c66fd44ee7c141b4"/></dir><dir name="template"><dir name="liveoptim"><file name="accueil.php" hash="11bb5841b32749ca4d72c850b7890f73"/><dir name="codeHttp"><file name="code401.php" hash="6415ee723d257e4897d3b640ed4dd3d9"/><file name="code403.php" hash="9294f9a11728738d82b902efc9506ae1"/><file name="code404.php" hash="312c9befb7343028099b556d0a944858"/></dir><file name="config.php" hash="03935d6bb2bed7f6b46ff6cf2bef825a"/><file name="header.php" hash="d7fd876016509358e3bf17a72a75e0ee"/><file name="inscription.php" hash="c912981f11630cb1ff50430a51e71acf"/><file name="listerBaliseIgnore.php" hash="d21a87d9dd11cd4b3120f10f957108ac"/><file name="listerMotCle.php" hash="d323b715385034f71e8fb7a70447bbc7"/><file name="listerPattern.php" hash="1b0726426e03c07a1497efa7a17d204e"/><file name="listerPatternCible.php" hash="ab62dbce512cf053369eafd50689cba0"/><file name="pagesRestriction.php" hash="2d2a78e239083510a245fd050b92c4cc"/><file name="tutoriel.php" hash="b42d8d4558b00bc25f21b1677b7d43bd"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir><dir name="css"><file name="liveoptim_style.css" hash="caff90bf78f6c08132eea9605cce2136"/><file name="liveoptim_style0.css" hash="3b3f9b121ed2d8aa682c684d7ceb5353"/><file name="style.css" hash="54568606ee47ade877952f527df54c47"/></dir><dir name="img"><file name="DL.png" hash="88fc5eba6355be8b53bb8cff3b45d9f1"/><file name="Flechecentrale.png" hash="3f6715175de96781e48335b5643bfd21"/><file name="Flechedroite.png" hash="33902e901de904ebbbffadfe9f06eeed"/><file name="Flechegauche.png" hash="08843a97dc99dbce7ea7948a2678ae25"/><file name="PictoValid.png" hash="61b46dc31d3c694775c60a0a404a4492"/><file name="PopUpLO_PartieD.png" hash="258879410e793920434180c0224f2093"/><file name="Thumbs.db" hash="0ba68c8b972f627dd24a9c6713685ecd"/><file name="actif.png" hash="b75b387dfb249d46b7434402e7e5de80"/><file name="ajouter.png" hash="1261800a93a5b686994e1d53883f8ad4"/><file name="bottom-center.png" hash="eac26d8199666980e0e190e4988c6437"/><file name="bouton-prenuim-popup.png" hash="15519be2876e85d1161cb16e740e4a89"/><file name="bouton-prenuim.png" hash="eb659b8628c5c0596d43ea0a95f6a4ae"/><file name="bouton-ranking.png" hash="07df12fd49cdf30316126bc16562a63e"/><file name="boutonMAJ.png" hash="b1bdc93dab265695b223b5689fa96462"/><file name="boutonachat.png" hash="0c9424a3c267742f59d668d4390090d1"/><file name="close.png" hash="dfad17a7524422e82c0a0abbbdc482fe"/><file name="corner-bottom-left.png" hash="68e48b7d19d42641cc09c38ecb56af04"/><file name="corner-bottom-right.png" hash="374a3a5c639ef20da547e549b9e3dac8"/><file name="fleche-bas.gif" hash="872cc3233829f3bb8457b0044a02d53e"/><file name="fleche-haut.gif" hash="07debb491600c82de5d993c4acf0d261"/><file name="fleche_verte.png" hash="947f1ec9701c02f4b1a522d1b0a30cf8"/><file name="hint.png" hash="1ea722978df5073280b1aea004349909"/><file name="inactif.png" hash="c9f26c9922e00695087a9020d01239fb"/><file name="logo-30-jours-gratuit.png" hash="f038136606dfa753a3c42d692eb9a803"/><file name="logo-LO-premium.png" hash="d74bbef1ca210f10dc665da7a3001c6e"/><file name="logo-mkt-popup.png" hash="4c8aa1c275a6c0c0fe9f6e99761d3595"/><file name="middle-left.png" hash="c7aa0441e0900bf4e7baa67e8ff60aca"/><file name="middle-right.png" hash="fe929225092ad81d74ea81e61be3dd62"/><file name="modifier.gif" hash="7dc3edc626a1c741a1a7f895b37d511b"/><file name="off.png" hash="20e9e8683f5727464053c86ca9cae022"/><file name="on.png" hash="6c1385e7259fefca9f31e920cdc3c002"/><file name="paiement.png" hash="e45cc381b3a0a8ec125d32ecfedd7dcc"/><file name="picto_h1.png" hash="8c5ad8f44ee8046cd2ebc5c9a9749726"/><file name="puce.png" hash="2cca67c1a8a55ed7c05de71fe6413c28"/><file name="supprimer.gif" hash="dd19324d4303c5128ebd698961ec5e20"/><file name="top-center.png" hash="723bc09bc1819206bad94b12d006d524"/><file name="top-left.png" hash="f09c5d3d55c1d9a32adfb5a8fa0b98ed"/></dir></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="liveoptim"><file name="script.js" hash="d7d73c36d0fb11429f78b4ae86ebe254"/><file name="jquery-1.10.2.min.js" hash="628072e7212db1e8cdacb22b21752cda"/></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Mkt_LiveOptim.csv" hash="f2bba648d539c06f3c51066f9a75aad4"/></dir><dir name="fr_FR"><file name="Mkt_LiveOptim.csv" hash="7d8c28550008ea09e2cb2a4801f533a7"/></dir><dir name="en_GB"><file name="Mkt_LiveOptim.csv" hash="f2bba648d539c06f3c51066f9a75aad4"/></dir><dir name="es_ES"><file name="Mkt_LiveOptim.csv" hash="3088afb56c2c9b547be0497ff3bd2785"/></dir><dir name="pt_BR"><file name="Mkt_LiveOptim.csv" hash="e3662b20f52f65726f632651fea835e8"/></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>
skin/adminhtml/base/default/css/liveoptim_style.css ADDED
@@ -0,0 +1,653 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .liveoptim ul {
3
+ list-style-image: url("/skin/adminhtml/base/default/img/puce.png");
4
+ margin: 35px 0 35px 50px;
5
+ }
6
+ .liveoptim h2 {
7
+ background: url("/skin/adminhtml/base/default/img/picto_h1.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
8
+ margin-top: 40px;
9
+ padding: 5px 0 0 50px;
10
+ }
11
+ .liveoptim ul li {
12
+ color: #BF4122;
13
+ font-size: 14px;
14
+ margin: 15px 0;
15
+ }
16
+ .liveoptim ul li a {
17
+ color: #BF4122;
18
+ }
19
+ .liveoptim ul li p {
20
+ color: #333333;
21
+ font-size: 12px;
22
+ }
23
+ #lo_content td.position span {
24
+ display: inline-block;
25
+ margin: 0 10px;
26
+ text-align: center;
27
+ width: 85px;
28
+ }
29
+ #lo_content td.position input {
30
+ margin-left: 5px;
31
+ }
32
+ #lo_content td.action a {
33
+ margin: 0 5px;
34
+ }
35
+ #lo_content th.destination {
36
+ padding-left: 5px;
37
+ padding-right: 5px;
38
+ }
39
+ #lo_content td.destination input {
40
+ margin-left: 5px;
41
+ padding-right: 5px;
42
+ width: 90%;
43
+ }
44
+ .mc {
45
+ color: #BF4122;
46
+ font-size: 14px;
47
+ }
48
+ .url {
49
+ color: #000099;
50
+ font-size: 14px;
51
+ }
52
+ div#fenetreLiveoptim {
53
+ background: none repeat scroll 0 0 #FFFFFF;
54
+ border: 3px solid #B3E1B4;
55
+ display: none;
56
+ font-size: 12px;
57
+ line-height: 18px;
58
+ margin: 0 0 0 100px;
59
+ padding: 10px;
60
+ position: absolute;
61
+ width: 600px;
62
+ }
63
+ div#fenetreLiveoptim ul {
64
+ margin: 10px 0 15px 15px;
65
+ }
66
+ div#fenetreLiveoptim ul li {
67
+ color: #333333;
68
+ font-size: 12px;
69
+ list-style: disc outside none;
70
+ margin: 0;
71
+ }
72
+ div#fenetreLiveoptim h2 {
73
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
74
+ color: #BF4122;
75
+ font-size: 14px;
76
+ font-weight: bold;
77
+ margin: 0 0 0 40px;
78
+ padding: 0;
79
+ }
80
+ div#fenetre1Liveoptim {
81
+ background: none repeat scroll 0 0 #FFFFFF;
82
+ border: 3px solid #B3E1B4;
83
+ display: none;
84
+ font-size: 12px;
85
+ line-height: 18px;
86
+ margin: 0 0 0 100px;
87
+ padding: 10px;
88
+ position: absolute;
89
+ width: 600px;
90
+ z-index: 1001;
91
+ }
92
+ div#fenetre1Liveoptim ul {
93
+ margin: 10px 0 15px 15px;
94
+ }
95
+ div#fenetre1Liveoptim ul li {
96
+ color: #333333;
97
+ font-size: 12px;
98
+ list-style: disc outside none;
99
+ margin: 0;
100
+ }
101
+ div#fenetre1Liveoptim h2 {
102
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
103
+ color: #BF4122;
104
+ font-size: 14px;
105
+ font-weight: bold;
106
+ margin: 0 0 0 40px;
107
+ padding: 0;
108
+ }
109
+ div#fenetre2Liveoptim {
110
+ background: none repeat scroll 0 0 #FFFFFF;
111
+ border: 3px solid #B3E1B4;
112
+ display: none;
113
+ font-size: 12px;
114
+ line-height: 18px;
115
+ margin: 0 0 0 410px;
116
+ padding: 10px;
117
+ position: absolute;
118
+ width: 600px;
119
+ z-index: 1001;
120
+ }
121
+ div#fenetre2Liveoptim ul {
122
+ margin: 10px 0 15px 15px;
123
+ }
124
+ div#fenetre2Liveoptim ul li {
125
+ color: #333333;
126
+ font-size: 12px;
127
+ list-style: disc outside none;
128
+ margin: 0;
129
+ }
130
+ div#fenetre2Liveoptim h2 {
131
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
132
+ color: #BF4122;
133
+ font-size: 14px;
134
+ font-weight: bold;
135
+ margin: 0 0 0 40px;
136
+ padding: 0;
137
+ }
138
+ div#fenetre3Liveoptim {
139
+ background: none repeat scroll 0 0 #FFFFFF;
140
+ border: 3px solid #B3E1B4;
141
+ display: none;
142
+ font-size: 12px;
143
+ line-height: 18px;
144
+ margin: 0 0 0 20px;
145
+ padding: 10px;
146
+ position: absolute;
147
+ width: 600px;
148
+ z-index: 1001;
149
+ }
150
+ div#fenetre3Liveoptim ul {
151
+ margin: 10px 0 15px 15px;
152
+ }
153
+ div#fenetre3Liveoptim ul li {
154
+ color: #333333;
155
+ font-size: 12px;
156
+ list-style: disc outside none;
157
+ margin: 0;
158
+ }
159
+ div#fenetre3Liveoptim h2 {
160
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
161
+ color: #BF4122;
162
+ font-size: 14px;
163
+ font-weight: bold;
164
+ margin: 0 0 0 40px;
165
+ padding: 0;
166
+ }
167
+ div#fenetre4Liveoptim {
168
+ background: none repeat scroll 0 0 #FFFFFF;
169
+ border: 3px solid #B3E1B4;
170
+ display: none;
171
+ font-size: 12px;
172
+ line-height: 18px;
173
+ margin: 0 0 0 100px;
174
+ padding: 10px;
175
+ position: absolute;
176
+ width: 600px;
177
+ z-index: 1001;
178
+ }
179
+ div#fenetre4Liveoptim ul {
180
+ margin: 10px 0 15px 15px;
181
+ }
182
+ div#fenetre4Liveoptim ul li {
183
+ color: #333333;
184
+ font-size: 12px;
185
+ list-style: disc outside none;
186
+ margin: 0;
187
+ }
188
+ div#fenetre4Liveoptim h2 {
189
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
190
+ color: #BF4122;
191
+ font-size: 14px;
192
+ font-weight: bold;
193
+ margin: 0 0 0 40px;
194
+ padding: 0;
195
+ }
196
+ div#fenetre5Liveoptim {
197
+ background: none repeat scroll 0 0 #FFFFFF;
198
+ border: 3px solid #B3E1B4;
199
+ display: none;
200
+ font-size: 12px;
201
+ line-height: 18px;
202
+ margin: 0 0 0 100px;
203
+ padding: 30px;
204
+ position: absolute;
205
+ width: 600px;
206
+ z-index: 1001;
207
+ }
208
+ div#fenetre5Liveoptim ul {
209
+ margin: 10px 0 15px 15px;
210
+ }
211
+ div#fenetre5Liveoptim ul li {
212
+ color: #333333;
213
+ font-size: 12px;
214
+ list-style: disc outside none;
215
+ margin: 0;
216
+ }
217
+ div#fenetre5Liveoptim h2 {
218
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
219
+ color: #BF4122;
220
+ font-size: 14px;
221
+ font-weight: bold;
222
+ margin: 0 0 0 40px;
223
+ padding: 0;
224
+ }
225
+ div#fenetre6Liveoptim {
226
+ background: none repeat scroll 0 0 #FFFFFF;
227
+ border: 3px solid #B3E1B4;
228
+ display: none;
229
+ font-size: 12px;
230
+ line-height: 18px;
231
+ margin: 0 0 0 -500px;
232
+ padding: 30px;
233
+ position: absolute;
234
+ width: 600px;
235
+ z-index: 1001;
236
+ }
237
+ div#fenetre6Liveoptim ul {
238
+ margin: 10px 0 15px 15px;
239
+ }
240
+ div#fenetre6Liveoptim ul li {
241
+ color: #333333;
242
+ font-size: 12px;
243
+ list-style: disc outside none;
244
+ margin: 0;
245
+ }
246
+ div#fenetre6Liveoptim h2 {
247
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
248
+ color: #BF4122;
249
+ font-size: 14px;
250
+ font-weight: bold;
251
+ margin: 0 0 0 40px;
252
+ padding: 0;
253
+ }
254
+ div#fenetreInfoPrenuim {
255
+ background: none repeat scroll 0 0 #FFFFFF;
256
+ border: 3px solid #B3E1B4;
257
+ display: none;
258
+ font-size: 12px;
259
+ line-height: 18px;
260
+ margin: 0 0 0 25%;
261
+ padding: 30px;
262
+ position: absolute;
263
+ text-align: center;
264
+ width: 400px;
265
+ z-index: 1001;
266
+ }
267
+ div#fenetreInfoPrenuim ul {
268
+ margin: 10px 0 15px 15px;
269
+ }
270
+ div#fenetreInfoPrenuim ul li {
271
+ color: #333333;
272
+ font-size: 12px;
273
+ list-style: disc outside none;
274
+ margin: 0;
275
+ }
276
+ div#fenetreInfoPrenuim h2 {
277
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
278
+ color: #BF4122;
279
+ font-size: 14px;
280
+ font-weight: bold;
281
+ margin: 0 0 0 40px;
282
+ padding: 0;
283
+ }
284
+ a.btn_rank {
285
+ background: url("../img/bouton-ranking.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
286
+ color: #FFFFFF;
287
+ display: block;
288
+ float: left;
289
+ font-size: 18px;
290
+ height: 68px;
291
+ padding-left: 85px;
292
+ padding-right: 60px;
293
+ padding-top: 40px;
294
+ text-align: center;
295
+ width: 160px;
296
+ }
297
+ a.btn_buy {
298
+ background: url("../img/boutonachat.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
299
+ color: #FFFFFF;
300
+ display: inline-block;
301
+ float: right;
302
+ font-size: 16px;
303
+ font-weight: bold;
304
+ height: 60px;
305
+ margin-top: -25px;
306
+ padding-left: 75px;
307
+ padding-right: 50px;
308
+ padding-top: 30px;
309
+ text-align: center;
310
+ text-transform: uppercase;
311
+ width: 170px;
312
+ }
313
+ a.btn_MaJ {
314
+ background: url("../img/boutonMAJ.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
315
+ color: #FFFFFF;
316
+ display: inline-block;
317
+ float: right;
318
+ font-size: 16px;
319
+ font-weight: bold;
320
+ height: 68px;
321
+ line-height: 20px;
322
+ margin-top: -25px;
323
+ padding-left: 75px;
324
+ padding-right: 50px;
325
+ padding-top: 22px;
326
+ text-align: center;
327
+ text-transform: uppercase;
328
+ width: 170px;
329
+ }
330
+ #lo_content {
331
+ margin-left: 50px;
332
+ }
333
+ a.btn_Prenuim {
334
+ background: url("/skin/adminhtml/base/default/img/bouton-prenuim.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
335
+ color: #FFFFFF;
336
+ display: block;
337
+ font-size: 16px;
338
+ height: 44px;
339
+ margin: 0 auto;
340
+ padding: 18px 45px 20px 40px;
341
+ text-align: center;
342
+ width: 214px;
343
+ }
344
+ div#dispoPrenium {
345
+ background-color: rgba(122, 143, 255, 0.45);
346
+ height: 74px;
347
+ padding: 37px 6% 0 160px;
348
+ position: absolute;
349
+ text-align: center;
350
+ width: 500px;
351
+ }
352
+ div#dispoPrenium img {
353
+ display: none;
354
+ }
355
+ div#dispoPrenium span {
356
+ transform: rotate(7deg);
357
+ }
358
+ #infoPrenium {
359
+ background-color: #FFFFFF;
360
+ border-radius: 10px;
361
+ box-shadow: 0 0 5px 10px #C0C0C0;
362
+ height: 64.5%;
363
+ margin: 0 13%;
364
+ position: fixed;
365
+ width: 70%;
366
+ z-index: 1001;
367
+ }
368
+ #infoPrenium .header, #infoPrenium .footer {
369
+ background-color: #000000;
370
+ height: 40px;
371
+ text-align: right;
372
+ width: 100%;
373
+ }
374
+ #infoPrenium .header {
375
+ border-radius: 10px 10px 0 0;
376
+ }
377
+ .header-right {
378
+ padding: 0;
379
+ }
380
+ #infoPrenium .footer {
381
+ border-radius: 0 0 10px 10px;
382
+ bottom: 0;
383
+ position: absolute;
384
+ }
385
+ #infoPrenium .header > img, #infoPrenium .footer > img {
386
+ margin-right: 2%;
387
+ }
388
+ #infoPrenium .center {
389
+ height: 86%;
390
+ width: 100%;
391
+ }
392
+ #infoPrenium .center-left {
393
+ height: 96%;
394
+ margin-left: 25px;
395
+ margin-top: 15px;
396
+ overflow: auto;
397
+ }
398
+ #infoPrenium .center-left .logo-lo-prenium {
399
+ background: url("/skin/adminhtml/base/default/img/logo-LO-premium.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
400
+ display: block;
401
+ height: 130px;
402
+ width: 150px;
403
+ }
404
+ #infoPrenium .logo-30jours-gratuit {
405
+ background: url("/skin/adminhtml/base/default/img/logo-30-jours-gratuit.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
406
+ display: block;
407
+ height: 81px;
408
+ left: 50%;
409
+ position: relative;
410
+ top: -19%;
411
+ width: 210px;
412
+ }
413
+ #infoPrenium #conteneur-detail {
414
+ height: 69%;
415
+ margin-bottom: 24px;
416
+ margin-left: 10px;
417
+ margin-top: -101px;
418
+ }
419
+ #infoPrenium #conteneur-detail .header {
420
+ background: url("/skin/adminhtml/base/default/img/top.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
421
+ display: block;
422
+ height: 24px;
423
+ width: 156px;
424
+ }
425
+ #infoPrenium #conteneur-detail .header-left {
426
+ background: url("/skin/adminhtml/base/default/img/top-left.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
427
+ display: block;
428
+ float: left;
429
+ height: 24px;
430
+ width: 17px;
431
+ }
432
+ #infoPrenium #conteneur-detail .header-middle {
433
+ background: url("/skin/adminhtml/base/default/img/top-center.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
434
+ display: block;
435
+ height: 24px;
436
+ margin-left: 17px;
437
+ width: 80%;
438
+ }
439
+ #infoPrenium #conteneur-detail .middle {
440
+ background: url("/skin/adminhtml/base/default/img/middle.png") repeat-y scroll 0 0 rgba(0, 0, 0, 0);
441
+ margin-left: -1px;
442
+ padding-left: 30px;
443
+ padding-top: 5px;
444
+ }
445
+ #infoPrenium #conteneur-detail .middle-left {
446
+ background: url("/skin/adminhtml/base/default/img/middle-left.png") repeat-y scroll 0 0 rgba(0, 0, 0, 0);
447
+ height: auto;
448
+ }
449
+ #infoPrenium #conteneur-detail .middle-right {
450
+ background: url("/skin/adminhtml/base/default/img/middle-right.png") repeat-y scroll right bottom rgba(0, 0, 0, 0);
451
+ height: 100%;
452
+ padding-left: 4%;
453
+ padding-top: 2%;
454
+ width: 90%;
455
+ }
456
+ #infoPrenium #conteneur-detail .middle-right .detail {
457
+ display: inline-block;
458
+ width: 49%;
459
+ }
460
+ #infoPrenium #conteneur-detail .middle .detail-rigth {
461
+ display: inline-block;
462
+ float: left;
463
+ }
464
+ .detail-rigth > img {
465
+ width: 15px;
466
+ }
467
+ .detail > img {
468
+ width: 15px;
469
+ }
470
+ #infoPrenium a.btn_Prenuim {
471
+ background: url("/skin/adminhtml/base/default/img/bouton-prenuim-popup.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
472
+ color: #FFFFFF;
473
+ display: block;
474
+ font-size: 15px;
475
+ font-weight: bold;
476
+ height: 16px;
477
+ margin: 10px auto -2px;
478
+ padding: 18px 32px 20px 18px;
479
+ text-align: center;
480
+ width: 150px;
481
+ }
482
+ #infoPrenium #conteneur-detail .footer {
483
+ background: url("/skin/adminhtml/base/default/img/bottom.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
484
+ display: block;
485
+ height: 24px;
486
+ width: 347px;
487
+ }
488
+ #infoPrenium #conteneur-detail .footer-left {
489
+ background: url("/skin/adminhtml/base/default/img/corner-bottom-left.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
490
+ height: 24px;
491
+ margin-bottom: 24px;
492
+ }
493
+ #infoPrenium #conteneur-detail .footer-middle {
494
+ background: url("/skin/adminhtml/base/default/img/bottom-center.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
495
+ display: inline-block;
496
+ height: 24px;
497
+ width: 96%;
498
+ }
499
+ #infoPrenium #conteneur-detail .footer-right {
500
+ background: url("/skin/adminhtml/base/default/img/corner-bottom-right.png") no-repeat scroll right top rgba(0, 0, 0, 0);
501
+ height: 24px;
502
+ padding-left: 3.5%;
503
+ width: 90.5%;
504
+ }
505
+ #infoPrenium .center-rigth {
506
+ float: right;
507
+ height: 96%;
508
+ margin-right: 3px;
509
+ overflow: auto;
510
+ text-align: center;
511
+ width: 40%;
512
+ }
513
+ #infoPrenium .center-rigth .autre-produit {
514
+ background: url("/skin/adminhtml/base/default/img/Boxproduits.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
515
+ display: block;
516
+ height: 94px;
517
+ margin: 0 auto;
518
+ width: 279px;
519
+ }
520
+ #infoPrenium .center-rigth .soon {
521
+ background: url("/skin/adminhtml/base/default/img/Boxproduitgris.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
522
+ display: block;
523
+ height: 94px;
524
+ margin: 0 auto;
525
+ width: 279px;
526
+ }
527
+ #infoPrenium .center-rigth .autre-produit > img.logo {
528
+ display: block;
529
+ left: 18px;
530
+ position: relative;
531
+ top: 17px;
532
+ }
533
+ #infoPrenium .center-rigth .autre-produit > span.text {
534
+ display: block;
535
+ font-size: 9px;
536
+ height: 67px;
537
+ margin-left: 83px;
538
+ margin-top: -45px;
539
+ text-align: left;
540
+ width: 182px;
541
+ }
542
+ #infoPrenium .center-rigth .autre-produit > span.comming-soon {
543
+ display: block;
544
+ font-weight: bold;
545
+ padding-top: 36px;
546
+ }
547
+ #infoPrenium .center-rigth .autre-produit > img.fleche {
548
+ display: block;
549
+ left: 233px;
550
+ position: relative;
551
+ top: -32px;
552
+ }
553
+ #infoPrenium .center-rigth .all_prod {
554
+ display: block;
555
+ font-size: 16px;
556
+ font-weight: bold;
557
+ margin: 38px;
558
+ }
559
+ #infoPrenium .center-rigth .txt_other {
560
+ display: block;
561
+ margin: 0 auto;
562
+ padding-top: 83px;
563
+ width: 205px;
564
+ }
565
+ #others_product {
566
+ background: url("/skin/adminhtml/base/default/img/PopUpLO_PartieD.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
567
+ height: 260px;
568
+ margin: 0 auto;
569
+ width: 300px;
570
+ }
571
+ #infoPrenium .center-rigth .btn_plusInfo {
572
+ color: #FFFFFF;
573
+ display: inline-block;
574
+ font-size: 16px;
575
+ font-weight: bold;
576
+ margin-top: 73px;
577
+ width: 98px;
578
+ }
579
+ .close {
580
+ bottom: -12px;
581
+ cursor: pointer;
582
+ margin-right: -14px;
583
+ margin-top: 26px;
584
+ position: absolute;
585
+ right: 0;
586
+ }
587
+ @media screen and (min-width: 1300px) {
588
+ #infoPrenium .logo-30jours-gratuit {
589
+ left: 68%;
590
+ top: -15%;
591
+ }
592
+ #infoPrenium #conteneur-detail .footer-middle {
593
+ width: 97%;
594
+ }
595
+ #infoPrenium #conteneur-detail .footer-right {
596
+ padding-left: 2.5%;
597
+ width: 91.5%;
598
+ }
599
+ }
600
+ @media screen and (max-width: 1030px) {
601
+ #infoPrenium {
602
+ height: 90%;
603
+ margin-left: 9%;
604
+ margin-top: -25%;
605
+ width: 80%;
606
+ }
607
+ #infoPrenium .center-left {
608
+ margin-left: 1.5%;
609
+ }
610
+ #infoPrenium .logo-30jours-gratuit {
611
+ left: 52%;
612
+ top: -76px;
613
+ }
614
+ #infoPrenium #conteneur-detail .footer-middle {
615
+ width: 96%;
616
+ }
617
+ #infoPrenium #conteneur-detail .footer-right {
618
+ padding-left: 3.5%;
619
+ width: 90.5%;
620
+ }
621
+ }
622
+
623
+
624
+ .structure.nowrap.center {
625
+ vertical-align: bottom;
626
+ }
627
+
628
+
629
+ #div_chck > input {
630
+ margin-left: 28px;
631
+ }
632
+
633
+ .liveoptim p {
634
+ margin-left: 15px;
635
+ }
636
+
637
+ #div_chck > .label{
638
+ margin-left:46px
639
+ }
640
+
641
+ #insciption input{
642
+ width:200px;
643
+ }
644
+
645
+ .txt_etoile {
646
+ margin-left: 35px;
647
+ }
648
+ .txt_prenium {
649
+ color: #333333;
650
+ font-size: 12px;
651
+ font-style: italic;
652
+ }
653
+
skin/adminhtml/base/default/css/liveoptim_style0.css ADDED
@@ -0,0 +1,635 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ .liveoptim ul {
3
+ list-style-image: url("/skin/adminhtml/base/default/img/puce.png");
4
+ margin: 35px 0 35px 50px;
5
+ }
6
+ .liveoptim h2 {
7
+ background: url("/skin/adminhtml/base/default/img/picto_h1.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
8
+ margin-top: 40px;
9
+ padding: 5px 0 0 50px;
10
+ }
11
+ .liveoptim ul li {
12
+ color: #BF4122;
13
+ font-size: 14px;
14
+ margin: 15px 0;
15
+ }
16
+ .liveoptim ul li a {
17
+ color: #BF4122;
18
+ }
19
+ .liveoptim ul li p {
20
+ color: #333333;
21
+ font-size: 12px;
22
+ }
23
+ #lo_content td.position span {
24
+ display: inline-block;
25
+ margin: 0 10px;
26
+ text-align: center;
27
+ width: 85px;
28
+ }
29
+ #lo_content td.position input {
30
+ margin-left: 5px;
31
+ }
32
+ #lo_content td.action a {
33
+ margin: 0 5px;
34
+ }
35
+ #lo_content th.destination {
36
+ padding-left: 5px;
37
+ padding-right: 5px;
38
+ }
39
+ #lo_content td.destination input {
40
+ margin-left: 5px;
41
+ padding-right: 5px;
42
+ width: 90%;
43
+ }
44
+ .mc {
45
+ color: #BF4122;
46
+ font-size: 14px;
47
+ }
48
+ .url {
49
+ color: #000099;
50
+ font-size: 14px;
51
+ }
52
+ div#fenetreLiveoptim {
53
+ background: none repeat scroll 0 0 #FFFFFF;
54
+ border: 3px solid #B3E1B4;
55
+ display: none;
56
+ font-size: 12px;
57
+ line-height: 18px;
58
+ margin: 0 0 0 100px;
59
+ padding: 10px;
60
+ position: absolute;
61
+ width: 600px;
62
+ }
63
+ div#fenetreLiveoptim ul {
64
+ margin: 10px 0 15px 15px;
65
+ }
66
+ div#fenetreLiveoptim ul li {
67
+ color: #333333;
68
+ font-size: 12px;
69
+ list-style: disc outside none;
70
+ margin: 0;
71
+ }
72
+ div#fenetreLiveoptim h2 {
73
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
74
+ color: #BF4122;
75
+ font-size: 14px;
76
+ font-weight: bold;
77
+ margin: 0 0 0 40px;
78
+ padding: 0;
79
+ }
80
+ div#fenetre1Liveoptim {
81
+ background: none repeat scroll 0 0 #FFFFFF;
82
+ border: 3px solid #B3E1B4;
83
+ display: none;
84
+ font-size: 12px;
85
+ line-height: 18px;
86
+ margin: 0 0 0 100px;
87
+ padding: 10px;
88
+ position: absolute;
89
+ width: 600px;
90
+ z-index: 1001;
91
+ }
92
+ div#fenetre1Liveoptim ul {
93
+ margin: 10px 0 15px 15px;
94
+ }
95
+ div#fenetre1Liveoptim ul li {
96
+ color: #333333;
97
+ font-size: 12px;
98
+ list-style: disc outside none;
99
+ margin: 0;
100
+ }
101
+ div#fenetre1Liveoptim h2 {
102
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
103
+ color: #BF4122;
104
+ font-size: 14px;
105
+ font-weight: bold;
106
+ margin: 0 0 0 40px;
107
+ padding: 0;
108
+ }
109
+ div#fenetre2Liveoptim {
110
+ background: none repeat scroll 0 0 #FFFFFF;
111
+ border: 3px solid #B3E1B4;
112
+ display: none;
113
+ font-size: 12px;
114
+ line-height: 18px;
115
+ margin: 0 0 0 410px;
116
+ padding: 10px;
117
+ position: absolute;
118
+ width: 600px;
119
+ z-index: 1001;
120
+ }
121
+ div#fenetre2Liveoptim ul {
122
+ margin: 10px 0 15px 15px;
123
+ }
124
+ div#fenetre2Liveoptim ul li {
125
+ color: #333333;
126
+ font-size: 12px;
127
+ list-style: disc outside none;
128
+ margin: 0;
129
+ }
130
+ div#fenetre2Liveoptim h2 {
131
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
132
+ color: #BF4122;
133
+ font-size: 14px;
134
+ font-weight: bold;
135
+ margin: 0 0 0 40px;
136
+ padding: 0;
137
+ }
138
+ div#fenetre3Liveoptim {
139
+ background: none repeat scroll 0 0 #FFFFFF;
140
+ border: 3px solid #B3E1B4;
141
+ display: none;
142
+ font-size: 12px;
143
+ line-height: 18px;
144
+ margin: 0 0 0 20px;
145
+ padding: 10px;
146
+ position: absolute;
147
+ width: 600px;
148
+ z-index: 1001;
149
+ }
150
+ div#fenetre3Liveoptim ul {
151
+ margin: 10px 0 15px 15px;
152
+ }
153
+ div#fenetre3Liveoptim ul li {
154
+ color: #333333;
155
+ font-size: 12px;
156
+ list-style: disc outside none;
157
+ margin: 0;
158
+ }
159
+ div#fenetre3Liveoptim h2 {
160
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
161
+ color: #BF4122;
162
+ font-size: 14px;
163
+ font-weight: bold;
164
+ margin: 0 0 0 40px;
165
+ padding: 0;
166
+ }
167
+ div#fenetre4Liveoptim {
168
+ background: none repeat scroll 0 0 #FFFFFF;
169
+ border: 3px solid #B3E1B4;
170
+ display: none;
171
+ font-size: 12px;
172
+ line-height: 18px;
173
+ margin: 0 0 0 100px;
174
+ padding: 10px;
175
+ position: absolute;
176
+ width: 600px;
177
+ z-index: 1001;
178
+ }
179
+ div#fenetre4Liveoptim ul {
180
+ margin: 10px 0 15px 15px;
181
+ }
182
+ div#fenetre4Liveoptim ul li {
183
+ color: #333333;
184
+ font-size: 12px;
185
+ list-style: disc outside none;
186
+ margin: 0;
187
+ }
188
+ div#fenetre4Liveoptim h2 {
189
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
190
+ color: #BF4122;
191
+ font-size: 14px;
192
+ font-weight: bold;
193
+ margin: 0 0 0 40px;
194
+ padding: 0;
195
+ }
196
+ div#fenetre5Liveoptim {
197
+ background: none repeat scroll 0 0 #FFFFFF;
198
+ border: 3px solid #B3E1B4;
199
+ display: none;
200
+ font-size: 12px;
201
+ line-height: 18px;
202
+ margin: 0 0 0 100px;
203
+ padding: 30px;
204
+ position: absolute;
205
+ width: 600px;
206
+ z-index: 1001;
207
+ }
208
+ div#fenetre5Liveoptim ul {
209
+ margin: 10px 0 15px 15px;
210
+ }
211
+ div#fenetre5Liveoptim ul li {
212
+ color: #333333;
213
+ font-size: 12px;
214
+ list-style: disc outside none;
215
+ margin: 0;
216
+ }
217
+ div#fenetre5Liveoptim h2 {
218
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
219
+ color: #BF4122;
220
+ font-size: 14px;
221
+ font-weight: bold;
222
+ margin: 0 0 0 40px;
223
+ padding: 0;
224
+ }
225
+ div#fenetre6Liveoptim {
226
+ background: none repeat scroll 0 0 #FFFFFF;
227
+ border: 3px solid #B3E1B4;
228
+ display: none;
229
+ font-size: 12px;
230
+ line-height: 18px;
231
+ margin: 0 0 0 -500px;
232
+ padding: 30px;
233
+ position: absolute;
234
+ width: 600px;
235
+ z-index: 1001;
236
+ }
237
+ div#fenetre6Liveoptim ul {
238
+ margin: 10px 0 15px 15px;
239
+ }
240
+ div#fenetre6Liveoptim ul li {
241
+ color: #333333;
242
+ font-size: 12px;
243
+ list-style: disc outside none;
244
+ margin: 0;
245
+ }
246
+ div#fenetre6Liveoptim h2 {
247
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
248
+ color: #BF4122;
249
+ font-size: 14px;
250
+ font-weight: bold;
251
+ margin: 0 0 0 40px;
252
+ padding: 0;
253
+ }
254
+ div#fenetreInfoPrenuim {
255
+ background: none repeat scroll 0 0 #FFFFFF;
256
+ border: 3px solid #B3E1B4;
257
+ display: none;
258
+ font-size: 12px;
259
+ line-height: 18px;
260
+ margin: 0 0 0 25%;
261
+ padding: 30px;
262
+ position: absolute;
263
+ text-align: center;
264
+ width: 400px;
265
+ z-index: 1001;
266
+ }
267
+ div#fenetreInfoPrenuim ul {
268
+ margin: 10px 0 15px 15px;
269
+ }
270
+ div#fenetreInfoPrenuim ul li {
271
+ color: #333333;
272
+ font-size: 12px;
273
+ list-style: disc outside none;
274
+ margin: 0;
275
+ }
276
+ div#fenetreInfoPrenuim h2 {
277
+ background: none repeat scroll 0 0 rgba(0, 0, 0, 0);
278
+ color: #BF4122;
279
+ font-size: 14px;
280
+ font-weight: bold;
281
+ margin: 0 0 0 40px;
282
+ padding: 0;
283
+ }
284
+ a.btn_rank {
285
+ background: url("../img/bouton-ranking.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
286
+ color: #FFFFFF;
287
+ display: block;
288
+ float: left;
289
+ font-size: 18px;
290
+ height: 68px;
291
+ padding-left: 85px;
292
+ padding-right: 60px;
293
+ padding-top: 40px;
294
+ text-align: center;
295
+ width: 160px;
296
+ }
297
+ a.btn_buy {
298
+ background: url("../img/boutonachat.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
299
+ color: #FFFFFF;
300
+ display: inline-block;
301
+ float: right;
302
+ font-size: 16px;
303
+ font-weight: bold;
304
+ height: 60px;
305
+ margin-top: -25px;
306
+ padding-left: 75px;
307
+ padding-right: 50px;
308
+ padding-top: 30px;
309
+ text-align: center;
310
+ text-transform: uppercase;
311
+ width: 170px;
312
+ }
313
+ a.btn_MaJ {
314
+ background: url("../img/boutonMAJ.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
315
+ color: #FFFFFF;
316
+ display: inline-block;
317
+ float: right;
318
+ font-size: 16px;
319
+ font-weight: bold;
320
+ height: 68px;
321
+ line-height: 20px;
322
+ margin-top: -25px;
323
+ padding-left: 75px;
324
+ padding-right: 50px;
325
+ padding-top: 22px;
326
+ text-align: center;
327
+ text-transform: uppercase;
328
+ width: 170px;
329
+ }
330
+ #lo_content {
331
+ margin-left: 50px;
332
+ }
333
+ a.btn_Prenuim {
334
+ background: url("/skin/adminhtml/base/default/img/bouton-prenuim.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
335
+ color: #FFFFFF;
336
+ display: block;
337
+ font-size: 16px;
338
+ height: 44px;
339
+ margin: 0 auto;
340
+ padding: 18px 45px 20px 40px;
341
+ text-align: center;
342
+ width: 214px;
343
+ }
344
+ div#dispoPrenium {
345
+ background-color: rgba(122, 143, 255, 0.45);
346
+ height: 74px;
347
+ padding: 37px 6% 0 160px;
348
+ position: absolute;
349
+ text-align: center;
350
+ width: 500px;
351
+ }
352
+ div#dispoPrenium img {
353
+ display: none;
354
+ }
355
+ div#dispoPrenium span {
356
+ transform: rotate(7deg);
357
+ }
358
+ #infoPrenium {
359
+ background-color: #FFFFFF;
360
+ border-radius: 10px;
361
+ box-shadow: 0 0 5px 10px #C0C0C0;
362
+ height: 64.5%;
363
+ margin: 0 13%;
364
+ position: fixed;
365
+ width: 70%;
366
+ z-index: 1001;
367
+ }
368
+ #infoPrenium .header, #infoPrenium .footer {
369
+ background-color: #000000;
370
+ height: 40px;
371
+ text-align: right;
372
+ width: 100%;
373
+ }
374
+ #infoPrenium .header {
375
+ border-radius: 10px 10px 0 0;
376
+ }
377
+ .header-right {
378
+ padding: 0;
379
+ }
380
+ #infoPrenium .footer {
381
+ border-radius: 0 0 10px 10px;
382
+ bottom: 0;
383
+ position: absolute;
384
+ }
385
+ #infoPrenium .header > img, #infoPrenium .footer > img {
386
+ margin-right: 2%;
387
+ }
388
+ #infoPrenium .center {
389
+ height: 86%;
390
+ width: 100%;
391
+ }
392
+ #infoPrenium .center-left {
393
+ height: 96%;
394
+ margin-left: 25px;
395
+ margin-top: 15px;
396
+ overflow: auto;
397
+ }
398
+ #infoPrenium .center-left .logo-lo-prenium {
399
+ background: url("/skin/adminhtml/base/default/img/logo-LO-premium.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
400
+ display: block;
401
+ height: 130px;
402
+ width: 150px;
403
+ }
404
+ #infoPrenium .logo-30jours-gratuit {
405
+ background: url("/skin/adminhtml/base/default/img/logo-30-jours-gratuit.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
406
+ display: block;
407
+ height: 81px;
408
+ left: 50%;
409
+ position: relative;
410
+ top: -19%;
411
+ width: 210px;
412
+ }
413
+ #infoPrenium #conteneur-detail {
414
+ height: 69%;
415
+ margin-bottom: 24px;
416
+ margin-left: 10px;
417
+ margin-top: -101px;
418
+ }
419
+ #infoPrenium #conteneur-detail .header {
420
+ background: url("/skin/adminhtml/base/default/img/top.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
421
+ display: block;
422
+ height: 24px;
423
+ width: 156px;
424
+ }
425
+ #infoPrenium #conteneur-detail .header-left {
426
+ background: url("/skin/adminhtml/base/default/img/top-left.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
427
+ display: block;
428
+ float: left;
429
+ height: 24px;
430
+ width: 17px;
431
+ }
432
+ #infoPrenium #conteneur-detail .header-middle {
433
+ background: url("/skin/adminhtml/base/default/img/top-center.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
434
+ display: block;
435
+ height: 24px;
436
+ margin-left: 17px;
437
+ width: 80%;
438
+ }
439
+ #infoPrenium #conteneur-detail .middle {
440
+ background: url("/skin/adminhtml/base/default/img/middle.png") repeat-y scroll 0 0 rgba(0, 0, 0, 0);
441
+ margin-left: -1px;
442
+ padding-left: 30px;
443
+ padding-top: 5px;
444
+ }
445
+ #infoPrenium #conteneur-detail .middle-left {
446
+ background: url("/skin/adminhtml/base/default/img/middle-left.png") repeat-y scroll 0 0 rgba(0, 0, 0, 0);
447
+ height: auto;
448
+ }
449
+ #infoPrenium #conteneur-detail .middle-right {
450
+ background: url("/skin/adminhtml/base/default/img/middle-right.png") repeat-y scroll right bottom rgba(0, 0, 0, 0);
451
+ height: 100%;
452
+ padding-left: 4%;
453
+ padding-top: 2%;
454
+ width: 90%;
455
+ }
456
+ #infoPrenium #conteneur-detail .middle-right .detail {
457
+ display: inline-block;
458
+ width: 49%;
459
+ }
460
+ #infoPrenium #conteneur-detail .middle .detail-rigth {
461
+ display: inline-block;
462
+ float: left;
463
+ }
464
+ .detail-rigth > img {
465
+ width: 15px;
466
+ }
467
+ .detail > img {
468
+ width: 15px;
469
+ }
470
+ #infoPrenium a.btn_Prenuim {
471
+ background: url("/skin/adminhtml/base/default/img/bouton-prenuim-popup.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
472
+ color: #FFFFFF;
473
+ display: block;
474
+ font-size: 15px;
475
+ font-weight: bold;
476
+ height: 16px;
477
+ margin: 10px auto -2px;
478
+ padding: 18px 32px 20px 18px;
479
+ text-align: center;
480
+ width: 150px;
481
+ }
482
+ #infoPrenium #conteneur-detail .footer {
483
+ background: url("/skin/adminhtml/base/default/img/bottom.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
484
+ display: block;
485
+ height: 24px;
486
+ width: 347px;
487
+ }
488
+ #infoPrenium #conteneur-detail .footer-left {
489
+ background: url("/skin/adminhtml/base/default/img/corner-bottom-left.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
490
+ height: 24px;
491
+ margin-bottom: 24px;
492
+ }
493
+ #infoPrenium #conteneur-detail .footer-middle {
494
+ background: url("/skin/adminhtml/base/default/img/bottom-center.png") repeat scroll 0 0 rgba(0, 0, 0, 0);
495
+ display: inline-block;
496
+ height: 24px;
497
+ width: 96%;
498
+ }
499
+ #infoPrenium #conteneur-detail .footer-right {
500
+ background: url("/skin/adminhtml/base/default/img/corner-bottom-right.png") no-repeat scroll right top rgba(0, 0, 0, 0);
501
+ height: 24px;
502
+ padding-left: 3.5%;
503
+ width: 90.5%;
504
+ }
505
+ #infoPrenium .center-rigth {
506
+ float: right;
507
+ height: 96%;
508
+ margin-right: 3px;
509
+ overflow: auto;
510
+ text-align: center;
511
+ width: 40%;
512
+ }
513
+ #infoPrenium .center-rigth .autre-produit {
514
+ background: url("/skin/adminhtml/base/default/img/Boxproduits.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
515
+ display: block;
516
+ height: 94px;
517
+ margin: 0 auto;
518
+ width: 279px;
519
+ }
520
+ #infoPrenium .center-rigth .soon {
521
+ background: url("/skin/adminhtml/base/default/img/Boxproduitgris.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
522
+ display: block;
523
+ height: 94px;
524
+ margin: 0 auto;
525
+ width: 279px;
526
+ }
527
+ #infoPrenium .center-rigth .autre-produit > img.logo {
528
+ display: block;
529
+ left: 18px;
530
+ position: relative;
531
+ top: 17px;
532
+ }
533
+ #infoPrenium .center-rigth .autre-produit > span.text {
534
+ display: block;
535
+ font-size: 9px;
536
+ height: 67px;
537
+ margin-left: 83px;
538
+ margin-top: -45px;
539
+ text-align: left;
540
+ width: 182px;
541
+ }
542
+ #infoPrenium .center-rigth .autre-produit > span.comming-soon {
543
+ display: block;
544
+ font-weight: bold;
545
+ padding-top: 36px;
546
+ }
547
+ #infoPrenium .center-rigth .autre-produit > img.fleche {
548
+ display: block;
549
+ left: 233px;
550
+ position: relative;
551
+ top: -32px;
552
+ }
553
+ #infoPrenium .center-rigth .all_prod {
554
+ display: block;
555
+ font-size: 16px;
556
+ font-weight: bold;
557
+ margin: 38px;
558
+ }
559
+ #infoPrenium .center-rigth .txt_other {
560
+ display: block;
561
+ margin: 0 auto;
562
+ padding-top: 83px;
563
+ width: 205px;
564
+ }
565
+ #others_product {
566
+ background: url("/skin/adminhtml/base/default/img/PopUpLO_PartieD.png") no-repeat scroll 0 0 rgba(0, 0, 0, 0);
567
+ height: 260px;
568
+ margin: 0 auto;
569
+ width: 300px;
570
+ }
571
+ #infoPrenium .center-rigth .btn_plusInfo {
572
+ color: #FFFFFF;
573
+ display: inline-block;
574
+ font-size: 16px;
575
+ font-weight: bold;
576
+ margin-top: 73px;
577
+ width: 98px;
578
+ }
579
+ .close {
580
+ bottom: -12px;
581
+ cursor: pointer;
582
+ margin-right: -14px;
583
+ margin-top: 26px;
584
+ position: absolute;
585
+ right: 0;
586
+ }
587
+ @media screen and (min-width: 1300px) {
588
+ #infoPrenium .logo-30jours-gratuit {
589
+ left: 68%;
590
+ top: -15%;
591
+ }
592
+ #infoPrenium #conteneur-detail .footer-middle {
593
+ width: 97%;
594
+ }
595
+ #infoPrenium #conteneur-detail .footer-right {
596
+ padding-left: 2.5%;
597
+ width: 91.5%;
598
+ }
599
+ }
600
+ @media screen and (max-width: 1030px) {
601
+ #infoPrenium {
602
+ height: 90%;
603
+ margin-left: 9%;
604
+ margin-top: -25%;
605
+ width: 80%;
606
+ }
607
+ #infoPrenium .center-left {
608
+ margin-left: 1.5%;
609
+ }
610
+ #infoPrenium .logo-30jours-gratuit {
611
+ left: 52%;
612
+ top: -76px;
613
+ }
614
+ #infoPrenium #conteneur-detail .footer-middle {
615
+ width: 96%;
616
+ }
617
+ #infoPrenium #conteneur-detail .footer-right {
618
+ padding-left: 3.5%;
619
+ width: 90.5%;
620
+ }
621
+ }
622
+
623
+
624
+ .structure.nowrap.center {
625
+ vertical-align: bottom;
626
+ }
627
+
628
+
629
+ #div_chck > input {
630
+ margin-left: 28px;
631
+ }
632
+
633
+ .liveoptim p {
634
+ margin-left: 15px;
635
+ }
skin/adminhtml/base/default/css/style.css ADDED
@@ -0,0 +1,106 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .liveoptim ul{list-style-image:url("/skin/adminhtml/base/default/img/puce.png");margin:35px 0 35px 50px;}
2
+
3
+ .liveoptim h2{background:url("/skin/adminhtml/base/default/img/picto_h1.png") no-repeat scroll 0 0 transparent;padding: 5px 0 0 50px; margin-top:40px}
4
+
5
+ .liveoptim ul li {color:#BF4122;font-size:14px;margin:15px 0;}
6
+ .liveoptim ul li a{color:#BF4122;}
7
+ .liveoptim ul li p{color:#333333;font-size:12px;}
8
+
9
+ #lo_content td.position span{width:85px;margin:0 10px;display:inline-block;text-align:center;}
10
+ #lo_content td.position input {margin-left:5px}
11
+ #lo_content td.action a{margin:0 5px;}
12
+ #lo_content th.destination{padding-left:5px;padding-right:5px}
13
+ #lo_content td.destination input{width:90%; margin-left:5px;padding-right:5px}
14
+
15
+
16
+ .mc{color:#bf4122;font-size:14px;}
17
+ .url{color:#009;font-size:14px;}
18
+
19
+ div#fenetreLiveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 100px;padding:10px;position:absolute;width:600px;font-size:12px;line-height:18px;}
20
+ div#fenetreLiveoptim ul{margin: 10px 0 15px 15px;}
21
+ div#fenetreLiveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
22
+ div#fenetreLiveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
23
+
24
+ div#fenetre1Liveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 100px;padding:10px;position:absolute;width:600px;z-index: 1001;font-size:12px;line-height:18px;}
25
+ div#fenetre1Liveoptim ul{margin: 10px 0 15px 15px;}
26
+ div#fenetre1Liveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
27
+ div#fenetre1Liveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
28
+
29
+ div#fenetre2Liveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 410px;padding:10px;position:absolute;width:600px;z-index: 1001;font-size:12px;line-height:18px;}
30
+ div#fenetre2Liveoptim ul{margin: 10px 0 15px 15px;}
31
+ div#fenetre2Liveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
32
+ div#fenetre2Liveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
33
+
34
+ div#fenetre3Liveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 20px;padding:10px;position:absolute;width:600px;z-index: 1001;font-size:12px;line-height:18px;}
35
+ div#fenetre3Liveoptim ul{margin: 10px 0 15px 15px;}
36
+ div#fenetre3Liveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
37
+ div#fenetre3Liveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
38
+
39
+ div#fenetre4Liveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 100px;padding:10px;position:absolute;width:600px;z-index: 1001;font-size:12px;line-height:18px;}
40
+ div#fenetre4Liveoptim ul{margin: 10px 0 15px 15px;}
41
+ div#fenetre4Liveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
42
+ div#fenetre4Liveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
43
+
44
+ div#fenetre5Liveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 100px;padding:30px;position:absolute;width:600px;z-index: 1001;font-size:12px;line-height:18px;}
45
+ div#fenetre5Liveoptim ul{margin: 10px 0 15px 15px;}
46
+ div#fenetre5Liveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
47
+ div#fenetre5Liveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
48
+
49
+
50
+ div#fenetre6Liveoptim{display:none;background:none repeat scroll 0 0 white;border:3px solid #B3E1B4;margin:0 0 0 -500px;padding:30px;position:absolute;width:600px;z-index: 1001;font-size:12px;line-height:18px;}
51
+ div#fenetre6Liveoptim ul{margin: 10px 0 15px 15px;}
52
+ div#fenetre6Liveoptim ul li{list-style:disc;margin:0;color:#333333;font-size:12px;}
53
+ div#fenetre6Liveoptim h2{color:#BF4122;font-size:14px;font-weight:bold;margin:0 0 0 40px;padding:0;background:none;}
54
+
55
+ a.btn_rank{
56
+ background:url("../img/bouton-ranking.png");
57
+ color: white;
58
+ display: block;
59
+ float: left;
60
+ font-size: 18px;
61
+ height: 68px;
62
+ padding-left: 85px;
63
+ padding-right: 60px;
64
+ padding-top: 40px;
65
+ text-align: center;
66
+ width: 160px;
67
+ }
68
+ a.btn_buy{
69
+ background:url("../img/boutonachat.png");
70
+ display:inline-block;
71
+ float:right;
72
+ width:170px;
73
+ height:60px;
74
+ padding-left: 75px;
75
+ padding-right: 50px;
76
+ padding-top: 30px;
77
+ margin-top:-25px;
78
+ color:white;
79
+ text-align:center;
80
+ font-size:16px;
81
+ font-weight: bold;
82
+ text-transform: uppercase;
83
+ }
84
+
85
+ a.btn_MaJ{
86
+ background:url("../img/boutonMAJ.png");
87
+ display:inline-block;
88
+ float:right;
89
+ width:170px;
90
+ height:68px;
91
+ padding-left: 75px;
92
+ padding-right: 50px;
93
+ padding-top: 22px;
94
+ margin-top:-25px;
95
+ color:white;
96
+ text-align:center;
97
+ font-size:16px;
98
+ font-weight: bold;
99
+ line-height: 20px;
100
+ text-transform: uppercase;
101
+ }
102
+
103
+ #lo_content{
104
+ margin-left:50px;
105
+ }
106
+
skin/adminhtml/base/default/img/DL.png ADDED
Binary file
skin/adminhtml/base/default/img/Flechecentrale.png ADDED
Binary file
skin/adminhtml/base/default/img/Flechedroite.png ADDED
Binary file
skin/adminhtml/base/default/img/Flechegauche.png ADDED
Binary file
skin/adminhtml/base/default/img/PictoValid.png ADDED
Binary file
skin/adminhtml/base/default/img/PopUpLO_PartieD.png ADDED
Binary file
skin/adminhtml/base/default/img/Thumbs.db ADDED
Binary file
skin/adminhtml/base/default/img/actif.png ADDED
Binary file
skin/adminhtml/base/default/img/ajouter.png ADDED
Binary file
skin/adminhtml/base/default/img/bottom-center.png ADDED
Binary file
skin/adminhtml/base/default/img/bouton-prenuim-popup.png ADDED
Binary file
skin/adminhtml/base/default/img/bouton-prenuim.png ADDED
Binary file
skin/adminhtml/base/default/img/bouton-ranking.png ADDED
Binary file
skin/adminhtml/base/default/img/boutonMAJ.png ADDED
Binary file
skin/adminhtml/base/default/img/boutonachat.png ADDED
Binary file
skin/adminhtml/base/default/img/close.png ADDED
Binary file
skin/adminhtml/base/default/img/corner-bottom-left.png ADDED
Binary file
skin/adminhtml/base/default/img/corner-bottom-right.png ADDED
Binary file
skin/adminhtml/base/default/img/fleche-bas.gif ADDED
Binary file
skin/adminhtml/base/default/img/fleche-haut.gif ADDED
Binary file
skin/adminhtml/base/default/img/fleche_verte.png ADDED
Binary file
skin/adminhtml/base/default/img/hint.png ADDED
Binary file
skin/adminhtml/base/default/img/inactif.png ADDED
Binary file
skin/adminhtml/base/default/img/logo-30-jours-gratuit.png ADDED
Binary file
skin/adminhtml/base/default/img/logo-LO-premium.png ADDED
Binary file
skin/adminhtml/base/default/img/logo-mkt-popup.png ADDED
Binary file
skin/adminhtml/base/default/img/middle-left.png ADDED
Binary file
skin/adminhtml/base/default/img/middle-right.png ADDED
Binary file
skin/adminhtml/base/default/img/modifier.gif ADDED
Binary file
skin/adminhtml/base/default/img/off.png ADDED
Binary file
skin/adminhtml/base/default/img/on.png ADDED
Binary file
skin/adminhtml/base/default/img/paiement.png ADDED
Binary file
skin/adminhtml/base/default/img/picto_h1.png ADDED
Binary file
skin/adminhtml/base/default/img/puce.png ADDED
Binary file
skin/adminhtml/base/default/img/supprimer.gif ADDED
Binary file
skin/adminhtml/base/default/img/top-center.png ADDED
Binary file
skin/adminhtml/base/default/img/top-left.png ADDED
Binary file