Sorry for my bad english
I proposed here a Select Box for color. It's near than
Zoulou proposed here
https://sourceforge.net/tracker/?func=detail&atid=430842&aid=1535023&group_id=41586
but it's not have the same visuel.
You found in archive the class and modified file for
use in xoops_version.php like this
[code]
$modversion['config'][3]['name'] = 'PM_COLOR_ALLBOX';
$modversion['config'][3]['title'] = '_MI_PM_COLOR_ALLBOX';
$modversion['config'][3]['description'] =
'_MI_PM_COLOR_ALLBOX_DESC';
$modversion['config'][3]['formtype'] = 'selectcolor';
$modversion['config'][3]['valuetype'] = 'string';
$modversion['config'][3]['default'] = '#006699';
[/code]
En français :
Voila, j'ai eu un besoin de pouvoir choisir des
couleurs pour une preference de module, et là je me
suis aperçu qu'il n'y avait pas de classe predefinie
pour cela au niveau des classes FormSelect qui sont
utilisées pour la gestion des formulaires de façons
generales et surtout par l'administration.
J'ai donc palié a mon besoin et je le mets ici, cela
peut etre utile à d'autre ;-).
J'ai cree une classe XoopsFormSelectColor qui peut
servir a modifier la couleur du texte (style color) ou
du fond (style backgroundcolor).
Dans class/xoopsform/formselectcolor.php
[code]
[/code]
Voilà pour la classe.
Pour l'utiliser il faut modifier le fichier
class/xoopsformloader.php pour rajouter le chemin vers
la nouvelle classe
[code]
include_once
XOOPS_ROOT_PATH."/class/xoopsform/formselectcolor.php";
[/code]
Pour que cette classe soit utilisé pour les preferences
d'un module il faut modifier le fichier
modules/system/admin/preferences/main.php
rajouter ce bout de code
[code]
case 'selectcolorback':
$back = true;
case 'selectcolor':
$ele = new XoopsFormSelectColor($title,
$config[$i]->getVar('conf_name'),
$config[$i]->getConfValueForOutput(), isset($back));
unset($back);
$options =&
$config_handler->getConfigOptions(new
Criteria('conf_id', $config[$i]->getVar('conf_id')));
$opcount = count($options);
for ($j = 0; $j < $opcount; $j++) {
$optval =
defined($options[$j]->getVar('confop_value')) ?
constant($options[$j]->getVar('confop_value')) :
$options[$j]->getVar('confop_value');
$optkey =
defined($options[$j]->getVar('confop_name')) ?
constant($options[$j]->getVar('confop_name')) :
$options[$j]->getVar('confop_name');
$ele->addOption($optval, $optkey);
}
break;
[/code]
dans les 2 boucles avec le switch a l'interieure des
tests sur op est egale a show et showmod
Et maintenant au niveau du xoops_version de votre
module il n'y a plus qu'a mettre cela par exemple pour
definir une couleur de fond
[code]
$modversion['config'][2]['name'] = 'PM_COLOR_THISBOX';
$modversion['config'][2]['title'] = '_MI_PM_COLOR_THISBOX';
$modversion['config'][2]['description'] =
'_MI_PM_COLOR_THISBOX_DESC';
$modversion['config'][2]['formtype'] = 'selectcolorback';
$modversion['config'][2]['valuetype'] = 'string';
$modversion['config'][2]['default'] = 'red';
$modversion['config'][2]['options'] = $tabcouleur;
[/code]
avec ici un tableau de couleur predefinie dans
$tabcouleur de ce type la :
[code]
$tabcouleur = array('aliceblue' => 'aliceblue',
'antiquewhite' => 'antiquewhite',
'aqua' => 'aqua',
'aquamarine' => 'aquamarine',
'azure' => 'azure',
'beige' => 'beige',
'bisque' => 'bisque',
'black' => 'black',
'blanchedalmond' => 'blanchedalmond',
'blue' => 'blue',
'blueviolet' => 'blueviolet',
'brown' => 'brown'... );
[/code]
Si vous ne voulez pas definir un tableau de couleur, il
en sera créé un automatiquement un utilisant les codes
en hexa (exactement le meme que sur l'editeur).
ceci defini par exemple une couleur d'ecriture avec le
tableau de couleur genere automatiquement.
[code]
$modversion['config'][3]['name'] = 'PM_COLOR_ALLBOX';
$modversion['config'][3]['title'] = '_MI_PM_COLOR_ALLBOX';
$modversion['config'][3]['description'] =
'_MI_PM_COLOR_ALLBOX_DESC';
$modversion['config'][3]['formtype'] = 'selectcolor';
$modversion['config'][3]['valuetype'] = 'string';
$modversion['config'][3]['default'] = '#006699';
[/code]
Vous allez me dire: quel est l'interet?
J'en avais besoins ;-) et rajouter des classes css pour
ce que je voulais faire avec me paraissait pas super
top ;-) et puis la classe peut etre utilisé par
ailleurs dans n'importe quel type de formulaire (comme
dans l'editeur par exemple...).
class XoopsFormSelectColor
Logged In: YES
user_id=882380
Somebody sent something similar to this a little before you,
and it's been committed to the SVN already.
The only difference with your version is that zoullou's
colorpicker uses a textfield and a JS script instead of a
selectbox as you did (which is ok when you need a small
list of colors but that I dont like so much when you
generate the entire palette server-side).
So 2 solutions:
- The actual element is enough for you, and we keep it like this
- You may try to change the code that has already been
committed, and enhance it so a "select" is rendered when a
list of colors is provided, or the text/dhtml thing
otherwise (IMO it wouldn't be too hard, just a matter of a
couple well-placed if/else)
Am switching the tracker status to "pending", which means
that it will be closed automatically if no feedback is
recieved within a week (meaning that you'd consider the
actual element sufficient for your needs).
Thanks for helping us making XOOPS better.
PS: Please do not paste more than a couple of lines of code
like this, it makes the item difficult to read. That's what
attachments are for ;-). I also described the procedure to
follow in the "Core development" forum recently, you may
want to read it.
Logged In: YES
user_id=1576365
You can use this class with a list of color or not.
If you don't put a list of color there is a generator into
the class to put a list exactly the same like the choice
color in the editor dhtml.
Otherwise the list of color is an array like that :
$tabcouleur = array('aliceblue' => 'aliceblue',
'antiquewhite' => 'antiquewhite',
'aqua' => 'aqua',
'aquamarine' => 'aquamarine', ...)
This class can replace the code on the editor too...