From cd7b4628c31fc0d5c3b5b72c64f7775ffb21492d Mon Sep 17 00:00:00 2001 From: Marek Sebera Date: Tue, 22 Jan 2013 23:12:03 +0100 Subject: [PATCH] initial commit --- app/.htaccess | 5 + app/Console/Command/AppShell.php | 31 + app/Console/Command/Task/empty | 0 app/Console/Templates/empty | 0 app/Console/cake | 33 + app/Console/cake.bat | 32 + app/Console/cake.php | 33 + app/Controller/AppController.php | 35 ++ app/Controller/ItemsController.php | 8 + app/Controller/UsersController.php | 7 + app/Lib/empty | 0 app/Locale/eng/LC_MESSAGES/empty | 0 app/Model/AppModel.php | 34 ++ app/Model/Behavior/empty | 0 app/Model/Datasource/empty | 0 app/Model/Item.php | 8 + app/Model/User.php | 8 + app/Plugin/empty | 0 app/Test/Case/Controller/Component/empty | 0 app/Test/Case/Model/Behavior/empty | 0 app/Test/Case/View/Helper/empty | 0 app/Test/Fixture/empty | 0 app/Vendor/empty | 0 app/View/Elements/empty | 0 app/View/Emails/html/default.ctp | 25 + app/View/Emails/text/default.ctp | 19 + app/View/Errors/error400.ctp | 31 + app/View/Errors/error500.ctp | 28 + app/View/Helper/AppHelper.php | 34 ++ app/View/Items/scaffold.index.ctp | 106 ++++ app/View/Layouts/Emails/html/default.ctp | 29 + app/View/Layouts/Emails/text/default.ctp | 21 + app/View/Layouts/ajax.ctp | 19 + app/View/Layouts/default.ctp | 32 + app/View/Layouts/error.ctp | 61 ++ app/View/Layouts/flash.ctp | 37 ++ app/View/Layouts/js/default.ctp | 2 + app/View/Layouts/rss/default.ctp | 14 + app/View/Layouts/xml/default.ctp | 1 + app/View/Pages/home.ctp | 188 ++++++ app/View/Scaffolds/empty | 0 app/index.php | 17 + app/webroot/.htaccess | 6 + app/webroot/css/cake.generic.css | 741 +++++++++++++++++++++++ app/webroot/favicon.ico | Bin 0 -> 372 bytes app/webroot/files/empty | 0 app/webroot/img/brmlab.png | Bin 0 -> 12230 bytes app/webroot/img/cake.icon.png | Bin 0 -> 943 bytes app/webroot/img/cake.power.gif | Bin 0 -> 201 bytes app/webroot/img/test-error-icon.png | Bin 0 -> 3358 bytes app/webroot/img/test-fail-icon.png | Bin 0 -> 496 bytes app/webroot/img/test-pass-icon.png | Bin 0 -> 783 bytes app/webroot/img/test-skip-icon.png | Bin 0 -> 1207 bytes app/webroot/index.php | 92 +++ app/webroot/js/empty | 0 app/webroot/test.php | 92 +++ 56 files changed, 1829 insertions(+) create mode 100644 app/.htaccess create mode 100644 app/Console/Command/AppShell.php create mode 100644 app/Console/Command/Task/empty create mode 100644 app/Console/Templates/empty create mode 100755 app/Console/cake create mode 100644 app/Console/cake.bat create mode 100644 app/Console/cake.php create mode 100644 app/Controller/AppController.php create mode 100644 app/Controller/ItemsController.php create mode 100644 app/Controller/UsersController.php create mode 100644 app/Lib/empty create mode 100644 app/Locale/eng/LC_MESSAGES/empty create mode 100644 app/Model/AppModel.php create mode 100644 app/Model/Behavior/empty create mode 100644 app/Model/Datasource/empty create mode 100644 app/Model/Item.php create mode 100644 app/Model/User.php create mode 100644 app/Plugin/empty create mode 100644 app/Test/Case/Controller/Component/empty create mode 100644 app/Test/Case/Model/Behavior/empty create mode 100644 app/Test/Case/View/Helper/empty create mode 100644 app/Test/Fixture/empty create mode 100644 app/Vendor/empty create mode 100644 app/View/Elements/empty create mode 100644 app/View/Emails/html/default.ctp create mode 100644 app/View/Emails/text/default.ctp create mode 100644 app/View/Errors/error400.ctp create mode 100644 app/View/Errors/error500.ctp create mode 100644 app/View/Helper/AppHelper.php create mode 100644 app/View/Items/scaffold.index.ctp create mode 100644 app/View/Layouts/Emails/html/default.ctp create mode 100644 app/View/Layouts/Emails/text/default.ctp create mode 100644 app/View/Layouts/ajax.ctp create mode 100644 app/View/Layouts/default.ctp create mode 100644 app/View/Layouts/error.ctp create mode 100644 app/View/Layouts/flash.ctp create mode 100644 app/View/Layouts/js/default.ctp create mode 100644 app/View/Layouts/rss/default.ctp create mode 100644 app/View/Layouts/xml/default.ctp create mode 100644 app/View/Pages/home.ctp create mode 100644 app/View/Scaffolds/empty create mode 100644 app/index.php create mode 100644 app/webroot/.htaccess create mode 100644 app/webroot/css/cake.generic.css create mode 100644 app/webroot/favicon.ico create mode 100644 app/webroot/files/empty create mode 100644 app/webroot/img/brmlab.png create mode 100644 app/webroot/img/cake.icon.png create mode 100644 app/webroot/img/cake.power.gif create mode 100644 app/webroot/img/test-error-icon.png create mode 100644 app/webroot/img/test-fail-icon.png create mode 100644 app/webroot/img/test-pass-icon.png create mode 100644 app/webroot/img/test-skip-icon.png create mode 100644 app/webroot/index.php create mode 100644 app/webroot/js/empty create mode 100644 app/webroot/test.php diff --git a/app/.htaccess b/app/.htaccess new file mode 100644 index 0000000..fc3aac4 --- /dev/null +++ b/app/.htaccess @@ -0,0 +1,5 @@ + + RewriteEngine on + RewriteRule ^$ webroot/ [L] + RewriteRule (.*) webroot/$1 [L] + \ No newline at end of file diff --git a/app/Console/Command/AppShell.php b/app/Console/Command/AppShell.php new file mode 100644 index 0000000..5cc915f --- /dev/null +++ b/app/Console/Command/AppShell.php @@ -0,0 +1,31 @@ + + ' . $line . "

\n"; +endforeach; +?> \ No newline at end of file diff --git a/app/View/Emails/text/default.ctp b/app/View/Emails/text/default.ctp new file mode 100644 index 0000000..56be8c1 --- /dev/null +++ b/app/View/Emails/text/default.ctp @@ -0,0 +1,19 @@ + + \ No newline at end of file diff --git a/app/View/Errors/error400.ctp b/app/View/Errors/error400.ctp new file mode 100644 index 0000000..6d50860 --- /dev/null +++ b/app/View/Errors/error400.ctp @@ -0,0 +1,31 @@ + +

+

+ : + '{$url}'" + ); ?> +

+ 0 ): + echo $this->element('exception_stack_trace'); +endif; +?> diff --git a/app/View/Errors/error500.ctp b/app/View/Errors/error500.ctp new file mode 100644 index 0000000..4e1f36e --- /dev/null +++ b/app/View/Errors/error500.ctp @@ -0,0 +1,28 @@ + +

+

+ : + +

+ 0 ): + echo $this->element('exception_stack_trace'); +endif; +?> diff --git a/app/View/Helper/AppHelper.php b/app/View/Helper/AppHelper.php new file mode 100644 index 0000000..0fddaea --- /dev/null +++ b/app/View/Helper/AppHelper.php @@ -0,0 +1,34 @@ + +
+

+ + + + + + + + +'; + foreach ($scaffoldFields as $_field) { + if($_field == "id") continue; + $isKey = false; + if (!empty($associations['belongsTo'])) { + foreach ($associations['belongsTo'] as $_alias => $_details) { + if ($_field === $_details['foreignKey']) { + $isKey = true; + echo ''; + break; + } + } + } + if ($isKey !== true) { + echo ''; + } + } + + echo ''; + echo ''; + +endforeach; + +?> +
Paginator->sort($_field); ?>
' . $this->Html->link(${$singularVar}[$_alias][$_details['displayField']], array('controller' => $_details['controller'], 'action' => 'view', ${$singularVar}[$_alias][$_details['primaryKey']])) . '' . h(${$singularVar}[$modelClass][$_field]) . ''; + echo $this->Html->link(__d('cake', 'View'), array('action' => 'view', ${$singularVar}[$modelClass][$primaryKey])); + echo ' ' . $this->Html->link(__d('cake', 'Edit'), array('action' => 'edit', ${$singularVar}[$modelClass][$primaryKey])); + echo ' ' . $this->Form->postLink( + __d('cake', 'Delete'), + array('action' => 'delete', ${$singularVar}[$modelClass][$primaryKey]), + null, + __d('cake', 'Are you sure you want to delete').' #' . ${$singularVar}[$modelClass][$primaryKey] + ); + echo '
+

Paginator->counter(array( + 'format' => __d('cake', 'Page {:page} of {:pages}, showing {:current} records out of {:count} total, starting on record {:start}, ending on {:end}') + )); + ?>

+
+ Paginator->prev('< ' . __d('cake', 'previous'), array(), null, array('class' => 'prev disabled')); + echo $this->Paginator->numbers(array('separator' => '')); + echo $this->Paginator->next(__d('cake', 'next') .' >', array(), null, array('class' => 'next disabled')); + ?> +
+
+
+

+ +
diff --git a/app/View/Layouts/Emails/html/default.ctp b/app/View/Layouts/Emails/html/default.ctp new file mode 100644 index 0000000..e574a9b --- /dev/null +++ b/app/View/Layouts/Emails/html/default.ctp @@ -0,0 +1,29 @@ + + + + + <?php echo $title_for_layout;?> + + + fetch('content');?> + +

This email was sent using the CakePHP Framework

+ + \ No newline at end of file diff --git a/app/View/Layouts/Emails/text/default.ctp b/app/View/Layouts/Emails/text/default.ctp new file mode 100644 index 0000000..c2a683a --- /dev/null +++ b/app/View/Layouts/Emails/text/default.ctp @@ -0,0 +1,21 @@ + +fetch('content');?> + +This email was sent using the CakePHP Framework, http://cakephp.org. diff --git a/app/View/Layouts/ajax.ctp b/app/View/Layouts/ajax.ctp new file mode 100644 index 0000000..c0da850 --- /dev/null +++ b/app/View/Layouts/ajax.ctp @@ -0,0 +1,19 @@ + +fetch('content'); ?> diff --git a/app/View/Layouts/default.ctp b/app/View/Layouts/default.ctp new file mode 100644 index 0000000..9e1352e --- /dev/null +++ b/app/View/Layouts/default.ctp @@ -0,0 +1,32 @@ + + + + Html->charset(); ?> + + BrmSklad: + <?php echo $title_for_layout; ?> + + Html->meta('icon'); + echo $this->Html->css('cake.generic'); + + echo $this->fetch('meta'); + echo $this->fetch('css'); + echo $this->fetch('script'); + ?> + + +
+ +
+ + Session->flash(); ?> + + fetch('content'); ?> +
+
+ element('sql_dump'); ?> + + diff --git a/app/View/Layouts/error.ctp b/app/View/Layouts/error.ctp new file mode 100644 index 0000000..4947734 --- /dev/null +++ b/app/View/Layouts/error.ctp @@ -0,0 +1,61 @@ + + + + + Html->charset(); ?> + + <?php echo $cakeDescription ?>: + <?php echo $title_for_layout; ?> + + Html->meta('icon'); + + echo $this->Html->css('cake.generic'); + + echo $this->fetch('meta'); + echo $this->fetch('css'); + echo $this->fetch('script'); + ?> + + +
+ +
+ + Session->flash(); ?> + + fetch('content'); ?> +
+ +
+ element('sql_dump'); ?> + + diff --git a/app/View/Layouts/flash.ctp b/app/View/Layouts/flash.ctp new file mode 100644 index 0000000..76fae34 --- /dev/null +++ b/app/View/Layouts/flash.ctp @@ -0,0 +1,37 @@ + + + + +Html->charset(); ?> +<?php echo $page_title; ?> + + + + + + + +

+ + \ No newline at end of file diff --git a/app/View/Layouts/js/default.ctp b/app/View/Layouts/js/default.ctp new file mode 100644 index 0000000..7239b5d --- /dev/null +++ b/app/View/Layouts/js/default.ctp @@ -0,0 +1,2 @@ + + diff --git a/app/View/Layouts/rss/default.ctp b/app/View/Layouts/rss/default.ctp new file mode 100644 index 0000000..077de61 --- /dev/null +++ b/app/View/Layouts/rss/default.ctp @@ -0,0 +1,14 @@ +Rss->document( + $this->Rss->channel( + array(), $channel, $this->fetch('content') + ) +); +?> diff --git a/app/View/Layouts/xml/default.ctp b/app/View/Layouts/xml/default.ctp new file mode 100644 index 0000000..fbd5ee0 --- /dev/null +++ b/app/View/Layouts/xml/default.ctp @@ -0,0 +1 @@ +fetch('content'); ?> diff --git a/app/View/Pages/home.ctp b/app/View/Pages/home.ctp new file mode 100644 index 0000000..9a22923 --- /dev/null +++ b/app/View/Pages/home.ctp @@ -0,0 +1,188 @@ + + +

+ + 0): + Debugger::checkSecurityKeys(); +endif; +?> +

+ + 1) Help me configure it + 2) I don't / can't use URL rewriting +

+

+=')): + echo ''; + echo __d('cake_dev', 'Your version of PHP is 5.2.8 or higher.'); + echo ''; + else: + echo ''; + echo __d('cake_dev', 'Your version of PHP is too low. You need PHP 5.2.8 or higher to use CakePHP.'); + echo ''; + endif; +?> +

+

+ '; + echo __d('cake_dev', 'Your tmp directory is writable.'); + echo ''; + else: + echo ''; + echo __d('cake_dev', 'Your tmp directory is NOT writable.'); + echo ''; + endif; + ?> +

+

+ '; + echo __d('cake_dev', 'The %s is being used for core caching. To change the config edit APP/Config/core.php ', ''. $settings['engine'] . 'Engine'); + echo ''; + else: + echo ''; + echo __d('cake_dev', 'Your cache is NOT working. Please check the settings in APP/Config/core.php'); + echo ''; + endif; + ?> +

+

+ '; + echo __d('cake_dev', 'Your database configuration file is present.'); + $filePresent = true; + echo ''; + else: + echo ''; + echo __d('cake_dev', 'Your database configuration file is NOT present.'); + echo '
'; + echo __d('cake_dev', 'Rename APP/Config/database.php.default to APP/Config/database.php'); + echo '
'; + endif; + ?> +

+ +

+ isConnected()): + echo ''; + echo __d('cake_dev', 'Cake is able to connect to the database.'); + echo ''; + else: + echo ''; + echo __d('cake_dev', 'Cake is NOT able to connect to the database.'); + echo '

'; + echo $connectionError->getMessage(); + echo '
'; + endif; + ?> +

+ +'; + echo __d('cake_dev', 'PCRE has not been compiled with Unicode support.'); + echo '
'; + echo __d('cake_dev', 'Recompile PCRE with Unicode support by adding --enable-unicode-properties when configuring'); + echo '

'; + } +?> +

+

+ +To change its layout, edit: APP/View/Layouts/default.ctp.
+You can also add some CSS styles for your pages at: APP/webroot/css.'); +?> +

+ +

+

+ Html->link( + sprintf('%s %s', __d('cake_dev', 'New'), __d('cake_dev', 'CakePHP 2.0 Docs')), + 'http://book.cakephp.org/2.0/en/', + array('target' => '_blank', 'escape' => false) + ); + ?> +

+

+ Html->link( + __d('cake_dev', 'The 15 min Blog Tutorial'), + 'http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/blog.html', + array('target' => '_blank', 'escape' => false) + ); + ?> +

+ +

+

+ +

+

+ +

+ + diff --git a/app/View/Scaffolds/empty b/app/View/Scaffolds/empty new file mode 100644 index 0000000..e69de29 diff --git a/app/index.php b/app/index.php new file mode 100644 index 0000000..29f2c57 --- /dev/null +++ b/app/index.php @@ -0,0 +1,17 @@ + + RewriteEngine On + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^(.*)$ index.php [QSA,L] + diff --git a/app/webroot/css/cake.generic.css b/app/webroot/css/cake.generic.css new file mode 100644 index 0000000..206d679 --- /dev/null +++ b/app/webroot/css/cake.generic.css @@ -0,0 +1,741 @@ +@charset "utf-8"; +/** + * + * Generic CSS for CakePHP + * + * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) + * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * Redistributions of files must retain the above copyright notice. + * + * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://cakephp.org CakePHP(tm) Project + * @package app.webroot.css + * @since CakePHP(tm) + * @license MIT License (http://www.opensource.org/licenses/mit-license.php) + */ + +* { + margin:0; + padding:0; +} + +/** General Style Info **/ +body { + background: #FFFFFF; + color: #fff; + font-family:'lucida grande',verdana,helvetica,arial,sans-serif; + font-size:90%; + margin: 0; +} +a { + color: #003d4c; + text-decoration: underline; + font-weight: bold; +} +a:hover { + color: #367889; + text-decoration:none; +} +a img { + border:none; +} +h1, h2, h3, h4 { + font-weight: normal; + margin-bottom:0.5em; +} +h1 { + background:#fff; + color: #003d4c; + font-size: 100%; +} +h2 { + background:#fff; + color: #e32; + font-family:'Gill Sans','lucida grande', helvetica, arial, sans-serif; + font-size: 190%; +} +h3 { + color: #2c6877; + font-family:'Gill Sans','lucida grande', helvetica, arial, sans-serif; + font-size: 165%; +} +h4 { + color: #993; + font-weight: normal; +} +ul, li { + margin: 0 12px; +} +p { + margin: 0 0 1em 0; +} + +/** Layout **/ +#container { + text-align: left; +} + +#header{ + padding: 10px 20px; + border: 1px solid black; + border-width: 0 0 1px 0; +} +#header h1 { + line-height:20px; + background: #FFFFFF; + color: #fff; + padding: 0px 30px; +} +#header h1 a { + color: black; + background: #FFF; + font-weight: normal; + text-decoration: none; + vertical-align: bottom; +} +#header h1 a:hover { + color: #fff; + background: #003d4c; +} +#content{ + background: #fff; + clear: both; + color: #333; + padding: 10px 20px 40px 20px; + overflow: auto; +} +#footer { + clear: both; + padding: 6px 10px; + text-align: right; +} + +/** containers **/ +div.form, +div.index, +div.view { + float:right; + width:76%; + border-left:1px solid #666; + padding:10px 2%; +} +div.actions { + float:left; + width:16%; + padding:10px 1.5%; +} +div.actions h3 { + padding-top:0; + color:#777; +} + + +/** Tables **/ +table { + border-right:0; + clear: both; + color: #333; + margin-bottom: 10px; + width: 100%; +} +th { + border:0; + border-bottom:2px solid #555; + text-align: left; + padding:4px; +} +th a { + display: block; + padding: 2px 4px; + text-decoration: none; +} +th a.asc:after { + content: ' ⇣'; +} +th a.desc:after { + content: ' ⇡'; +} +table tr td { + padding: 6px; + text-align: left; + vertical-align: top; + border-bottom:1px solid #ddd; +} +table tr:nth-child(even) { + background: #f9f9f9; +} +td.actions { + text-align: center; + white-space: nowrap; +} +table td.actions a { + margin: 0px 6px; + padding:2px 5px; +} + +/* SQL log */ +.cake-sql-log { + background: #fff; +} +.cake-sql-log td { + padding: 4px 8px; + text-align: left; + font-family: Monaco, Consolas, "Courier New", monospaced; +} +.cake-sql-log caption { + color:#fff; +} + +/** Paging **/ +.paging { + background:#fff; + color: #ccc; + margin-top: 1em; + clear:both; +} +.paging .current, +.paging .disabled, +.paging a { + text-decoration: none; + padding: 5px 8px; + display: inline-block +} +.paging > span { + display: inline-block; + border: 1px solid #ccc; + border-left: 0; +} +.paging > span:hover { + background: #efefef; +} +.paging .prev { + border-left: 1px solid #ccc; + -moz-border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.paging .next { + -moz-border-radius: 0 4px 4px 0; + -webkit-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.paging .disabled { + color: #ddd; +} +.paging .disabled:hover { + background: transparent; +} +.paging .current { + background: #efefef; + color: #c73e14; +} + +/** Scaffold View **/ +dl { + line-height: 2em; + margin: 0em 0em; + width: 60%; +} +dl dd:nth-child(4n+2), +dl dt:nth-child(4n+1) { + background: #f4f4f4; +} + +dt { + font-weight: bold; + padding-left: 4px; + vertical-align: top; + width: 10em; +} +dd { + margin-left: 10em; + margin-top: -2em; + vertical-align: top; +} + +/** Forms **/ +form { + clear: both; + margin-right: 20px; + padding: 0; + width: 95%; +} +fieldset { + border: none; + margin-bottom: 1em; + padding: 16px 10px; +} +fieldset legend { + color: #e32; + font-size: 160%; + font-weight: bold; +} +fieldset fieldset { + margin-top: 0; + padding: 10px 0 0; +} +fieldset fieldset legend { + font-size: 120%; + font-weight: normal; +} +fieldset fieldset div { + clear: left; + margin: 0 20px; +} +form div { + clear: both; + margin-bottom: 1em; + padding: .5em; + vertical-align: text-top; +} +form .input { + color: #444; +} +form .required { + font-weight: bold; +} +form .required label:after { + color: #e32; + content: '*'; + display:inline; +} +form div.submit { + border: 0; + clear: both; + margin-top: 10px; +} +label { + display: block; + font-size: 110%; + margin-bottom:3px; +} +input, textarea { + clear: both; + font-size: 140%; + font-family: "frutiger linotype", "lucida grande", "verdana", sans-serif; + padding: 1%; + width:98%; +} +select { + clear: both; + font-size: 120%; + vertical-align: text-bottom; +} +select[multiple=multiple] { + width: 100%; +} +option { + font-size: 120%; + padding: 0 3px; +} +input[type=checkbox] { + clear: left; + float: left; + margin: 0px 6px 7px 2px; + width: auto; +} +div.checkbox label { + display: inline; +} +input[type=radio] { + float:left; + width:auto; + margin: 6px 0; + padding: 0; + line-height: 26px; +} +.radio label { + margin: 0 0 6px 20px; + line-height: 26px; +} +input[type=submit] { + display: inline; + font-size: 110%; + width: auto; +} +form .submit input[type=submit] { + background:#62af56; + background-image: -webkit-gradient(linear, left top, left bottom, from(#76BF6B), to(#3B8230)); + background-image: -webkit-linear-gradient(top, #76BF6B, #3B8230); + background-image: -moz-linear-gradient(top, #76BF6B, #3B8230); + border-color: #2d6324; + color: #fff; + text-shadow: rgba(0, 0, 0, 0.5) 0px -1px 0px; + padding: 8px 10px; +} +form .submit input[type=submit]:hover { + background: #5BA150; +} +/* Form errors */ +form .error { + background: #FFDACC; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + font-weight: normal; +} +form .error-message { + -moz-border-radius: none; + -webkit-border-radius: none; + border-radius: none; + border: none; + background: none; + margin: 0; + padding-left: 4px; + padding-right: 0; +} +form .error, +form .error-message { + color: #9E2424; + -webkit-box-shadow: none; + -moz-box-shadow: none; + -ms-box-shadow: none; + -o-box-shadow: none; + box-shadow: none; + text-shadow: none; +} + +/** Notices and Errors **/ +.message { + clear: both; + color: #fff; + font-size: 140%; + font-weight: bold; + margin: 0 0 1em 0; + padding: 5px; +} + +.success, +.message, +.cake-error, +.cake-debug, +.notice, +p.error, +.error-message { + background: #ffcc00; + background-repeat: repeat-x; + background-image: -moz-linear-gradient(top, #ffcc00, #E6B800); + background-image: -ms-linear-gradient(top, #ffcc00, #E6B800); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ffcc00), to(#E6B800)); + background-image: -webkit-linear-gradient(top, #ffcc00, #E6B800); + background-image: -o-linear-gradient(top, #ffcc00, #E6B800); + background-image: linear-gradient(top, #ffcc00, #E6B800); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border: 1px solid rgba(0, 0, 0, 0.2); + margin-bottom: 18px; + padding: 7px 14px; + color: #404040; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); +} +.success, +.message, +.cake-error, +p.error, +.error-message { + clear: both; + color: #fff; + background: #c43c35; + border: 1px solid rgba(0, 0, 0, 0.5); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); +} +.success { + clear: both; + color: #fff; + border: 1px solid rgba(0, 0, 0, 0.5); + background: #3B8230; + background-repeat: repeat-x; + background-image: -webkit-gradient(linear, left top, left bottom, from(#76BF6B), to(#3B8230)); + background-image: -webkit-linear-gradient(top, #76BF6B, #3B8230); + background-image: -moz-linear-gradient(top, #76BF6B, #3B8230); + background-image: -ms-linear-gradient(top, #76BF6B, #3B8230); + background-image: -o-linear-gradient(top, #76BF6B, #3B8230); + background-image: linear-gradient(top, #76BF6B, #3B8230); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.3); +} +p.error { + font-family: Monaco, Consolas, Courier, monospace; + font-size: 120%; + padding: 0.8em; + margin: 1em 0; +} +p.error em { + font-weight: normal; + line-height: 140%; +} +.notice { + color: #000; + display: block; + font-size: 120%; + padding: 0.8em; + margin: 1em 0; +} +.success { + color: #fff; +} + +/** Actions **/ +.actions ul { + margin: 0; + padding: 0; +} +.actions li { + margin:0 0 0.5em 0; + list-style-type: none; + white-space: nowrap; + padding: 0; +} +.actions ul li a { + font-weight: normal; + display: block; + clear: both; +} + +/* Buttons and button links */ +input[type=submit], +.actions ul li a, +.actions a { + font-weight:normal; + padding: 4px 8px; + background: #dcdcdc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fefefe), to(#dcdcdc)); + background-image: -webkit-linear-gradient(top, #fefefe, #dcdcdc); + background-image: -moz-linear-gradient(top, #fefefe, #dcdcdc); + background-image: -ms-linear-gradient(top, #fefefe, #dcdcdc); + background-image: -o-linear-gradient(top, #fefefe, #dcdcdc); + background-image: linear-gradient(top, #fefefe, #dcdcdc); + color:#333; + border:1px solid #bbb; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + text-decoration: none; + text-shadow: #fff 0px 1px 0px; + min-width: 0; + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3), 0px 1px 1px rgba(0, 0, 0, 0.2); + -webkit-user-select: none; + user-select: none; +} +.actions ul li a:hover, +.actions a:hover { + background: #ededed; + border-color: #acacac; + text-decoration: none; +} +input[type=submit]:active, +.actions ul li a:active, +.actions a:active { + background: #eee; + background-image: -webkit-gradient(linear, left top, left bottom, from(#dfdfdf), to(#eee)); + background-image: -webkit-linear-gradient(top, #dfdfdf, #eee); + background-image: -moz-linear-gradient(top, #dfdfdf, #eee); + background-image: -ms-linear-gradient(top, #dfdfdf, #eee); + background-image: -o-linear-gradient(top, #dfdfdf, #eee); + background-image: linear-gradient(top, #dfdfdf, #eee); + text-shadow: #eee 0px 1px 0px; + -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + border-color: #aaa; + text-decoration: none; +} + +/** Related **/ +.related { + clear: both; + display: block; +} + +/** Debugging **/ +pre { + color: #000; + background: #f0f0f0; + padding: 15px; + -moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3); + box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.3); +} +.cake-debug-output { + padding: 0; + position: relative; +} +.cake-debug-output > span { + position: absolute; + top: 5px; + right: 5px; + background: rgba(255, 255, 255, 0.3); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + padding: 5px 6px; + color: #000; + display: block; + float: left; + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5); + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.5); + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); +} +.cake-debug, +.cake-error { + font-size: 16px; + line-height: 20px; + clear: both; +} +.cake-error > a { + text-shadow: none; +} +.cake-error { + white-space: normal; +} +.cake-stack-trace { + background: rgba(255, 255, 255, 0.7); + color: #333; + margin: 10px 0 5px 0; + padding: 10px 10px 0 10px; + font-size: 120%; + line-height: 140%; + overflow: auto; + position: relative; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; +} +.cake-stack-trace a { + text-shadow: none; + background: rgba(255, 255, 255, 0.7); + padding: 5px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 10px; + margin: 0px 4px 10px 2px; + font-family: sans-serif; + font-size: 14px; + line-height: 14px; + display: inline-block; + text-decoration: none; + -moz-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3); + box-shadow: inset 0px 1px 0 rgba(0, 0, 0, 0.3); +} +.cake-code-dump pre { + position: relative; + overflow: auto; +} +.cake-context { + margin-bottom: 10px; +} +.cake-stack-trace pre { + color: #000; + background-color: #F0F0F0; + margin: 0px 0 10px 0; + padding: 1em; + overflow: auto; + text-shadow: none; +} +.cake-stack-trace li { + padding: 10px 5px 0px; + margin: 0 0 4px 0; + font-family: monospace; + border: 1px solid #bbb; + -moz-border-radius: 4px; + -wekbkit-border-radius: 4px; + border-radius: 4px; + background: #dcdcdc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fefefe), to(#dcdcdc)); + background-image: -webkit-linear-gradient(top, #fefefe, #dcdcdc); + background-image: -moz-linear-gradient(top, #fefefe, #dcdcdc); + background-image: -ms-linear-gradient(top, #fefefe, #dcdcdc); + background-image: -o-linear-gradient(top, #fefefe, #dcdcdc); + background-image: linear-gradient(top, #fefefe, #dcdcdc); +} +/* excerpt */ +.cake-code-dump pre, +.cake-code-dump pre code { + clear: both; + font-size: 12px; + line-height: 15px; + margin: 4px 2px; + padding: 4px; + overflow: auto; +} +.cake-code-dump .code-highlight { + display: block; + background-color: rgba(255, 255, 0, 0.5); +} +.code-coverage-results div.code-line { + padding-left:5px; + display:block; + margin-left:10px; +} +.code-coverage-results div.uncovered span.content { + background:#ecc; +} +.code-coverage-results div.covered span.content { + background:#cec; +} +.code-coverage-results div.ignored span.content { + color:#aaa; +} +.code-coverage-results span.line-num { + color:#666; + display:block; + float:left; + width:20px; + text-align:right; + margin-right:5px; +} +.code-coverage-results span.line-num strong { + color:#666; +} +.code-coverage-results div.start { + border:1px solid #aaa; + border-width:1px 1px 0px 1px; + margin-top:30px; + padding-top:5px; +} +.code-coverage-results div.end { + border:1px solid #aaa; + border-width:0px 1px 1px 1px; + margin-bottom:30px; + padding-bottom:5px; +} +.code-coverage-results div.realstart { + margin-top:0px; +} +.code-coverage-results p.note { + color:#bbb; + padding:5px; + margin:5px 0 10px; + font-size:10px; +} +.code-coverage-results span.result-bad { + color: #a00; +} +.code-coverage-results span.result-ok { + color: #fa0; +} +.code-coverage-results span.result-good { + color: #0a0; +} + +/** Elements **/ +#url-rewriting-warning { + display:none; +} diff --git a/app/webroot/favicon.ico b/app/webroot/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b36e81f2f35133dede48dc18f78d3e1a3353f7bc GIT binary patch literal 372 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 U{@d2-X8-^I07*qoM6N<$f^>H7f&c&j literal 0 HcmV?d00001 diff --git a/app/webroot/img/cake.icon.png b/app/webroot/img/cake.icon.png new file mode 100644 index 0000000000000000000000000000000000000000..394fa42d5131cdc7b0b1246af93b92179f3c887e GIT binary patch literal 943 zcmV;g15o^lP)9q)cr7> zIGsQFGn3| zCzs2iP$-yfVPOGVTU&6sT(-5fwHb2tVsLP9#{Vr9Ct?R7q(rf?v2A5#W$OI=e1YUJ zQ1YRnA&iWSQ1XYAm__>aYb6XIhMiYVD+-z8_pYi6+CsH{*^m;vOjqvbr=H&DFkeqxHQBh$Scsoy0Glw(T zsaSG*ok62V;~yXYNgP*DUw;o98^+0@vGFb{HC+As}XJ=;xg=B7N_;-mKbHH{|lXs_o+aPcs5~J?s%^P2Odb)Uz z$GvY6^!N9(C2-h?28B$qx7%_yHnt2eU%nQ0qThbl6a_+b)EirjBgQ`g1_07Fr&6R? RzIgxu002ovPDHLkV1mdlwUYn< literal 0 HcmV?d00001 diff --git a/app/webroot/img/cake.power.gif b/app/webroot/img/cake.power.gif new file mode 100644 index 0000000000000000000000000000000000000000..8f8d570a2e24d86f0ad7730ee8f2435fd49f152c GIT binary patch literal 201 zcmV;)05<&ZTq0L2I(c1A@d@rg`ENj#vn zcl`yi#iKX*jb2F7vd0WQgUq5Tw}Jp}g+ZnCeBY3dYNI+m71%bHRfx4UCkD2th(Q*@ zmd5r+MJNYn7MP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0006>Nklb9w)H??3Zq{to|uwe}MC z?e+bSKTh?^`{wD^wWPb{@}CHTKzw?6`$N5PyyB2n?^xO1cT3;J75nFbCC72*cXxMX zxm>nuPu5Jmal8UN_lgUheaAk$l{jyl3&KrcBcIP#g%B8HC>Dz>KUn6j_Z4&V8GCzs z-A1EvJqQBvqUM>*;2yA1EEd0ylNIZ(i;!35`Jv=;2ffT?2Hm9ejw-*-|nVOoS zP$-bg<ZSNe~2d zIvrfsrBEnvbaVtD0RtdB&%Ev&{`8k5nAgpm!>J!T7(dIo(HhhYPE122Ukjo z)|xnuiK1xS*%(6!=07%mmpr3`|W=94{ zl7!J{gb;!>P0?DTlp>B}thHEcQAz=P&I}}wOVjjGmP3*xD5d^b*-V_DpQDs|1-u(S z2jBtm%*+h=eE!N=P)c!fasm(lgNzq|0@nKdKEvVguj1iwnEipLzl$$o0oV~jSl{>U o#KeU4ecuWpEU@#dehEJZ0P;*FSb&o|IsgCw07*qoM6N<$f;Xi=v;Y7A literal 0 HcmV?d00001 diff --git a/app/webroot/img/test-fail-icon.png b/app/webroot/img/test-fail-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d2f147ec4ef406186c967c17aa9d592a09336e GIT binary patch literal 496 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8r2#%6u9q1Y_A@XXWnehT!0_XL%T5M{>kJI%85mYDFg#fm z@qmG069dC728KUx-uyQ(To^b!NZ6$XaAf}9Vfq#lclKVe|Fz`$^pf#C)( z?|%b>GYkxe7#Qw~i+_GseHzG+ka#R5b(MkPp}6=pPR{@T|KFMBG8O1x^O7LHU?7(a zz#tGgw;O20JWm(LkcwMA=Z`Zr83?dk2y7BE6=YUe|*dabSZF*mIx>v0bsK zhImj64Tcwn`A_+lH49lnMl*u*gGmJ>51|J|OF=yr*B8yJW~ec3o5lk`2g|wzshC-w ziSCMq2n+=S*%-Br(g+${U@~D`FhT&sxB*oN&;*cc$WcTT9wVtcsdKUucOmbP;||0x z#q3tLa6o9^vHKPIF?*Owqq5D^MpaVDQnH801Nwb#BL&(K7w$YlkeuS0|3?^KwXL|W zZgJvS!cr?^E>%Hd`MA%ASbAg$QJRhgw-~dTt8se0&H5u6>~Hz*7HSB4*!uq4vq;NjRN`wbRrY=k ztZO7Hf9`nx3i*;j@S2CmwzWRi?KpG$@ix}{S-*Q_F&XAfUVh5qiW8;W{?l*PWU~|& zXJF+?I7gWJwdv?FLs}6xsv$ajvf*#NUOnZcOK`I#;=J!d&L`LN;INb9hb~B}{sAr8 BX72z1 literal 0 HcmV?d00001 diff --git a/app/webroot/img/test-skip-icon.png b/app/webroot/img/test-skip-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..749771c9895a1abbb843f894540a43a5dc426b2c GIT binary patch literal 1207 zcmcgr`BM@I7-iGaX-3y=+tk$2=@1heYqQ2Fr&dQR+w#8F+EyJ=3j{$FBt!*70YwQk z&qPo`NyPiUZ$&My$ooDs54`YP_Mg~q=6i3xpWeLp=A+ozJW)A+`8)ssP_ce$=^$sd z|5jN+js`b>c9fGQ%E}Gp2=_suJ&|C5xi{PktY_`-=?iuMdwPc;I>BZDfC9koxs%l! zEKAYA?)3C@cTc8#*X_a+xXL52WNcR59{1Y|%sC@xAdC&dt3FBE?v&eJ(VET#C1aPfAbX9c(2(>>t!J=b9>Y}4{Vv&J?_v2@ z{Zeit+2+s~*}>tpx2alAc$vPpzT>hM@4;GBTU{^zhonf02G`{6!jDK79JiR5fMQk5Qsz~iA0Kwj3krEQBhIR(a{tNg-WH;XtbD^nAq4@I-MRD z7Z)EN&tNd#zkknUGFdEELPA1fV&aDnACi)il9Q8DQc_Y=Q`6GY($mvFe*Bn`k-=uO zGcz+e91fSu&C1Hk&d$!s$>H&Md_F%nH#aXYPaqI{`t&J3KVK*m78DeSM54mN!lI(0 z;^N|xl9JNW(z3F$^78VEii*n0%BrfW>gwv6nwr|$+Pb>B`uh5YhK9z*#-^sG=H}*> zmX_Am*0#2`_V)IUj*iaG&aSSm?(S}}SlrXo)7#tI*Vp&?^XD&LzV!F^4-52q~$`a_L84UdB=6VyZ=u9nnig?j|*#Wx)G#h*aePfzjUYo@M;4}Fb&*iuQMNlT)P zH1r_DmZyA5)S=yZ1P7iME0&D<)aAv^j SzbA!qhX89U8%v>u2jO4XOSDb^ literal 0 HcmV?d00001 diff --git a/app/webroot/index.php b/app/webroot/index.php new file mode 100644 index 0000000..e125e09 --- /dev/null +++ b/app/webroot/index.php @@ -0,0 +1,92 @@ +dispatch(new CakeRequest(), new CakeResponse(array('charset' => Configure::read('App.encoding')))); diff --git a/app/webroot/js/empty b/app/webroot/js/empty new file mode 100644 index 0000000..e69de29 diff --git a/app/webroot/test.php b/app/webroot/test.php new file mode 100644 index 0000000..39bea7a --- /dev/null +++ b/app/webroot/test.php @@ -0,0 +1,92 @@ + + * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * + * Licensed under The MIT License + * Redistributions of files must retain the above copyright notice + * + * @copyright Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org) + * @link http://book.cakephp.org/2.0/en/development/testing.html + * @package app.webroot + * @since CakePHP(tm) v 1.2.0.4433 + * @license MIT License (http://www.opensource.org/licenses/mit-license.php) + */ +set_time_limit(0); +ini_set('display_errors', 1); +/** + * Use the DS to separate the directories in other defines + */ +if (!defined('DS')) { + define('DS', DIRECTORY_SEPARATOR); +} +/** + * These defines should only be edited if you have cake installed in + * a directory layout other than the way it is distributed. + * When using custom settings be sure to use the DS and do not add a trailing DS. + */ + +/** + * The full path to the directory which holds "app", WITHOUT a trailing DS. + * + */ +if (!defined('ROOT')) { + define('ROOT', dirname(dirname(dirname(__FILE__)))); +} +/** + * The actual directory name for the "app". + * + */ +if (!defined('APP_DIR')) { + define('APP_DIR', basename(dirname(dirname(__FILE__)))); +} + +/** + * The absolute path to the "Cake" directory, WITHOUT a trailing DS. + * + * For ease of development CakePHP uses PHP's include_path. If you + * need to cannot modify your include_path, you can set this path. + * + * Leaving this constant undefined will result in it being defined in Cake/bootstrap.php + */ + //define('CAKE_CORE_INCLUDE_PATH', ROOT . DS . 'lib'); + +/** + * Editing below this line should not be necessary. + * Change at your own risk. + * + */ +if (!defined('WEBROOT_DIR')) { + define('WEBROOT_DIR', basename(dirname(__FILE__))); +} +if (!defined('WWW_ROOT')) { + define('WWW_ROOT', dirname(__FILE__) . DS); +} + +if (!defined('CAKE_CORE_INCLUDE_PATH')) { + if (function_exists('ini_set')) { + ini_set('include_path', ROOT . DS . 'lib' . PATH_SEPARATOR . ini_get('include_path')); + } + if (!include ('Cake' . DS . 'bootstrap.php')) { + $failed = true; + } +} else { + if (!include (CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) { + $failed = true; + } +} +if (!empty($failed)) { + trigger_error("CakePHP core could not be found. Check the value of CAKE_CORE_INCLUDE_PATH in APP/webroot/index.php. It should point to the directory containing your " . DS . "cake core directory and your " . DS . "vendors root directory.", E_USER_ERROR); +} + +if (Configure::read('debug') < 1) { + die(__d('cake_dev', 'Debug setting does not allow access to this url.')); +} + +require_once CAKE . 'TestSuite' . DS . 'CakeTestSuiteDispatcher.php'; + +CakeTestSuiteDispatcher::run();