aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/class/Config.php13
-rw-r--r--app/class/Controlleradmin.php65
-rw-r--r--app/class/Controllerhome.php9
-rw-r--r--app/class/Controllerpage.php35
-rw-r--r--app/class/Model.php1
-rw-r--r--app/class/Modeladmin.php48
-rw-r--r--app/class/Modeldb.php4
-rw-r--r--app/class/Modelmassedit.php0
-rw-r--r--app/class/Modelmedia.php41
-rw-r--r--app/class/Modelpage.php2
-rw-r--r--app/class/Modelrender.php8
-rw-r--r--app/class/Page.php56
-rw-r--r--app/class/Routes.php3
-rw-r--r--app/fn/fn.php57
-rw-r--r--app/view/templates/admin.php402
-rw-r--r--app/view/templates/backtopbar.php9
-rw-r--r--app/view/templates/edit.php2
-rw-r--r--app/view/templates/editleftbar.php65
-rw-r--r--app/view/templates/edittopbar.php2
-rw-r--r--app/view/templates/home.php2
-rw-r--r--app/view/templates/homemenu.php31
21 files changed, 505 insertions, 350 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('&nbsp;&nbsp;', $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('&nbsp;&nbsp;', $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>';