Browse Source
* upstream: (122 commits) Refactored StringHelper. Line number tweak for error page added note about dependency to registerJsFile docs: Be explicitly clear about ActiveRecord::create() fixed AutoTimestamp example in advanced app \yii\rbac\DbManager::isAssigned() signature fix Changed the way to set timestamp for multiple attributes. Fixes issue #428 Allowing UniqueValidator to be used with non-AR models. Better exception page look. Removed unnecessary code from MSSQL schema. Hover and error line increased by 1 px. Error line number fix. Error line number fix. Error line number fix. Lift off!11 #418 MSIE fix. Fixes (theoretically) #418 and #413. Removed echo RBAC DbManager fixes Always refetch the migration table definition. ...tags/2.0.0-beta
Antonio Ramirez
12 years ago
231 changed files with 5852 additions and 2813 deletions
@ -0,0 +1,98 @@
|
||||
Yii 2 Advanced Application Template |
||||
=================================== |
||||
|
||||
**NOTE** Yii 2 and the relevant applications and extensions are still under heavy |
||||
development. We may make significant changes without prior notices. Please do not |
||||
use them for production. Please consider using [Yii v1.1](https://github.com/yiisoft/yii) |
||||
if you have a project to be deployed for production soon. |
||||
|
||||
|
||||
Thank you for using Yii 2 Advanced Application Template - an application template |
||||
that works out-of-box and can be easily customized to fit for your needs. |
||||
|
||||
Yii 2 Advanced Application Template is best suitable for large projects requiring frontend and backstage separation, |
||||
deployment in different environments, configuration nesting etc. |
||||
|
||||
|
||||
DIRECTORY STRUCTURE |
||||
------------------- |
||||
|
||||
``` |
||||
common |
||||
config/ contains shared configurations |
||||
models/ contains model classes used in both backstage and frontend |
||||
console |
||||
config/ contains console configurations |
||||
controllers/ contains console controllers (commands) |
||||
migrations/ contains database migrations |
||||
models/ contains console-specific model classes |
||||
runtime/ contains files generated during runtime |
||||
backstage |
||||
assets/ contains application assets such as JavaScript and CSS |
||||
config/ contains backstage configurations |
||||
controllers/ contains Web controller classes |
||||
models/ contains backstage-specific model classes |
||||
runtime/ contains files generated during runtime |
||||
views/ contains view files for the Web application |
||||
www/ contains the entry script and Web resources |
||||
frontend |
||||
assets/ contains application assets such as JavaScript and CSS |
||||
config/ contains frontend configurations |
||||
controllers/ contains Web controller classes |
||||
models/ contains frontend-specific model classes |
||||
runtime/ contains files generated during runtime |
||||
views/ contains view files for the Web application |
||||
www/ contains the entry script and Web resources |
||||
vendor/ contains dependent 3rd-party packages |
||||
environments/ contains environment-based overrides |
||||
``` |
||||
|
||||
|
||||
|
||||
REQUIREMENTS |
||||
------------ |
||||
|
||||
The minimum requirement by Yii is that your Web server supports PHP 5.3.?. |
||||
|
||||
|
||||
INSTALLATION |
||||
------------ |
||||
|
||||
### Install via Composer |
||||
|
||||
If you do not have [Composer](http://getcomposer.org/), you may download it from |
||||
[http://getcomposer.org/](http://getcomposer.org/) or run the following command on Linux/Unix/MacOS: |
||||
|
||||
~~~ |
||||
curl -s http://getcomposer.org/installer | php |
||||
~~~ |
||||
|
||||
You can then install the Bootstrap Application using the following command: |
||||
|
||||
~~~ |
||||
php composer.phar create-project --stability=dev yiisoft/yii2-app-advanced yii-advanced |
||||
~~~ |
||||
|
||||
Now you should be able to access: |
||||
|
||||
- the frontend using the URL `http://localhost/yii-advanced/frontend/www/` |
||||
- the backstage using the URL `http://localhost/yii-advanced/backstage/www/` |
||||
|
||||
assuming `yii-advanced` is directly under the document root of your Web server. |
||||
|
||||
|
||||
### Install from an Archive File |
||||
|
||||
This is not currently available. We will provide it when Yii 2 is formally released. |
||||
|
||||
GETTING STARTED |
||||
--------------- |
||||
|
||||
After template application and its dependencies are downloaded you need to initialize it and set some config values to |
||||
match your application requirements. |
||||
|
||||
1. Execute `install` command selecting `dev` as environment. |
||||
2. Set `id` value in `console/config/main.php`, `frontend/config/main.php`, `backstage/config/main.php`. |
||||
3. Create new database. It is assumed that MySQL InnoDB is used. If not, adjust `console/migrations/m130524_201442_init.php`. |
||||
4. In `common/config/params.php` set your database details in `components.db` values. |
||||
|
@ -0,0 +1,2 @@
|
||||
main-local.php |
||||
params-local.php |
@ -0,0 +1,40 @@
|
||||
<?php |
||||
$rootDir = __DIR__ . '/../..'; |
||||
|
||||
$params = array_merge( |
||||
require($rootDir . '/common/config/params.php'), |
||||
require($rootDir . '/common/config/params-local.php'), |
||||
require(__DIR__ . '/params.php'), |
||||
require(__DIR__ . '/params-local.php') |
||||
); |
||||
|
||||
return array( |
||||
'id' => 'change-me', |
||||
'basePath' => dirname(__DIR__), |
||||
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', |
||||
'preload' => array('log'), |
||||
'controllerNamespace' => 'backstage\controllers', |
||||
'modules' => array( |
||||
), |
||||
'components' => array( |
||||
'db' => $params['components.db'], |
||||
'cache' => $params['components.cache'], |
||||
'user' => array( |
||||
'class' => 'yii\web\User', |
||||
'identityClass' => 'common\models\User', |
||||
), |
||||
'assetManager' => array( |
||||
'bundles' => require(__DIR__ . '/assets.php'), |
||||
), |
||||
'log' => array( |
||||
'class' => 'yii\logging\Router', |
||||
'targets' => array( |
||||
array( |
||||
'class' => 'yii\logging\FileTarget', |
||||
'levels' => array('error', 'warning'), |
||||
), |
||||
), |
||||
), |
||||
), |
||||
'params' => $params, |
||||
); |
@ -0,0 +1,33 @@
|
||||
<?php |
||||
|
||||
namespace backstage\controllers; |
||||
|
||||
use Yii; |
||||
use yii\web\Controller; |
||||
use common\models\LoginForm; |
||||
|
||||
class SiteController extends Controller |
||||
{ |
||||
public function actionIndex() |
||||
{ |
||||
echo $this->render('index'); |
||||
} |
||||
|
||||
public function actionLogin() |
||||
{ |
||||
$model = new LoginForm(); |
||||
if ($this->populate($_POST, $model) && $model->login()) { |
||||
Yii::$app->response->redirect(array('site/index')); |
||||
} else { |
||||
echo $this->render('login', array( |
||||
'model' => $model, |
||||
)); |
||||
} |
||||
} |
||||
|
||||
public function actionLogout() |
||||
{ |
||||
Yii::$app->getUser()->logout(); |
||||
Yii::$app->getResponse()->redirect(array('site/index')); |
||||
} |
||||
} |
@ -0,0 +1,2 @@
|
||||
* |
||||
!.gitignore |
@ -0,0 +1,64 @@
|
||||
<?php |
||||
use yii\helpers\Html; |
||||
use yii\widgets\Menu; |
||||
use yii\widgets\Breadcrumbs; |
||||
use yii\debug\Toolbar; |
||||
|
||||
/** |
||||
* @var $this \yii\base\View |
||||
* @var $content string |
||||
*/ |
||||
$this->registerAssetBundle('app'); |
||||
?> |
||||
<?php $this->beginPage(); ?> |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"/> |
||||
<title><?php echo Html::encode($this->title); ?></title>
|
||||
<?php $this->head(); ?> |
||||
</head> |
||||
<body> |
||||
<div class="container"> |
||||
<?php $this->beginBody(); ?> |
||||
<div class="masthead"> |
||||
<h3 class="muted">My Company</h3> |
||||
|
||||
<div class="navbar"> |
||||
<div class="navbar-inner"> |
||||
<div class="container"> |
||||
<?php echo Menu::widget(array( |
||||
'options' => array('class' => 'nav'), |
||||
'items' => array( |
||||
array('label' => 'Home', 'url' => array('/site/index')), |
||||
Yii::$app->user->isGuest ? |
||||
array('label' => 'Login', 'url' => array('/site/login')) : |
||||
array('label' => 'Logout (' . Yii::$app->user->identity->username .')' , 'url' => array('/site/logout')), |
||||
), |
||||
)); ?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<!-- /.navbar --> |
||||
</div> |
||||
|
||||
<?php echo Breadcrumbs::widget(array( |
||||
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : array(), |
||||
)); ?> |
||||
<?php echo $content; ?> |
||||
|
||||
<hr> |
||||
|
||||
<div class="footer"> |
||||
<p>© My Company <?php echo date('Y'); ?></p>
|
||||
<p> |
||||
<?php echo Yii::powered(); ?> |
||||
Template by <a href="http://twitter.github.io/bootstrap/">Twitter Bootstrap</a> |
||||
</p> |
||||
</div> |
||||
<?php $this->endBody(); ?> |
||||
</div> |
||||
<?php echo Toolbar::widget(); ?> |
||||
</body> |
||||
</html> |
||||
<?php $this->endPage(); ?> |
@ -0,0 +1,2 @@
|
||||
* |
||||
!.gitignore |
@ -0,0 +1,16 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'adminEmail' => 'admin@example.com', |
||||
|
||||
'components.cache' => array( |
||||
'class' => 'yii\caching\FileCache', |
||||
), |
||||
|
||||
'components.db' => array( |
||||
'class' => 'yii\db\Connection', |
||||
'dsn' => 'mysql:host=localhost;dbname=yii2advanced', |
||||
'username' => 'root', |
||||
'password' => '', |
||||
), |
||||
); |
@ -0,0 +1,58 @@
|
||||
<?php |
||||
|
||||
namespace common\models; |
||||
|
||||
use Yii; |
||||
use yii\base\Model; |
||||
|
||||
/** |
||||
* LoginForm is the model behind the login form. |
||||
*/ |
||||
class LoginForm extends Model |
||||
{ |
||||
public $username; |
||||
public $password; |
||||
public $rememberMe = true; |
||||
|
||||
/** |
||||
* @return array the validation rules. |
||||
*/ |
||||
public function rules() |
||||
{ |
||||
return array( |
||||
// username and password are both required |
||||
array('username, password', 'required'), |
||||
// password is validated by validatePassword() |
||||
array('password', 'validatePassword'), |
||||
// rememberMe must be a boolean value |
||||
array('rememberMe', 'boolean'), |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Validates the password. |
||||
* This method serves as the inline validation for password. |
||||
*/ |
||||
public function validatePassword() |
||||
{ |
||||
$user = User::findByUsername($this->username); |
||||
if (!$user || !$user->validatePassword($this->password)) { |
||||
$this->addError('password', 'Incorrect username or password.'); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* Logs in a user using the provided username and password. |
||||
* @return boolean whether the user is logged in successfully |
||||
*/ |
||||
public function login() |
||||
{ |
||||
if ($this->validate()) { |
||||
$user = User::findByUsername($this->username); |
||||
Yii::$app->user->login($user, $this->rememberMe ? 3600*24*30 : 0); |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,114 @@
|
||||
<?php |
||||
namespace common\models; |
||||
|
||||
use yii\db\ActiveRecord; |
||||
use yii\helpers\SecurityHelper; |
||||
use yii\web\Identity; |
||||
|
||||
/** |
||||
* Class User |
||||
* @package common\models |
||||
* |
||||
* @property integer $id |
||||
* @property string $username |
||||
* @property string $password_hash |
||||
* @property string $email |
||||
* @property string $auth_key |
||||
* @property integer $role |
||||
* @property integer $status |
||||
* @property integer $create_time |
||||
* @property integer $update_time |
||||
*/ |
||||
class User extends ActiveRecord implements Identity |
||||
{ |
||||
/** |
||||
* @var string the raw password. Used to collect password input and isn't saved in database |
||||
*/ |
||||
public $password; |
||||
|
||||
const STATUS_DELETED = 0; |
||||
const STATUS_ACTIVE = 10; |
||||
|
||||
const ROLE_USER = 10; |
||||
|
||||
public function behaviors() |
||||
{ |
||||
return array( |
||||
'timestamp' => array( |
||||
'class' => 'yii\behaviors\AutoTimestamp', |
||||
'attributes' => array( |
||||
ActiveRecord::EVENT_BEFORE_INSERT => array('create_time', 'update_time'), |
||||
ActiveRecord::EVENT_BEFORE_UPDATE => 'update_time', |
||||
), |
||||
), |
||||
); |
||||
} |
||||
|
||||
public static function findIdentity($id) |
||||
{ |
||||
return static::find($id); |
||||
} |
||||
|
||||
public static function findByUsername($username) |
||||
{ |
||||
return static::find(array('username' => $username, 'status' => static::STATUS_ACTIVE)); |
||||
} |
||||
|
||||
public function getId() |
||||
{ |
||||
return $this->id; |
||||
} |
||||
|
||||
public function getAuthKey() |
||||
{ |
||||
return $this->auth_key; |
||||
} |
||||
|
||||
public function validateAuthKey($authKey) |
||||
{ |
||||
return $this->auth_key === $authKey; |
||||
} |
||||
|
||||
public function validatePassword($password) |
||||
{ |
||||
return SecurityHelper::validatePassword($password, $this->password_hash); |
||||
} |
||||
|
||||
public function rules() |
||||
{ |
||||
return array( |
||||
array('username', 'filter', 'filter' => 'trim'), |
||||
array('username', 'required'), |
||||
array('username', 'length', 'min' => 2, 'max' => 255), |
||||
|
||||
array('email', 'filter', 'filter' => 'trim'), |
||||
array('email', 'required'), |
||||
array('email', 'email'), |
||||
array('email', 'unique', 'message' => 'This email address has already been taken.'), |
||||
|
||||
array('password', 'required'), |
||||
array('password', 'length', 'min' => 6), |
||||
); |
||||
} |
||||
|
||||
public function scenarios() |
||||
{ |
||||
return array( |
||||
'signup' => array('username', 'email', 'password'), |
||||
'login' => array('username', 'password'), |
||||
); |
||||
} |
||||
|
||||
public function beforeSave($insert) |
||||
{ |
||||
if(parent::beforeSave($insert)) { |
||||
if($this->isNewRecord) { |
||||
if(!empty($this->password)) { |
||||
$this->password_hash = SecurityHelper::generatePasswordHash($this->password); |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
return false; |
||||
} |
||||
} |
@ -0,0 +1,44 @@
|
||||
{ |
||||
"name": "yiisoft/yii2-app-advanced", |
||||
"description": "Yii 2 Advanced Application Template", |
||||
"keywords": ["yii", "framework", "advanced", "application template"], |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"type": "project", |
||||
"license": "BSD-3-Clause", |
||||
"support": { |
||||
"issues": "https://github.com/yiisoft/yii2/issues?state=open", |
||||
"forum": "http://www.yiiframework.com/forum/", |
||||
"wiki": "http://www.yiiframework.com/wiki/", |
||||
"irc": "irc://irc.freenode.net/yii", |
||||
"source": "https://github.com/yiisoft/yii2" |
||||
}, |
||||
"minimum-stability": "dev", |
||||
"require": { |
||||
"php": ">=5.3.0", |
||||
"yiisoft/yii2": "dev-master", |
||||
"yiisoft/yii2-composer": "dev-master" |
||||
}, |
||||
"scripts": { |
||||
"post-install-cmd": [ |
||||
"yii\\composer\\InstallHandler::setPermissions" |
||||
], |
||||
"post-update-cmd": [ |
||||
"yii\\composer\\InstallHandler::setPermissions" |
||||
] |
||||
}, |
||||
"extra": { |
||||
"yii-install-writable": [ |
||||
"backstage/runtime", |
||||
"backstage/www/assets", |
||||
|
||||
"console/runtime", |
||||
"console/migrations", |
||||
|
||||
"frontend/runtime", |
||||
"frontend/www/assets" |
||||
], |
||||
"yii-install-executable": [ |
||||
"yii" |
||||
] |
||||
} |
||||
} |
@ -0,0 +1,164 @@
|
||||
{ |
||||
"_readme": [ |
||||
"This file locks the dependencies of your project to a known state", |
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" |
||||
], |
||||
"hash": "0b96a35ac23eae4e84ffd588653e88d2", |
||||
"packages": [ |
||||
{ |
||||
"name": "yiisoft/yii2", |
||||
"version": "dev-master", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/yiisoft/yii2-framework.git", |
||||
"reference": "15a8d0559260e39954a8eb6de0d28bfb7de95e7b" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/15a8d0559260e39954a8eb6de0d28bfb7de95e7b", |
||||
"reference": "15a8d0559260e39954a8eb6de0d28bfb7de95e7b", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"ext-mbstring": "*", |
||||
"lib-pcre": "*", |
||||
"php": ">=5.3.7" |
||||
}, |
||||
"suggest": { |
||||
"ezyang/htmlpurifier": "Required by HtmlPurifier.", |
||||
"michelf/php-markdown": "Required by Markdown.", |
||||
"smarty/smarty": "Required by SmartyViewRenderer.", |
||||
"twig/twig": "Required by TwigViewRenderer." |
||||
}, |
||||
"type": "library", |
||||
"autoload": { |
||||
"psr-0": { |
||||
"yii\\": "/" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"BSD-3-Clause" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Qiang Xue", |
||||
"email": "qiang.xue@gmail.com", |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"role": "Founder and project lead" |
||||
}, |
||||
{ |
||||
"name": "Alexander Makarov", |
||||
"email": "sam@rmcreative.ru", |
||||
"homepage": "http://rmcreative.ru/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Maurizio Domba", |
||||
"homepage": "http://mdomba.info/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Carsten Brandt", |
||||
"email": "mail@cebe.cc", |
||||
"homepage": "http://cebe.cc/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Wei Zhuo", |
||||
"email": "weizhuo@gmail.com", |
||||
"role": "Project site maintenance and development" |
||||
}, |
||||
{ |
||||
"name": "Sebastián Thierer", |
||||
"email": "sebas@artfos.com", |
||||
"role": "Component development" |
||||
}, |
||||
{ |
||||
"name": "Jeffrey Winesett", |
||||
"email": "jefftulsa@gmail.com", |
||||
"role": "Documentation and marketing" |
||||
}, |
||||
{ |
||||
"name": "Timur Ruziev", |
||||
"email": "resurtm@gmail.com", |
||||
"homepage": "http://resurtm.com/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Paul Klimov", |
||||
"email": "klimov.paul@gmail.com", |
||||
"role": "Core framework development" |
||||
} |
||||
], |
||||
"description": "Yii2 Web Programming Framework", |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"keywords": [ |
||||
"framework", |
||||
"yii" |
||||
], |
||||
"time": "2013-05-25 20:59:05" |
||||
}, |
||||
{ |
||||
"name": "yiisoft/yii2-composer", |
||||
"version": "dev-master", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/yiisoft/yii2-composer.git", |
||||
"reference": "7ce4060faca940b836ab88de207638940a0a0568" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/7ce4060faca940b836ab88de207638940a0a0568", |
||||
"reference": "7ce4060faca940b836ab88de207638940a0a0568", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"yiisoft/yii2": "*" |
||||
}, |
||||
"type": "library", |
||||
"autoload": { |
||||
"psr-0": { |
||||
"yii\\composer": "" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"BSD-3-Clause" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Qiang Xue", |
||||
"email": "qiang.xue@gmail.com", |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"role": "Founder and project lead" |
||||
} |
||||
], |
||||
"description": "The composer integration for the Yii framework", |
||||
"keywords": [ |
||||
"composer", |
||||
"install", |
||||
"update", |
||||
"yii" |
||||
], |
||||
"time": "2013-05-23 19:12:45" |
||||
} |
||||
], |
||||
"packages-dev": [ |
||||
|
||||
], |
||||
"aliases": [ |
||||
|
||||
], |
||||
"minimum-stability": "dev", |
||||
"stability-flags": { |
||||
"yiisoft/yii2": 20, |
||||
"yiisoft/yii2-composer": 20 |
||||
}, |
||||
"platform": { |
||||
"php": ">=5.3.0" |
||||
}, |
||||
"platform-dev": [ |
||||
|
||||
] |
||||
} |
@ -0,0 +1,2 @@
|
||||
main-local.php |
||||
params-local.php |
@ -0,0 +1,33 @@
|
||||
<?php |
||||
$rootDir = __DIR__ . '/../..'; |
||||
|
||||
$params = array_merge( |
||||
require($rootDir . '/common/config/params.php'), |
||||
require($rootDir . '/common/config/params-local.php'), |
||||
require(__DIR__ . '/params.php'), |
||||
require(__DIR__ . '/params-local.php') |
||||
); |
||||
|
||||
return array( |
||||
'id' => 'change-me', |
||||
'basePath' => dirname(__DIR__), |
||||
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', |
||||
'preload' => array('log'), |
||||
'controllerNamespace' => 'console\controllers', |
||||
'modules' => array( |
||||
), |
||||
'components' => array( |
||||
'db' => $params['components.db'], |
||||
'cache' => $params['components.cache'], |
||||
'log' => array( |
||||
'class' => 'yii\logging\Router', |
||||
'targets' => array( |
||||
array( |
||||
'class' => 'yii\logging\FileTarget', |
||||
'levels' => array('error', 'warning'), |
||||
), |
||||
), |
||||
), |
||||
), |
||||
'params' => $params, |
||||
); |
@ -0,0 +1,5 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'adminEmail' => 'admin@example.com', |
||||
); |
@ -0,0 +1,27 @@
|
||||
<?php |
||||
|
||||
class m130524_201442_init extends \yii\db\Migration |
||||
{ |
||||
public function up() |
||||
{ |
||||
// MySQL-specific table options. Adjust if you plan working with another DBMS |
||||
$tableOptions = 'CHARACTER SET utf8 COLLATE utf8_general_ci ENGINE=InnoDB'; |
||||
|
||||
$this->createTable('tbl_user', array( |
||||
'id' => Schema::TYPE_PK, |
||||
'username' => Schema::TYPE_STRING.' NOT NULL', |
||||
'password_hash' => Schema::TYPE_STRING.' NOT NULL', |
||||
'email' => Schema::TYPE_STRING.' NOT NULL', |
||||
'role' => 'tinyint NOT NULL DEFAULT 10', |
||||
|
||||
'status' => 'tinyint NOT NULL DEFAULT 10', |
||||
'create_time' => Schema::TYPE_INTEGER.' NOT NULL', |
||||
'update_time' => Schema::TYPE_INTEGER.' NOT NULL', |
||||
), $tableOptions); |
||||
} |
||||
|
||||
public function down() |
||||
{ |
||||
$this->dropTable('tbl_user'); |
||||
} |
||||
} |
@ -0,0 +1,17 @@
|
||||
<?php |
||||
return array( |
||||
'modules' => array( |
||||
// 'debug' => array( |
||||
// 'class' => 'yii\debug\Module', |
||||
// ), |
||||
), |
||||
'components' => array( |
||||
'log' => array( |
||||
'targets' => array( |
||||
// array( |
||||
// 'class' => 'yii\logging\DebugTarget', |
||||
// ) |
||||
), |
||||
), |
||||
), |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,14 @@
|
||||
<?php |
||||
// comment out the following line to disable debug mode |
||||
defined('YII_DEBUG') or define('YII_DEBUG', true); |
||||
|
||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); |
||||
require(__DIR__ . '/../../vendor/autoload.php'); |
||||
|
||||
$config = yii\helpers\ArrayHelper::merge( |
||||
require(__DIR__ . '/../config/main.php'), |
||||
require(__DIR__ . '/../config/main-local.php') |
||||
); |
||||
|
||||
$application = new yii\web\Application($config); |
||||
$application->run(); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,17 @@
|
||||
<?php |
||||
return array( |
||||
'modules' => array( |
||||
// 'debug' => array( |
||||
// 'class' => 'yii\debug\Module', |
||||
// ), |
||||
), |
||||
'components' => array( |
||||
'log' => array( |
||||
'targets' => array( |
||||
// array( |
||||
// 'class' => 'yii\logging\DebugTarget', |
||||
// ) |
||||
), |
||||
), |
||||
), |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,15 @@
|
||||
<?php |
||||
|
||||
// comment out the following line to disable debug mode |
||||
defined('YII_DEBUG') or define('YII_DEBUG', true); |
||||
|
||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); |
||||
require(__DIR__ . '/../../vendor/autoload.php'); |
||||
|
||||
$config = yii\helpers\ArrayHelper::merge( |
||||
require(__DIR__ . '/../config/main.php'), |
||||
require(__DIR__ . '/../config/main-local.php') |
||||
); |
||||
|
||||
$application = new yii\web\Application($config); |
||||
$application->run(); |
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env php |
||||
<?php |
||||
/** |
||||
* Yii console bootstrap file. |
||||
* |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
defined('YII_DEBUG') or define('YII_DEBUG', true); |
||||
|
||||
// fcgi doesn't have STDIN defined by default |
||||
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); |
||||
|
||||
require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); |
||||
require(__DIR__ . '/vendor/autoload.php'); |
||||
|
||||
$config = yii\helpers\ArrayHelper::merge( |
||||
require(__DIR__ . '/console/config/main.php'), |
||||
require(__DIR__ . '/console/config/main-local.php') |
||||
); |
||||
|
||||
$application = new yii\console\Application($config); |
||||
$application->run(); |
@ -0,0 +1,38 @@
|
||||
<?php |
||||
/** |
||||
* The manifest of files that are local to specific environment. |
||||
* This file returns a list of environments that the application |
||||
* may be installed under. The returned data must be in the following |
||||
* format: |
||||
* |
||||
* ```php |
||||
* return array( |
||||
* 'environment name' => array( |
||||
* 'path' => 'directory storing the local files', |
||||
* 'writable' => array( |
||||
* // list of directories that should be set writable |
||||
* ), |
||||
* ), |
||||
* ); |
||||
* ``` |
||||
*/ |
||||
return array( |
||||
'Development' => array( |
||||
'path' => 'dev', |
||||
'writable' => array( |
||||
// handled by composer.json already |
||||
), |
||||
'executable' => array( |
||||
'yiic', |
||||
), |
||||
), |
||||
'Production' => array( |
||||
'path' => 'prod', |
||||
'writable' => array( |
||||
// handled by composer.json already |
||||
), |
||||
'executable' => array( |
||||
'yiic', |
||||
), |
||||
), |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,14 @@
|
||||
<?php |
||||
// comment out the following line to disable debug mode |
||||
defined('YII_DEBUG') or define('YII_DEBUG', false); |
||||
|
||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); |
||||
require(__DIR__ . '/../../vendor/autoload.php'); |
||||
|
||||
$config = yii\helpers\ArrayHelper::merge( |
||||
require(__DIR__ . '/../config/main.php'), |
||||
require(__DIR__ . '/../config/main-local.php') |
||||
); |
||||
|
||||
$application = new yii\web\Application($config); |
||||
$application->run(); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,3 @@
|
||||
<?php |
||||
return array( |
||||
); |
@ -0,0 +1,15 @@
|
||||
<?php |
||||
|
||||
// comment out the following line to disable debug mode |
||||
defined('YII_DEBUG') or define('YII_DEBUG', false); |
||||
|
||||
require(__DIR__ . '/../../vendor/yiisoft/yii2/yii/Yii.php'); |
||||
require(__DIR__ . '/../../vendor/autoload.php'); |
||||
|
||||
$config = yii\helpers\ArrayHelper::merge( |
||||
require(__DIR__ . '/../config/main.php'), |
||||
require(__DIR__ . '/../config/main-local.php') |
||||
); |
||||
|
||||
$application = new yii\web\Application($config); |
||||
$application->run(); |
@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env php |
||||
<?php |
||||
/** |
||||
* Yii console bootstrap file. |
||||
* |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
defined('YII_DEBUG') or define('YII_DEBUG', false); |
||||
|
||||
// fcgi doesn't have STDIN defined by default |
||||
defined('STDIN') or define('STDIN', fopen('php://stdin', 'r')); |
||||
|
||||
require(__DIR__ . '/vendor/yiisoft/yii2/yii/Yii.php'); |
||||
require(__DIR__ . '/vendor/autoload.php'); |
||||
|
||||
$config = yii\helpers\ArrayHelper::merge( |
||||
require(__DIR__ . '/console/config/main.php'), |
||||
require(__DIR__ . '/console/config/main-local.php') |
||||
); |
||||
|
||||
$application = new yii\console\Application($config); |
||||
$application->run(); |
@ -0,0 +1,2 @@
|
||||
main-local.php |
||||
params-local.php |
@ -0,0 +1,18 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'app' => array( |
||||
'basePath' => '@wwwroot', |
||||
'baseUrl' => '@www', |
||||
'css' => array( |
||||
'css/site.css', |
||||
), |
||||
'js' => array( |
||||
|
||||
), |
||||
'depends' => array( |
||||
'yii', |
||||
'yii/bootstrap/responsive', |
||||
), |
||||
), |
||||
); |
@ -0,0 +1,40 @@
|
||||
<?php |
||||
$rootDir = __DIR__ . '/../..'; |
||||
|
||||
$params = array_merge( |
||||
require($rootDir . '/common/config/params.php'), |
||||
require($rootDir . '/common/config/params-local.php'), |
||||
require(__DIR__ . '/params.php'), |
||||
require(__DIR__ . '/params-local.php') |
||||
); |
||||
|
||||
return array( |
||||
'id' => 'change-me', |
||||
'basePath' => dirname(__DIR__), |
||||
'vendorPath' => dirname(dirname(__DIR__)) . '/vendor', |
||||
'preload' => array('log'), |
||||
'controllerNamespace' => 'frontend\controllers', |
||||
'modules' => array( |
||||
), |
||||
'components' => array( |
||||
'db' => $params['components.db'], |
||||
'cache' => $params['components.cache'], |
||||
'user' => array( |
||||
'class' => 'yii\web\User', |
||||
'identityClass' => 'common\models\User', |
||||
), |
||||
'assetManager' => array( |
||||
'bundles' => require(__DIR__ . '/assets.php'), |
||||
), |
||||
'log' => array( |
||||
'class' => 'yii\logging\Router', |
||||
'targets' => array( |
||||
array( |
||||
'class' => 'yii\logging\FileTarget', |
||||
'levels' => array('error', 'warning'), |
||||
), |
||||
), |
||||
), |
||||
), |
||||
'params' => $params, |
||||
); |
@ -0,0 +1,5 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'adminEmail' => 'admin@example.com', |
||||
); |
@ -0,0 +1,61 @@
|
||||
<?php |
||||
|
||||
namespace frontend\controllers; |
||||
|
||||
use Yii; |
||||
use yii\web\Controller; |
||||
use common\models\LoginForm; |
||||
use frontend\models\ContactForm; |
||||
|
||||
class SiteController extends Controller |
||||
{ |
||||
public function actions() |
||||
{ |
||||
return array( |
||||
'captcha' => array( |
||||
'class' => 'yii\web\CaptchaAction', |
||||
), |
||||
); |
||||
} |
||||
|
||||
public function actionIndex() |
||||
{ |
||||
echo $this->render('index'); |
||||
} |
||||
|
||||
public function actionLogin() |
||||
{ |
||||
$model = new LoginForm(); |
||||
if ($this->populate($_POST, $model) && $model->login()) { |
||||
Yii::$app->response->redirect(array('site/index')); |
||||
} else { |
||||
echo $this->render('login', array( |
||||
'model' => $model, |
||||
)); |
||||
} |
||||
} |
||||
|
||||
public function actionLogout() |
||||
{ |
||||
Yii::$app->getUser()->logout(); |
||||
Yii::$app->getResponse()->redirect(array('site/index')); |
||||
} |
||||
|
||||
public function actionContact() |
||||
{ |
||||
$model = new ContactForm; |
||||
if ($this->populate($_POST, $model) && $model->contact(Yii::$app->params['adminEmail'])) { |
||||
Yii::$app->session->setFlash('contactFormSubmitted'); |
||||
Yii::$app->response->refresh(); |
||||
} else { |
||||
echo $this->render('contact', array( |
||||
'model' => $model, |
||||
)); |
||||
} |
||||
} |
||||
|
||||
public function actionAbout() |
||||
{ |
||||
echo $this->render('about'); |
||||
} |
||||
} |
@ -0,0 +1,63 @@
|
||||
<?php |
||||
|
||||
namespace frontend\models; |
||||
|
||||
use yii\base\Model; |
||||
|
||||
/** |
||||
* ContactForm is the model behind the contact form. |
||||
*/ |
||||
class ContactForm extends Model |
||||
{ |
||||
public $name; |
||||
public $email; |
||||
public $subject; |
||||
public $body; |
||||
public $verifyCode; |
||||
|
||||
/** |
||||
* @return array the validation rules. |
||||
*/ |
||||
public function rules() |
||||
{ |
||||
return array( |
||||
// name, email, subject and body are required |
||||
array('name, email, subject, body', 'required'), |
||||
// email has to be a valid email address |
||||
array('email', 'email'), |
||||
// verifyCode needs to be entered correctly |
||||
array('verifyCode', 'captcha'), |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* @return array customized attribute labels |
||||
*/ |
||||
public function attributeLabels() |
||||
{ |
||||
return array( |
||||
'verifyCode' => 'Verification Code', |
||||
); |
||||
} |
||||
|
||||
/** |
||||
* Sends an email to the specified email address using the information collected by this model. |
||||
* @param string $email the target email address |
||||
* @return boolean whether the model passes validation |
||||
*/ |
||||
public function contact($email) |
||||
{ |
||||
if ($this->validate()) { |
||||
$name = '=?UTF-8?B?' . base64_encode($this->name) . '?='; |
||||
$subject = '=?UTF-8?B?' . base64_encode($this->subject) . '?='; |
||||
$headers = "From: $name <{$this->email}>\r\n" . |
||||
"Reply-To: {$this->email}\r\n" . |
||||
"MIME-Version: 1.0\r\n" . |
||||
"Content-type: text/plain; charset=UTF-8"; |
||||
mail($email, $subject, $this->body, $headers); |
||||
return true; |
||||
} else { |
||||
return false; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,2 @@
|
||||
* |
||||
!.gitignore |
@ -0,0 +1,47 @@
|
||||
<?php |
||||
/** |
||||
* @var yii\base\View $this |
||||
*/ |
||||
$this->title = 'Welcome'; |
||||
?> |
||||
<div class="jumbotron"> |
||||
<h1>Welcome!</h1> |
||||
|
||||
<p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus |
||||
commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p> |
||||
<a class="btn btn-large btn-success" href="http://www.yiiframework.com">Get started with Yii</a> |
||||
</div> |
||||
|
||||
<hr> |
||||
|
||||
<!-- Example row of columns --> |
||||
<div class="row-fluid"> |
||||
<div class="span4"> |
||||
<h2>Heading</h2> |
||||
|
||||
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris |
||||
condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. |
||||
Donec sed odio dui. </p> |
||||
|
||||
<p><a class="btn" href="#">View details »</a></p> |
||||
</div> |
||||
<div class="span4"> |
||||
<h2>Heading</h2> |
||||
|
||||
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris |
||||
condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. |
||||
Donec sed odio dui. </p> |
||||
|
||||
<p><a class="btn" href="#">View details »</a></p> |
||||
</div> |
||||
<div class="span4"> |
||||
<h2>Heading</h2> |
||||
|
||||
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta |
||||
felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum |
||||
massa.</p> |
||||
|
||||
<p><a class="btn" href="#">View details »</a></p> |
||||
</div> |
||||
</div> |
||||
|
@ -0,0 +1,24 @@
|
||||
<?php |
||||
use yii\helpers\Html; |
||||
use yii\widgets\ActiveForm; |
||||
|
||||
/** |
||||
* @var yii\base\View $this |
||||
* @var yii\widgets\ActiveForm $form |
||||
* @var app\models\LoginForm $model |
||||
*/ |
||||
$this->title = 'Login'; |
||||
$this->params['breadcrumbs'][] = $this->title; |
||||
?> |
||||
<h1><?php echo Html::encode($this->title); ?></h1>
|
||||
|
||||
<p>Please fill out the following fields to login:</p> |
||||
|
||||
<?php $form = ActiveForm::begin(array('options' => array('class' => 'form-horizontal'))); ?> |
||||
<?php echo $form->field($model, 'username')->textInput(); ?> |
||||
<?php echo $form->field($model, 'password')->passwordInput(); ?> |
||||
<?php echo $form->field($model, 'rememberMe')->checkbox(); ?> |
||||
<div class="form-actions"> |
||||
<?php echo Html::submitButton('Login', null, null, array('class' => 'btn btn-primary')); ?> |
||||
</div> |
||||
<?php ActiveForm::end(); ?> |
@ -0,0 +1,2 @@
|
||||
* |
||||
!.gitignore |
@ -0,0 +1,78 @@
|
||||
body { |
||||
padding-top: 20px; |
||||
padding-bottom: 60px; |
||||
} |
||||
|
||||
/* Custom container */ |
||||
.container { |
||||
margin: 0 auto; |
||||
max-width: 1000px; |
||||
} |
||||
|
||||
.container > hr { |
||||
margin: 60px 0; |
||||
} |
||||
|
||||
/* Main marketing message and sign up button */ |
||||
.jumbotron { |
||||
margin: 80px 0; |
||||
text-align: center; |
||||
} |
||||
|
||||
.jumbotron h1 { |
||||
font-size: 100px; |
||||
line-height: 1; |
||||
} |
||||
|
||||
.jumbotron .lead { |
||||
font-size: 24px; |
||||
line-height: 1.25; |
||||
} |
||||
|
||||
.jumbotron .btn { |
||||
font-size: 21px; |
||||
padding: 14px 24px; |
||||
} |
||||
|
||||
/* Supporting marketing content */ |
||||
.marketing { |
||||
margin: 60px 0; |
||||
} |
||||
|
||||
.marketing p + h4 { |
||||
margin-top: 28px; |
||||
} |
||||
|
||||
/* Customize the navbar links to be fill the entire space of the .navbar */ |
||||
.navbar .navbar-inner { |
||||
padding: 0; |
||||
} |
||||
|
||||
.navbar .nav { |
||||
margin: 0; |
||||
display: table; |
||||
width: 100%; |
||||
} |
||||
|
||||
.navbar .nav li { |
||||
display: table-cell; |
||||
width: 1%; |
||||
float: none; |
||||
} |
||||
|
||||
.navbar .nav li a { |
||||
font-weight: bold; |
||||
text-align: center; |
||||
border-left: 1px solid rgba(255, 255, 255, .75); |
||||
border-right: 1px solid rgba(0, 0, 0, .1); |
||||
} |
||||
|
||||
.navbar .nav li:first-child a { |
||||
border-left: 0; |
||||
border-radius: 3px 0 0 3px; |
||||
} |
||||
|
||||
.navbar .nav li:last-child a { |
||||
border-right: 0; |
||||
border-radius: 0 3px 3px 0; |
||||
} |
@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env php |
||||
<?php |
||||
$root = str_replace('\\', '/', __DIR__); |
||||
$envs = require("$root/environments/index.php"); |
||||
$envNames = array_keys($envs); |
||||
|
||||
echo "Yii Application Installation Tool v1.0\n\n"; |
||||
echo "Which environment do you want to install the application to?\n\n"; |
||||
foreach ($envNames as $i => $name) { |
||||
echo " [$i] $name\n"; |
||||
} |
||||
echo "\n Your choice [0-" . (count($envs) - 1) . ', or "q" to quit] '; |
||||
$answer = trim(fgets(STDIN)); |
||||
if (!ctype_digit($answer) || !isset($envNames[$answer])) { |
||||
echo "\n Quit installation.\n"; |
||||
return; |
||||
} |
||||
|
||||
$env = $envs[$envNames[$answer]]; |
||||
echo "\n Install the application under '{$envNames[$answer]}' environment? [yes|no] "; |
||||
$answer = trim(fgets(STDIN)); |
||||
if (strncasecmp($answer, 'y', 1)) { |
||||
echo "\n Quit installation.\n"; |
||||
return; |
||||
} |
||||
|
||||
echo "\n Start installation ...\n\n"; |
||||
$files = getFileList("$root/environments/{$env['path']}"); |
||||
$all = false; |
||||
foreach ($files as $file) { |
||||
if (!copyFile($root, "environments/{$env['path']}/$file", $file, $all)) { |
||||
break; |
||||
} |
||||
} |
||||
|
||||
if (isset($env['writable'])) { |
||||
foreach ($env['writable'] as $writable) { |
||||
echo " chmod 0777 $writable\n"; |
||||
@chmod("$root/$writable", 0777); |
||||
} |
||||
} |
||||
|
||||
if (isset($env['executable'])) { |
||||
foreach ($env['executable'] as $executable) { |
||||
echo " chmod 0755 $executable\n"; |
||||
@chmod("$root/$executable", 0755); |
||||
} |
||||
} |
||||
|
||||
echo "\n ... installation completed.\n\n"; |
||||
|
||||
function getFileList($root, $basePath = '') |
||||
{ |
||||
$files = array(); |
||||
$handle = opendir($root); |
||||
while (($path = readdir($handle)) !== false) { |
||||
if ($path === '.svn' || $path === '.' || $path === '..') { |
||||
continue; |
||||
} |
||||
$fullPath = "$root/$path"; |
||||
$relativePath = $basePath === '' ? $path : "$basePath/$path"; |
||||
if (is_dir($fullPath)) { |
||||
$files = array_merge($files, getFileList($fullPath, $relativePath)); |
||||
} else { |
||||
$files[] = $relativePath; |
||||
} |
||||
} |
||||
closedir($handle); |
||||
return $files; |
||||
} |
||||
|
||||
function copyFile($root, $source, $target, &$all) |
||||
{ |
||||
if (!is_file($root . '/' . $source)) { |
||||
echo " skip $target ($source not exist)\n"; |
||||
return true; |
||||
} |
||||
if (is_file($root . '/' . $target)) { |
||||
if (file_get_contents($root . '/' . $source) === file_get_contents($root . '/' . $target)) { |
||||
echo " unchanged $target\n"; |
||||
return true; |
||||
} |
||||
if ($all) { |
||||
echo " overwrite $target\n"; |
||||
} else { |
||||
echo " exist $target\n"; |
||||
echo " ...overwrite? [Yes|No|All|Quit] "; |
||||
$answer = trim(fgets(STDIN)); |
||||
if (!strncasecmp($answer, 'q', 1)) { |
||||
return false; |
||||
} else { |
||||
if (!strncasecmp($answer, 'y', 1)) { |
||||
echo " overwrite $target\n"; |
||||
} else { |
||||
if (!strncasecmp($answer, 'a', 1)) { |
||||
echo " overwrite $target\n"; |
||||
$all = true; |
||||
} else { |
||||
echo " skip $target\n"; |
||||
return true; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
file_put_contents($root . '/' . $target, file_get_contents($root . '/' . $source)); |
||||
return true; |
||||
} |
||||
echo " generate $target\n"; |
||||
@mkdir(dirname($root . '/' . $target), 0777, true); |
||||
file_put_contents($root . '/' . $target, file_get_contents($root . '/' . $source)); |
||||
return true; |
||||
} |
@ -0,0 +1,20 @@
|
||||
@echo off |
||||
|
||||
rem ------------------------------------------------------------- |
||||
rem Yii command line install script for Windows. |
||||
rem |
||||
rem @author Qiang Xue <qiang.xue@gmail.com> |
||||
rem @link http://www.yiiframework.com/ |
||||
rem @copyright Copyright © 2012 Yii Software LLC |
||||
rem @license http://www.yiiframework.com/license/ |
||||
rem ------------------------------------------------------------- |
||||
|
||||
@setlocal |
||||
|
||||
set YII_PATH=%~dp0 |
||||
|
||||
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe |
||||
|
||||
"%PHP_COMMAND%" "%YII_PATH%install" %* |
||||
|
||||
@endlocal |
@ -0,0 +1,32 @@
|
||||
The Yii framework is free software. It is released under the terms of |
||||
the following BSD License. |
||||
|
||||
Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.com) |
||||
All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions |
||||
are met: |
||||
|
||||
* Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in |
||||
the documentation and/or other materials provided with the |
||||
distribution. |
||||
* Neither the name of Yii Software LLC nor the names of its |
||||
contributors may be used to endorse or promote products derived |
||||
from this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
||||
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
||||
POSSIBILITY OF SUCH DAMAGE. |
@ -1,7 +1,7 @@
|
||||
{ |
||||
"name": "yiisoft/yii2-bootstrap", |
||||
"description": "Yii 2 Bootstrap Application", |
||||
"keywords": ["yii", "framework", "bootstrap"], |
||||
"name": "yiisoft/yii2-app-basic", |
||||
"description": "Yii 2 Basic Application Template", |
||||
"keywords": ["yii", "framework", "basic", "application template"], |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"type": "project", |
||||
"license": "BSD-3-Clause", |
@ -0,0 +1,164 @@
|
||||
{ |
||||
"_readme": [ |
||||
"This file locks the dependencies of your project to a known state", |
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file" |
||||
], |
||||
"hash": "0411dbbd774aa1c89256c77c68023940", |
||||
"packages": [ |
||||
{ |
||||
"name": "yiisoft/yii2", |
||||
"version": "dev-master", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/yiisoft/yii2-framework.git", |
||||
"reference": "15a8d0559260e39954a8eb6de0d28bfb7de95e7b" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/15a8d0559260e39954a8eb6de0d28bfb7de95e7b", |
||||
"reference": "15a8d0559260e39954a8eb6de0d28bfb7de95e7b", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"ext-mbstring": "*", |
||||
"lib-pcre": "*", |
||||
"php": ">=5.3.7" |
||||
}, |
||||
"suggest": { |
||||
"ezyang/htmlpurifier": "Required by HtmlPurifier.", |
||||
"michelf/php-markdown": "Required by Markdown.", |
||||
"smarty/smarty": "Required by SmartyViewRenderer.", |
||||
"twig/twig": "Required by TwigViewRenderer." |
||||
}, |
||||
"type": "library", |
||||
"autoload": { |
||||
"psr-0": { |
||||
"yii\\": "/" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"BSD-3-Clause" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Qiang Xue", |
||||
"email": "qiang.xue@gmail.com", |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"role": "Founder and project lead" |
||||
}, |
||||
{ |
||||
"name": "Alexander Makarov", |
||||
"email": "sam@rmcreative.ru", |
||||
"homepage": "http://rmcreative.ru/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Maurizio Domba", |
||||
"homepage": "http://mdomba.info/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Carsten Brandt", |
||||
"email": "mail@cebe.cc", |
||||
"homepage": "http://cebe.cc/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Wei Zhuo", |
||||
"email": "weizhuo@gmail.com", |
||||
"role": "Project site maintenance and development" |
||||
}, |
||||
{ |
||||
"name": "Sebastián Thierer", |
||||
"email": "sebas@artfos.com", |
||||
"role": "Component development" |
||||
}, |
||||
{ |
||||
"name": "Jeffrey Winesett", |
||||
"email": "jefftulsa@gmail.com", |
||||
"role": "Documentation and marketing" |
||||
}, |
||||
{ |
||||
"name": "Timur Ruziev", |
||||
"email": "resurtm@gmail.com", |
||||
"homepage": "http://resurtm.com/", |
||||
"role": "Core framework development" |
||||
}, |
||||
{ |
||||
"name": "Paul Klimov", |
||||
"email": "klimov.paul@gmail.com", |
||||
"role": "Core framework development" |
||||
} |
||||
], |
||||
"description": "Yii2 Web Programming Framework", |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"keywords": [ |
||||
"framework", |
||||
"yii" |
||||
], |
||||
"time": "2013-05-25 20:59:05" |
||||
}, |
||||
{ |
||||
"name": "yiisoft/yii2-composer", |
||||
"version": "dev-master", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/yiisoft/yii2-composer.git", |
||||
"reference": "7ce4060faca940b836ab88de207638940a0a0568" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/7ce4060faca940b836ab88de207638940a0a0568", |
||||
"reference": "7ce4060faca940b836ab88de207638940a0a0568", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"yiisoft/yii2": "*" |
||||
}, |
||||
"type": "library", |
||||
"autoload": { |
||||
"psr-0": { |
||||
"yii\\composer": "" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"BSD-3-Clause" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Qiang Xue", |
||||
"email": "qiang.xue@gmail.com", |
||||
"homepage": "http://www.yiiframework.com/", |
||||
"role": "Founder and project lead" |
||||
} |
||||
], |
||||
"description": "The composer integration for the Yii framework", |
||||
"keywords": [ |
||||
"composer", |
||||
"install", |
||||
"update", |
||||
"yii" |
||||
], |
||||
"time": "2013-05-23 19:12:45" |
||||
} |
||||
], |
||||
"packages-dev": [ |
||||
|
||||
], |
||||
"aliases": [ |
||||
|
||||
], |
||||
"minimum-stability": "dev", |
||||
"stability-flags": { |
||||
"yiisoft/yii2": 20, |
||||
"yiisoft/yii2-composer": 20 |
||||
}, |
||||
"platform": { |
||||
"php": ">=5.3.0" |
||||
}, |
||||
"platform-dev": [ |
||||
|
||||
] |
||||
} |
@ -0,0 +1,18 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'app' => array( |
||||
'basePath' => '@wwwroot', |
||||
'baseUrl' => '@www', |
||||
'css' => array( |
||||
'css/site.css', |
||||
), |
||||
'js' => array( |
||||
|
||||
), |
||||
'depends' => array( |
||||
'yii', |
||||
'yii/bootstrap/responsive', |
||||
), |
||||
), |
||||
); |
@ -0,0 +1,5 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'adminEmail' => 'admin@example.com', |
||||
); |
@ -0,0 +1,103 @@
|
||||
<?php |
||||
/** |
||||
* Application requirement checker script. |
||||
* |
||||
* In order to run this script use the following console command: |
||||
* php requirements.php |
||||
* |
||||
* In order to run this script from the web, you should copy it to the web root. |
||||
* If you are using Linux you can create a hard link instead, using the following command: |
||||
* ln requirements.php ../requirements.php |
||||
*/ |
||||
|
||||
// you may need to adjust this path to the correct Yii framework path |
||||
$frameworkPath = dirname(__FILE__) . '/vendor/yiisoft/yii2/yii'; |
||||
|
||||
if (!is_dir($frameworkPath)) { |
||||
echo '<h1>Error</h1>'; |
||||
echo '<p><strong>The path to yii framework seems to be incorrect.</strong></p>'; |
||||
echo '<p>You need to install Yii framework via composer or adjust the framework path in file <abbr title="' . __FILE__ . '">' . basename(__FILE__) .'</abbr>.</p>'; |
||||
echo '<p>Please refer to the <abbr title="' . dirname(__FILE__) . '/README.md">README</abbr> on how to install Yii.</p>'; |
||||
} |
||||
|
||||
require_once($frameworkPath . '/requirements/YiiRequirementChecker.php'); |
||||
$requirementsChecker = new YiiRequirementChecker(); |
||||
|
||||
/** |
||||
* Adjust requirements according to your application specifics. |
||||
*/ |
||||
$requirements = array( |
||||
// Database : |
||||
array( |
||||
'name' => 'PDO extension', |
||||
'mandatory' => true, |
||||
'condition' => extension_loaded('pdo'), |
||||
'by' => 'All <a href="http://www.yiiframework.com/doc/api/#system.db">DB-related classes</a>', |
||||
), |
||||
array( |
||||
'name' => 'PDO SQLite extension', |
||||
'mandatory' => false, |
||||
'condition' => extension_loaded('pdo_sqlite'), |
||||
'by' => 'All <a href="http://www.yiiframework.com/doc/api/#system.db">DB-related classes</a>', |
||||
'memo' => 'Required for SQLite database.', |
||||
), |
||||
array( |
||||
'name' => 'PDO MySQL extension', |
||||
'mandatory' => false, |
||||
'condition' => extension_loaded('pdo_mysql'), |
||||
'by' => 'All <a href="http://www.yiiframework.com/doc/api/#system.db">DB-related classes</a>', |
||||
'memo' => 'Required for MySQL database.', |
||||
), |
||||
// Cache : |
||||
array( |
||||
'name' => 'Memcache extension', |
||||
'mandatory' => false, |
||||
'condition' => extension_loaded('memcache') || extension_loaded('memcached'), |
||||
'by' => '<a href="http://www.yiiframework.com/doc/api/CMemCache">CMemCache</a>', |
||||
'memo' => extension_loaded('memcached') ? 'To use memcached set <a href="http://www.yiiframework.com/doc/api/CMemCache#useMemcached-detail">CMemCache::useMemcached</a> to <code>true</code>.' : '' |
||||
), |
||||
array( |
||||
'name' => 'APC extension', |
||||
'mandatory' => false, |
||||
'condition' => extension_loaded('apc') || extension_loaded('apc'), |
||||
'by' => '<a href="http://www.yiiframework.com/doc/api/CApcCache">CApcCache</a>', |
||||
), |
||||
// Additional PHP extensions : |
||||
array( |
||||
'name' => 'Mcrypt extension', |
||||
'mandatory' => false, |
||||
'condition' => extension_loaded('mcrypt'), |
||||
'by' => '<a href="http://www.yiiframework.com/doc/api/CSecurityManager">CSecurityManager</a>', |
||||
'memo' => 'Required by encrypt and decrypt methods.' |
||||
), |
||||
// PHP ini : |
||||
'phpSafeMode' => array( |
||||
'name' => 'PHP safe mode', |
||||
'mandatory' => false, |
||||
'condition' => $requirementsChecker->checkPhpIniOff("safe_mode"), |
||||
'by' => 'File uploading and console command execution', |
||||
'memo' => '"safe_mode" should be disabled at php.ini', |
||||
), |
||||
'phpExposePhp' => array( |
||||
'name' => 'Expose PHP', |
||||
'mandatory' => false, |
||||
'condition' => $requirementsChecker->checkPhpIniOff("expose_php"), |
||||
'by' => 'Security reasons', |
||||
'memo' => '"expose_php" should be disabled at php.ini', |
||||
), |
||||
'phpAllowUrlInclude' => array( |
||||
'name' => 'PHP allow url include', |
||||
'mandatory' => false, |
||||
'condition' => $requirementsChecker->checkPhpIniOff("allow_url_include"), |
||||
'by' => 'Security reasons', |
||||
'memo' => '"allow_url_include" should be disabled at php.ini', |
||||
), |
||||
'phpSmtp' => array( |
||||
'name' => 'PHP mail SMTP', |
||||
'mandatory' => false, |
||||
'condition' => strlen(ini_get('SMTP'))>0, |
||||
'by' => 'Email sending', |
||||
'memo' => 'PHP mail SMTP server required', |
||||
), |
||||
); |
||||
$requirementsChecker->checkYii()->check($requirements)->render(); |
@ -0,0 +1,66 @@
|
||||
<?php |
||||
use yii\helpers\Html; |
||||
use yii\widgets\Menu; |
||||
use yii\widgets\Breadcrumbs; |
||||
use yii\debug\Toolbar; |
||||
|
||||
/** |
||||
* @var $this \yii\base\View |
||||
* @var $content string |
||||
*/ |
||||
$this->registerAssetBundle('app'); |
||||
?> |
||||
<?php $this->beginPage(); ?> |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"/> |
||||
<title><?php echo Html::encode($this->title); ?></title>
|
||||
<?php $this->head(); ?> |
||||
</head> |
||||
<body> |
||||
<div class="container"> |
||||
<?php $this->beginBody(); ?> |
||||
<div class="masthead"> |
||||
<h3 class="muted">My Company</h3> |
||||
|
||||
<div class="navbar"> |
||||
<div class="navbar-inner"> |
||||
<div class="container"> |
||||
<?php echo Menu::widget(array( |
||||
'options' => array('class' => 'nav'), |
||||
'items' => array( |
||||
array('label' => 'Home', 'url' => array('/site/index')), |
||||
array('label' => 'About', 'url' => array('/site/about')), |
||||
array('label' => 'Contact', 'url' => array('/site/contact')), |
||||
Yii::$app->user->isGuest ? |
||||
array('label' => 'Login', 'url' => array('/site/login')) : |
||||
array('label' => 'Logout (' . Yii::$app->user->identity->username .')' , 'url' => array('/site/logout')), |
||||
), |
||||
)); ?> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
<!-- /.navbar --> |
||||
</div> |
||||
|
||||
<?php echo Breadcrumbs::widget(array( |
||||
'links' => isset($this->params['breadcrumbs']) ? $this->params['breadcrumbs'] : array(), |
||||
)); ?> |
||||
<?php echo $content; ?> |
||||
|
||||
<hr> |
||||
|
||||
<div class="footer"> |
||||
<p>© My Company <?php echo date('Y'); ?></p>
|
||||
<p> |
||||
<?php echo Yii::powered(); ?> |
||||
Template by <a href="http://twitter.github.io/bootstrap/">Twitter Bootstrap</a> |
||||
</p> |
||||
</div> |
||||
<?php $this->endBody(); ?> |
||||
</div> |
||||
<?php echo Toolbar::widget(); ?> |
||||
</body> |
||||
</html> |
||||
<?php $this->endPage(); ?> |
@ -0,0 +1,16 @@
|
||||
<?php |
||||
use yii\helpers\Html; |
||||
/** |
||||
* @var yii\base\View $this |
||||
*/ |
||||
$this->title = 'About'; |
||||
$this->params['breadcrumbs'][] = $this->title; |
||||
?> |
||||
<h1><?php echo Html::encode($this->title); ?></h1>
|
||||
|
||||
<p> |
||||
This is the About page. You may modify the following file to customize its content: |
||||
</p> |
||||
|
||||
<code><?php echo __FILE__; ?></code>
|
||||
|
@ -0,0 +1,46 @@
|
||||
<?php |
||||
use yii\helpers\Html; |
||||
use yii\widgets\ActiveForm; |
||||
use yii\widgets\Captcha; |
||||
|
||||
/** |
||||
* @var yii\base\View $this |
||||
* @var yii\widgets\ActiveForm $form |
||||
* @var app\models\ContactForm $model |
||||
*/ |
||||
$this->title = 'Contact'; |
||||
$this->params['breadcrumbs'][] = $this->title; |
||||
?> |
||||
<h1><?php echo Html::encode($this->title); ?></h1>
|
||||
|
||||
<?php if (Yii::$app->session->hasFlash('contactFormSubmitted')): ?> |
||||
<div class="alert alert-success"> |
||||
Thank you for contacting us. We will respond to you as soon as possible. |
||||
</div> |
||||
<?php return; endif; ?> |
||||
|
||||
<p> |
||||
If you have business inquiries or other questions, please fill out the following form to contact us. Thank you. |
||||
</p> |
||||
|
||||
<?php $form = ActiveForm::begin(array( |
||||
'options' => array('class' => 'form-horizontal'), |
||||
'fieldConfig' => array('inputOptions' => array('class' => 'input-xlarge')), |
||||
)); ?> |
||||
<?php echo $form->field($model, 'name')->textInput(); ?> |
||||
<?php echo $form->field($model, 'email')->textInput(); ?> |
||||
<?php echo $form->field($model, 'subject')->textInput(); ?> |
||||
<?php echo $form->field($model, 'body')->textArea(array('rows' => 6)); ?> |
||||
<?php |
||||
$field = $form->field($model, 'verifyCode'); |
||||
echo $field->begin() |
||||
. $field->label() |
||||
. Captcha::widget() |
||||
. Html::activeTextInput($model, 'verifyCode', array('class' => 'input-medium')) |
||||
. $field->error() |
||||
. $field->end(); |
||||
?> |
||||
<div class="form-actions"> |
||||
<?php echo Html::submitButton('Submit', null, null, array('class' => 'btn btn-primary')); ?> |
||||
</div> |
||||
<?php ActiveForm::end(); ?> |
@ -0,0 +1,47 @@
|
||||
<?php |
||||
/** |
||||
* @var yii\base\View $this |
||||
*/ |
||||
$this->title = 'Welcome'; |
||||
?> |
||||
<div class="jumbotron"> |
||||
<h1>Welcome!</h1> |
||||
|
||||
<p class="lead">Cras justo odio, dapibus ac facilisis in, egestas eget quam. Fusce dapibus, tellus ac cursus |
||||
commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p> |
||||
<a class="btn btn-large btn-success" href="http://www.yiiframework.com">Get started with Yii</a> |
||||
</div> |
||||
|
||||
<hr> |
||||
|
||||
<!-- Example row of columns --> |
||||
<div class="row-fluid"> |
||||
<div class="span4"> |
||||
<h2>Heading</h2> |
||||
|
||||
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris |
||||
condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. |
||||
Donec sed odio dui. </p> |
||||
|
||||
<p><a class="btn" href="#">View details »</a></p> |
||||
</div> |
||||
<div class="span4"> |
||||
<h2>Heading</h2> |
||||
|
||||
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris |
||||
condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. |
||||
Donec sed odio dui. </p> |
||||
|
||||
<p><a class="btn" href="#">View details »</a></p> |
||||
</div> |
||||
<div class="span4"> |
||||
<h2>Heading</h2> |
||||
|
||||
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta |
||||
felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum |
||||
massa.</p> |
||||
|
||||
<p><a class="btn" href="#">View details »</a></p> |
||||
</div> |
||||
</div> |
||||
|
@ -0,0 +1,24 @@
|
||||
<?php |
||||
use yii\helpers\Html; |
||||
use yii\widgets\ActiveForm; |
||||
|
||||
/** |
||||
* @var yii\base\View $this |
||||
* @var yii\widgets\ActiveForm $form |
||||
* @var app\models\LoginForm $model |
||||
*/ |
||||
$this->title = 'Login'; |
||||
$this->params['breadcrumbs'][] = $this->title; |
||||
?> |
||||
<h1><?php echo Html::encode($this->title); ?></h1>
|
||||
|
||||
<p>Please fill out the following fields to login:</p> |
||||
|
||||
<?php $form = ActiveForm::begin(array('options' => array('class' => 'form-horizontal'))); ?> |
||||
<?php echo $form->field($model, 'username')->textInput(); ?> |
||||
<?php echo $form->field($model, 'password')->passwordInput(); ?> |
||||
<?php echo $form->field($model, 'rememberMe')->checkbox(); ?> |
||||
<div class="form-actions"> |
||||
<?php echo Html::submitButton('Login', null, null, array('class' => 'btn btn-primary')); ?> |
||||
</div> |
||||
<?php ActiveForm::end(); ?> |
@ -0,0 +1,78 @@
|
||||
body { |
||||
padding-top: 20px; |
||||
padding-bottom: 60px; |
||||
} |
||||
|
||||
/* Custom container */ |
||||
.container { |
||||
margin: 0 auto; |
||||
max-width: 1000px; |
||||
} |
||||
|
||||
.container > hr { |
||||
margin: 60px 0; |
||||
} |
||||
|
||||
/* Main marketing message and sign up button */ |
||||
.jumbotron { |
||||
margin: 80px 0; |
||||
text-align: center; |
||||
} |
||||
|
||||
.jumbotron h1 { |
||||
font-size: 100px; |
||||
line-height: 1; |
||||
} |
||||
|
||||
.jumbotron .lead { |
||||
font-size: 24px; |
||||
line-height: 1.25; |
||||
} |
||||
|
||||
.jumbotron .btn { |
||||
font-size: 21px; |
||||
padding: 14px 24px; |
||||
} |
||||
|
||||
/* Supporting marketing content */ |
||||
.marketing { |
||||
margin: 60px 0; |
||||
} |
||||
|
||||
.marketing p + h4 { |
||||
margin-top: 28px; |
||||
} |
||||
|
||||
/* Customize the navbar links to be fill the entire space of the .navbar */ |
||||
.navbar .navbar-inner { |
||||
padding: 0; |
||||
} |
||||
|
||||
.navbar .nav { |
||||
margin: 0; |
||||
display: table; |
||||
width: 100%; |
||||
} |
||||
|
||||
.navbar .nav li { |
||||
display: table-cell; |
||||
width: 1%; |
||||
float: none; |
||||
} |
||||
|
||||
.navbar .nav li a { |
||||
font-weight: bold; |
||||
text-align: center; |
||||
border-left: 1px solid rgba(255, 255, 255, .75); |
||||
border-right: 1px solid rgba(0, 0, 0, .1); |
||||
} |
||||
|
||||
.navbar .nav li:first-child a { |
||||
border-left: 0; |
||||
border-radius: 3px 0 0 3px; |
||||
} |
||||
|
||||
.navbar .nav li:last-child a { |
||||
border-right: 0; |
||||
border-radius: 0 3px 3px 0; |
||||
} |
@ -0,0 +1,20 @@
|
||||
@echo off |
||||
|
||||
rem ------------------------------------------------------------- |
||||
rem Yii command line bootstrap script for Windows. |
||||
rem |
||||
rem @author Qiang Xue <qiang.xue@gmail.com> |
||||
rem @link http://www.yiiframework.com/ |
||||
rem @copyright Copyright © 2012 Yii Software LLC |
||||
rem @license http://www.yiiframework.com/license/ |
||||
rem ------------------------------------------------------------- |
||||
|
||||
@setlocal |
||||
|
||||
set YII_PATH=%~dp0 |
||||
|
||||
if "%PHP_COMMAND%" == "" set PHP_COMMAND=php.exe |
||||
|
||||
"%PHP_COMMAND%" "%YII_PATH%yii" %* |
||||
|
||||
@endlocal |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue