From b28f1a4a516f93044c632b254670dd21f52e625c Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Wed, 29 Jan 2020 20:34:08 +0100 Subject: new feature : colored tags --- app/class/Colors.php | 96 ++++++++++++++++++++++++++++++++++++ app/class/Controllerhome.php | 3 +- app/class/Model.php | 2 +- app/view/templates/admin.php | 2 +- app/view/templates/arthead.php | 6 --- app/view/templates/confirmdelete.php | 2 +- app/view/templates/connect.php | 2 +- app/view/templates/edit.php | 2 +- app/view/templates/font.php | 2 +- app/view/templates/home.php | 2 +- app/view/templates/homeopt.php | 4 +- app/view/templates/info.php | 2 +- app/view/templates/layout.php | 6 ++- app/view/templates/media.php | 2 +- app/view/templates/timeline.php | 2 +- app/view/templates/user.php | 2 +- 16 files changed, 115 insertions(+), 22 deletions(-) create mode 100644 app/class/Colors.php delete mode 100644 app/view/templates/arthead.php (limited to 'app') diff --git a/app/class/Colors.php b/app/class/Colors.php new file mode 100644 index 0000000..ce37d62 --- /dev/null +++ b/app/class/Colors.php @@ -0,0 +1,96 @@ +readcssfile()) { + $this->parsetagcss(); + } + if (!empty($taglist)) { + $this->removeaddtags($taglist); + $this->tocss(); + $this->writecssfile(); + } + } + + public function readcssfile(): bool + { + if (MODEL::dircheck(MODEL::CSS_DIR) && file_exists($this->file)) { + $this->rawcss = file_get_contents($this->file); + return true; + } else { + return false; + } + } + + public function removeaddtags(array $taglist = []) + { + $tagcolor = []; + foreach ($taglist as $tag => $tagcount) { + if (key_exists($tag, $this->tagcolor)) { + $tagcolor[$tag] = $this->tagcolor[$tag]; + } else { + $tagcolor[$tag] = '#' . dechex(rand(100, 255)) . dechex(rand(100, 255)) . dechex(rand(100, 255)); + } + } + $this->tagcolor = $tagcolor; + } + + + + /** + * Transform a CSS string in a array of `tag => background-color` + * + * @return array Ouput array using TAG as key and Hex Color as value + */ + public function parsetagcss() + { + $pattern = '%.tag\_([a-z0-9\-\_]*)\s*\{\s*background-color:\s*(#[A-Fa-f0-9]{6})\;\s*\}%'; + preg_match_all($pattern, $this->rawcss, $matches); + $tagcolor = array_combine($matches[1], $matches[2]); + if ($tagcolor !== false) { + $this->tagcolor = $tagcolor; + return true; + } else { + return false; + } + } + + public function tocss() + { + $css = ""; + foreach ($this->tagcolor as $tag => $color) { + $css .= PHP_EOL . '.tag_' . $tag . ' { background-color: ' . $color . '; }'; + } + $this->rawcss = $css; + } + + public function writecssfile() + { + if (MODEL::dircheck(MODEL::CSS_DIR)) { + return file_put_contents($this->file, $this->rawcss); + } + } + + public function htmlcolorpicker(array $csstagcolor): string + { + $html = ''; + return $html; + } +} diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index 81e4300..9f8896c 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -30,8 +30,7 @@ class Controllerhome extends Controllerpage $table = $this->modelhome->getlister(); $this->opt = $this->modelhome->optinit($table); - $css = 'a.tag_bgg-fds_gd { background-color: #FF0021; } '; - $this->opt->parsetagcss($css); + $colors = new Colors($this->opt->taglist()); $table2 = $this->modelhome->table2($table, $this->opt); diff --git a/app/class/Model.php b/app/class/Model.php index 655de9f..40e3a2e 100644 --- a/app/class/Model.php +++ b/app/class/Model.php @@ -139,7 +139,7 @@ abstract class Model * * @return bool return true if the dir already exist or was created succesfullt. Otherwise return false */ - public function dircheck(string $dir) : bool + public static function dircheck(string $dir) : bool { if (!is_dir($dir)) { return mkdir($dir); diff --git a/app/view/templates/admin.php b/app/view/templates/admin.php index c201d90..f7d25b3 100644 --- a/app/view/templates/admin.php +++ b/app/view/templates/admin.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'admin', 'css' => $css . 'home.css']) ?> +layout('layout', ['title' => 'admin', 'stylesheets' => [$css . 'home.css']]) ?> start('page') ?> diff --git a/app/view/templates/arthead.php b/app/view/templates/arthead.php deleted file mode 100644 index b137c7f..0000000 --- a/app/view/templates/arthead.php +++ /dev/null @@ -1,6 +0,0 @@ - - - -<?= $title ?> - - \ No newline at end of file diff --git a/app/view/templates/confirmdelete.php b/app/view/templates/confirmdelete.php index 133f32b..24de454 100644 --- a/app/view/templates/confirmdelete.php +++ b/app/view/templates/confirmdelete.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'delete', 'description' => 'delete', 'css' => $css . 'delete.css']) ?> +layout('layout', ['title' => 'delete', 'description' => 'delete', 'stylesheets' => [$css . 'home.css']]) ?> start('page') ?> diff --git a/app/view/templates/connect.php b/app/view/templates/connect.php index dca4303..e21b360 100644 --- a/app/view/templates/connect.php +++ b/app/view/templates/connect.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'Connect', 'description' => 'connect', 'css' => $css . 'connect.css']) ?> +layout('layout', ['title' => 'Connect', 'description' => 'connect', 'stylesheets' => [$css . 'home.css']]) ?> diff --git a/app/view/templates/edit.php b/app/view/templates/edit.php index 5507583..d0125f2 100644 --- a/app/view/templates/edit.php +++ b/app/view/templates/edit.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => '✏ '.$page->title(), 'css' => $css . 'edit.css', 'favicon' => $page->favicon()]) ?> +layout('layout', ['title' => '✏ '.$page->title(), 'stylesheets' => [$css . 'edit.css'], 'favicon' => $page->favicon()]) ?> diff --git a/app/view/templates/font.php b/app/view/templates/font.php index 8fcf149..cf6d309 100644 --- a/app/view/templates/font.php +++ b/app/view/templates/font.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'font', 'css' => $css . 'home.css']) ?> +layout('layout', ['title' => 'font', 'stylesheets' => [$css . 'home.css']]) ?> start('page') ?> diff --git a/app/view/templates/home.php b/app/view/templates/home.php index 9c71b53..0c1cc86 100644 --- a/app/view/templates/home.php +++ b/app/view/templates/home.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'home', 'css' => $css . 'home.css', 'favicon' => '']) ?> +layout('layout', ['title' => 'home', 'stylesheets' => [$css . 'home.css', $css . 'tagcolors.css'], 'favicon' => '']) ?> diff --git a/app/view/templates/homeopt.php b/app/view/templates/homeopt.php index 7f42c8e..05f8d27 100644 --- a/app/view/templates/homeopt.php +++ b/app/view/templates/homeopt.php @@ -63,9 +63,9 @@ if (in_array($tagfilter, $opt->tagfilter())) { - echo '
  • '; + echo '
  • '; } else { - echo '
  • '; + echo '
  • '; } } if ($in = true || $out = true) { diff --git a/app/view/templates/info.php b/app/view/templates/info.php index 9a5357e..a5a5213 100644 --- a/app/view/templates/info.php +++ b/app/view/templates/info.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'info', 'css' => $css . 'home.css']) ?> +layout('layout', ['title' => 'info', 'stylesheets' => [$css . 'home.css']]) ?> start('page') ?> diff --git a/app/view/templates/layout.php b/app/view/templates/layout.php index 9259fda..b255738 100644 --- a/app/view/templates/layout.php +++ b/app/view/templates/layout.php @@ -12,7 +12,11 @@ <?= $title ?> - + + + + + '; diff --git a/app/view/templates/media.php b/app/view/templates/media.php index ba385cb..7e20f48 100644 --- a/app/view/templates/media.php +++ b/app/view/templates/media.php @@ -2,7 +2,7 @@ use Wcms\Model; -$this->layout('layout', ['title' => 'media', 'css' => $css . 'home.css']) ?> +$this->layout('layout', ['title' => 'media', 'stylesheets' => [$css . 'home.css']]) ?> start('page') ?> diff --git a/app/view/templates/timeline.php b/app/view/templates/timeline.php index 2db861c..f06180e 100644 --- a/app/view/templates/timeline.php +++ b/app/view/templates/timeline.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'timeline', 'css' => $css . 'home.css', 'favicon' => '']) ?> +layout('layout', ['title' => 'timeline', 'stylesheets' => [$css . 'home.css'], 'favicon' => '']) ?> diff --git a/app/view/templates/user.php b/app/view/templates/user.php index f281c93..f7b2b25 100644 --- a/app/view/templates/user.php +++ b/app/view/templates/user.php @@ -1,4 +1,4 @@ -layout('layout', ['title' => 'user', 'css' => $css . 'home.css']) ?> +layout('layout', ['title' => 'user', 'stylesheets' => [$css . 'home.css']]) ?> start('page') ?> -- cgit v1.2.3