package ONO::Lib::UI::ColorPicker;
################################################################################
# COPYRIGHT / LICENSE #
################################################################################
#
# This file is part of the ONO Software Project.
#
# Copyright (C) 2000-2025 Jos KIRPS [ www.kirps.com | jos_AT_kirps_DOT_com ]
# and The Joopita Project [ www.joopita.org | contact_AT_joopita_DOT_com ]
#
# This file, as well as other parts of the ONO Software Project or related
# elements, are FREE SOFTWARE available under the ARTISTIC LICENSE 2.0.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# For the full license, see /ono/osr/license/LICENSE.txt, or write to
# jos_AT_kirps_DOT_com or contact_AT_joopita_DOT_com.
#
################################################################################
# END OF COPYRIGHT / LICENSE, HERE COMES THE CODE ... #
################################################################################
use strict;
use ONO::IO;
sub display {
my (
$self,
$id,
$default,
$selected,
$switches,
) = @_;
#: The default ONO color picker, as used by ONO_FW_Wiki for example.
#:
#: - d disabled (displayed, but you can't modify anything)
#: - S don't return script code (obsolete)
#: - t add transparency option (which also adds 7 additional colors)
my $DEBUG = "id = $id, default = $default, selected = $selected, switches = $switches, ";
$default =~ s~#~~;
$selected =~ s~#~~;
if ($selected eq "" && $switches !~ /t/) {
$selected = $default;
$DEBUG .= "selected = default ($selected), ";
}
if ($selected eq "" && $switches !~ /t/) {
$selected = "ffffff";
$DEBUG .= "selected = ffffff, ";
}
my $TR_STYLE;
my $openicon = qq~/ono/osr/images/arrows/nuvola/black/nav_down.png~;
if (!$selected) {
$TR_STYLE = qq~style="display:none"~;
$openicon = qq~/ono/osr/images/arrows/nuvola/black/nav_next.png~;
}
if ($switches =~ /d/) {
$openicon = qq~/ono/osr/images/icons/crystal/32x32/actions/encrypted.png~;
}
my $current = $selected;
if (!$current) {
$current = $default;
}
my $IMG;
if (!$selected && $switches =~ /t/) {
$IMG = qq~<img class="block2020" src="/ono/osr/images/copi/none.png" alt="">~;
}
my ($TRANS,$TRANS2,$TRANS3);
if ($switches =~ /t/) {
my $TIMG = qq~<img class="block2020" src="/ono/osr/images/copi/none.png" alt="">~;
my $istrans = 0;
if (!$selected) {
$TIMG = qq~<img class="block2020" src="/ono/osr/images/copi/selnone.png" alt="">~;
$TRANS2 = "trans10";
$istrans = 1;
}
$TRANS = qq~<td id="cpi_${id}_td_1_trans" class="p0" style="width:20px;height:20px;background-color:#$default;border:1px solid #ffffff"
onclick="onojs_ui_colorpicker_select('$id','1','','$default');onojs_class('cpi_${id}_div_input_color','trans10');onojs_setvalue('cpi_${id}_output_trans_id','1');">
$TIMG
</td>
~;
$TRANS3 = qq~<input type="hidden" id="cpi_${id}_output_trans_id" name="cpi_${id}_output_trans" value="$istrans">~;
}
$selected =~ s~(\n|\r|\t)~~g;
$default =~ s~(\n|\r|\t)~~g;
my $RESET = qq~onojs_ui_colorpicker_reset('$id','$selected','$default');~;
if (!$selected) {
$RESET = qq~onojs_ui_colorpicker_select('$id','1','','$default');~;
}
$selected = lc $selected ;
if ($selected =~ /[0-9a-z]/ && $selected !~ /\#/) {
$selected = "#$selected";
}
my $COLOR = qq~<table class="default_table">
<tr id="cpi_${id}_tr_1">
<td id="cpi_${id}_td_1_original" class="p0" style="background-color:#$current;border:1px solid #ffffff" onclick="$RESET"><div class="block20"></div></td>
<td class="p0">
<div id="cpi_${id}_div_input_color" class="$TRANS2" onclick="onojs_class('cpi_${id}_div_input_color','');">
<input type="color" id="cpi_${id}_output" name="cpi_${id}_output" value="$selected">
</div>
</td>
<td id="cpi_${id}_td_1_selected" class="p0 hide" style="width:20px;height:20px;background-color:#$current;border:1px solid #ffffff">$IMG</td>
<td class="p0" style="border:1px solid #ffffff">
<a href="javascript:void(0);" onclick="onojs_ui_colorpicker_toggle_xt('$id');">
<img id="cpi_${id}_icon_open" class="block12" src="$openicon" style="margin:4px" alt="">
</a>
</td>
$TRANS
</tr>
<tr id="cpi_${id}_tr_2"$TR_STYLE><td></td><td></td><td></td></tr>
<tr id="cpi_${id}_tr_3"$TR_STYLE><td></td><td></td><td></td></tr>
<tr id="cpi_${id}_tr_4"$TR_STYLE><td></td><td></td><td></td></tr>
<tr id="cpi_${id}_tr_5"$TR_STYLE><td></td><td></td><td></td></tr>
<tr id="cpi_${id}_tr_6"$TR_STYLE><td></td><td></td><td></td></tr>
<tr id="cpi_${id}_tr_7"$TR_STYLE><td></td><td></td><td></td></tr>
<tr id="cpi_${id}_tr_8"$TR_STYLE><td></td><td></td><td></td></tr>
</table>
$TRANS3
~;
if (ONO::IO->devstation()) {
# $COLOR .= $DEBUG;
}
return qq~$COLOR<script>onojs_ui_colorpicker_init('$id','$selected','$default');</script>~;
}
###############################################################################
# end of script
###############################################################################
1;
__END__