diff options
author | vincent-peugnet <v.peugnet@free.fr> | 2020-02-06 18:07:53 +0100 |
---|---|---|
committer | vincent-peugnet <v.peugnet@free.fr> | 2020-02-06 18:07:53 +0100 |
commit | 08a26d4d6fbd45cdc136b60d0fb30f53ac4fd2f7 (patch) | |
tree | 209ac84720836e39c6c96f131b5049e7ad6096b2 | |
parent | de939de88e1ed166d827616e3d17a22fe549202a (diff) | |
parent | 9d3f97870810e739041eccad234d47308747cb1f (diff) | |
download | wcms-08a26d4d6fbd45cdc136b60d0fb30f53ac4fd2f7.tar.gz wcms-08a26d4d6fbd45cdc136b60d0fb30f53ac4fd2f7.zip |
Merge branch 'better-admin'
-rw-r--r-- | app/class/Config.php | 13 | ||||
-rw-r--r-- | app/class/Controlleradmin.php | 65 | ||||
-rw-r--r-- | app/class/Controllerhome.php | 9 | ||||
-rw-r--r-- | app/class/Controllerpage.php | 35 | ||||
-rw-r--r-- | app/class/Model.php | 1 | ||||
-rw-r--r-- | app/class/Modeladmin.php | 48 | ||||
-rw-r--r-- | app/class/Modeldb.php | 4 | ||||
-rw-r--r-- | app/class/Modelmassedit.php | 0 | ||||
-rw-r--r-- | app/class/Modelmedia.php | 41 | ||||
-rw-r--r-- | app/class/Modelpage.php | 2 | ||||
-rw-r--r-- | app/class/Modelrender.php | 8 | ||||
-rw-r--r-- | app/class/Page.php | 56 | ||||
-rw-r--r-- | app/class/Routes.php | 3 | ||||
-rw-r--r-- | app/fn/fn.php | 57 | ||||
-rw-r--r-- | app/view/templates/admin.php | 402 | ||||
-rw-r--r-- | app/view/templates/backtopbar.php | 9 | ||||
-rw-r--r-- | app/view/templates/edit.php | 2 | ||||
-rw-r--r-- | app/view/templates/editleftbar.php | 65 | ||||
-rw-r--r-- | app/view/templates/edittopbar.php | 2 | ||||
-rw-r--r-- | app/view/templates/home.php | 2 | ||||
-rw-r--r-- | app/view/templates/homemenu.php | 31 | ||||
-rw-r--r-- | assets/css/edit.css | 2 | ||||
-rw-r--r-- | assets/css/home.css | 6 | ||||
-rw-r--r-- | assets/css/tagcolors.css | 17 |
24 files changed, 529 insertions, 351 deletions
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/Controlleradmin.php b/app/class/Controlleradmin.php index 3935bff..835f158 100644 --- a/app/class/Controlleradmin.php +++ b/app/class/Controlleradmin.php @@ -7,30 +7,42 @@ 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() { 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); + $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/Controllerhome.php b/app/class/Controllerhome.php index d102930..c7d1792 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()) { @@ -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'] ?? ''; diff --git a/app/class/Controllerpage.php b/app/class/Controllerpage.php index 75ac6cf..b214eea 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()]); } @@ -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'); @@ -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/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/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 @@ +<?php + +namespace Wcms; + +class Modeladmin extends Model +{ + + + /** + * List all availalble pages databases + * + * @return array + */ + public function pagesdblist() : array + { + $dblist = glob(self::PAGES_DIR . '*', GLOB_ONLYDIR); + $dblist = array_map('basename', $dblist); + + return $dblist; + } + + /** + * Duplicate actual page database using new name + * + * @param string $name of the new database + */ + public function duplicate(string $name) + { + $this->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/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/Modelmassedit.php b/app/class/Modelmassedit.php deleted file mode 100644 index e69de29..0000000 --- a/app/class/Modelmassedit.php +++ /dev/null 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/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"); 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 .= '<meta property="og:title" content="' . $this->page->title() . '">' . PHP_EOL; $head .= '<meta property="og:description" content="' . $this->page->description() . '">' . PHP_EOL; - if($this->page->thumbnailexist()) { - $head .= '<meta property="og:image" content="' . Config::domain() . self::thumbnailpath() . $this->page->id() . '.jpg">' . PHP_EOL; + if(!empty($this->page->thumbnail())) { + $head .= '<meta property="og:image" content="' . Config::domain() . self::thumbnailpath() . $this->page->thumbnail() . '">' . PHP_EOL; + } elseif(!empty(Config::defaultthumbnail())) { + $head .= '<meta property="og:image" content="' . Config::domain() . self::thumbnailpath() . Config::defaultthumbnail() . '">' . PHP_EOL; } $head .= '<meta property="og:url" content="' . Config::url() . $this->page->id() . '/">' . PHP_EOL; diff --git a/app/class/Page.php b/app/class/Page.php index 4d1a789..e4692e3 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; @@ -36,6 +35,7 @@ class Page extends Dbitem protected $templatejavascript; protected $templateoptions; protected $favicon; + protected $thumbnail; protected $authors; protected $invites; protected $readers; @@ -76,7 +76,6 @@ class Page extends Dbitem $this->setdatemodif($now); $this->setdaterender($now); $this->setcss(''); - $this->setquickcss([]); $this->setjavascript(''); $this->setbody(''); $this->setheader(''); @@ -93,8 +92,9 @@ 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->setthumbnail(''); $this->setauthors([]); $this->setinvites([]); $this->setreaders([]); @@ -114,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') @@ -192,15 +176,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; @@ -329,9 +304,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'); @@ -345,7 +320,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; @@ -357,6 +332,11 @@ class Page extends Dbitem return $this->favicon; } + public function thumbnail($type = 'string') + { + return $this->thumbnail; + } + public function authors($type = 'array') { if($type == 'string') { @@ -500,15 +480,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) { @@ -665,6 +636,13 @@ class Page extends Dbitem } } + public function setthumbnail($thumbnail) + { + if (is_string($thumbnail)) { + $this->thumbnail = $thumbnail; + } + } + public function setauthors($authors) { if(is_array($authors)) { 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'], diff --git a/app/fn/fn.php b/app/fn/fn.php index 61c2312..6dfeb2c 100644 --- a/app/fn/fn.php +++ b/app/fn/fn.php @@ -210,9 +210,9 @@ function array_diff_assoc_recursive($array1, $array2) { /** - * Generate a folder tree based on reccurive array + * Generate a clickable folder tree based on reccurive array */ -function treecount(array $dir, string $dirname, int $deepness, string $path, string $currentdir, Medialist $mediaopt) +function treecount(array $dirlist, string $dirname, int $deepness, string $path, string $currentdir, Medialist $mediaopt) { if ($path . '/' === $currentdir) { $folder = '├─📂<span id="currentdir">' . $dirname . '<span>'; @@ -221,15 +221,48 @@ function treecount(array $dir, string $dirname, int $deepness, string $path, str } echo '<tr>'; echo '<td><a href="' . $mediaopt->getpathadress($path) . '">' . str_repeat(' ', $deepness) . $folder . '</a></td>'; - echo '<td>' . $dir['dirfilecount'] . '</td>'; + echo '<td>' . $dirlist['dirfilecount'] . '</td>'; echo '</tr>'; - foreach ($dir as $key => $value) { + foreach ($dirlist as $key => $value) { if (is_array($value)) { treecount($value, $key, $deepness + 1, $path . DIRECTORY_SEPARATOR . $key, $currentdir, $mediaopt); } } } + +/** + * Generate a clickable folder tree based on reccurive array + */ +function basictree(array $dirlist, string $dirname, int $deepness, string $path, string $currentdir) +{ + + if ($path === $currentdir) { + $folder = '├─📂<span id="currentdir">' . $dirname . '<span>'; + $checked = 'checked'; + } else { + $folder = '├─📁' . $dirname; + $checked = ''; + } + + if($deepness === 1) { + $radio = '<input type="radio" name="pagetable" value="' . $dirname . '" id="db_' . $path . '" ' . $checked . '>'; + } else { + $radio = ''; + } + + echo '<tr>'; + echo '<td>' . $radio . '</td>'; + echo '<td><label for="db_' . $path . '">' . str_repeat(' ', $deepness) . $folder . '</label></td>'; + echo '<td>' . $dirlist['dirfilecount'] . '</td>'; + echo '</tr>'; + foreach ($dirlist as $key => $value) { + if (is_array($value)) { + basictree($value, $key, $deepness + 1, $path . DIRECTORY_SEPARATOR . $key, $currentdir); + } + } +} + function checkboxes(string $name, array $optionlist = [], array $checkedlist = []) { $checkboxes = ''; @@ -245,6 +278,22 @@ function checkboxes(string $name, array $optionlist = [], array $checkedlist = [ } +function recurse_copy($src,$dst) { + $dir = opendir($src); + mkdir($dst); + while(false !== ( $file = readdir($dir)) ) { + if (( $file != '.' ) && ( $file != '..' )) { + if ( is_dir($src . '/' . $file) ) { + recurse_copy($src . '/' . $file,$dst . '/' . $file); + } + else { + copy($src . '/' . $file,$dst . '/' . $file); + } + } + } + closedir($dir); +} + diff --git a/app/view/templates/admin.php b/app/view/templates/admin.php index f7d25b3..0c9f5af 100644 --- a/app/view/templates/admin.php +++ b/app/view/templates/admin.php @@ -10,290 +10,306 @@ <main class="admin"> - <section> + <nav class="admin"> <div class="block"> - <h1>Administration</h1> - - <div class="scroll"> - - <form action="<?= $this->url('adminupdate') ?>" method="post"> - - - <article> - - - <input type="submit" value="Update configuration"> - </article> - - <article> - - <h2>Home page</h2> - - <p>Here you can set the home-page view for visitors.</p> - - <div class="radio"> - <input type="radio" name="homepage" value="default" id="default" <?= Wcms\Config::homepage() === 'default' ? 'checked' : '' ?>> - <label for="default">default</label> - </div> - - <div class="radio"> - <input type="radio" name="homepage" value="search" id="searchbar" <?= Wcms\Config::homepage() === 'search' ? 'checked' : '' ?>> - <label for="searchbar">search bar</label> - </div> - - <div class="radio"> - <input type="radio" name="homepage" value="redirect" id="redirect" <?= Wcms\Config::homepage() === 'redirect' ? 'checked' : '' ?>> - <label for="redirect">redirect to page</label> - </div> - - <select name="homeredirect" id="homeredirect"> - <option value="" <?= Wcms\Config::homeredirect() === null ? 'selected' : '' ?>>--select page to redirect--</option> - - <?php - foreach ($pagelist as $page) { - ?> - <option value="<?= $page ?>" <?= Wcms\Config::homeredirect() === $page ? 'selected' : '' ?>><?= $page ?></option> - <?php - } + <div class="scroll"> + <ul> + <li><a href="#home-page">Home page</a></li> + <li><a href="#page-creation">Page creation</a></li> + <li><a href="#alert-pages">Alert Pages</a></li> + <li><a href="#render">Render</a></li> + <li><a href="#css">CSS</a></li> + <li><a href="#interface">Interface</a></li> + <li><a href="#tracking">Tracking</a></li> + </ul> + + <form action="<?= $this->url('adminupdate') ?>" method="post" id="admin"> + <input type="submit" value="Update configuration"> + </form> + </div> + </div> + </nav> - ?> - </select> + <section class="admin"> - </article> + <div class="block"> - <article> + <h1>configuration</h1> - <h2>Page creation</h2> + <div class="scroll"> - <p>What really happend when you create a new page</p> - <label for="defaultprivacy">Default privacy</label> - <select name="defaultprivacy" id="defaultprivacy"> - <option value="0" <?= Wcms\Config::defaultprivacy() == 0 ? 'selected' : '' ?>>public</option> - <option value="1" <?= Wcms\Config::defaultprivacy() == 1 ? 'selected' : '' ?>>private</option> - <option value="2" <?= Wcms\Config::defaultprivacy() == 2 ? 'selected' : '' ?>>not published</option> - </select> + <h2 id="home-page">Home page</h2> + <p>Here you can set the home-page view for visitors.</p> + <div class="radio"> + <input type="radio" name="homepage" value="default" id="default" <?= Wcms\Config::homepage() === 'default' ? 'checked' : '' ?> form="admin"> + <label for="default">default</label> + </div> + <div class="radio"> + <input type="radio" name="homepage" value="redirect" id="redirect" <?= Wcms\Config::homepage() === 'redirect' ? 'checked' : '' ?> form="admin"> + <label for="redirect">redirect to page</label> + </div> + <select name="homeredirect" id="homeredirect" form="admin"> + <option value="" <?= Wcms\Config::homeredirect() === null ? 'selected' : '' ?>>--select page to redirect--</option> - <label for="defaultpage">Or, create new page BODY based on an already existing one</label> - <select name="defaultpage" id="defaultpage"> - <option value="" <?= Wcms\Config::defaultpage() === '' || !$defaultpageexist ? 'selected' : '' ?>>--use default BODY element--</option> - <?php - foreach ($pagelist as $page) { - ?> - <option value="<?= $page ?>" <?= Wcms\Config::defaultpage() === $page ? 'selected' : '' ?>><?= $page ?></option> - <?php } - ?> - </select> + <?php + foreach ($pagelist as $page) { + ?> + <option value="<?= $page ?>" <?= Wcms\Config::homeredirect() === $page ? 'selected' : '' ?>><?= $page ?></option> + <?php + } - <?php - if (empty(!$defaultpageexist || Wcms\Config::defaultpage())) { - ?> - <label for="defaultbody">Edit default BODY element</label> - <textarea name="defaultbody" id="defaultbody" cols="30" rows="10"><?= Wcms\Config::defaultbody() ?></textarea> - <?php - } - ?> - </article> + ?> + </select> - <article> + <h2 id="page-creation">Page creation</h2> + <p>What really happend when you create a new page</p> - <h2>Alert pages</h2> + <label for="defaultprivacy">Default privacy</label> + <select name="defaultprivacy" id="defaultprivacy" form="admin"> + <option value="0" <?= Wcms\Config::defaultprivacy() == 0 ? 'selected' : '' ?>>public</option> + <option value="1" <?= Wcms\Config::defaultprivacy() == 1 ? 'selected' : '' ?>>private</option> + <option value="2" <?= Wcms\Config::defaultprivacy() == 2 ? 'selected' : '' ?>>not published</option> + </select> - <h4>Common options</h4> - <label for="alerttitle">H1 Title</label> - <input type="text" name="alerttitle" id="alerttitle" value="<?= Wcms\Config::alerttitle() ?>"> - <label for="alertlink">Link to this page (for visitors)</label> - <select name="alertlink" id="alertlink"> - <option value="" <?= empty(Wcms\Config::alertlink()) ? 'selected' : '' ?>>--No link--</option> - <?php - foreach ($pagelist as $page) { - ?> - <option value="<?= $page ?>" <?= Wcms\Config::alertlink() === $page ? 'selected' : '' ?>><?= $page ?></option> - <?php } - ?> - </select> + <label for="defaultpage">Or, create new page BODY based on an already existing one</label> + <select name="defaultpage" id="defaultpage" form="admin"> + <option value="" <?= Wcms\Config::defaultpage() === '' || !$defaultpageexist ? 'selected' : '' ?>>--use default BODY element--</option> + <?php + foreach ($pagelist as $page) { + ?> + <option value="<?= $page ?>" <?= Wcms\Config::defaultpage() === $page ? 'selected' : '' ?>><?= $page ?></option> + <?php } + ?> + </select> - <label for="alertlinktext">Link text</label> - <input type="text" name="alertlinktext" id="alertlinktext" value="<?= Wcms\Config::alertlinktext() ?>"> + <?php + if (empty(!$defaultpageexist || Wcms\Config::defaultpage())) { + ?> + <label for="defaultbody">Edit default BODY element</label> + <textarea name="defaultbody" id="defaultbody" cols="30" rows="10" form="admin"><?= Wcms\Config::defaultbody() ?></textarea> + <?php + } + ?> + <h2 id="alert-pages">Alert pages</h2> - <h4>Un-existing</h4> + <p>Set the style and text to show when a page does not exist, or when a visitor don't have access to it.</p> - <label for="existnot">Text to show when a page does not exist yet.</label> - <i>This will also be shown as a tooltip over links.</i> - <input type="text" name="existnot" id="existnot" value="<?= Wcms\Config::existnot() ?>"> + <h4>Common options</h4> - <div class="checkbox"> - <input type="hidden" name="existnotpass" value="0"> - <input type="checkbox" name="existnotpass" id="existnotpass" value="1" <?= Wcms\Config::existnotpass() ? 'checked' : '' ?>> - <label for="existnotpass">Ask for password</label> - </div> + <label for="alerttitle">H1 Title</label> + <input type="text" name="alerttitle" id="alerttitle" value="<?= Wcms\Config::alerttitle() ?>" form="admin"> - <h4>Private</h4> - <label for="private">Text to show when a page is private.</label> - <input type="text" name="private" id="private" value="<?= Wcms\Config::private() ?>"> + <label for="alertlink">Link to this page (for visitors)</label> + <select name="alertlink" id="alertlink" form="admin"> + <option value="" <?= empty(Wcms\Config::alertlink()) ? 'selected' : '' ?>>--No link--</option> + <?php + foreach ($pagelist as $page) { + ?> + <option value="<?= $page ?>" <?= Wcms\Config::alertlink() === $page ? 'selected' : '' ?>><?= $page ?></option> + <?php } + ?> + </select> - <div class="checkbox"> - <input type="hidden" name="privatepass" value="0"> - <input type="checkbox" name="privatepass" id="privatepass" value="1" <?= Wcms\Config::privatepass() ? 'checked' : '' ?>> - <label for="privatepass">Ask for password</label> - </div> - <h4>Not published</h4> + <label for="alertlinktext">Link text</label> + <input type="text" name="alertlinktext" id="alertlinktext" value="<?= Wcms\Config::alertlinktext() ?>" form="admin"> - <label for="notpublished">Text to show when a page is not published.</label> - <input type="text" name="notpublished" id="notpublished" value="<?= Wcms\Config::notpublished() ?>"> - <div class="checkbox"> - <input type="hidden" name="notpublishedpass" value="0"> - <input type="checkbox" name="notpublishedpass" id="notpublishedpass" value="1" <?= Wcms\Config::notpublishedpass() ? 'checked' : '' ?>> - <label for="notpublishedpass">Ask for password</label> - </div> - <h4>CSS</h4> + <h4>Un-existing</h4> - <div class="checkbox"> - <input type="hidden" name="alertcss" value="0"> - <input type="checkbox" name="alertcss" id="alertcss" value="1" <?= Wcms\Config::alertcss() ? 'checked' : '' ?>> - <label for="alertcss">Use global.css for those page as well</label> - </div> + <label for="existnot">Text to show when a page does not exist yet.</label> + <i>This will also be shown as a tooltip over links.</i> + <input type="text" name="existnot" id="existnot" value="<?= Wcms\Config::existnot() ?>" form="admin"> - <p> - <i>You can use <code>body.alert</code> class to specify style.</i> - </p> + <div class="checkbox"> + <input type="hidden" name="existnotpass" value="0" form="admin"> + <input type="checkbox" name="existnotpass" id="existnotpass" value="1" <?= Wcms\Config::existnotpass() ? 'checked' : '' ?> form="admin"> + <label for="existnotpass">Ask for password</label> + </div> - </article> - - - <article> - + <h4>Private</h4> - <h2>Render</h2> + <label for="private">Text to show when a page is private.</label> + <input type="text" name="private" id="private" value="<?= Wcms\Config::private() ?>" form="admin"> - <div class="checkbox"> - <input type="hidden" name="reccursiverender" value="0"> - <input type="checkbox" name="reccursiverender" id="reccursiverender" value="1" <?= Wcms\Config::reccursiverender() ? 'checked' : '' ?>> - <label for="reccursiverender">Reccursive render</label> - </div> + <div class="checkbox"> + <input type="hidden" name="privatepass" value="0" form="admin"> + <input type="checkbox" name="privatepass" id="privatepass" value="1" <?= Wcms\Config::privatepass() ? 'checked' : '' ?> form="admin"> + <label for="privatepass">Ask for password</label> + </div> + <h4>Not published</h4> - <h4>Links</h4> + <label for="notpublished">Text to show when a page is not published.</label> + <input type="text" name="notpublished" id="notpublished" value="<?= Wcms\Config::notpublished() ?>" form="admin"> - <div class="checkbox"> - <input type="hidden" name="externallinkblank" value="0"> - <input type="checkbox" name="externallinkblank" id="externallinkblank" value="1" <?= Wcms\Config::externallinkblank() ? 'checked' : '' ?>> - <label for="externallinkblank">Open external links in new tab</label> - </div> + <div class="checkbox"> + <input type="hidden" name="notpublishedpass" value="0" form="admin"> + <input type="checkbox" name="notpublishedpass" id="notpublishedpass" value="1" <?= Wcms\Config::notpublishedpass() ? 'checked' : '' ?> form="admin"> + <label for="notpublishedpass">Ask for password</label> + </div> - <div class="checkbox"> - <input type="hidden" name="internallinkblank" value="0"> - <input type="checkbox" name="internallinkblank" id="internallinkblank" value="1" <?= Wcms\Config::internallinkblank() ? 'checked' : '' ?>> - <label for="internallinkblank">Open internal links in new tab</label> - </div> + <h4>CSS</h4> - <i>(This modifications need re-rendering)</i> + <div class="checkbox"> + <input type="hidden" name="alertcss" value="0" form="admin"> + <input type="checkbox" name="alertcss" id="alertcss" value="1" <?= Wcms\Config::alertcss() ? 'checked' : '' ?> form="admin"> + <label for="alertcss">Use global.css for those page as well</label> + </div> + <p> + <i>You can use <code>body.alert</code> class to specify style.</i> + </p> - </article> + <h2 id="render">Render</h2> + <div class="checkbox"> + <input type="hidden" name="reccursiverender" value="0" form="admin"> + <input type="checkbox" name="reccursiverender" id="reccursiverender" value="1" <?= Wcms\Config::reccursiverender() ? 'checked' : '' ?> form="admin"> + <label for="reccursiverender">Reccursive render</label> + </div> - <article> + <h4>Links</h4> - <h2>CSS</h2> + <div class="checkbox"> + <input type="hidden" name="externallinkblank" value="0" form="admin"> + <input type="checkbox" name="externallinkblank" id="externallinkblank" value="1" <?= Wcms\Config::externallinkblank() ? 'checked' : '' ?> form="admin"> + <label for="externallinkblank">Open external links in new tab</label> + </div> - <label for="globalcss">Edit global css that will apply to every pages</label> - <textarea name="globalcss" id="globalcss" cols="30" rows="10"><?= $globalcss ?></textarea> + <div class="checkbox"> + <input type="hidden" name="internallinkblank" value="0" form="admin"> + <input type="checkbox" name="internallinkblank" id="internallinkblank" value="1" <?= Wcms\Config::internallinkblank() ? 'checked' : '' ?> form="admin"> + <label for="internallinkblank">Open internal links in new tab</label> + </div> - <label for="defaultfavicon">Default favicon</label> - <select name="defaultfavicon" id="defaultfavicon"> - <option value="">--no favicon--</option> - <?php - foreach ($faviconlist as $favicon) { - ?> - <option value="<?= $favicon ?>" <?= Wcms\Config::defaultfavicon() === $favicon ? 'selected' : '' ?>><?= $favicon ?></option> - <?php - } - ?> - </select> + <i>(This modifications need re-rendering)</i> - </article> + <h2 id="css">CSS</h2> + <label for="globalcss">Edit global css that will apply to every pages</label> + <textarea name="globalcss" id="globalcss" cols="30" rows="30" form="admin"><?= $globalcss ?></textarea> + <label for="defaultfavicon">Default favicon</label> + <select name="defaultfavicon" id="defaultfavicon" form="admin"> + <option value="">--no favicon--</option> + <?php + foreach ($faviconlist as $favicon) { + ?> + <option value="<?= $favicon ?>" <?= Wcms\Config::defaultfavicon() === $favicon ? 'selected' : '' ?>><?= $favicon ?></option> + <?php + } + ?> + </select> + <label for="defaultthumbnail">Default thumbnail</label> + <select name="defaultthumbnail" id="defaultthumbnail" form="admin"> + <option value="">--no thumbnail--</option> + <?php + foreach ($thumbnaillist as $thumbnail) { + ?> + <option value="<?= $thumbnail ?>" <?= Wcms\Config::defaultthumbnail() === $thumbnail ? 'selected' : '' ?>><?= $thumbnail ?></option> + <?php } ?> + </select> + <h2 id="interface">Interface</h2> - <article> + <p>Set interface Style</p> - <h2>Interface</h2> + <select name="interfacecss" id="interfacecss" form="admin"> + <option value="null">--default interface style---</option> + <?php + foreach ($interfacecsslist as $interfacecss) { + ?> + <option value="<?= $interfacecss ?>" <?= $interfacecss === Wcms\Config::interfacecss() ? 'selected' : '' ?>><?= $interfacecss ?></option> + <?php + } + ?> + </select> - <p>Set interface Style</p> - <select name="interfacecss" id="interfacecss"> - <option value="null">--default interface style---</option> - <?php - foreach ($interfacecsslist as $interfacecss) { - ?> - <option value="<?= $interfacecss ?>" <?= $interfacecss === Wcms\Config::interfacecss() ? 'selected' : '' ?>><?= $interfacecss ?></option> - <?php - } - ?> - </select> + <h2 id="tracking">Tracking</h2> - </article> + <label for="analytics">Google analytics Tracking ID</label> + <input type="text" name="analytics" id="analytics" value="<?= Wcms\Config::analytics() ?>" form="admin"> + <i>(Need rendering to work)</i> + </div> - <article> + </div> - <h2>Tracking</h2> - <label for="analytics">Google analytics Tracking ID</label> - <input type="text" name="analytics" id="analytics" value="<?= Wcms\Config::analytics() ?>"> + </section> - <i>(Need rendering to work)</i> + <section id="databases"> + <div class="block"> + <h1>Databases</h1> + <div class="scroll"> - </article> + <form action="<?= $this->url('admindatabase') ?>" method="post"> + + <table id="dirlsit"> + <tr><th>using</th><th>databases</th><th>pages</th></tr> + + <?php basictree($pagesdbtree, 'pages', 0, '', DIRECTORY_SEPARATOR . Wcms\Config::pagetable()); ?> + </table> + <input type="hidden" name="action" value="select"> + <input type="submit" value="select" name="change database"> + </form> + <h4>Duplicate Database</h4> - <article> - <input type="submit" value="Update configuration"> - </article> + <form action="<?= $this->url('admindatabase') ?>" method="post"> + <label for="dbsrc">Database to duplicate</label> + <select name="dbsrc" id="dbsrc"> + <?php + foreach ($pagesdblist as $db) { + ?> + <option value="<?= $db ?>" <?= $db === Wcms\Config::pagetable() ? 'selected' : '' ?>><?= $db ?></option> + <?php + } + ?> + </select> + <label for="duplicate">New name</label> + <input type="text" name="dbtarget" id="duplicate" value="" required> + <input type="submit" name="action" value="duplicate"> + </form> - </form> </div> - </div> - - </section> </main> diff --git a/app/view/templates/backtopbar.php b/app/view/templates/backtopbar.php index c632d66..c1dd361 100644 --- a/app/view/templates/backtopbar.php +++ b/app/view/templates/backtopbar.php @@ -30,10 +30,6 @@ <img src="<?= Wcms\Model::iconpath() ?>media.png" alt="" class="icon"> <span class="hidephone">media</span> </a> -<a href="<?= $this->url('font') ?>" <?= $tab == 'font' ? 'class="actualpage"' : '' ?>> - <img src="<?= Wcms\Model::iconpath() ?>font.png" alt="" class="icon"> - <span class="hidephone">font</span> -</a> <?php if($user->isadmin()) { ?> @@ -74,10 +70,7 @@ if($user->isadmin()) { <?php } else { ?> <span> -<a href="<?= $this->url('timeline') ?>" <?= $tab == 'timeline' ? 'class="actualpage"' : '' ?>> - <img src="<?= Wcms\Model::iconpath() ?>timeline.png" alt="" class="icon"> - <span class="hidephone">timeline</span> -</a> + <a href="<?= $this->url('user') ?>" <?= $tab == 'user' ? 'class="actualpage"' : '' ?>> <img src="<?= Wcms\Model::iconpath() ?>user.png" alt="" class="icon"> <span class="hidephone"><?= $user->id() ?></span> diff --git a/app/view/templates/edit.php b/app/view/templates/edit.php index d0125f2..a27171a 100644 --- a/app/view/templates/edit.php +++ b/app/view/templates/edit.php @@ -17,7 +17,7 @@ <div id="workspace"> - <?php $this->insert('editleftbar', ['page' => $page, 'tablist' => $tablist, 'pagelist' => $pagelist, 'showleftpanel' => $showleftpanel, 'faviconlist' => $faviconlist]) ?> + <?php $this->insert('editleftbar', ['page' => $page, 'tablist' => $tablist, 'pagelist' => $pagelist, 'showleftpanel' => $showleftpanel, 'faviconlist' => $faviconlist, 'thumbnaillist' => $thumbnaillist]) ?> <?php $this->insert('edittabs', ['tablist' => $tablist, 'opentab' => $page->interface(), 'templates' => $page->template()]) ?> <?php $this->insert('editrightbar', ['page' => $page, 'pagelist' => $pagelist, 'showrightpanel' => $showrightpanel, 'templates' => $page->template(), 'tagpagelist' => $tagpagelist, 'lasteditedpagelist' => $lasteditedpagelist, 'editorlist' => $editorlist, 'user' => $user]) ?> diff --git a/app/view/templates/editleftbar.php b/app/view/templates/editleftbar.php index 8302090..3004351 100644 --- a/app/view/templates/editleftbar.php +++ b/app/view/templates/editleftbar.php @@ -43,11 +43,34 @@ ?> </select> - <div id="thumbnail"> - <label for="thumbnail">Thumbnail</label> - <input type="file" id="thumbnail" name="thumbnail" accept=".jpg, .JPG, .jpeg, .JPEG"> - <img src="<?= Wcms\Model::thumbnailpath() ?><?= $page->id() ?>.jpg" alt="no-thumbnail"> + + <label for="thumbnail">Thumbnail</label> + <select name="thumbnail" id="thumbnail"> + <?php + if(!empty($page->templatebody()) && $page->template()['thumbnail']) { + ?> + <option value="<?= $page->thumbnail() ?>">--using template thumbnail--</option> + <?php + } else { + if(!file_exists(Wcms\Model::thumbnailpath() . $page->thumbnail())) { + echo '<option value="">--no thumbnail--</option>'; + } + foreach ($thumbnaillist as $thumbnail) { + ?> + <option value="<?= $thumbnail ?>" <?= $page->thumbnail() === $thumbnail ? 'selected' : '' ?>><?= $thumbnail ?></option> + <?php + } + } + ?> + </select> + + <?php if(!empty($page->thumbnail())) { ?> + <div id="showthumbnail"> + <img src="<?= Wcms\Model::thumbnailpath() . $page->thumbnail() ?>"> </div> + <?php } ?> + + @@ -76,6 +99,11 @@ ?> </select> + <div class="subtemplate"> + <input type="checkbox" name="templateoptions[]" id="othumbnail" value="thumbnail" <?= in_array('thumbnail', $page->templateoptions()) ? 'checked' : '' ?>> + <label for="othumbnail">Thumbnail</label> + </div> + <label for="templatecss">CSS template</label> <select name="templatecss" id="templatecss"> @@ -88,20 +116,12 @@ } ?> </select> - - <?php - if(!empty($page->templatecss())) { - ?> <div class="subtemplate"> <input type="checkbox" name="templateoptions[]" id="oreccursivecss" value="reccursivecss" <?= in_array('reccursivecss', $page->templateoptions()) ? 'checked' : '' ?>> <label for="oreccursivecss">Reccursive template</label> </div> <div class="subtemplate"> - <input type="checkbox" name="templateoptions[]" id="oquickcss" value="quickcss" <?= in_array('quickcss', $page->templateoptions()) ? 'checked' : '' ?>> - <label for="oquickcss">Quickcss</label> - </div> - <div class="subtemplate"> <input type="checkbox" name="templateoptions[]" id="oexternalcss" value="externalcss" <?= in_array('externalcss', $page->templateoptions()) ? 'checked' : '' ?>> <label for="oexternalcss">External CSS</label> </div> @@ -109,16 +129,7 @@ <input type="checkbox" name="templateoptions[]" id="ofavicon" value="favicon" <?= in_array('favicon', $page->templateoptions()) ? 'checked' : '' ?>> <label for="ofavicon">Favicon</label> </div> - <?php - } else { - foreach($page->templateoptions() as $option) { - if($option != 'externaljavascript') { - echo '<input type="hidden" name="templateoptions[]" value="'.$option.'">'; - } - } - } - - ?> + <label for="templatejavascript">Javascript template</label> @@ -134,20 +145,12 @@ </select> - <?php - if(!empty($page->templatejavascript())) { - ?> + <div class="subtemplate"> <input type="checkbox" name="templateoptions[]" value="externaljavascript" id="oexternaljs" <?= in_array('externaljavascript', $page->templateoptions()) ? 'checked' : '' ?>> <label for="oexternaljs">external js</label> </div> - <?php } else { - if(in_array('externaljavascript', $page->templateoptions())) { - echo '<input type="hidden" name="templateoptions[]" value="externaljavascript">'; - } - - } ?> </fieldset> diff --git a/app/view/templates/edittopbar.php b/app/view/templates/edittopbar.php index 5aa13ba..2eefd0f 100644 --- a/app/view/templates/edittopbar.php +++ b/app/view/templates/edittopbar.php @@ -2,7 +2,7 @@ - <form action="<?= $this->upage('pageupdate', $page->id()) ?>" method="post" id="update" enctype="multippage/form-data"> + <form action="<?= $this->upage('pageupdate', $page->id()) ?>" method="post" id="update"> <div id="editmenu"> diff --git a/app/view/templates/home.php b/app/view/templates/home.php index 831282f..e6db85a 100644 --- a/app/view/templates/home.php +++ b/app/view/templates/home.php @@ -16,7 +16,7 @@ <?php $optlist = $optlist ?? null; - $this->insert('homemenu', ['user' => $user, 'opt' => $opt, 'optlist' => $optlist, 'pagelist' => $pagelist, 'faviconlist' => $faviconlist, 'editorlist' => $editorlist, 'colors' => $colors]); + $this->insert('homemenu', ['user' => $user, 'opt' => $opt, 'optlist' => $optlist, 'pagelist' => $pagelist, 'faviconlist' => $faviconlist, 'thumbnaillist' => $thumbnaillist, 'editorlist' => $editorlist, 'colors' => $colors]); ?> diff --git a/app/view/templates/homemenu.php b/app/view/templates/homemenu.php index 51a58e9..83d2b90 100644 --- a/app/view/templates/homemenu.php +++ b/app/view/templates/homemenu.php @@ -69,17 +69,18 @@ <strong>Privacy</strong> </br> <select name="datas[secure]" id="setlevel"> - <option value="" disabled selected>--change privacy--</option> + <option value="" selected>--keep privacy--</option> <option value="0">public</option> <option value="1">private</option> <option value="2">not_published</option> </select> <label for="setlevel">Privacy level</label> </br> - <strong>Favicon</strong> + <strong>Images</strong> </br> <select name="datas[favicon]" id="favicon"> - <option value="" disabled selected>--set favicon--</option> + <option value="" selected>--keep favicon--</option> + <option value="!" >--unset favicon--</option> <?php foreach ($faviconlist as $favicon) { echo '<option value ="' . $favicon . '">' . $favicon . '</option>'; @@ -88,10 +89,24 @@ </select> <label for="favicon">Favicon</label> </br> + + <select name="datas[thumbnail]" id="thumbnail"> + <option value="" selected>--keep thumbnail--</option> + <option value="!">--unset thumbnail--</option> + <?php + foreach ($thumbnaillist as $thumbnail) { + echo '<option value ="' . $thumbnail . '">' . $thumbnail . '</option>'; + } + ?> + </select> + <label for="thumbnail">Thumnail</label> + </br> + <strong>Templates</strong> </br> <select name="datas[templatebody]" id="templatebody"> - <option value="" disabled selected>--set template body--</option> + <option value="" selected>--keep template body--</option> + <option value="!" >--unset template body--</option> <?php foreach ($pagelist as $page) { echo '<option value ="' . $page . '">' . $page . '</option>'; @@ -100,8 +115,10 @@ </select> <label for="templatebody">Body</label> </br> + <select name="datas[templatecss]" id="templatecss"> - <option value="" disabled selected>--set css template--</option> + <option value="" selected>--keep css template--</option> + <option value="!" >--unset css template--</option> <?php foreach ($pagelist as $page) { echo '<option value ="' . $page . '">' . $page . '</option>'; @@ -109,8 +126,10 @@ ?> </select> <label for="templatecss">CSS</label> </br> + <select name="datas[templatejavascript]" id="templatejavascript"> - <option value="" disabled selected>--set javascript template--</option> + <option value="" selected>--keep javascript template--</option> + <option value="!" >--unset javascript template--</option> <?php foreach ($pagelist as $page) { echo '<option value ="' . $page . '">' . $page . '</option>'; diff --git a/assets/css/edit.css b/assets/css/edit.css index e2c1611..c7fe67b 100644 --- a/assets/css/edit.css +++ b/assets/css/edit.css @@ -365,7 +365,7 @@ a.icon { -div#thumbnail img { +div#showthumbnail img { width: 100%; height: 100%; max-height: 150px; diff --git a/assets/css/home.css b/assets/css/home.css index 2e53703..b19ea24 100644 --- a/assets/css/home.css +++ b/assets/css/home.css @@ -251,6 +251,12 @@ main.admin input, main.admin select, main.admin textarea { +main section.admin { + max-width: 400px; +} + + + div.checkbox [type="checkbox"] { display: inline-block; width: auto; diff --git a/assets/css/tagcolors.css b/assets/css/tagcolors.css new file mode 100644 index 0000000..e0b9727 --- /dev/null +++ b/assets/css/tagcolors.css @@ -0,0 +1,17 @@ + +.tag_color { background-color: #5649df; } +.tag_w { background-color: #9ff567; } +.tag_sans { background-color: #4eacbf; } +.tag_secret { background-color: #50a07e; } +.tag_fiit { background-color: #c9e952; } +.tag_salle { background-color: #3fa0c1; } +.tag_ab { background-color: #aaae52; } +.tag_template { background-color: #b1c46e; } +.tag_tttaaaaggggeee { background-color: #39b885; } +.tag_salle01 { background-color: #b7e36c; } +.tag_event { background-color: #838e9b; } +.tag_delire { background-color: #8646f3; } +.tag_phasme { background-color: #a9be35; } +.tag_animal { background-color: #9e5988; } +.tag_blague { background-color: #6aaa8d; } +.tag_festival { background-color: #c18f57; }
\ No newline at end of file |