From 2210e39aeebfc0d580b2c1907d45898df475aa6a Mon Sep 17 00:00:00 2001 From: Ro Date: Sun, 13 Mar 2022 17:46:42 -0700 Subject: [PATCH] added remaining upload types, updated templates for new file types --- brain/controller/DashControl.inc.php | 11 + brain/data/Book.inc.php | 538 ++++++++++++++------------- brain/data/Contents.inc.php | 285 +++++++------- brain/utility/DocTools.inc.php | 255 ++++++------- brain/views/dash/page-edit.twig | 23 +- brain/views/dash/partials/index.twig | 2 +- public/assets/css/dash.css | 18 +- public/assets/scripts/Start.js | 41 +- src/com/actions/PageActions.js | 9 +- src/com/ui/FileManager.js | 54 +-- src/styles/main/_posts.sass | 11 +- 11 files changed, 696 insertions(+), 551 deletions(-) diff --git a/brain/controller/DashControl.inc.php b/brain/controller/DashControl.inc.php index 00a68c5..211dad3 100644 --- a/brain/controller/DashControl.inc.php +++ b/brain/controller/DashControl.inc.php @@ -110,7 +110,10 @@ class DashControl } $imageList = explode(",", $page["feature"]); + $fileList = explode(",", $page["files"]); + $images = []; + $files = []; foreach ($imageList as $item) { $image = trim($item); if ($item != null || $item != "") { @@ -118,6 +121,13 @@ class DashControl } } + foreach ($fileList as $item) { + $file = trim($item); + if ($item != null || $item != "") { + array_push($files, $item); + } + } + $pageOptions = [ "title" => "Fipamo | Edit Page", "page" => $page, @@ -125,6 +135,7 @@ class DashControl "token" => Session::get("form_token"), "status" => Session::active(), "images" => $images, + "files"=>$files, "views" => $views, ]; break; diff --git a/brain/data/Book.inc.php b/brain/data/Book.inc.php index 9708743..6d77de4 100644 --- a/brain/data/Book.inc.php +++ b/brain/data/Book.inc.php @@ -5,286 +5,314 @@ use function _\find; class Book { - public function __construct() - { - } - - public function findPageById(string $uuid) - { - $content = $this->getContents(); - $page = find($content, ["uuid" => $uuid]); - return $page; - } - - public function findPageBySlug(string $slug = null) - { - $content = $this->getContents(); - if (isset($slug)) { - $page = find($content, ["slug" => $slug]); - } else { - $page = find($content, ["layout" => "index"]); + public function __construct() + { } - return $page; - } - - public function editPage($task, $request) - { - $content = $this->getContents(); - if ($task == "delete") { - //$parsed = json_decode(file_get_contents("php://input"), true); - //$body = find($content, ["uuid" => $parsed["id"]]); - $body = $request->getParsedBody(); - } else { - $body = $request->getParsedBody(); + public function findPageById(string $uuid) + { + $content = $this->getContents(); + $page = find($content, ["uuid" => $uuid]); + return $page; } - $page = find($content, ["uuid" => $body["uuid"]]); - $files = $request->getUploadedFiles(); - - $member = Session::get("member"); - - if ($task != "create") { - $path = - date("Y", date($page["rawCreated"])) . - "/" . - date("m", date($page["rawCreated"])); - } else { - $path = date("Y") . "/" . date("m"); - } - - if (isset($files)) { - //var_dump($files); - if ($task != "create") { - $imageList = ""; - //var_dump($files["page_files"] ); - foreach ($files["page_files"] as $file) { - $type = $file->getClientMediaType(); - switch ($type) { - case "image/jpeg": - case "image/png": - case "image/gif": - case "image/svg": - $imagesPath = "/assets/images/blog/" . $path . "/"; - $imageList = - $imageList . $imagesPath . urlencode($file->getClientFileName()). ", "; - - FileUploader::uploadFile( - "../public/assets/images/blog/" . $path . "/", - $file - ); - break; - case "video/mp4": - $videosPath = "/assets/video/blog/" . $path . "/"; - $imageList = - $imageList . $videosPath . urlencode($file->getClientFileName()) . ", "; - - FileUploader::uploadFile( - "../public/assets/video/blog/" . $path . "/", - $file - ); - break; - } + public function findPageBySlug(string $slug = null) + { + $content = $this->getContents(); + if (isset($slug)) { + $page = find($content, ["slug" => $slug]); + } else { + $page = find($content, ["layout" => "index"]); } - $feature = $imageList; - //var_dump($feature); - //return ["message" => "JUST DEBUGGING"]; - } else { - $feature = - "/assets/images/blog/" . - $path . - "/" . - $image["feature_image"]->getClientFileName(); - } - } else { - if (isset($body["feature_image"])) { - $url = explode("/", $body["feature_image"]); - $feature = - "/" . - $url[3] . - "/" . - $url[4] . - "/" . - $url[5] . - "/" . - $url[6] . - "/" . - $url[7] . - "/" . - $url[8]; - } else { - $task == "create" ? ($feature = "") : ($feature = $body["feature"]); - } + + return $page; } - if ($task == "delete") { - $deleted = "true"; - $body["menu"] = "false"; - $body["published"] = "false"; - $body["featured"] = "false"; - } else { - $deleted = isset($page["deleted"]) ? $page["deleted"] : "false"; - } + public function editPage($task, $request) + { + $content = $this->getContents(); + if ($task == "delete") { + //$parsed = json_decode(file_get_contents("php://input"), true); + //$body = find($content, ["uuid" => $parsed["id"]]); + $body = $request->getParsedBody(); + } else { + $body = $request->getParsedBody(); + } - $created = - $task != "create" + $page = find($content, ["uuid" => $body["uuid"]]); + $files = $request->getUploadedFiles(); + + $member = Session::get("member"); + + if ($task != "create") { + $path = + date("Y", date($page["rawCreated"])) . + "/" . + date("m", date($page["rawCreated"])); + } else { + $path = date("Y") . "/" . date("m"); + } + + if (isset($files)) { + //var_dump($files); + if ($task != "create") { + $imageList = ""; + $fileList = ""; + //var_dump($files["page_files"] ); + foreach ($files["page_files"] as $file) { + $type = $file->getClientMediaType(); + switch ($type) { + case "image/jpeg": + case "image/png": + case "image/gif": + case "image/svg": + $imagesPath = "/assets/images/blog/" . $path . "/"; + $imageList = + $imageList . $imagesPath . urlencode($file->getClientFileName()). ", "; + + FileUploader::uploadFile( + "../public/assets/images/blog/" . $path . "/", + $file + ); + break; + case "video/mp4": + $videosPath = "/assets/video/blog/" . $path . "/"; + $imageList = + $imageList . $videosPath . urlencode($file->getClientFileName()) . ", "; + + FileUploader::uploadFile( + "../public/assets/video/blog/" . $path . "/", + $file + ); + break; + case "audio/mpeg": + $soundPath = "/assets/sound/blog/" . $path . "/"; + $fileList = $fileList . $soundPath . urlencode($file->getClientFileName()). ", "; + + FileUploader::uploadFile( + "../public/assets/sound/blog/" . $path . "/", + $file + ); + break; + case 'application/pdf': + case 'text/plain': + case 'text/rtf': + $docPath = "/assets/docs/blog/" . $path . "/"; + $fileList = $fileList . $docPath . urlencode($file->getClientFileName()). ", "; + + FileUploader::uploadFile( + "../public/assets/docs/blog/" . $path . "/", + $file + ); + break; + } + } + $feature = $imageList; + $files = $fileList; + //var_dump($feature); + //return ["message" => "JUST DEBUGGING"]; + } else { + //if creating a new page, from file payload and set $feature and $files + /* + $feature = + "/assets/images/blog/" . + $path . + "/" . + $image["feature_image"]->getClientFileName(); + */ + } + } else { + //if no files, do no file stuff + /* + if (isset($body["feature_image"])) { + $url = explode("/", $body["feature_image"]); + $feature = + "/" . + $url[3] . + "/" . + $url[4] . + "/" . + $url[5] . + "/" . + $url[6] . + "/" . + $url[7] . + "/" . + $url[8]; + } else { + //$task == "create" ? ($feature = "") : ($feature = $body["feature"]); + } + */ + } + + if ($task == "delete") { + $deleted = "true"; + $body["menu"] = "false"; + $body["published"] = "false"; + $body["featured"] = "false"; + } else { + $deleted = isset($page["deleted"]) ? $page["deleted"] : "false"; + } + + $created = + $task != "create" ? new \Moment\Moment($page["rawCreated"]) : new \Moment\Moment(); - $updated = new \Moment\Moment(); + $updated = new \Moment\Moment(); - //grab current index from settings and update - $id = $task != "create" ? $body["id"] : Settings::getCurrentIndex(); - $uuid = $task != "create" ? $body["uuid"] : StringTools::createUUID(); - // now that variables are done, set to body object and then convert to markdown to save + //grab current index from settings and update + $id = $task != "create" ? $body["id"] : Settings::getCurrentIndex(); + $uuid = $task != "create" ? $body["uuid"] : StringTools::createUUID(); + // now that variables are done, set to body object and then convert to markdown to save - $body["id"] = $id; - $body["uuid"] = $uuid; - $body["feature"] = $feature; - $body["path"] = $path; - $body["author"] = $member["handle"]; - $body["created"] = $created->format("Y-m-d\TH:i:sP"); - $body["updated"] = $updated->format("Y-m-d\TH:i:sP"); - $body["deleted"] = $deleted; + $body["id"] = $id; + $body["uuid"] = $uuid; + $body["feature"] = $feature; + $body["files"] = $files; + $body["path"] = $path; + $body["author"] = $member["handle"]; + $body["created"] = $created->format("Y-m-d\TH:i:sP"); + $body["updated"] = $updated->format("Y-m-d\TH:i:sP"); + $body["deleted"] = $deleted; - $write = DocTools::objectToMD($body); + $write = DocTools::objectToMD($body); - // if layout is index, change path to file + // if layout is index, change path to file - if ($body["layout"] == "index") { - $writePath = "../content/pages/start/index.md"; - } else { - $writePath = "../content/pages/" . $path . "/" . $body["slug"] . ".md"; - } - - $status = DocTools::writePages($task, $path, $writePath, $write); - - if ($status) { - $config = new Settings(); - $settings = $config->getSettings(); - $message = ""; - - if ( - $settings["global"]["renderOnSave"] == "true" && - $settings["global"]["dynamicRender"] == "false" - ) { - $render = new Render(); - $render->renderTags(); - $render->renderArchive(); - $render->renderPages(); - $message = "Filed edited and rendered. NOICE."; - } else { - $message = "File edited. Nice work"; - } - - $response = [ - "message" => $message, - "type" => $task == "write" ? "postUpdated" : "postAdded", - "id" => $uuid, - ]; - - //TODO: When form submission is successful, make new form token - //Session token doesn't reset on the front end, so turning this off for now - //$form_token = md5(uniqid(microtime(), true)); - //Session::set("form_token", $form_token); - - //once saved, update menu - $body["path"] = $path; - Settings::updateMenu($body); - Settings::updateTags(); - //if new page added, update current index in Settings file - if ($task == "create") { - Settings::updateIndex(); - } - } else { - $response = [ - "message" => "Uh oh. File save problem. Don't panic", - "type" => "postError", - "id" => $uuid, - ]; - } - - return $response; - } - - public function getPages(int $page, int $limit, string $sort = null) - { - $content = $this->getContents(); - - $published = filter($content, function ($item) { - return $item["published"] == true && $item["deleted"] == false; - }); - $deleted = filter($content, function ($item) { - return $item["deleted"] == true; - }); - - //$all = $content; - $all = filter($content, function ($item) { - return $item["deleted"] == false; - }); - $filter = isset($sort) ? $sort : "all"; - switch ($filter) { - case "published": - $filtered = $published; - break; - case "deleted": - $filtered = $deleted; - break; - default: - $filtered = $all; - break; - } - $numOfPages = ceil(count($filtered) / ($limit + 1)); - $folder = []; - - if (count($filtered) != 0) { - if (count($filtered) < $limit) { - $limit = count($filtered) - 1; - } - $range = $page * $limit - $limit; - - if ($range != 0) { - $range = $range + 1; - } - for ($i = 0; $i <= $limit; $i++) { - if (isset($filtered[$i + $range])) { - array_push($folder, $filtered[$i + $range]); + if ($body["layout"] == "index") { + $writePath = "../content/pages/start/index.md"; } else { - //chill out + $writePath = "../content/pages/" . $path . "/" . $body["slug"] . ".md"; } - } + + $status = DocTools::writePages($task, $path, $writePath, $write); + + if ($status) { + $config = new Settings(); + $settings = $config->getSettings(); + $message = ""; + + if ($settings["global"]["renderOnSave"] == "true" && + $settings["global"]["dynamicRender"] == "false" + ) { + $render = new Render(); + $render->renderTags(); + $render->renderArchive(); + $render->renderPages(); + $message = "Filed edited and rendered. NOICE."; + } else { + $message = "File edited. Nice work"; + } + + $response = [ + "message" => $message, + "type" => $task == "write" ? "postUpdated" : "postAdded", + "id" => $uuid, + ]; + + //TODO: When form submission is successful, make new form token + //Session token doesn't reset on the front end, so turning this off for now + //$form_token = md5(uniqid(microtime(), true)); + //Session::set("form_token", $form_token); + + //once saved, update menu + $body["path"] = $path; + Settings::updateMenu($body); + Settings::updateTags(); + //if new page added, update current index in Settings file + if ($task == "create") { + Settings::updateIndex(); + } + } else { + $response = [ + "message" => "Uh oh. File save problem. Don't panic", + "type" => "postError", + "id" => $uuid, + ]; + } + + return $response; } - $prev = $page - 1; - if ($prev <= 0) { - $prev = $numOfPages; - } + public function getPages(int $page, int $limit, string $sort = null) + { + $content = $this->getContents(); - $next = $page + 1; - if ($next > $numOfPages) { - $next = 1; - } + $published = filter($content, function ($item) { + return $item["published"] == true && $item["deleted"] == false; + }); + $deleted = filter($content, function ($item) { + return $item["deleted"] == true; + }); - return [ - "pages" => $folder, - "numOfPages" => $numOfPages, - "entryCount" => count($filtered), - "paginate" => [ + //$all = $content; + $all = filter($content, function ($item) { + return $item["deleted"] == false; + }); + $filter = isset($sort) ? $sort : "all"; + switch ($filter) { + case "published": + $filtered = $published; + break; + case "deleted": + $filtered = $deleted; + break; + default: + $filtered = $all; + break; + } + $numOfPages = ceil(count($filtered) / ($limit + 1)); + $folder = []; + + if (count($filtered) != 0) { + if (count($filtered) < $limit) { + $limit = count($filtered) - 1; + } + $range = $page * $limit - $limit; + + if ($range != 0) { + $range = $range + 1; + } + for ($i = 0; $i <= $limit; $i++) { + if (isset($filtered[$i + $range])) { + array_push($folder, $filtered[$i + $range]); + } else { + //chill out + } + } + } + + $prev = $page - 1; + if ($prev <= 0) { + $prev = $numOfPages; + } + + $next = $page + 1; + if ($next > $numOfPages) { + $next = 1; + } + + return [ + "pages" => $folder, + "numOfPages" => $numOfPages, + "entryCount" => count($filtered), + "paginate" => [ "sort" => $sort, "nextPage" => $next, "prevPage" => $prev, - ], - "stats" => [ + ], + "stats" => [ "all" => count($all), "published" => count($published), "deleted" => count($deleted), - ], - ]; - } - public function getContents() - { - //test new contents data class - //$new = (new Contents("../content/pages"))->getAll(); - $contents = (new Contents("../content/pages"))->getAll(); - return $contents; - } + ], + ]; + } + public function getContents() + { + //test new contents data class + //$new = (new Contents("../content/pages"))->getAll(); + $contents = (new Contents("../content/pages"))->getAll(); + return $contents; + } } diff --git a/brain/data/Contents.inc.php b/brain/data/Contents.inc.php index d2bb0d3..977e8c9 100644 --- a/brain/data/Contents.inc.php +++ b/brain/data/Contents.inc.php @@ -16,140 +16,159 @@ use function _\orderBy; class Contents { - public $files = []; - public $config = []; - public function __construct($folder) - { - $this->read($folder); - } - public function read($folder) - { - $folders = glob("$folder/*", GLOB_ONLYDIR); - foreach ($folders as $folder) { - //$this->files[] = $folder . "/"; - $this->read($folder); + public $files = []; + public $config = []; + public function __construct($folder) + { + $this->read($folder); } - $files = array_filter(glob("$folder/*md"), "is_file"); - foreach ($files as $file) { - $this->files[] = $file; - } - } - - function getAll() - { - $environment = new Environment($this->config); - $environment->addExtension(new CommonMarkCoreExtension()); - - // Add the extension - $environment->addExtension(new FrontMatterExtension()); - - //Add Strikethrough rendering - $environment->addExtension(new StrikethroughExtension()); - - //add attributes to elements in markdown - $environment->addExtension(new AttributesExtension()); - - // Instantiate the converter engine and start converting some Markdown! - $converter = new MarkdownConverter($environment); - - $contents = []; - foreach ($this->files as $file) { - //get meta and html from file - $result = $converter->convertToHtml(file_get_contents($file)); - $meta = []; - if ($result instanceof RenderedContentWithFrontMatter) { - $meta = $result->getFrontMatter(); - } - - //get raw markdown from file - $frontMatterExtension = new FrontMatterExtension(); - $parsed = $frontMatterExtension - ->getFrontMatterParser() - ->parse(file_get_contents($file)); - - //never trust the front end. clean it up - - $builder = new SanitizerBuilder(); - $builder->registerExtension(new BasicExtension()); - $builder->registerExtension(new IframeExtension()); - - //relative-a and relative-image - $builder->registerExtension( - new \HtmlSanitizer\Extension\Relative\A\AExtension() - ); - $builder->registerExtension( - new \HtmlSanitizer\Extension\Relative\Image\ImageExtension() - ); - - $detergent = [ - "extensions" => ["basic", "relative-a", "relative-image", "iframe"], - "tags" => [ - "div" => [ - "allowed_attributes" => ["class", "title", "id", "style"], - ], - "img" => [ - "allowed_attributes" => ["src", "alt", "title", "class"], - ], - "iframe" => [ - "allowed_attributes" => ["height", "width", "title", "src"], - ], - ], - ]; - - $sanitizer = $builder->build($detergent); - - $scrubbed = $sanitizer->sanitize($result->getContent()); - - $featureList = explode(",", $meta["feature"]); - $media = []; - foreach ($featureList as $file) { - $item = trim($file); - $ext = explode(".", $item); - if ($item != null || $item != "") { - array_push($media, ["file"=>$item, "type"=>trim($ext[1])]); + public function read($folder) + { + $folders = glob("$folder/*", GLOB_ONLYDIR); + foreach ($folders as $folder) { + //$this->files[] = $folder . "/"; + $this->read($folder); + } + $files = array_filter(glob("$folder/*md"), "is_file"); + foreach ($files as $file) { + $this->files[] = $file; } - } - - //sort attributes into page object - $page = [ - "id" => $meta["id"], - "uuid" => $meta["uuid"], - "title" => $meta["title"], - "feature" => $meta["feature"], - "path" => $meta["path"], - "layout" => $meta["layout"], - "tags" => $meta["tags"], - "author" => $meta["author"], - "created" => date("Y M D d", $meta["created"]), - "updated" => date("Y M D d", $meta["updated"]), - "rawCreated" => $meta["created"], - "rawUpdated" => $meta["updated"], - "createdYear" => date("Y", $meta["created"]), - "createdMonth" => date("m", $meta["created"]), - "deleted" => $meta["deleted"], - "menu" => $meta["menu"], - "featured" => $meta["featured"], - "published" => $meta["published"], - "slug" => $meta["slug"], - "filePath" => $file, - "content" => $parsed->getContent(), - "html" => $scrubbed, - "media" => $media, - ]; - //checks for duplicates - $uuid = $meta["uuid"]; - $found = current( - array_filter($contents, function ($item) use ($uuid) { - return isset($item["uuid"]) && $uuid == $item["uuid"]; - }) - ); - - // if uuid is not present, add it - if (!$found) { - array_push($contents, $page); - } } - $contents = orderBy($contents, ["id"], ["desc"]); - return $contents; - } + + function getAll() + { + $environment = new Environment($this->config); + $environment->addExtension(new CommonMarkCoreExtension()); + + // Add the extension + $environment->addExtension(new FrontMatterExtension()); + + //Add Strikethrough rendering + $environment->addExtension(new StrikethroughExtension()); + + //add attributes to elements in markdown + $environment->addExtension(new AttributesExtension()); + + // Instantiate the converter engine and start converting some Markdown! + $converter = new MarkdownConverter($environment); + + $contents = []; + foreach ($this->files as $file) { + //get meta and html from file + $result = $converter->convertToHtml(file_get_contents($file)); + $meta = []; + if ($result instanceof RenderedContentWithFrontMatter) { + $meta = $result->getFrontMatter(); + } + + //get raw markdown from file + $frontMatterExtension = new FrontMatterExtension(); + $parsed = $frontMatterExtension + ->getFrontMatterParser() + ->parse(file_get_contents($file)); + + //never trust the front end. clean it up + + $builder = new SanitizerBuilder(); + $builder->registerExtension(new BasicExtension()); + $builder->registerExtension(new IframeExtension()); + + //relative-a and relative-image + $builder->registerExtension( + new \HtmlSanitizer\Extension\Relative\A\AExtension() + ); + $builder->registerExtension( + new \HtmlSanitizer\Extension\Relative\Image\ImageExtension() + ); + + $detergent = [ + "extensions" => ["basic", "relative-a", "relative-image", "iframe"], + "tags" => [ + "div" => [ + "allowed_attributes" => ["class", "title", "id", "style"], + ], + "img" => [ + "allowed_attributes" => ["src", "alt", "title", "class"], + ], + "iframe" => [ + "allowed_attributes" => ["height", "width", "title", "src"], + ], + ], + ]; + + $sanitizer = $builder->build($detergent); + + $scrubbed = $sanitizer->sanitize($result->getContent()); + $featureList = explode(",", $meta["feature"]); + $docs = ''; + if (isset($meta["files"])) { + $fileList = explode(",", $meta["files"]); + $docs = $meta["files"]; + } else { + $fileList = []; + $docs = ''; + } + + $media = []; + $files = []; + foreach ($featureList as $file) { + $item = trim($file); + $ext = pathinfo($item, PATHINFO_EXTENSION); + if ($item != null || $item != "") { + array_push($media, ["file"=>$item, "type"=>trim($ext)]); + } + } + + foreach ($fileList as $file) { + $item = trim($file); + $ext = pathinfo($item, PATHINFO_EXTENSION); + if ($item != null || $item != "") { + array_push($files, ["file"=>$item, "type"=>trim($ext)]); + } + } + + //sort attributes into page object + $page = [ + "id" => $meta["id"], + "uuid" => $meta["uuid"], + "title" => $meta["title"], + "feature" => $meta["feature"], + "files" => $docs, + "path" => $meta["path"], + "layout" => $meta["layout"], + "tags" => $meta["tags"], + "author" => $meta["author"], + "created" => date("Y M D d", $meta["created"]), + "updated" => date("Y M D d", $meta["updated"]), + "rawCreated" => $meta["created"], + "rawUpdated" => $meta["updated"], + "createdYear" => date("Y", $meta["created"]), + "createdMonth" => date("m", $meta["created"]), + "deleted" => $meta["deleted"], + "menu" => $meta["menu"], + "featured" => $meta["featured"], + "published" => $meta["published"], + "slug" => $meta["slug"], + "filePath" => $file, + "content" => $parsed->getContent(), + "html" => $scrubbed, + "media" => $media, + "docs"=>$files + ]; + //checks for duplicates + $uuid = $meta["uuid"]; + $found = current( + array_filter($contents, function ($item) use ($uuid) { + return isset($item["uuid"]) && $uuid == $item["uuid"]; + }) + ); + + // if uuid is not present, add it + if (!$found) { + array_push($contents, $page); + } + } + $contents = orderBy($contents, ["id"], ["desc"]); + return $contents; + } } diff --git a/brain/utility/DocTools.inc.php b/brain/utility/DocTools.inc.php index e28197f..0af7a4c 100644 --- a/brain/utility/DocTools.inc.php +++ b/brain/utility/DocTools.inc.php @@ -2,139 +2,142 @@ class DocTools { - public function __construct() - { - } + public function __construct() + { + } - public static function writePages($task, $path, $fileLocation, $fileContents) - { - try { - if ($task == "create") { - if (!is_dir("../content/pages/" . $path)) { - //Directory does not exist, so lets create it. - mkdir("../content/pages/" . $path, 0755, true); + public static function writePages($task, $path, $fileLocation, $fileContents) + { + try { + if ($task == "create") { + if (!is_dir("../content/pages/" . $path)) { + //Directory does not exist, so lets create it. + mkdir("../content/pages/" . $path, 0755, true); + } + file_put_contents($fileLocation, $fileContents); + } else { + ($new = fopen($fileLocation, "w")) or die("Unable to open file!"); + fwrite($new, $fileContents); + fclose($new); + } + + return true; + } catch (Error $error) { + return false; } - file_put_contents($fileLocation, $fileContents); - } else { - ($new = fopen($fileLocation, "w")) or die("Unable to open file!"); - fwrite($new, $fileContents); - fclose($new); - } - - return true; - } catch (Error $error) { - return false; } - } - public static function writeSettings($fileLocation, $fileContents) - { - if (!is_file($fileLocation)) { - file_put_contents($fileLocation, json_encode($fileContents)); - } else { - ($new = fopen($fileLocation, "w")) or die("Unable to open file!"); - fwrite($new, json_encode($fileContents)); - fclose($new); - } - } - - public static function writeHTML($location, $html, $path = null) - { - if ($path != null) { - if (!is_dir($path)) { - //Directory does not exist, so lets create it. - mkdir($path, 0755, true); - } - } - if (!is_file($location)) { - file_put_contents($location, $html); - } else { - ($new = fopen($location, "w")) or die("Unable to open file!"); - fwrite($new, $html); - fclose($new); - } - } - - public static function deleteFolder($path) - { - if (!empty($path) && is_dir($path)) { - $dir = new RecursiveDirectoryIterator( - $path, - RecursiveDirectoryIterator::SKIP_DOTS - ); //upper dirs are not included,otherwise DISASTER HAPPENS :) - $files = new RecursiveIteratorIterator( - $dir, - RecursiveIteratorIterator::CHILD_FIRST - ); - foreach ($files as $f) { - if (is_file($f)) { - unlink($f); + public static function writeSettings($fileLocation, $fileContents) + { + if (!is_file($fileLocation)) { + file_put_contents($fileLocation, json_encode($fileContents)); } else { - $empty_dirs[] = $f; + ($new = fopen($fileLocation, "w")) or die("Unable to open file!"); + fwrite($new, json_encode($fileContents)); + fclose($new); } - } - if (!empty($empty_dirs)) { - foreach ($empty_dirs as $eachDir) { - rmdir($eachDir); - } - } - rmdir($path); } - } - public static function objectToMD($object) - { - $markdown = - "---\n" . - "id: " . - $object["id"] . - "\n" . - "uuid: " . - $object["uuid"] . - "\n" . - "title: " . - "'" . - $object["title"] . - "'" . - "\n" . - "feature: " . - $object["feature"] . - "\n" . - "path: " . - $object["path"] . - "\n" . - "layout: " . - $object["layout"] . - "\n" . - "tags: " . - $object["tags"] . - "\n" . - "author: " . - $object["author"] . - "\n" . - "created: " . - $object["created"] . - "\n" . - "updated: " . - $object["updated"] . - "\n" . - "deleted: " . - $object["deleted"] . - "\n" . - "slug: " . - $object["slug"] . - "\n" . - "menu: " . - $object["menu"] . - "\n" . - "published: " . - $object["published"] . - "\n" . - "featured: " . - $object["featured"] . - "\n---\n" . - $object["content"]; + public static function writeHTML($location, $html, $path = null) + { + if ($path != null) { + if (!is_dir($path)) { + //Directory does not exist, so lets create it. + mkdir($path, 0755, true); + } + } + if (!is_file($location)) { + file_put_contents($location, $html); + } else { + ($new = fopen($location, "w")) or die("Unable to open file!"); + fwrite($new, $html); + fclose($new); + } + } - return $markdown; - } + public static function deleteFolder($path) + { + if (!empty($path) && is_dir($path)) { + $dir = new RecursiveDirectoryIterator( + $path, + RecursiveDirectoryIterator::SKIP_DOTS + ); //upper dirs are not included,otherwise DISASTER HAPPENS :) + $files = new RecursiveIteratorIterator( + $dir, + RecursiveIteratorIterator::CHILD_FIRST + ); + foreach ($files as $f) { + if (is_file($f)) { + unlink($f); + } else { + $empty_dirs[] = $f; + } + } + if (!empty($empty_dirs)) { + foreach ($empty_dirs as $eachDir) { + rmdir($eachDir); + } + } + rmdir($path); + } + } + + public static function objectToMD($object) + { + $markdown = + "---\n" . + "id: " . + $object["id"] . + "\n" . + "uuid: " . + $object["uuid"] . + "\n" . + "title: " . + "'" . + $object["title"] . + "'" . + "\n" . + "feature: " . + $object["feature"] . + "\n" . + "files: " . + $object["files"] . + "\n" . + "path: " . + $object["path"] . + "\n" . + "layout: " . + $object["layout"] . + "\n" . + "tags: " . + $object["tags"] . + "\n" . + "author: " . + $object["author"] . + "\n" . + "created: " . + $object["created"] . + "\n" . + "updated: " . + $object["updated"] . + "\n" . + "deleted: " . + $object["deleted"] . + "\n" . + "slug: " . + $object["slug"] . + "\n" . + "menu: " . + $object["menu"] . + "\n" . + "published: " . + $object["published"] . + "\n" . + "featured: " . + $object["featured"] . + "\n---\n" . + $object["content"]; + + return $markdown; + } } diff --git a/brain/views/dash/page-edit.twig b/brain/views/dash/page-edit.twig index a7e0612..8c3e6bc 100644 --- a/brain/views/dash/page-edit.twig +++ b/brain/views/dash/page-edit.twig @@ -15,6 +15,7 @@ {% set date = page['created'] %} {% set updated = page['updated'] %} {% set media = page['media'] %} + {% set files = page['docs'] %} {% else %} {% set id = '' %} {% set uuid = '' %} @@ -27,6 +28,7 @@ {% set date = '' %} {% set updated = '' %} {% set media = '' %} + {% set files = '' %} {% endif %} {% block title %} @@ -71,7 +73,24 @@ FILES -
+
+ {% if files|length > 1 %} + {% for item in files %} + {% if item.type == "mp3"%} +
+ {% else %} +
+ {% endif %} + {% endfor %} + {% else %} + {% if item.type == "mp3"%} +
+ {% else %} +
+ {% endif %} + {% endif %} + +
@@ -141,5 +160,5 @@ {% endblock %} {% block javascripts %} - + {% endblock %} \ No newline at end of file diff --git a/brain/views/dash/partials/index.twig b/brain/views/dash/partials/index.twig index 5c3586b..01fe989 100644 --- a/brain/views/dash/partials/index.twig +++ b/brain/views/dash/partials/index.twig @@ -27,7 +27,7 @@ {% for page in data['pages'] %} {% if page.media[0].type == 'mp4' %} - +