diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..86a0a44e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+Config/database.php
+tmp
+Plugin/DebugKit
+Plugin/Setup
+/Config/configs_private.php
+_*
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 00000000..09b2d65c
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,6 @@
+[submodule "Plugin/Tools"]
+ path = Plugin/Tools
+ url = https://github.com/dereuromark/tools/
+[submodule "Plugin/Authenticate"]
+ path = Plugin/Authenticate
+ url = https://github.com/ceeram/Authenticate/
diff --git a/.htaccess b/.htaccess
new file mode 100644
index 00000000..d054fb0a
--- /dev/null
+++ b/.htaccess
@@ -0,0 +1,5 @@
+
+ RewriteEngine on
+ RewriteRule ^$ webroot/ [L]
+ RewriteRule (.*) webroot/$1 [L]
+
diff --git a/Config/Schema/schema.php b/Config/Schema/schema.php
new file mode 100644
index 00000000..88892813
--- /dev/null
+++ b/Config/Schema/schema.php
@@ -0,0 +1,30 @@
+ array('type' => 'integer', 'null' => false, 'default' => null, 'key' => 'primary'),
+ 'active' => array('type' => 'boolean', 'null' => false, 'default' => '0'),
+ 'last_login' => array('type' => 'datetime', 'null' => false, 'default' => null),
+ 'created' => array('type' => 'datetime', 'null' => true, 'default' => null),
+ 'modified' => array('type' => 'datetime', 'null' => true, 'default' => null),
+ 'logins' => array('type' => 'integer', 'null' => false, 'default' => '0', 'length' => 10),
+ 'login_errors' => array('type' => 'integer', 'null' => false, 'default' => '0', 'length' => 10, 'comment' => 'count++'),
+ 'flood_protection' => array('type' => 'datetime', 'null' => false, 'default' => null, 'comment' => 'access denied X min.'),
+ 'username' => array('type' => 'string', 'null' => false, 'default' => null, 'length' => 30, 'collate' => 'utf8_unicode_ci', 'charset' => 'utf8'),
+ 'password' => array('type' => 'string', 'null' => false, 'default' => null, 'length' => 64, 'collate' => 'utf8_unicode_ci', 'charset' => 'utf8'),
+ 'email' => array('type' => 'string', 'null' => false, 'default' => null, 'length' => 80, 'collate' => 'utf8_unicode_ci', 'charset' => 'utf8'),
+ 'role_id' => array('type' => 'integer', 'null' => false, 'default' => '0', 'length' => 2),
+ 'indexes' => array(
+ 'PRIMARY' => array('column' => 'id', 'unique' => 1)
+ ),
+ 'tableParameters' => array('charset' => 'utf8', 'collate' => 'utf8_unicode_ci', 'engine' => 'MyISAM')
+ );
+
+}
diff --git a/Config/acl.ini b/Config/acl.ini
new file mode 100644
index 00000000..7b3357d2
--- /dev/null
+++ b/Config/acl.ini
@@ -0,0 +1,8 @@
+[Overview]
+* = user,admin
+
+[Account]
+* = user,admin
+
+[Users]
+* = admin
diff --git a/Config/bootstrap.php b/Config/bootstrap.php
new file mode 100644
index 00000000..3a298659
--- /dev/null
+++ b/Config/bootstrap.php
@@ -0,0 +1,19 @@
+ 1,
+ 'check_for_cake_version' => 0, # gecached 24 hours :-)
+ 'check_for_php_version' => 0, # gecached 48 hours :-)
+ 'ajax_remember' => 1, # ajax remember current tab
+ 'override' => 1 # if cache etc is usually disabled in debug mode, this overrides it
+);
+
+/** private information holder */
+$config['Mail'] = array(
+ 'debug' => 0, # 0=no,1=flashMessageAfterwards,2=fullDebug(noMailSent)
+ 'log' => 1,
+ 'use_smtp' => 1,
+ 'smtp_port' => 25,
+ 'smtp_timeout' => 20,
+ 'smtp_host' => '',
+ 'smtp_username' => '',
+ 'smtp_password' => '',
+);
+
+$config['Google'] = array(
+ 'key' => '',
+ 'api' => '2.x',
+ 'zoom' => 6,
+ 'lat' => 51,
+ 'lng' => 11,
+ 'type' => 'G_NORMAL_MAP',
+ 'static_size' => '500x500'
+);
+
+$config['Role'] = array(
+ 'admin' => '1',
+ 'user' => '2',
+);
+
+$config['App'] = array(
+ 'language' => 'eng',
+);
+
+$config['Asset'] = array(
+ 'js' => 'buffer'
+);
+
+$config['Cronjob'] = array(
+ 'code' => 'xyz',
+ 'www_active' => 1, # if cronjobs are possible from www (/cronjobs/run/)
+);
+
+$config['Config'] = array(
+ 'admin_name' => 'Site Owner',
+ 'admin_email' => 'test@test.de',
+ 'admin_emailname' => 'Site Owner',
+ 'no_reply_email' => 'noreply@test.de',
+ 'no_reply_emailname' => '',
+ 'max_emails' => '10',
+ 'page_name' => 'Sandbox',
+ 'domain_name' => 'CakePHP Sandbox',
+ 'keywords' => '',
+ 'description' => '',
+ 'author' => '',
+ 'flood_protection' => 60, # seconds
+ 'bruteforce_trials' => 2,
+ 'bruteforce_interval' => 60, # seconds
+ //'max_login_trials' => 2,
+ 'secure_critical_actions' => 1, # pw neccessary -> more security (change_pw, change_email, Account delete)
+ 'admin_appr_register' => 0, # if user can access site right after activation
+ 'user_online_time' => 10, # minutes
+ 'user_inactive_time' => 20, # minutes
+ 'insert_ip' => 0, # insert ips on login in users table
+ 'check_ip' => 0, # trigger admin warning if different users sign in with the same ip
+ 'soft_delete' => 1, # 1=UsernameIsDeleted, but UserRecord is not deleted
+ 'allow_register' => 0
+);
+
+$config['Twitter'] = array(
+ 'id' => '',
+ 'cache_duration' => ''
+);
+/** end: private information holder */
+
+$config['Settings'] = array(
+ 'version' => '1.0',
+ 'title' => 'CakePHP Sandbox',
+);
+
+$config['Caching'] = array(
+ 'default' => '+4 hours',
+ 'short' => '+1 day',
+ 'medium' => '+1 week',
+ 'long' => '+1 month',
+ 'test' => '+30 seconds',
+ 'url_cache_type' => 'pages' # pages (single pages) / combined (all together) / false
+);
+
+$config['LanguagesAvailable'] = array( # supported languages
+ //'de',
+ 'en',
+ //'it'
+);
+
+$config['Languages'] = array(
+ 'de' => '',
+ 'en' => '',
+ 'it' => ''
+);
+
+/** 0000 to 0777 Rights **/
+$config['FolderRights'] = array(
+ 'locale' => '0777',
+ 'webroot' . DS . 'img' => '0777',
+ 'webroot' . DS . 'files' => '0777',
+ 'webroot' . DS . 'folder' => '0777',
+ );
+
+$config['Currency'] = array(
+ 'code' => 'EUR',
+ 'symbolLeft' => '€',
+ 'symbolRight' => '',
+ 'places' => '2',
+ 'thousands' => '.',
+ 'decimals' => ',',
+);
+
+$config['Localization'] = array(
+ 'address_format' => 'de',
+ 'thousands' => '.',
+ 'decimals' => ',',
+);
+
diff --git a/Config/core.php b/Config/core.php
new file mode 100644
index 00000000..9df8b180
--- /dev/null
+++ b/Config/core.php
@@ -0,0 +1,269 @@
+ 0
+ * and log errors with CakeLog when debug = 0.
+ *
+ * Options:
+ *
+ * - `handler` - callback - The callback to handle errors. You can set this to any callback type,
+ * including anonymous functions.
+ * - `level` - int - The level of errors you are interested in capturing.
+ * - `trace` - boolean - Include stack traces for errors in log files.
+ *
+ * @see ErrorHandler for more information on error handling and configuration.
+ */
+ Configure::write('Error', array(
+ 'handler' => 'ErrorHandler::handleError',
+ 'level' => E_ALL & ~E_DEPRECATED,
+ //'level' => E_ALL | E_STRICT,
+ 'trace' => true
+ ));
+
+/**
+ * Configure the Exception handler used for uncaught exceptions. By default,
+ * ErrorHandler::handleException() is used. It will display a HTML page for the exception, and
+ * while debug > 0, framework errors like Missing Controller will be displayed. When debug = 0,
+ * framework errors will be coerced into generic HTTP errors.
+ *
+ * Options:
+ *
+ * - `handler` - callback - The callback to handle exceptions. You can set this to any callback type,
+ * including anonymous functions.
+ * - `renderer` - string - The class responsible for rendering uncaught exceptions. If you choose a custom class you
+ * should place the file for that class in app/Lib/Error. This class needs to implement a render method.
+ * - `log` - boolean - Should Exceptions be logged?
+ *
+ * @see ErrorHandler for more information on exception handling and configuration.
+ */
+ Configure::write('Exception', array(
+ 'handler' => 'ErrorHandler::handleException',
+ 'renderer' => 'ExceptionRenderer',
+ 'log' => true
+ ));
+
+/**
+ * Application wide charset encoding
+ */
+ Configure::write('App.encoding', 'UTF-8');
+ mb_internal_encoding('UTF-8');
+ mb_encode_mimeheader('UTF-8');
+ mb_http_output('UTF-8');
+
+/**
+ * To configure CakePHP *not* to use mod_rewrite and to
+ * use CakePHP pretty URLs, remove these .htaccess
+ * files:
+ *
+ * /.htaccess
+ * /app/.htaccess
+ * /app/webroot/.htaccess
+ *
+ * And uncomment the App.baseUrl below:
+ */
+ //Configure::write('App.baseUrl', env('SCRIPT_NAME'));
+/**
+ * Uncomment the define below to use CakePHP admin routes.
+ *
+ * The value of the define determines the name of the route
+ * and its associated controller actions:
+ *
+ * 'admin' -> admin_index() and /admin/controller/index
+ * 'superuser' -> superuser_index() and /superuser/controller/index
+ */
+
+ Configure::write('Routing.prefixes', array('admin'));
+
+Configure::write('Dispatcher.filters', array(
+ 'AssetDispatcher',
+ //'CacheDispatcher'
+));
+
+/**
+ * Turn off all caching application-wide.
+ *
+ */
+ //Configure::write('Cache.disable', false);
+/**
+ * Enable cache checking.
+ *
+ * If set to true, for view caching you must still use the controller
+ * public $cacheAction inside your controllers to define caching settings.
+ * You can either set it controller-wide by setting public $cacheAction = true,
+ * or in each action using $this->cacheAction = true.
+ *
+ */
+ Configure::write('Cache.check', true);
+/**
+ * Defines the default error type when using the log() function. Used for
+ * differentiating error logging and debugging. Currently PHP supports LOG_DEBUG.
+ */
+ define('LOG_ERROR', 2);
+
+ Configure::write('Session', array(
+ 'defaults' => 'php',
+ 'timeout' => 4000,
+ 'cookie' => 'SANDBOX',
+ 'checkAgent' => true
+ ));
+
+/**
+ * The level of CakePHP security. The session timeout time defined
+ * in 'Session.timeout' is multiplied according to the settings here.
+ * Valid values:
+ *
+ * 'high' Session timeout in 'Session.timeout' x 10
+ * 'medium' Session timeout in 'Session.timeout' x 100
+ * 'low' Session timeout in 'Session.timeout' x 300
+ *
+ * CakePHP session IDs are also regenerated between requests if
+ * 'Security.level' is set to 'high'.
+ */
+ Configure::write('Security.level', 'low');
+/**
+ * A random string used in security hashing methods.
+ */
+ Configure::write('Security.salt', '9163a89ca59ead88188a917dd5e64eb316e175b8');
+/**
+ * Compress CSS output by removing comments, whitespace, repeating tags, etc.
+ * This requires a/var/cache directory to be writable by the web server for caching.
+ * and /vendors/csspp/csspp.php
+ *
+ * To use, prefix the CSS link URL with '/ccss/' instead of '/css/' or use HtmlHelper::css().
+ */
+ //Configure::write('Asset.filter.css', 'css.php');
+/**
+ * Plug in your own custom JavaScript compressor by dropping a script in your webroot to handle the
+ * output, and setting the config below to the name of the script.
+ *
+ * To use, prefix your JavaScript link URLs with '/cjs/' instead of '/js/' or use JavaScriptHelper::link().
+ */
+ //Configure::write('Asset.filter.js', 'custom_javascript_output_filter.php');
+/**
+ * The classname and database used in CakePHP's
+ * access control lists.
+ */
+ Configure::write('Acl.classname', 'DbAcl');
+ Configure::write('Acl.database', 'default');
+/**
+ *
+ * Cache Engine Configuration
+ * Default settings provided below
+ *
+ * File storage engine.
+ *
+ * Cache::config('default', array(
+ * 'engine' => 'File', //[required]
+ * 'duration'=> 3600, //[optional]
+ * 'probability'=> 100, //[optional]
+ * 'path' => CACHE, //[optional] use system tmp directory - remember to use absolute path
+ * 'prefix' => 'cake_', //[optional] prefix every cache file with this string
+ * 'lock' => false, //[optional] use file locking
+ * 'serialize' => true, [optional]
+ * ));
+ *
+ *
+ * APC (http://pecl.php.net/package/APC)
+ *
+ * Cache::config('default', array(
+ * 'engine' => 'Apc', //[required]
+ * 'duration'=> 3600, //[optional]
+ * 'probability'=> 100, //[optional]
+ * 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
+ * ));
+ *
+ * Xcache (http://xcache.lighttpd.net/)
+ *
+ * Cache::config('default', array(
+ * 'engine' => 'Xcache', //[required]
+ * 'duration'=> 3600, //[optional]
+ * 'probability'=> 100, //[optional]
+ * 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
+ * 'user' => 'user', //user from xcache.admin.user settings
+ * 'password' => 'password', //plaintext password (xcache.admin.pass)
+ * ));
+ *
+ *
+ * Memcache (http://www.danga.com/memcached/)
+ *
+ * Cache::config('default', array(
+ * 'engine' => 'Memcache', //[required]
+ * 'duration'=> 3600, //[optional]
+ * 'probability'=> 100, //[optional]
+ * 'prefix' => Inflector::slug(APP_DIR) . '_', //[optional] prefix every cache file with this string
+ * 'servers' => array(
+ * '127.0.0.1:11211' // localhost, default port 11211
+ * ), //[optional]
+ * 'compress' => false, // [optional] compress data in Memcache (slower, but uses less memory)
+ * ));
+ *
+ */
+$engine = 'File';
+if (extension_loaded('apc') && function_exists('apc_dec') && (php_sapi_name() !== 'cli' || ini_get('apc.enable_cli'))) {
+ //$engine = 'Apc';
+}
+
+// In development mode, caches should expire quickly.
+$duration = '+999 days';
+if (Configure::read('debug') >= 1) {
+ $duration = '20 seconds';
+}
+
+/**
+ * Configure the cache used for general framework caching. Path information,
+ * object listings, and translation cache files are stored with this configuration.
+ */
+Cache::config('_cake_core_', array(
+ 'engine' => $engine,
+ 'prefix' => 'cake_core_',
+ 'path' => CACHE . 'persistent' . DS,
+ 'serialize' => ($engine === 'File'),
+ 'duration' => $duration
+));
+
+/**
+ * Configure the cache for model and datasource caches. This cache configuration
+ * is used to store schema descriptions, and table listings in connections.
+ */
+Cache::config('_cake_model_', array(
+ 'engine' => $engine,
+ 'prefix' => 'cake_model_',
+ 'path' => CACHE . 'models' . DS,
+ 'serialize' => ($engine === 'File'),
+ 'duration' => $duration
+));
+
+Cache::config('default', array(
+ 'engine' => $engine,
+ 'duration' => 31 * DAY,
+ //'path' => CACHE . 'data' . DS,
+));
+
+Cache::config('data', array(
+ 'engine' => $engine,
+ 'prefix' => '',
+ 'path' => CACHE . 'data' . DS,
+ 'serialize' => ($engine === 'File'),
+ 'duration' => '+1 day'
+));
+
diff --git a/Config/database.php.default b/Config/database.php.default
new file mode 100644
index 00000000..4856256d
--- /dev/null
+++ b/Config/database.php.default
@@ -0,0 +1,103 @@
+
+ * Copyright 2005-2008, Cake Software Foundation, Inc.
+ * 1785 E. Sahara Avenue, Suite 490-204
+ * Las Vegas, Nevada 89104
+ *
+ * Licensed under The MIT License
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @filesource
+ * @copyright Copyright 2005-2008, Cake Software Foundation, Inc.
+ * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
+ * @package cake
+ * @subpackage cake.app.config
+ * @since CakePHP(tm) v 0.2.9
+ * @version $Revision: 7062 $
+ * @modifiedby $LastChangedBy: nate $
+ * @lastmodified $Date: 2008-05-30 06:29:53 -0500 (Fri, 30 May 2008) $
+ * @license http://www.opensource.org/licenses/mit-license.php The MIT License
+ */
+/**
+ * In this file you set up your database connection details.
+ *
+ * @package cake
+ * @subpackage cake.config
+ */
+/**
+ * Database configuration class.
+ * You can specify multiple configurations for production, development and testing.
+ *
+ * driver => The name of a supported driver; valid options are as follows:
+ * mysql - MySQL 4 & 5,
+ * mysqli - MySQL 4 & 5 Improved Interface (PHP5 only),
+ * sqlite - SQLite (PHP5 only),
+ * postgres - PostgreSQL 7 and higher,
+ * mssql - Microsoft SQL Server 2000 and higher,
+ * db2 - IBM DB2, Cloudscape, and Apache Derby (http://php.net/ibm-db2)
+ * oracle - Oracle 8 and higher
+ * firebird - Firebird/Interbase
+ * sybase - Sybase ASE
+ * adodb-[drivername] - ADOdb interface wrapper (see below),
+ * pear-[drivername] - PEAR::DB wrapper
+ *
+ * You can add custom database drivers (or override existing drivers) by adding the
+ * appropriate file to app/models/datasources/dbo. Drivers should be named 'dbo_x.php',
+ * where 'x' is the name of the database.
+ *
+ * persistent => true / false
+ * Determines whether or not the database should use a persistent connection
+ *
+ * connect =>
+ * ADOdb set the connect to one of these
+ * (http://phplens.com/adodb/supported.databases.html) and
+ * append it '|p' for persistent connection. (mssql|p for example, or just mssql for not persistent)
+ * For all other databases, this setting is deprecated.
+ *
+ * host =>
+ * the host you connect to the database. To add a socket or port number, use 'port' => #
+ *
+ * prefix =>
+ * Uses the given prefix for all the tables in this database. This setting can be overridden
+ * on a per-table basis with the Model::$tablePrefix property.
+ *
+ * schema =>
+ * For Postgres and DB2, specifies which schema you would like to use the tables in. Postgres defaults to
+ * 'public', DB2 defaults to empty.
+ *
+ * encoding =>
+ * For MySQL, MySQLi, Postgres and DB2, specifies the character encoding to use when connecting to the
+ * database. Defaults to 'UTF-8' for DB2. Uses database default for all others.
+ *
+ */
+class DATABASE_CONFIG {
+
+ var $default = array(
+ 'driver' => 'mysql',
+ 'persistent' => false,
+ 'host' => 'localhost',
+ 'login' => 'user',
+ 'password' => 'password',
+ 'database' => 'database_name',
+ 'prefix' => '',
+ );
+
+ var $test = array(
+ 'driver' => 'mysql',
+ 'persistent' => false,
+ 'host' => 'localhost',
+ 'login' => 'user',
+ 'password' => 'password',
+ 'database' => 'test_database_name',
+ 'prefix' => '',
+ );
+}
+?>
\ No newline at end of file
diff --git a/Config/routes.php b/Config/routes.php
new file mode 100644
index 00000000..1de9e3ba
--- /dev/null
+++ b/Config/routes.php
@@ -0,0 +1,35 @@
+ 'overview', 'action' => 'index'));
+/**
+* ...and connect the rest of 'Pages' controller's urls.
+* WHY NOT WORKING?
+*/
+Router::connect('/page/*', array('plugin' => 0, 'controller' => 'pages', 'action' => 'display'));
+
+//Router::connect('/user/*', array('admin'=>false, 'controller' => 'users', 'action' => 'view'));
+
+Router::connect('/register', array('controller' => 'account', 'action' => 'register'));
+Router::connect('/login', array('controller' => 'account', 'action' => 'login'));
+Router::connect('/logout', array('controller' => 'account', 'action' => 'logout'));
+
+//route to switch locale
+//Router::connect('/lang/*', array('controller' => 'p28n', 'action' => 'change'));
+
+Router::connect('/admin', array('admin' => 'admin', 'controller' => 'overview', 'action' => 'index'));
+
+//Router::connect('/translate', array('plugin' => 'translate', 'controller' => 'translate_groups', 'action' => 'overview'));
+
+CakePlugin::routes();
+
+/**
+* Load the CakePHP default routes. Remove this if you do not want to use
+* the built-in default routes.
+*/
+require CAKE . 'Config' . DS . 'routes.php';
\ No newline at end of file
diff --git a/Controller/AccountController.php b/Controller/AccountController.php
new file mode 100644
index 00000000..9d27ecdd
--- /dev/null
+++ b/Controller/AccountController.php
@@ -0,0 +1,238 @@
+Auth->allow('login', 'logout', 'register', 'activate', 'lost_password', 'change_password');
+ }
+
+ /**
+ * AccountController::login()
+ *
+ * @return void
+ */
+ public function login() {
+ if ($this->Common->isPosted()) {
+ if ($this->Auth->login()) {
+ $this->Common->flashMessage(__('loggedInMessage'), 'success');
+
+ return $this->redirect($this->Auth->redirectUrl());
+ }
+ $this->request->data['User']['password'] = '';
+
+ } else {
+ if ($username = $this->request->query('username')) {
+ $this->request->data['User']['login'] = $username;
+ }
+ }
+ }
+
+ /**
+ * AccountController::logout()
+ *
+ * @return void
+ */
+ public function logout() {
+ $whereTo = $this->Auth->logout();
+ # delete cookie
+ if (Configure::read('Config.rememberMe')) {
+ $this->Comon->loadComponent('Tools.RememberMe');
+ $this->RememberMe->delete();
+ }
+ $this->Common->flashMessage(__('loggedOutMessage'), 'success');
+ return $this->redirect($whereTo);
+ }
+
+ /**
+ * AccountController::lost_password()
+ *
+ * @param string $key
+ * @return void
+ */
+ public function lost_password($key = null) {
+ if ($this->Common->isPosted()) {
+ $keyToCheck = $this->request->data('Form.key');
+ } elseif (!empty($key)) {
+ $keyToCheck = $key;
+ }
+
+ if (!empty($keyToCheck)) {
+ $this->Token = ClassRegistry::init('Tools.Token');
+ $key = $this->Token->useKey('reset_pwd', $keyToCheck);
+
+ if (!empty($key) && $key['Token']['used'] == 1) {
+ $this->Common->flashMessage(__('alreadyChangedYourPassword'), 'warning');
+ } elseif (!empty($key)) {
+ $uid = $key['Token']['user_id'];
+ $this->Session->write('Auth.Tmp.id', $uid);
+ $this->redirect(array('action' => 'change_password'));
+ } else {
+ $this->Common->flashMessage(__('Invalid Key'), 'error');
+ }
+
+ } elseif (!empty($this->request->data['Form']['login'])) {
+ $this->User->Behaviors->attach('Tools.Captcha');
+ unset($this->User->validate['email']['isUnique']);
+ $this->User->set($this->request->data);
+
+ // Validate basic email scheme and captcha input.
+ if ($this->User->validates()) {
+ $res = $this->User->find('first', array(
+ 'fields' => array('username', 'id', 'email'),
+ 'conditions' => array('email' => $this->request->data['Form']['login'])));
+
+ // Valid user found to this email address
+ if (!empty($res)) {
+ $uid = $res['User']['id'];
+ $this->Token = ClassRegistry::init('Tools.Token');
+ $cCode = $this->Token->newKey('reset_pwd', null, $uid);
+ if (Configure::read('debug') > 0) {
+ $debugMessage = 'DEBUG MODE: Show activation key - ' . h($res['User']['username']) . ' | ' . $cCode;
+ $this->Common->flashMessage($debugMessage, 'info');
+ }
+
+ // Send email
+ Configure::write('Email.live', true);
+ App::uses('EmailLib', 'Tools.Lib');
+ $this->Email = new EmailLib();
+ $this->Email->to($res['User']['email'], $res['User']['username']);
+ $this->Email->subject(Configure::read('Config.pageName') . ' - ' . __('Password request'));
+ $this->Email->template('lost_password');
+ $this->Email->viewVars(compact('cCode'));
+ if ($this->Email->send()) {
+ // Confirmation output
+ App::uses('FormatHelper', 'Tools.View/Helper');
+ $email = h(FormatHelper::hideEmail($res['User']['email']));
+
+ $this->Common->flashMessage(__('An email with instructions has been send to \'%s\'.', $email), 'success');
+ $this->Common->flashMessage(__('In a third step you will then be able to change your password.'), 'success');
+ } else {
+ $this->Common->flashMessage(__('Confirmation Email could not be sent. Please consult an admin.'), 'error');
+ }
+ return $this->redirect(array('action' => 'lost_password'));
+ }
+ $this->Common->flashMessage(__('No account has been found for \'%s\'', $this->request->data['Form']['login']), 'error');
+ }
+ }
+
+ $this->helpers = array_merge($this->helpers, array('Tools.Captcha'));
+ }
+
+ /**
+ * AccountController::change_password()
+ *
+ * @return void
+ */
+ public function change_password() {
+ $uid = $this->Session->read('Auth.Tmp.id');
+ if (empty($uid)) {
+ $this->Common->flashMessage(__('You have to find your account first and click on the link in the email you receive afterwards'), 'error');
+ $this->redirect(array('action' => 'lost_password'));
+ }
+
+ if ($this->request->query('abort')) {
+ if (!empty($uid)) {
+ $this->Session->delete('Auth.Tmp');
+ }
+ $this->redirect(array('action' => 'login'));
+ }
+
+ $this->User->Behaviors->load('Tools.Passwordable', array());
+ if ($this->Common->isPosted()) {
+ if ($this->User->save($this->request->data)) {
+ $this->Common->flashMessage(__('new pw saved - you may now log in'), 'success');
+ $this->Session->delete('Auth.Tmp');
+ $username = $this->User->field('username', array('id' => $uid));
+ $this->redirect(array('action' => 'login', '?' => array('username' => $username)));
+ }
+ $this->Common->flashMessage(__('formContainsErrors'), 'error');
+
+ // Pwd should not be passed to the view again for security reasons.
+ unset($this->request->data['User']['pwd']);
+ unset($this->request->data['User']['pwd_repeat']);
+ }
+ }
+
+ /**
+ * AccountController::register()
+ *
+ * @return void
+ */
+ public function register() {
+ $this->User->Behaviors->load('Tools.Passwordable', array());
+ if ($this->Common->isPosted()) {
+ $this->request->data['User']['role_id'] = Configure::read('Role.user');
+ if ($user = $this->User->save($this->request->data)) {
+ $this->Common->flashMessage(__('Account created'), 'success');
+ if (!$this->Auth->login($user['User'])) {
+ throw new CakeException('Cannot log user in');
+ }
+ return $this->redirect(array('controller' => 'overview', 'action' => 'index'));
+ }
+ $this->Common->flashMessage(__('formContainsErrors'), 'error');
+
+ # pw should not be passed to the view again for security reasons
+ unset($this->request->data['User']['pwd']);
+ unset($this->request->data['User']['pwd_repeat']);
+ }
+ }
+
+ /**
+ * AccountController::index()
+ *
+ * @return void
+ */
+ public function index() {
+ }
+
+ /**
+ * AccountController::edit()
+ *
+ * @return void
+ */
+ public function edit() {
+ $uid = $this->Session->read('Auth.User.id');
+ $user = $this->User->get($uid);
+ $this->User->Behaviors->attach('Tools.Passwordable', array('require' => false));
+
+ if ($this->Common->isPosted()) {
+ $this->request->data['User']['id'] = $uid;
+ if ($this->User->save($this->request->data, true, array('id', 'username', 'email', 'irc_nick', 'pwd', 'pwd_repeat'))) {
+ $this->Common->flashMessage(__('Account modified'), 'success');
+ if (!$this->Auth->login($user['User'])) {
+ throw new CakeException('Cannot log user in');
+ }
+ return $this->redirect(array('action' => 'index'));
+ }
+ $this->Common->flashMessage(__('formContainsErrors'), 'error');
+
+ // Pwd should not be passed to the view again for security reasons.
+ unset($this->request->data['User']['pwd']);
+ unset($this->request->data['User']['pwd_repeat']);
+ } else {
+ $this->request->data = $user;
+ }
+ }
+
+ /**
+ * AccountController::delete()
+ *
+ * @param mixed $id
+ * @return void
+ */
+ public function delete($id = null) {
+ $this->request->onlyAllow('post', 'delete');
+ $uid = $this->Session->read('Auth.User.id');
+ if (!$this->User->delete($uid)) {
+ throw new InternalErrorException();
+ }
+ $this->Common->flashMessage('Account deleted', 'success');
+ return $this->redirect(array('action' => 'logout'));
+ }
+
+}
diff --git a/Controller/AppController.php b/Controller/AppController.php
new file mode 100644
index 00000000..1e5104fb
--- /dev/null
+++ b/Controller/AppController.php
@@ -0,0 +1,118 @@
+ array('className' => 'Tools.FormExt'), 'Tools.Common', 'Tools.Format', 'Tools.Datetime', 'Tools.Numeric');
+
+ public $paginate = array();
+
+ /**
+ * AppController::constructClasses()
+ *
+ * @return void
+ */
+ public function constructClasses() {
+ if (CakePlugin::loaded('DebugKit')) {
+ $this->components[] = 'DebugKit.Toolbar';
+ }
+
+ parent::constructClasses();
+ }
+
+ /**
+ * AppController::beforeFilter()
+ *
+ * @return void
+ */
+ public function beforeFilter() {
+ parent::beforeFilter();
+ $this->Auth->authenticate = array(
+ 'Authenticate.MultiColumn' => array(
+ 'fields' => array(
+ 'username' => 'login',
+ 'password' => 'password'
+ ),
+ 'columns' => array('username', 'email'),
+ 'userModel' => 'User',
+ //'scope' => array('User.email_confirmed' => 1)
+ )
+ );
+ $this->Auth->authorize = array(
+ 'Tools.Tiny' => array()
+ );
+ $this->Auth->logoutRedirect = array(
+ 'plugin' => false,
+ 'admin' => false,
+ 'controller' => 'overview',
+ 'action' => 'index');
+ $this->Auth->loginRedirect = array(
+ 'plugin' => false,
+ 'admin' => false,
+ 'controller' => 'account',
+ 'action' => 'index');
+ $this->Auth->loginAction = array(
+ 'plugin' => false,
+ 'admin' => false,
+ 'controller' => 'account',
+ 'action' => 'login');
+
+ $controllers = array('Pages');
+ foreach ($controllers as $controller) {
+ if ($this->name === $controller) {
+ $this->Auth->allow();
+ }
+ }
+
+ $allowed = array('Account' => array('login', 'lost_password', 'register'));
+ if (!Auth::id()) {
+ return;
+ }
+ foreach ($allowed as $controller => $actions) {
+ if ($this->name === $controller && in_array($this->request->action, $actions)) {
+ $this->Common->flashMessage('The page you tried to access is not relevant if you are already logged in. Redirected to main page.', 'info');
+ return $this->redirect($this->Auth->loginRedirect);
+ }
+ }
+ }
+
+ /**
+ * AppController::beforeRender()
+ *
+ * @return void
+ */
+ public function beforeRender() {
+ if ($this->request->is('ajax') && $this->layout === 'default') {
+ $this->layout = 'ajax';
+ }
+
+ # default title
+ if (empty($this->pageTitle)) {
+ $this->pageTitle = __(Inflector::humanize($this->request->action)) . ' | ' . __($this->name);
+ }
+ $this->set('title_for_layout', $this->pageTitle);
+
+ if (true || $this->layout === 'default') {
+ $this->disableCache();
+ }
+
+ if ($m = $this->Session->read('Message.auth')) {
+ $this->Common->flashMessage($m['message'], 'error');
+ $this->Session->delete('Message.auth');
+ }
+
+ parent::beforeRender();
+ }
+
+}
diff --git a/Controller/ContactController.php b/Controller/ContactController.php
new file mode 100644
index 00000000..52a4dd24
--- /dev/null
+++ b/Controller/ContactController.php
@@ -0,0 +1,76 @@
+Auth->allow();
+ }
+
+ /**
+ * @return void
+ */
+ public function index() {
+ if ($this->Common->isPosted()) {
+
+ $name = $this->request->data['ContactForm']['name'];
+ $email = $this->request->data['ContactForm']['email'];
+ $message = $this->request->data['ContactForm']['message'];
+ $subject = $this->request->data['ContactForm']['subject'];
+
+ if (!Auth::id()) {
+ $this->ContactForm->Behaviors->attach('Tools.Captcha');
+ }
+ $this->ContactForm->set($this->request->data);
+ if ($this->ContactForm->validates()) {
+ $this->_send($name, $email, $subject, $message);
+ } else {
+ $this->Common->flashMessage(__('formContainsErrors'), 'error');
+ }
+
+ } else {
+ // prepopulate form
+ $this->request->data['ContactForm'] = $this->request->query;
+
+ # try to autofill fields
+ $user = (array)$this->Session->read('Auth.User');
+ if (!empty($user['email'])) {
+ $this->request->data['ContactForm']['email'] = $user['email'];
+ }
+ if (!empty($user['username'])) {
+ $this->request->data['ContactForm']['name'] = $user['username'];
+ }
+ }
+
+ $this->set(compact('dropdowns'));
+ $this->helpers = array_merge($this->helpers, array('Tools.Captcha'));
+ }
+
+ /**
+ * @return void
+ */
+ protected function _send($fromName, $fromEmail, $subject, $message) {
+ $adminEmail = Configure::read('Config.admin_email');
+ $adminEmailname = Configure::read('Config.admin_emailname');
+
+ // Send email to Admin
+ Configure::write('Email.live', true);
+ App::uses('EmailLib', 'Tools.Lib');
+ $this->Email = new EmailLib();
+ $this->Email->to($adminEmail, $adminEmailname);
+
+ $this->Email->subject(Configure::read('Config.pageName') . ' - ' . __('contact via form'));
+ $this->Email->template('contact');
+ $this->Email->viewVars(compact('message', 'subject', 'fromEmail', 'fromName'));
+ if ($this->Email->send()) {
+ $this->Common->flashMessage(__('contactSuccessfullySent %s', $fromEmail), 'success');
+ return $this->redirect(array('action' => 'index'));
+ }
+ $this->Common->flashMessage(__('Contact Email could not be sent'), 'error');
+ }
+
+}
diff --git a/Controller/ExportController.php b/Controller/ExportController.php
new file mode 100644
index 00000000..55d05e8d
--- /dev/null
+++ b/Controller/ExportController.php
@@ -0,0 +1,117 @@
+Auth->allow();
+
+ if ($this->viewClass === 'View') {
+ return;
+ }
+
+ if ($this->referer(null, true) !== '/export') {
+ throw new MethodNotAllowedException('Please do not use this as a webservice (the capacities are limited). Download the JSON or XML file and import it.');
+ }
+ //die($this->referer(null, true));
+ }
+
+ /**
+ * ExportController::afterFilter()
+ *
+ * @return void
+ */
+ public function afterFilter() {
+ parent::afterFilter();
+
+ if ($this->request->query('download')) {
+ $this->response->download($this->request->params['action'] . '.' . $this->request->params['ext']);
+ }
+ }
+
+ public function index() {
+ }
+
+ /**
+ *
+ */
+ public function countries() {
+ $this->Country = ClassRegistry::init('Tools.Country');
+ $countries = $this->Country->find('all', array('fields' => array()));
+
+ $this->set(compact('countries'));
+ $this->set('_serialize', array('countries'));
+ }
+
+ /**
+ * maybe with countries directly?
+ */
+ public function country_provinces() {
+ $this->CountryProvince = ClassRegistry::init('Tools.CountryProvince');
+ $countryProvinces = $this->CountryProvince->find('all', array('fields' => array()));
+
+ $this->set(compact('countryProvinces'));
+ $this->set('_serialize', array('countryProvinces'));
+ }
+
+ /**
+ *
+ */
+ public function currencies() {
+ $this->Currency = ClassRegistry::init('Tools.Currency');
+ $currencies = $this->Currency->find('all', array('fields' => array()));
+
+ $this->set(compact('currencies'));
+ $this->set('_serialize', array('currencies'));
+ }
+
+ /**
+ *
+ */
+ public function languages() {
+ $this->Language = ClassRegistry::init('Tools.Language');
+ $languages = $this->Language->find('all', array('fields' => array()));
+
+ $this->set(compact('languages'));
+ $this->set('_serialize', array('languages'));
+ }
+
+ /**
+ *
+ */
+ public function continents() {
+ $this->Continent = ClassRegistry::init('Tools.Continent');
+ $continents = $this->Continent->find('all', array('fields' => array()));
+
+ $this->set(compact('continents'));
+ $this->set('_serialize', array('continents'));
+ }
+
+ /**
+ *
+ */
+ public function postal_codes() {
+ $this->PostalCode = ClassRegistry::init('Tools.PostalCode');
+ $postalCodes = $this->PostalCode->find('all', array('fields' => array()));
+
+ $this->set(compact('postalCodes'));
+ $this->set('_serialize', array('postalCodes'));
+ }
+
+ /**
+ * and mime_type_images
+ */
+ public function mime_types() {
+ }
+
+}
+
diff --git a/Controller/MiscController.php b/Controller/MiscController.php
new file mode 100644
index 00000000..7d5716ca
--- /dev/null
+++ b/Controller/MiscController.php
@@ -0,0 +1,123 @@
+Auth->allow('index', 'convert_text', 'analyze_text');
+ }
+
+ /**
+ * overview
+ * 2010-09-30 ms
+ */
+ public function index() {
+ }
+
+ public $types = array(
+ '1' => 'html encode',
+ '2' => 'html decode',
+ '3' => 'entity encode',
+ '4' => 'entity decode',
+ '5' => 'indent',
+ '6' => 'outdent'
+ );
+
+ /**
+ * 2010-09-30 ms
+ */
+ public function convert_text() {
+
+ if ($this->Common->isPosted()) {
+ $this->request->data['Form']['result'] = $this->_process($this->request->data['Form']['text'], $this->request->data['Form']['type']);
+ if (array_key_exists((string)$this->request->data['Form']['type'], $this->types)) {
+ $this->Common->flashMessage($this->types[(string)$this->request->data['Form']['type']] . ' done', 'success');
+ } else {
+ $this->Common->flashMessage($this->types[(string)$this->request->data['Form']['type']] . ' not successfull', 'warning');
+ }
+ }
+
+ $types = $this->types;
+ $this->set(compact('types'));
+ }
+
+ protected function _process($text, $type = null) {
+ if (empty($type)) {
+ # auto detect
+ $type = $this->_autoDetect($text);
+ $this->request->data['Form']['type'] = $type;
+ //return $text;
+ }
+ switch ($type) {
+ case '1':
+ $text = h($text);
+ break;
+ case '2':
+ $text = hDec($text);
+
+ break;
+ case '3':
+ $text = ent($text);
+ break;
+ case '4':
+ $text = entDec($text);
+ break;
+ case '5':
+ $pieces = explode(NL, $text);
+ foreach ($pieces as $key => $val) {
+ $pieces[$key] = TB . $val;
+ }
+ $text = implode(NL, $pieces);
+ break;
+ case '6':
+ $pieces = explode(NL, $text);
+ foreach ($pieces as $key => $val) {
+ $pieces[$key] = mb_substr($val, 0, 1) === TB ? mb_substr($val, 1) : $val;
+ }
+ $text = implode(NL, $pieces);
+ break;
+ }
+ return $text;
+ }
+
+ protected function _autoDetect($text) {
+ if (mb_strpos($text, '>') !== false || mb_strpos($text, '<') || mb_strpos($text, '&') || mb_strpos($text, '"')) { // || mb_strpos($text, ''')
+ return 2;
+ }
+ return 1;
+ }
+
+ public function analyze_text() {
+ $results = array();
+
+ if ($this->Common->isPosted()) {
+ $results = $this->_analyze($this->request->data['Form']['text']);
+ }
+
+ $this->set(compact('results'));
+ }
+
+ protected function _analyze($text, $type = null) {
+ $res = array();
+ if (empty($text)) {
+ return $res;
+ }
+ App::uses('TextLib', 'Tools.Utility');
+ $textLib = new TextLib($text);
+
+ ini_set('memory_limit', '128M');
+
+ $res['words'] = $textLib->wordCount($this->request->data['Form']);
+ $res['sentence_count'] = $textLib->getSentence();
+ $res['paragraph_count'] = $textLib->getParagraph();
+ $res['length'] = $textLib->getLength();
+ $res['is_ascii'] = $textLib->isAscii();
+ $res['word_count'] = $textLib->getWord();
+
+ return $res;
+ }
+
+}
+
diff --git a/Controller/OverviewController.php b/Controller/OverviewController.php
new file mode 100644
index 00000000..78418341
--- /dev/null
+++ b/Controller/OverviewController.php
@@ -0,0 +1,21 @@
+Auth->allow('index');
+ }
+
+ public function index() {
+ }
+
+ public function admin_index() {
+ }
+
+}
diff --git a/Controller/PagesController.php b/Controller/PagesController.php
new file mode 100644
index 00000000..b9c26bf1
--- /dev/null
+++ b/Controller/PagesController.php
@@ -0,0 +1,63 @@
+redirect('/');
+ }
+ $page = $subpage = $title_for_layout = null;
+
+ if (!empty($path[0])) {
+ $page = $path[0];
+ }
+ if (!empty($path[1])) {
+ $subpage = $path[1];
+ }
+ if (!empty($path[$count - 1])) {
+ $title_for_layout = Inflector::humanize($path[$count - 1]);
+ }
+ $this->set(compact('page', 'subpage', 'title_for_layout'));
+
+ try {
+ $this->render(implode('/', $path));
+ } catch (MissingViewException $e) {
+ if (Configure::read('debug')) {
+ throw $e;
+ }
+ throw new NotFoundException();
+ }
+ }
+}
diff --git a/Locale/deu/LC_MESSAGES/default.po b/Locale/deu/LC_MESSAGES/default.po
new file mode 100644
index 00000000..ebe8603c
--- /dev/null
+++ b/Locale/deu/LC_MESSAGES/default.po
@@ -0,0 +1,834 @@
+/* als JAVASCRIPT highlighten zum Editieren! */
+msgid ""
+msgstr ""
+"Project-Id-Version: CakePHP 1.2.x.x\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2006-12-23 16:42+0100\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Country: GERMANY\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Language: German\n"
+
+# Eigene neue:
+
+msgid "Translate String"
+msgstr "This is a Translate String"
+
+msgid "Blogä@$€ posts"
+msgstr "Blogü-Post"
+
+msgid "language_help"
+msgstr "
Hilfe
Der 'Sprach-Wechsler' ist eigentlich hauptsächlich zu Präsentationszwecken da. Auf die ganze Seite bezogen wird dadurch nur sehr wenig übersetzt. Falls eine andere Sprache als Englisch gesetzt wird, werden höchstens wichtige Seitenelemente und Links in der Sprache angezeigt.Was vielleicht demjenigen, der in Englisch nicht so bewandert ist, eine kleine Navigationshilfe geben kann.(Aber mal ehrlich, welcher deutsche - ernsthafte - Programmierer spricht kein englisch...)
An dieser Stelle möchte ich auch nochmal betonen, dass die Hauptsprache dieser Seite definitiv englisch ist - auch wenn ich selbst aus Deutschland bin.Es ist auf deiner einen Seite zu viel Arbeit, alles mehrsprachig anzubieten, auf der anderen Seite ist die deutsche CakePHP Community (noch) nicht groß genug, dass es Sinn machen würde. Vielleicht ändert sich das ja in der Zukunft irgendwann. Darum auch die Bitte, Code-Stücke, Verbesserungsvorschläge, Kommentare, Tipps etc. in englisch zu verfassen, oder es zumindest zu versuchen. Es muss ja nich das 'Business English' sein - aber auf diese Weise profitiert ein größerer Teil der Community von deinem Beitrag.
Danke, Mark"
+
+
+msgid "pleaseSelect"
+msgstr "bitte auswählen"
+
+#: \views\country_provinces\update_select.ctp:8
+#: \views\elements\user_search_form.ctp:17
+#: \views\user_infos\regional.ctp:13
+#: \views\users\admin_add.ctp:18
+#: \views\users\admin_edit.ctp:19
+#: \views\users\register.ctp:21
+msgid "noOptionAvailable"
+msgstr "Keine Wahlmöglichkeit verfügbar"
+
+msgid "Blogä@$€ posts"
+msgstr "Blogü-Post"
+
+msgid "lipsum"
+msgstr "Blogü-Post df sdfhosdföos fhosdfh osdfhosd s"
+
+msgid "active"
+msgstr "aktiv"
+
+
+msgid "Language"
+msgstr "Sprache"
+
+#### contact (Controller)
+
+msgid "Contact Us"
+msgstr "Uns kontaktieren"
+
+msgid "Contact Owner"
+msgstr "Besitzer kontaktieren"
+
+msgid "contactSuccessfullySent"
+msgstr "Vielen Dank. Ich werde die E-Mail baldmöglichst beantworten."
+
+msgid "contactChoseSubject"
+msgstr "Bitte wähle ein Betreff aus - oder bestimme selbst einen"
+
+msgid "Subject"
+msgstr "Betreff"
+
+msgid "Message"
+msgstr "Nachricht"
+
+msgid "Own Subject"
+msgstr "Eigener Betreff"
+
+msgid "Email"
+msgstr "E-Mail"
+
+msgid "contactHeader"
+msgstr "Kontakt"
+
+msgid "contactLegend"
+msgstr "So erreichst du uns am schnellsten"
+
+msgid "contactOwnSubject"
+msgstr "eigenen Betreff"
+
+msgid "contactMessage"
+msgstr "deine Nachricht"
+
+msgid "messageNew"
+msgstr "ungelesene Nachricht"
+
+msgid "messageRead"
+msgstr "gelesene Nachricht"
+
+msgid "messageAnswered"
+msgstr "beantwortete Nachricht"
+
+
+
+
+# fuelConsumption
+
+msgid "Milage"
+msgstr "Tacho-Stand"
+
+msgid "Receipt Date"
+msgstr "Datum"
+
+msgid "Total Cost"
+msgstr "Kosten"
+
+msgid "Total Fuel"
+msgstr "Getankt"
+
+msgid "Driven km"
+msgstr "Gefahrene Km"
+
+msgid "Comment"
+msgstr "Kommentar"
+
+# test
+
+msgid "Vielen Dank"
+msgstr "Vielen Dank Äther"
+
+msgid "Change Language"
+msgstr "Sprache wechseln"
+
+
+#: cake/libs/overloadable_php4.php:63
+#: ;96 cake/libs/overloadable_php5.php:44
+#: ;56
+#, fuzzy
+msgid "Magic method handler __call__ not defined in %s"
+msgstr "Magic Method Handler __call__ wurde nicht definiert in %s"
+
+#: cake/libs/controller/components/acl_base.php:49
+#: cake/libs/controller/components/dbacl/models/aclnode.php:55
+#: ;125;200;219
+msgid "[acl_base] The AclBase class constructor has been called, or the class was instantiated. This class must remain abstract. Please refer to the Cake docs for ACL configuration."
+msgstr "[acl_base] Der Konstruktor von AclBase wurde aufgerufen, oder die Klasse wurde instanziiert. Diese Klasse muss jedoch abstrakt bleiben. Siehe auch die Cake Dokumentation zum Thema \"ACL configuration\"."
+
+#: cake/libs/view/templates/errors/missing_action.ctp:30
+#: cake/libs/view/templates/errors/missing_connection.ctp:31
+msgid "If you want to customize this error message, create %s."
+msgstr "Um diese Fehlermeldung anzupassen, erstelle %s."
+
+msgid "%s could not be found."
+msgstr "%s Konnte nicht gefunden werden."
+
+#: cake/libs/view/templates/errors/missing_action.ctp:31
+#: cake/libs/view/templates/errors/missing_component_class.ctp:33
+#: cake/libs/view/templates/errors/missing_component_file.ctp:31
+#: cake/libs/view/templates/errors/missing_connection.ctp:32
+#: cake/libs/view/templates/errors/missing_controller.ctp:32
+#: cake/libs/view/templates/errors/missing_helper_class.ctp:31
+#: cake/libs/view/templates/errors/missing_helper_file.ctp:31
+#: cake/libs/view/templates/errors/missing_layout.ctp:31
+#: cake/libs/view/templates/errors/missing_model.ctp:31
+#: cake/libs/view/templates/errors/missing_scaffolddb.ctp:31
+#: cake/libs/view/templates/errors/missing_view.ctp:31
+msgid "Fatal"
+msgstr "Fatal"
+
+#: cake/libs/view/templates/errors/missing_component_class.ctp:31
+#: cake/libs/view/templates/errors/missing_component_file.ctp:29
+#: cake/libs/view/templates/errors/missing_connection.ctp:30
+#: cake/libs/view/templates/errors/missing_controller.ctp:30
+#: cake/libs/view/templates/errors/missing_helper_class.ctp:29
+#: cake/libs/view/templates/errors/missing_helper_file.ctp:29
+#: cake/libs/view/templates/errors/missing_layout.ctp:29
+#: cake/libs/view/templates/errors/missing_model.ctp:29
+#: cake/libs/view/templates/errors/missing_scaffolddb.ctp:29
+#: cake/libs/view/templates/errors/missing_table.ctp:29
+#: cake/libs/view/templates/errors/missing_view.ctp:29
+#: cake/libs/view/templates/errors/private_action.ctp:29
+#: cake/libs/view/templates/errors/scaffold_error.ctp:29
+#, fuzzy
+msgid "Notice"
+msgstr "Hinweis"
+
+#: cake/libs/view/templates/errors/missing_component_class.ctp:32
+#: cake/libs/view/templates/errors/missing_component_file.ctp:30
+#: cake/libs/view/templates/errors/missing_controller.ctp:31
+#: cake/libs/view/templates/errors/missing_helper_class.ctp:30
+#: cake/libs/view/templates/errors/missing_helper_file.ctp:30
+#: cake/libs/view/templates/errors/missing_layout.ctp:30
+#: cake/libs/view/templates/errors/missing_model.ctp:30
+#: cake/libs/view/templates/errors/missing_scaffolddb.ctp:30
+#: cake/libs/view/templates/errors/missing_table.ctp:30
+#: cake/libs/view/templates/errors/missing_view.ctp:30
+#: cake/libs/view/templates/errors/private_action.ctp:30
+#: cake/libs/view/templates/errors/scaffold_error.ctp:30
+msgid "If you want to customize this error message, create %s"
+msgstr "Um diese Fehlermeldung anzupassen, erstelle %s"
+
+#: cake/libs/view/templates/errors/missing_component_class.ctp:34
+#: cake/libs/view/templates/errors/missing_component_file.ctp:32
+#: cake/libs/view/templates/errors/missing_controller.ctp:33
+#: cake/libs/view/templates/errors/missing_helper_class.ctp:32
+#: cake/libs/view/templates/errors/missing_helper_file.ctp:32
+#: cake/libs/view/templates/errors/missing_model.ctp:32
+msgid "Create the class below in file: %s"
+msgstr "Erstelle die untenstehende Klasse in Datei: %s"
+
+#: cake/libs/view/templates/errors/missing_layout.ctp:32
+#: cake/libs/view/templates/errors/missing_scaffolddb.ctp:32
+#: cake/libs/view/templates/errors/missing_view.ctp:32
+msgid "Confirm you have created the file: %s"
+msgstr "Bestätige, dass die Datei %s erstellt wurde"
+
+#: cake/libs/view/templates/scaffolds/add.thtml:34
+#: cake/libs/view/templates/scaffolds/edit.thtml:39
+msgid "List "
+msgstr "Auflisten"
+
+#: cake/libs/view/templates/scaffolds/add.thtml:38
+#: cake/libs/view/templates/scaffolds/edit.thtml:43
+msgid "View "
+msgstr "Anzeigen"
+
+#: cake/libs/view/templates/scaffolds/add.thtml:39
+#: cake/libs/view/templates/scaffolds/edit.thtml:44
+msgid "Add "
+msgstr "Hinzufügen"
+
+#: cake/libs/view/templates/scaffolds/index.thtml:75
+#: cake/libs/view/templates/scaffolds/view.thtml:138
+#: ;144
+msgid "View"
+msgstr "Anzeigen"
+
+#: cake/libs/view/templates/scaffolds/index.thtml:76
+#: cake/libs/view/templates/scaffolds/view.thtml:139
+#: ;145
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: cake/libs/view/templates/scaffolds/index.thtml:77
+#: cake/libs/view/templates/scaffolds/view.thtml:140
+#: ;146
+msgid "Delete"
+msgstr "Löschen"
+
+#: cake/libs/view/templates/scaffolds/index.thtml:77
+#: cake/libs/view/templates/scaffolds/view.thtml:63
+#: ;140;146
+msgid "Are you sure you want to delete id %s?"
+msgstr "Soll Id %s gelöscht werden?"
+
+#: cake/libs/view/templates/scaffolds/index.thtml:86
+#: cake/libs/view/templates/scaffolds/view.thtml:155
+msgid "New "
+msgstr "Neu"
+
+#: cake/basics.php:96
+msgid "Plugins must have a class named %s"
+msgstr "Plugins müssen eine Klasse %s besitzen"
+
+#: cake/basics.php:1265
+msgid "Deprecated: Use Set::countDim instead"
+msgstr "Deprecated: Verwende stattdessen Set::countDim"
+
+#: cake/libs/configure.php:213
+msgid "Configure::load() - %s.php not found"
+msgstr "Configure::load() - %s.php wurde nicht gefunden"
+
+#: cake/libs/configure.php:219
+msgid "Configure::load() - no variable $config found in %s.php"
+msgstr "Configure::load() - es wurde keine Variable $config in %s.php gefunden"
+
+#: cake/libs/error.php:123
+msgid "The requested address %s was not found on this server."
+msgstr "Die angeforderte Adresse %s wurde nicht gefunden auf diesem Server."
+
+#: cake/libs/folder.php:281
+msgid "chmodr() File exists"
+msgstr "chmodr() Datei existiert"
+
+#: cake/libs/folder.php:308
+msgid "mkdirr() File exists"
+msgstr "mkdirr() Datei existiert"
+
+#: cake/libs/validation.php:302
+msgid "You must define the $operator parameter for Validation::comparison()"
+msgstr "Der Parameter $operator muss definiert sein für Validation::comparison() "
+
+#: cake/libs/validation.php:325
+msgid "You must define a regular expression for Validation::custom()"
+msgstr "Ein regulärer Ausdruck muss definiert sein für Validation::custom()"
+
+#: cake/libs/controller/controller.php:255
+#, fuzzy
+msgid "Controller::__construct() : Can not get or parse my own class name, exiting."
+msgstr "Controller::__construct() : Der eigene Klassenname kann nicht geparst werden."
+
+#: cake/libs/controller/controller.php:605
+msgid "Deprecated: Use Controller::set(\"title\", \"...\") instead"
+msgstr "Deprecated: Verwende stattdessen Controller::set(\"title\", \"...\")"
+
+#: cake/libs/controller/components/security.php:352
+msgid "SecurityComponent::loginCredentials() - Server does not support digest authentication"
+msgstr "SecurityComponent::loginCredentials() - Der Server unterstützt nicht Digest Authentication"
+
+#: cake/libs/controller/components/dbacl/db_acl.php:85
+#, fuzzy
+msgid "ACO permissions key %s does not exist in DB_ACL::check()"
+msgstr "ACO Permissions-Schlüssel %s existiert nicht in DB_ACL::check()"
+
+#: cake/libs/controller/components/dbacl/db_acl.php:144
+msgid "DB_ACL::allow() - Invalid node"
+msgstr "DB_ACL::allow() - Ungültiger Node"
+
+#: cake/libs/controller/components/dbacl/db_acl.php:162
+msgid "DB_ACL::allow() - Invalid ACO action"
+msgstr "DB_ACL::allow() - Ungültige ACO Aktion"
+
+#: cake/libs/controller/components/dbacl/db_acl.php:231
+msgid "Null id provided in DB_ACL::get"
+msgstr "Null id wurde übergeben in DB_ACL::get"
+
+#: cake/libs/controller/components/dbacl/models/aclnode.php:70
+msgid "Null parent in %s::create()"
+msgstr "Null parent in %s::create()"
+
+#: cake/libs/model/connection_manager.php:110
+msgid "ConnectionManager::getDataSource - Non-existent data source %s"
+msgstr "ConnectionManager::getDataSource - Datasource %s existiert nicht"
+
+#: cake/libs/model/connection_manager.php:163
+msgid "Unable to load DataSource file %s.php"
+msgstr "DataSource file %s.php konnte nicht geladen werden"
+
+#: cake/libs/model/datasources/dbo_source.php:305
+msgid "Deprecated: Use DboSource::fetchRow() instead"
+msgstr "Deprecated: Verwende stattdessen DboSource::fetchRow()"
+
+#: cake/libs/model/datasources/dbo_source.php:313
+msgid "Deprecated: Use DboSource::fetchRow($sql) instead"
+msgstr "Deprecated: Verwende stattdessen DboSource::fetchRow($sql)"
+
+#: cake/libs/model/datasources/dbo_source.php:1557
+msgid "Implement in DBO"
+msgstr "In DBO implementieren"
+
+#: cake/libs/model/datasources/dbo/dbo_pear.php:79
+msgid "Please implement DBO::disconnect() first."
+msgstr "Bitte zuerst DBO::disconnect() implementieren."
+
+#: cake/libs/model/datasources/dbo/dbo_pear.php:131
+msgid "Please implement DBO_Pear::tablesList() for your database driver."
+msgstr "Implementiere DBO_Pear::tablesList() für den Datenbank-Treiber."
+
+#: cake/libs/view/helper.php:134
+#, fuzzy
+msgid "Method %1$s::%2$s does not exist"
+msgstr "Methode %s::%s existiert nicht"
+
+#: cake/libs/view/view.php:325
+msgid "Error in view %s, got:
%s
"
+msgstr "Fehler in View %s:
%s
"
+
+#: cake/libs/view/view.php:429
+msgid "Error in layout %s, got:
%s
"
+msgstr "Fehler im Layout %s:
%s
"
+
+#: cake/libs/view/view.php:488
+msgid "(View::setLayout) Deprecated: Use $this->layout = \"...\" instead"
+msgstr "(View::setLayout) Deprecated: Verwende stattdessen $this->layout = \"...\""
+
+#: cake/libs/view/helpers/form.php:88
+msgid "Model %s does not exist"
+msgstr "Model %s existiert nicht"
+
+#: cake/libs/view/helpers/form.php:470
+msgid "Don't use me yet"
+msgstr "Bitte noch nicht verwenden"
+
+#: cake/libs/view/helpers/form.php:662
+msgid "Deprecated: Use FormHelper::input() or FormHelper::text() instead"
+msgstr "Deprecated: Verwende stattdessen FormHelper::input() oder FormHelper::text()"
+
+#: cake/libs/view/helpers/form.php:686
+msgid "Deprecated: Use FormHelper::input() or FormHelper::checkbox() instead"
+msgstr "Deprecated: Verwende stattdessen FormHelper::input() oder FormHelper::checkbox()"
+
+#: cake/libs/view/helpers/form.php:709
+#: ;732;754;777;834
+msgid "Deprecated: Use FormHelper::input() instead"
+msgstr "Deprecated: Verwende stattdessen FormHelper::input()"
+
+#: cake/libs/view/helpers/form.php:803
+msgid "Deprecated: Use FormHelper::input() or FormHelper::select() instead"
+msgstr "Deprecated: Verwende stattdessen FormHelper::input() oder FormHelper::select()"
+
+#: cake/libs/view/helpers/form.php:826
+msgid "Deprecated: Use FormHelper::submit() instead"
+msgstr "Deprecated: Verwende stattdessen FormHelper::submit()"
+
+#: cake/libs/view/helpers/form.php:951
+msgid "Deprecated: Use FormHelper::label() instead"
+msgstr "Deprecated: Verwende stattdessen FormHelper::label()"
+
+#: cake/libs/view/helpers/html.php:673
+msgid "(HtmlHelper::formTag) Deprecated: Use FormHelper::create instead"
+msgstr "(HtmlHelper::formTag) Deprecated: Verwende stattdessen FormHelper::create"
+
+#: cake/libs/view/helpers/html.php:719
+msgid "(HtmlHelper::linkEmail) Deprecated: Use HtmlHelper::link instead"
+msgstr "(HtmlHelper::linkEmail) Deprecated: Verwende stattdessen HtmlHelper::link"
+
+#: cake/libs/view/helpers/javascript.php:152
+msgid "(JavascriptHelper::linkOut) Deprecated: Use JavascriptHelper::link instead"
+msgstr "(JavascriptHelper::linkOut) Deprecated: Verwende stattdessen JavascriptHelper::link"
+
+#: cake/libs/view/templates/elements/dump.ctp:28
+msgid "Controller dump:"
+msgstr "Controller Dump:"
+
+#: cake/libs/view/templates/errors/missing_action.ctp:28
+msgid "Missing Method in %s"
+msgstr "Fehlende Methode in %s"
+
+#: cake/libs/view/templates/errors/missing_action.ctp:29
+msgid "You are seeing this error because the action %1$s is not defined in controller %2$s"
+msgstr "Dieser Fehler wird angezeigt weil die Action %1$s nicht definiert ist im Controller %2$s"
+
+#: cake/libs/view/templates/errors/missing_action.ctp:32
+msgid ": Confirm you have created the %1$s::%2$s in file : %3$s."
+msgstr ": Bestätige, dass %1$s::%2$s in der Datei : %3$s erstellt wurde"
+
+#: cake/libs/view/templates/errors/missing_component_class.ctp:27
+msgid "Missing Component Class"
+msgstr "Fehlende Component Klasse"
+
+#: cake/libs/view/templates/errors/missing_component_class.ctp:29
+msgid "You are seeing this error because the component class %1$s you have set in %2$s can't be found or doesn't exist."
+msgstr "Dieser Fehler wird angezeigt weil die Component Klasse %1$s, definiert in %2$s, nicht gefunden wurde oder nicht existiert."
+
+#: cake/libs/view/templates/errors/missing_component_file.ctp:27
+msgid "Missing Component File"
+msgstr "Fehlende Component Datei"
+
+#: cake/libs/view/templates/errors/missing_component_file.ctp:28
+msgid "You are seeing this error because the component file can not be found or does not exist."
+msgstr "Dieser Fehler wird angezeigt weil die Component Datei nicht gefunden wurde oder nicht existiert."
+
+#: cake/libs/view/templates/errors/missing_connection.ctp:27
+msgid "Requires a Database Connection"
+msgstr "Benötigt eine Datenbankverbindung"
+
+#: cake/libs/view/templates/errors/missing_connection.ctp:28
+#: ;33
+msgid "Confirm you have created the file : %s."
+msgstr "Bestätige, dass die Datei %s erstellt wurde."
+
+#: cake/libs/view/templates/errors/missing_connection.ctp:29
+msgid "Missing Database Connection: %s requires a database connection"
+msgstr "Fehlende Datenbankverbindung: %s benötigt eine Datenbankverbindung"
+
+#: cake/libs/view/templates/errors/missing_controller.ctp:27
+msgid "Missing controller"
+msgstr "Fehlender Controller"
+
+#: cake/libs/view/templates/errors/missing_controller.ctp:28
+msgid "You are seeing this error because controller %s could not be found."
+msgstr "Dieser Fehler wird angezeigt, weil der Controller %s nicht gefunden wurde."
+
+#: cake/libs/view/templates/errors/missing_helper_class.ctp:27
+msgid "Missing Helper Class"
+msgstr "Fehlende Helper Klasse"
+
+#: cake/libs/view/templates/errors/missing_helper_class.ctp:28
+msgid "You are seeing this error because the view helper class %s can not be found or does not exist."
+msgstr "Dieser Fehler wird angezeigt, weil die View Helper Klasse %s nicht gefunden wurde, oder nicht existiert."
+
+#: cake/libs/view/templates/errors/missing_helper_file.ctp:27
+msgid "Missing Helper File"
+msgstr "Fehlende Helper Datei"
+
+#: cake/libs/view/templates/errors/missing_helper_file.ctp:28
+msgid "You are seeing this error because the view helper file %s can not be found or does not exist."
+msgstr "Dieser Fehler wird angezeigt, weil die View Helper Datei %s nicht gefunden wurde oder nicht existiert."
+
+#: cake/libs/view/templates/errors/missing_layout.ctp:27
+msgid "Missing Layout"
+msgstr "Fehlendes Layout"
+
+#: cake/libs/view/templates/errors/missing_layout.ctp:28
+msgid "You are seeing this error because the layout file %s can not be found or does not exist."
+msgstr "Dieser Fehler wird angezeigt, weil die Layout Datei %s nicht gefunden wurde oder nicht existiert."
+
+#: cake/libs/view/templates/errors/missing_model.ctp:27
+msgid "Missing Model"
+msgstr "Fehlendes Model"
+
+#: cake/libs/view/templates/errors/missing_model.ctp:28
+msgid "No class found for the %s model."
+msgstr "Es wurde keine Klasse gefunden für das %s Model."
+
+#: cake/libs/view/templates/errors/missing_scaffolddb.ctp:27
+msgid "Scaffold Requires a Database Connection"
+msgstr "Scaffold benötigt eine Datenbankverbindung"
+
+#: cake/libs/view/templates/errors/missing_scaffolddb.ctp:28
+msgid "Missing Database Connection: Scaffold Does not work without a database connection"
+msgstr "Fehlende Datenbankverbindung: Scaffold funktioniert nicht ohne Datenbankverbindung"
+
+#: cake/libs/view/templates/errors/missing_table.ctp:27
+msgid "Missing Database Table"
+msgstr "Fehlende Datenbanktabelle"
+
+#: cake/libs/view/templates/errors/missing_table.ctp:28
+msgid "No Database table for model %1$s (expected %2$s), create it first."
+msgstr "Keine Datenbanktabelle für Model %1$s vorhanden (erwartet %2$s). Erstelle zuerst diese Tabelle."
+
+#: cake/libs/view/templates/errors/missing_view.ctp:27
+msgid "Missing view"
+msgstr "Fehlende View"
+
+#: cake/libs/view/templates/errors/missing_view.ctp:28
+msgid "You are seeing this error because the view for %1$s::%2$s(), could not be found."
+msgstr "Dieser Fehler wird angezeigt, weil die View für %1$s::%2$s() nicht gefunden wurde."
+
+#: cake/libs/view/templates/errors/private_action.ctp:27
+msgid "Private Method in %s"
+msgstr "Private Methode in %s"
+
+#: cake/libs/view/templates/errors/private_action.ctp:28
+msgid "You are seeing this error because the private class method %s should not be accessed directly."
+msgstr "Dieser Fehler wird angezeigt, weil auf die private Methode %s nicht direkt zugegriffen werden kann."
+
+#: cake/libs/view/templates/errors/scaffold_error.ctp:27
+msgid "Scaffold Error"
+msgstr "Scaffold Fehler"
+
+#: cake/libs/view/templates/errors/scaffold_error.ctp:28
+msgid "Your must implement the following method in your controller"
+msgstr "Folgende Methode muss im Controller implementiert werden"
+
+#: cake/libs/view/templates/layouts/default.ctp:40
+#, fuzzy
+msgid "CakePHP Rapid Development"
+msgstr "Das Rapid Development Framework"
+
+#: cake/libs/view/templates/scaffolds/add.thtml:31
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: cake/libs/view/templates/scaffolds/edit.thtml:32
+msgid "Save"
+msgstr "Speichern"
+
+#: cake/libs/view/templates/scaffolds/edit.thtml:37
+msgid "Delete "
+msgstr "Löschen"
+
+#: cake/libs/view/templates/scaffolds/index.thtml:40
+msgid "Actions"
+msgstr "Aktionen"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:32
+msgid "View %s"
+msgstr "Zeige %s an"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:62
+#: ;98
+msgid "Edit %s"
+msgstr "%s bearbeiten"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:63
+msgid "Delete %s"
+msgstr "%s löschen"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:64
+#: ;69
+msgid "List %s"
+msgstr " %s auflisten"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:65
+#: ;100
+msgid "New %s"
+msgstr " %s erstellen"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:70
+msgid "Add %s"
+msgstr "%s hinzufügen"
+
+#: cake/libs/view/templates/scaffolds/view.thtml:82
+#: ;117
+msgid "Related %s"
+msgstr "Zusammengehörige %s"
+
+#: cake/scripts/acl.php:91
+msgid ""
+"Unable to find /app/config/database.php. Please create it before continuing.\n"
+"\n"
+msgstr ""
+"/app/config/database.php konnte nicht gefunden werden. Diese Datei muss erstellt werden, bevor weitergefahren werden kann.\n"
+"\n"
+
+#: cake/scripts/bake.php:1892
+msgid "File exists, overwrite?"
+msgstr "Datei existiert bereits. Soll sie überschrieben werden?"
+
+#: cake/scripts/bake.php:1896
+#, fuzzy
+msgid "Quitting."
+msgstr "Verlassend."
+
+#: cake/scripts/bake.php:1902
+msgid "Skip"
+msgstr "Ãœberspringen"
+
+#: cake/scripts/bake.php:1910
+msgid "Wrote"
+msgstr "Geschrieben"
+
+#: cake/scripts/bake.php:1913
+#, fuzzy
+msgid "Error! Could not write to"
+msgstr "Fehler! Es konnte nicht geschrieben werden zu"
+
+#: cake/scripts/templates/skel/webroot/css.php:68
+#: ;76
+msgid "Wrong file name."
+msgstr "Falscher Dateiname."
+
+#: cake/libs/view/templates/pages/home.ctp:27
+msgid "Your database configuration file is %s."
+msgstr "Die Datenbankkonfigurationsdatei ist %s."
+
+#: cake/libs/view/templates/pages/home.ctp:27
+msgid "present"
+msgstr "vorhanden"
+
+#: cake/libs/view/templates/pages/home.ctp:27
+msgid "not present"
+msgstr "nicht vorhanden"
+
+#: cake/libs/view/templates/pages/home.ctp:31
+msgid "Cake %s connect to the database."
+msgstr "Cake %s eine Verbindung mit der Datenbank herstellen."
+
+#: cake/libs/view/templates/pages/home.ctp:31
+msgid "is able to"
+msgstr "kann"
+
+#: cake/libs/view/templates/pages/home.ctp:31
+msgid "is not able to"
+msgstr "kann nicht"
+
+#: cake/libs/view/templates/pages/home.ctp:34
+msgid "CakePHP release information is on CakeForge"
+msgstr "CakePHP Release Informationen sind zu finden auf CakeForge"
+
+#: cake/libs/view/templates/pages/home.ctp:35
+msgid "Read the release notes and get the latest version"
+msgstr "Lies die Release Informationen und besorge die aktuellste Version"
+
+#: cake/libs/view/templates/pages/home.ctp:36
+msgid "Editing this Page"
+msgstr "Diese Seite bearbeiten"
+
+#: cake/libs/view/templates/pages/home.ctp:38
+msgid "To change the content of this page, create: /app/views/pages/home.thtml."
+msgstr "Um den Inhalt dieser Seite zu ändern, erstelle: /app/views/pages/home.thtml."
+
+#: cake/libs/view/templates/pages/home.ctp:39
+msgid "To change its layout, create: /app/views/layouts/default.thtml."
+msgstr "Um das Layout zu ändern, erstelle: /app/views/layouts/default.thtml."
+
+#: cake/libs/view/templates/pages/home.ctp:40
+msgid "See the views section of the manual for more info."
+msgstr "Für weitere Informationen siehe das \"Views\"-Kapitel im Manual ."
+
+#: cake/libs/view/templates/pages/home.ctp:41
+msgid "You can also add some CSS styles for your pages at: app/webroot/css/."
+msgstr "Definiere weitere CSS Styles in: app/webroot/css/."
+
+#: cake/libs/view/templates/pages/home.ctp:43
+msgid "More about Cake"
+msgstr "Mehr über Cake"
+
+#: cake/libs/view/templates/pages/home.ctp:45
+msgid "CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Active Record, Association Data Mapping, Front Controller and MVC."
+msgstr "CakePHP ist ein Rapid Development Framework für PHP welches allgemein bekannte Design Patterns wie Active Record, Association Data Mapping, Front Controller und MVC verwendet."
+
+#: cake/libs/view/templates/pages/home.ctp:48
+msgid "Our primary goal is to provide a structured framework that enables PHP users at all levels to rapidly develop robust web applications, without any loss to flexibility."
+msgstr "Unser primäres Ziel ist es, ein strukturiertes Framework zur Verfügung zu stellen, um PHP Benutzern aller Stufen zu ermöglichen, schnell robuste Web Applikationen zu erstellen, ohne Verlust von Flexibilität."
+
+#: cake/libs/view/templates/pages/home.ctp:51
+msgid "Cake Software Foundation"
+msgstr "Cake Software Foundation"
+
+#: cake/libs/view/templates/pages/home.ctp:52
+msgid "Promoting development related to CakePHP"
+msgstr "Fördern der Entwicklung bezüglich CakePHP"
+
+#: cake/libs/view/templates/pages/home.ctp:53
+msgid "The Bakery"
+msgstr "The Bakery"
+
+#: cake/libs/view/templates/pages/home.ctp:54
+msgid "Everything CakePHP"
+msgstr "Alles über CakePHP"
+
+#: cake/libs/view/templates/pages/home.ctp:55
+msgid "Book Store"
+msgstr "Bücher-Shop"
+
+#: cake/libs/view/templates/pages/home.ctp:56
+msgid "Recommended Software Books"
+msgstr "Empfohlene Software-Bücher"
+
+#: cake/libs/view/templates/pages/home.ctp:57
+msgid "CakeSchwag"
+msgstr "CakeSchwag"
+
+#: cake/libs/view/templates/pages/home.ctp:58
+msgid "Get your own CakePHP gear - Doughnate to Cake"
+msgstr "Kauf CakePHP Artikel - und unterstütze damit Cake"
+
+#: cake/libs/view/templates/pages/home.ctp:59
+msgid "CakePHP"
+msgstr "CakePHP"
+
+#: cake/libs/view/templates/pages/home.ctp:60
+msgid "The Rapid Development Framework"
+msgstr "Das Rapid Development Framework"
+
+#: cake/libs/view/templates/pages/home.ctp:61
+msgid "CakePHP Manual"
+msgstr "CakePHP Manual"
+
+#: cake/libs/view/templates/pages/home.ctp:62
+msgid "Your Rapid Development Cookbook"
+msgstr "Das CakePHP Kochbuch"
+
+#: cake/libs/view/templates/pages/home.ctp:63
+msgid "CakePHP Wiki"
+msgstr "CakePHP Wiki"
+
+#: cake/libs/view/templates/pages/home.ctp:64
+msgid "The Community for CakePHP"
+msgstr "Die Community für CakePHP"
+
+#: cake/libs/view/templates/pages/home.ctp:65
+msgid "CakePHP API"
+msgstr "CakePHP API"
+
+#: cake/libs/view/templates/pages/home.ctp:66
+msgid "Docblock Your Best Friend"
+msgstr "API Dokumentation"
+
+#: cake/libs/view/templates/pages/home.ctp:67
+msgid "CakeForge"
+msgstr "CakeForge"
+
+#: cake/libs/view/templates/pages/home.ctp:68
+msgid "Open Development for CakePHP"
+msgstr "Open Source Entwicklung mit CakePHP"
+
+#: cake/libs/view/templates/pages/home.ctp:69
+msgid "CakePHP Trac"
+msgstr "CakePHP Trac"
+
+#: cake/libs/view/templates/pages/home.ctp:70
+msgid "For the Development of CakePHP (Tickets, SVN browser, Roadmap, Changelogs)"
+msgstr "Bereich für Entwickler (Tickets, SVN Browser, Roadmap, Changelogs)"
+
+#: cake/libs/view/templates/pages/home.ctp:71
+msgid "CakePHP Google Group"
+msgstr "CakePHP Google Group"
+
+#: cake/libs/view/templates/pages/home.ctp:72
+msgid "Community mailing list"
+msgstr "Community Mailingliste"
+
+#: cake/libs/view/templates/pages/home.ctp:74
+msgid "Live chat about CakePHP"
+msgstr "Live Chat über CakePHP"
+
+#: cake/libs/controller/scaffold.php:116
+msgid "Scaffold :: "
+msgstr "Scaffold :: "
+
+#: cake/libs/controller/scaffold.php:150
+#: ;153
+msgid "No id set for %s::view()"
+msgstr "Keine Id gesetzt für %s::view()"
+
+#: cake/libs/controller/scaffold.php:223
+#: ;226
+msgid "No id set for %s::edit()"
+msgstr "Keine Id gesetzt für %s::edit()"
+
+#: cake/libs/controller/scaffold.php:260
+msgid "updated"
+msgstr "aktualisiert"
+
+#: cake/libs/controller/scaffold.php:266
+msgid "saved"
+msgstr "gespeichert"
+
+#: cake/libs/controller/scaffold.php:287
+#: ;291
+#, fuzzy
+msgid "The %1$s has been %2$s"
+msgstr "Der %1$s wurde %2$s"
+
+#: cake/libs/controller/scaffold.php:298
+msgid "Please correct errors below."
+msgstr "Bitte die untenstehenden fehler beheben."
+
+#: cake/libs/controller/scaffold.php:330
+#: ;333
+msgid "No id set for %s::delete()"
+msgstr "Keine Id gesetzt für %s::delete()"
+
+#: cake/libs/controller/scaffold.php:339
+#: ;342
+#, fuzzy
+msgid "The %1$s with id: %2$d has been deleted."
+msgstr "Der %1$s mit Id %2$d wurde gelöscht."
+
+#: cake/libs/controller/scaffold.php:346
+#: ;349
+#, fuzzy
+msgid "There was an error deleting the %1$s with id: %2$d"
+msgstr "Es ist ein Fehler aufgetreten beim Löschen von %1$s mit der Id %2$d"
+
diff --git a/Locale/eng/LC_MESSAGES/default.po b/Locale/eng/LC_MESSAGES/default.po
new file mode 100644
index 00000000..7aff32c1
--- /dev/null
+++ b/Locale/eng/LC_MESSAGES/default.po
@@ -0,0 +1,59 @@
+/* als JAVASCRIPT highlighten zum Editieren! */
+msgid ""
+msgstr ""
+"Project-Id-Version: CakePHP 1.2.x.x\n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: 2006-12-23 16:42+0100\n"
+"Last-Translator: Daniel Hofstetter \n"
+"Language-Team: CakePHP I18N & I10N Team \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Country: UNITED STATES\n"
+"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-Language: English\n"
+
+# Contact
+
+msgid "contactChoseSubject"
+msgstr "Please chose a subject or define one yourself"
+
+msgid "contactHeader"
+msgstr "Contact me"
+
+msgid "contactLegend"
+msgstr "The fastest way to contact me"
+
+msgid "contactOwnSubject"
+msgstr "Own subject"
+
+msgid "contactMessage"
+msgstr "Your message"
+
+msgid "valErrMandatoryField"
+msgstr "Mandatory field"
+
+msgid "valErrInvalidEmail"
+msgstr "Invalid eMail"
+
+
+# Eigene neue:
+
+msgid "language_help"
+msgstr "
Help
sf Thx, Mark"
+
+
+msgid "Blogä@$€ posts"
+msgstr ""
+
+msgid "lipsum"
+msgstr ""
+
+
+msgid "Vielen Dank"
+msgstr "Vielen Äther"
+
+
+msgid "Zuruck"
+msgstr "Zurück!"
\ No newline at end of file
diff --git a/Model/AppModel.php b/Model/AppModel.php
new file mode 100644
index 00000000..c129d282
--- /dev/null
+++ b/Model/AppModel.php
@@ -0,0 +1,6 @@
+ array(
+ 'notEmpty' => array(
+ 'rule' => array('notEmpty'),
+ 'message' => 'Mandatory',
+ 'last' => true
+ ),
+ 'isUnique' => array(
+ 'rule' => 'isUnique',
+ 'message' => 'Username already exists',
+ 'last' => true
+ ),
+ ),
+ 'email' => array(
+ 'email' => array(
+ 'rule' => array('email'),
+ 'message' => 'Email invalid',
+ 'last' => true
+ ),
+ 'unique' => array(
+ 'rule' => array('isUnique'),
+ 'message' => 'Email already exists',
+ //'last' => true
+ ),
+ ),
+ );
+
+ public $hasMany = array(
+ 'Codesnippet' => array(
+ 'className' => 'Codesnippet',
+ 'foreignKey' => 'user_id',
+ 'dependent' => false,
+ 'conditions' => '',
+ 'fields' => '',
+ 'order' => '',
+ 'limit' => '',
+ ),
+ );
+
+}
+
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..edcc64fa
--- /dev/null
+++ b/README.md
@@ -0,0 +1,23 @@
+# CakePHP Sandbox APP
+
+A sandbox app to showcase Cake features and tools as well as a sandbox for tryouts.
+
+* Check it out live: http://cakephp.dereuromark.de
+* Author: Mark Scherer alias dereuromark
+
+
+### Dependencies
+
+* CakePHP 2.4/2.5
+* Ceerams Authenticate plugin
+* My Tools plugin
+
+
+### TODOS
+
+* OptIn/Registration
+
+#### Ideas
+
+* Timezone
+* More stuff
\ No newline at end of file
diff --git a/View/Account/change_password.ctp b/View/Account/change_password.ctp
new file mode 100644
index 00000000..1bf9f241
--- /dev/null
+++ b/View/Account/change_password.ctp
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/View/Account/edit.ctp b/View/Account/edit.ctp
new file mode 100644
index 00000000..8a31affd
--- /dev/null
+++ b/View/Account/edit.ctp
@@ -0,0 +1,36 @@
+
Form->postLink(__('Delete'), array('action' => 'delete', $this->Form->value('User.id')), null, __('Are you sure you want to delete your account # %s?', $this->Form->value('User.id'))); ?>
+
+
diff --git a/View/Account/index.ctp b/View/Account/index.ctp
new file mode 100644
index 00000000..2e5b9acc
--- /dev/null
+++ b/View/Account/index.ctp
@@ -0,0 +1,12 @@
+
+
+
\ No newline at end of file
diff --git a/View/Account/login.ctp b/View/Account/login.ctp
new file mode 100644
index 00000000..c1bccfe4
--- /dev/null
+++ b/View/Account/login.ctp
@@ -0,0 +1,27 @@
+
Welcome
+
You need to login to proceed.
+
+Form->create('User');?>
+
+
Please enter your username/email and password below.
+
+ Form->input('login', array('label' => 'Your username or email'));
+ echo $this->Form->input('password', array('autocomplete' => 'off'));
+ if (Configure::read('Config.rememberMe')) {
+ echo $this->Form->input('RememberMe.confirm', array('type' => 'checkbox', 'label' => __('Remember me on this device.')));
+ }
+ ?>
+
+Form->end(__('Log me in'));?>
+
+
No account yet?
+
+
Html->link('Create one here. For free :P', array('action' => 'register'))?>
+
+
:
+
+
+
Password lost?
+
Html->link('Reset your password.', array('action' => 'lost_password'))?>
\ No newline at end of file
diff --git a/View/Account/register.ctp b/View/Account/register.ctp
new file mode 100644
index 00000000..eac3fdaa
--- /dev/null
+++ b/View/Account/register.ctp
@@ -0,0 +1,36 @@
+
Register
+
We don't want SPAM. So we need to verify your account/email.
+
+
+Form->create('User');?>
+
+
Create an account
+
+
+
+
+
+Form->end(__('Create account'));?>
+
+
No account yet?
+
Html->link('Create one here. For free :P', array('action' => 'register'))?>
+
+
+
?
+Html->link(__('Login'), array('action'=>'login'));?>
\ No newline at end of file
diff --git a/View/Codebase/index.ctp b/View/Codebase/index.ctp
new file mode 100644
index 00000000..80509b18
--- /dev/null
+++ b/View/Codebase/index.ctp
@@ -0,0 +1,90 @@
+
+
+This CodeBase consists of 3 different categories:
+
+
+
+Tutorials (with source files)
+
+
+
+Modules (download, extract, configure and run)
+
+
+
+Codesnippets (again grouped by categories and elements)
+
+
+
+
+
+Additionally, there will be
+
+
+
+Examples (usually they belong to a codesnippet)
+
+
+
+
+
+Idea Pool (with some thoughts on maybe further projects / updates)
+
+
+
+
+
+
+
Recent Changes / Updates
+...
+
+
+
+
+
+
+
+
+
Name
+
+
+
+
>
+
+ Html->link($codesnippetCat['CodesnippetCat']['name'], array('action'=>'view', $codesnippetCat['CodesnippetCat']['id']), array('title'=>'Show all in this category')); ?>
+
+
+
+ ';
+ if (is_array($codesnippetCat['Codesnippet']) && count($codesnippetCat['Codesnippet'])>0) {
+
+ foreach ($codesnippetCat['Codesnippet'] as $snippet) {
+ echo '
Html->link(__('Search for a particular Codesnippet'), array('controller'=> 'codesnippets', 'action'=>'index')); ?>
+
+
\ No newline at end of file
diff --git a/View/Contact/contact_with_flashupload.ctp b/View/Contact/contact_with_flashupload.ctp
new file mode 100644
index 00000000..bbb325d3
--- /dev/null
+++ b/View/Contact/contact_with_flashupload.ctp
@@ -0,0 +1,61 @@
+Html->script('jquery/plugins/form.js',false);
+$this->Html->script('jquery/plugins/jqUploader.js',false);
+?>
+
+
+
+
\ No newline at end of file
diff --git a/View/Contact/file_upload.ctp b/View/Contact/file_upload.ctp
new file mode 100644
index 00000000..8ad14d0c
--- /dev/null
+++ b/View/Contact/file_upload.ctp
@@ -0,0 +1,22 @@
+
\ No newline at end of file
diff --git a/View/Elements/alpha_sort.ctp b/View/Elements/alpha_sort.ctp
new file mode 100644
index 00000000..3e0c7fe4
--- /dev/null
+++ b/View/Elements/alpha_sort.ctp
@@ -0,0 +1,47 @@
+
+
Html->link(__('Custom'), array('custom'), array('title'=>'Custom Controllers','class'=>$class));
+
+?>|Html->link(__('All'), array('all'), array('title'=>'Show All Controllers and their actions','class'=>$class));
+?>|Html->link($char, array($char), array('title'=>'Starting with "'.$char.'"','class'=>$class));
+
+ } else {
+ echo ''.$char.'';
+ }
+
+}
+
+?>
+This is the export interface where you can get the current version of the tables.
+Please help to keep it up to date. You can submit changes via Email.
+An interface to directly modify the data is planned, though.
+
+
+
+
+
+Note: If you want to force downloading, append `?download=1` after the extension.
\ No newline at end of file
diff --git a/View/Helper/AppHelper.php b/View/Helper/AppHelper.php
new file mode 100644
index 00000000..fca6f611
--- /dev/null
+++ b/View/Helper/AppHelper.php
@@ -0,0 +1,20 @@
+ &
+ *
+ * @deprecated
+ * @param string $input the input-string
+ * @return string the manipulated string
+ */
+ public function htmlspecialcharsBack($input) {
+ $search = array('&', '>', '<', '"', ''');
+ $replace = array('&', '>', '<', '"', "'");
+ return str_replace($search, $replace, $input);
+ }
+
+}
diff --git a/View/Helper/BbcodeHelper.php b/View/Helper/BbcodeHelper.php
new file mode 100644
index 00000000..54af2d01
--- /dev/null
+++ b/View/Helper/BbcodeHelper.php
@@ -0,0 +1,325 @@
+ 'bbcode/stringparser_bbcode.class.php'));
+ }
+
+ public function add_languages($languages) {
+ if (!empty($languages) && is_array($languages)) {
+ foreach ($languages as $language) {
+ $this->languages[strtolower($language['CodesnippetType']['name'])] = $language['CodesnippetType']['name'];
+ }
+ }
+ }
+
+/** INPUT (Form Element And Buttons) **/
+
+ /**
+ * Has to be called right at the top of the Page where you want to use it (needs the language array from the controller!)
+ * @param form name, text name, languages array, (options)
+ */
+ public function init($formName, $textName, $languages = array(), $options = null) {
+ $this->Html->script('bbcode.js', false);
+
+ // $languages = $this->Common->readFile('bbcode');
+ $this->add_languages($languages);
+
+ $output = "";
+
+ return $output;
+ }
+
+ /**
+ * Add Buttons and Select Menus
+ * NOTE: have to be INSIDE the (as long its still "this.form")
+ */
+ public function buttons() {
+ if (sizeof($this->languages) > 0) {
+ $codedropdown = '
+';
+
+ $codebutton = '
For external images/urls, please start with the full url (http:// etc.) For internal ones, use a / at the beginning. Cake will automatically attach the root to it.
+Internal Example: [img]/images/123.jpg[url] becomes images/123.jpg
+External Example: [img]http://site.yz/images/123.jpg[url] becomes http://site.yz/images/123.jpg
+
+
+
[url=]
Some as above, only that the url is now inside the square brackets, and you can use anything you want for the description Example: [url=http://google.de]This is a search engine[url]
+
+
+
[nobb]
Content in this tag will stay completely untouched. Useful if you have some BB-Code in your text (which would be transformed otherwise)
+
+
+
+Note: If there is some BB-Code left (on preview or after saving it) - you probably used it in an invalid way (like [code] inside of [h1] etc).
+
\ No newline at end of file
diff --git a/View/Misc/convert_text.ctp b/View/Misc/convert_text.ctp
new file mode 100644
index 00000000..cc8132a1
--- /dev/null
+++ b/View/Misc/convert_text.ctp
@@ -0,0 +1,61 @@
+
Convert Text
+Sometimes you need to escape the text in order to post somewhere. Sometimes you need exactly the opposite.
+Example: If a blog already escapes characters like & (result is ) and you would pass already escaped characters, you would end up with double-escaped characters () which are not readable anymore.
+
+Use this converter to get the text in the appropriate format.
+
+
+
\ No newline at end of file
diff --git a/View/Misc/index.ctp b/View/Misc/index.ctp
new file mode 100644
index 00000000..55b78a91
--- /dev/null
+++ b/View/Misc/index.ctp
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/View/Overview/admin_index.ctp b/View/Overview/admin_index.ctp
new file mode 100644
index 00000000..b17143f9
--- /dev/null
+++ b/View/Overview/admin_index.ctp
@@ -0,0 +1,41 @@
+
\ No newline at end of file
diff --git a/View/Overview/index.ctp b/View/Overview/index.ctp
new file mode 100644
index 00000000..7babd689
--- /dev/null
+++ b/View/Overview/index.ctp
@@ -0,0 +1,30 @@
+
+
Welcome
+This is a private website contributing to CakePHP.
+I always found it difficult so "imagine" specific code snippets without demo/examples.
+This site combines useful code snippets with their live result.
+
+
+
+You may also contribute back by adding/editing data.
+
+
+
+
+There are lots of things that can be done - even for beginners. Html->link('Details', array('controller'=>'pages', 'action'=>'display', 'updates')); ?>
diff --git a/View/Pages/cake.ctp b/View/Pages/cake.ctp
new file mode 100644
index 00000000..05afff1b
--- /dev/null
+++ b/View/Pages/cake.ctp
@@ -0,0 +1,84 @@
+
CakePHP - Rapid Develoment Framework
+
+
:
+
+
What is CakePHP?
+It is one of the most powerful Frameworks for PHP.
+
+Framework means you don't have to write functions for every little task. The framework provides you with basic functionality which you can extend.
+Html->link('CakePHP', 'http://www.cakephp.org'); ?> is easier to learn than many other frameworks - and comes with very handy features.
+
+
+
+Using commonly known design patterns like MVC and ORM within the convention over configuration paradigm, CakePHP reduces development costs and helps developers write less code.
+
+What speaks for CakePHP:
+Html->nestedList($list, array('class'=>'features'));
+
+?>
+
+
+
No Configuration - Set-up the database and let the magic begin
+
Flexible License - Distributed under the MIT License
+
Best Practices - covering security, authentication, and session handling, among the many other features.
+
OO - Whether you are a seasoned object-oriented programmer or a beginner, you’ll feel comfortable
+
+
+
+
+
+
+
+
+Manual and Communities
+Html->link('CakePHP - the MANUAL (very helpful)','/manual/', array('target'=>'_blank'));
+$list[]=$this->Html->link('CakePHP - the MANUAL (very helpful)','http://book.cakephp.org/complete/3/the-manual', array('target'=>'_blank'));
+
+$list[]=$this->Html->link('CakePHP API (Code Reference)','http://api.cakephp.org', array('target'=>'_blank'));
+$list[]=$this->Html->link('CakePHP Codesnippets/Tutorials','http://bakery.cakephp.org/', array('target'=>'_blank'));
+
+$list[]=$this->Html->link('Unofficial CakePHP Forum (!)','http://cakephpforum.net', array('target'=>'_blank'));
+$list[]=$this->Html->link('CakePHP German Forum (the smaller one)','http://www.cakephp-forum.com', array('target'=>'_blank'));
+
+$list[]=$this->Html->link('CakePHP Google Group (the biggest around?)','http://groups.google.com/group/cake-php', array('target'=>'_blank'));
+$list[]=$this->Html->link('CakePHP German Google Group (the smaller one)','http://groups.google.com/group/cakephp-de', array('target'=>'_blank'));
+
+echo $this->Html->nestedList($list, array('class'=>'links'));
+
+echo ' Examples and Code Pieces';
+$list=array();
+
+$list[]=$this->Html->link('CakePHP Links (Blogs etc.)','http://cakephp.org/#read', array('target'=>'_blank'));
+$list[]=$this->Html->link('A nice CakePHP Introduction (German)','http://blog.dievolution.net/cakephp/cakephp-einfuhrung/', array('target'=>'_blank'));
+$list[]=$this->Html->link('Good to know about these little things','http://teknoid.wordpress.com/category/cakephp/', array('target'=>'_blank'));
+$list[]=$this->Html->link('And about these too','http://labs.iamkoa.net/category/cakephp/', array('target'=>'_blank'));
+$list[]=$this->Html->link('Page: reazulk','http://reazulk.wordpress.com/category/cakephp/', array('target'=>'_blank'));
+$list[]=$this->Html->link('Blog: Adam Royle','http://blogs.bigfish.tv/adam/category/cakephp/', array('target'=>'_blank'));
+$list[]=$this->Html->link('Blog: m3nt0r','http://www.m3nt0r.de/blog/2007/07/29/cakephp-sanitize-fur-alle-controller/', array('target'=>'_blank'));
+$list[]=$this->Html->link('Blog: ad7six','http://www.ad7six.com/MiBlog/Blogs/Index/CakePHP', array('target'=>'_blank'));
+$list[]=$this->Html->link('ACL with Ajax','http://dev.newnewmedia.com/cakephp/admin/acl/permissions', array('target'=>'_blank'));
+
+echo $this->Html->nestedList($list, array('class'=>'links'));
+
+
+
+echo ' Other Links';
+$list=array();
+
+$list[]=$this->Html->link('Code-Snippets to test your application against XSS Hackings','http://ha.ckers.org/xss.html', array('target'=>'_blank'));
+
+echo $this->Html->nestedList($list, array('class'=>'links'));
+?>
+
\ No newline at end of file
diff --git a/View/Pages/cheat-sheets.ctp b/View/Pages/cheat-sheets.ctp
new file mode 100644
index 00000000..439933f6
--- /dev/null
+++ b/View/Pages/cheat-sheets.ctp
@@ -0,0 +1,45 @@
+
+addedbytes.com
\ No newline at end of file
diff --git a/View/Pages/downloads.ctp b/View/Pages/downloads.ctp
new file mode 100644
index 00000000..2e5a8469
--- /dev/null
+++ b/View/Pages/downloads.ctp
@@ -0,0 +1,24 @@
+
Downloads
+Some download links to make life easier
+
+
CakePHP-Core: Nightly Build + Stable
+The newest versions of CakePHP (and older ones, too):
+
+Even nicer because you need just one click to get the current HEAD (current version).
+
+
+
Html->link('Browse the online rep.','http://github.com/cakephp/cakephp', array('target'=>'_blank'));?>
+
+
+For downloading select "Git Clone" and use the following url:
+
+
+
+After that you can change to Cake1.2, Cake1.3, Cake1.3dev or even Cake2.0 by using "Switch/Checkout"
+
+
+And one "Pull" command gets all the updates and displays what files have been changed.
\ No newline at end of file
diff --git a/View/Pages/geshi.ctp b/View/Pages/geshi.ctp
new file mode 100644
index 00000000..e56dd946
--- /dev/null
+++ b/View/Pages/geshi.ctp
@@ -0,0 +1,50 @@
+
+
';
+
+$language='html4strict';
+$flag='fancy';
+
+echo 'oder so:'.$this->Geshi->geshi_highlight($text, $language, $flag)
+
+
+?>
\ No newline at end of file
diff --git a/View/Pages/modul-role-application.ctp b/View/Pages/modul-role-application.ctp
new file mode 100644
index 00000000..97512fd2
--- /dev/null
+++ b/View/Pages/modul-role-application.ctp
@@ -0,0 +1,56 @@
+
MODUL: Role Application
+Users can apply for "admin", "moderator" roles etc.
+
+
+Status: Completed (Beta)
+
+
Overview
+Extends the Cake core role system (With Auth/Acl). In this special case it uses AuthExt Component by Franck (with a small modification)
+for the possibility to have multiple roles per user.
+But it would work with any "single" role system as well - as it is independant from the live "roles" table. The "approve method" has to be altered then, though.
+
+
+
Details
+The Main aspects are:
+
+
+
+
+Extra toggle field in "roles" controller: "applyable" (TINYINT(1) - 0/1)
+Usually not all roles are for users to apply for (e.g. "Guest", "Superadmin", "TestUser" etc)
+
+
+
+A user can apply only for roles that he does not already have.
+Includes a check if application already processed (= role is already set) before the save() is triggered - to prevent that this is done twice - and the user gets a role twice.
+
+
+
+After applying, if the user wants to apply again, all pending "roles" (as well as the roles he already has) are not shown anymore either. Prevents "double" applications.
+
+
+
+Full logging history. Including the "admin userid" that checked it. Not deletable by anybody except the "superadmin" for example. Users have their own history not beeing able to see "admin only comments" which
+can be used for admin notes. They will see the comment/reasoning for a disapproved application though. As they should know why their whish for applying to a certain role was denyed.
+
+
+
+Optional: Nobody can approve his own applications. Prevents missusage under everybody having access to the "check" action.
+
+
+
+Optional: After processing an application, it cannot be changed anymore by anyone. The other case would be, that the application could be dissapproved by one admin, and the next admin then "revalidates"
+it and then approves it (the other way is not implemented - the role has to be deleted "manually" in the roles controller). In this case a second log entry will be created, showing which admin did what.
+With the first case active, the user would have to re-apply.
+
+
+
+
+
+
+
+
+
+
+
+Html->link('Send me your ideas for improvement', array('controller'=>'contact','subject'=>'Idea for Improvement'), array('title'=>'To the contact form'));
\ No newline at end of file
diff --git a/View/Pages/projects.ctp b/View/Pages/projects.ctp
new file mode 100644
index 00000000..8e18b381
--- /dev/null
+++ b/View/Pages/projects.ctp
@@ -0,0 +1,69 @@
+
Projects
+My little projects - mainly for testing purposes.
+Some might even be useful. If you are interested, drop me a line.
+Maybe you find some errors, program some enhancements or just tell me what could be added.
+
+
+
Status: Completed (Beta)
+
+
+Role Application - Users can apply for "admin", "moderator" roles etc.
+
+Extends the Cake core role system (With Auth/Acl). In this special case it uses AuthExt Component by Franck (with a small modification)
+for the possibility to have multiple roles per user.
+But it would work with any "single" role system as well - as it is independant from the live "roles" table. The "approve method" has to be altered then, though.
+Details Html->link('here', array('modul-role-application'), array('title'=>'Role Application Modul'));?>.
+
+
+
+
+
+
+
Status: In development
+
+
+
+Fuel Consumption - keeping track of fuel costs / milage / development
+
+Individually for each car observed. Calculates the missing value out of the other 2 values given.
+Html->link('See it in action', array('controller'=>'fuel_consumptions'), array('title'=>'Here is a working example of this project'));?>
+
+
+
+Voting System
+
+
+
+
+
+
+
+
+
Status: Well - anyone some spare time? :)
+
+
+
+Poll System
+
+Should be able to handle unlimited options - beeing able to use it in a project or a community page would be nice as well.
+
+As a addon, it could function as an "election" system as well - like for admins/mods: Everybody can apply - and is added as an "option".
+Now everybody can vote 1 time and finally the top "x" is elected as president - or at least as new mod for a site or something.
+Besides all the "normal" poll features: "poll active/inactive, "limiting to a period of time or certain user groups", "avoiding double votes of a user" etc
+
+
+
+Messaging System
+
+Maybe with friend/block list - multiple addresses - flood protection - email notification - etc.
+
+
+
+
+... to be continued
+
+
+
+
+
+Html->link('Send me your idea', array('controller'=>'contact','subject'=>'Project idea'), array('title'=>'To the contact form'));
\ No newline at end of file
diff --git a/View/Pages/terms-of-use.ctp b/View/Pages/terms-of-use.ctp
new file mode 100644
index 00000000..ec35878a
--- /dev/null
+++ b/View/Pages/terms-of-use.ctp
@@ -0,0 +1,22 @@
+
Terms of use
+As CakePHP, all content on this site is open source. Feel free to use my code (or parts of it) in your projects - and help making it better by tributing enhancements or tips.
+I give no safety quaranties or whatsoever on it. You use it on your own risk.
+Sometimes I linked to other sites and projects - or enhanced their functions and code-snippets. If anyone feels unhappy about that, please contact me - i will remove any such content immediately.
+
+
+
+Due to a new law it is now not longer neccessary to provide a real address in the impressum. It is enough to have a valid email address and/or a valid phone number listed.
+The email address is - to avoid spam mails en masse - not displayed as plain text. But with Javascript enabled (which should always be the case!) you are able to see it. There is a contact formular as well, though. For those who want to contact me directly (instead of an external mail service).
+
+
+
Disclaimer
+
+CONTENT PROVIDED VIA LINKS
+
+You may find links to other Internet sites or resources on the Website. You acknowledge and agree that I am not responsible for the availability of such external sites or resources, and do not endorse and am not responsible or liable for any content, advertising, products, or other materials on or available from such sites or resources. I will not be responsible or liable, directly or indirectly, for any actual or alleged damage or loss caused by or in connection with use of or reliance on any such content, goods or services available on or through any such site or resource.
+
\ No newline at end of file
diff --git a/View/Pages/updates.ctp b/View/Pages/updates.ctp
new file mode 100644
index 00000000..77d1ff40
--- /dev/null
+++ b/View/Pages/updates.ctp
@@ -0,0 +1,15 @@
+
Updates
+
+
+
+Need Some Help!
+Anybody who wants to help improve this site - or add new features? Feel free to contact me.
+
+Found some errors? spelling mistakes? Html->link('-> Contact Form', array('controller'=>'contact'))?>
+
+
+
+
Here will soon be a list...
+...of all the things that happens on this page
+
+Mabye even some RSS feed to it.
\ No newline at end of file
diff --git a/View/Users/add.ctp b/View/Users/add.ctp
new file mode 100644
index 00000000..ac9cd1d6
--- /dev/null
+++ b/View/Users/add.ctp
@@ -0,0 +1,44 @@
+
\ No newline at end of file
diff --git a/View/Users/admin_assign_roles.ctp b/View/Users/admin_assign_roles.ctp
new file mode 100644
index 00000000..2dda7fbd
--- /dev/null
+++ b/View/Users/admin_assign_roles.ctp
@@ -0,0 +1,52 @@
+
\ No newline at end of file
diff --git a/View/Users/edit.ctp b/View/Users/edit.ctp
new file mode 100644
index 00000000..35091493
--- /dev/null
+++ b/View/Users/edit.ctp
@@ -0,0 +1,46 @@
+
Form->postLink(__('Delete'), array('action'=>'delete', $this->Form->value('User.id')), null, __('Are you sure you want to delete # %s?', $this->Form->value('User.id'))); ?>
\ No newline at end of file
diff --git a/View/Users/index.ctp b/View/Users/index.ctp
new file mode 100644
index 00000000..59f99b05
--- /dev/null
+++ b/View/Users/index.ctp
@@ -0,0 +1,76 @@
+
+
+
+Paginator->counter(array(
+'format' => __('Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%')
+));
+?>
\ No newline at end of file
diff --git a/View/Users/registered.ctp b/View/Users/registered.ctp
new file mode 100644
index 00000000..5d0e2444
--- /dev/null
+++ b/View/Users/registered.ctp
@@ -0,0 +1,31 @@
+
+You should now recieve an email.
+Please click on the link to activate your account.
+If you choose otherwise, the account will be deleted automatically within the next 20 days.
+
+After clicking the link you should be able to login.
+
+
+
+If you want, you can take the activation key from the email you got and paste it in here:
+
+Form->create('User', array('action'=>'registered'));?>
+
+Form->end(__('Submit'));?>
+
+
+
+
+
+
+
+
+
+
+
+Note: NO EMAIL is sent! this is a todo!
\ No newline at end of file
diff --git a/View/Users/roles.ctp b/View/Users/roles.ctp
new file mode 100644
index 00000000..3276e2ec
--- /dev/null
+++ b/View/Users/roles.ctp
@@ -0,0 +1,27 @@
+
+
+You are currenctly applying for the following roles:
+
+render('/role_applications/user','ajax');
+?>
+
+
+
\ No newline at end of file
diff --git a/View/Users/view.ctp b/View/Users/view.ctp
new file mode 100644
index 00000000..1b134627
--- /dev/null
+++ b/View/Users/view.ctp
@@ -0,0 +1,479 @@
+