229 lines
5.5 KiB
PHP
229 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace Kanboard\Model;
|
|
|
|
use Kanboard\Core\Base;
|
|
|
|
/**
|
|
* Color model
|
|
*
|
|
* @package model
|
|
* @author Frederic Guillot
|
|
*/
|
|
class Color extends Base
|
|
{
|
|
/**
|
|
* Default colors
|
|
*
|
|
* @access private
|
|
* @var array
|
|
*/
|
|
private $default_colors = array(
|
|
'yellow' => array(
|
|
'name' => 'Yellow',
|
|
'background' => 'rgb(245, 247, 196)',
|
|
'border' => 'rgb(223, 227, 45)',
|
|
),
|
|
'blue' => array(
|
|
'name' => 'Blue',
|
|
'background' => 'rgb(219, 235, 255)',
|
|
'border' => 'rgb(168, 207, 255)',
|
|
),
|
|
'green' => array(
|
|
'name' => 'Green',
|
|
'background' => 'rgb(189, 244, 203)',
|
|
'border' => 'rgb(74, 227, 113)',
|
|
),
|
|
'purple' => array(
|
|
'name' => 'Purple',
|
|
'background' => 'rgb(223, 176, 255)',
|
|
'border' => 'rgb(205, 133, 254)',
|
|
),
|
|
'red' => array(
|
|
'name' => 'Red',
|
|
'background' => 'rgb(255, 187, 187)',
|
|
'border' => 'rgb(255, 151, 151)',
|
|
),
|
|
'orange' => array(
|
|
'name' => 'Orange',
|
|
'background' => 'rgb(255, 215, 179)',
|
|
'border' => 'rgb(255, 172, 98)',
|
|
),
|
|
'grey' => array(
|
|
'name' => 'Grey',
|
|
'background' => 'rgb(238, 238, 238)',
|
|
'border' => 'rgb(204, 204, 204)',
|
|
),
|
|
'brown' => array(
|
|
'name' => 'Brown',
|
|
'background' => '#d7ccc8',
|
|
'border' => '#4e342e',
|
|
),
|
|
'deep_orange' => array(
|
|
'name' => 'Deep Orange',
|
|
'background' => '#ffab91',
|
|
'border' => '#e64a19',
|
|
),
|
|
'dark_grey' => array(
|
|
'name' => 'Dark Grey',
|
|
'background' => '#cfd8dc',
|
|
'border' => '#455a64',
|
|
),
|
|
'pink' => array(
|
|
'name' => 'Pink',
|
|
'background' => '#f48fb1',
|
|
'border' => '#d81b60',
|
|
),
|
|
'teal' => array(
|
|
'name' => 'Teal',
|
|
'background' => '#80cbc4',
|
|
'border' => '#00695c',
|
|
),
|
|
'cyan' => array(
|
|
'name' => 'Cyan',
|
|
'background' => '#b2ebf2',
|
|
'border' => '#00bcd4',
|
|
),
|
|
'lime' => array(
|
|
'name' => 'Lime',
|
|
'background' => '#e6ee9c',
|
|
'border' => '#afb42b',
|
|
),
|
|
'light_green' => array(
|
|
'name' => 'Light Green',
|
|
'background' => '#dcedc8',
|
|
'border' => '#689f38',
|
|
),
|
|
'amber' => array(
|
|
'name' => 'Amber',
|
|
'background' => '#ffe082',
|
|
'border' => '#ffa000',
|
|
),
|
|
);
|
|
|
|
/**
|
|
* Find a color id from the name or the id
|
|
*
|
|
* @access public
|
|
* @param string $color
|
|
* @return string
|
|
*/
|
|
public function find($color)
|
|
{
|
|
$color = strtolower($color);
|
|
|
|
foreach ($this->default_colors as $color_id => $params) {
|
|
if ($color_id === $color) {
|
|
return $color_id;
|
|
} elseif ($color === strtolower($params['name'])) {
|
|
return $color_id;
|
|
}
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* Get color properties
|
|
*
|
|
* @access public
|
|
* @param string $color_id
|
|
* @return array
|
|
*/
|
|
public function getColorProperties($color_id)
|
|
{
|
|
if (isset($this->default_colors[$color_id])) {
|
|
return $this->default_colors[$color_id];
|
|
}
|
|
|
|
return $this->default_colors[$this->getDefaultColor()];
|
|
}
|
|
|
|
/**
|
|
* Get available colors
|
|
*
|
|
* @access public
|
|
* @param bool $prepend
|
|
* @return array
|
|
*/
|
|
public function getList($prepend = false)
|
|
{
|
|
$listing = $prepend ? array('' => t('All colors')) : array();
|
|
|
|
foreach ($this->default_colors as $color_id => $color) {
|
|
$listing[$color_id] = t($color['name']);
|
|
}
|
|
|
|
return $listing;
|
|
}
|
|
|
|
/**
|
|
* Get the default color
|
|
*
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function getDefaultColor()
|
|
{
|
|
return $this->config->get('default_color', 'yellow');
|
|
}
|
|
|
|
/**
|
|
* Get the default colors
|
|
*
|
|
* @access public
|
|
* @return array
|
|
*/
|
|
public function getDefaultColors()
|
|
{
|
|
return $this->default_colors;
|
|
}
|
|
|
|
/**
|
|
* Get border color from string
|
|
*
|
|
* @access public
|
|
* @param string $color_id Color id
|
|
* @return string
|
|
*/
|
|
public function getBorderColor($color_id)
|
|
{
|
|
$color = $this->getColorProperties($color_id);
|
|
return $color['border'];
|
|
}
|
|
|
|
/**
|
|
* Get background color from the color_id
|
|
*
|
|
* @access public
|
|
* @param string $color_id Color id
|
|
* @return string
|
|
*/
|
|
public function getBackgroundColor($color_id)
|
|
{
|
|
$color = $this->getColorProperties($color_id);
|
|
return $color['background'];
|
|
}
|
|
|
|
/**
|
|
* Get CSS stylesheet of all colors
|
|
*
|
|
* @access public
|
|
* @return string
|
|
*/
|
|
public function getCss()
|
|
{
|
|
$buffer = '';
|
|
|
|
foreach ($this->default_colors as $color => $values) {
|
|
$buffer .= 'div.color-'.$color.' {';
|
|
$buffer .= 'background-color: '.$values['background'].';';
|
|
$buffer .= 'border-color: '.$values['border'];
|
|
$buffer .= '}';
|
|
$buffer .= 'td.color-'.$color.' { background-color: '.$values['background'].'}';
|
|
}
|
|
|
|
return $buffer;
|
|
}
|
|
}
|