From 40ef00fee7286a186673ff3fb26b6802421b2bc4 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 30 Jan 2020 01:54:50 +0100 Subject: work on thumbnail admin --- app/class/Config.php | 13 +++++++++++++ app/class/Page.php | 26 +++----------------------- 2 files changed, 16 insertions(+), 23 deletions(-) (limited to 'app/class') diff --git a/app/class/Config.php b/app/class/Config.php index 555129b..6ddb3e4 100644 --- a/app/class/Config.php +++ b/app/class/Config.php @@ -23,6 +23,7 @@ abstract class Config protected static $defaultbody = '%HEADER%'. PHP_EOL .PHP_EOL . '%NAV%'. PHP_EOL .PHP_EOL . '%ASIDE%'. PHP_EOL .PHP_EOL . '%MAIN%'. PHP_EOL .PHP_EOL . '%FOOTER%'; protected static $defaultpage = ''; protected static $defaultfavicon = ''; + protected static $defaultthumbnail = ''; protected static $analytics = ''; protected static $externallinkblank = true; protected static $internallinkblank = false; @@ -204,6 +205,11 @@ abstract class Config return self::$defaultfavicon; } + public static function defaultthumbnail() + { + return self::$defaultthumbnail; + } + public static function analytics() { return self::$analytics; @@ -363,6 +369,13 @@ abstract class Config } } + public static function setdefaultthumbnail($defaultthumbnail) + { + if(is_string($defaultthumbnail)) { + self::$defaultthumbnail = $defaultthumbnail; + } + } + public static function setdefaultpage($defaultpage) { if(is_string($defaultpage)) { diff --git a/app/class/Page.php b/app/class/Page.php index 7475b6b..fff98dc 100644 --- a/app/class/Page.php +++ b/app/class/Page.php @@ -17,7 +17,6 @@ class Page extends Dbitem protected $datemodif; protected $daterender; protected $css; - protected $quickcss; protected $javascript; protected $body; protected $header; @@ -76,7 +75,6 @@ class Page extends Dbitem $this->setdatemodif($now); $this->setdaterender($now); $this->setcss(''); - $this->setquickcss([]); $this->setjavascript(''); $this->setbody(''); $this->setheader(''); @@ -93,7 +91,7 @@ class Page extends Dbitem $this->settemplatebody(''); $this->settemplatecss(''); $this->settemplatejavascript(''); - $this->settemplateoptions(['externalcss', 'externaljavascript', 'favicon', 'reccursivecss', 'quickcss']); + $this->settemplateoptions(['externalcss', 'externaljavascript', 'favicon', 'thumbnail', 'reccursivecss']); $this->setfavicon(''); $this->setauthors([]); $this->setinvites([]); @@ -228,15 +226,6 @@ class Page extends Dbitem return $this->css; } - public function quickcss($type = 'array') - { - if ($type == 'json') { - return json_encode($this->quickcss); - } elseif ($type == 'array') { - return $this->quickcss; - } - } - public function javascript($type = 'string') { return $this->javascript; @@ -365,9 +354,9 @@ class Page extends Dbitem $template['javascript'] = $this->templatejavascript; $template['cssreccursive'] = $this->checkoption('reccursive'); - $template['cssquickcss'] = $this->checkoption('quickcss'); $template['externalcss'] = $this->checkoption('externalcss'); $template['cssfavicon'] = $this->checkoption('favicon'); + $template['cssthumbnail'] = $this->checkoption('thumbnail'); $template['externaljavascript'] = $this->checkoption('externaljavascript'); @@ -381,7 +370,7 @@ class Page extends Dbitem function checkoption($option) { - if (in_array('reccursive', $this->templateoptions)) { + if (in_array($option, $this->templateoptions)) { return true; } else { return false; @@ -536,15 +525,6 @@ class Page extends Dbitem } - public function setquickcss($quickcss) - { - if (is_string($quickcss)) { - $quickcss = json_decode($quickcss, true); - } - if (is_array($quickcss)) { - $this->quickcss = $quickcss; - } - } public function setjavascript($javascript) { -- cgit v1.2.3 From eab190e895124ef643c2b0574c84f3424857eeac Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 30 Jan 2020 02:46:19 +0100 Subject: default thumbnail fix #49 --- app/class/Controlleradmin.php | 20 ++++++++++---------- app/class/Controllerpage.php | 33 +++++++++++++-------------------- app/class/Modelmedia.php | 41 ++++++++++++++++++++++++++--------------- app/class/Modelrender.php | 8 +++++--- app/class/Page.php | 30 ++++++++++++++---------------- 5 files changed, 68 insertions(+), 64 deletions(-) (limited to 'app/class') diff --git a/app/class/Controlleradmin.php b/app/class/Controlleradmin.php index 3935bff..b7d0e31 100644 --- a/app/class/Controlleradmin.php +++ b/app/class/Controlleradmin.php @@ -11,26 +11,26 @@ class Controlleradmin extends Controller public function desktop() { if($this->user->isadmin()) { - $pagelist = $this->pagemanager->list(); + $datas['pagelist'] = $this->pagemanager->list(); $this->mediamanager = new Modelmedia(); - $faviconlist = $this->mediamanager->listfavicon(); - $interfacecsslist = $this->mediamanager->listinterfacecss(); - if(in_array(Config::defaultpage(), $pagelist)) { - $defaultpageexist = true; + $datas['faviconlist'] = $this->mediamanager->listfavicon(); + $datas['thumbnaillist'] = $this->mediamanager->listthumbnail(); + $datas['interfacecsslist'] = $this->mediamanager->listinterfacecss(); + if(in_array(Config::defaultpage(), $datas['pagelist'])) { + $datas['defaultpageexist'] = true; } else { - $defaultpageexist = true; + $datas['defaultpageexist'] = false; } $globalcssfile = Model::GLOBAL_DIR . 'global.css'; if(is_file($globalcssfile)) { - $globalcss = file_get_contents($globalcssfile); + $datas['globalcss'] = file_get_contents($globalcssfile); } else { - $globalcss = ""; + $datas['globalcss'] = ""; } - $admin = ['pagelist' => $pagelist, 'defaultpageexist' => $defaultpageexist, 'globalcss' => $globalcss, 'faviconlist' => $faviconlist, 'interfacecsslist' => $interfacecsslist]; - $this->showtemplate('admin', $admin); + $this->showtemplate('admin', $datas); } else { $this->routedirect('home'); } diff --git a/app/class/Controllerpage.php b/app/class/Controllerpage.php index 75ac6cf..cfab5d3 100644 --- a/app/class/Controllerpage.php +++ b/app/class/Controllerpage.php @@ -174,28 +174,28 @@ class Controllerpage extends Controller if ($this->importpage() && $this->canedit()) { - $tablist = ['main' => $this->page->main(), 'css' => $this->page->css(), 'header' => $this->page->header(), 'nav' => $this->page->nav(), 'aside' => $this->page->aside(), 'footer' => $this->page->footer(), 'body' => $this->page->body(), 'javascript' => $this->page->javascript()]; + $datas['tablist'] = ['main' => $this->page->main(), 'css' => $this->page->css(), 'header' => $this->page->header(), 'nav' => $this->page->nav(), 'aside' => $this->page->aside(), 'footer' => $this->page->footer(), 'body' => $this->page->body(), 'javascript' => $this->page->javascript()]; - $faviconlist = $this->mediamanager->listfavicon(); - $idlist = $this->pagemanager->list(); + $datas['faviconlist'] = $this->mediamanager->listfavicon(); + $datas['thumbnaillist'] = $this->mediamanager->listthumbnail(); + $datas['pagelist'] = $this->pagemanager->list(); $pagelist = $this->pagemanager->getlister(); - $tagpagelist = $this->pagemanager->tagpagelist($this->page->tag('array'), $pagelist); - $lasteditedpagelist = $this->pagemanager->lasteditedpagelist(5, $pagelist); + $datas['tagpagelist'] = $this->pagemanager->tagpagelist($this->page->tag('array'), $pagelist); + $datas['lasteditedpagelist'] = $this->pagemanager->lasteditedpagelist(5, $pagelist); - $editorlist = $this->usermanager->getlisterbylevel(2, '>='); + $datas['editorlist'] = $this->usermanager->getlisterbylevel(2, '>='); if (isset($_SESSION['workspace'])) { - $showleftpanel = $_SESSION['workspace']['showleftpanel']; - $showrightpanel = $_SESSION['workspace']['showrightpanel']; + $datas['showleftpanel'] = $_SESSION['workspace']['showleftpanel']; + $datas['showrightpanel'] = $_SESSION['workspace']['showrightpanel']; } else { - $showleftpanel = false; - $showrightpanel = false; + $datas['showleftpanel'] = false; + $datas['showrightpanel'] = false; } - $fonts = []; - - $this->showtemplate('edit', ['page' => $this->page, 'pageexist' => true, 'tablist' => $tablist, 'pagelist' => $idlist, 'showleftpanel' => $showleftpanel, 'showrightpanel' => $showrightpanel, 'fonts' => $fonts, 'tagpagelist' => $tagpagelist, 'lasteditedpagelist' => $lasteditedpagelist, 'faviconlist' => $faviconlist, 'editorlist' => $editorlist, 'user' => $this->user]); + $datas = array_merge($datas, ['page' => $this->page, 'pageexist' => true, 'user' => $this->user]); + $this->showtemplate('edit', $datas); } else { $this->routedirect('pageread/', ['page' => $this->page->id()]); } @@ -337,13 +337,6 @@ class Controllerpage extends Controller $this->page->addauthor($this->user->id()); $this->page->removeeditby($this->user->id()); - // Add thumbnail image file under 1Mo - If(isset($_FILES)) { - $this->mediamanager->dircheck(Model::THUMBNAIL_DIR); - $this->mediamanager->simpleupload('thumbnail', Model::THUMBNAIL_DIR . $this->page->id(), 1024*1024, ['jpg', 'jpeg', 'JPG', 'JPEG'], true); - } - - $this->pagemanager->update($this->page); $this->routedirect('pageedit', ['page' => $this->page->id()]); diff --git a/app/class/Modelmedia.php b/app/class/Modelmedia.php index 61a2286..567e659 100644 --- a/app/class/Modelmedia.php +++ b/app/class/Modelmedia.php @@ -111,30 +111,41 @@ class Modelmedia extends Model public function listfavicon() { - $extensions = ['ico', 'png', 'jpg', 'jpeg']; - $faviconlist = []; - foreach ($extensions as $extension ) { - $glob = Model::FAVICON_DIR . '*.' . $extension; - $faviconlist = array_merge($faviconlist, glob($glob)); - } - $faviconlist = array_map(function ($input){ - return basename($input); - }, $faviconlist); + $faviconlist = $this->globlist(self::FAVICON_DIR, ['ico', 'png', 'jpg', 'jpeg', 'gif']); + return $faviconlist; + } + + public function listthumbnail() + { + $faviconlist = $this->globlist(self::THUMBNAIL_DIR, ['ico', 'png', 'jpg', 'jpeg', 'gif']); return $faviconlist; } public function listinterfacecss() { - $glob = Model::CSS_DIR . '*.css'; - $listinterfacecss = glob($glob); - $listinterfacecss = array_map(function ($input) { - return basename($input); - }, $listinterfacecss); - $listinterfacecss = array_diff($listinterfacecss, ['edit.css', 'home.css']); + $listinterfacecss = $this->globlist(self::CSS_DIR, ['css']); + $listinterfacecss = array_diff($listinterfacecss, ['edit.css', 'home.css', 'tagcolors.css']); return $listinterfacecss; } + public function globlist (string $dir = '', array $extensions = []) : array + { + $list = []; + if(empty($extensions)) { + $glob = $dir . '*.'; + } else { + foreach ($extensions as $extension ) { + $glob = $dir . '*.' . $extension; + $list = array_merge($list, glob($glob)); + } + } + $list = array_map(function ($input){ + return basename($input); + }, $list); + return $list; + } + /** * Generate an reccursive array where each folder is a array and containing a filecount in each folder diff --git a/app/class/Modelrender.php b/app/class/Modelrender.php index 5a86d0b..b544d21 100644 --- a/app/class/Modelrender.php +++ b/app/class/Modelrender.php @@ -8,7 +8,7 @@ use Michelf\MarkdownExtra; class Modelrender extends Modelpage { protected $router; - /** @var page2 */ + /** @var Page */ protected $page; protected $pagelist; protected $linkfrom = []; @@ -249,8 +249,10 @@ class Modelrender extends Modelpage $head .= '' . PHP_EOL; $head .= '' . PHP_EOL; - if($this->page->thumbnailexist()) { - $head .= '' . PHP_EOL; + if(!empty($this->page->thumbnail())) { + $head .= '' . PHP_EOL; + } elseif(!empty(Config::defaultthumbnail())) { + $head .= '' . PHP_EOL; } $head .= '' . PHP_EOL; diff --git a/app/class/Page.php b/app/class/Page.php index fff98dc..8adf418 100644 --- a/app/class/Page.php +++ b/app/class/Page.php @@ -35,6 +35,7 @@ class Page extends Dbitem protected $templatejavascript; protected $templateoptions; protected $favicon; + protected $thumbnail; protected $authors; protected $invites; protected $readers; @@ -93,6 +94,7 @@ class Page extends Dbitem $this->settemplatejavascript(''); $this->settemplateoptions(['externalcss', 'externaljavascript', 'favicon', 'thumbnail', 'reccursivecss']); $this->setfavicon(''); + $this->setthumbnail(''); $this->setauthors([]); $this->setinvites([]); $this->setreaders([]); @@ -112,22 +114,6 @@ class Page extends Dbitem return ['pagevarlist' => $classvarlist]; } - /** - * Check if page have a thumbnail - * @return bool true if the page have a thumbnail otherwise return false. - */ - public function thumbnailexist() : bool - { - $thumbnaillink = Model::THUMBNAIL_DIR . $this->id . '.jpg'; - - $test = file_exists($thumbnaillink); - - $exist = file_exists(Model::THUMBNAIL_DIR . $this->id . '.jpg'); - - return $exist; - } - - // _____________________________________________________ G E T ____________________________________________________ public function id($type = 'string') @@ -382,6 +368,11 @@ class Page extends Dbitem return $this->favicon; } + public function thumbnail($type = 'string') + { + return $this->thumbnail; + } + public function authors($type = 'array') { if($type == 'string') { @@ -681,6 +672,13 @@ class Page extends Dbitem } } + public function setthumbnail($thumbnail) + { + if (is_string($thumbnail)) { + $this->thumbnail = $thumbnail; + } + } + public function setauthors($authors) { if(is_array($authors)) { -- cgit v1.2.3 From 27f1fb9c19fa2c2fd28863809ccc6ba526499c0d Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 30 Jan 2020 03:32:31 +0100 Subject: thumbnail can be changed in multi edit --- app/class/Controllerhome.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/class') diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index d102930..02d6c9d 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -36,7 +36,7 @@ class Controllerhome extends Controllerpage $columns = $this->modelhome->setcolumns($this->user->columns()); - $vars = ['user' => $this->user, 'table2' => $table2, 'opt' => $this->opt, 'columns' => $columns, 'faviconlist' => $this->mediamanager->listfavicon(), 'editorlist' => $this->usermanager->getlisterbylevel(2, '>='), 'colors' => $colors]; + $vars = ['user' => $this->user, 'table2' => $table2, 'opt' => $this->opt, 'columns' => $columns, 'faviconlist' => $this->mediamanager->listfavicon(), 'thumbnaillist' => $this->mediamanager->listthumbnail(), 'editorlist' => $this->usermanager->getlisterbylevel(2, '>='), 'colors' => $colors]; $vars['footer'] = ['version' => getversion(), 'total' => count($table), 'database' => Config::pagetable()]; if (isset($_POST['query']) && $this->user->iseditor()) { -- cgit v1.2.3 From f3bc327be7be8a1aeeb49c7f46c86628e5d52e77 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 30 Jan 2020 04:13:14 +0100 Subject: multi edit can unset templates thumbnail favicon --- app/class/Controllerhome.php | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app/class') diff --git a/app/class/Controllerhome.php b/app/class/Controllerhome.php index 02d6c9d..c7d1792 100644 --- a/app/class/Controllerhome.php +++ b/app/class/Controllerhome.php @@ -166,6 +166,13 @@ class Controllerhome extends Controllerpage $datas = array_filter($datas, function ($var) { return $var !== ""; }); + $datas = array_map(function ($value) { + if($value === "!") { + return ""; + } else { + return $value; + } + }, $datas); $reset = $_POST['reset'] ?? []; $addtag = $_POST['addtag'] ?? ''; $addauthor = $_POST['addauthor'] ?? ''; -- cgit v1.2.3 From 1aa2b136656e42d8523d31f79e9cc1321c1dbba9 Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 6 Feb 2020 13:31:03 +0100 Subject: BREACKING CHANGE : MOVE PAGES DB --- app/class/Controllerpage.php | 2 +- app/class/Model.php | 1 + app/class/Modeldb.php | 4 ++-- app/class/Modelpage.php | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) (limited to 'app/class') diff --git a/app/class/Controllerpage.php b/app/class/Controllerpage.php index cfab5d3..b214eea 100644 --- a/app/class/Controllerpage.php +++ b/app/class/Controllerpage.php @@ -255,7 +255,7 @@ class Controllerpage extends Controller { if($this->user->isadmin()) { - $file = Model::DATABASE_DIR . Config::pagetable() . DIRECTORY_SEPARATOR . $id . '.json'; + $file = Model::PAGES_DIR . Config::pagetable() . DIRECTORY_SEPARATOR . $id . '.json'; if (file_exists($file)) { header('Content-Description: File Transfer'); diff --git a/app/class/Model.php b/app/class/Model.php index 9c0d500..67f50c9 100644 --- a/app/class/Model.php +++ b/app/class/Model.php @@ -19,6 +19,7 @@ abstract class Model const HTML_RENDER_DIR = 'render' . DIRECTORY_SEPARATOR; const GLOBAL_DIR = 'assets'. DIRECTORY_SEPARATOR . 'global' . DIRECTORY_SEPARATOR; const DATABASE_DIR = '.' . DIRECTORY_SEPARATOR . 'database' . DIRECTORY_SEPARATOR; + const PAGES_DIR = self::DATABASE_DIR . 'pages' . DIRECTORY_SEPARATOR; const MEDIA_EXT = [ 'jpg' => 'image', diff --git a/app/class/Modeldb.php b/app/class/Modeldb.php index 32e12cb..92f0d22 100644 --- a/app/class/Modeldb.php +++ b/app/class/Modeldb.php @@ -20,9 +20,9 @@ class Modeldb extends Model } - public function dbinit() + public function dbinit($dir = Model::DATABASE_DIR) { - $this->database = new Flywheel\Config(Model::DATABASE_DIR, [ + $this->database = new Flywheel\Config($dir , [ 'query_class' => Query::class, 'formatter' => new JSON, ]); diff --git a/app/class/Modelpage.php b/app/class/Modelpage.php index 1cc6b27..7a0facc 100644 --- a/app/class/Modelpage.php +++ b/app/class/Modelpage.php @@ -17,7 +17,7 @@ class Modelpage extends Modeldb public function __construct() { - parent::__construct(); + $this->dbinit(Model::PAGES_DIR); $this->storeinit(Config::pagetable()); if(!$this->dircheck(Model::HTML_RENDER_DIR)) { throw new Exception("Media error : Cant create /render folder"); -- cgit v1.2.3 From 9d3f97870810e739041eccad234d47308747cb1f Mon Sep 17 00:00:00 2001 From: vincent-peugnet Date: Thu, 6 Feb 2020 18:06:07 +0100 Subject: new feature : admin database manager fix #12 --- app/class/Controlleradmin.php | 45 +++++++++++++++++++++++++++++----------- app/class/Modeladmin.php | 48 +++++++++++++++++++++++++++++++++++++++++++ app/class/Modelmassedit.php | 0 app/class/Routes.php | 3 ++- 4 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 app/class/Modeladmin.php delete mode 100644 app/class/Modelmassedit.php (limited to 'app/class') diff --git a/app/class/Controlleradmin.php b/app/class/Controlleradmin.php index b7d0e31..835f158 100644 --- a/app/class/Controlleradmin.php +++ b/app/class/Controlleradmin.php @@ -7,6 +7,15 @@ class Controlleradmin extends Controller /** @var Modelmedia $mediamanager */ protected $mediamanager; + /** @var Modeladmin */ + protected $adminmanager; + + public function __construct($router) + { + parent::__construct($router); + + $this->adminmanager = new Modeladmin(); + } public function desktop() { @@ -30,6 +39,9 @@ class Controlleradmin extends Controller $datas['globalcss'] = ""; } + $datas['pagesdblist'] = $this->adminmanager->pagesdblist(); + $datas['pagesdbtree'] = $this->mediamanager->listdir(Model::PAGES_DIR); + $this->showtemplate('admin', $datas); } else { $this->routedirect('home'); @@ -38,8 +50,8 @@ class Controlleradmin extends Controller public function update() { - $this->globaldircheck(); - + MODEL::dircheck(MODEL::GLOBAL_DIR); + $globalcss = file_put_contents(Model::GLOBAL_DIR . 'global.css', $_POST['globalcss']); Config::hydrate($_POST); @@ -50,16 +62,25 @@ class Controlleradmin extends Controller } } - - public function globaldircheck() - { - if(!is_dir(Model::GLOBAL_DIR)) { - return mkdir(Model::GLOBAL_DIR); - } else { - return true; - } - } - + public function database() + { + if(!empty($_POST['action'])) { + switch ($_POST['action']) { + case 'duplicate': + if(!empty($_POST['dbsrc']) && !empty($_POST['dbtarget'])) { + $this->adminmanager->copydb($_POST['dbsrc'], $_POST['dbtarget']); + } + break; + case 'select': + if(!empty($_POST['pagetable'])) { + Config::hydrate($_POST); + Config::savejson(); + } + break; + } + } + $this->routedirect('admin'); + } } diff --git a/app/class/Modeladmin.php b/app/class/Modeladmin.php new file mode 100644 index 0000000..54c4f0c --- /dev/null +++ b/app/class/Modeladmin.php @@ -0,0 +1,48 @@ +copydb(Config::pagetable(), $name); + } + + /** + * Copy database folder to a new folder if it doeas not already exsit + * + * @param string $db name of source page database to copy + * @param string $name of the destination database + */ + public function copydb(string $db, string $name) + { + $dbdir = self::PAGES_DIR . $db; + $newdbdir = self::PAGES_DIR . idclean($name); + if(is_dir($dbdir) && !is_dir($newdbdir)) { + recurse_copy($dbdir, $newdbdir); + } + } +} + +?> \ No newline at end of file diff --git a/app/class/Modelmassedit.php b/app/class/Modelmassedit.php deleted file mode 100644 index e69de29..0000000 diff --git a/app/class/Routes.php b/app/class/Routes.php index c4571d9..277d478 100644 --- a/app/class/Routes.php +++ b/app/class/Routes.php @@ -36,8 +36,9 @@ class Routes ['GET', '/!font', 'Controllerfont#desktop', 'font'], ['GET', '/!font/render', 'Controllerfont#render', 'fontrender'], ['POST', '/!font/add', 'Controllerfont#add', 'fontadd'], - ['POST', '/!admin', 'Controlleradmin#update', 'adminupdate'], ['GET', '/!admin', 'Controlleradmin#desktop', 'admin'], + ['POST', '/!admin', 'Controlleradmin#update', 'adminupdate'], + ['POST', '/!admin/database', 'Controlleradmin#database', 'admindatabase'], ['GET', '/!user', 'Controlleruser#desktop', 'user'], ['POST', '/!user/add', 'Controlleruser#add', 'useradd'], ['POST', '/!user/update', 'Controlleruser#update', 'userupdate'], -- cgit v1.2.3