[puntoengine] r89 committed - Create automatic process for url cast for controlers same as the url /...

0 views
Skip to first unread message

punto...@googlecode.com

unread,
Aug 23, 2011, 5:26:38 AM8/23/11
to punto...@googlegroups.com
Revision: 89
Author: jbalde
Date: Tue Aug 23 02:26:03 2011
Log: Create automatic process for url cast for controlers same as the
url /admin/login are configured in web.xml with /admin/* and the "*"
indicates the next level for action of one controller por example
AdminController::login(HttpRequest)
http://code.google.com/p/puntoengine/source/detail?r=89

Modified:
/trunk/puntoengine/config/web.xml
/trunk/puntoengine/core/Kernel.php
/trunk/puntoengine/core/admin/AdminController.php
/trunk/puntoengine/core/admin/template/login.php
/trunk/puntoengine/core/http/HttpServlet.php

=======================================
--- /trunk/puntoengine/config/web.xml Mon Aug 22 00:02:22 2011
+++ /trunk/puntoengine/config/web.xml Tue Aug 23 02:26:03 2011
@@ -20,6 +20,7 @@
<Namespace>core.admin</Namespace>
<Patterns>
<Pattern>/admin</Pattern>
+ <Pattern>/admin/*</Pattern>
</Patterns>
<Description>Framework administration</Description>
</Servlet>
=======================================
--- /trunk/puntoengine/core/Kernel.php Mon Aug 22 00:02:22 2011
+++ /trunk/puntoengine/core/Kernel.php Tue Aug 23 02:26:03 2011
@@ -249,15 +249,25 @@

$document->loadXmlFile('/config/web.xml');

- if(substr($servletName, -1) == '/') {
- $servletClass =
$document->selectSingleNode('/Web/Servlets/Servlet[Patterns/Pattern
= "'.$servletName.'" or Patterns/Pattern = "'.substr($servletName, 0,
-1).'"]/Class');
- } else {
- $servletClass =
$document->selectSingleNode('/Web/Servlets/Servlet[Patterns/Pattern
= "'.$servletName.'"]/Class');
+ try {
+ if(substr($servletName, -1) == '/') {
+ $servletClass =
$document->selectSingleNode('/Web/Servlets/Servlet[Patterns/Pattern
= "'.$servletName.'" or Patterns/Pattern = "'.substr($servletName, 0,
-1).'"]/Class');
+ } else {
+ $servletClass =
$document->selectSingleNode('/Web/Servlets/Servlet[Patterns/Pattern
= "'.$servletName.'"]/Class');
+ }
+ } catch(XmlException $exception) {
+ $servletAux = explode('/', $servletName);
+
+ $servletClass =
$document->selectSingleNode('/Web/Servlets/Servlet[Patterns/Pattern
= "/'.$servletAux[1].'/*"]/Class');
}

if(class_exists($servletClass)) {
eval('$servlet = new '.$servletClass.'();');
$servlet->setUrl($servletName);
+
+ if(isset($servletAux[2])) {
+ $servlet->setAction($servletAux[2]);
+ }
} else {
throw new
CoreException(ExceptionCodes::CORE_CLASSNOTFOUND, 'Class '.$servletClass.'
not found');
}
=======================================
--- /trunk/puntoengine/core/admin/AdminController.php Mon Aug 22 00:02:22
2011
+++ /trunk/puntoengine/core/admin/AdminController.php Tue Aug 23 02:26:03
2011
@@ -30,7 +30,7 @@
$this->master = null;
$this->setRequestDispatcher('/template/pepadmin/admin.php', $request);
} else {
- $this->addTemplateSection('content',
$this->addTemplate('/core/admin/template/login.php', $request));
+ $this->sendRedirect('~/admin/login');
}
}//doGet

@@ -54,5 +54,10 @@

$this->sendRedirect('~/'.$this->url);
}//doPost
+
+
+ protected function login(HttpRequest $request) {
+ $this->addTemplateSection('content',
$this->addTemplate('/core/admin/template/login.php', $request));
+ }
}//PepAdminController
?>
=======================================
--- /trunk/puntoengine/core/admin/template/login.php Mon Aug 22 00:02:22
2011
+++ /trunk/puntoengine/core/admin/template/login.php Tue Aug 23 02:26:03
2011
@@ -1,6 +1,6 @@
<div class="container minibox">
<div class="content">
- <form method="post" action="install.php">
+ <form method="post" action="~/admin/login">
<p>
<label for="user">User:<br/>
<input type="text" name="user" id="user" autocomplete="off" />
=======================================
--- /trunk/puntoengine/core/http/HttpServlet.php Wed Jul 13 05:01:31 2011
+++ /trunk/puntoengine/core/http/HttpServlet.php Tue Aug 23 02:26:03 2011
@@ -60,6 +60,14 @@
* @since 0.3
*/
protected $templateSections;
+
+
+ /**
+ * Name of action to execute by the servlet
+ * @var string
+ * @since 0.3
+ */
+ protected $action;


/**
@@ -70,6 +78,16 @@
public function getOut() {
return $this->out;
}//getOut
+
+
+ /**
+ * Set the action to execute by the servlet
+ * @param string $action Action to execute
+ * @since 0.3
+ */
+ public function setAction($action) {
+ $this->action = $action;
+ }//setAction


/**
@@ -114,12 +132,16 @@
public function init(HttpRequest $request, $type) {
ob_start();

- if($type == HttpMethods::GET) {
- $this->doGet($request);
- } elseif($type == HttpMethods::POST) {
- $this->doPost($request);
+ if($this->action != null && method_exists($this, $this->action)) {
+ call_user_func(array($this, $this->action), $request);
} else {
- $this->processRequest($request);
+ if($type == HttpMethods::GET) {
+ $this->doGet($request);
+ } elseif($type == HttpMethods::POST) {
+ $this->doPost($request);
+ } else {
+ $this->processRequest($request);
+ }
}

$this->processMasterPage($request);
@@ -285,7 +307,7 @@
*/
protected function sendRedirect($url) {
if(substr($url, 0, 2) == '~/') {
- $url = str_replace('~/', Kernel::getVirtualPath(), $url);
+ $url = str_replace('~/', Kernel::getVirtualPath().'/', $url);
}

header('Location: '.$url);

Reply all
Reply to author
Forward
0 new messages