initial bug tracking factories; created pages for contact, credits and about pages
This commit is contained in:
parent
90f5420fac
commit
0c0d32834b
@ -33,6 +33,7 @@
|
|||||||
case 'PanaceaControllerFactory':
|
case 'PanaceaControllerFactory':
|
||||||
case 'PanaceaWikiController':
|
case 'PanaceaWikiController':
|
||||||
case 'PanaceaDefaultController':
|
case 'PanaceaDefaultController':
|
||||||
|
case 'PanaceaTrackerController':
|
||||||
$file = "$path/lib/controllers/$className.php";
|
$file = "$path/lib/controllers/$className.php";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -46,6 +47,7 @@
|
|||||||
//views
|
//views
|
||||||
case 'WikiViewFactory':
|
case 'WikiViewFactory':
|
||||||
case 'PanaceaViewFactory':
|
case 'PanaceaViewFactory':
|
||||||
|
case 'TrackerViewFactory':
|
||||||
$file = "$path/lib/views/$className.php";
|
$file = "$path/lib/views/$className.php";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -63,6 +65,11 @@
|
|||||||
$file = "$path/lib/views/wiki/$className.php";
|
$file = "$path/lib/views/wiki/$className.php";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//tracker views
|
||||||
|
case 'TrackerView':
|
||||||
|
$file = "$path/lib/views/tracker/$className.php";
|
||||||
|
break;
|
||||||
|
|
||||||
//system views
|
//system views
|
||||||
case 'PanaceaView':
|
case 'PanaceaView':
|
||||||
case 'PanaceaHomeView':
|
case 'PanaceaHomeView':
|
||||||
@ -72,9 +79,16 @@
|
|||||||
case 'PanaceaLogoView':
|
case 'PanaceaLogoView':
|
||||||
case 'PanaceaMenuView':
|
case 'PanaceaMenuView':
|
||||||
case 'PanaceaFooterView':
|
case 'PanaceaFooterView':
|
||||||
case 'PanaceaWelcomeView':
|
|
||||||
$file = "$path/lib/views/system/$className.php";
|
$file = "$path/lib/views/system/$className.php";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
//default views
|
||||||
|
case 'PanaceaContactView':
|
||||||
|
case 'PanaceaWelcomeView':
|
||||||
|
case 'PanaceaCreditsView':
|
||||||
|
case 'PanaceaAboutView':
|
||||||
|
$file = "$path/lib/views/default/$className.php";
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($file) && is_file($file)) {
|
if (!empty($file) && is_file($file)) {
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$title = (empty($this->page) || $this->page === 'Home') ? 'It doesn\'t suck' : $this->page;
|
$title = (empty($this->page) || $this->page === 'Home') ? 'It doesn\'t suck' : ucfirst($this->page);
|
||||||
$templateView = new PanaceaTemplateView($title);
|
$templateView = new PanaceaTemplateView($title);
|
||||||
$templateView->mainView->addView($this->viewFactory->getView($this->page));
|
$templateView->mainView->addView($this->viewFactory->getView($this->page));
|
||||||
return $templateView;
|
return $templateView;
|
||||||
|
77
src/lib/controllers/PanaceaTrackerController.php
Normal file
77
src/lib/controllers/PanaceaTrackerController.php
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PanaceaTrackerController
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Bootstraps the NowhereConcave framework */
|
||||||
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bug tracker controller
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
class PanaceaTrackerController extends PanaceaDefaultController {
|
||||||
|
|
||||||
|
public function __construct($page) {
|
||||||
|
parent::__construct($page, View::VIEWTYPE_HTML);
|
||||||
|
|
||||||
|
$this->viewFactory = TrackerViewFactory::getInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function getDefaultPageName() {
|
||||||
|
return 'Hello Bug Tracker';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
* @uses Request::create()
|
||||||
|
* @uses HttpUtil::getRequestMethod()
|
||||||
|
* @todo Remove the hardcoded database connection
|
||||||
|
*
|
||||||
|
* @throws {@link InvalidRequestException} if a {@link View} cannot be created
|
||||||
|
* @return PanaceaTemplateView
|
||||||
|
*/
|
||||||
|
public function handleRequest(Request $request = null) {
|
||||||
|
if (!($request instanceof Request)) {
|
||||||
|
$request = Request::create(HttpUtil::getRequestMethod());
|
||||||
|
}
|
||||||
|
|
||||||
|
//handle request metadata
|
||||||
|
if ($request->method === HttpUtil::HTTP_METHOD_POST) {
|
||||||
|
$postHandler = PanaceaPostHandlerFactory::getInstance()->getPostHandler($request->body);
|
||||||
|
$lastInsertId = $postHandler->execute($mysql);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$templateView = new PanaceaTemplateView('Bug Tracker :: ' . $this->page);
|
||||||
|
$templateView->mainView->addView($this->viewFactory->getView($this->page));
|
||||||
|
|
||||||
|
return $templateView;
|
||||||
|
}
|
||||||
|
catch (ClassNotFoundException $e) {
|
||||||
|
throw new InvalidRequestException($request);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
61
src/lib/views/TrackerViewFactory.php
Normal file
61
src/lib/views/TrackerViewFactory.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TrackerViewFactory
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Bootstraps the NowhereConcave framework */
|
||||||
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Factory for generating bug tacking {@link View}s
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
class TrackerViewFactory extends ViewFactory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The singleton instance
|
||||||
|
*
|
||||||
|
* @var WikiViewFactory
|
||||||
|
*/
|
||||||
|
protected static $instance = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the singleton instance
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*
|
||||||
|
* @return TrackerViewFactory
|
||||||
|
*/
|
||||||
|
public static function getInstance() {
|
||||||
|
if (self::$instance === null) {
|
||||||
|
self::$instance = new self();
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::$instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-18
|
||||||
|
*
|
||||||
|
* @param string $page The name of the page
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function getViewName($page) {
|
||||||
|
return 'TrackerView';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
43
src/lib/views/default/PanaceaAboutView.php
Normal file
43
src/lib/views/default/PanaceaAboutView.php
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PanaceaAboutView
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Bootstraps the NowhereConcave framework */
|
||||||
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View for the about page
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
class PanaceaAboutView extends PanaceaView {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the view
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
public function send() { ?>
|
||||||
|
|
||||||
|
<h2>About</h2>
|
||||||
|
<div class="inset">
|
||||||
|
Hello world.
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
50
src/lib/views/default/PanaceaContactView.php
Normal file
50
src/lib/views/default/PanaceaContactView.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PanaceaContactView
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Bootstraps the NowhereConcave framework */
|
||||||
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View for the contact page
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
class PanaceaContactView extends PanaceaView {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the view
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
public function send() { ?>
|
||||||
|
|
||||||
|
<h2>Contact</h2>
|
||||||
|
<div class="inset">
|
||||||
|
<dl>
|
||||||
|
<dt>Email</dt>
|
||||||
|
<dd>somewhere@somewhere.com</dd>
|
||||||
|
<dt>Submit a bug</dt>
|
||||||
|
<dd><a href="<?php echo $this->root; ?>/tracker/">Bug tracker</a></dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
92
src/lib/views/default/PanaceaCreditsView.php
Normal file
92
src/lib/views/default/PanaceaCreditsView.php
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PanaceaCreditsView
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Bootstraps the NowhereConcave framework */
|
||||||
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View for the credits page
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
class PanaceaCreditsView extends PanaceaView {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the view
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
public function send() { ?>
|
||||||
|
|
||||||
|
<h2>Credits</h2>
|
||||||
|
<div class="inset">
|
||||||
|
<h3>Internals</h3>
|
||||||
|
<div class="inset">
|
||||||
|
<p>
|
||||||
|
This application was built entirely by
|
||||||
|
<a href="http://tommymontgomery.com/">Tommy Montgomery</a>. He wrote it
|
||||||
|
using <a href="http://php.net/">PHP</a>. Obviously,
|
||||||
|
<a href="http://trac.edgewall.org/">Trac</a> was a big inspiration.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>Development Tools</h3>
|
||||||
|
<div class="inset">
|
||||||
|
<p>
|
||||||
|
Yes, this entire thing was developed on <i>gasp!</i> Windows.
|
||||||
|
Macs are for suckers and Linux is for sadists. Of course, I relied
|
||||||
|
heavily on the use of Cygwin…
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a></li>
|
||||||
|
<li><a href="http://webyog.com/en/downloads.php#sqlyog">SQLyog</a></li>
|
||||||
|
<li><a href="http://subversion.tigris.org/">Subversion</a></li>
|
||||||
|
<li><a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a></li>
|
||||||
|
<li><a href="http://www.cygwin.com/">Cygwin</a></li>
|
||||||
|
<li><a href="http://mysql.com/">MySQL</a></li>
|
||||||
|
<li><a href="http://httpd.apache.com/">Apache web server</a></li>
|
||||||
|
<li><a href="http://phpunit.de/">PHPUnit</a></li>
|
||||||
|
<li><a href="http://phpundercontrol.org/">phpUnderControl</a> / <a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a></li>
|
||||||
|
<li><a href="http://pear.php.net/package/PHP_CodeSniffer/">PHP_CodeSniffer</a></li>
|
||||||
|
<li><a href="http://xdebug.org/">XDebug</a></li>
|
||||||
|
<li><a href="http://www.gimp.org/">gimp</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3>References</h3>
|
||||||
|
<div class="inset">
|
||||||
|
<p>
|
||||||
|
These are mentioned because I sometimes referred to them while
|
||||||
|
developing Panacea.
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://trac.edgewall.org/">Trac</a></li>
|
||||||
|
<li><a href="http://ezcomponents.org">ezComponents</a></li>
|
||||||
|
<li><a href="http://framework.zend.com/">Zend Framework</a></li>
|
||||||
|
<li><a href="http://en.wikipedia.org/">Wikipedia</a> (reference for wiki syntax)</li>
|
||||||
|
<li><a href="http://cssplay.co.uk/">CSSplay</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -34,10 +34,7 @@
|
|||||||
<div class="inset">
|
<div class="inset">
|
||||||
<p>
|
<p>
|
||||||
Welcome to <i>Panacea</i>, a web-based application that
|
Welcome to <i>Panacea</i>, a web-based application that
|
||||||
doesn't suck. It's aimed at software developers,
|
doesn't suck.
|
||||||
software development managers, <acronym>QA</acronym> professionals,
|
|
||||||
and people who like using <a href="http://en.wikipedia.org/wiki/Wiki">wikis</a>
|
|
||||||
(which should be everybody, unless you're a robot).
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -46,16 +43,12 @@
|
|||||||
<p>
|
<p>
|
||||||
<i>Panacea</i> is modeled after <a href="http://trac.edgewall.org/">Trac</a>,
|
<i>Panacea</i> is modeled after <a href="http://trac.edgewall.org/">Trac</a>,
|
||||||
which is a fantastic application very similar to this one. <i>Panacea</i>
|
which is a fantastic application very similar to this one. <i>Panacea</i>
|
||||||
aims to ease integration, configuration and installation. That is not to say
|
aims to ease integration, configuration and installation.
|
||||||
that <i>Panacea</i> is simple; it is in fact just the opposite. <i>Panacea</i> is
|
|
||||||
infintely complex and extensible; it is well documented and well-written; it
|
|
||||||
is a panacea to all your software development troubles; it's also a lot of
|
|
||||||
fun, in the sense that there's a lot of crap to mess around with.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
More information about the technology and reason for <i>Panacea</i> can be
|
More information about the technology and reason for <i>Panacea</i> can be
|
||||||
viewed at the <a href="<?php echo $this->root; ?>/wiki/About">about</a> page.
|
viewed at the <a href="<?php echo $this->root; ?>/about">about</a> page.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
require_once 'NowhereConcave/bootstrap.php';
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* View for standard Panacea pages
|
* Footer view
|
||||||
*
|
*
|
||||||
* @package Panacea
|
* @package Panacea
|
||||||
* @subpackage Views
|
* @subpackage Views
|
||||||
@ -36,7 +36,6 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="<?php echo $this->root; ?>/about">About</a></li>
|
<li><a href="<?php echo $this->root; ?>/about">About</a></li>
|
||||||
<li><a href="<?php echo $this->root; ?>/credits">Credits</a></li>
|
<li><a href="<?php echo $this->root; ?>/credits">Credits</a></li>
|
||||||
<li><a href="<?php echo $this->root; ?>/copyright">Copyright</a></li>
|
|
||||||
<li><a href="<?php echo $this->root; ?>/contact">Contact</a></li>
|
<li><a href="<?php echo $this->root; ?>/contact">Contact</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div style="clear:right"></div>
|
<div style="clear:right"></div>
|
||||||
|
39
src/lib/views/tracker/TrackerView.php
Normal file
39
src/lib/views/tracker/TrackerView.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TrackerView
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** Bootstraps the NowhereConcave framework */
|
||||||
|
require_once 'NowhereConcave/bootstrap.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View for bug tracking pages
|
||||||
|
*
|
||||||
|
* @package Panacea
|
||||||
|
* @subpackage Views
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*/
|
||||||
|
class TrackerView extends PanaceaView {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new {@link WikiPageView}
|
||||||
|
*
|
||||||
|
* @author Tommy Montgomery
|
||||||
|
* @since 2008-10-26
|
||||||
|
*
|
||||||
|
* @param int $priority The priority of the view
|
||||||
|
*/
|
||||||
|
public function __construct($priority = 0) {
|
||||||
|
parent::__construct($priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Loading…
Reference in New Issue
Block a user