summaryrefslogtreecommitdiff
path: root/app/Model/ColorModel.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/Model/ColorModel.php')
-rw-r--r--app/Model/ColorModel.php228
1 files changed, 228 insertions, 0 deletions
diff --git a/app/Model/ColorModel.php b/app/Model/ColorModel.php
new file mode 100644
index 00000000..9e69dda2
--- /dev/null
+++ b/app/Model/ColorModel.php
@@ -0,0 +1,228 @@
+<?php
+
+namespace Kanboard\Model;
+
+use Kanboard\Core\Base;
+
+/**
+ * Color model
+ *
+ * @package Kanboard\Model
+ * @author Frederic Guillot
+ */
+class ColorModel 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->configModel->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;
+ }
+}