Permalink
Browse files

New: add external theme with a module

  • Loading branch information...
1 parent 8898b9a commit 18c081a7acbdd8d53fa65daab32846d92ec92ab5 Regis Houssin committed Apr 30, 2012
Showing with 57 additions and 43 deletions.
  1. +1 −0 dev/skeletons/modMyModule.class.php
  2. +2 −2 htdocs/core/class/conf.class.php
  3. +54 −41 htdocs/core/lib/usergroups.lib.php
@@ -77,6 +77,7 @@ function modMyModule($db)
// '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)
@@ -52,7 +52,7 @@ class Conf
public $smart_menu;
public $modules = array(); // List of activated modules
- public $modules_parts = array('triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array()); // List of modules parts
+ public $modules_parts = array('triggers'=>array(),'login'=>array(),'substitutions'=>array(),'menus'=>array(),'theme'=>array(),'tpl'=>array(),'barcode'=>array(),'models'=>array()); // List of modules parts
// TODO Remove all thoose tabs with one generic
public $triggers_modules = array();
@@ -188,7 +188,7 @@ function setValues($db)
if (! isset($this->modules_parts[$partname]) || ! is_array($this->modules_parts[$partname])) { $this->modules_parts[$partname] = array(); }
$arrValue = json_decode($value,true);
if (is_array($arrValue) && ! empty($arrValue)) $value = $arrValue;
- else if (in_array($partname,array('login','menus','substitutions','triggers','tpl'))) $value = '/'.$modulename.'/core/'.$partname.'/';
+ else if (in_array($partname,array('login','menus','substitutions','triggers','tpl','theme'))) $value = '/'.$modulename.'/core/'.$partname.'/';
else if (in_array($partname,array('models'))) $value = '/'.$modulename.'/';
else if ($value == 1) $value = '/'.$modulename.'/core/modules/'.$partname.'/';
$this->$varname = array_merge($this->$varname, array($modulename => $value)); // TODO deprecated
@@ -159,9 +159,7 @@ function show_theme($fuser,$edit=0,$foruserprofile=false)
{
global $conf,$langs,$bc;
-
- $dirtheme=dol_buildpath($conf->global->MAIN_FORCETHEMEDIR.'/theme',0);
- $urltheme=dol_buildpath($conf->global->MAIN_FORCETHEMEDIR.'/theme',1);
+ $dirthemes=array_merge(array($conf->global->MAIN_FORCETHEMEDIR.'/theme'),(array) $conf->modules_parts['themes']);
$selected_theme=$conf->global->MAIN_THEME;
if (! empty($fuser)) $selected_theme=$fuser->conf->MAIN_THEME;
@@ -216,47 +214,62 @@ function show_theme($fuser,$edit=0,$foruserprofile=false)
print '<tr '.$bc[$var].'><td colspan="'.$colspan.'">';
print '<table class="nobordernopadding" width="100%">';
- $handle=opendir($dirtheme);
+
$i=0;
- while (($subdir = readdir($handle))!==false)
+
+ foreach($dirthemes as $dir)
{
- if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.'
- && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir))
- {
- // Disable not stable themes
- //if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/bureau2crea/i',$subdir)) continue;
-
- if ($i % $thumbsbyrow == 0)
- {
- print '<tr '.$bc[$var].'>';
- }
-
- print '<td align="center">';
- $file=$dirtheme."/".$subdir."/thumb.png";
- $url=$urltheme."/".$subdir."/thumb.png";
- if (! file_exists($file)) $url=$urltheme."/common/nophoto.jpg";
- print '<table><tr><td>';
- print '<a href="'.$_SERVER["PHP_SELF"].($edit?'?action=edit&theme=':'?theme=').$subdir.(GETPOST("optioncss")?'&optioncss='.GETPOST("optioncss",'alpha',1):'').($fuser?'&id='.$fuser->id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">';
- if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive");
- else $title=$langs->trans("ShowPreview");
- print '<img src="'.$url.'" border="0" width="80" height="60" alt="'.$title.'" title="'.$title.'">';
- print '</a>';
- print '</td></tr><tr><td align="center">';
- if ($subdir == $selected_theme)
- {
- print '<input '.($edit?'':'disabled').' type="radio" '.$bc[$var].' style="border: 0px;" checked name="main_theme" value="'.$subdir.'"> <b>'.$subdir.'</b>';
- }
- else
- {
- print '<input '.($edit?'':'disabled').' type="radio" '.$bc[$var].' style="border: 0px;" name="main_theme" value="'.$subdir.'"> '.$subdir;
- }
- print '</td></tr></table></td>';
-
- $i++;
-
- if ($i % $thumbsbyrow == 0) print '</tr>';
- }
+ $dirtheme=dol_buildpath($dir,0);
+ $urltheme=dol_buildpath($dir,1);
+
+ if (is_dir($dirtheme))
+ {
+ $handle=opendir($dirtheme);
+ if (is_resource($handle))
+ {
+ while (($subdir = readdir($handle))!==false)
+ {
+ if (is_dir($dirtheme."/".$subdir) && substr($subdir, 0, 1) <> '.'
+ && substr($subdir, 0, 3) <> 'CVS' && ! preg_match('/common|phones/i',$subdir))
+ {
+ // Disable not stable themes
+ //if ($conf->global->MAIN_FEATURES_LEVEL < 1 && preg_match('/bureau2crea/i',$subdir)) continue;
+
+ if ($i % $thumbsbyrow == 0)
+ {
+ print '<tr '.$bc[$var].'>';
+ }
+
+ print '<td align="center">';
+ $file=$dirtheme."/".$subdir."/thumb.png";
+ $url=$urltheme."/".$subdir."/thumb.png";
+ if (! file_exists($file)) $url=$urltheme."/common/nophoto.jpg";
+ print '<table><tr><td>';
+ print '<a href="'.$_SERVER["PHP_SELF"].($edit?'?action=edit&theme=':'?theme=').$subdir.(GETPOST("optioncss")?'&optioncss='.GETPOST("optioncss",'alpha',1):'').($fuser?'&id='.$fuser->id:'').'" style="font-weight: normal;" alt="'.$langs->trans("Preview").'">';
+ if ($subdir == $conf->global->MAIN_THEME) $title=$langs->trans("ThemeCurrentlyActive");
+ else $title=$langs->trans("ShowPreview");
+ print '<img src="'.$url.'" border="0" width="80" height="60" alt="'.$title.'" title="'.$title.'">';
+ print '</a>';
+ print '</td></tr><tr><td align="center">';
+ if ($subdir == $selected_theme)
+ {
+ print '<input '.($edit?'':'disabled').' type="radio" '.$bc[$var].' style="border: 0px;" checked name="main_theme" value="'.$subdir.'"> <b>'.$subdir.'</b>';
+ }
+ else
+ {
+ print '<input '.($edit?'':'disabled').' type="radio" '.$bc[$var].' style="border: 0px;" name="main_theme" value="'.$subdir.'"> '.$subdir;
+ }
+ print '</td></tr></table></td>';
+
+ $i++;
+
+ if ($i % $thumbsbyrow == 0) print '</tr>';
+ }
+ }
+ }
+ }
}
+
if ($i % $thumbsbyrow != 0)
{
while ($i % $thumbsbyrow != 0)

0 comments on commit 18c081a

Please sign in to comment.