From 92fbf288f7434c423d74e666e548e444a92c3bab Mon Sep 17 00:00:00 2001 From: Dominique Fournier Date: Fri, 25 Jul 2014 12:40:19 +0000 Subject: [PATCH] Rework of blog example to be compliant with version of domframework git-svn-id: https://svn.fournier38.fr/svn/ProgSVN/trunk@1551 bf3deb0d-5f1a-0410-827f-c0cc1f45334c --- examples/blog/controllers/controller_blog.php | 64 ++++++++++++++- examples/blog/datas/5 | 3 +- examples/blog/index.php | 77 +++++++++++++++---- examples/blog/models/model_file.php | 20 ++++- examples/blog/views/view_blog.php | 15 +++- 5 files changed, 157 insertions(+), 22 deletions(-) diff --git a/examples/blog/controllers/controller_blog.php b/examples/blog/controllers/controller_blog.php index c3f55b2..46399dc 100644 --- a/examples/blog/controllers/controller_blog.php +++ b/examples/blog/controllers/controller_blog.php @@ -3,6 +3,9 @@ @package domframework-blog @author Dominique Fournier */ +require ("domframework/form.php"); +require_once ("models/model_file.php"); + error_reporting (E_ALL); /** The main class : manage all the blogs articles */ class blog @@ -93,7 +96,12 @@ class blog $renderer->viewClass = "view_blog"; $renderer->viewMethod = "get"; $renderer->layout = "layout"; -// $renderer->title = "Super Title"; + $renderer->title = $res["title"]; + $renderer->variable = array ( + "title"=>$res["title"], + "content"=>$res["content"], + "articleid"=>$articleid, + ); $renderer->run (); exit; } @@ -108,7 +116,6 @@ class blog /** Return the listing of all the recorded articles */ public function listing () { - require_once ("models/model_file.php"); $data = new model_file(); return $data->listing (); } @@ -135,4 +142,57 @@ class blog exit; }; } + + /** Edit the provided article $articleid */ + public function editShow ($articleid=false) + { + if ($articleid !== false) + $res = $this->get ($articleid); + else + $res = array ("title"=>"", "content"=>""); + + $field = new formfield ("title", "Title"); + $field->mandatory = true; + $formFields[] = $field; + $field = new formfield ("content", "Content"); + $field->mandatory = true; + $formFields[] = $field; + $field = new formfield ("submit", "Record"); + $field->type = "submit"; + $formFields[] = $field; + + $f = new form (); + $f->fields ($formFields); + + $renderer = new renderer (); + $renderer->output = "html"; + $renderer->viewClass = "view_blog"; + $renderer->viewMethod = "edit"; + $renderer->layout = "layout"; + $renderer->result = $f->printHTML ("post", $res); + $renderer->run (); + } + + /** Save the informations to edit a new article */ + public function editSave ($articleid) + { + $field = new formfield ("title", "Title"); + $field->mandatory = true; + $formFields[] = $field; + $field = new formfield ("content", "Content"); + $field->mandatory = true; + $formFields[] = $field; + $field = new formfield ("submit", "Record"); + $field->type = "submit"; + $formFields[] = $field; + + $f = new form (); + $f->fields ($formFields); + $values = $f->values(); + unset ($values["submit"]); + $model = new model_file (); + $model->set ($values, $articleid); + $r = new route (); + $r->redirect ("/", ""); + } } diff --git a/examples/blog/datas/5 b/examples/blog/datas/5 index 3389dc2..7808184 100644 --- a/examples/blog/datas/5 +++ b/examples/blog/datas/5 @@ -1,2 +1 @@ -

Article 5

-

Lorem ipsum

+a:2:{s:5:"title";s:11:"Super title";s:7:"content";s:15:"Mega content !!";} \ No newline at end of file diff --git a/examples/blog/index.php b/examples/blog/index.php index 685bedd..ea98e43 100644 --- a/examples/blog/index.php +++ b/examples/blog/index.php @@ -3,18 +3,67 @@ @package domframework @author Dominique Fournier */ - require_once ("domframework/route.php"); - require_once ("domframework/renderer.php"); - $route = new route (); - $route->debug =0 ; - $res = $route->routingCollection (array ( - //"" => array ("route", "redirect", "/1", FALSE), - "" => array ("blog", "listingHtml"), - "{page}.xml" => array ("blog", "getXml", "{page}"), - "{page}.html" => array ("blog", "getHtml", "{page}"), - "{page}.csv" => array ("blog", "getCsv", "{page}"), - "{page}.json" => array ("blog", "getJson", "{page}"), - "{page}.txt" => array ("blog", "getTxt", "{page}"), - "{page}" => array ("blog", "getHtml", "{page}"), - )); +require_once ("domframework/route.php"); +require_once ("domframework/renderer.php"); +session_start(); + +error_reporting (E_ALL); +// Autoload des controllers +spl_autoload_register ( + function ($class) { + if (file_exists ("controllers/controller_$class.php")) + include "controllers/controller_$class.php"; }); + +$route = new route (); +$route->debug =0 ; +$route->get ("", + function () + { + $a = new blog (); + $a->listingHtml(); + }); + +$route->get ("{articleid}.txt", + function ($articleid) + { + $a = new blog (); + $a->getTxt ($articleid); + }); + +$route->get ("{articleid}.xml", + function ($articleid) + { + $a = new blog (); + $a->getXml ($articleid); + }); + +$route->get ("{articleid}.json", + function ($articleid) + { + $a = new blog (); + $a->getJson ($articleid); + }); + +$route->get ("{articleid}/edit", + function ($articleid) + { + $a = new blog (); + $a->editShow ($articleid); + }); + +$route->post ("{articleid}/edit", + function ($articleid) + { + $a = new blog (); + $a->editSave ($articleid); + }); + +$route->get ("{articleid}", + function ($articleid) + { + $a = new blog (); + $a->getHtml ($articleid); + }); + +header ($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); echo "404 !"; diff --git a/examples/blog/models/model_file.php b/examples/blog/models/model_file.php index 9a99b10..d9bc894 100644 --- a/examples/blog/models/model_file.php +++ b/examples/blog/models/model_file.php @@ -24,7 +24,25 @@ class model_file throw new Exception (_("Asked article not in data path"), 404); if ($fileArticle === FALSE) throw new Exception (_("Article not found"), 404); - return file_get_contents ($fileArticle); + return unserialize (file_get_contents ($fileArticle)); + } + + /** Create a new article if $articleid is false or edit an existing article + if $articleid is defined */ + function set ($data, $articleid = FALSE) + { + $this->dataPath = realpath ($this->dataPath); + if ($this->dataPath === FALSE) + throw new Exception (_("Folder data not available"), 500); + $fileArticle = $this->dataPath."/".$articleid; + if (! file_exists ($fileArticle)) + throw new Exception (_("Article not found"), 404); + $fileArticle = realpath ($fileArticle); + if (substr ($fileArticle, 0, strlen ($this->dataPath)) !== $this->dataPath) + throw new Exception (_("Asked article not in data path"), 404); + if ($fileArticle === FALSE) + throw new Exception (_("Article not found"), 404); + return file_put_contents ($fileArticle, serialize ($data)); } /** Return a list of all the articles ID */ diff --git a/examples/blog/views/view_blog.php b/examples/blog/views/view_blog.php index 8ac773e..08c0016 100644 --- a/examples/blog/views/view_blog.php +++ b/examples/blog/views/view_blog.php @@ -8,14 +8,17 @@ class view_blog { /** Return the datas @param array $data The list of titles */ - function get ($data) + public function get ($data, $variable) { - return $data; + $res = "Edit
"; + $res.= "

".$variable["title"]."

\n"; + $res.= "

".$variable["content"]."

\n"; + return $res; } /** Display the list of titles @param array $data The list of titles */ - function listing ($data) + public function listing ($data, $variable) { $content = "
    \n"; foreach ($data as $val) @@ -27,4 +30,10 @@ class view_blog $content .= "
\n"; return $content; } + + /** Create/Edit a blog */ + public function edit ($data, $variable) + { + return $data; + } }