diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl
index 6951bc28bb4..bff952cd317 100755
--- a/build/makepack-dolibarr.pl
+++ b/build/makepack-dolibarr.pl
@@ -324,7 +324,6 @@ if ($nboftargetok) {
$ret=`rm -f $BUILDROOT/$PROJECT/.gitignore $BUILDROOT/$PROJECT/*/.gitignore $BUILDROOT/$PROJECT/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/.gitignore $BUILDROOT/$PROJECT/*/*/*/*/*/*/.gitignore`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/theme/amarok`;
$ret=`rm -f $BUILDROOT/$PROJECT/htdocs/includes/geoip/sample*.*`;
- $ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/jquery/plugins/lightbox`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/nusoap/lib/Mail`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/license.txt`;
$ret=`rm -fr $BUILDROOT/$PROJECT/htdocs/includes/phpexcel/PHPExcel/Shared/PDF`;
diff --git a/dev/skeletons/modMyModule.class.php b/dev/skeletons/modMyModule.class.php
index 98e50bc813a..71401511e7a 100644
--- a/dev/skeletons/modMyModule.class.php
+++ b/dev/skeletons/modMyModule.class.php
@@ -73,16 +73,17 @@ class modMyModule extends DolibarrModules
// for specific path of parts (eg: /mymodule/core/modules/barcode)
// for specific css file (eg: /mymodule/css/mymodule.css.php)
//$this->module_parts = array(
- // 'triggers' => 0, // Set this to 1 if module has its own trigger directory (core/triggers)
- // 'login' => 0, // Set this to 1 if module has its own login method directory (core/login)
- // 'substitutions' => 0, // Set this to 1 if module has its own substitution function file (core/substitutions)
- // 'menus' => 0, // Set this to 1 if module has its own menus handler directory (core/menus)
- // 'theme' => 0, // Set this to 1 if module has its own theme directory (core/theme)
- // 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl)
- // 'barcode' => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode)
- // 'models' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx)
- // 'css' => '/mymodule/css/mymodule.css.php', // Set this to relative path of css if module has its own css file
- // 'hooks' => array('hookcontext1','hookcontext2') // Set here all hooks context managed by module
+ // 'triggers' => 0, // Set this to 1 if module has its own trigger directory (core/triggers)
+ // 'login' => 0, // Set this to 1 if module has its own login method directory (core/login)
+ // 'substitutions' => 0, // Set this to 1 if module has its own substitution function file (core/substitutions)
+ // 'menus' => 0, // Set this to 1 if module has its own menus handler directory (core/menus)
+ // 'theme' => 0, // Set this to 1 if module has its own theme directory (core/theme)
+ // 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl)
+ // 'barcode' => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode)
+ // 'models' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx)
+ // 'css' => array('/mymodule/css/mymodule.css.php'), // Set this to relative path of css file if module has its own css file
+ // 'js' => array('/mymodule/js/mymodule.js'), // Set this to relative path of js file if module must load a js on all pages
+ // 'hooks' => array('hookcontext1','hookcontext2') // Set here all hooks context managed by module
// 'workflow' => array('WORKFLOW_MODULE1_YOURACTIONTYPE_MODULE2'=>array('enabled'=>'! empty($conf->module1->enabled) && ! empty($conf->module2->enabled)', 'picto'=>'yourpicto@mymodule')) // Set here all workflow context managed by module
// );
$this->module_parts = array();
diff --git a/htdocs/core/class/conf.class.php b/htdocs/core/class/conf.class.php
index 78255aa9084..c3c64758225 100644
--- a/htdocs/core/class/conf.class.php
+++ b/htdocs/core/class/conf.class.php
@@ -52,7 +52,7 @@ class Conf
public $smart_menu;
public $modules = array(); // List of activated modules
- public $modules_parts = array('js'=>array(),'triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'theme'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array(),'hooks'=>array()); // List of modules parts
+ public $modules_parts = array('css'=>array(), 'js'=>array(),'triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'theme'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array(),'hooks'=>array()); // List of modules parts
// TODO Remove thoose arrays with generic module_parts
public $tabs_modules = array();
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index d990ce99586..19f5e7de09b 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -3709,30 +3709,6 @@ class Form
}
else dol_print_error('','Call of showphoto with wrong parameters');
- /* Disabled. lightbox seems to not work. I don't know why.
- $ret.="\n\n";
-
- $ret.="\n\n";
- */
-
return $ret;
}
diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php
index c98aff33804..5653c8977cd 100644
--- a/htdocs/core/modules/DolibarrModules.class.php
+++ b/htdocs/core/modules/DolibarrModules.class.php
@@ -1286,6 +1286,20 @@ abstract class DolibarrModules
/**
* Insert activation of generic parts from modules in llx_const
+ * Input entry use $this->module_parts = array(
+ * 'triggers' => 0, // Set this to 1 if module has its own trigger directory (core/triggers)
+ * 'login' => 0, // Set this to 1 if module has its own login method directory (core/login)
+ * 'substitutions' => 0, // Set this to 1 if module has its own substitution function file (core/substitutions)
+ * 'menus' => 0, // Set this to 1 if module has its own menus handler directory (core/menus)
+ * 'theme' => 0, // Set this to 1 if module has its own theme directory (core/theme)
+ * 'tpl' => 0, // Set this to 1 if module overwrite template dir (core/tpl)
+ * 'barcode' => 0, // Set this to 1 if module has its own barcode directory (core/modules/barcode)
+ * 'models' => 0, // Set this to 1 if module has its own models directory (core/modules/xxx)
+ * 'css' => '/mymodule/css/mymodule.css.php', // Set this to relative path of css file if module has its own css file
+ * 'js' => '/mymodule/js/mymodule.js', // Set this to relative path of js file if module must load a js on all pages
+ * 'hooks' => array('hookcontext1','hookcontext2') // Set here all hooks context managed by module
+ * 'workflow' => array('WORKFLOW_MODULE1_YOURACTIONTYPE_MODULE2'=>array('enabled'=>'! empty($conf->module1->enabled) && ! empty($conf->module2->enabled)', 'picto'=>'yourpicto@mymodule') // Set here all workflow context managed by module
+ * )
*
* @return int Nb of errors (0 if OK)
*/
diff --git a/htdocs/includes/jquery/plugins/lightbox/css/jquery.lightbox-0.5.css b/htdocs/includes/jquery/plugins/lightbox/css/jquery.lightbox-0.5.css
deleted file mode 100644
index c7c3d1cb1c2..00000000000
--- a/htdocs/includes/jquery/plugins/lightbox/css/jquery.lightbox-0.5.css
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * jQuery lightBox plugin
- * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
- * and adapted to me for use like a plugin from jQuery.
- * @name jquery-lightbox-0.5.css
- * @author Leandro Vieira Pinho - http://leandrovieira.com
- * @version 0.5
- * @date April 11, 2008
- * @category jQuery plugin
- * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
- * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US
- * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
- */
-#jquery-overlay {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 90;
- width: 100%;
- height: 500px;
-}
-#jquery-lightbox {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: 100;
- text-align: center;
- line-height: 0;
-}
-#jquery-lightbox a img { border: none; }
-#lightbox-container-image-box {
- position: relative;
- background-color: #fff;
- width: 250px;
- height: 250px;
- margin: 0 auto;
-}
-#lightbox-container-image { padding: 10px; }
-#lightbox-loading {
- position: absolute;
- top: 40%;
- left: 0%;
- height: 25%;
- width: 100%;
- text-align: center;
- line-height: 0;
-}
-#lightbox-nav {
- position: absolute;
- top: 0;
- left: 0;
- height: 100%;
- width: 100%;
- z-index: 10;
-}
-#lightbox-container-image-box > #lightbox-nav { left: 0; }
-#lightbox-nav a { outline: none;}
-#lightbox-nav-btnPrev, #lightbox-nav-btnNext {
- width: 49%;
- height: 100%;
- zoom: 1;
- display: block;
-}
-#lightbox-nav-btnPrev {
- left: 0;
- float: left;
-}
-#lightbox-nav-btnNext {
- right: 0;
- float: right;
-}
-#lightbox-container-image-data-box {
- font: 10px Verdana, Helvetica, sans-serif;
- background-color: #fff;
- margin: 0 auto;
- line-height: 1.4em;
- overflow: auto;
- width: 100%;
- padding: 0 10px 0;
-}
-#lightbox-container-image-data {
- padding: 0 10px;
- color: #666;
-}
-#lightbox-container-image-data #lightbox-image-details {
- width: 70%;
- float: left;
- text-align: left;
-}
-#lightbox-image-details-caption { font-weight: bold; }
-#lightbox-image-details-currentNumber {
- display: block;
- clear: left;
- padding-bottom: 1.0em;
-}
-#lightbox-secNav-btnClose {
- width: 66px;
- float: right;
- padding-bottom: 0.7em;
-}
\ No newline at end of file
diff --git a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-blank.gif b/htdocs/includes/jquery/plugins/lightbox/images/lightbox-blank.gif
deleted file mode 100644
index 1d11fa9ada9..00000000000
Binary files a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-blank.gif and /dev/null differ
diff --git a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-close.gif b/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-close.gif
deleted file mode 100644
index 33bcf517a35..00000000000
Binary files a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-close.gif and /dev/null differ
diff --git a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-next.gif b/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-next.gif
deleted file mode 100644
index a0d4fcf84a7..00000000000
Binary files a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-next.gif and /dev/null differ
diff --git a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-prev.gif b/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-prev.gif
deleted file mode 100644
index 040ee5992f7..00000000000
Binary files a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-btn-prev.gif and /dev/null differ
diff --git a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-ico-loading.gif b/htdocs/includes/jquery/plugins/lightbox/images/lightbox-ico-loading.gif
deleted file mode 100644
index 4f1429c06cb..00000000000
Binary files a/htdocs/includes/jquery/plugins/lightbox/images/lightbox-ico-loading.gif and /dev/null differ
diff --git a/htdocs/includes/jquery/plugins/lightbox/js/jquery.lightbox-0.5.min.js b/htdocs/includes/jquery/plugins/lightbox/js/jquery.lightbox-0.5.min.js
deleted file mode 100644
index 429f0c557c8..00000000000
--- a/htdocs/includes/jquery/plugins/lightbox/js/jquery.lightbox-0.5.min.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * jQuery lightBox plugin
- * This jQuery plugin was inspired and based on Lightbox 2 by Lokesh Dhakar (http://www.huddletogether.com/projects/lightbox2/)
- * and adapted to me for use like a plugin from jQuery.
- * @name jquery-lightbox-0.5.js
- * @author Leandro Vieira Pinho - http://leandrovieira.com
- * @version 0.5
- * @date April 11, 2008
- * @category jQuery plugin
- * @copyright (c) 2008 Leandro Vieira Pinho (leandrovieira.com)
- * @license CCAttribution-ShareAlike 2.5 Brazil - http://creativecommons.org/licenses/by-sa/2.5/br/deed.en_US
- * @example Visit http://leandrovieira.com/projects/jquery/lightbox/ for more informations about this jQuery plugin
- */
-(function($){$.fn.lightBox=function(settings){settings=jQuery.extend({overlayBgColor:'#000',overlayOpacity:0.8,fixedNavigation:false,imageLoading:'images/lightbox-ico-loading.gif',imageBtnPrev:'images/lightbox-btn-prev.gif',imageBtnNext:'images/lightbox-btn-next.gif',imageBtnClose:'images/lightbox-btn-close.gif',imageBlank:'images/lightbox-blank.gif',containerBorderSize:10,containerResizeSpeed:400,txtImage:'Image',txtOf:'of',keyToClose:'c',keyToPrev:'p',keyToNext:'n',imageArray:[],activeImage:0},settings);var jQueryMatchedObj=this;function _initialize(){_start(this,jQueryMatchedObj);return false;}
-function _start(objClicked,jQueryMatchedObj){$('embed, object, select').css({'visibility':'hidden'});_set_interface();settings.imageArray.length=0;settings.activeImage=0;if(jQueryMatchedObj.length==1){settings.imageArray.push(new Array(objClicked.getAttribute('href'),objClicked.getAttribute('title')));}else{for(var i=0;i
');var arrPageSizes=___getPageSize();$('#jquery-overlay').css({backgroundColor:settings.overlayBgColor,opacity:settings.overlayOpacity,width:arrPageSizes[0],height:arrPageSizes[1]}).fadeIn();var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]}).show();$('#jquery-overlay,#jquery-lightbox').click(function(){_finish();});$('#lightbox-loading-link,#lightbox-secNav-btnClose').click(function(){_finish();return false;});$(window).resize(function(){var arrPageSizes=___getPageSize();$('#jquery-overlay').css({width:arrPageSizes[0],height:arrPageSizes[1]});var arrPageScroll=___getPageScroll();$('#jquery-lightbox').css({top:arrPageScroll[1]+(arrPageSizes[3]/10),left:arrPageScroll[0]});});}
-function _set_image_to_view(){$('#lightbox-loading').show();if(settings.fixedNavigation){$('#lightbox-image,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}else{$('#lightbox-image,#lightbox-nav,#lightbox-nav-btnPrev,#lightbox-nav-btnNext,#lightbox-container-image-data-box,#lightbox-image-details-currentNumber').hide();}
-var objImagePreloader=new Image();objImagePreloader.onload=function(){$('#lightbox-image').attr('src',settings.imageArray[settings.activeImage][0]);_resize_container_image_box(objImagePreloader.width,objImagePreloader.height);objImagePreloader.onload=function(){};};objImagePreloader.src=settings.imageArray[settings.activeImage][0];};function _resize_container_image_box(intImageWidth,intImageHeight){var intCurrentWidth=$('#lightbox-container-image-box').width();var intCurrentHeight=$('#lightbox-container-image-box').height();var intWidth=(intImageWidth+(settings.containerBorderSize*2));var intHeight=(intImageHeight+(settings.containerBorderSize*2));var intDiffW=intCurrentWidth-intWidth;var intDiffH=intCurrentHeight-intHeight;$('#lightbox-container-image-box').animate({width:intWidth,height:intHeight},settings.containerResizeSpeed,function(){_show_image();});if((intDiffW==0)&&(intDiffH==0)){if($.browser.msie){___pause(250);}else{___pause(100);}}
-$('#lightbox-container-image-data-box').css({width:intImageWidth});$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({height:intImageHeight+(settings.containerBorderSize*2)});};function _show_image(){$('#lightbox-loading').hide();$('#lightbox-image').fadeIn(function(){_show_image_data();_set_navigation();});_preload_neighbor_images();};function _show_image_data(){$('#lightbox-container-image-data-box').slideDown('fast');$('#lightbox-image-details-caption').hide();if(settings.imageArray[settings.activeImage][1]){$('#lightbox-image-details-caption').html(settings.imageArray[settings.activeImage][1]).show();}
-if(settings.imageArray.length>1){$('#lightbox-image-details-currentNumber').html(settings.txtImage+' '+(settings.activeImage+1)+' '+settings.txtOf+' '+settings.imageArray.length).show();}}
-function _set_navigation(){$('#lightbox-nav').show();$('#lightbox-nav-btnPrev,#lightbox-nav-btnNext').css({'background':'transparent url('+settings.imageBlank+') no-repeat'});if(settings.activeImage!=0){if(settings.fixedNavigation){$('#lightbox-nav-btnPrev').css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnPrev').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnPrev+') left 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage-1;_set_image_to_view();return false;});}}
-if(settings.activeImage!=(settings.imageArray.length-1)){if(settings.fixedNavigation){$('#lightbox-nav-btnNext').css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'}).unbind().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}else{$('#lightbox-nav-btnNext').unbind().hover(function(){$(this).css({'background':'url('+settings.imageBtnNext+') right 15% no-repeat'});},function(){$(this).css({'background':'transparent url('+settings.imageBlank+') no-repeat'});}).show().bind('click',function(){settings.activeImage=settings.activeImage+1;_set_image_to_view();return false;});}}
-_enable_keyboard_navigation();}
-function _enable_keyboard_navigation(){$(document).keydown(function(objEvent){_keyboard_action(objEvent);});}
-function _disable_keyboard_navigation(){$(document).unbind();}
-function _keyboard_action(objEvent){if(objEvent==null){keycode=event.keyCode;escapeKey=27;}else{keycode=objEvent.keyCode;escapeKey=objEvent.DOM_VK_ESCAPE;}
-key=String.fromCharCode(keycode).toLowerCase();if((key==settings.keyToClose)||(key=='x')||(keycode==escapeKey)){_finish();}
-if((key==settings.keyToPrev)||(keycode==37)){if(settings.activeImage!=0){settings.activeImage=settings.activeImage-1;_set_image_to_view();_disable_keyboard_navigation();}}
-if((key==settings.keyToNext)||(keycode==39)){if(settings.activeImage!=(settings.imageArray.length-1)){settings.activeImage=settings.activeImage+1;_set_image_to_view();_disable_keyboard_navigation();}}}
-function _preload_neighbor_images(){if((settings.imageArray.length-1)>settings.activeImage){objNext=new Image();objNext.src=settings.imageArray[settings.activeImage+1][0];}
-if(settings.activeImage>0){objPrev=new Image();objPrev.src=settings.imageArray[settings.activeImage-1][0];}}
-function _finish(){$('#jquery-lightbox').remove();$('#jquery-overlay').fadeOut(function(){$('#jquery-overlay').remove();});$('embed, object, select').css({'visibility':'visible'});}
-function ___getPageSize(){var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=window.innerWidth+window.scrollMaxX;yScroll=window.innerHeight+window.scrollMaxY;}else if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight;}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight;}
-var windowWidth,windowHeight;if(self.innerHeight){if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;}else{windowWidth=self.innerWidth;}
-windowHeight=self.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight;}else if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight;}
-if(yScroll35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(6($){$.2N.3g=6(4){4=23.2H({2B:\'#34\',2g:0.8,1d:F,1M:\'18/5-33-Y.16\',1v:\'18/5-1u-2Q.16\',1E:\'18/5-1u-2L.16\',1W:\'18/5-1u-2I.16\',19:\'18/5-2F.16\',1f:10,2A:3d,2s:\'1j\',2o:\'32\',2j:\'c\',2f:\'p\',2d:\'n\',h:[],9:0},4);f I=N;6 20(){1X(N,I);u F}6 1X(1e,I){$(\'1U, 1S, 1R\').l({\'1Q\':\'2E\'});1O();4.h.B=0;4.9=0;7(I.B==1){4.h.1J(v 1m(1e.17(\'J\'),1e.17(\'2v\')))}j{36(f i=0;i<1w g="5-b"><1w W="\'+4.1M+\'"><1i g="5-b-A-1t">1i><1i g="5-b-A-1g">1i><1w W="\'+4.1W+\'">\');f z=1D();$(\'#q-13\').l({2K:4.2B,2J:4.2g,S:z[0],P:z[1]}).1V();f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]}).E();$(\'#q-13,#q-5\').C(6(){1a()});$(\'#5-Y-29,#5-1s-22\').C(6(){1a();u F});$(G).2G(6(){f z=1D();$(\'#q-13\').l({S:z[0],P:z[1]});f R=1p();$(\'#q-5\').l({1T:R[1]+(z[3]/10),1c:R[0]})})}6 D(){$(\'#5-Y\').E();7(4.1d){$(\'#5-b,#5-s-b-T-w,#5-b-A-1g\').1b()}j{$(\'#5-b,#5-k,#5-k-V,#5-k-X,#5-s-b-T-w,#5-b-A-1g\').1b()}f Q=v 1j();Q.1P=6(){$(\'#5-b\').2D(\'W\',4.h[4.9][0]);1N(Q.S,Q.P);Q.1P=6(){}};Q.W=4.h[4.9][0]};6 1N(1o,1r){f 1L=$(\'#5-s-b-w\').S();f 1K=$(\'#5-s-b-w\').P();f 1n=(1o+(4.1f*2));f 1y=(1r+(4.1f*2));f 1I=1L-1n;f 2z=1K-1y;$(\'#5-s-b-w\').3f({S:1n,P:1y},4.2A,6(){2y()});7((1I==0)&&(2z==0)){7($.3e.3c){1H(3b)}j{1H(3a)}}$(\'#5-s-b-T-w\').l({S:1o});$(\'#5-k-V,#5-k-X\').l({P:1r+(4.1f*2)})};6 2y(){$(\'#5-Y\').1b();$(\'#5-b\').1V(6(){2u();2t()});2r()};6 2u(){$(\'#5-s-b-T-w\').38(\'35\');$(\'#5-b-A-1t\').1b();7(4.h[4.9][1]){$(\'#5-b-A-1t\').2p(4.h[4.9][1]).E()}7(4.h.B>1){$(\'#5-b-A-1g\').2p(4.2s+\' \'+(4.9+1)+\' \'+4.2o+\' \'+4.h.B).E()}}6 2t(){$(\'#5-k\').E();$(\'#5-k-V,#5-k-X\').l({\'K\':\'1C M(\'+4.19+\') L-O\'});7(4.9!=0){7(4.1d){$(\'#5-k-V\').l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9-1;D();u F})}j{$(\'#5-k-V\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1v+\') 1c 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9-1;D();u F})}}7(4.9!=(4.h.B-1)){7(4.1d){$(\'#5-k-X\').l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'}).11().1k(\'C\',6(){4.9=4.9+1;D();u F})}j{$(\'#5-k-X\').11().2m(6(){$(N).l({\'K\':\'M(\'+4.1E+\') 2l 15% L-O\'})},6(){$(N).l({\'K\':\'1C M(\'+4.19+\') L-O\'})}).E().1k(\'C\',6(){4.9=4.9+1;D();u F})}}2k()}6 2k(){$(d).30(6(12){2i(12)})}6 1G(){$(d).11()}6 2i(12){7(12==2h){U=2Z.2e;1x=27}j{U=12.2e;1x=12.2Y}14=2X.2W(U).2U();7((14==4.2j)||(14==\'x\')||(U==1x)){1a()}7((14==4.2f)||(U==37)){7(4.9!=0){4.9=4.9-1;D();1G()}}7((14==4.2d)||(U==39)){7(4.9!=(4.h.B-1)){4.9=4.9+1;D();1G()}}}6 2r(){7((4.h.B-1)>4.9){2c=v 1j();2c.W=4.h[4.9+1][0]}7(4.9>0){2b=v 1j();2b.W=4.h[4.9-1][0]}}6 1a(){$(\'#q-5\').2a();$(\'#q-13\').2T(6(){$(\'#q-13\').2a()});$(\'1U, 1S, 1R\').l({\'1Q\':\'2S\'})}6 1D(){f o,r;7(G.1h&&G.28){o=G.26+G.2R;r=G.1h+G.28}j 7(d.m.25>d.m.24){o=d.m.2P;r=d.m.25}j{o=d.m.2O;r=d.m.24}f y,H;7(Z.1h){7(d.t.1l){y=d.t.1l}j{y=Z.26}H=Z.1h}j 7(d.t&&d.t.1A){y=d.t.1l;H=d.t.1A}j 7(d.m){y=d.m.1l;H=d.m.1A}7(r'."\n"; // JQuery
print ''."\n"; // Tooltip
print ''."\n"; // JNotify
- //print ''."\n"; // Lightbox
if (! empty($conf->global->MAIN_USE_JQUERY_FILEUPLOAD)) // jQuery fileupload
{
print ''."\n";
@@ -903,17 +902,22 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
if (! empty($_SESSION['dol_resetcache'])) $themeparam.='&dol_resetcache='.$_SESSION['dol_resetcache'];
//print 'themepath='.$themepath.' themeparam='.$themeparam;exit;
print ''."\n";
+
// CSS forced by modules (relative url starting with /)
if (isset($conf->modules_parts['css']))
{
- $dircss=(array) $conf->modules_parts['css'];
- foreach($dircss as $key => $cssfile)
+ $arraycss=(array) $conf->modules_parts['css'];
+ foreach($arraycss as $modcss => $filescss)
{
- // cssfile is a relative path
- print ''."\n";
+ $filescss=(array) $filescss; // To be sure filecss is an array
+ foreach($filescss as $cssfile)
+ {
+ // cssfile is a relative path
+ print ''."\n";
+ }
}
}
// CSS forced by page in top_htmlhead call (relative url starting with /)
@@ -948,7 +952,6 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
else print ''."\n";
print ''."\n";
print ''."\n";
- //print ''."\n";
// jQuery Layout
if (! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT) || defined('REQUIRE_JQUERY_LAYOUT'))
{
@@ -1044,12 +1047,19 @@ function top_htmlhead($head, $title='', $disablejs=0, $disablehead=0, $arrayofjs
print ''."\n";
// JS forced by modules (relative url starting with /)
- $dirjs=(array) $conf->modules_parts['js'];
- foreach($dirjs as $key => $jsfile)
- {
- // jsfile is a relative path
- print ''."\n";
- }
+ if (isset($conf->modules_parts['js'])) // $conf->modules_parts['js'] is array('module'=>array('file1','file2'))
+ {
+ $arrayjs=(array) $conf->modules_parts['js'];
+ foreach($arrayjs as $modjs => $filesjs)
+ {
+ $filesjs=(array) $filesjs; // To be sure filejs is an array
+ foreach($filesjs as $jsfile)
+ {
+ // jsfile is a relative path
+ print ''."\n";
+ }
+ }
+ }
// JS forced by page in top_htmlhead (relative url starting with /)
if (is_array($arrayofjs))
{
diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php
index aff8a64e7fc..69667f086a8 100644
--- a/htdocs/product/class/product.class.php
+++ b/htdocs/product/class/product.class.php
@@ -2593,23 +2593,6 @@ class Product extends CommonObject
$pdirthumb = $pdir.'thumbs/';
$return =''."\n";
- /*$return.="\n";
- */
$nbphoto=0;
$dir_osencoded=dol_osencode($dir);
@@ -2647,7 +2630,7 @@ class Product extends CommonObject
if ($nbbyrow) $return.= '