Initial import for the firefox survey project

This commit is contained in:
wclouser%mozilla.com 2006-07-07 18:09:28 +00:00
Родитель 7408fe7b69
Коммит 3141907e1b
33 изменённых файлов: 2072 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,5 @@
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>

Просмотреть файл

@ -0,0 +1,46 @@
<?php
/* SVN FILE: $Id: app_controller.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Short description for file.
*
* This file is application-wide controller file. You can put all
* application-wide controller-related methods here.
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.cake
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Short description for class.
*
* Add your application-wide methods in the class below, your controllers
* will inherit them.
*
* @package cake
* @subpackage cake.cake
*/
class AppController extends Controller {
}
?>

Просмотреть файл

@ -0,0 +1,46 @@
<?php
/* SVN FILE: $Id: app_model.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Application model for Cake.
*
* This file is application-wide model file. You can put all
* application-wide model-related methods here.
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.cake
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Application model for Cake.
*
* Add your application-wide methods in the class below, your models
* will inherit them.
*
* @package cake
* @subpackage cake.cake
*/
class AppModel extends Model {
}
?>

Просмотреть файл

@ -0,0 +1,76 @@
;<?php die() ?>
; SVN FILE: $Id: acl.ini.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $
;/**
; * Short description for file.
; *
; *
; * PHP versions 4 and 5
; *
; * CakePHP : Rapid Development Framework <http://www.cakephp.org/>
; * Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
; * @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
; * @package cake
; * @subpackage cake.app.config
; * @since CakePHP v 0.10.0.1076
; * @version $Revision: 1.1 $
; * @modifiedby $LastChangedBy: phpnut $
; * @lastmodified $Date: 2006-07-07 18:09:28 $
; * @license http://www.opensource.org/licenses/mit-license.php The MIT License
; */
; acl.ini.php - Cake ACL Configuration
; ---------------------------------------------------------------------
; Use this file to specify user permissions.
; aco = access control object (something in your application)
; aro = access request object (something requesting access)
;
; User records are added as follows:
;
; [uid]
; groups = group1, group2, group3
; allow = aco1, aco2, aco3
; deny = aco4, aco5, aco6
;
; Group records are added in a similar manner:
;
; [gid]
; allow = aco1, aco2, aco3
; deny = aco4, aco5, aco6
;
; The allow, deny, and groups sections are all optional.
; NOTE: groups names *cannot* ever be the same as usernames!
;
; ACL permissions are checked in the following order:
; 1. Check for user denies (and DENY if specified)
; 2. Check for user allows (and ALLOW if specified)
; 3. Gather user's groups
; 4. Check group denies (and DENY if specified)
; 5. Check group allows (and ALLOW if specified)
; 6. If no aro, aco, or group information is found, DENY
;
; ---------------------------------------------------------------------
;-------------------------------------
;Users
;-------------------------------------
[username-goes-here]
groups = group1, group2
deny = aco1, aco2
allow = aco3, aco4
;-------------------------------------
;Groups
;-------------------------------------
[groupname-goes-here]
deny = aco5, aco6
allow = aco7, aco8

Просмотреть файл

@ -0,0 +1,72 @@
<?php
/* SVN FILE: $Id: bootstrap.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.config
* @since CakePHP v 0.10.8.2117
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
*
* This file is loaded automatically by the app/webroot/index.php file after the core bootstrap.php is loaded
* This is an application wide file to load any function that is not used within a class define.
* You can also use this to include or require any files in your application.
*
*/
/**
* The settings below can be used to set additional paths to models, views and controllers.
* This is related to Ticket #470 (https://trac.cakephp.org/ticket/470)
*
* $modelPaths = array('full path to models', 'second full path to models', 'etc...');
* $viewPaths = array('this path to views', 'second full path to views', 'etc...');
* $controllerPaths = array('this path to controllers', 'second full path to controllers', 'etc...');
*
*/
/**
* Default application. If there isn't something in $_GET we'll fall back on this.
* 1) Make sure this thing exists in the database
* 2) This isn't escaped at all when used in SQL queries. If a single quote appears
* in an application name in the future and you need to use it here, be sure to
* escape it.
*/
define('DEFAULT_APP_NAME','Mozilla Firefox');
define('DEFAULT_APP_VERSION','1.5');
/**
* We are adding applications dynamically based on the URL. If a version of firefox
* comes in that we haven't dealt with yet, we want to ask a default set of
* questions (rather than just a comment box). This is that default set. Same
* rules apply as the default application above.
*/
define('DEFAULT_FIREFOX_INTENTION_SET_ID','2');
define('DEFAULT_FIREFOX_ISSUE_SET_ID','1');
define('DEFAULT_THUNDERBIRD_INTENTION_SET_ID','4');
define('DEFAULT_THUNDERBIRD_ISSUE_SET_ID','3');
//EOF
?>

Просмотреть файл

@ -0,0 +1,153 @@
<?php
/* SVN FILE: $Id: core.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* This is core configuration file.
*
* Use it to configure core behaviour ofCake.
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.config
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* If you do not have mod rewrite on your system
* or if you prefer to use CakePHP pretty urls.
* uncomment the line below.
* Note: If you do have mod rewrite but prefer the
* CakePHP pretty urls, you also have to remove the
* .htaccess files
* release/.htaccess
* release/app/.htaccess
* release/app/webroot/.htaccess
*/
//define ('BASE_URL', env('SCRIPT_NAME'));
/**
* Set debug level here:
* - 0: production
* - 1: development
* - 2: full debug with sql
* - 3: full debug with sql and dump of the current object
*
* In production, the "flash messages" redirect after a time interval.
* With the other debug levels you get to click the "flash message" to continue.
*
*/
define('DEBUG', 0);
/**
* Turn of caching checking wide.
* You must still use the controller var cacheAction inside you controller class.
* You can either set it controller wide, or in each controller method.
* use var $cacheAction = true; or in the controller method $this->cacheAction = true;
*/
define ('CACHE_CHECK', false);
/**
* Error constant. Used for differentiating error logging and debugging.
* Currently PHP supports LOG_DEBUG
*/
define ('LOG_ERROR', 2);
/**
* CakePHP includes 3 types of session saves
* database or file. Set this to your preferred method.
* If you want to use your own save handler place it in
* app/config/name.php DO NOT USE file or database as the name.
* and use just the name portion below.
*
* Setting this to cake will save files to /cakedistro/tmp directory
* Setting it to php will use the php default save path
* Setting it to database will use the database
*
*
*/
define('CAKE_SESSION_SAVE', 'php');
/**
* Set a random string of used in session.
*
*/
define('CAKE_SESSION_STRING', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
/**
* Set the name of session cookie
*
*/
define('CAKE_SESSION_COOKIE', 'CAKEPHP');
/**
* Set level of Cake security.
*
*/
define('CAKE_SECURITY', 'high');
/**
* Set Cake Session time out.
* If CAKE_SECURITY define is set
* high: multiplied by 10
* medium: is multiplied by 100
* low is: multiplied by 300
*
* Number below is seconds.
*/
define('CAKE_SESSION_TIMEOUT', '120');
/**
* Uncomment the define below to use cake built in admin routes.
* You can set this value to anything you want.
* All methods related to the admin route should be prefixed with the
* name you set CAKE_ADMIN to.
* For example: admin_index, admin_edit
*/
//define('CAKE_ADMIN', 'admin');
/**
* The define below is used to turn cake built webservices
* on or off. Default setting is off.
*/
define('WEBSERVICES', 'off');
/**
* Compress output CSS (removing comments, whitespace, repeating tags etc.)
* This requires a/var/cache directory to be writable by the web server (caching).
* To use, prefix the CSS link URL with '/ccss/' instead of '/css/' or use Controller::cssTag().
*/
define('COMPRESS_CSS', false);
/**
* If set to true, helpers would output data instead of returning it.
*/
define('AUTO_OUTPUT', false);
/**
* If set to false, session would not automatically be started.
*/
define('AUTO_SESSION', true);
/**
* Set the max size of file to use md5() .
*/
define('MAX_MD5SIZE', (5*1024)*1024 );
/**
* To use Access Control Lists with Cake...
*/
define('ACL_CLASSNAME', 'DB_ACL');
define('ACL_FILENAME', 'dbacl'.DS.'db_acl');
?>

Просмотреть файл

@ -0,0 +1,79 @@
<?php
/* SVN FILE: $Id: database.php.default,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* This is core configuration file.
*
* Use it to configure core behaviour ofCake.
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.config
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @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 =>
* mysql, postgres, sqlite, adodb-drivername, pear-drivername
*
* connect =>
* MySQL set the connect to either mysql_pconnect of mysql_connect
* PostgreSQL set the connect to either pg_pconnect of pg_connect
* SQLite set the connect to sqlite_popen sqlite_open
* 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)
*
* host =>
* the host you connect to the database
* MySQL 'localhost' to add a port number use 'localhost:port#'
* PostgreSQL 'localhost' to add a port number use 'localhost port=5432'
*
*/
class DATABASE_CONFIG
{
var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'project_name',
'prefix' => '');
var $test = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost',
'login' => 'user',
'password' => 'password',
'database' => 'project_name-test',
'prefix' => '');
}
?>

Просмотреть файл

@ -0,0 +1,29 @@
<?php
if (!defined('DS'))
{
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT'))
{
//define('ROOT', 'FULL PATH TO DIRECTORY WHERE APP DIRECTORY IS LOCATED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
//You should also use the DS define to seperate your directories
define('ROOT', '');
}
if (!defined('APP_DIR'))
{
//define('APP_DIR', 'DIRECTORY NAME OF APPLICATION';
define ('APP_DIR', '');
}
if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
//define ('CAKE_CORE_INCLUDE_PATH', FULL PATH TO DIRECTORY WHERE CAKE CORE IS INSTALLED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
//You should also use the DS define to seperate your directories
define('CAKE_CORE_INCLUDE_PATH', '');
}
?>

Просмотреть файл

@ -0,0 +1,74 @@
<?php
/* SVN FILE: $Id: inflections.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Custom Inflected Words.
*
* This file is used to hold words that are not matched in the normail Inflector::pluralize() and
* Inflector::singularize()
*
* PHP versions 4 and %
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.config
* @since CakePHP v 1.0.0.2312
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* This is a key => value array of regex used to match words.
* If key matches then the value is returned.
*
* $pluralRules = array('/(s)tatus$/i' => '\1\2tatuses', '/^(ox)$/i' => '\1\2en', '/([m|l])ouse$/i' => '\1ice');
*/
$pluralRules = array();
/**
* This is a key only array of plural words that should not be inflected.
* Notice the last comma
*
* $uninflectedPlural = array('.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox');
*/
$uninflectedPlural = array();
/**
* This is a key => value array of plural irregular words.
* If key matches then the value is returned.
*
* $irregularPlural = array('atlas' => 'atlases', 'beef' => 'beefs', 'brother' => 'brothers')
*/
$irregularPlural = array();
/**
* This is a key => value array of regex used to match words.
* If key matches then the value is returned.
*
* $singularRules = array('/(s)tatuses$/i' => '\1\2tatus', '/(matr)ices$/i' =>'\1ix','/(vert|ind)ices$/i')
*/
$singularRules = array();
/**
* This is a key only array of singular words that should not be inflected.
* You should not have to change this value below if you do change it use same format
* as the $uninflectedPlural above.
*/
$uninflectedSingular = $uninflectedPlural;
/**
* This is a key => value array of singular irregular words.
* Most of the time this will be a reverse of the above $irregularPlural array
* You should not have to change this value below if you do change it use same format
*
* $irregularSingular = array('atlases' => 'atlas', 'beefs' => 'beef', 'brothers' => 'brother')
*/
$irregularSingular = array_flip($irregularPlural);
?>

Просмотреть файл

@ -0,0 +1,51 @@
<?php
/* SVN FILE: $Id: routes.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Short description for file.
*
* In this file, you set up routes to your controllers and their actions.
* Routes are very important mechanism that allows you to freely connect
* different urls to chosen controllers and their actions (functions).
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.config
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Here, we are connecting '/' (base path) to controller called 'Pages',
* its action called 'display', and we pass a param to select the view file
* to use (in this case, /app/views/pages/home.thtml)...
*/
$Route->connect ('/', array('controller'=>'Users', 'action'=>'add', ''));
/**
* ...and connect the rest of 'Pages' controller's urls.
*/
//$Route->connect ('/pages/*', array('controller'=>'pages', 'action'=>'display'));
/**
* Then we connect url '/test' to our test controller. This is helpfull in
* developement.
*/
//$Route->connect ('/tests', array('controller'=>'tests', 'action'=>'index'));
?>

Просмотреть файл

@ -0,0 +1,30 @@
CREATE TABLE `acos` (
`id` int(11) NOT NULL auto_increment,
`model` varchar(255) NOT NULL default '',
`object_id` int(11) default NULL,
`alias` varchar(255) NOT NULL default '',
`lft` int(11) default NULL,
`rght` int(11) default NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `aros` (
`id` int(11) NOT NULL auto_increment,
`model` varchar(255) NOT NULL default '',
`user_id` int(11) default NULL,
`alias` varchar(255) NOT NULL default '',
`lft` int(11) default NULL,
`rght` int(11) default NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `aros_acos` (
`id` int(11) NOT NULL auto_increment,
`aro_id` int(11) default NULL,
`aco_id` int(11) default NULL,
`_create` int(1) NOT NULL default '0',
`_read` int(1) NOT NULL default '0',
`_update` int(1) NOT NULL default '0',
`_delete` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
);

Просмотреть файл

@ -0,0 +1,11 @@
-- @copyright Copyright (c) 2006, Cake Software Foundation, Inc.
-- @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
-- @since CakePHP v 0.10.8.1997
-- @version $Revision: 1.1 $
CREATE TABLE cake_sessions (
id varchar(255) NOT NULL default '',
data text,
expires int(11) default NULL,
PRIMARY KEY (id)
);

Просмотреть файл

Просмотреть файл

@ -0,0 +1,108 @@
<?php
vendor('mail/mail');
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('html');
function index()
{
}
function add()
{
if (empty($this->params['data']))
{
$this->render();
}
else
{
// If they've already signed up, send them another email
if ($this->User->findByEmail($this->params['data']['User']['email'])) {
$mail_params = array(
'from' => 'nobody@mozilla.com',
'to' => $this->params['data']['User']['email'],
'subject' => 'Firefox Surveys',
'message' => "
<p>Thanks for signing up for the Firefox Survey, Summer '06 edition. We'll start with
this profile survey and go from there. We'll send out a few more surveys in the
following weeks to certain groups of survey takers. Thanks again for making the
browser a better place!</p>
<p><a href=\"http://is4.instantsurvey.com/FirefoxSurveyNumeroUno?email={$this->params['data']['User']['email']}&first={$this->params['data']['User']['firstname']}&last={$this->params['data']['User']['lastname']}\">Start the first survey</a>
Survey conducted by Mozilla and hosted by <a href=\"http://www.instantsurvey.com/\">Instant Survey</a></p>
<p>Mozilla continues to take security and privacy issues seriously. Any data or
information provided will never be given or sold to any other outside company for its
use in marketing or solicitation.</p>
<p>If you choose not to take this survey, you will be automatically unsubscribed from
the Firefox Survey list.</p>
<p>If you think you received this in error, please <a href=\"mailto:firefoxsurvey@mozilla.com\">let us know</a>.</p>
"
);
$mail = new mail($mail_params);
$mail->send();
// rather than just flash a screen, we want to show a page with
// some content. We do a little trickery here, but it gets the
// job done. content is in /views/layouts/flash.thtml
$this->Session->setFlash('
<p>You are already signed up for the Firefox Survey!</p>
<p>If you don\'t receive an email with a link to the survey
within 24 hours, please <a href="mailto:firefoxsurvey@mozilla.com?subject=invalid email - firefox survey">let us know</a>
and we\'ll send another copy.</p>
<p>Continue to the <a href="http://google.com/firefox/">Firefox Start Page</a></p>
');
$this->flash(null,null,0);
return;
}
if ($this->User->save($this->params['data'])) {
$mail_params = array(
'from' => 'nobody@mozilla.com',
'to' => $this->params['data']['User']['email'],
'subject' => 'Firefox Surveys',
'message' => "
<p>Thanks for signing up for the Firefox Survey, Summer '06 edition. We'll start with
this profile survey and go from there. We'll send out a few more surveys in the
following weeks to certain groups of survey takers. Thanks again for making the
browser a better place!</p>
<p><a href=\"http://is4.instantsurvey.com/FirefoxSurveyNumeroUno?email={$this->params['data']['User']['email']}&first={$this->params['data']['User']['firstname']}&last={$this->params['data']['User']['lastname']}\">Start the first survey</a>
Survey conducted by Mozilla and hosted by <a href=\"http://www.instantsurvey.com/\">Instant Survey</a></p>
<p>Mozilla continues to take security and privacy issues seriously. Any data or
information provided will never be given or sold to any other outside company for its
use in marketing or solicitation.</p>
<p>If you choose not to take this survey, you will be automatically unsubscribed from
the Firefox Survey list.</p>
<p>If you think you received this in error, please <a href=\"mailto:firefoxsurvey@mozilla.com\">let us know</a>.</p>
"
);
$mail = new mail($mail_params);
$mail->send();
// rather than just flash a screen, we want to show a page with
// some content. We do a little trickery here, but it gets the
// job done. content is in /views/layouts/flash.thtml
$this->Session->setFlash('Thanks for helping to make a better browsing experience.<br />Continue to the <a href="http://google.com/firefox/">Firefox Start Page</a>');
$this->flash(null,null,0);
}
}
}
}
?>

Просмотреть файл

@ -0,0 +1,27 @@
<?php
/* SVN FILE: $Id: index.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app
* @since CakePHP v 0.10.0.1076
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
require 'webroot'.DIRECTORY_SEPARATOR.'index.php';
?>

Просмотреть файл

@ -0,0 +1,13 @@
<?php
class User extends AppModel {
var $name = 'User';
var $validate = array(
'firstname' =>VALID_NOT_EMPTY,
'lastname' =>VALID_NOT_EMPTY,
'email' =>VALID_EMAIL
);
}
?>

61
webtools/firefox_survey/vendors/mail/mail.php поставляемый Normal file
Просмотреть файл

@ -0,0 +1,61 @@
<?php
class mail
{
var $from;
var $to;
var $subject;
var $message;
/**
* Everything coming in via $params should be validated already
*/
function mail($params)
{
if (array_key_exists('from', $params)) {
$this->from = $params['from'];
}
if (array_key_exists('to', $params)) {
$this->to = $params['to'];
}
if (array_key_exists('subject', $params)) {
$this->subject = $params['subject'];
}
if (array_key_exists('message', $params)) {
$this->message = $params['message'];
}
}
function make_headers($type='html')
{
$headers = '';
switch($type)
{
case 'html':
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
break;
}
if (!empty($this->from)) {
$headers .= "From: {$this->from}\r\n";
$headers .= "Reply-To: {$this->from}\r\n";
}
return $headers;
}
function make_additional_parameters()
{
if (!empty($this->from)) {
return '-f'.$this->from;
}
}
function send()
{
mail($this->to, $this->subject, $this->message, $this->make_headers(), $this->make_additional_parameters());
}
}
?>

Просмотреть файл

@ -0,0 +1,29 @@
<!-- content -->
</div>
<div id="footer">
<div id="footer-contents">
<ul id="footer-menu">
<li><a href="http://mozilla.com/about/">About Us</a></li>
<li><a href="http://mozilla.com/privacy-policy.html">Privacy Policy</a></li>
<li><a href="http://mozilla.com/about/legal.html">Legal Notices</a></li>
</ul>
<p class="small-print">International Affiliates:
<a href="http://www.mozilla-europe.org/">Mozilla Europe</a>&nbsp;
<a href="http://www.mozilla-japan.org/">Mozilla Japan</a>&nbsp;
<a href="http://www.mozilla.org.cn/">Mozilla China</a>
</p>
<p class="small-print">Mozilla Corporation is a wholly-owned subsidiary of the <a href="http://www.mozillafoundation.org">Mozilla Foundation</a>.</p>
<p class="small-print">Copyright &#169; 2005&#8211;2006 Mozilla Corporation. All rights reserved.</p>
<ul class="site-tools">
<li><a href="http://cvs-www.mozilla.org/webtools/bonsai/cvslog.cgi?file=mozilla-com/src/index.html&amp;rev=&amp;root=/cvsroot/">Document History</a></li>
<li><a href="http://doctor-test.mozilla.org/doctor.cgi?action=edit&amp;file=mozilla-com%2Fsrc%2Findex.html">Edit</a></li>
</ul>
</div>
</div>
</body>
</html>

Просмотреть файл

@ -0,0 +1,43 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Mozilla Firefox Survey</title>
<meta name="author" content="Mozilla Corporation" />
<meta name="copyright" content="Mozilla Corporation" />
<?php echo $html->charset('UTF-8'); ?>
<?php echo $html->css('rustico/template'); ?>
<?php echo $html->css('rustico/content'); ?>
<?php echo $html->css('screen'); ?>
</head>
<body>
<div id="header">
<div>
<h1>
<?php
echo $html->link(
$html->image('moz-com-logo.png', array('alt'=>'Mozilla Corporation', 'height'=>38,'width'=>89)),
'http://mozilla.com/', array('title'=>'Return to home page', 'accesskey'=>'1'),false,false
);
?>
</h1>
<ul>
<li id="menu-products"><a href="http://mozilla.com/products/">Products</a></li>
<li id="menu-extensions"><a href="http://mozilla.com/extensions/">Extensions</a></li>
<li id="menu-support"><a href="http://mozilla.com/support/">Support</a></li>
<li id="menu-developers"><a href="http://mozilla.com/developers/">Developers</a></li>
</ul>
</div>
</div>
<div id="breadcrumbs">
<?php if (isset($breadcrumb) && isset($breadcrumbs)): ?>
<div>
<?php $breadcrumb->addLinks($breadcrumbs); ?>
<?php echo $breadcrumb->showLinks(); ?>
</div>
<?php endif; ?>
</div>
<hr class="hide" />
<div id="content">

Просмотреть файл

@ -0,0 +1,3 @@
<?php echo $this->renderElement( 'header' ); ?>
<?php echo $content_for_layout;?>
<?php echo $this->renderElement( 'footer' ); ?>

Просмотреть файл

@ -0,0 +1,5 @@
<?php echo $this->renderElement( 'header' ); ?>
<div class="center">
<?php echo $this->controller->Session->flash(); ?>
</div>
<?php echo $this->renderElement( 'footer' ); ?>

Просмотреть файл

Просмотреть файл

@ -0,0 +1,14 @@
<h1>Firefox Survey</h1>
<p>You're on your way to taking the Firefox Survey, Summer '06 edition!</p>
<p>After you supply your name (optional) and email address (required) we'll send you the first profile survey.</p>
<div id="UsersAdd">
<?php echo $html->formTag('/users/add')?>
<p><label for="UserFirstname">First Name:</label> <?php echo $html->input('User/firstname', array('size' => '40'))?></p>
<p><label for="UserLastname">Last Name:</label> <?php echo $html->input('User/lastname', array('size' => '40'))?></p>
<p><label for="UserEmail">Email Address:<span class="required">*</span></label>
<?php echo $html->input('User/email', array('size' => '40'))?>
<?php echo $html->tagErrorMsg('User/email', 'A properly formatted email address is required.') ?>
</p>
<p><?php echo $html->submit('Send') ?></p>
</form>
</div>

Просмотреть файл

@ -0,0 +1,7 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Просмотреть файл

@ -0,0 +1,116 @@
<?php
/* SVN FILE: $Id: css.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.webroot
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Enter description here...
*/
require(CONFIGS.'paths.php');
require(CAKE.'basics.php');
require(LIBS.'folder.php');
require(LIBS.'file.php');
require(LIBS.'legacy.php');
/**
* Enter description here...
*
* @param unknown_type $path
* @param unknown_type $name
* @return unknown
*/
function make_clean_css ($path, $name)
{
require(VENDORS.'csspp'.DS.'csspp.php');
$data = file_get_contents($path);
$csspp = new csspp();
$output = $csspp->compress($data);
$ratio = 100-(round(strlen($output)/strlen($data), 3)*100);
$output = " /* file: $name, ratio: $ratio% */ " . $output;
return $output;
}
/**
* Enter description here...
*
* @param unknown_type $path
* @param unknown_type $content
* @return unknown
*/
function write_css_cache ($path, $content)
{
if (!is_dir(dirname($path)))
mkdir(dirname($path));
$cache = new File($path);
return $cache->write($content);
}
if (preg_match('|\.\.|', $url) || !preg_match('|^ccss/(.+)$|i', $url, $regs))
die('Wrong file name.');
$filename = 'css/'.$regs[1];
$filepath = CSS.$regs[1];
$cachepath = CACHE.'css'.DS.str_replace(array('/','\\'), '-', $regs[1]);
if (!file_exists($filepath))
die('Wrong file name.');
if (file_exists($cachepath))
{
$templateModified = filemtime($filepath);
$cacheModified = filemtime($cachepath);
if ($templateModified > $cacheModified)
{
$output = make_clean_css ($filepath, $filename);
write_css_cache ($cachepath, $output);
}
else
{
$output = file_get_contents($cachepath);
}
}
else
{
$output = make_clean_css ($filepath, $filename);
write_css_cache ($cachepath, $output);
}
header("Date: ".date("D, j M Y G:i:s ", $templateModified).'GMT');
header("Content-Type: text/css");
header("Expires: ".gmdate("D, j M Y H:i:s", time()+DAY)." GMT");
header("Cache-Control: cache");// HTTP/1.1
header("Pragma: cache");// HTTP/1.0
print $output;
?>

Просмотреть файл

@ -0,0 +1,562 @@
/* mozilla.org Rustico Theme Content Styles
* Design by silverorange
* Markup Reference classes organized by fantasai
*/
/* Suggested order:
* display
* list-style
* position
* float
* clear
* width
* height
* margin
* padding
* border
* background
* color
* font
* text-decoration
* text-align
* vertical-align
* white-space
* other text
* content
*
*/
/* TOC:
Body
Random HTML Styles
Forms
General Structure
Navigation
Quotations
Comments and Other Asides
Emphasis
Computers - General
Code
Examples and Figures
Q and A (FAQ)
Tables
Meta
*/
/* Random HTML Styles */
hr {
height: 1px;
background-color: #000;
color: #000;
margin: 2em 0;
}
.hide { display: none; }
ul.spaced li, ol.spaced li {
margin-bottom: 0.5em;
}
/* General Structure */
body, td, th, input { /* redundant rules for bad browsers */
font-family: verdana, sans-serif;
font-size: x-small;
voice-family: "\"}\"";
voice-family: inherit;
font-size: small;
}
h1, h2, h3, h4, h5, h6 {
margin: 1em 0 0.2em 0;
border-bottom: 1px solid #ccc;
font-family: arial, verdana, sans-serif;
}
li h1, li h2, li h3, li h4, li h5, li h6 {
border: none;
}
#header h1 { border: 0; }
h1 { font-size: 160%; font-weight: normal; }
h2 { font-size: 150%; font-weight: normal; }
h3 { font-size: 120%; }
h4 { font-size: 100%; }
h5 { font-size: 90%; }
h6 { font-size: 90%; border: 0; }
/* Navigation */
:link { color: #039; }
:visited { color: #636; }
:link:hover, :visited:hover { color: #333; }
:link:active, :link:active { color: #000; }
/* Quotations */
/* Comments and other Asides */
#main-feature {
margin-top: -24px;
background: #EFF3F7 url("/images/template/feature-back.png") bottom repeat-x;
}
#main-feature h2 {
margin: 10px 0 0 0;
border: none;
}
#main-feature p.product-intro {
margin: 0 0 10px 0;
line-height: 145%;
color: #414D66;
}
#main-feature .feature-contents {
padding: 15px 50px 65px 50px;
position: relative; /* this is required to absolutely position contained elements */
background: url("/images/home/feature-sun.png") bottom right no-repeat;
}
#main-feature .feature-contents { height: 250px; }
body>#main-feature .feature-contents { height: auto; min-height: 260px; }
#main-feature .brief-feature { height: auto !important; min-height: 10px !important; }
* html #main-feature .brief-feature { padding-bottom: 5px !important }
/* this hack is required for IE6 */
/* Hides from IE-mac \*/
* html #main-feature { height: 1%;}
/* End hide from IE-mac */
#main-feature a.download-link {
display: block;
padding: 0 0 12px 0;
margin-bottom: 0.2em;
text-decoration: none;
color: #256504;
width: 285px;
margin-left: -8px;
}
#main-feature a.download-firefox {
background: url("/images/template/download-firefox.png") 0 100% no-repeat;
}
#main-feature a.download-thunderbird {
background: url("/images/template/download-thunderbird.png") 0 100% no-repeat;
}
#main-feature .brief-feature a.download-firefox {
background: url("/images/template/download-firefox-white.png") 0 100% no-repeat;
margin-right: 40px;
margin-left: 0;
}
#main-feature a.download-link span {
display: block;
padding: 9px 10px 0 58px;
min-height: 43px;
} * html #main-feature a.download-link span { height: 43px; }
#main-feature a.download-firefox span {
background: url("/images/template/download-firefox.png") 0 0 no-repeat;
}
#main-feature a.download-thunderbird span {
background: url("/images/template/download-thunderbird.png") 0 0 no-repeat;
}
#main-feature .brief-feature a.download-firefox span {
background: url("/images/template/download-firefox-white.png") 0 0 no-repeat;
}
#main-feature a.download-link strong {
font: 140% sans-serif;
letter-spacing: -0.02em;
text-decoration: underline;
color: #256504;
}
#main-feature a.download-link em {
font-style: normal;
color: #367D10;
letter-spacing: 0;
display: block;
padding-top: 3px;
font-size: 85%;
}
#main-feature a.download-link:hover, #main-feature a.download-link:hover span, #main-feature a.download-link:hover strong {
color: #143802;
cursor: pointer; /* need for IE6 */
background-position: 100% 100%;
}
#main-feature a.download-link:hover span {
background-position: 100% 0;
}
#main-feature .download-info {
font-size: 85%;
color: #666;
padding: 0;
}
#main-feature .download-other {
font-size: 85%;
color: #515F78;
padding-left: 8px;
}
.brief-feature .home-download {
float: right;
}
#main-feature .product-image {
float: right;
margin-left: 1.5em;
margin-top: 1em;
}
#main-feature h2, #main-feature h3, #main-feature h4 {
border: none;
}
.note {
color: #666;
font-style: normal;
}
.first {
margin-top: 0;
}
.remark {
color: #666;
}
.sidenote {
border: #666;
}
.key-point:before {
line-height: 0.1;
font-size: 1px;
background: transparent url("/images/box/key-point_tr.gif") no-repeat top right;
margin: -15px -15px 0 -15px;
height: 15px;
display: block;
border: none;
content: url("/images/box/key-point_tl.gif");
}
.key-point {
background: #e4ecec url("/images/box/key-point_back.gif") right repeat-y;
padding: 15px;
margin-bottom: 1em;
} * html .key-point { height: 1px; }
.key-point:after {
display: block;
clear: both;
padding-top: 15px;
line-height: 0.1;
font-size: 1px;
content: url("/images/box/key-point_bl.gif");
margin: -15px;
height: 8px;
background: transparent url("/images/box/key-point_br.gif") scroll no-repeat bottom right ;
}
.key-point h2, .key-point h3, .key-point h4, .key-point h5 {
border: none;
margin-top: 0;
color: #4C5C5C;
}
.news dt {
font-weight: normal;
color: #666;
}
.news dt a {
font-weight: bold;
}
ul.compact {
margin-left: 0;
padding-left: 20px;
}
/* Emphasis */
/* Computers - General */
kbd {
margin: 0.1em;
padding: 0.1em;
border: 1px #ccc;
}
kbd.command,
code.command {
color: #6B5839;
}
/* Code */
pre.code {
background: #EEECF6;
}
code > em,
code > strong,
pre.code > em,
pre.code > strong {
font-style: normal;
}
/* Examples and Figures */
div.example {
border-color: #554FA0;
}
div.example:before {
color: #666;
}
/* Q and A (FAQ) */
ol.faq li a {
text-decoration: none;
border-bottom: 1px dotted #6C98EE;
}
ol.faq li a:hover {
border-color: #039;
}
/* Tables */
table {
border-collapse: collapse;
border: none;
margin: 1em 0;
}
th {
background: #ddd;
padding: 5px;
text-align: left;
}
tr.table-title th {
font: 130% sans-serif;
font-weight: normal;
background: #666;
color: #fff;
border-top: 1px solid #666;
padding: 0.5em 10px;
text-align: center;
}
td {
border-top: 1px solid #ddd;
font-size: 85%;
padding: 5px;
text-align: left;
}
table.data thead th {
background: #e4ecec;
empty-cells: hide;
}
table.data th,
table.data td {
border: 1px solid #ccc;
font-size: 100%;
line-height: 130%;
}
tr.odd {
background: #F5F5F5;
}
/* Meta */
address {
color: #666;
}
/* Product Specific CSS */
.productlist img.product-logo {
float: left;
margin: 0 10px 1em 0;
}
.productlist h3 {
border: none;
clear: left;
}
.productlist p {
margin: 0.2em 0 2em 0;
}
.key-point h1, .key-point h3 {
margin: 0;
}
#product-desc h2 {
text-indent: -700em;
height: 25px;
line-height: 2px;
font-size: 2px;
}
#product-desc p {
padding-left: 170px;
}
#product-desc ul, #key-desc {
padding-left: 190px;
margin-bottom: 0;
}
#product-side, #key-side {
margin-left: 65%;
}
#product-side ul, #key-side ul {
margin-left: 0;
padding-bottom: 0;
padding-left: 20px;
}
#product-side li, #key-side {
padding-bottom: 0.2em;
}
#product-desc, #key-desc {
padding: 40px 0 25px 0;
color: #4C5C5C;
width: 60%;
float: left;
line-height: 140%;
}
#key-desc {
padding: 0;
}
#key-side {
color: #4C5C5C;
}
.product-firefox {
background: url("../../images/product-firefox-screen.png") no-repeat;
}
.product-thunderbird {
background: url("../../images/product-thunderbird-screen.png") no-repeat;
}
#product-side .download h3 {
color: #1D9101;
font-weight: bold;
margin: 0;
font-size: 140%;
}
.download h3 :link,
.download h3 :visited,
.download h3 :link:active, .download h3 :visited:active {
color: #1D9101;
}
.download h3 :link:hover, .download h3 :visited:hover {
color: #156B01;
}
.download li {
padding: 0;
margin: 0;
}
.download ul {
margin-top: 0;
margin-bottom: 0;
padding-bottom: 0;
}
.other {
padding-top: 3px;
}
.other a:link, .other a:visited { color: #515F78; }
.other a:hover { color: #000; }
.configParent {
display: block;
font-size: 85%;
}
/* Lists */
dl {
margin-top: 0;
}
dt {
font-weight: bold;
}
dd {
margin: 0.2em 0 1em 1em;
}
/* Simple Logo Boxes */
.firefox-logo, .thunderbird-logo {
padding-left: 72px;
min-height: 70px;
margin-bottom: 1em;
display: block; /* so this can be used for links */
}
* html .firefox-logo, * html .thunderbird-logo { height: 70px; } /* min-height for IE */
.firefox-logo h2, .firefox-logo h3, .firefox-logo h4, .thunderbird-logo h2, .thunderbird-logo h3, .thunderbird-logo h4 {
border-bottom: none;
}
.firefox-logo {
background: url("/images/firefox-logo-64x64.png") no-repeat;
}
.thunderbird-logo {
background: url("/images/thunderbird-logo-64x64.png") no-repeat;
}
/* Firefox Page Styles */
.product-thumb {
display: block;
margin: 15px 0 5px 0;
height: 70px;
border: 1px solid #666;
text-decoration: none;
opacity: 0.4;
}
.product-thumb:hover {
opacity: 1;
}
.thumb-firefox-tabs { background: url("/images/firefox-tabbedbrowsing-thumb.png") 0 0 no-repeat; }
.thumb-firefox-live { background: url("/images/firefox-livebookmarks-thumb.png") 0 0 no-repeat; }
.thumb-firefox-search { background: url("/images/firefox-searchbar-thumb.png") 100% 0 no-repeat; }
.firefox-awards {
margin-top: 1em;
text-align: center;
}

Просмотреть файл

@ -0,0 +1,280 @@
body {
margin: 0 0 1em 0;
padding: 0; /* need for Opera */
background: #fff;
color: #333;
min-width: 610px;
}
form { margin: 0; }
img { border: 0; }
/* Core site element widths */
/*#header, #breadcrumbs, #content, #footer {
max-width: 1000px;
margin: 0 auto;
}*/
#header { padding: 0 50px; }
#header ul { right: 0; }
* html #header ul { right: 50px; }
#breadcrumbs { padding: 0 50px; }
#content { padding: 0 50px; }
#footer { padding: 0 20px; margin: 0 50px; }
#header div, #content, #breadcrumbs div, #footer, #main-feature .feature-contents {
max-width: 900px; margin: 0 auto;
}
#header div { position: relative; }
/* header */
#header {
height: 38px;
position: relative;
border-bottom: 1px solid #A1A6B1;
background: #33415D url("../../img/header-background.png") top repeat-x;
z-index: 1;
}
#header h1 { margin: 0; }
#header h1 img {
font-weight: bold;
color: #7f7c45;
}
#header ul {
padding: 0;
margin: 0;
list-style: none;
border-left: 1px solid #576178;
border-right: 1px solid #1f2635;
position: absolute;
top: 0;
}
#header li {
float: left;
padding: 0;
margin: 0;
}
#header ul a:link, #header ul a:visited {
display: block;
float: left;
padding: 10px 15px;
text-decoration: none;
border-right: 1px solid #576178;
border-left: 1px solid #1f2635;
color: #dee0e5;
height: 36px;
voice-family: "\"}\"";
voice-family: inherit;
height: 16px;
} #ignored {}
#header ul li a:hover {
background: #475470;
color: #fff;
text-decoration: underline;
}
/* breadcrumbs */
#breadcrumbs {
background: #F7F8F8 url("../../img/breadcrumbs-background.png") bottom repeat-x;
padding-top: 4px;
padding-bottom: 30px;
font-size: 85%;
color: #999;
}
#breadcrumbs a:link,
#breadcrumbs a:visited {
color: #666;
}
#breadcrumbs a:hover,
#breadcrumbs a:active {
color: #333;
}
/* content */
#content {
background: #fff;
}
/* Sidebar */
#nav:before {
line-height: 0.1;
font-size: 1px;
background: transparent url("/images/template/menu_tr.gif") no-repeat top right;
margin: 0;
height: 9px;
display: block;
border-bottom: 1px solid #ddd;
content: url("/images/box/key-point_tl.gif");
}
#nav {
background: #E0E9E9 url("/images/template/menu_back.gif") right repeat-y;
}
#nav:after {
display: block;
padding-top: 0;
line-height: 0.1;
font-size: 1px;
content: url("/images/box/key-point_bl.gif");
margin: 0 0 0 0;
height: 8px;
background: transparent url("/images/template/menu_br.gif") scroll no-repeat bottom right ;
border-top: 1px solid #fff;
}
#nav, #nav ul {
margin: 0;
padding: 0;
list-style: none;
}
#nav {
margin-bottom: 1em;
}
#nav li {
display: inline;
padding: 0;
margin: 0;
}
#nav li span { /* used for un-linked menu items */
display: block;
padding: 6px 10px;
font-weight: bold;
color: #666;
}
#nav li span#configParent, #nav li span #configuration {
display: inline;
font-weight: normal;
padding: 0;
}
#nav li a {
display: block;
padding: 8px 10px;
text-decoration: none;
background: #EDF2F2;
border-bottom: 1px solid #ddd;
border-top: 1px solid #fff;
border-right: 1px solid #ddd;
}
#nav li a:hover {
background: #E0E9E9;
}
#nav li li span { /* used for un-linked menu items */
padding: 4px 8px 4px 20px;
}
#nav li li a {
padding: 6px 8px 6px 20px;
}
#oN {
background-color: #E0E9E9;
}
#oN:hover {
background-color: #C6DCDC;
}
/* footer */
#footer {
clear: both;
margin-top: 3em;
margin-bottom: 1em;
color: #888;
padding: 25px 50px;
text-align: center;
}
#footer-contents {
padding: 0;
border-top: 1px solid #C9D0E0;
}
#footer ul#footer-menu {
position: relative;
top: -0.8em;
margin: 0 1em 0 1em;
padding: 0;
list-style-type: none;
}
#footer ul#footer-menu li {
display: inline;
background: #fff;
margin: 0 1em;
}
#footer ul#footer-menu li a {
margin: 0 1em;
white-space: nowrap;
}
#footer p {
margin: 0.3em;
clear: both;
}
#footer .site-tools {
display: none;
}
.small-print {
font-size: 85%;
color: #888;
}
.small-print a:link,
.small-print a:visited {
color: #888;
}
.small-print a:hover,
.small-print a:active {
color: #333;
}
#locales {
margin: 0 auto 1.5em auto;
width: 610px;
line-height: 160%;
}
#locales p {
display: inline;
margin: 0;
padding: 0 0.3em 0 0;
}
#locales ul {
display: inline;
margin: 0;
padding: 0;
}
#locales li {
padding: 0 0.3em 0 0;
display: inline;
}
#locales li a {
white-space: nowrap;
}

Просмотреть файл

@ -0,0 +1,14 @@
/* Screen Stylesheet */
.required {
color: red;
}
div#UsersAdd label {
float:left;
width:12em;
}
.center {
text-align:center;
}

Двоичные данные
webtools/firefox_survey/webroot/favicon.ico Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 1.4 KiB

Двоичные данные
webtools/firefox_survey/webroot/img/breadcrumbs-background.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 992 B

Двоичные данные
webtools/firefox_survey/webroot/img/header-background.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 3.0 KiB

Двоичные данные
webtools/firefox_survey/webroot/img/moz-com-logo.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 2.2 KiB

Просмотреть файл

@ -0,0 +1,118 @@
<?php
/* SVN FILE: $Id: index.php,v 1.1 2006-07-07 18:09:28 wclouser%mozilla.com Exp $ */
/**
* Short description for file.
*
* Long description for file
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2006, 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 (c) 2006, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.app.webroot
* @since CakePHP v 0.2.9
* @version $Revision: 1.1 $
* @modifiedby $LastChangedBy: phpnut $
* @lastmodified $Date: 2006-07-07 18:09:28 $
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
#apd_set_pprof_trace('/tmp/survey.trace');
require_once '../config/defines.php';
/**
* Do not change
*/
if (!defined('DS'))
{
define('DS', DIRECTORY_SEPARATOR);
}
/**
* These defines should only be edited if you have cake installed in
* a directory layout other than the way it is distributed.
* Each define has a commented line of code that explains what you would change.
*
*/
if (!defined('ROOT'))
{
//define('ROOT', 'FULL PATH TO DIRECTORY WHERE APP DIRECTORY IS LOCATED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
//You should also use the DS define to seperate your directories
define('ROOT', dirname(dirname(dirname(__FILE__))));
}
if (!defined('APP_DIR'))
{
//define('APP_DIR', 'DIRECTORY NAME OF APPLICATION';
define('APP_DIR', basename(dirname(dirname(__FILE__))));
}
/**
* This only needs to be changed if the cake installed libs are located
* outside of the distributed directory structure.
*/
if (!defined('CAKE_CORE_INCLUDE_PATH'))
{
//define ('CAKE_CORE_INCLUDE_PATH', FULL PATH TO DIRECTORY WHERE CAKE CORE IS INSTALLED DO NOT ADD A TRAILING DIRECTORY SEPARATOR';
//You should also use the DS define to seperate your directories
define('CAKE_CORE_INCLUDE_PATH', ROOT);
}
///////////////////////////////
//DO NOT EDIT BELOW THIS LINE//
///////////////////////////////
if (!defined('WEBROOT_DIR'))
{
define ('WEBROOT_DIR', basename(dirname(__FILE__)));
}
if (!defined('WWW_ROOT'))
{
define('WWW_ROOT', dirname(__FILE__).DS);
}
if(!defined('CORE_PATH'))
{
if(function_exists('ini_set'))
{
ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.CAKE_CORE_INCLUDE_PATH.PATH_SEPARATOR.ROOT.DS.APP_DIR.DS);
define('APP_PATH', null);
define('CORE_PATH', null);
}
else
{
define('APP_PATH', ROOT.DS.APP_DIR.DS);
define('CORE_PATH', CAKE_CORE_INCLUDE_PATH.DS);
}
}
require CORE_PATH.'cake'.DS.'bootstrap.php';
if(isset($_GET['url']) && $_GET['url'] === 'favicon.ico')
{
}
else
{
$Dispatcher= new Dispatcher ();
$Dispatcher->dispatch($url);
}
if (DEBUG)
{
echo "<!-- ". round(getMicrotime() - $TIME_START, 4) ."s -->";
}
?>