diff --git a/demos/blog/css/bg.gif b/demos/blog/css/bg.gif deleted file mode 100644 index 4283989..0000000 Binary files a/demos/blog/css/bg.gif and /dev/null differ diff --git a/demos/blog/css/form.css b/demos/blog/css/form.css deleted file mode 100644 index 2a5e1bf..0000000 --- a/demos/blog/css/form.css +++ /dev/null @@ -1,166 +0,0 @@ -/** - * 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 -{ - margin: 0; -} - -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, -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 .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 -{ - clear: left; - padding-left: 110px; -} - -div.wide form .errorMessage -{ - margin: 0 0 0 110px; -} diff --git a/demos/blog/css/ie.css b/demos/blog/css/ie.css deleted file mode 100644 index f336f0e..0000000 --- a/demos/blog/css/ie.css +++ /dev/null @@ -1,35 +0,0 @@ -/* ----------------------------------------------------------------------- - - - Blueprint CSS Framework 0.9 - 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 div.span-1, * html div.span-2, * html div.span-3, * html div.span-4, * html div.span-5, * html div.span-6, * html div.span-7, * html div.span-8, * html div.span-9, * html div.span-10, * html div.span-11, * html div.span-12, * html div.span-13, * html div.span-14, * html div.span-15, * html div.span-16, * html div.span-17, * html div.span-18, * html div.span-19, * html div.span-20, * html div.span-21, * html div.span-22, * html div.span-23, * html div.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;} -textarea {overflow:auto;} -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 label {position:relative;top:-0.25em;} -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/blog/css/main.css b/demos/blog/css/main.css deleted file mode 100644 index a61548d..0000000 --- a/demos/blog/css/main.css +++ /dev/null @@ -1,267 +0,0 @@ -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; -} - -#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; -} - -.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; - padding: 5px 8px; - margin-bottom:15px; - 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; -} - -.post -{ - margin: 0 0 20px; -} - -.post .title -{ - font-size: 1.5em; - border-bottom: 1px solid #C9E0ED; -} - -.post .title a -{ - color: #555; - text-decoration: none; -} - -.post .author -{ - color: #888; - margin: 0 0 5px; -} - -.post .nav -{ - -moz-border-radius:7px; - padding: 5px; - background: #EFFDFF; -} - -.comment -{ - -moz-border-radius:7px; - padding: 10px; - background: #F5F5F5; - margin: 5px 0; -} - -.comment .content -{ - margin: 10px 0; -} - -.comment .author -{ - margin: 5px 0; - padding: 0 0 3px; - border-bottom: 1px solid #DDD; -} - -.comment .time -{ - color: #888; - font-size: 0.8em; -} - -.comment a.cid -{ - color:#CCC; - float:right; - font-size:1.5em; - font-weight:bold; - padding:0 5px 5px 5px; - text-decoration: none; -} - -.comment a.cid:hover -{ - color:#555; -} - -.comment .pending -{ - color:red; -} \ No newline at end of file diff --git a/demos/blog/css/print.css b/demos/blog/css/print.css deleted file mode 100644 index fdb8220..0000000 --- a/demos/blog/css/print.css +++ /dev/null @@ -1,29 +0,0 @@ -/* ----------------------------------------------------------------------- - - - Blueprint CSS Framework 0.9 - 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/blog/css/screen.css b/demos/blog/css/screen.css deleted file mode 100644 index 98eef32..0000000 --- a/demos/blog/css/screen.css +++ /dev/null @@ -1,235 +0,0 @@ -/* ----------------------------------------------------------------------- - - - Blueprint CSS Framework 0.9 - 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, 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 {margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline;} -body {line-height:1.5;} -table {border-collapse:separate;border-spacing:0;} -caption, th, td {text-align:left;font-weight:normal;} -table, td, th {vertical-align:middle;} -blockquote:before, blockquote:after, q:before, q:after {content:"";} -blockquote, q {quotes:"" "";} -a img {border:none;} - -/* 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;} -p img.left {float:left;margin:1.5em 1.5em 1.5em 0;padding:0;} -p img.right {float:right;margin:1.5em 0 1.5em 1.5em;} -a:focus, a:hover {color:#000;} -a {color:#009;text-decoration:underline;} -blockquote {margin:1.5em;color:#666;font-style:italic;} -strong {font-weight:bold;} -em, dfn {font-style:italic;} -dfn {font-weight:bold;} -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:3.333em;} -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;} -.showgrid {background:url(src/grid.png);} -.column, div.span-1, div.span-2, div.span-3, div.span-4, div.span-5, div.span-6, div.span-7, div.span-8, div.span-9, div.span-10, div.span-11, div.span-12, div.span-13, div.span-14, div.span-15, div.span-16, div.span-17, div.span-18, div.span-19, div.span-20, div.span-21, div.span-22, div.span-23, div.span-24 {float:left;margin-right:10px;} -.last, div.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, div.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!important;border-right-width:1px!important;padding-left:5px!important;padding-right:5px!important;} -input.span-1, textarea.span-1 {width:18px!important;} -input.span-2, textarea.span-2 {width:58px!important;} -input.span-3, textarea.span-3 {width:98px!important;} -input.span-4, textarea.span-4 {width:138px!important;} -input.span-5, textarea.span-5 {width:178px!important;} -input.span-6, textarea.span-6 {width:218px!important;} -input.span-7, textarea.span-7 {width:258px!important;} -input.span-8, textarea.span-8 {width:298px!important;} -input.span-9, textarea.span-9 {width:338px!important;} -input.span-10, textarea.span-10 {width:378px!important;} -input.span-11, textarea.span-11 {width:418px!important;} -input.span-12, textarea.span-12 {width:458px!important;} -input.span-13, textarea.span-13 {width:498px!important;} -input.span-14, textarea.span-14 {width:538px!important;} -input.span-15, textarea.span-15 {width:578px!important;} -input.span-16, textarea.span-16 {width:618px!important;} -input.span-17, textarea.span-17 {width:658px!important;} -input.span-18, textarea.span-18 {width:698px!important;} -input.span-19, textarea.span-19 {width:738px!important;} -input.span-20, textarea.span-20 {width:778px!important;} -input.span-21, textarea.span-21 {width:818px!important;} -input.span-22, textarea.span-22 {width:858px!important;} -input.span-23, textarea.span-23 {width:898px!important;} -input.span-24, textarea.span-24 {width:938px!important;} -.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;} -div.border {padding-right:4px;margin-right:5px;border-right:1px solid #eee;} -div.colborder {padding-right:24px;margin-right:25px;border-right:1px solid #eee;} -.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:right;position:relative;} -.prepend-top {margin-top:1.5em;} -.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:.1em;margin:0 0 1.45em;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;} \ No newline at end of file diff --git a/demos/blog/index-test.php b/demos/blog/index-test.php deleted file mode 100644 index 77e69a1..0000000 --- a/demos/blog/index-test.php +++ /dev/null @@ -1,15 +0,0 @@ -run(); diff --git a/demos/blog/index.php b/demos/blog/index.php deleted file mode 100644 index 30cd3e6..0000000 --- a/demos/blog/index.php +++ /dev/null @@ -1,11 +0,0 @@ -run(); diff --git a/demos/blog/protected/.htaccess b/demos/blog/protected/.htaccess deleted file mode 100644 index 8d2f256..0000000 --- a/demos/blog/protected/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all diff --git a/demos/blog/protected/components/Controller.php b/demos/blog/protected/components/Controller.php deleted file mode 100644 index 3253e2f..0000000 --- a/demos/blog/protected/components/Controller.php +++ /dev/null @@ -1,23 +0,0 @@ -findRecentComments($this->maxComments); - } - - protected function renderContent() - { - $this->render('recentComments'); - } -} \ No newline at end of file diff --git a/demos/blog/protected/components/TagCloud.php b/demos/blog/protected/components/TagCloud.php deleted file mode 100644 index aa9b1e9..0000000 --- a/demos/blog/protected/components/TagCloud.php +++ /dev/null @@ -1,23 +0,0 @@ -findTagWeights($this->maxTags); - - foreach($tags as $tag=>$weight) - { - $link=CHtml::link(CHtml::encode($tag), array('post/index','tag'=>$tag)); - echo CHtml::tag('span', array( - 'class'=>'tag', - 'style'=>"font-size:{$weight}pt", - ), $link)."\n"; - } - } -} \ No newline at end of file diff --git a/demos/blog/protected/components/UserIdentity.php b/demos/blog/protected/components/UserIdentity.php deleted file mode 100644 index ffcc8a6..0000000 --- a/demos/blog/protected/components/UserIdentity.php +++ /dev/null @@ -1,39 +0,0 @@ -find('LOWER(username)=?',array(strtolower($this->username))); - if($user===null) - $this->errorCode=self::ERROR_USERNAME_INVALID; - else if(!$user->validatePassword($this->password)) - $this->errorCode=self::ERROR_PASSWORD_INVALID; - else - { - $this->_id=$user->id; - $this->username=$user->username; - $this->errorCode=self::ERROR_NONE; - } - return $this->errorCode==self::ERROR_NONE; - } - - /** - * @return integer the ID of the user record - */ - public function getId() - { - return $this->_id; - } -} \ No newline at end of file diff --git a/demos/blog/protected/components/UserMenu.php b/demos/blog/protected/components/UserMenu.php deleted file mode 100644 index 727f809..0000000 --- a/demos/blog/protected/components/UserMenu.php +++ /dev/null @@ -1,17 +0,0 @@ -title=CHtml::encode(Yii::app()->user->name); - parent::init(); - } - - protected function renderContent() - { - $this->render('userMenu'); - } -} \ No newline at end of file diff --git a/demos/blog/protected/components/views/recentComments.php b/demos/blog/protected/components/views/recentComments.php deleted file mode 100644 index 932e707..0000000 --- a/demos/blog/protected/components/views/recentComments.php +++ /dev/null @@ -1,7 +0,0 @@ - \ No newline at end of file diff --git a/demos/blog/protected/components/views/userMenu.php b/demos/blog/protected/components/views/userMenu.php deleted file mode 100644 index 317eeaa..0000000 --- a/demos/blog/protected/components/views/userMenu.php +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/demos/blog/protected/config/console.php b/demos/blog/protected/config/console.php deleted file mode 100644 index bd803d9..0000000 --- a/demos/blog/protected/config/console.php +++ /dev/null @@ -1,8 +0,0 @@ -dirname(__FILE__).DIRECTORY_SEPARATOR.'..', - 'name'=>'My Console Application', -); \ No newline at end of file diff --git a/demos/blog/protected/config/main.php b/demos/blog/protected/config/main.php deleted file mode 100644 index bc50987..0000000 --- a/demos/blog/protected/config/main.php +++ /dev/null @@ -1,76 +0,0 @@ -dirname(__FILE__).DIRECTORY_SEPARATOR.'..', - 'name'=>'Yii Blog Demo', - - // preloading 'log' component - 'preload'=>array('log'), - - // autoloading model and component classes - 'import'=>array( - 'application.models.*', - 'application.components.*', - ), - - 'defaultController'=>'post', - - // application components - 'components'=>array( - 'user'=>array( - // enable cookie-based authentication - 'allowAutoLogin'=>true, - ), - 'db'=>array( - 'connectionString' => 'sqlite:protected/data/blog.db', - 'tablePrefix' => 'tbl_', - ), - // uncomment the following to use a MySQL database - /* - 'db'=>array( - 'connectionString' => 'mysql:host=localhost;dbname=blog', - 'emulatePrepare' => true, - 'username' => 'root', - 'password' => '', - 'charset' => 'utf8', - 'tablePrefix' => 'tbl_', - ), - */ - 'errorHandler'=>array( - // use 'site/error' action to display errors - 'errorAction'=>'site/error', - ), - 'urlManager'=>array( - 'urlFormat'=>'path', - 'rules'=>array( - 'post//'=>'post/view', - 'posts/'=>'post/index', - '/'=>'/', - ), - ), - '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'=>require(dirname(__FILE__).'/params.php'), -); \ No newline at end of file diff --git a/demos/blog/protected/config/params.php b/demos/blog/protected/config/params.php deleted file mode 100644 index bdb448c..0000000 --- a/demos/blog/protected/config/params.php +++ /dev/null @@ -1,19 +0,0 @@ -'My Yii Blog', - // this is used in error pages - 'adminEmail'=>'webmaster@example.com', - // number of posts displayed per page - 'postsPerPage'=>10, - // maximum number of comments that can be displayed in recent comments portlet - 'recentCommentCount'=>10, - // maximum number of tags that can be displayed in tag cloud portlet - 'tagCloudCount'=>20, - // whether post comments need to be approved before published - 'commentNeedApproval'=>true, - // the copyright information displayed in the footer section - 'copyrightInfo'=>'Copyright © 2009 by My Company.', -); diff --git a/demos/blog/protected/config/test.php b/demos/blog/protected/config/test.php deleted file mode 100644 index e7e5aff..0000000 --- a/demos/blog/protected/config/test.php +++ /dev/null @@ -1,25 +0,0 @@ -array( - 'fixture'=>array( - 'class'=>'system.test.CDbFixtureManager', - ), - 'db'=>array( - 'connectionString'=>'sqlite:'.dirname(__FILE__).'/../data/blog-test.db', - ), - // uncomment the following to use a MySQL database - /* - 'db'=>array( - 'connectionString' => 'mysql:host=localhost;dbname=blog-test', - 'emulatePrepare' => true, - 'username' => 'root', - 'password' => '', - 'charset' => 'utf8', - ), - */ - ), - ) -); diff --git a/demos/blog/protected/controllers/CommentController.php b/demos/blog/protected/controllers/CommentController.php deleted file mode 100644 index b875d8e..0000000 --- a/demos/blog/protected/controllers/CommentController.php +++ /dev/null @@ -1,130 +0,0 @@ -array('@'), - ), - array('deny', // deny all users - 'users'=>array('*'), - ), - ); - } - - /** - * Updates a particular model. - * If update is successful, the browser will be redirected to the 'view' page. - */ - public function actionUpdate() - { - $model=$this->loadModel(); - if(isset($_POST['ajax']) && $_POST['ajax']==='comment-form') - { - echo CActiveForm::validate($model); - Yii::app()->end(); - } - if(isset($_POST['Comment'])) - { - $model->attributes=$_POST['Comment']; - if($model->save()) - $this->redirect(array('index')); - } - - $this->render('update',array( - 'model'=>$model, - )); - } - - /** - * Deletes a particular model. - * If deletion is successful, the browser will be redirected to the 'index' page. - */ - public function actionDelete() - { - if(Yii::app()->request->isPostRequest) - { - // we only allow deletion via POST request - $this->loadModel()->delete(); - - // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser - if(!isset($_POST['ajax'])) - $this->redirect(array('index')); - } - else - throw new CHttpException(400,'Invalid request. Please do not repeat this request again.'); - } - - /** - * Lists all models. - */ - public function actionIndex() - { - $dataProvider=new CActiveDataProvider('Comment', array( - 'criteria'=>array( - 'with'=>'post', - 'order'=>'t.status, t.create_time DESC', - ), - )); - - $this->render('index',array( - 'dataProvider'=>$dataProvider, - )); - } - - /** - * Approves a particular comment. - * If approval is successful, the browser will be redirected to the comment index page. - */ - public function actionApprove() - { - if(Yii::app()->request->isPostRequest) - { - $comment=$this->loadModel(); - $comment->approve(); - $this->redirect(array('index')); - } - else - throw new CHttpException(400,'Invalid request. Please do not repeat this request again.'); - } - - /** - * Returns the data model based on the primary key given in the GET variable. - * If the data model is not found, an HTTP exception will be raised. - */ - public function loadModel() - { - if($this->_model===null) - { - if(isset($_GET['id'])) - $this->_model=Comment::model()->findbyPk($_GET['id']); - if($this->_model===null) - throw new CHttpException(404,'The requested page does not exist.'); - } - return $this->_model; - } -} diff --git a/demos/blog/protected/controllers/PostController.php b/demos/blog/protected/controllers/PostController.php deleted file mode 100644 index 1d34029..0000000 --- a/demos/blog/protected/controllers/PostController.php +++ /dev/null @@ -1,216 +0,0 @@ -array('index','view'), - 'users'=>array('*'), - ), - array('allow', // allow authenticated users to access all actions - 'users'=>array('@'), - ), - array('deny', // deny all users - 'users'=>array('*'), - ), - ); - } - - /** - * Displays a particular model. - */ - public function actionView() - { - $post=$this->loadModel(); - $comment=$this->newComment($post); - - $this->render('view',array( - 'model'=>$post, - 'comment'=>$comment, - )); - } - - /** - * Creates a new model. - * If creation is successful, the browser will be redirected to the 'view' page. - */ - public function actionCreate() - { - $model=new Post; - if(isset($_POST['Post'])) - { - $model->attributes=$_POST['Post']; - if($model->save()) - $this->redirect(array('view','id'=>$model->id)); - } - - $this->render('create',array( - 'model'=>$model, - )); - } - - /** - * Updates a particular model. - * If update is successful, the browser will be redirected to the 'view' page. - */ - public function actionUpdate() - { - $model=$this->loadModel(); - if(isset($_POST['Post'])) - { - $model->attributes=$_POST['Post']; - if($model->save()) - $this->redirect(array('view','id'=>$model->id)); - } - - $this->render('update',array( - 'model'=>$model, - )); - } - - /** - * Deletes a particular model. - * If deletion is successful, the browser will be redirected to the 'index' page. - */ - public function actionDelete() - { - if(Yii::app()->request->isPostRequest) - { - // we only allow deletion via POST request - $this->loadModel()->delete(); - - // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser - if(!isset($_GET['ajax'])) - $this->redirect(array('index')); - } - else - throw new CHttpException(400,'Invalid request. Please do not repeat this request again.'); - } - - /** - * Lists all models. - */ - public function actionIndex() - { - $criteria=new CDbCriteria(array( - 'condition'=>'status='.Post::STATUS_PUBLISHED, - 'order'=>'update_time DESC', - 'with'=>'commentCount', - )); - if(isset($_GET['tag'])) - $criteria->addSearchCondition('tags',$_GET['tag']); - - $dataProvider=new CActiveDataProvider('Post', array( - 'pagination'=>array( - 'pageSize'=>Yii::app()->params['postsPerPage'], - ), - 'criteria'=>$criteria, - )); - - $this->render('index',array( - 'dataProvider'=>$dataProvider, - )); - } - - /** - * Manages all models. - */ - public function actionAdmin() - { - $model=new Post('search'); - if(isset($_GET['Post'])) - $model->attributes=$_GET['Post']; - $this->render('admin',array( - 'model'=>$model, - )); - } - - /** - * Suggests tags based on the current user input. - * This is called via AJAX when the user is entering the tags input. - */ - public function actionSuggestTags() - { - if(isset($_GET['q']) && ($keyword=trim($_GET['q']))!=='') - { - $tags=Tag::model()->suggestTags($keyword); - if($tags!==array()) - echo implode("\n",$tags); - } - } - - /** - * Returns the data model based on the primary key given in the GET variable. - * If the data model is not found, an HTTP exception will be raised. - */ - public function loadModel() - { - if($this->_model===null) - { - if(isset($_GET['id'])) - { - if(Yii::app()->user->isGuest) - $condition='status='.Post::STATUS_PUBLISHED.' OR status='.Post::STATUS_ARCHIVED; - else - $condition=''; - $this->_model=Post::model()->findByPk($_GET['id'], $condition); - } - if($this->_model===null) - throw new CHttpException(404,'The requested page does not exist.'); - } - return $this->_model; - } - - /** - * Creates a new comment. - * This method attempts to create a new comment based on the user input. - * If the comment is successfully created, the browser will be redirected - * to show the created comment. - * @param Post the post that the new comment belongs to - * @return Comment the comment instance - */ - protected function newComment($post) - { - $comment=new Comment; - if(isset($_POST['ajax']) && $_POST['ajax']==='comment-form') - { - echo CActiveForm::validate($comment); - Yii::app()->end(); - } - if(isset($_POST['Comment'])) - { - $comment->attributes=$_POST['Comment']; - if($post->addComment($comment)) - { - if($comment->status==Comment::STATUS_PENDING) - Yii::app()->user->setFlash('commentSubmitted','Thank you for your comment. Your comment will be posted once it is approved.'); - $this->refresh(); - } - } - return $comment; - } -} diff --git a/demos/blog/protected/controllers/SiteController.php b/demos/blog/protected/controllers/SiteController.php deleted file mode 100644 index cb378e0..0000000 --- a/demos/blog/protected/controllers/SiteController.php +++ /dev/null @@ -1,97 +0,0 @@ -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 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()) - { - $headers="From: {$model->email}\r\nReply-To: {$model->email}"; - mail(Yii::app()->params['adminEmail'],$model->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() - { - if (!defined('CRYPT_BLOWFISH')||!CRYPT_BLOWFISH) - throw new CHttpException(500,"This application requires that PHP was compiled with Blowfish support for crypt()."); - - $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); - } -} diff --git a/demos/blog/protected/data/blog-test.db b/demos/blog/protected/data/blog-test.db deleted file mode 100644 index 878396b..0000000 Binary files a/demos/blog/protected/data/blog-test.db and /dev/null differ diff --git a/demos/blog/protected/data/blog.db b/demos/blog/protected/data/blog.db deleted file mode 100644 index 878396b..0000000 Binary files a/demos/blog/protected/data/blog.db and /dev/null differ diff --git a/demos/blog/protected/data/dbgen.php b/demos/blog/protected/data/dbgen.php deleted file mode 100644 index fee1dbd..0000000 --- a/demos/blog/protected/data/dbgen.php +++ /dev/null @@ -1,13 +0,0 @@ -exec($sql); -} diff --git a/demos/blog/protected/data/schema.mysql.sql b/demos/blog/protected/data/schema.mysql.sql deleted file mode 100644 index b6c4e2d..0000000 --- a/demos/blog/protected/data/schema.mysql.sql +++ /dev/null @@ -1,70 +0,0 @@ -CREATE TABLE tbl_lookup -( - id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, - name VARCHAR(128) NOT NULL, - code INTEGER NOT NULL, - type VARCHAR(128) NOT NULL, - position INTEGER NOT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -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, - profile TEXT -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE tbl_post -( - id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, - title VARCHAR(128) NOT NULL, - content TEXT NOT NULL, - tags TEXT, - status INTEGER NOT NULL, - create_time INTEGER, - update_time INTEGER, - author_id INTEGER NOT NULL, - CONSTRAINT FK_post_author FOREIGN KEY (author_id) - REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE tbl_comment -( - id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, - content TEXT NOT NULL, - status INTEGER NOT NULL, - create_time INTEGER, - author VARCHAR(128) NOT NULL, - email VARCHAR(128) NOT NULL, - url VARCHAR(128), - post_id INTEGER NOT NULL, - CONSTRAINT FK_comment_post FOREIGN KEY (post_id) - REFERENCES tbl_post (id) ON DELETE CASCADE ON UPDATE RESTRICT -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -CREATE TABLE tbl_tag -( - id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, - name VARCHAR(128) NOT NULL, - frequency INTEGER DEFAULT 1 -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; - -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Draft', 'PostStatus', 1, 1); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Published', 'PostStatus', 2, 2); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Archived', 'PostStatus', 3, 3); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Pending Approval', 'CommentStatus', 1, 1); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Approved', 'CommentStatus', 2, 2); - -INSERT INTO tbl_user (username, password, email) VALUES ('demo','$2a$10$JTJf6/XqC94rrOtzuF397OHa4mbmZrVTBOQCmYD9U.obZRUut4BoC','webmaster@example.com'); -INSERT INTO tbl_post (title, content, status, create_time, update_time, author_id, tags) VALUES ('Welcome!','This blog system is developed using Yii. It is meant to demonstrate how to use Yii to build a complete real-world application. Complete source code may be found in the Yii releases. - -Feel free to try this system by writing new posts and posting comments.',2,1230952187,1230952187,1,'yii, blog'); -INSERT INTO tbl_post (title, content, status, create_time, update_time, author_id, tags) VALUES ('A Test Post', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', 2,1230952187,1230952187,1,'test'); - -INSERT INTO tbl_comment (content, status, create_time, author, email, post_id) VALUES ('This is a test comment.', 2, 1230952187, 'Tester', 'tester@example.com', 2); - -INSERT INTO tbl_tag (name) VALUES ('yii'); -INSERT INTO tbl_tag (name) VALUES ('blog'); -INSERT INTO tbl_tag (name) VALUES ('test'); \ No newline at end of file diff --git a/demos/blog/protected/data/schema.sqlite.sql b/demos/blog/protected/data/schema.sqlite.sql deleted file mode 100644 index 630fc0a..0000000 --- a/demos/blog/protected/data/schema.sqlite.sql +++ /dev/null @@ -1,70 +0,0 @@ -CREATE TABLE tbl_lookup -( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - name VARCHAR(128) NOT NULL, - code INTEGER NOT NULL, - type VARCHAR(128) NOT NULL, - position INTEGER NOT NULL -); - -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, - profile TEXT -); - -CREATE TABLE tbl_post -( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - title VARCHAR(128) NOT NULL, - content TEXT NOT NULL, - tags TEXT, - status INTEGER NOT NULL, - create_time INTEGER, - update_time INTEGER, - author_id INTEGER NOT NULL, - CONSTRAINT FK_post_author FOREIGN KEY (author_id) - REFERENCES tbl_user (id) ON DELETE CASCADE ON UPDATE RESTRICT -); - -CREATE TABLE tbl_comment -( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - content TEXT NOT NULL, - status INTEGER NOT NULL, - create_time INTEGER, - author VARCHAR(128) NOT NULL, - email VARCHAR(128) NOT NULL, - url VARCHAR(128), - post_id INTEGER NOT NULL, - CONSTRAINT FK_comment_post FOREIGN KEY (post_id) - REFERENCES tbl_post (id) ON DELETE CASCADE ON UPDATE RESTRICT -); - -CREATE TABLE tbl_tag -( - id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, - name VARCHAR(128) NOT NULL, - frequency INTEGER DEFAULT 1 -); - -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Draft', 'PostStatus', 1, 1); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Published', 'PostStatus', 2, 2); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Archived', 'PostStatus', 3, 3); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Pending Approval', 'CommentStatus', 1, 1); -INSERT INTO tbl_lookup (name, type, code, position) VALUES ('Approved', 'CommentStatus', 2, 2); - -INSERT INTO tbl_user (username, password, email) VALUES ('demo','$2a$10$JTJf6/XqC94rrOtzuF397OHa4mbmZrVTBOQCmYD9U.obZRUut4BoC','webmaster@example.com'); -INSERT INTO tbl_post (title, content, status, create_time, update_time, author_id, tags) VALUES ('Welcome!','This blog system is developed using Yii. It is meant to demonstrate how to use Yii to build a complete real-world application. Complete source code may be found in the Yii releases. - -Feel free to try this system by writing new posts and leaving comments.',2,1230952187,1230952187,1,'yii, blog'); -INSERT INTO tbl_post (title, content, status, create_time, update_time, author_id, tags) VALUES ('A Test Post', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', 2,1230952187,1230952187,1,'test'); - -INSERT INTO tbl_comment (content, status, create_time, author, email, post_id) VALUES ('This is a test comment.', 2, 1230952187, 'Tester', 'tester@example.com', 2); - -INSERT INTO tbl_tag (name) VALUES ('yii'); -INSERT INTO tbl_tag (name) VALUES ('blog'); -INSERT INTO tbl_tag (name) VALUES ('test'); diff --git a/demos/blog/protected/models/Comment.php b/demos/blog/protected/models/Comment.php deleted file mode 100644 index eafa378..0000000 --- a/demos/blog/protected/models/Comment.php +++ /dev/null @@ -1,148 +0,0 @@ -128), - array('email','email'), - array('url','url'), - ); - } - - /** - * @return array relational rules. - */ - public function relations() - { - // NOTE: you may need to adjust the relation name and the related - // class name for the relations automatically generated below. - return array( - 'post' => array(self::BELONGS_TO, 'Post', 'post_id'), - ); - } - - /** - * @return array customized attribute labels (name=>label) - */ - public function attributeLabels() - { - return array( - 'id' => 'Id', - 'content' => 'Comment', - 'status' => 'Status', - 'create_time' => 'Create Time', - 'author' => 'Name', - 'email' => 'Email', - 'url' => 'Website', - 'post_id' => 'Post', - ); - } - - /** - * Approves a comment. - */ - public function approve() - { - $this->status=Comment::STATUS_APPROVED; - $this->update(array('status')); - } - - /** - * @param Post the post that this comment belongs to. If null, the method - * will query for the post. - * @return string the permalink URL for this comment - */ - public function getUrl($post=null) - { - if($post===null) - $post=$this->post; - return $post->url.'#c'.$this->id; - } - - /** - * @return string the hyperlink display for the current comment's author - */ - public function getAuthorLink() - { - if(!empty($this->url)) - return CHtml::link(CHtml::encode($this->author),$this->url); - else - return CHtml::encode($this->author); - } - - /** - * @return integer the number of comments that are pending approval - */ - public function getPendingCommentCount() - { - return $this->count('status='.self::STATUS_PENDING); - } - - /** - * @param integer the maximum number of comments that should be returned - * @return array the most recently added comments - */ - public function findRecentComments($limit=10) - { - return $this->with('post')->findAll(array( - 'condition'=>'t.status='.self::STATUS_APPROVED, - 'order'=>'t.create_time DESC', - 'limit'=>$limit, - )); - } - - /** - * This is invoked before the record is saved. - * @return boolean whether the record should be saved. - */ - protected function beforeSave() - { - if(parent::beforeSave()) - { - if($this->isNewRecord) - $this->create_time=time(); - return true; - } - else - return false; - } -} \ No newline at end of file diff --git a/demos/blog/protected/models/ContactForm.php b/demos/blog/protected/models/ContactForm.php deleted file mode 100644 index 86541cb..0000000 --- a/demos/blog/protected/models/ContactForm.php +++ /dev/null @@ -1,42 +0,0 @@ -!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/blog/protected/models/LoginForm.php b/demos/blog/protected/models/LoginForm.php deleted file mode 100644 index 6a741c3..0000000 --- a/demos/blog/protected/models/LoginForm.php +++ /dev/null @@ -1,74 +0,0 @@ -'Remember me next time', - ); - } - - /** - * Authenticates the password. - * This is the 'authenticate' validator as declared in rules(). - */ - public function authenticate($attribute,$params) - { - $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/blog/protected/models/Lookup.php b/demos/blog/protected/models/Lookup.php deleted file mode 100644 index 52ffebd..0000000 --- a/demos/blog/protected/models/Lookup.php +++ /dev/null @@ -1,76 +0,0 @@ -findAll(array( - 'condition'=>'type=:type', - 'params'=>array(':type'=>$type), - 'order'=>'position', - )); - foreach($models as $model) - self::$_items[$type][$model->code]=$model->name; - } -} \ No newline at end of file diff --git a/demos/blog/protected/models/Post.php b/demos/blog/protected/models/Post.php deleted file mode 100644 index ffaaa66..0000000 --- a/demos/blog/protected/models/Post.php +++ /dev/null @@ -1,202 +0,0 @@ -array(1,2,3)), - array('title', 'length', 'max'=>128), - array('tags', 'match', 'pattern'=>'/^[\w\s,]+$/', 'message'=>'Tags can only contain word characters.'), - array('tags', 'normalizeTags'), - - array('title, status', 'safe', 'on'=>'search'), - ); - } - - /** - * @return array relational rules. - */ - public function relations() - { - // NOTE: you may need to adjust the relation name and the related - // class name for the relations automatically generated below. - return array( - 'author' => array(self::BELONGS_TO, 'User', 'author_id'), - 'comments' => array(self::HAS_MANY, 'Comment', 'post_id', 'condition'=>'comments.status='.Comment::STATUS_APPROVED, 'order'=>'comments.create_time DESC'), - 'commentCount' => array(self::STAT, 'Comment', 'post_id', 'condition'=>'status='.Comment::STATUS_APPROVED), - ); - } - - /** - * @return array customized attribute labels (name=>label) - */ - public function attributeLabels() - { - return array( - 'id' => 'Id', - 'title' => 'Title', - 'content' => 'Content', - 'tags' => 'Tags', - 'status' => 'Status', - 'create_time' => 'Create Time', - 'update_time' => 'Update Time', - 'author_id' => 'Author', - ); - } - - /** - * @return string the URL that shows the detail of the post - */ - public function getUrl() - { - return Yii::app()->createUrl('post/view', array( - 'id'=>$this->id, - 'title'=>$this->title, - )); - } - - /** - * @return array a list of links that point to the post list filtered by every tag of this post - */ - public function getTagLinks() - { - $links=array(); - foreach(Tag::string2array($this->tags) as $tag) - $links[]=CHtml::link(CHtml::encode($tag), array('post/index', 'tag'=>$tag)); - return $links; - } - - /** - * Normalizes the user-entered tags. - */ - public function normalizeTags($attribute,$params) - { - $this->tags=Tag::array2string(array_unique(Tag::string2array($this->tags))); - } - - /** - * Adds a new comment to this post. - * This method will set status and post_id of the comment accordingly. - * @param Comment the comment to be added - * @return boolean whether the comment is saved successfully - */ - public function addComment($comment) - { - if(Yii::app()->params['commentNeedApproval']) - $comment->status=Comment::STATUS_PENDING; - else - $comment->status=Comment::STATUS_APPROVED; - $comment->post_id=$this->id; - return $comment->save(); - } - - /** - * This is invoked when a record is populated with data from a find() call. - */ - protected function afterFind() - { - parent::afterFind(); - $this->_oldTags=$this->tags; - } - - /** - * This is invoked before the record is saved. - * @return boolean whether the record should be saved. - */ - protected function beforeSave() - { - if(parent::beforeSave()) - { - if($this->isNewRecord) - { - $this->create_time=$this->update_time=time(); - $this->author_id=Yii::app()->user->id; - } - else - $this->update_time=time(); - return true; - } - else - return false; - } - - /** - * This is invoked after the record is saved. - */ - protected function afterSave() - { - parent::afterSave(); - Tag::model()->updateFrequency($this->_oldTags, $this->tags); - } - - /** - * This is invoked after the record is deleted. - */ - protected function afterDelete() - { - parent::afterDelete(); - Comment::model()->deleteAll('post_id='.$this->id); - Tag::model()->updateFrequency($this->tags, ''); - } - - /** - * Retrieves the list of posts based on the current search/filter conditions. - * @return CActiveDataProvider the data provider that can return the needed posts. - */ - public function search() - { - $criteria=new CDbCriteria; - - $criteria->compare('title',$this->title,true); - - $criteria->compare('status',$this->status); - - return new CActiveDataProvider('Post', array( - 'criteria'=>$criteria, - 'sort'=>array( - 'defaultOrder'=>'status, update_time DESC', - ), - )); - } -} \ No newline at end of file diff --git a/demos/blog/protected/models/Tag.php b/demos/blog/protected/models/Tag.php deleted file mode 100644 index 81a56b7..0000000 --- a/demos/blog/protected/models/Tag.php +++ /dev/null @@ -1,159 +0,0 @@ -true), - array('name', 'length', 'max'=>128), - ); - } - - /** - * @return array relational rules. - */ - public function relations() - { - // NOTE: you may need to adjust the relation name and the related - // class name for the relations automatically generated below. - return array( - ); - } - - /** - * @return array customized attribute labels (name=>label) - */ - public function attributeLabels() - { - return array( - 'id' => 'Id', - 'name' => 'Name', - 'frequency' => 'Frequency', - ); - } - - /** - * Returns tag names and their corresponding weights. - * Only the tags with the top weights will be returned. - * @param integer the maximum number of tags that should be returned - * @return array weights indexed by tag names. - */ - public function findTagWeights($limit=20) - { - $models=$this->findAll(array( - 'order'=>'frequency DESC', - 'limit'=>$limit, - )); - - $total=0; - foreach($models as $model) - $total+=$model->frequency; - - $tags=array(); - if($total>0) - { - foreach($models as $model) - $tags[$model->name]=8+(int)(16*$model->frequency/($total+10)); - ksort($tags); - } - return $tags; - } - - /** - * Suggests a list of existing tags matching the specified keyword. - * @param string the keyword to be matched - * @param integer maximum number of tags to be returned - * @return array list of matching tag names - */ - public function suggestTags($keyword,$limit=20) - { - $tags=$this->findAll(array( - 'condition'=>'name LIKE :keyword', - 'order'=>'frequency DESC, Name', - 'limit'=>$limit, - 'params'=>array( - ':keyword'=>'%'.strtr($keyword,array('%'=>'\%', '_'=>'\_', '\\'=>'\\\\')).'%', - ), - )); - $names=array(); - foreach($tags as $tag) - $names[]=$tag->name; - return $names; - } - - public static function string2array($tags) - { - return preg_split('/\s*,\s*/',trim($tags),-1,PREG_SPLIT_NO_EMPTY); - } - - public static function array2string($tags) - { - return implode(', ',$tags); - } - - public function updateFrequency($oldTags, $newTags) - { - $oldTags=self::string2array($oldTags); - $newTags=self::string2array($newTags); - $this->addTags(array_values(array_diff($newTags,$oldTags))); - $this->removeTags(array_values(array_diff($oldTags,$newTags))); - } - - public function addTags($tags) - { - $criteria=new CDbCriteria; - $criteria->addInCondition('name',$tags); - $this->updateCounters(array('frequency'=>1),$criteria); - foreach($tags as $name) - { - if(!$this->exists('name=:name',array(':name'=>$name))) - { - $tag=new Tag; - $tag->name=$name; - $tag->frequency=1; - $tag->save(); - } - } - } - - public function removeTags($tags) - { - if(empty($tags)) - return; - $criteria=new CDbCriteria; - $criteria->addInCondition('name',$tags); - $this->updateCounters(array('frequency'=>-1),$criteria); - $this->deleteAll('frequency<=0'); - } -} \ No newline at end of file diff --git a/demos/blog/protected/models/User.php b/demos/blog/protected/models/User.php deleted file mode 100644 index 52c5b9a..0000000 --- a/demos/blog/protected/models/User.php +++ /dev/null @@ -1,90 +0,0 @@ -128), - array('profile', 'safe'), - ); - } - - /** - * @return array relational rules. - */ - public function relations() - { - // NOTE: you may need to adjust the relation name and the related - // class name for the relations automatically generated below. - return array( - 'posts' => array(self::HAS_MANY, 'Post', 'author_id'), - ); - } - - /** - * @return array customized attribute labels (name=>label) - */ - public function attributeLabels() - { - return array( - 'id' => 'Id', - 'username' => 'Username', - 'password' => 'Password', - 'email' => 'Email', - 'profile' => 'Profile', - ); - } - - /** - * Checks if the given password is correct. - * @param string the password to be validated - * @return boolean whether the password is valid - */ - public function validatePassword($password) - { - return CPasswordHelper::verifyPassword($password,$this->password); - } - - /** - * Generates the password hash. - * @param string password - * @return string hash - */ - public function hashPassword($password) - { - return CPasswordHelper::hashPassword($password); - } -} diff --git a/demos/blog/protected/tests/WebTestCase.php b/demos/blog/protected/tests/WebTestCase.php deleted file mode 100644 index 8ad40c6..0000000 --- a/demos/blog/protected/tests/WebTestCase.php +++ /dev/null @@ -1,25 +0,0 @@ -setBrowserUrl(TEST_BASE_URL); - } -} diff --git a/demos/blog/protected/tests/bootstrap.php b/demos/blog/protected/tests/bootstrap.php deleted file mode 100644 index 6d06a12..0000000 --- a/demos/blog/protected/tests/bootstrap.php +++ /dev/null @@ -1,10 +0,0 @@ -array( - 'content' => '', - 'status' => '', - 'create_time' => '', - 'author' => '', - 'email' => '', - 'url' => '', - 'post_id' => '', - ), - 'sample2'=>array( - 'content' => '', - 'status' => '', - 'create_time' => '', - 'author' => '', - 'email' => '', - 'url' => '', - 'post_id' => '', - ), - */ -); diff --git a/demos/blog/protected/tests/fixtures/tbl_lookup.php b/demos/blog/protected/tests/fixtures/tbl_lookup.php deleted file mode 100644 index 1b84d57..0000000 --- a/demos/blog/protected/tests/fixtures/tbl_lookup.php +++ /dev/null @@ -1,18 +0,0 @@ -array( - 'name' => '', - 'code' => '', - 'type' => '', - 'position' => '', - ), - 'sample2'=>array( - 'name' => '', - 'code' => '', - 'type' => '', - 'position' => '', - ), - */ -); diff --git a/demos/blog/protected/tests/fixtures/tbl_post.php b/demos/blog/protected/tests/fixtures/tbl_post.php deleted file mode 100644 index 43509f6..0000000 --- a/demos/blog/protected/tests/fixtures/tbl_post.php +++ /dev/null @@ -1,13 +0,0 @@ -array( - 'title'=>'test post 1', - 'content'=>"This blog is powered by [Yii framework](http://www.yiiframework.com).", - 'status'=>2, - 'create_time'=>1230952187, - 'update_time'=>1230952187, - 'author_id'=>1, - 'tags'=>'yii, blog', - ), -); diff --git a/demos/blog/protected/tests/fixtures/tbl_tag.php b/demos/blog/protected/tests/fixtures/tbl_tag.php deleted file mode 100644 index f87d6a5..0000000 --- a/demos/blog/protected/tests/fixtures/tbl_tag.php +++ /dev/null @@ -1,12 +0,0 @@ -'yii', - 'frequency'=>1, - ), - array( - 'name'=>'blog', - 'frequency'=>1, - ), -); diff --git a/demos/blog/protected/tests/fixtures/tbl_user.php b/demos/blog/protected/tests/fixtures/tbl_user.php deleted file mode 100644 index 675ba75..0000000 --- a/demos/blog/protected/tests/fixtures/tbl_user.php +++ /dev/null @@ -1,9 +0,0 @@ -'demo', - 'password'=>'$2a$10$JTJf6/XqC94rrOtzuF397OHa4mbmZrVTBOQCmYD9U.obZRUut4BoC', - 'email'=>'webmaster@example.com', - ), -); diff --git a/demos/blog/protected/tests/functional/CommentTest.php b/demos/blog/protected/tests/functional/CommentTest.php deleted file mode 100644 index 7f6bd0f..0000000 --- a/demos/blog/protected/tests/functional/CommentTest.php +++ /dev/null @@ -1,36 +0,0 @@ -'Post', - 'comments'=>'Comment', - ); - - public function testCreate() - { - $this->open('post/1/xyz'); - - // verify the sample post title exists - $this->assertTextPresent($this->posts['sample1']['title']); - $this->assertElementPresent("name=Comment[author]"); - - // verify validation errors - $this->clickAndWait("//input[@value='Submit']"); - $this->assertTextPresent('Name cannot be blank.'); - $this->assertTextPresent('Email cannot be blank.'); - $this->assertTextPresent('Comment cannot be blank.'); - - // verify commenting is successful - $comment="comment 1"; - $this->type('name=Comment[author]','me'); - $this->type('name=Comment[email]','me@example.com'); - $this->type('name=Comment[content]',$comment); - $this->clickAndWait("//input[@value='Submit']"); - $this->assertTextPresent('Thank you for your comment'); - } -} \ No newline at end of file diff --git a/demos/blog/protected/tests/functional/PostTest.php b/demos/blog/protected/tests/functional/PostTest.php deleted file mode 100644 index e69b055..0000000 --- a/demos/blog/protected/tests/functional/PostTest.php +++ /dev/null @@ -1,30 +0,0 @@ -'Post', - ); - - public function testIndex() - { - $this->open(''); - // verify header title exists - $this->assertTextPresent('Yii Blog Demo'); - // verify the sample post title exists - $this->assertTextPresent($this->posts['sample1']['title']); - } - - public function testView() - { - $this->open('post/1/xyz'); - // verify the sample post title exists - $this->assertTextPresent($this->posts['sample1']['title']); - // verify comment form exists - $this->assertTextPresent('Leave a Comment'); - } -} \ No newline at end of file diff --git a/demos/blog/protected/tests/functional/SiteTest.php b/demos/blog/protected/tests/functional/SiteTest.php deleted file mode 100644 index 7bbf150..0000000 --- a/demos/blog/protected/tests/functional/SiteTest.php +++ /dev/null @@ -1,41 +0,0 @@ -open('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->clickAndWait("//input[@value='Submit']"); - $this->assertTextPresent('Body cannot be blank.'); - } - - public function testLoginLogout() - { - $this->open(''); - // ensure the user is logged out - if($this->isTextPresent('Logout')) - $this->clickAndWait('link=Logout'); - - // test login process, including validation - $this->clickAndWait('link=Login'); - $this->assertElementPresent('name=LoginForm[username]'); - $this->type('name=LoginForm[username]','demo'); - $this->clickAndWait("//input[@value='Login']"); - $this->assertTextPresent('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'); - $this->assertTextPresent('Login'); - } -} diff --git a/demos/blog/protected/tests/phpunit.xml b/demos/blog/protected/tests/phpunit.xml deleted file mode 100644 index 22c96ff..0000000 --- a/demos/blog/protected/tests/phpunit.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/demos/blog/protected/tests/readme.txt b/demos/blog/protected/tests/readme.txt deleted file mode 100644 index ab98d10..0000000 --- a/demos/blog/protected/tests/readme.txt +++ /dev/null @@ -1,42 +0,0 @@ -This directory contains unit and functional tests for the blog demo. - - - fixtures: contains fixture data for relevant database tables. - Each file is used to set up the fixture data for a particular table. - The file name is the same as the table name. - - - functional: contains functional test cases. - - - unit: contains unit test cases. - - - report: contains any coverage reports. - - -In order to run these tests, the following requirements must be met: - - - PHPUnit 3.3 or higher - - Selenium RC 1.0 or higher - - -Depending on your installation of Yii release, you may need to modify -the file "WebTestCase.php" so that the "TEST_BASE_URL" constant contains -correct value. You may also modify "phpunit.xml" to specify the browsers -you intend to run the functional tests on. - -To run these tests, please refer to PHPUnit documentation. The followings -are some examples: - - - Executes all tests under the "unit" directory with verbose information: - - phpunit --verbose unit - - - Executes all tests under "functional" (Selenium RC is running): - - phpunit functional - - - Executes a particular test: - - phpunit functional/PostTest.php - - -*DISCLAIMER* The test cases included here are by no means complete. They mainly serve -for demonstrative purpose. diff --git a/demos/blog/protected/tests/unit/CommentTest.php b/demos/blog/protected/tests/unit/CommentTest.php deleted file mode 100644 index 954831e..0000000 --- a/demos/blog/protected/tests/unit/CommentTest.php +++ /dev/null @@ -1,57 +0,0 @@ -'Post', - 'comments'=>'Comment', - ); - - public function testFindRecentComments() - { - $this->assertEquals(array(), Comment::model()->findRecentComments()); - - $comment=new Comment; - $comment->setAttributes(array( - 'content'=>'comment 1', - 'status'=>Comment::STATUS_APPROVED, - 'create_time'=>time(), - 'author'=>'me', - 'email'=>'me@example.com', - 'post_id'=>$this->posts['sample1']['id'], - ),false); - $this->assertTrue($comment->save(false)); - $this->assertEquals(1,$comment->id); - - $comments=Comment::model()->findRecentComments(); - $this->assertEquals(1,count($comments)); - $this->assertEquals($comment->attributes, $comments[0]->attributes); - } - - public function testApprove() - { - $comment=new Comment; - $comment->setAttributes(array( - 'content'=>'comment 1', - 'status'=>Comment::STATUS_PENDING, - 'create_time'=>time(), - 'author'=>'me', - 'email'=>'me@example.com', - 'post_id'=>$this->posts['sample1']['id'], - ),false); - $this->assertTrue($comment->save(false)); - - $comment=Comment::model()->findByPk($comment->id); - $this->assertTrue($comment instanceof Comment); - $this->assertEquals(Comment::STATUS_PENDING,$comment->status); - - $comment->approve(); - $this->assertEquals(Comment::STATUS_APPROVED,$comment->status); - $comment=Comment::model()->findByPk($comment->id); - $this->assertEquals(Comment::STATUS_APPROVED,$comment->status); - } -} \ No newline at end of file diff --git a/demos/blog/protected/tests/unit/LookupTest.php b/demos/blog/protected/tests/unit/LookupTest.php deleted file mode 100644 index bf63b9d..0000000 --- a/demos/blog/protected/tests/unit/LookupTest.php +++ /dev/null @@ -1,13 +0,0 @@ -'Lookup', - ); - - public function testCreate() - { - - } -} \ No newline at end of file diff --git a/demos/blog/protected/tests/unit/PostTest.php b/demos/blog/protected/tests/unit/PostTest.php deleted file mode 100644 index d4be84f..0000000 --- a/demos/blog/protected/tests/unit/PostTest.php +++ /dev/null @@ -1,18 +0,0 @@ -'Post', - 'comments'=>'Comment', - ); - - public function testSave() - { - // write code here to test post saving method - } -} \ No newline at end of file diff --git a/demos/blog/protected/tests/unit/TagTest.php b/demos/blog/protected/tests/unit/TagTest.php deleted file mode 100644 index 7bfa6e9..0000000 --- a/demos/blog/protected/tests/unit/TagTest.php +++ /dev/null @@ -1,13 +0,0 @@ -'Tag', - ); - - public function testCreate() - { - - } -} \ No newline at end of file diff --git a/demos/blog/protected/tests/unit/UserTest.php b/demos/blog/protected/tests/unit/UserTest.php deleted file mode 100644 index 78bebd7..0000000 --- a/demos/blog/protected/tests/unit/UserTest.php +++ /dev/null @@ -1,24 +0,0 @@ -'User', - ); - - public function testValidatePassword() - { - $this->assertTrue($this->users(0)->validatePassword('demo')); - $this->assertFalse($this->users(0)->validatePassword('wrong')); - - } - - public function testChangePassword() - { - $user=$this->users(0); - $user->password=$user->hashPassword('newpwd'); - $this->assertFalse($user->validatePassword('demo')); - $this->assertTrue($user->validatePassword('newpwd')); - - } -} diff --git a/demos/blog/protected/views/comment/_form.php b/demos/blog/protected/views/comment/_form.php deleted file mode 100644 index b57b189..0000000 --- a/demos/blog/protected/views/comment/_form.php +++ /dev/null @@ -1,40 +0,0 @@ -
- -beginWidget('CActiveForm', array( - 'id'=>'comment-form', - 'enableAjaxValidation'=>true, -)); ?> - -

Fields with * are required.

- -
- labelEx($model,'author'); ?> - textField($model,'author',array('size'=>60,'maxlength'=>128)); ?> - error($model,'author'); ?> -
- -
- labelEx($model,'email'); ?> - textField($model,'email',array('size'=>60,'maxlength'=>128)); ?> - error($model,'email'); ?> -
- -
- labelEx($model,'url'); ?> - textField($model,'url',array('size'=>60,'maxlength'=>128)); ?> - error($model,'url'); ?> -
- -
- labelEx($model,'content'); ?> - textArea($model,'content',array('rows'=>6, 'cols'=>50)); ?> - error($model,'content'); ?> -
- -
- isNewRecord ? 'Submit' : 'Save'); ?> -
- -endWidget(); ?> - -
\ No newline at end of file diff --git a/demos/blog/protected/views/comment/_view.php b/demos/blog/protected/views/comment/_view.php deleted file mode 100644 index 27a37b0..0000000 --- a/demos/blog/protected/views/comment/_view.php +++ /dev/null @@ -1,46 +0,0 @@ -getClientScript()->registerScript('delete', $deleteJS); -?> -
- - id}", $data->url, array( - 'class'=>'cid', - 'title'=>'Permalink to this comment', - )); ?> - -
- authorLink; ?> says on - post->title), $data->post->url); ?> -
- -
- status==Comment::STATUS_PENDING): ?> - Pending approval | - array('comment/approve','id'=>$data->id), - )); ?> | - - $data->id)); ?> | - $data->id),array('class'=>'delete')); ?> | - create_time); ?> -
- -
- content)); ?> -
- -
\ No newline at end of file diff --git a/demos/blog/protected/views/comment/index.php b/demos/blog/protected/views/comment/index.php deleted file mode 100644 index ccafd04..0000000 --- a/demos/blog/protected/views/comment/index.php +++ /dev/null @@ -1,12 +0,0 @@ -breadcrumbs=array( - 'Comments', -); -?> - -

Comments

- -widget('zii.widgets.CListView', array( - 'dataProvider'=>$dataProvider, - 'itemView'=>'_view', -)); ?> diff --git a/demos/blog/protected/views/comment/update.php b/demos/blog/protected/views/comment/update.php deleted file mode 100644 index 6cd36d9..0000000 --- a/demos/blog/protected/views/comment/update.php +++ /dev/null @@ -1,10 +0,0 @@ -breadcrumbs=array( - 'Comments'=>array('index'), - 'Update Comment #'.$model->id, -); -?> - -

Update Comment #id; ?>

- -renderPartial('_form', array('model'=>$model)); ?> \ No newline at end of file diff --git a/demos/blog/protected/views/layouts/column1.php b/demos/blog/protected/views/layouts/column1.php deleted file mode 100644 index 5d68d90..0000000 --- a/demos/blog/protected/views/layouts/column1.php +++ /dev/null @@ -1,7 +0,0 @@ -beginContent('/layouts/main'); ?> -
-
- -
-
-endContent(); ?> \ No newline at end of file diff --git a/demos/blog/protected/views/layouts/column2.php b/demos/blog/protected/views/layouts/column2.php deleted file mode 100644 index 74bafb8..0000000 --- a/demos/blog/protected/views/layouts/column2.php +++ /dev/null @@ -1,22 +0,0 @@ -beginContent('/layouts/main'); ?> -
-
-
- -
-
-
- -
-
-endContent(); ?> \ No newline at end of file diff --git a/demos/blog/protected/views/layouts/main.php b/demos/blog/protected/views/layouts/main.php deleted file mode 100644 index d078c33..0000000 --- a/demos/blog/protected/views/layouts/main.php +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - <?php echo CHtml::encode($this->pageTitle); ?> - - - - -
- - - - - - widget('zii.widgets.CBreadcrumbs', array( - 'links'=>$this->breadcrumbs, - )); ?> - - - - - -
- - - \ No newline at end of file diff --git a/demos/blog/protected/views/post/_comments.php b/demos/blog/protected/views/post/_comments.php deleted file mode 100644 index f2c7da1..0000000 --- a/demos/blog/protected/views/post/_comments.php +++ /dev/null @@ -1,22 +0,0 @@ - -
- - id}", $comment->getUrl($post), array( - 'class'=>'cid', - 'title'=>'Permalink to this comment', - )); ?> - -
- authorLink; ?> says: -
- -
- create_time); ?> -
- -
- content)); ?> -
- -
- \ No newline at end of file diff --git a/demos/blog/protected/views/post/_form.php b/demos/blog/protected/views/post/_form.php deleted file mode 100644 index 856de8f..0000000 --- a/demos/blog/protected/views/post/_form.php +++ /dev/null @@ -1,47 +0,0 @@ -
- -beginWidget('CActiveForm'); ?> - -

Fields with * are required.

- - - -
- labelEx($model,'title'); ?> - textField($model,'title',array('size'=>80,'maxlength'=>128)); ?> - error($model,'title'); ?> -
- -
- labelEx($model,'content'); ?> - 10, 'cols'=>70)); ?> -

You may use Markdown syntax.

- error($model,'content'); ?> -
- -
- labelEx($model,'tags'); ?> - widget('CAutoComplete', array( - 'model'=>$model, - 'attribute'=>'tags', - 'url'=>array('suggestTags'), - 'multiple'=>true, - 'htmlOptions'=>array('size'=>50), - )); ?> -

Please separate different tags with commas.

- error($model,'tags'); ?> -
- -
- labelEx($model,'status'); ?> - dropDownList($model,'status',Lookup::items('PostStatus')); ?> - error($model,'status'); ?> -
- -
- isNewRecord ? 'Create' : 'Save'); ?> -
- -endWidget(); ?> - -
\ No newline at end of file diff --git a/demos/blog/protected/views/post/_view.php b/demos/blog/protected/views/post/_view.php deleted file mode 100644 index 0fb8432..0000000 --- a/demos/blog/protected/views/post/_view.php +++ /dev/null @@ -1,23 +0,0 @@ -
-
- title), $data->url); ?> -
-
- posted by author->username . ' on ' . date('F j, Y',$data->create_time); ?> -
-
- beginWidget('CMarkdown', array('purifyOutput'=>true)); - echo $data->content; - $this->endWidget(); - ?> -
- -
diff --git a/demos/blog/protected/views/post/admin.php b/demos/blog/protected/views/post/admin.php deleted file mode 100644 index d008578..0000000 --- a/demos/blog/protected/views/post/admin.php +++ /dev/null @@ -1,31 +0,0 @@ -breadcrumbs=array( - 'Manage Posts', -); -?> -

Manage Posts

- -widget('zii.widgets.grid.CGridView', array( - 'dataProvider'=>$model->search(), - 'filter'=>$model, - 'columns'=>array( - array( - 'name'=>'title', - 'type'=>'raw', - 'value'=>'CHtml::link(CHtml::encode($data->title), $data->url)' - ), - array( - 'name'=>'status', - 'value'=>'Lookup::item("PostStatus",$data->status)', - 'filter'=>Lookup::items('PostStatus'), - ), - array( - 'name'=>'create_time', - 'type'=>'datetime', - 'filter'=>false, - ), - array( - 'class'=>'CButtonColumn', - ), - ), -)); ?> diff --git a/demos/blog/protected/views/post/create.php b/demos/blog/protected/views/post/create.php deleted file mode 100644 index ec90e1c..0000000 --- a/demos/blog/protected/views/post/create.php +++ /dev/null @@ -1,8 +0,0 @@ -breadcrumbs=array( - 'Create Post', -); -?> -

Create Post

- -renderPartial('_form', array('model'=>$model)); ?> \ No newline at end of file diff --git a/demos/blog/protected/views/post/index.php b/demos/blog/protected/views/post/index.php deleted file mode 100644 index 3508277..0000000 --- a/demos/blog/protected/views/post/index.php +++ /dev/null @@ -1,9 +0,0 @@ - -

Posts Tagged with

- - -widget('zii.widgets.CListView', array( - 'dataProvider'=>$dataProvider, - 'itemView'=>'_view', - 'template'=>"{items}\n{pager}", -)); ?> diff --git a/demos/blog/protected/views/post/update.php b/demos/blog/protected/views/post/update.php deleted file mode 100644 index 89c2f95..0000000 --- a/demos/blog/protected/views/post/update.php +++ /dev/null @@ -1,10 +0,0 @@ -breadcrumbs=array( - $model->title=>$model->url, - 'Update', -); -?> - -

Update title); ?>

- -renderPartial('_form', array('model'=>$model)); ?> \ No newline at end of file diff --git a/demos/blog/protected/views/post/view.php b/demos/blog/protected/views/post/view.php deleted file mode 100644 index 9b89a4e..0000000 --- a/demos/blog/protected/views/post/view.php +++ /dev/null @@ -1,36 +0,0 @@ -breadcrumbs=array( - $model->title, -); -$this->pageTitle=$model->title; -?> - -renderPartial('_view', array( - 'data'=>$model, -)); ?> - -
- commentCount>=1): ?> -

- commentCount>1 ? $model->commentCount . ' comments' : 'One comment'; ?> -

- - renderPartial('_comments',array( - 'post'=>$model, - 'comments'=>$model->comments, - )); ?> - - -

Leave a Comment

- - user->hasFlash('commentSubmitted')): ?> -
- user->getFlash('commentSubmitted'); ?> -
- - renderPartial('/comment/_form',array( - 'model'=>$comment, - )); ?> - - -
diff --git a/demos/blog/protected/views/site/contact.php b/demos/blog/protected/views/site/contact.php deleted file mode 100644 index ca3152f..0000000 --- a/demos/blog/protected/views/site/contact.php +++ /dev/null @@ -1,70 +0,0 @@ -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'); ?> - -

Fields with * are required.

- - errorSummary($model); ?> - -
- labelEx($model,'name'); ?> - textField($model,'name'); ?> -
- -
- labelEx($model,'email'); ?> - textField($model,'email'); ?> -
- -
- labelEx($model,'subject'); ?> - textField($model,'subject',array('size'=>60,'maxlength'=>128)); ?> -
- -
- labelEx($model,'body'); ?> - textArea($model,'body',array('rows'=>6, 'cols'=>50)); ?> -
- - -
- 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.
-
- - -
- -
- -endWidget(); ?> - -
- - \ No newline at end of file diff --git a/demos/blog/protected/views/site/error.php b/demos/blog/protected/views/site/error.php deleted file mode 100644 index 4607ff3..0000000 --- a/demos/blog/protected/views/site/error.php +++ /dev/null @@ -1,12 +0,0 @@ -pageTitle=Yii::app()->name . ' - Error'; -$this->breadcrumbs=array( - 'Error', -); -?> - -

Error

- -
- -
\ No newline at end of file diff --git a/demos/blog/protected/views/site/login.php b/demos/blog/protected/views/site/login.php deleted file mode 100644 index 0c387ae..0000000 --- a/demos/blog/protected/views/site/login.php +++ /dev/null @@ -1,46 +0,0 @@ -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', - 'enableAjaxValidation'=>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. -

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

About

- -

This is the "about" page for my blog site.

\ No newline at end of file diff --git a/demos/blog/protected/yiic b/demos/blog/protected/yiic deleted file mode 100644 index 7f56f54..0000000 --- a/demos/blog/protected/yiic +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env php - - *
- * - * - *

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 deleted file mode 100644 index f015399..0000000 --- a/demos/default/css/ie.css +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------------------- - - - 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 deleted file mode 100644 index 13327b8..0000000 --- a/demos/default/css/main.css +++ /dev/null @@ -1,229 +0,0 @@ -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 deleted file mode 100644 index bd79afd..0000000 --- a/demos/default/css/print.css +++ /dev/null @@ -1,29 +0,0 @@ -/* ----------------------------------------------------------------------- - - - 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 deleted file mode 100644 index 7824d07..0000000 --- a/demos/default/css/screen.css +++ /dev/null @@ -1,238 +0,0 @@ -/* ----------------------------------------------------------------------- - - - 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 deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/index-test.php b/demos/default/index-test.php deleted file mode 100644 index 87dfbe3..0000000 --- a/demos/default/index-test.php +++ /dev/null @@ -1,15 +0,0 @@ -run(); diff --git a/demos/default/index.php b/demos/default/index.php deleted file mode 100644 index 84a48bf..0000000 --- a/demos/default/index.php +++ /dev/null @@ -1,13 +0,0 @@ -run(); diff --git a/demos/default/protected/.htaccess b/demos/default/protected/.htaccess deleted file mode 100644 index 8d2f256..0000000 --- a/demos/default/protected/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all diff --git a/demos/default/protected/commands/shell/.gitkeep b/demos/default/protected/commands/shell/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/protected/components/Controller.php b/demos/default/protected/components/Controller.php deleted file mode 100644 index 083187e..0000000 --- a/demos/default/protected/components/Controller.php +++ /dev/null @@ -1,23 +0,0 @@ - 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 deleted file mode 100644 index 346a976..0000000 --- a/demos/default/protected/config/console.php +++ /dev/null @@ -1,37 +0,0 @@ -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 deleted file mode 100644 index 6919c74..0000000 --- a/demos/default/protected/config/main.php +++ /dev/null @@ -1,90 +0,0 @@ -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 deleted file mode 100644 index fd7085a..0000000 --- a/demos/default/protected/config/test.php +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index a6a790e..0000000 --- a/demos/default/protected/controllers/SiteController.php +++ /dev/null @@ -1,109 +0,0 @@ -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 deleted file mode 100644 index 32788bd..0000000 --- a/demos/default/protected/data/schema.mysql.sql +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index e5e0830..0000000 --- a/demos/default/protected/data/schema.sqlite.sql +++ /dev/null @@ -1,28 +0,0 @@ -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 deleted file mode 100644 index 0672b21..0000000 Binary files a/demos/default/protected/data/testdrive.db and /dev/null differ diff --git a/demos/default/protected/extensions/.gitkeep b/demos/default/protected/extensions/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/protected/messages/.gitkeep b/demos/default/protected/messages/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/protected/migrations/.gitkeep b/demos/default/protected/migrations/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/protected/models/ContactForm.php b/demos/default/protected/models/ContactForm.php deleted file mode 100644 index 86541cb..0000000 --- a/demos/default/protected/models/ContactForm.php +++ /dev/null @@ -1,42 +0,0 @@ -!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 deleted file mode 100644 index eb36e4a..0000000 --- a/demos/default/protected/models/LoginForm.php +++ /dev/null @@ -1,77 +0,0 @@ -'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 deleted file mode 100644 index c96a04f..0000000 --- a/demos/default/protected/runtime/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore \ No newline at end of file diff --git a/demos/default/protected/tests/WebTestCase.php b/demos/default/protected/tests/WebTestCase.php deleted file mode 100644 index d252bba..0000000 --- a/demos/default/protected/tests/WebTestCase.php +++ /dev/null @@ -1,25 +0,0 @@ -setBrowserUrl(TEST_BASE_URL); - } -} diff --git a/demos/default/protected/tests/bootstrap.php b/demos/default/protected/tests/bootstrap.php deleted file mode 100644 index 6d06a12..0000000 --- a/demos/default/protected/tests/bootstrap.php +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 22c96ff..0000000 --- a/demos/default/protected/tests/phpunit.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/demos/default/protected/tests/report/.gitignore b/demos/default/protected/tests/report/.gitignore deleted file mode 100644 index c96a04f..0000000 --- a/demos/default/protected/tests/report/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore \ No newline at end of file diff --git a/demos/default/protected/tests/unit/.gitkeep b/demos/default/protected/tests/unit/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/protected/vendor/.gitkeep b/demos/default/protected/vendor/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/demos/default/protected/views/layouts/column1.php b/demos/default/protected/views/layouts/column1.php deleted file mode 100644 index 702fd65..0000000 --- a/demos/default/protected/views/layouts/column1.php +++ /dev/null @@ -1,6 +0,0 @@ - -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 deleted file mode 100644 index b588bf6..0000000 --- a/demos/default/protected/views/layouts/column2.php +++ /dev/null @@ -1,22 +0,0 @@ - -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 deleted file mode 100644 index daf905e..0000000 --- a/demos/default/protected/views/layouts/main.php +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - <?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 deleted file mode 100644 index baad25e..0000000 --- a/demos/default/protected/views/site/contact.php +++ /dev/null @@ -1,85 +0,0 @@ -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 deleted file mode 100644 index d0dcb80..0000000 --- a/demos/default/protected/views/site/error.php +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index d521a85..0000000 --- a/demos/default/protected/views/site/index.php +++ /dev/null @@ -1,20 +0,0 @@ -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 deleted file mode 100644 index 3c16748..0000000 --- a/demos/default/protected/views/site/login.php +++ /dev/null @@ -1,53 +0,0 @@ -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 deleted file mode 100644 index d8aa3c5..0000000 --- a/demos/default/protected/views/site/pages/about.php +++ /dev/null @@ -1,12 +0,0 @@ -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 deleted file mode 100644 index 7f56f54..0000000 --- a/demos/default/protected/yiic +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env php -run(); \ No newline at end of file diff --git a/demos/hangman/protected/.htaccess b/demos/hangman/protected/.htaccess deleted file mode 100644 index 8d2f256..0000000 --- a/demos/hangman/protected/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all diff --git a/demos/hangman/protected/config/main.php b/demos/hangman/protected/config/main.php deleted file mode 100644 index 99eb015..0000000 --- a/demos/hangman/protected/config/main.php +++ /dev/null @@ -1,14 +0,0 @@ -'Hangman Game', - 'defaultController'=>'game', - 'components'=>array( - 'urlManager'=>array( - 'urlFormat'=>'path', - 'rules'=>array( - 'game/guess/'=>'game/guess', - ), - ), - ), -); \ No newline at end of file diff --git a/demos/hangman/protected/controllers/GameController.php b/demos/hangman/protected/controllers/GameController.php deleted file mode 100644 index 86cfaec..0000000 --- a/demos/hangman/protected/controllers/GameController.php +++ /dev/null @@ -1,222 +0,0 @@ - - * @link http://www.yiiframework.com/ - * @copyright 2008-2013 Yii Software LLC - * @license http://www.yiiframework.com/license/ - */ - - -/** - * GameController implements the {@link http://en.wikipedia.org/wiki/Hangman_(game) Hangman game}. - * - * @author Qiang Xue - * @version $Id: CController.php 131 2008-11-02 01:32:57Z qiang.xue $ - * @package demos.hangman - * @since 1.0 - */ -class GameController extends CController -{ - /** - * @var string sets the default action to be 'play' - */ - public $defaultAction='play'; - - /** - * The 'play' action. - * In this action, users are asked to choose a difficulty level - * of the game. - */ - public function actionPlay() - { - static $levels=array( - '10'=>'Easy game; you are allowed 10 misses.', - '5'=>'Medium game; you are allowed 5 misses.', - '3'=>'Hard game; you are allowed 3 misses.', - ); - - // if a difficulty level is correctly chosen - if(isset($_POST['level']) && isset($levels[$_POST['level']])) - { - $this->word=$this->generateWord(); - $this->guessWord=str_repeat('_',strlen($this->word)); - $this->level=$_POST['level']; - $this->misses=0; - $this->setPageState('guessed',null); - // show the guess page - $this->render('guess'); - } - else - { - $params=array( - 'levels'=>$levels, - // if this is a POST request, it means the level is not chosen - 'error'=>Yii::app()->request->isPostRequest, - ); - // show the difficulty level page - $this->render('play',$params); - } - } - - /** - * The 'guess' action. - * This action is invoked each time when the user makes a guess. - */ - public function actionGuess() - { - // check to see if the letter is guessed correctly - if(isset($_GET['g'][0]) && ($result=$this->guess($_GET['g'][0]))!==null) - $this->render($result ? 'win' : 'lose'); - else // the letter is guessed correctly, but not win yet - { - $guessed=$this->getPageState('guessed',array()); - $guessed[$_GET['g'][0]]=true; - $this->setPageState('guessed',$guessed,array()); - $this->render('guess'); - } - } - - /** - * The 'guess' action. - * This action is invoked when the user gives up the game. - */ - public function actionGiveup() - { - $this->render('lose'); - } - - /** - * Checks to see if a letter is already guessed. - * @param string the letter - * @return boolean whether the letter is already guessed. - */ - public function isGuessed($letter) - { - $guessed=$this->getPageState('guessed',array()); - return isset($guessed[$letter]); - } - - /** - * Generates a word to be guessed. - * @return string the word to be guessed - */ - protected function generateWord() - { - $wordFile=dirname(__FILE__).'/words.txt'; - $words=preg_split("/[\s,]+/",file_get_contents($wordFile)); - do - { - $i=rand(0,count($words)-1); - $word=$words[$i]; - } while(strlen($word)<5 || !ctype_alpha($word)); - return strtoupper($word); - } - - /** - * Checks to see if a letter is guessed correctly. - * @param string the letter - * @return mixed true if the word is guessed correctly, false - * if the user has used up all guesses and the word is guessed - * incorrectly, and null if the letter is guessed correctly but - * the whole word is guessed correctly yet. - */ - protected function guess($letter) - { - $word=$this->word; - $guessWord=$this->guessWord; - $pos=0; - $success=false; - while(($pos=strpos($word,$letter,$pos))!==false) - { - $guessWord[$pos]=$letter; - $success=true; - $pos++; - } - if($success) - { - $this->guessWord=$guessWord; - if($guessWord===$word) - return true; - } - else - { - $this->misses++; - if($this->misses>=$this->level) - return false; - } - } - - /** - * @return integer the difficulty level. This value is persistent - * during the whole game session. - */ - public function getLevel() - { - return $this->getPageState('level'); - } - - /** - * @param integer the difficulty level. This value is persistent - * during the whole game session. - */ - public function setLevel($value) - { - $this->setPageState('level',$value); - } - - /** - * @return string the word to be guessed. This value is persistent - * during the whole game session. - */ - public function getWord() - { - return $this->getPageState('word'); - } - - /** - * @param string the word to be guessed. This value is persistent - * during the whole game session. - */ - public function setWord($value) - { - $this->setPageState('word',$value); - } - - /** - * @return string the word being guessed. This value is persistent - * during the whole game session. - */ - public function getGuessWord() - { - return $this->getPageState('guessWord'); - } - - /** - * @param string the word being guessed. This value is persistent - * during the whole game session. - */ - public function setGuessWord($value) - { - $this->setPageState('guessWord',$value); - } - - /** - * @return integer the number of misses. This value is persistent - * during the whole game session. - */ - public function getMisses() - { - return $this->getPageState('misses'); - } - - /** - * @param integer the number of misses. This value is persistent - * during the whole game session. - */ - public function setMisses($value) - { - $this->setPageState('misses',$value); - } -} \ No newline at end of file diff --git a/demos/hangman/protected/controllers/words.txt b/demos/hangman/protected/controllers/words.txt deleted file mode 100644 index 844c5f5..0000000 --- a/demos/hangman/protected/controllers/words.txt +++ /dev/null @@ -1,28 +0,0 @@ -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. diff --git a/demos/hangman/protected/runtime/empty b/demos/hangman/protected/runtime/empty deleted file mode 100644 index e69de29..0000000 diff --git a/demos/hangman/protected/views/game/guess.php b/demos/hangman/protected/views/game/guess.php deleted file mode 100644 index d6081e0..0000000 --- a/demos/hangman/protected/views/game/guess.php +++ /dev/null @@ -1,21 +0,0 @@ -

Please make a guess

- -

guessWord; ?>

- -

You have made misses; ?> bad guesses out of a maximum of level; ?>.

- - - -

Guess: -isGuessed(chr($i))) - echo "\n".CHtml::linkButton(chr($i),array('submit'=>array('guess','g'=>chr($i)))); -} -?> -

- -

array('giveup'))); ?>

- - diff --git a/demos/hangman/protected/views/game/lose.php b/demos/hangman/protected/views/game/lose.php deleted file mode 100644 index 6aae2ca..0000000 --- a/demos/hangman/protected/views/game/lose.php +++ /dev/null @@ -1,5 +0,0 @@ -

You Lose!

- -

The word was: word; ?>.

- -

diff --git a/demos/hangman/protected/views/game/play.php b/demos/hangman/protected/views/game/play.php deleted file mode 100644 index ff2ca4d..0000000 --- a/demos/hangman/protected/views/game/play.php +++ /dev/null @@ -1,15 +0,0 @@ -

This is the game of Hangman. You must guess a word, a letter at a time. -If you make too many mistakes, you lose the game!

- - - - - -
- - - -You must choose a difficulty level! - - - \ No newline at end of file diff --git a/demos/hangman/protected/views/game/win.php b/demos/hangman/protected/views/game/win.php deleted file mode 100644 index d94b86e..0000000 --- a/demos/hangman/protected/views/game/win.php +++ /dev/null @@ -1,5 +0,0 @@ -

You Win!

- -

The word was: word; ?>.

- -

diff --git a/demos/hangman/protected/views/layouts/main.php b/demos/hangman/protected/views/layouts/main.php deleted file mode 100644 index 8a8239c..0000000 --- a/demos/hangman/protected/views/layouts/main.php +++ /dev/null @@ -1,14 +0,0 @@ - - - - -Hangman Game - - - -

Hangman Game

- - - - - \ No newline at end of file diff --git a/demos/helloworld/index.php b/demos/helloworld/index.php deleted file mode 100644 index f1dadcc..0000000 --- a/demos/helloworld/index.php +++ /dev/null @@ -1,7 +0,0 @@ -run(); \ No newline at end of file diff --git a/demos/helloworld/protected/.htaccess b/demos/helloworld/protected/.htaccess deleted file mode 100644 index 8d2f256..0000000 --- a/demos/helloworld/protected/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all diff --git a/demos/helloworld/protected/controllers/SiteController.php b/demos/helloworld/protected/controllers/SiteController.php deleted file mode 100644 index be4a1cb..0000000 --- a/demos/helloworld/protected/controllers/SiteController.php +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demos/phonebook/flex/.flexProperties b/demos/phonebook/flex/.flexProperties deleted file mode 100644 index 3e11770..0000000 --- a/demos/phonebook/flex/.flexProperties +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/demos/phonebook/flex/.project b/demos/phonebook/flex/.project deleted file mode 100644 index 2181f72..0000000 --- a/demos/phonebook/flex/.project +++ /dev/null @@ -1,18 +0,0 @@ - - - phonebook - - - - - - com.adobe.flexbuilder.project.flexbuilder - - - - - - com.adobe.flexbuilder.project.flexnature - com.adobe.flexbuilder.project.actionscriptnature - - diff --git a/demos/phonebook/flex/.settings/com.adobe.flexbuilder.project.prefs b/demos/phonebook/flex/.settings/com.adobe.flexbuilder.project.prefs deleted file mode 100644 index 4348f48..0000000 --- a/demos/phonebook/flex/.settings/com.adobe.flexbuilder.project.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Wed Oct 08 08:18:30 EDT 2008 -eclipse.preferences.version=1 -upgradeSDK/fb3= diff --git a/demos/phonebook/flex/.settings/org.eclipse.core.resources.prefs b/demos/phonebook/flex/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 415feac..0000000 --- a/demos/phonebook/flex/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,3 +0,0 @@ -#Wed Oct 08 03:19:04 GMT 2008 -eclipse.preferences.version=1 -encoding/=utf-8 diff --git a/demos/phonebook/flex/bin/AC_OETags.js b/demos/phonebook/flex/bin/AC_OETags.js deleted file mode 100644 index e77e6fd..0000000 --- a/demos/phonebook/flex/bin/AC_OETags.js +++ /dev/null @@ -1,276 +0,0 @@ -// Flash Player Version Detection - Rev 1.6 -// Detect Client Browser type -// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. -var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; -var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; -var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; - -function ControlVersion() -{ - var version; - var axo; - var e; - - // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry - - try { - // version will be set for 7.X or greater players - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); - version = axo.GetVariable("$version"); - } catch (e) { - } - - if (!version) - { - try { - // version will be set for 6.X players only - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); - - // installed player is some revision of 6.0 - // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, - // so we have to be careful. - - // default to the first public version - version = "WIN 6,0,21,0"; - - // throws if AllowScripAccess does not exist (introduced in 6.0r47) - axo.AllowScriptAccess = "always"; - - // safe to call for 6.0r47 or greater - version = axo.GetVariable("$version"); - - } catch (e) { - } - } - - if (!version) - { - try { - // version will be set for 4.X or 5.X player - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); - version = axo.GetVariable("$version"); - } catch (e) { - } - } - - if (!version) - { - try { - // version will be set for 3.X player - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); - version = "WIN 3,0,18,0"; - } catch (e) { - } - } - - if (!version) - { - try { - // version will be set for 2.X player - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - version = "WIN 2,0,0,11"; - } catch (e) { - version = -1; - } - } - - return version; -} - -// JavaScript helper required to detect Flash Player PlugIn version information -function GetSwfVer(){ - // NS/Opera version >= 3 check for Flash plugin in plugin array - var flashVer = -1; - - if (navigator.plugins != null && navigator.plugins.length > 0) { - if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { - var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; - var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; - var descArray = flashDescription.split(" "); - var tempArrayMajor = descArray[2].split("."); - var versionMajor = tempArrayMajor[0]; - var versionMinor = tempArrayMajor[1]; - var versionRevision = descArray[3]; - if (versionRevision == "") { - versionRevision = descArray[4]; - } - if (versionRevision[0] == "d") { - versionRevision = versionRevision.substring(1); - } else if (versionRevision[0] == "r") { - versionRevision = versionRevision.substring(1); - if (versionRevision.indexOf("d") > 0) { - versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); - } - } - var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; - } - } - // MSN/WebTV 2.6 supports Flash 4 - else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; - // WebTV 2.5 supports Flash 3 - else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; - // older WebTV supports Flash 2 - else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; - else if ( isIE && isWin && !isOpera ) { - flashVer = ControlVersion(); - } - return flashVer; -} - -// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available -function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) -{ - versionStr = GetSwfVer(); - if (versionStr == -1 ) { - return false; - } else if (versionStr != 0) { - if(isIE && isWin && !isOpera) { - // Given "WIN 2,0,0,11" - tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] - tempString = tempArray[1]; // "2,0,0,11" - versionArray = tempString.split(","); // ['2', '0', '0', '11'] - } else { - versionArray = versionStr.split("."); - } - var versionMajor = versionArray[0]; - var versionMinor = versionArray[1]; - var versionRevision = versionArray[2]; - - // is the major.revision >= requested major.revision AND the minor version >= requested minor - if (versionMajor > parseFloat(reqMajorVer)) { - return true; - } else if (versionMajor == parseFloat(reqMajorVer)) { - if (versionMinor > parseFloat(reqMinorVer)) - return true; - else if (versionMinor == parseFloat(reqMinorVer)) { - if (versionRevision >= parseFloat(reqRevision)) - return true; - } - } - return false; - } -} - -function AC_AddExtension(src, ext) -{ - if (src.indexOf('?') != -1) - return src.replace(/\?/, ext+'?'); - else - return src + ext; -} - -function AC_Generateobj(objAttrs, params, embedAttrs) -{ - var str = ''; - if (isIE && isWin && !isOpera) - { - str += ' '; - str += ''; - } else { - str += '= 2 && hash.charAt(0) == "?") { - hash = hash.substring(1); - } - return hash; - } - - /* Get the current location hash excluding the '#' symbol. */ - function getHash() { - // It would be nice if we could use document.location.hash here, - // but it's faulty sometimes. - var idx = document.location.href.indexOf('#'); - return (idx >= 0) ? document.location.href.substr(idx+1) : ''; - } - - /* Get the current location hash excluding the '#' symbol. */ - function setHash(hash) { - // It would be nice if we could use document.location.hash here, - // but it's faulty sometimes. - if (hash == '') hash = '#' - document.location.hash = hash; - } - - function createState(baseUrl, newUrl, flexAppUrl) { - return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; - } - - /* Add a history entry to the browser. - * baseUrl: the portion of the location prior to the '#' - * newUrl: the entire new URL, including '#' and following fragment - * flexAppUrl: the portion of the location following the '#' only - */ - function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { - - //delete all the history entries - forwardStack = []; - - if (browser.ie) { - //Check to see if we are being asked to do a navigate for the first - //history entry, and if so ignore, because it's coming from the creation - //of the history iframe - if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { - currentHref = initialHref; - return; - } - if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { - newUrl = baseUrl + '#' + defaultHash; - flexAppUrl = defaultHash; - } else { - // for IE, tell the history frame to go somewhere without a '#' - // in order to get this entry into the browser history. - getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; - } - setHash(flexAppUrl); - } else { - - //ADR - if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { - initialState = createState(baseUrl, newUrl, flexAppUrl); - } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { - backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); - } - - if (browser.safari) { - // for Safari, submit a form whose action points to the desired URL - if (browser.version <= 419.3) { - var file = window.location.pathname.toString(); - file = file.substring(file.lastIndexOf("/")+1); - getFormElement().innerHTML = '
'; - //get the current elements and add them to the form - var qs = window.location.search.substring(1); - var qs_arr = qs.split("&"); - for (var i = 0; i < qs_arr.length; i++) { - var tmp = qs_arr[i].split("="); - var elem = document.createElement("input"); - elem.type = "hidden"; - elem.name = tmp[0]; - elem.value = tmp[1]; - document.forms.historyForm.appendChild(elem); - } - document.forms.historyForm.submit(); - } else { - top.location.hash = flexAppUrl; - } - // We also have to maintain the history by hand for Safari - historyHash[history.length] = flexAppUrl; - _storeStates(); - } else { - // Otherwise, write an anchor into the page and tell the browser to go there - addAnchor(flexAppUrl); - setHash(flexAppUrl); - } - } - backStack.push(createState(baseUrl, newUrl, flexAppUrl)); - } - - function _storeStates() { - if (browser.safari) { - getRememberElement().value = historyHash.join(","); - } - } - - function handleBackButton() { - //The "current" page is always at the top of the history stack. - var current = backStack.pop(); - if (!current) { return; } - var last = backStack[backStack.length - 1]; - if (!last && backStack.length == 0){ - last = initialState; - } - forwardStack.push(current); - } - - function handleForwardButton() { - //summary: private method. Do not call this directly. - - var last = forwardStack.pop(); - if (!last) { return; } - backStack.push(last); - } - - function handleArbitraryUrl() { - //delete all the history entries - forwardStack = []; - } - - /* Called periodically to poll to see if we need to detect navigation that has occurred */ - function checkForUrlChange() { - - if (browser.ie) { - if (currentHref != document.location.href && currentHref + '#' != document.location.href) { - //This occurs when the user has navigated to a specific URL - //within the app, and didn't use browser back/forward - //IE seems to have a bug where it stops updating the URL it - //shows the end-user at this point, but programatically it - //appears to be correct. Do a full app reload to get around - //this issue. - if (browser.version < 7) { - currentHref = document.location.href; - document.location.reload(); - } else { - if (getHash() != getIframeHash()) { - // this.iframe.src = this.blankURL + hash; - var sourceToSet = historyFrameSourcePrefix + getHash(); - getHistoryFrame().src = sourceToSet; - } - } - } - } - - if (browser.safari) { - // For Safari, we have to check to see if history.length changed. - if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { - //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); - // If it did change, then we have to look the old state up - // in our hand-maintained array since document.location.hash - // won't have changed, then call back into BrowserManager. - currentHistoryLength = history.length; - var flexAppUrl = historyHash[currentHistoryLength]; - if (flexAppUrl == '') { - //flexAppUrl = defaultHash; - } - //ADR: to fix multiple - if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { - var pl = getPlayers(); - for (var i = 0; i < pl.length; i++) { - pl[i].browserURLChange(flexAppUrl); - } - } else { - getPlayer().browserURLChange(flexAppUrl); - } - _storeStates(); - } - } - if (browser.firefox) { - if (currentHref != document.location.href) { - var bsl = backStack.length; - - var urlActions = { - back: false, - forward: false, - set: false - } - - if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { - urlActions.back = true; - // FIXME: could this ever be a forward button? - // we can't clear it because we still need to check for forwards. Ugg. - // clearInterval(this.locationTimer); - handleBackButton(); - } - - // first check to see if we could have gone forward. We always halt on - // a no-hash item. - if (forwardStack.length > 0) { - if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { - urlActions.forward = true; - handleForwardButton(); - } - } - - // ok, that didn't work, try someplace back in the history stack - if ((bsl >= 2) && (backStack[bsl - 2])) { - if (backStack[bsl - 2].flexAppUrl == getHash()) { - urlActions.back = true; - handleBackButton(); - } - } - - if (!urlActions.back && !urlActions.forward) { - var foundInStacks = { - back: -1, - forward: -1 - } - - for (var i = 0; i < backStack.length; i++) { - if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { - arbitraryUrl = true; - foundInStacks.back = i; - } - } - for (var i = 0; i < forwardStack.length; i++) { - if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { - arbitraryUrl = true; - foundInStacks.forward = i; - } - } - handleArbitraryUrl(); - } - - // Firefox changed; do a callback into BrowserManager to tell it. - currentHref = document.location.href; - var flexAppUrl = getHash(); - if (flexAppUrl == '') { - //flexAppUrl = defaultHash; - } - //ADR: to fix multiple - if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { - var pl = getPlayers(); - for (var i = 0; i < pl.length; i++) { - pl[i].browserURLChange(flexAppUrl); - } - } else { - getPlayer().browserURLChange(flexAppUrl); - } - } - } - //setTimeout(checkForUrlChange, 50); - } - - /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ - function addAnchor(flexAppUrl) - { - if (document.getElementsByName(flexAppUrl).length == 0) { - getAnchorElement().innerHTML += "" + flexAppUrl + ""; - } - } - - var _initialize = function () { - if (browser.ie) - { - var scripts = document.getElementsByTagName('script'); - for (var i = 0, s; s = scripts[i]; i++) { - if (s.src.indexOf("history.js") > -1) { - var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); - } - } - historyFrameSourcePrefix = iframe_location + "?"; - var src = historyFrameSourcePrefix; - - var iframe = document.createElement("iframe"); - iframe.id = 'ie_historyFrame'; - iframe.name = 'ie_historyFrame'; - //iframe.src = historyFrameSourcePrefix; - try { - document.body.appendChild(iframe); - } catch(e) { - setTimeout(function() { - document.body.appendChild(iframe); - }, 0); - } - } - - if (browser.safari) - { - var rememberDiv = document.createElement("div"); - rememberDiv.id = 'safari_rememberDiv'; - document.body.appendChild(rememberDiv); - rememberDiv.innerHTML = ''; - - var formDiv = document.createElement("div"); - formDiv.id = 'safari_formDiv'; - document.body.appendChild(formDiv); - - var reloader_content = document.createElement('div'); - reloader_content.id = 'safarireloader'; - var scripts = document.getElementsByTagName('script'); - for (var i = 0, s; s = scripts[i]; i++) { - if (s.src.indexOf("history.js") > -1) { - html = (new String(s.src)).replace(".js", ".html"); - } - } - reloader_content.innerHTML = ''; - document.body.appendChild(reloader_content); - reloader_content.style.position = 'absolute'; - reloader_content.style.left = reloader_content.style.top = '-9999px'; - iframe = reloader_content.getElementsByTagName('iframe')[0]; - - if (document.getElementById("safari_remember_field").value != "" ) { - historyHash = document.getElementById("safari_remember_field").value.split(","); - } - - } - - if (browser.firefox) - { - var anchorDiv = document.createElement("div"); - anchorDiv.id = 'firefox_anchorDiv'; - document.body.appendChild(anchorDiv); - } - - //setTimeout(checkForUrlChange, 50); - } - - return { - historyHash: historyHash, - backStack: function() { return backStack; }, - forwardStack: function() { return forwardStack }, - getPlayer: getPlayer, - initialize: function(src) { - _initialize(src); - }, - setURL: function(url) { - document.location.href = url; - }, - getURL: function() { - return document.location.href; - }, - getTitle: function() { - return document.title; - }, - setTitle: function(title) { - try { - backStack[backStack.length - 1].title = title; - } catch(e) { } - //if on safari, set the title to be the empty string. - if (browser.safari) { - if (title == "") { - try { - var tmp = window.location.href.toString(); - title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); - } catch(e) { - title = ""; - } - } - } - document.title = title; - }, - setDefaultURL: function(def) - { - defaultHash = def; - def = getHash(); - //trailing ? is important else an extra frame gets added to the history - //when navigating back to the first page. Alternatively could check - //in history frame navigation to compare # and ?. - if (browser.ie) - { - window['_ie_firstload'] = true; - var sourceToSet = historyFrameSourcePrefix + def; - var func = function() { - getHistoryFrame().src = sourceToSet; - window.location.replace("#" + def); - setInterval(checkForUrlChange, 50); - } - try { - func(); - } catch(e) { - window.setTimeout(function() { func(); }, 0); - } - } - - if (browser.safari) - { - currentHistoryLength = history.length; - if (historyHash.length == 0) { - historyHash[currentHistoryLength] = def; - var newloc = "#" + def; - window.location.replace(newloc); - } else { - //alert(historyHash[historyHash.length-1]); - } - //setHash(def); - setInterval(checkForUrlChange, 50); - } - - - if (browser.firefox || browser.opera) - { - var reg = new RegExp("#" + def + "$"); - if (window.location.toString().match(reg)) { - } else { - var newloc ="#" + def; - window.location.replace(newloc); - } - setInterval(checkForUrlChange, 50); - //setHash(def); - } - - }, - - /* Set the current browser URL; called from inside BrowserManager to propagate - * the application state out to the container. - */ - setBrowserURL: function(flexAppUrl, objectId) { - if (browser.ie && typeof objectId != "undefined") { - currentObjectId = objectId; - } - //fromIframe = fromIframe || false; - //fromFlex = fromFlex || false; - //alert("setBrowserURL: " + flexAppUrl); - //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; - - var pos = document.location.href.indexOf('#'); - var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; - var newUrl = baseUrl + '#' + flexAppUrl; - - if (document.location.href != newUrl && document.location.href + '#' != newUrl) { - currentHref = newUrl; - addHistoryEntry(baseUrl, newUrl, flexAppUrl); - currentHistoryLength = history.length; - } - - return false; - }, - - browserURLChange: function(flexAppUrl) { - var objectId = null; - if (browser.ie && currentObjectId != null) { - objectId = currentObjectId; - } - pendingURL = ''; - - if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { - var pl = getPlayers(); - for (var i = 0; i < pl.length; i++) { - try { - pl[i].browserURLChange(flexAppUrl); - } catch(e) { } - } - } else { - try { - getPlayer(objectId).browserURLChange(flexAppUrl); - } catch(e) { } - } - - currentObjectId = null; - } - - } - -})(); - -// Initialization - -// Automated unit testing and other diagnostics - -function setURL(url) -{ - document.location.href = url; -} - -function backButton() -{ - history.back(); -} - -function forwardButton() -{ - history.forward(); -} - -function goForwardOrBackInHistory(step) -{ - history.go(step); -} - -//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); -(function(i) { - var u =navigator.userAgent;var e=/*@cc_on!@*/false; - var st = setTimeout; - if(/webkit/i.test(u)){ - st(function(){ - var dr=document.readyState; - if(dr=="loaded"||dr=="complete"){i()} - else{st(arguments.callee,10);}},10); - } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ - document.addEventListener("DOMContentLoaded",i,false); - } else if(e){ - (function(){ - var t=document.createElement('doc:rdy'); - try{t.doScroll('left'); - i();t=null; - }catch(e){st(arguments.callee,0);}})(); - } else{ - window.onload=i; - } -})( function() {BrowserHistory.initialize();} ); diff --git a/demos/phonebook/flex/bin/history/historyFrame.html b/demos/phonebook/flex/bin/history/historyFrame.html deleted file mode 100644 index e83255f..0000000 --- a/demos/phonebook/flex/bin/history/historyFrame.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - Hidden frame for Browser History support. - - diff --git a/demos/phonebook/flex/bin/phonebook.html b/demos/phonebook/flex/bin/phonebook.html deleted file mode 100644 index 82bc03d..0000000 --- a/demos/phonebook/flex/bin/phonebook.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demos/phonebook/flex/bin/phonebook.swf b/demos/phonebook/flex/bin/phonebook.swf deleted file mode 100644 index 42f9c8f..0000000 Binary files a/demos/phonebook/flex/bin/phonebook.swf and /dev/null differ diff --git a/demos/phonebook/flex/bin/playerProductInstall.swf b/demos/phonebook/flex/bin/playerProductInstall.swf deleted file mode 100644 index bdc3437..0000000 Binary files a/demos/phonebook/flex/bin/playerProductInstall.swf and /dev/null differ diff --git a/demos/phonebook/flex/html-template/AC_OETags.js b/demos/phonebook/flex/html-template/AC_OETags.js deleted file mode 100644 index e77e6fd..0000000 --- a/demos/phonebook/flex/html-template/AC_OETags.js +++ /dev/null @@ -1,276 +0,0 @@ -// Flash Player Version Detection - Rev 1.6 -// Detect Client Browser type -// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. -var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; -var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; -var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; - -function ControlVersion() -{ - var version; - var axo; - var e; - - // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry - - try { - // version will be set for 7.X or greater players - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); - version = axo.GetVariable("$version"); - } catch (e) { - } - - if (!version) - { - try { - // version will be set for 6.X players only - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); - - // installed player is some revision of 6.0 - // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, - // so we have to be careful. - - // default to the first public version - version = "WIN 6,0,21,0"; - - // throws if AllowScripAccess does not exist (introduced in 6.0r47) - axo.AllowScriptAccess = "always"; - - // safe to call for 6.0r47 or greater - version = axo.GetVariable("$version"); - - } catch (e) { - } - } - - if (!version) - { - try { - // version will be set for 4.X or 5.X player - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); - version = axo.GetVariable("$version"); - } catch (e) { - } - } - - if (!version) - { - try { - // version will be set for 3.X player - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); - version = "WIN 3,0,18,0"; - } catch (e) { - } - } - - if (!version) - { - try { - // version will be set for 2.X player - axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - version = "WIN 2,0,0,11"; - } catch (e) { - version = -1; - } - } - - return version; -} - -// JavaScript helper required to detect Flash Player PlugIn version information -function GetSwfVer(){ - // NS/Opera version >= 3 check for Flash plugin in plugin array - var flashVer = -1; - - if (navigator.plugins != null && navigator.plugins.length > 0) { - if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { - var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; - var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; - var descArray = flashDescription.split(" "); - var tempArrayMajor = descArray[2].split("."); - var versionMajor = tempArrayMajor[0]; - var versionMinor = tempArrayMajor[1]; - var versionRevision = descArray[3]; - if (versionRevision == "") { - versionRevision = descArray[4]; - } - if (versionRevision[0] == "d") { - versionRevision = versionRevision.substring(1); - } else if (versionRevision[0] == "r") { - versionRevision = versionRevision.substring(1); - if (versionRevision.indexOf("d") > 0) { - versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); - } - } - var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; - } - } - // MSN/WebTV 2.6 supports Flash 4 - else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; - // WebTV 2.5 supports Flash 3 - else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; - // older WebTV supports Flash 2 - else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; - else if ( isIE && isWin && !isOpera ) { - flashVer = ControlVersion(); - } - return flashVer; -} - -// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available -function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) -{ - versionStr = GetSwfVer(); - if (versionStr == -1 ) { - return false; - } else if (versionStr != 0) { - if(isIE && isWin && !isOpera) { - // Given "WIN 2,0,0,11" - tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] - tempString = tempArray[1]; // "2,0,0,11" - versionArray = tempString.split(","); // ['2', '0', '0', '11'] - } else { - versionArray = versionStr.split("."); - } - var versionMajor = versionArray[0]; - var versionMinor = versionArray[1]; - var versionRevision = versionArray[2]; - - // is the major.revision >= requested major.revision AND the minor version >= requested minor - if (versionMajor > parseFloat(reqMajorVer)) { - return true; - } else if (versionMajor == parseFloat(reqMajorVer)) { - if (versionMinor > parseFloat(reqMinorVer)) - return true; - else if (versionMinor == parseFloat(reqMinorVer)) { - if (versionRevision >= parseFloat(reqRevision)) - return true; - } - } - return false; - } -} - -function AC_AddExtension(src, ext) -{ - if (src.indexOf('?') != -1) - return src.replace(/\?/, ext+'?'); - else - return src + ext; -} - -function AC_Generateobj(objAttrs, params, embedAttrs) -{ - var str = ''; - if (isIE && isWin && !isOpera) - { - str += ' '; - str += ''; - } else { - str += '= 2 && hash.charAt(0) == "?") { - hash = hash.substring(1); - } - return hash; - } - - /* Get the current location hash excluding the '#' symbol. */ - function getHash() { - // It would be nice if we could use document.location.hash here, - // but it's faulty sometimes. - var idx = document.location.href.indexOf('#'); - return (idx >= 0) ? document.location.href.substr(idx+1) : ''; - } - - /* Get the current location hash excluding the '#' symbol. */ - function setHash(hash) { - // It would be nice if we could use document.location.hash here, - // but it's faulty sometimes. - if (hash == '') hash = '#' - document.location.hash = hash; - } - - function createState(baseUrl, newUrl, flexAppUrl) { - return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; - } - - /* Add a history entry to the browser. - * baseUrl: the portion of the location prior to the '#' - * newUrl: the entire new URL, including '#' and following fragment - * flexAppUrl: the portion of the location following the '#' only - */ - function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { - - //delete all the history entries - forwardStack = []; - - if (browser.ie) { - //Check to see if we are being asked to do a navigate for the first - //history entry, and if so ignore, because it's coming from the creation - //of the history iframe - if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { - currentHref = initialHref; - return; - } - if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { - newUrl = baseUrl + '#' + defaultHash; - flexAppUrl = defaultHash; - } else { - // for IE, tell the history frame to go somewhere without a '#' - // in order to get this entry into the browser history. - getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; - } - setHash(flexAppUrl); - } else { - - //ADR - if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { - initialState = createState(baseUrl, newUrl, flexAppUrl); - } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { - backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); - } - - if (browser.safari) { - // for Safari, submit a form whose action points to the desired URL - if (browser.version <= 419.3) { - var file = window.location.pathname.toString(); - file = file.substring(file.lastIndexOf("/")+1); - getFormElement().innerHTML = '
'; - //get the current elements and add them to the form - var qs = window.location.search.substring(1); - var qs_arr = qs.split("&"); - for (var i = 0; i < qs_arr.length; i++) { - var tmp = qs_arr[i].split("="); - var elem = document.createElement("input"); - elem.type = "hidden"; - elem.name = tmp[0]; - elem.value = tmp[1]; - document.forms.historyForm.appendChild(elem); - } - document.forms.historyForm.submit(); - } else { - top.location.hash = flexAppUrl; - } - // We also have to maintain the history by hand for Safari - historyHash[history.length] = flexAppUrl; - _storeStates(); - } else { - // Otherwise, write an anchor into the page and tell the browser to go there - addAnchor(flexAppUrl); - setHash(flexAppUrl); - } - } - backStack.push(createState(baseUrl, newUrl, flexAppUrl)); - } - - function _storeStates() { - if (browser.safari) { - getRememberElement().value = historyHash.join(","); - } - } - - function handleBackButton() { - //The "current" page is always at the top of the history stack. - var current = backStack.pop(); - if (!current) { return; } - var last = backStack[backStack.length - 1]; - if (!last && backStack.length == 0){ - last = initialState; - } - forwardStack.push(current); - } - - function handleForwardButton() { - //summary: private method. Do not call this directly. - - var last = forwardStack.pop(); - if (!last) { return; } - backStack.push(last); - } - - function handleArbitraryUrl() { - //delete all the history entries - forwardStack = []; - } - - /* Called periodically to poll to see if we need to detect navigation that has occurred */ - function checkForUrlChange() { - - if (browser.ie) { - if (currentHref != document.location.href && currentHref + '#' != document.location.href) { - //This occurs when the user has navigated to a specific URL - //within the app, and didn't use browser back/forward - //IE seems to have a bug where it stops updating the URL it - //shows the end-user at this point, but programatically it - //appears to be correct. Do a full app reload to get around - //this issue. - if (browser.version < 7) { - currentHref = document.location.href; - document.location.reload(); - } else { - if (getHash() != getIframeHash()) { - // this.iframe.src = this.blankURL + hash; - var sourceToSet = historyFrameSourcePrefix + getHash(); - getHistoryFrame().src = sourceToSet; - } - } - } - } - - if (browser.safari) { - // For Safari, we have to check to see if history.length changed. - if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { - //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); - // If it did change, then we have to look the old state up - // in our hand-maintained array since document.location.hash - // won't have changed, then call back into BrowserManager. - currentHistoryLength = history.length; - var flexAppUrl = historyHash[currentHistoryLength]; - if (flexAppUrl == '') { - //flexAppUrl = defaultHash; - } - //ADR: to fix multiple - if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { - var pl = getPlayers(); - for (var i = 0; i < pl.length; i++) { - pl[i].browserURLChange(flexAppUrl); - } - } else { - getPlayer().browserURLChange(flexAppUrl); - } - _storeStates(); - } - } - if (browser.firefox) { - if (currentHref != document.location.href) { - var bsl = backStack.length; - - var urlActions = { - back: false, - forward: false, - set: false - } - - if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { - urlActions.back = true; - // FIXME: could this ever be a forward button? - // we can't clear it because we still need to check for forwards. Ugg. - // clearInterval(this.locationTimer); - handleBackButton(); - } - - // first check to see if we could have gone forward. We always halt on - // a no-hash item. - if (forwardStack.length > 0) { - if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { - urlActions.forward = true; - handleForwardButton(); - } - } - - // ok, that didn't work, try someplace back in the history stack - if ((bsl >= 2) && (backStack[bsl - 2])) { - if (backStack[bsl - 2].flexAppUrl == getHash()) { - urlActions.back = true; - handleBackButton(); - } - } - - if (!urlActions.back && !urlActions.forward) { - var foundInStacks = { - back: -1, - forward: -1 - } - - for (var i = 0; i < backStack.length; i++) { - if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { - arbitraryUrl = true; - foundInStacks.back = i; - } - } - for (var i = 0; i < forwardStack.length; i++) { - if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { - arbitraryUrl = true; - foundInStacks.forward = i; - } - } - handleArbitraryUrl(); - } - - // Firefox changed; do a callback into BrowserManager to tell it. - currentHref = document.location.href; - var flexAppUrl = getHash(); - if (flexAppUrl == '') { - //flexAppUrl = defaultHash; - } - //ADR: to fix multiple - if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { - var pl = getPlayers(); - for (var i = 0; i < pl.length; i++) { - pl[i].browserURLChange(flexAppUrl); - } - } else { - getPlayer().browserURLChange(flexAppUrl); - } - } - } - //setTimeout(checkForUrlChange, 50); - } - - /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ - function addAnchor(flexAppUrl) - { - if (document.getElementsByName(flexAppUrl).length == 0) { - getAnchorElement().innerHTML += "" + flexAppUrl + ""; - } - } - - var _initialize = function () { - if (browser.ie) - { - var scripts = document.getElementsByTagName('script'); - for (var i = 0, s; s = scripts[i]; i++) { - if (s.src.indexOf("history.js") > -1) { - var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); - } - } - historyFrameSourcePrefix = iframe_location + "?"; - var src = historyFrameSourcePrefix; - - var iframe = document.createElement("iframe"); - iframe.id = 'ie_historyFrame'; - iframe.name = 'ie_historyFrame'; - //iframe.src = historyFrameSourcePrefix; - try { - document.body.appendChild(iframe); - } catch(e) { - setTimeout(function() { - document.body.appendChild(iframe); - }, 0); - } - } - - if (browser.safari) - { - var rememberDiv = document.createElement("div"); - rememberDiv.id = 'safari_rememberDiv'; - document.body.appendChild(rememberDiv); - rememberDiv.innerHTML = ''; - - var formDiv = document.createElement("div"); - formDiv.id = 'safari_formDiv'; - document.body.appendChild(formDiv); - - var reloader_content = document.createElement('div'); - reloader_content.id = 'safarireloader'; - var scripts = document.getElementsByTagName('script'); - for (var i = 0, s; s = scripts[i]; i++) { - if (s.src.indexOf("history.js") > -1) { - html = (new String(s.src)).replace(".js", ".html"); - } - } - reloader_content.innerHTML = ''; - document.body.appendChild(reloader_content); - reloader_content.style.position = 'absolute'; - reloader_content.style.left = reloader_content.style.top = '-9999px'; - iframe = reloader_content.getElementsByTagName('iframe')[0]; - - if (document.getElementById("safari_remember_field").value != "" ) { - historyHash = document.getElementById("safari_remember_field").value.split(","); - } - - } - - if (browser.firefox) - { - var anchorDiv = document.createElement("div"); - anchorDiv.id = 'firefox_anchorDiv'; - document.body.appendChild(anchorDiv); - } - - //setTimeout(checkForUrlChange, 50); - } - - return { - historyHash: historyHash, - backStack: function() { return backStack; }, - forwardStack: function() { return forwardStack }, - getPlayer: getPlayer, - initialize: function(src) { - _initialize(src); - }, - setURL: function(url) { - document.location.href = url; - }, - getURL: function() { - return document.location.href; - }, - getTitle: function() { - return document.title; - }, - setTitle: function(title) { - try { - backStack[backStack.length - 1].title = title; - } catch(e) { } - //if on safari, set the title to be the empty string. - if (browser.safari) { - if (title == "") { - try { - var tmp = window.location.href.toString(); - title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); - } catch(e) { - title = ""; - } - } - } - document.title = title; - }, - setDefaultURL: function(def) - { - defaultHash = def; - def = getHash(); - //trailing ? is important else an extra frame gets added to the history - //when navigating back to the first page. Alternatively could check - //in history frame navigation to compare # and ?. - if (browser.ie) - { - window['_ie_firstload'] = true; - var sourceToSet = historyFrameSourcePrefix + def; - var func = function() { - getHistoryFrame().src = sourceToSet; - window.location.replace("#" + def); - setInterval(checkForUrlChange, 50); - } - try { - func(); - } catch(e) { - window.setTimeout(function() { func(); }, 0); - } - } - - if (browser.safari) - { - currentHistoryLength = history.length; - if (historyHash.length == 0) { - historyHash[currentHistoryLength] = def; - var newloc = "#" + def; - window.location.replace(newloc); - } else { - //alert(historyHash[historyHash.length-1]); - } - //setHash(def); - setInterval(checkForUrlChange, 50); - } - - - if (browser.firefox || browser.opera) - { - var reg = new RegExp("#" + def + "$"); - if (window.location.toString().match(reg)) { - } else { - var newloc ="#" + def; - window.location.replace(newloc); - } - setInterval(checkForUrlChange, 50); - //setHash(def); - } - - }, - - /* Set the current browser URL; called from inside BrowserManager to propagate - * the application state out to the container. - */ - setBrowserURL: function(flexAppUrl, objectId) { - if (browser.ie && typeof objectId != "undefined") { - currentObjectId = objectId; - } - //fromIframe = fromIframe || false; - //fromFlex = fromFlex || false; - //alert("setBrowserURL: " + flexAppUrl); - //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; - - var pos = document.location.href.indexOf('#'); - var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; - var newUrl = baseUrl + '#' + flexAppUrl; - - if (document.location.href != newUrl && document.location.href + '#' != newUrl) { - currentHref = newUrl; - addHistoryEntry(baseUrl, newUrl, flexAppUrl); - currentHistoryLength = history.length; - } - - return false; - }, - - browserURLChange: function(flexAppUrl) { - var objectId = null; - if (browser.ie && currentObjectId != null) { - objectId = currentObjectId; - } - pendingURL = ''; - - if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { - var pl = getPlayers(); - for (var i = 0; i < pl.length; i++) { - try { - pl[i].browserURLChange(flexAppUrl); - } catch(e) { } - } - } else { - try { - getPlayer(objectId).browserURLChange(flexAppUrl); - } catch(e) { } - } - - currentObjectId = null; - } - - } - -})(); - -// Initialization - -// Automated unit testing and other diagnostics - -function setURL(url) -{ - document.location.href = url; -} - -function backButton() -{ - history.back(); -} - -function forwardButton() -{ - history.forward(); -} - -function goForwardOrBackInHistory(step) -{ - history.go(step); -} - -//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); -(function(i) { - var u =navigator.userAgent;var e=/*@cc_on!@*/false; - var st = setTimeout; - if(/webkit/i.test(u)){ - st(function(){ - var dr=document.readyState; - if(dr=="loaded"||dr=="complete"){i()} - else{st(arguments.callee,10);}},10); - } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ - document.addEventListener("DOMContentLoaded",i,false); - } else if(e){ - (function(){ - var t=document.createElement('doc:rdy'); - try{t.doScroll('left'); - i();t=null; - }catch(e){st(arguments.callee,0);}})(); - } else{ - window.onload=i; - } -})( function() {BrowserHistory.initialize();} ); diff --git a/demos/phonebook/flex/html-template/history/historyFrame.html b/demos/phonebook/flex/html-template/history/historyFrame.html deleted file mode 100644 index e83255f..0000000 --- a/demos/phonebook/flex/html-template/history/historyFrame.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - Hidden frame for Browser History support. - - diff --git a/demos/phonebook/flex/html-template/index.template.html b/demos/phonebook/flex/html-template/index.template.html deleted file mode 100644 index 20ee809..0000000 --- a/demos/phonebook/flex/html-template/index.template.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - -${title} - - - - - - - - - - - - - - - diff --git a/demos/phonebook/flex/html-template/playerProductInstall.swf b/demos/phonebook/flex/html-template/playerProductInstall.swf deleted file mode 100644 index bdc3437..0000000 Binary files a/demos/phonebook/flex/html-template/playerProductInstall.swf and /dev/null differ diff --git a/demos/phonebook/flex/phonebook.mxml b/demos/phonebook/flex/phonebook.mxml deleted file mode 100644 index c8875f8..0000000 --- a/demos/phonebook/flex/phonebook.mxml +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/demos/phonebook/index.php b/demos/phonebook/index.php deleted file mode 100644 index dc5aea2..0000000 --- a/demos/phonebook/index.php +++ /dev/null @@ -1,11 +0,0 @@ -run(); diff --git a/demos/phonebook/protected/.htaccess b/demos/phonebook/protected/.htaccess deleted file mode 100644 index 8d2f256..0000000 --- a/demos/phonebook/protected/.htaccess +++ /dev/null @@ -1 +0,0 @@ -deny from all diff --git a/demos/phonebook/protected/components/UserIdentity.php b/demos/phonebook/protected/components/UserIdentity.php deleted file mode 100644 index 8450091..0000000 --- a/demos/phonebook/protected/components/UserIdentity.php +++ /dev/null @@ -1,27 +0,0 @@ -username==='demo' && $this->password==='demo') - $this->errorCode=self::ERROR_NONE; - else - $this->errorCode=self::ERROR_PASSWORD_INVALID; - return !$this->errorCode; - } -} \ No newline at end of file diff --git a/demos/phonebook/protected/config/main.php b/demos/phonebook/protected/config/main.php deleted file mode 100644 index 9177b47..0000000 --- a/demos/phonebook/protected/config/main.php +++ /dev/null @@ -1,21 +0,0 @@ -dirname(__FILE__).DIRECTORY_SEPARATOR.'..', - 'name'=>'Yii Framework: Phone Book Demo', - - // autoloading model and component classes - 'import'=>array( - 'application.models.*', - 'application.components.*', - ), - - // application components - 'components'=>array( - 'db'=>array( - 'connectionString'=>'sqlite:protected/data/phonebook.db', - ), - ), -); \ No newline at end of file diff --git a/demos/phonebook/protected/controllers/SiteController.php b/demos/phonebook/protected/controllers/SiteController.php deleted file mode 100644 index 5fc6fdc..0000000 --- a/demos/phonebook/protected/controllers/SiteController.php +++ /dev/null @@ -1,143 +0,0 @@ -array( - 'class'=>'CWebServiceAction', - 'classMap'=>array( - 'Contact', - ), - ), - ); - } - - /** - * This is the default action that displays the phonebook Flex client. - */ - public function actionIndex() - { - $this->render('index'); - } - - /** - * This action serves as a SOAP client to test the phonebook Web service. - */ - public function actionTest() - { - $wsdlUrl=Yii::app()->request->hostInfo.$this->createUrl('phonebook'); - $client=new SoapClient($wsdlUrl); - echo "
";
-		echo "login...\n";
-		$client->login('demo','demo');
-		echo "fetching all contacts\n";
-		print_r($client->getContacts());
-		echo "\ninserting a new contact...";
-		$contact=new Contact;
-		$contact->name='Tester Name';
-		$contact->phone='123-123-1234';
-		$client->saveContact($contact);
-		echo "done\n\n";
-		echo "fetching all contacts\n";
-		print_r($client->getContacts());
-		echo "
"; - } - - /** - * This method is required by IWebServiceProvider. - * It makes sure the user is logged in before making changes to data. - * @param CWebService the currently requested Web service. - * @return boolean whether the remote method should be executed. - */ - public function beforeWebMethod($service) - { - $safeMethods=array( - 'login', - 'getContacts', - ); - $pattern='/^('.implode('|',$safeMethods).')$/i'; - if(!Yii::app()->user->isGuest || preg_match($pattern,$service->methodName)) - return true; - else - throw new CException('Login required.'); - } - - /** - * This method is required by IWebServiceProvider. - * @param CWebService the currently requested Web service. - */ - public function afterWebMethod($service) - { - } - - /*** The following methods are Web service APIs ***/ - - /** - * @param string username - * @param string password - * @return boolean whether login is valid - * @soap - */ - public function login($username,$password) - { - $identity=new UserIdentity($username,$password); - if($identity->authenticate()) - Yii::app()->user->login($identity); - return $identity->isAuthenticated; - } - - /** - * Returns all contact records. - * @return Contact[] the contact records - * @soap - */ - public function getContacts() - { - return Contact::model()->findAll(); - } - - /** - * Updates or inserts a contact. - * If the ID is null, an insertion will be performed; - * Otherwise it updates the existing one. - * @param Contact contact model - * @return boolean whether saving is successful - * @soap - */ - public function saveContact($contact) - { - if($contact->id > 0) // update - { - $contact->isNewRecord=false; - if(($oldContact=Contact::model()->findByPk($contact->id))!==null) - { - $oldContact->attributes=$contact->attributes; - return $oldContact->save(); - } - else - return false; - } - else // insert - { - $contact->isNewRecord=true; - $contact->id=null; - return $contact->save(); - } - } - - /** - * Deletes the specified contact record. - * @param integer ID of the contact to be deleted - * @return integer number of records deleted - * @soap - */ - public function deleteContact($id) - { - return Contact::model()->deleteByPk($id); - } -} \ No newline at end of file diff --git a/demos/phonebook/protected/data/phonebook.db b/demos/phonebook/protected/data/phonebook.db deleted file mode 100644 index 5a4ad32..0000000 Binary files a/demos/phonebook/protected/data/phonebook.db and /dev/null differ diff --git a/demos/phonebook/protected/data/schema.sql b/demos/phonebook/protected/data/schema.sql deleted file mode 100644 index 3202f9b..0000000 --- a/demos/phonebook/protected/data/schema.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE Contact -( - id INTEGER NOT NULL PRIMARY KEY, - name VARCHAR(128) NOT NULL, - phone VARCHAR(64) NOT NULL -); \ No newline at end of file diff --git a/demos/phonebook/protected/models/Contact.php b/demos/phonebook/protected/models/Contact.php deleted file mode 100644 index 17007ae..0000000 --- a/demos/phonebook/protected/models/Contact.php +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -<?php echo $this->pageTitle; ?> - - - -

Phone Book Demo

-

-This demo shows how to use Yii to implement a Web service used by an Adobe Flex 3.0 client. -

- -

-In order to see this demo, the PHP SOAP extension must be enabled and your browser should have -installed Adobe Flash Player version 9 or above. -

- -
- -
- -
- -widget('CFlexWidget',array( - 'baseUrl'=>Yii::app()->baseUrl.'/flex/bin', - 'name'=>'phonebook', - 'width'=>'800', - 'height'=>'300', - 'align'=>'left', - 'flashVars'=>array( - 'wsdl'=>$this->createUrl('phonebook'), - ))); ?> - -Sorry, the PHP SOAP extension is not enabled on your Web server. - -
- - - - - \ No newline at end of file