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
This commit is contained in:
2014-07-25 12:40:19 +00:00
parent 11624f512b
commit 92fbf288f7
5 changed files with 157 additions and 22 deletions

View File

@@ -3,6 +3,9 @@
@package domframework-blog
@author Dominique Fournier <dominique@fournier38.fr> */
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 ("/", "");
}
}

View File

@@ -1,2 +1 @@
<h1>Article 5</h1>
<p>Lorem ipsum</p>
a:2:{s:5:"title";s:11:"Super title";s:7:"content";s:15:"Mega content !!";}

View File

@@ -3,18 +3,67 @@
@package domframework
@author Dominique Fournier <dominique@fournier38.fr> */
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 !";

View File

@@ -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 */

View File

@@ -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 = "<a href='".$variable["articleid"]."/edit'>Edit</a><br/>";
$res.= "<h1>".$variable["title"]."</h1>\n";
$res.= "<p>".$variable["content"]."</p>\n";
return $res;
}
/** Display the list of titles
@param array $data The list of titles */
function listing ($data)
public function listing ($data, $variable)
{
$content = "<ul>\n";
foreach ($data as $val)
@@ -27,4 +30,10 @@ class view_blog
$content .= "</ul>\n";
return $content;
}
/** Create/Edit a blog */
public function edit ($data, $variable)
{
return $data;
}
}