Skip to content
Snippets Groups Projects
Commit bef2ee80 authored by Patrick Barroca's avatar Patrick Barroca :grin:
Browse files

Introducing new admin var to set extra skins path relative from /skins

parent 7c18c1d8
Branches
Tags
2 merge requests!258Dev/13872 Orphee Allow Hold Available Items,!7Multiple Skin Dirs
......@@ -326,6 +326,7 @@ class Class_AdminVar extends Storm_Model_Abstract {
'MUSICME_BIB_ID' => '',
'DATE_LAST_FULL_INTEGRATION_USERS' => '',
'BOITE_PANIER_AUTO' => 'Ajouter automatiquement une boîte panier dans la division flottante. 0 = inactif, 1 = actif',
'EXTRA_SKIN_PATH' => 'Chemin vers les skins personnalisées, relatif à ' . Class_Profil_Skin::EXTRA_PATH,
];
return self::$_knownVars;
}
......
......@@ -45,7 +45,7 @@ class Class_Profil_Skin {
public function getPath() {
$path = self::EXTRA_PATH . $this->_name . '/';
$path = $this->getExtraPath() . $this->_name . '/';
if ($this->fileExists('.' . $path))
return $path;
......@@ -57,6 +57,13 @@ class Class_Profil_Skin {
}
protected function getExtraPath() {
if (!$admin_var = Class_AdminVar::get('EXTRA_SKIN_PATH'))
return self::EXTRA_PATH;
return self::EXTRA_PATH . $admin_var . ('/' !== substr($admin_var, -1) ? '/' : '');
}
public function getUrl() {
return BASE_URL . $this->getPath();
}
......@@ -102,7 +109,7 @@ class Class_Profil_Skin {
public function getAvailables() {
$skins = [];
foreach ([self::DEFAULT_PATH, self::EXTRA_PATH] as $path)
foreach ([self::DEFAULT_PATH, $this->getExtraPath()] as $path)
$skins = array_merge($skins, $this->getAvailablesIn('.' . $path));
return $skins;
}
......
......@@ -74,6 +74,9 @@ abstract class Admin_ProfilControllerProfilJeunesseTestCase extends Admin_Abstra
->whenCalled('save')->answers(true)->getWrapper();
ZendAfi_Auth::getInstance()->getIdentity()->ROLE_LEVEL = 7;
$this->fixture('Class_AdminVar', ['id' => 'EXTRA_SKIN_PATH',
'valeur' => '']);
}
}
......
......@@ -42,12 +42,12 @@ abstract class Class_Profil_SkinTestCase extends Storm_Test_ModelTestCase {
->mkdir(Class_Profil_Skin::EXTRA_PATH . 'my-skin')
->cd('/');
Class_Profil_Skin::setFileSystem($this->_file_system);
$this->_skin = Class_Profil_Skin::newFor($this->fixture('Class_Profil',
['id' => 3,
'skin' => $this->_skin_name]));
$this->_skin = Class_Profil_Skin::newFor(
$this->fixture('Class_Profil', ['id' => 3, 'skin' => $this->_skin_name]));
Class_AdminVar::beVolatile();
}
......@@ -65,6 +65,18 @@ class Class_Profil_SkinExtraTest extends Class_Profil_SkinTestCase {
public function pathShouldContainsMySkin() {
$this->assertContains($this->_skin_name, $this->_skin->getPath());
}
/** @test */
public function withExtraSkinPathShouldContainsIt() {
$this->fixture('Class_AdminVar', ['id' => 'EXTRA_SKIN_PATH',
'valeur' => 'sub-skins']);
$this->_file_system
->mkdir(Class_Profil_Skin::EXTRA_PATH . 'sub-skins/my-skin');
$this->assertContains('sub-skins/' . $this->_skin_name,
$this->_skin->getPath());
}
}
......@@ -119,6 +131,25 @@ class Class_Profil_SkinExistTest extends Class_Profil_SkinTestCase {
'testing' => 'testing'],
$this->_skin->getAvailables());
}
/** @test */
public function availableWithExtraPathVarShouldBeAsExpected() {
$extra_var = 'sub-skins';
$this->fixture('Class_AdminVar', ['id' => 'EXTRA_SKIN_PATH',
'valeur' => $extra_var]);
$this->_file_system
->mkdir(Class_Profil_Skin::EXTRA_PATH . $extra_var . '/very-dark')
->mkdir(Class_Profil_Skin::EXTRA_PATH . $extra_var . '/very-light');
$this->assertEquals(['afi' => 'afi',
'very-dark' => 'very-dark',
'very-light' => 'very-light',
'original' => 'original',
'testing' => 'testing'],
$this->_skin->getAvailables());
}
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment