From 1feb434a9ab5c8d46cf7489c42fbceb2d9e9a249 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Tue, 13 May 2014 18:25:19 +0200 Subject: [PATCH] Added demo: default --- demos/default/assets/.gitignore | 2 + demos/default/css/bg.gif | Bin 0 -> 243 bytes demos/default/css/form.css | 164 ++++++++++++ demos/default/css/ie.css | 36 +++ demos/default/css/main.css | 229 +++++++++++++++++ demos/default/css/print.css | 29 +++ demos/default/css/screen.css | 238 ++++++++++++++++++ demos/default/images/.gitkeep | 0 demos/default/index-test.php | 15 ++ demos/default/index.php | 13 + demos/default/protected/.htaccess | 1 + .../default/protected/commands/shell/.gitkeep | 0 .../protected/components/Controller.php | 23 ++ .../protected/components/UserIdentity.php | 33 +++ demos/default/protected/config/console.php | 37 +++ demos/default/protected/config/main.php | 90 +++++++ demos/default/protected/config/test.php | 17 ++ .../protected/controllers/SiteController.php | 109 ++++++++ demos/default/protected/data/schema.mysql.sql | 28 +++ .../default/protected/data/schema.sqlite.sql | 28 +++ demos/default/protected/data/testdrive.db | Bin 0 -> 3072 bytes demos/default/protected/extensions/.gitkeep | 0 demos/default/protected/messages/.gitkeep | 0 demos/default/protected/migrations/.gitkeep | 0 .../default/protected/models/ContactForm.php | 42 ++++ demos/default/protected/models/LoginForm.php | 77 ++++++ demos/default/protected/runtime/.gitignore | 2 + demos/default/protected/tests/WebTestCase.php | 25 ++ demos/default/protected/tests/bootstrap.php | 10 + .../default/protected/tests/fixtures/.gitkeep | 0 .../protected/tests/functional/SiteTest.php | 47 ++++ demos/default/protected/tests/phpunit.xml | 13 + .../default/protected/tests/report/.gitignore | 2 + demos/default/protected/tests/unit/.gitkeep | 0 demos/default/protected/vendor/.gitkeep | 0 .../protected/views/layouts/column1.php | 6 + .../protected/views/layouts/column2.php | 22 ++ .../default/protected/views/layouts/main.php | 59 +++++ .../default/protected/views/site/contact.php | 85 +++++++ demos/default/protected/views/site/error.php | 15 ++ demos/default/protected/views/site/index.php | 20 ++ demos/default/protected/views/site/login.php | 53 ++++ .../protected/views/site/pages/about.php | 12 + demos/default/protected/yiic | 4 + demos/default/protected/yiic.bat | 16 ++ demos/default/protected/yiic.php | 7 + demos/default/themes/classic/views/.htaccess | 1 + .../themes/classic/views/layouts/.gitkeep | 0 .../themes/classic/views/site/.gitkeep | 0 .../themes/classic/views/system/.gitkeep | 0 50 files changed, 1610 insertions(+) create mode 100644 demos/default/assets/.gitignore create mode 100644 demos/default/css/bg.gif create mode 100644 demos/default/css/form.css create mode 100644 demos/default/css/ie.css create mode 100644 demos/default/css/main.css create mode 100644 demos/default/css/print.css create mode 100644 demos/default/css/screen.css create mode 100644 demos/default/images/.gitkeep create mode 100644 demos/default/index-test.php create mode 100644 demos/default/index.php create mode 100644 demos/default/protected/.htaccess create mode 100644 demos/default/protected/commands/shell/.gitkeep create mode 100644 demos/default/protected/components/Controller.php create mode 100644 demos/default/protected/components/UserIdentity.php create mode 100644 demos/default/protected/config/console.php create mode 100644 demos/default/protected/config/main.php create mode 100644 demos/default/protected/config/test.php create mode 100644 demos/default/protected/controllers/SiteController.php create mode 100644 demos/default/protected/data/schema.mysql.sql create mode 100644 demos/default/protected/data/schema.sqlite.sql create mode 100644 demos/default/protected/data/testdrive.db create mode 100644 demos/default/protected/extensions/.gitkeep create mode 100644 demos/default/protected/messages/.gitkeep create mode 100644 demos/default/protected/migrations/.gitkeep create mode 100644 demos/default/protected/models/ContactForm.php create mode 100644 demos/default/protected/models/LoginForm.php create mode 100644 demos/default/protected/runtime/.gitignore create mode 100644 demos/default/protected/tests/WebTestCase.php create mode 100644 demos/default/protected/tests/bootstrap.php create mode 100644 demos/default/protected/tests/fixtures/.gitkeep create mode 100644 demos/default/protected/tests/functional/SiteTest.php create mode 100644 demos/default/protected/tests/phpunit.xml create mode 100644 demos/default/protected/tests/report/.gitignore create mode 100644 demos/default/protected/tests/unit/.gitkeep create mode 100644 demos/default/protected/vendor/.gitkeep create mode 100644 demos/default/protected/views/layouts/column1.php create mode 100644 demos/default/protected/views/layouts/column2.php create mode 100644 demos/default/protected/views/layouts/main.php create mode 100644 demos/default/protected/views/site/contact.php create mode 100644 demos/default/protected/views/site/error.php create mode 100644 demos/default/protected/views/site/index.php create mode 100644 demos/default/protected/views/site/login.php create mode 100644 demos/default/protected/views/site/pages/about.php create mode 100644 demos/default/protected/yiic create mode 100644 demos/default/protected/yiic.bat create mode 100644 demos/default/protected/yiic.php create mode 100644 demos/default/themes/classic/views/.htaccess create mode 100644 demos/default/themes/classic/views/layouts/.gitkeep create mode 100644 demos/default/themes/classic/views/site/.gitkeep create mode 100644 demos/default/themes/classic/views/system/.gitkeep diff --git a/demos/default/assets/.gitignore b/demos/default/assets/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/demos/default/assets/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/demos/default/css/bg.gif b/demos/default/css/bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..428398973e1a8a6a1129d9332da6714e59bedba4 GIT binary patch literal 243 zcmZ?wbhEHbWMeR5IKlt||Ns9Fn|mU0@#)m1XEK+c^_h9pch)ig*~bFs91EU%JYxQd z=mjU^7M;pmaW-ewx%@Tfi`HEz-EgsD1pFZrjzSo!1+8Tx;5Kt##K8 zpn+h6L4@K@7DfgJ83r8?2V^G$YrzAxzKG1Mj9F{fJlz+r6JFwb_s5d=LGRrUD5QAQ zNc8tDnRFnBZ{CHrl2a?9#BZ!gI2~HCzjK3xqn`Y^jOMDdVT&(5-4yZXZ_&=1Ypz<& pbz11_%i7%H?(X8^=xAqWZEay;YHDPpudkz{si~%>tgOgj4FL3OZcYFI literal 0 HcmV?d00001 diff --git a/demos/default/css/form.css b/demos/default/css/form.css new file mode 100644 index 0000000..7c4d096 --- /dev/null +++ b/demos/default/css/form.css @@ -0,0 +1,164 @@ +/** + * CSS styles for forms generated by yiic. + * + * The styles can be applied to the following form structure: + * + *
+ *
+ * + * + *

hint text

+ *
+ *
+ * + * + *

hint text

+ *
+ *
+ * + * + *

hint text

+ *
+ *
+ * + * The above code will render the labels and input fields in separate lines. + * In order to render them in the same line, please use the "wide" form as follows, + * + *
+ * ...... + *
+ * + * @author Qiang Xue + * @link http://www.yiiframework.com/ + * @copyright 2008-2010 Yii Software LLC + * @license http://www.yiiframework.com/license/ + */ + +div.form +{ +} + +div.form input, +div.form textarea, +div.form select +{ + margin: 0.2em 0 0.5em 0; +} + +div.form fieldset +{ + border: 1px solid #DDD; + padding: 10px; + margin: 0 0 10px 0; + -moz-border-radius:7px; +} + +div.form label +{ + font-weight: bold; + font-size: 0.9em; + display: block; +} + +div.form .row +{ + margin: 5px 0; +} + +div.form .hint +{ + margin: 0; + padding: 0; + color: #999; +} + +div.form .note +{ + font-style: italic; +} + +div.form span.required +{ + color: red; +} + +div.form div.error label:first-child, +div.form label.error, +div.form span.error +{ + color: #C00; +} + +div.form div.error input, +div.form div.error textarea, +div.form div.error select, +div.form input.error, +div.form textarea.error, +div.form select.error +{ + background: #FEE; + border-color: #C00; +} + +div.form div.success input, +div.form div.success textarea, +div.form div.success select, +div.form input.success, +div.form textarea.success, +div.form select.success +{ + background: #E6EFC2; + border-color: #C6D880; +} + +div.form div.success label +{ + color: inherit; +} + +div.form .errorSummary +{ + border: 2px solid #C00; + padding: 7px 7px 12px 7px; + margin: 0 0 20px 0; + background: #FEE; + font-size: 0.9em; +} + +div.form .errorMessage +{ + color: red; + font-size: 0.9em; +} + +div.form .errorSummary p +{ + margin: 0; + padding: 5px; +} + +div.form .errorSummary ul +{ + margin: 0; + padding: 0 0 0 20px; +} + +div.wide.form label +{ + float: left; + margin-right: 10px; + position: relative; + text-align: right; + width: 100px; +} + +div.wide.form .row +{ + clear: left; +} + +div.wide.form .buttons, div.wide.form .hint, div.wide.form .errorMessage +{ + clear: left; + padding-left: 110px; +} diff --git a/demos/default/css/ie.css b/demos/default/css/ie.css new file mode 100644 index 0000000..f015399 --- /dev/null +++ b/demos/default/css/ie.css @@ -0,0 +1,36 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 1.0.1 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* ie.css */ +body {text-align:center;} +.container {text-align:left;} +* html .column, * html .span-1, * html .span-2, * html .span-3, * html .span-4, * html .span-5, * html .span-6, * html .span-7, * html .span-8, * html .span-9, * html .span-10, * html .span-11, * html .span-12, * html .span-13, * html .span-14, * html .span-15, * html .span-16, * html .span-17, * html .span-18, * html .span-19, * html .span-20, * html .span-21, * html .span-22, * html .span-23, * html .span-24 {display:inline;overflow-x:hidden;} +* html legend {margin:0px -8px 16px 0;padding:0;} +sup {vertical-align:text-top;} +sub {vertical-align:text-bottom;} +html>body p code {*white-space:normal;} +hr {margin:-8px auto 11px;} +img {-ms-interpolation-mode:bicubic;} +.clearfix, .container {display:inline-block;} +* html .clearfix, * html .container {height:1%;} +fieldset {padding-top:0;} +legend {margin-top:-0.2em;margin-bottom:1em;margin-left:-0.5em;} +textarea {overflow:auto;} +label {vertical-align:middle;position:relative;top:-0.25em;} +input.text, input.title, textarea {background-color:#fff;border:1px solid #bbb;} +input.text:focus, input.title:focus {border-color:#666;} +input.text, input.title, textarea, select {margin:0.5em 0;} +input.checkbox, input.radio {position:relative;top:.25em;} +form.inline div, form.inline p {vertical-align:middle;} +form.inline input.checkbox, form.inline input.radio, form.inline input.button, form.inline button {margin:0.5em 0;} +button, input.button {position:relative;top:0.25em;} \ No newline at end of file diff --git a/demos/default/css/main.css b/demos/default/css/main.css new file mode 100644 index 0000000..13327b8 --- /dev/null +++ b/demos/default/css/main.css @@ -0,0 +1,229 @@ +body +{ + margin: 0; + padding: 0; + color: #555; + font: normal 10pt Arial,Helvetica,sans-serif; + background: #EFEFEF; +} + +#page +{ + margin-top: 5px; + margin-bottom: 5px; + background: white; + border: 1px solid #C9E0ED; +} + +#header +{ + margin: 0; + padding: 0; + border-top: 3px solid #C9E0ED; +} + +#content +{ + padding: 20px; +} + +#sidebar +{ + padding: 20px 20px 20px 0; +} + +#footer +{ + padding: 10px; + margin: 10px 20px; + font-size: 0.8em; + text-align: center; + border-top: 1px solid #C9E0ED; +} + +#logo +{ + padding: 10px 20px; + font-size: 200%; +} + +#mainmenu +{ + background:white url(bg.gif) repeat-x left top; +} + +#mainmenu ul +{ + padding:6px 20px 5px 20px; + margin:0px; +} + +#mainmenu ul li +{ + display: inline; +} + +#mainmenu ul li a +{ + color:#ffffff; + background-color:transparent; + font-size:12px; + font-weight:bold; + text-decoration:none; + padding:5px 8px; +} + +#mainmenu ul li a:hover, #mainmenu ul li.active a +{ + color: #6399cd; + background-color:#EFF4FA; + text-decoration:none; +} + +div.flash-error, div.flash-notice, div.flash-success +{ + padding:.8em; + margin-bottom:1em; + border:2px solid #ddd; +} + +div.flash-error +{ + background:#FBE3E4; + color:#8a1f11; + border-color:#FBC2C4; +} + +div.flash-notice +{ + background:#FFF6BF; + color:#514721; + border-color:#FFD324; +} + +div.flash-success +{ + background:#E6EFC2; + color:#264409; + border-color:#C6D880; +} + +div.flash-error a +{ + color:#8a1f11; +} + +div.flash-notice a +{ + color:#514721; +} + +div.flash-success a +{ + color:#264409; +} + +div.form .rememberMe label +{ + display: inline; +} + +div.view +{ + padding: 10px; + margin: 10px 0; + border: 1px solid #C9E0ED; +} + +div.breadcrumbs +{ + font-size: 0.9em; + padding: 5px 20px; +} + +div.breadcrumbs span +{ + font-weight: bold; +} + +div.search-form +{ + padding: 10px; + margin: 10px 0; + background: #eee; +} + +.portlet +{ + +} + +.portlet-decoration +{ + padding: 3px 8px; + background: #B7D6E7; + border-left: 5px solid #6FACCF; +} + +.portlet-title +{ + font-size: 12px; + font-weight: bold; + padding: 0; + margin: 0; + color: #298dcd; +} + +.portlet-content +{ + font-size:0.9em; + margin: 0 0 15px 0; + padding: 5px 8px; + background:#EFFDFF; +} + +.portlet-content ul +{ + list-style-image:none; + list-style-position:outside; + list-style-type:none; + margin: 0; + padding: 0; +} + +.portlet-content li +{ + padding: 2px 0 4px 0px; +} + +.operations +{ + list-style-type: none; + margin: 0; + padding: 0; +} + +.operations li +{ + padding-bottom: 2px; +} + +.operations li a +{ + font: bold 12px Arial; + color: #0066A4; + display: block; + padding: 2px 0 2px 8px; + line-height: 15px; + text-decoration: none; +} + +.operations li a:visited +{ + color: #0066A4; +} + +.operations li a:hover +{ + background: #80CFFF; +} \ No newline at end of file diff --git a/demos/default/css/print.css b/demos/default/css/print.css new file mode 100644 index 0000000..bd79afd --- /dev/null +++ b/demos/default/css/print.css @@ -0,0 +1,29 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 1.0.1 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* print.css */ +body {line-height:1.5;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;color:#000;background:none;font-size:10pt;} +.container {background:none;} +hr {background:#ccc;color:#ccc;width:100%;height:2px;margin:2em 0;padding:0;border:none;} +hr.space {background:#fff;color:#fff;visibility:hidden;} +h1, h2, h3, h4, h5, h6 {font-family:"Helvetica Neue", Arial, "Lucida Grande", sans-serif;} +code {font:.9em "Courier New", Monaco, Courier, monospace;} +a img {border:none;} +p img.top {margin-top:0;} +blockquote {margin:1.5em;padding:1em;font-style:italic;font-size:.9em;} +.small {font-size:.9em;} +.large {font-size:1.1em;} +.quiet {color:#999;} +.hide {display:none;} +a:link, a:visited {background:transparent;font-weight:700;text-decoration:underline;} +a:link:after, a:visited:after {content:" (" attr(href) ")";font-size:90%;} \ No newline at end of file diff --git a/demos/default/css/screen.css b/demos/default/css/screen.css new file mode 100644 index 0000000..7824d07 --- /dev/null +++ b/demos/default/css/screen.css @@ -0,0 +1,238 @@ +/* ----------------------------------------------------------------------- + + + Blueprint CSS Framework 1.0.1 + http://blueprintcss.org + + * Copyright (c) 2007-Present. See LICENSE for more info. + * See README for instructions on how to use Blueprint. + * For credits and origins, see AUTHORS. + * This is a compressed file. See the sources in the 'src' directory. + +----------------------------------------------------------------------- */ + +/* reset.css */ +html {margin:0;padding:0;border:0;} +body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section {margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;} +article, aside, details, figcaption, figure, dialog, footer, header, hgroup, menu, nav, section {display:block;} +body {line-height:1.5;background:white;} +table {border-collapse:separate;border-spacing:0;} +caption, th, td {text-align:left;font-weight:normal;float:none !important;} +table, th, td {vertical-align:middle;} +blockquote:before, blockquote:after, q:before, q:after {content:'';} +blockquote, q {quotes:"" "";} +a img {border:none;} +:focus {outline:0;} + +/* typography.css */ +html {font-size:100.01%;} +body {font-size:75%;color:#222;background:#fff;font-family:"Helvetica Neue", Arial, Helvetica, sans-serif;} +h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;} +h1 {font-size:2em;line-height:1;margin-bottom:0.5em;} +h2 {font-size:1.6em;margin-bottom:0.75em;} +h3 {font-size:1.4em;line-height:1;margin-bottom:1em;} +h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;} +h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;} +h6 {font-size:1em;font-weight:bold;} +h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;} +p {margin:0 0 1.5em;} +.left {float:left !important;} +p .left {margin:1.5em 1.5em 1.5em 0;padding:0;} +.right {float:right !important;} +p .right {margin:1.5em 0 1.5em 1.5em;padding:0;} +a:focus, a:hover {color:#09f;} +a {color:#06c;text-decoration:underline;} +blockquote {margin:1.5em;color:#666;font-style:italic;} +strong, dfn {font-weight:bold;} +em, dfn {font-style:italic;} +sup, sub {line-height:0;} +abbr, acronym {border-bottom:1px dotted #666;} +address {margin:0 0 1.5em;font-style:italic;} +del {color:#666;} +pre {margin:1.5em 0;white-space:pre;} +pre, code, tt {font:1em 'andale mono', 'lucida console', monospace;line-height:1.5;} +li ul, li ol {margin:0;} +ul, ol {margin:0 1.5em 1.5em 0;padding-left:1.5em;} +ul {list-style-type:disc;} +ol {list-style-type:decimal;} +dl {margin:0 0 1.5em 0;} +dl dt {font-weight:bold;} +dd {margin-left:1.5em;} +table {margin-bottom:1.4em;width:100%;} +th {font-weight:bold;} +thead th {background:#c3d9ff;} +th, td, caption {padding:4px 10px 4px 5px;} +tfoot {font-style:italic;} +caption {background:#eee;} +.small {font-size:.8em;margin-bottom:1.875em;line-height:1.875em;} +.large {font-size:1.2em;line-height:2.5em;margin-bottom:1.25em;} +.hide {display:none;} +.quiet {color:#666;} +.loud {color:#000;} +.highlight {background:#ff0;} +.added {background:#060;color:#fff;} +.removed {background:#900;color:#fff;} +.first {margin-left:0;padding-left:0;} +.last {margin-right:0;padding-right:0;} +.top {margin-top:0;padding-top:0;} +.bottom {margin-bottom:0;padding-bottom:0;} + +/* grid.css */ +.container {width:950px;margin:0 auto;} +.column, .span-1, .span-2, .span-3, .span-4, .span-5, .span-6, .span-7, .span-8, .span-9, .span-10, .span-11, .span-12, .span-13, .span-14, .span-15, .span-16, .span-17, .span-18, .span-19, .span-20, .span-21, .span-22, .span-23, .span-24 {float:left;margin-right:10px;} +.last {margin-right:0;} +.span-1 {width:30px;} +.span-2 {width:70px;} +.span-3 {width:110px;} +.span-4 {width:150px;} +.span-5 {width:190px;} +.span-6 {width:230px;} +.span-7 {width:270px;} +.span-8 {width:310px;} +.span-9 {width:350px;} +.span-10 {width:390px;} +.span-11 {width:430px;} +.span-12 {width:470px;} +.span-13 {width:510px;} +.span-14 {width:550px;} +.span-15 {width:590px;} +.span-16 {width:630px;} +.span-17 {width:670px;} +.span-18 {width:710px;} +.span-19 {width:750px;} +.span-20 {width:790px;} +.span-21 {width:830px;} +.span-22 {width:870px;} +.span-23 {width:910px;} +.span-24 {width:950px;margin-right:0;} +input.span-1, textarea.span-1, input.span-2, textarea.span-2, input.span-3, textarea.span-3, input.span-4, textarea.span-4, input.span-5, textarea.span-5, input.span-6, textarea.span-6, input.span-7, textarea.span-7, input.span-8, textarea.span-8, input.span-9, textarea.span-9, input.span-10, textarea.span-10, input.span-11, textarea.span-11, input.span-12, textarea.span-12, input.span-13, textarea.span-13, input.span-14, textarea.span-14, input.span-15, textarea.span-15, input.span-16, textarea.span-16, input.span-17, textarea.span-17, input.span-18, textarea.span-18, input.span-19, textarea.span-19, input.span-20, textarea.span-20, input.span-21, textarea.span-21, input.span-22, textarea.span-22, input.span-23, textarea.span-23, input.span-24, textarea.span-24 {border-left-width:1px;border-right-width:1px;padding-left:5px;padding-right:5px;} +input.span-1, textarea.span-1 {width:18px;} +input.span-2, textarea.span-2 {width:58px;} +input.span-3, textarea.span-3 {width:98px;} +input.span-4, textarea.span-4 {width:138px;} +input.span-5, textarea.span-5 {width:178px;} +input.span-6, textarea.span-6 {width:218px;} +input.span-7, textarea.span-7 {width:258px;} +input.span-8, textarea.span-8 {width:298px;} +input.span-9, textarea.span-9 {width:338px;} +input.span-10, textarea.span-10 {width:378px;} +input.span-11, textarea.span-11 {width:418px;} +input.span-12, textarea.span-12 {width:458px;} +input.span-13, textarea.span-13 {width:498px;} +input.span-14, textarea.span-14 {width:538px;} +input.span-15, textarea.span-15 {width:578px;} +input.span-16, textarea.span-16 {width:618px;} +input.span-17, textarea.span-17 {width:658px;} +input.span-18, textarea.span-18 {width:698px;} +input.span-19, textarea.span-19 {width:738px;} +input.span-20, textarea.span-20 {width:778px;} +input.span-21, textarea.span-21 {width:818px;} +input.span-22, textarea.span-22 {width:858px;} +input.span-23, textarea.span-23 {width:898px;} +input.span-24, textarea.span-24 {width:938px;} +.append-1 {padding-right:40px;} +.append-2 {padding-right:80px;} +.append-3 {padding-right:120px;} +.append-4 {padding-right:160px;} +.append-5 {padding-right:200px;} +.append-6 {padding-right:240px;} +.append-7 {padding-right:280px;} +.append-8 {padding-right:320px;} +.append-9 {padding-right:360px;} +.append-10 {padding-right:400px;} +.append-11 {padding-right:440px;} +.append-12 {padding-right:480px;} +.append-13 {padding-right:520px;} +.append-14 {padding-right:560px;} +.append-15 {padding-right:600px;} +.append-16 {padding-right:640px;} +.append-17 {padding-right:680px;} +.append-18 {padding-right:720px;} +.append-19 {padding-right:760px;} +.append-20 {padding-right:800px;} +.append-21 {padding-right:840px;} +.append-22 {padding-right:880px;} +.append-23 {padding-right:920px;} +.prepend-1 {padding-left:40px;} +.prepend-2 {padding-left:80px;} +.prepend-3 {padding-left:120px;} +.prepend-4 {padding-left:160px;} +.prepend-5 {padding-left:200px;} +.prepend-6 {padding-left:240px;} +.prepend-7 {padding-left:280px;} +.prepend-8 {padding-left:320px;} +.prepend-9 {padding-left:360px;} +.prepend-10 {padding-left:400px;} +.prepend-11 {padding-left:440px;} +.prepend-12 {padding-left:480px;} +.prepend-13 {padding-left:520px;} +.prepend-14 {padding-left:560px;} +.prepend-15 {padding-left:600px;} +.prepend-16 {padding-left:640px;} +.prepend-17 {padding-left:680px;} +.prepend-18 {padding-left:720px;} +.prepend-19 {padding-left:760px;} +.prepend-20 {padding-left:800px;} +.prepend-21 {padding-left:840px;} +.prepend-22 {padding-left:880px;} +.prepend-23 {padding-left:920px;} +.border {padding-right:4px;margin-right:5px;border-right:1px solid #ddd;} +.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #ddd;} +.pull-1 {margin-left:-40px;} +.pull-2 {margin-left:-80px;} +.pull-3 {margin-left:-120px;} +.pull-4 {margin-left:-160px;} +.pull-5 {margin-left:-200px;} +.pull-6 {margin-left:-240px;} +.pull-7 {margin-left:-280px;} +.pull-8 {margin-left:-320px;} +.pull-9 {margin-left:-360px;} +.pull-10 {margin-left:-400px;} +.pull-11 {margin-left:-440px;} +.pull-12 {margin-left:-480px;} +.pull-13 {margin-left:-520px;} +.pull-14 {margin-left:-560px;} +.pull-15 {margin-left:-600px;} +.pull-16 {margin-left:-640px;} +.pull-17 {margin-left:-680px;} +.pull-18 {margin-left:-720px;} +.pull-19 {margin-left:-760px;} +.pull-20 {margin-left:-800px;} +.pull-21 {margin-left:-840px;} +.pull-22 {margin-left:-880px;} +.pull-23 {margin-left:-920px;} +.pull-24 {margin-left:-960px;} +.pull-1, .pull-2, .pull-3, .pull-4, .pull-5, .pull-6, .pull-7, .pull-8, .pull-9, .pull-10, .pull-11, .pull-12, .pull-13, .pull-14, .pull-15, .pull-16, .pull-17, .pull-18, .pull-19, .pull-20, .pull-21, .pull-22, .pull-23, .pull-24 {float:left;position:relative;} +.push-1 {margin:0 -40px 1.5em 40px;} +.push-2 {margin:0 -80px 1.5em 80px;} +.push-3 {margin:0 -120px 1.5em 120px;} +.push-4 {margin:0 -160px 1.5em 160px;} +.push-5 {margin:0 -200px 1.5em 200px;} +.push-6 {margin:0 -240px 1.5em 240px;} +.push-7 {margin:0 -280px 1.5em 280px;} +.push-8 {margin:0 -320px 1.5em 320px;} +.push-9 {margin:0 -360px 1.5em 360px;} +.push-10 {margin:0 -400px 1.5em 400px;} +.push-11 {margin:0 -440px 1.5em 440px;} +.push-12 {margin:0 -480px 1.5em 480px;} +.push-13 {margin:0 -520px 1.5em 520px;} +.push-14 {margin:0 -560px 1.5em 560px;} +.push-15 {margin:0 -600px 1.5em 600px;} +.push-16 {margin:0 -640px 1.5em 640px;} +.push-17 {margin:0 -680px 1.5em 680px;} +.push-18 {margin:0 -720px 1.5em 720px;} +.push-19 {margin:0 -760px 1.5em 760px;} +.push-20 {margin:0 -800px 1.5em 800px;} +.push-21 {margin:0 -840px 1.5em 840px;} +.push-22 {margin:0 -880px 1.5em 880px;} +.push-23 {margin:0 -920px 1.5em 920px;} +.push-24 {margin:0 -960px 1.5em 960px;} +.push-1, .push-2, .push-3, .push-4, .push-5, .push-6, .push-7, .push-8, .push-9, .push-10, .push-11, .push-12, .push-13, .push-14, .push-15, .push-16, .push-17, .push-18, .push-19, .push-20, .push-21, .push-22, .push-23, .push-24 {float:left;position:relative;} +div.prepend-top, .prepend-top {margin-top:1.5em;} +div.append-bottom, .append-bottom {margin-bottom:1.5em;} +.box {padding:1.5em;margin-bottom:1.5em;background:#e5eCf9;} +hr {background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:1px;margin:0 0 17px;border:none;} +hr.space {background:#fff;color:#fff;visibility:hidden;} +.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;} +.clearfix, .container {display:block;} +.clear {clear:both;} diff --git a/demos/default/images/.gitkeep b/demos/default/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/demos/default/index-test.php b/demos/default/index-test.php new file mode 100644 index 0000000..87dfbe3 --- /dev/null +++ b/demos/default/index-test.php @@ -0,0 +1,15 @@ +run(); diff --git a/demos/default/index.php b/demos/default/index.php new file mode 100644 index 0000000..84a48bf --- /dev/null +++ b/demos/default/index.php @@ -0,0 +1,13 @@ +run(); diff --git a/demos/default/protected/.htaccess b/demos/default/protected/.htaccess new file mode 100644 index 0000000..8d2f256 --- /dev/null +++ b/demos/default/protected/.htaccess @@ -0,0 +1 @@ +deny from all diff --git a/demos/default/protected/commands/shell/.gitkeep b/demos/default/protected/commands/shell/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/demos/default/protected/components/Controller.php b/demos/default/protected/components/Controller.php new file mode 100644 index 0000000..083187e --- /dev/null +++ b/demos/default/protected/components/Controller.php @@ -0,0 +1,23 @@ + password + 'demo'=>'demo', + 'admin'=>'admin', + ); + if(!isset($users[$this->username])) + $this->errorCode=self::ERROR_USERNAME_INVALID; + elseif($users[$this->username]!==$this->password) + $this->errorCode=self::ERROR_PASSWORD_INVALID; + else + $this->errorCode=self::ERROR_NONE; + return !$this->errorCode; + } +} \ No newline at end of file diff --git a/demos/default/protected/config/console.php b/demos/default/protected/config/console.php new file mode 100644 index 0000000..346a976 --- /dev/null +++ b/demos/default/protected/config/console.php @@ -0,0 +1,37 @@ +dirname(__FILE__).DIRECTORY_SEPARATOR.'..', + 'name'=>'My Console Application', + + // preloading 'log' component + 'preload'=>array('log'), + + // application components + 'components'=>array( + 'db'=>array( + 'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db', + ), + // uncomment the following to use a MySQL database + /* + 'db'=>array( + 'connectionString' => 'mysql:host=localhost;dbname=testdrive', + 'emulatePrepare' => true, + 'username' => 'root', + 'password' => '', + 'charset' => 'utf8', + ), + */ + 'log'=>array( + 'class'=>'CLogRouter', + 'routes'=>array( + array( + 'class'=>'CFileLogRoute', + 'levels'=>'error, warning', + ), + ), + ), + ), +); \ No newline at end of file diff --git a/demos/default/protected/config/main.php b/demos/default/protected/config/main.php new file mode 100644 index 0000000..6919c74 --- /dev/null +++ b/demos/default/protected/config/main.php @@ -0,0 +1,90 @@ +dirname(__FILE__).DIRECTORY_SEPARATOR.'..', + 'name'=>'My Web Application', + + // preloading 'log' component + 'preload'=>array('log'), + + // autoloading model and component classes + 'import'=>array( + 'application.models.*', + 'application.components.*', + ), + + 'modules'=>array( + // uncomment the following to enable the Gii tool + /* + 'gii'=>array( + 'class'=>'system.gii.GiiModule', + 'password'=>'Enter Your Password Here', + // If removed, Gii defaults to localhost only. Edit carefully to taste. + 'ipFilters'=>array('127.0.0.1','::1'), + ), + */ + ), + + // application components + 'components'=>array( + 'user'=>array( + // enable cookie-based authentication + 'allowAutoLogin'=>true, + ), + // uncomment the following to enable URLs in path-format + /* + 'urlManager'=>array( + 'urlFormat'=>'path', + 'rules'=>array( + '/'=>'/view', + '//'=>'/', + '/'=>'/', + ), + ), + */ + 'db'=>array( + 'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db', + ), + // uncomment the following to use a MySQL database + /* + 'db'=>array( + 'connectionString' => 'mysql:host=localhost;dbname=testdrive', + 'emulatePrepare' => true, + 'username' => 'root', + 'password' => '', + 'charset' => 'utf8', + ), + */ + 'errorHandler'=>array( + // use 'site/error' action to display errors + 'errorAction'=>'site/error', + ), + 'log'=>array( + 'class'=>'CLogRouter', + 'routes'=>array( + array( + 'class'=>'CFileLogRoute', + 'levels'=>'error, warning', + ), + // uncomment the following to show log messages on web pages + /* + array( + 'class'=>'CWebLogRoute', + ), + */ + ), + ), + ), + + // application-level parameters that can be accessed + // using Yii::app()->params['paramName'] + 'params'=>array( + // this is used in contact page + 'adminEmail'=>'webmaster@example.com', + ), +); \ No newline at end of file diff --git a/demos/default/protected/config/test.php b/demos/default/protected/config/test.php new file mode 100644 index 0000000..fd7085a --- /dev/null +++ b/demos/default/protected/config/test.php @@ -0,0 +1,17 @@ +array( + 'fixture'=>array( + 'class'=>'system.test.CDbFixtureManager', + ), + /* uncomment the following to provide test database connection + 'db'=>array( + 'connectionString'=>'DSN for test database', + ), + */ + ), + ) +); diff --git a/demos/default/protected/controllers/SiteController.php b/demos/default/protected/controllers/SiteController.php new file mode 100644 index 0000000..a6a790e --- /dev/null +++ b/demos/default/protected/controllers/SiteController.php @@ -0,0 +1,109 @@ +array( + 'class'=>'CCaptchaAction', + 'backColor'=>0xFFFFFF, + ), + // page action renders "static" pages stored under 'protected/views/site/pages' + // They can be accessed via: index.php?r=site/page&view=FileName + 'page'=>array( + 'class'=>'CViewAction', + ), + ); + } + + /** + * This is the default 'index' action that is invoked + * when an action is not explicitly requested by users. + */ + public function actionIndex() + { + // renders the view file 'protected/views/site/index.php' + // using the default layout 'protected/views/layouts/main.php' + $this->render('index'); + } + + /** + * This is the action to handle external exceptions. + */ + public function actionError() + { + if($error=Yii::app()->errorHandler->error) + { + if(Yii::app()->request->isAjaxRequest) + echo $error['message']; + else + $this->render('error', $error); + } + } + + /** + * Displays the contact page + */ + public function actionContact() + { + $model=new ContactForm; + if(isset($_POST['ContactForm'])) + { + $model->attributes=$_POST['ContactForm']; + if($model->validate()) + { + $name='=?UTF-8?B?'.base64_encode($model->name).'?='; + $subject='=?UTF-8?B?'.base64_encode($model->subject).'?='; + $headers="From: $name <{$model->email}>\r\n". + "Reply-To: {$model->email}\r\n". + "MIME-Version: 1.0\r\n". + "Content-Type: text/plain; charset=UTF-8"; + + mail(Yii::app()->params['adminEmail'],$subject,$model->body,$headers); + Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.'); + $this->refresh(); + } + } + $this->render('contact',array('model'=>$model)); + } + + /** + * Displays the login page + */ + public function actionLogin() + { + $model=new LoginForm; + + // if it is ajax validation request + if(isset($_POST['ajax']) && $_POST['ajax']==='login-form') + { + echo CActiveForm::validate($model); + Yii::app()->end(); + } + + // collect user input data + if(isset($_POST['LoginForm'])) + { + $model->attributes=$_POST['LoginForm']; + // validate user input and redirect to the previous page if valid + if($model->validate() && $model->login()) + $this->redirect(Yii::app()->user->returnUrl); + } + // display the login form + $this->render('login',array('model'=>$model)); + } + + /** + * Logs out the current user and redirect to homepage. + */ + public function actionLogout() + { + Yii::app()->user->logout(); + $this->redirect(Yii::app()->homeUrl); + } +} \ No newline at end of file diff --git a/demos/default/protected/data/schema.mysql.sql b/demos/default/protected/data/schema.mysql.sql new file mode 100644 index 0000000..32788bd --- /dev/null +++ b/demos/default/protected/data/schema.mysql.sql @@ -0,0 +1,28 @@ +CREATE TABLE tbl_user ( + id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, + username VARCHAR(128) NOT NULL, + password VARCHAR(128) NOT NULL, + email VARCHAR(128) NOT NULL +); + +INSERT INTO tbl_user (username, password, email) VALUES ('test1', 'pass1', 'test1@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test2', 'pass2', 'test2@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test3', 'pass3', 'test3@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test4', 'pass4', 'test4@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test5', 'pass5', 'test5@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test6', 'pass6', 'test6@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test7', 'pass7', 'test7@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test8', 'pass8', 'test8@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test9', 'pass9', 'test9@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test10', 'pass10', 'test10@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test11', 'pass11', 'test11@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test12', 'pass12', 'test12@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test13', 'pass13', 'test13@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test14', 'pass14', 'test14@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test15', 'pass15', 'test15@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test16', 'pass16', 'test16@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test17', 'pass17', 'test17@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test18', 'pass18', 'test18@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test19', 'pass19', 'test19@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test20', 'pass20', 'test20@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test21', 'pass21', 'test21@example.com'); diff --git a/demos/default/protected/data/schema.sqlite.sql b/demos/default/protected/data/schema.sqlite.sql new file mode 100644 index 0000000..e5e0830 --- /dev/null +++ b/demos/default/protected/data/schema.sqlite.sql @@ -0,0 +1,28 @@ +CREATE TABLE tbl_user ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + username VARCHAR(128) NOT NULL, + password VARCHAR(128) NOT NULL, + email VARCHAR(128) NOT NULL +); + +INSERT INTO tbl_user (username, password, email) VALUES ('test1', 'pass1', 'test1@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test2', 'pass2', 'test2@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test3', 'pass3', 'test3@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test4', 'pass4', 'test4@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test5', 'pass5', 'test5@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test6', 'pass6', 'test6@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test7', 'pass7', 'test7@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test8', 'pass8', 'test8@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test9', 'pass9', 'test9@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test10', 'pass10', 'test10@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test11', 'pass11', 'test11@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test12', 'pass12', 'test12@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test13', 'pass13', 'test13@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test14', 'pass14', 'test14@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test15', 'pass15', 'test15@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test16', 'pass16', 'test16@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test17', 'pass17', 'test17@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test18', 'pass18', 'test18@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test19', 'pass19', 'test19@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test20', 'pass20', 'test20@example.com'); +INSERT INTO tbl_user (username, password, email) VALUES ('test21', 'pass21', 'test21@example.com'); diff --git a/demos/default/protected/data/testdrive.db b/demos/default/protected/data/testdrive.db new file mode 100644 index 0000000000000000000000000000000000000000..0672b2190b7e7af2a7b9e4416f4f01431c500986 GIT binary patch literal 3072 zcmeI!-)hrP9KiAOXWg`JPUmXbMd8PK)3TyH>A%#g#SygFWn0V!y|H9lghH}zO^Um9 z_!K^X;5+yRf)C(@&oF!flV8oBGlrL5j2@ciPe12`ercd@5Bj6Pf%oHyX9v(A3xra# z4L}Ha8gAJ^!;@%>NA@_rcI$p6yvo>5!fWB%e9Q~{mje52vADHG2Z4R;I{t+l{>+EI zb1`+!PHvv^9aGmV9W3o-UxypEa%Ou@Eu2~XctDqmr4qfG;+ny+JDmE?B;GS=mG~-D z@(_;EDfA3Wf2EsX>{(zO_WQ7J_I5RM0B`gGXouEb&j?r8)eWnLQ=+w_d&7}t?!4B_ zicr*QGJ9suZQuVeo}B*6IG#OnZwL8m^lTRBI^n=*&5fxVc9&bCBws-D2&rZf(c|ApSM0K1{&!WvI z5qchdAi5C}-Pv(wq0P0_sAyC)YQ~fwCpQxvG#xaZ?9IxLQq)G&M%0$jYKmHjT8LT_ zdYGanq9&rIgjQ12K-56gkkE396hsOlMM4i!guMm!7D7V#6k%_Hy@k{p?&nCch`lj4 z*6wDPfqRL-*w|W?#8M(KHI|k_!(t+^GiH`5LoN{*85>K9VIdJ%7z0avfhPj6Oe>WInuu9gjGz6s(eqFFZxX)dV_slh;LaCVro2Sse!CCaptcha::checkRequirements()), + ); + } + + /** + * Declares customized attribute labels. + * If not declared here, an attribute would have a label that is + * the same as its name with the first letter in upper case. + */ + public function attributeLabels() + { + return array( + 'verifyCode'=>'Verification Code', + ); + } +} \ No newline at end of file diff --git a/demos/default/protected/models/LoginForm.php b/demos/default/protected/models/LoginForm.php new file mode 100644 index 0000000..eb36e4a --- /dev/null +++ b/demos/default/protected/models/LoginForm.php @@ -0,0 +1,77 @@ +'Remember me next time', + ); + } + + /** + * Authenticates the password. + * This is the 'authenticate' validator as declared in rules(). + */ + public function authenticate($attribute,$params) + { + if(!$this->hasErrors()) + { + $this->_identity=new UserIdentity($this->username,$this->password); + if(!$this->_identity->authenticate()) + $this->addError('password','Incorrect username or password.'); + } + } + + /** + * Logs in the user using the given username and password in the model. + * @return boolean whether login is successful + */ + public function login() + { + if($this->_identity===null) + { + $this->_identity=new UserIdentity($this->username,$this->password); + $this->_identity->authenticate(); + } + if($this->_identity->errorCode===UserIdentity::ERROR_NONE) + { + $duration=$this->rememberMe ? 3600*24*30 : 0; // 30 days + Yii::app()->user->login($this->_identity,$duration); + return true; + } + else + return false; + } +} diff --git a/demos/default/protected/runtime/.gitignore b/demos/default/protected/runtime/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/demos/default/protected/runtime/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/demos/default/protected/tests/WebTestCase.php b/demos/default/protected/tests/WebTestCase.php new file mode 100644 index 0000000..d252bba --- /dev/null +++ b/demos/default/protected/tests/WebTestCase.php @@ -0,0 +1,25 @@ +setBrowserUrl(TEST_BASE_URL); + } +} diff --git a/demos/default/protected/tests/bootstrap.php b/demos/default/protected/tests/bootstrap.php new file mode 100644 index 0000000..6d06a12 --- /dev/null +++ b/demos/default/protected/tests/bootstrap.php @@ -0,0 +1,10 @@ +open(''); + $this->assertTextPresent('Welcome'); + } + + public function testContact() + { + $this->open('?r=site/contact'); + $this->assertTextPresent('Contact Us'); + $this->assertElementPresent('name=ContactForm[name]'); + + $this->type('name=ContactForm[name]','tester'); + $this->type('name=ContactForm[email]','tester@example.com'); + $this->type('name=ContactForm[subject]','test subject'); + $this->click("//input[@value='Submit']"); + $this->waitForTextPresent('Body cannot be blank.'); + } + + public function testLoginLogout() + { + $this->open(''); + // ensure the user is logged out + if($this->isTextPresent('Logout')) + $this->clickAndWait('link=Logout (demo)'); + + // test login process, including validation + $this->clickAndWait('link=Login'); + $this->assertElementPresent('name=LoginForm[username]'); + $this->type('name=LoginForm[username]','demo'); + $this->click("//input[@value='Login']"); + $this->waitForTextPresent('Password cannot be blank.'); + $this->type('name=LoginForm[password]','demo'); + $this->clickAndWait("//input[@value='Login']"); + $this->assertTextNotPresent('Password cannot be blank.'); + $this->assertTextPresent('Logout'); + + // test logout process + $this->assertTextNotPresent('Login'); + $this->clickAndWait('link=Logout (demo)'); + $this->assertTextPresent('Login'); + } +} diff --git a/demos/default/protected/tests/phpunit.xml b/demos/default/protected/tests/phpunit.xml new file mode 100644 index 0000000..22c96ff --- /dev/null +++ b/demos/default/protected/tests/phpunit.xml @@ -0,0 +1,13 @@ + + + + + + + + \ No newline at end of file diff --git a/demos/default/protected/tests/report/.gitignore b/demos/default/protected/tests/report/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/demos/default/protected/tests/report/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/demos/default/protected/tests/unit/.gitkeep b/demos/default/protected/tests/unit/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/demos/default/protected/vendor/.gitkeep b/demos/default/protected/vendor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/demos/default/protected/views/layouts/column1.php b/demos/default/protected/views/layouts/column1.php new file mode 100644 index 0000000..702fd65 --- /dev/null +++ b/demos/default/protected/views/layouts/column1.php @@ -0,0 +1,6 @@ + +beginContent('//layouts/main'); ?> +
+ +
+endContent(); ?> \ No newline at end of file diff --git a/demos/default/protected/views/layouts/column2.php b/demos/default/protected/views/layouts/column2.php new file mode 100644 index 0000000..b588bf6 --- /dev/null +++ b/demos/default/protected/views/layouts/column2.php @@ -0,0 +1,22 @@ + +beginContent('//layouts/main'); ?> +
+
+ +
+
+
+ +
+endContent(); ?> \ No newline at end of file diff --git a/demos/default/protected/views/layouts/main.php b/demos/default/protected/views/layouts/main.php new file mode 100644 index 0000000..daf905e --- /dev/null +++ b/demos/default/protected/views/layouts/main.php @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + <?php echo CHtml::encode($this->pageTitle); ?> + + + + +
+ + + + + breadcrumbs)):?> + widget('zii.widgets.CBreadcrumbs', array( + 'links'=>$this->breadcrumbs, + )); ?> + + + + +
+ + + +
+ + + diff --git a/demos/default/protected/views/site/contact.php b/demos/default/protected/views/site/contact.php new file mode 100644 index 0000000..baad25e --- /dev/null +++ b/demos/default/protected/views/site/contact.php @@ -0,0 +1,85 @@ +pageTitle=Yii::app()->name . ' - Contact Us'; +$this->breadcrumbs=array( + 'Contact', +); +?> + +

Contact Us

+ +user->hasFlash('contact')): ?> + +
+ user->getFlash('contact'); ?> +
+ + + +

+If you have business inquiries or other questions, please fill out the following form to contact us. Thank you. +

+ +
+ +beginWidget('CActiveForm', array( + 'id'=>'contact-form', + 'enableClientValidation'=>true, + 'clientOptions'=>array( + 'validateOnSubmit'=>true, + ), +)); ?> + +

Fields with * are required.

+ + errorSummary($model); ?> + +
+ labelEx($model,'name'); ?> + textField($model,'name'); ?> + error($model,'name'); ?> +
+ +
+ labelEx($model,'email'); ?> + textField($model,'email'); ?> + error($model,'email'); ?> +
+ +
+ labelEx($model,'subject'); ?> + textField($model,'subject',array('size'=>60,'maxlength'=>128)); ?> + error($model,'subject'); ?> +
+ +
+ labelEx($model,'body'); ?> + textArea($model,'body',array('rows'=>6, 'cols'=>50)); ?> + error($model,'body'); ?> +
+ + +
+ labelEx($model,'verifyCode'); ?> +
+ widget('CCaptcha'); ?> + textField($model,'verifyCode'); ?> +
+
Please enter the letters as they are shown in the image above. +
Letters are not case-sensitive.
+ error($model,'verifyCode'); ?> +
+ + +
+ +
+ +endWidget(); ?> + +
+ + \ No newline at end of file diff --git a/demos/default/protected/views/site/error.php b/demos/default/protected/views/site/error.php new file mode 100644 index 0000000..d0dcb80 --- /dev/null +++ b/demos/default/protected/views/site/error.php @@ -0,0 +1,15 @@ +pageTitle=Yii::app()->name . ' - Error'; +$this->breadcrumbs=array( + 'Error', +); +?> + +

Error

+ +
+ +
\ No newline at end of file diff --git a/demos/default/protected/views/site/index.php b/demos/default/protected/views/site/index.php new file mode 100644 index 0000000..d521a85 --- /dev/null +++ b/demos/default/protected/views/site/index.php @@ -0,0 +1,20 @@ +pageTitle=Yii::app()->name; +?> + +

Welcome to name); ?>

+ +

Congratulations! You have successfully created your Yii application.

+ +

You may change the content of this page by modifying the following two files:

+
    +
  • View file:
  • +
  • Layout file: getLayoutFile('main'); ?>
  • +
+ +

For more details on how to further develop this application, please read +the documentation. +Feel free to ask in the forum, +should you have any questions.

diff --git a/demos/default/protected/views/site/login.php b/demos/default/protected/views/site/login.php new file mode 100644 index 0000000..3c16748 --- /dev/null +++ b/demos/default/protected/views/site/login.php @@ -0,0 +1,53 @@ +pageTitle=Yii::app()->name . ' - Login'; +$this->breadcrumbs=array( + 'Login', +); +?> + +

Login

+ +

Please fill out the following form with your login credentials:

+ +
+beginWidget('CActiveForm', array( + 'id'=>'login-form', + 'enableClientValidation'=>true, + 'clientOptions'=>array( + 'validateOnSubmit'=>true, + ), +)); ?> + +

Fields with * are required.

+ +
+ labelEx($model,'username'); ?> + textField($model,'username'); ?> + error($model,'username'); ?> +
+ +
+ labelEx($model,'password'); ?> + passwordField($model,'password'); ?> + error($model,'password'); ?> +

+ Hint: You may login with demo/demo or admin/admin. +

+
+ +
+ checkBox($model,'rememberMe'); ?> + label($model,'rememberMe'); ?> + error($model,'rememberMe'); ?> +
+ +
+ +
+ +endWidget(); ?> +
diff --git a/demos/default/protected/views/site/pages/about.php b/demos/default/protected/views/site/pages/about.php new file mode 100644 index 0000000..d8aa3c5 --- /dev/null +++ b/demos/default/protected/views/site/pages/about.php @@ -0,0 +1,12 @@ +pageTitle=Yii::app()->name . ' - About'; +$this->breadcrumbs=array( + 'About', +); +?> +

About

+ +

This is a "static" page. You may change the content of this page +by updating the file .

diff --git a/demos/default/protected/yiic b/demos/default/protected/yiic new file mode 100644 index 0000000..7f56f54 --- /dev/null +++ b/demos/default/protected/yiic @@ -0,0 +1,4 @@ +#!/usr/bin/env php +