From 0f3a577bed4d828472469675e90fcab032e33f44 Mon Sep 17 00:00:00 2001 From: xue <> Date: Fri, 2 Jun 2006 18:27:02 +0000 Subject: merge from 3.0 branch till 1133. --- demos/blog/protected/Pages/Admin/ConfigMan.page | 2 + demos/blog/protected/Pages/Admin/PostMan.page | 2 + demos/blog/protected/Pages/Admin/UserMan.page | 2 + demos/blog/protected/Pages/Posts/MyPost.page | 4 +- demos/blog/themes/Fall/style.css | 5 + demos/blog/themes/Spring/style.css | 5 + demos/blog/themes/Summer/style.css | 5 + demos/blog/themes/Winter/style.css | 5 + demos/quickstart/protected/application.xml | 1 + .../quickstart/protected/comments/CommentList.php | 59 +++++++ .../quickstart/protected/comments/CommentList.tpl | 102 ++++++++++++ .../protected/comments/QuickStartComments.php | 175 +++++++++++++++++++++ demos/quickstart/protected/comments/comments.db | Bin 0 -> 6144 bytes demos/quickstart/protected/controls/Layout.tpl | 1 + .../quickstart/protected/pages/Advanced/I18N.page | 6 +- demos/quickstart/protected/pages/Comments.page | 46 ++++++ demos/quickstart/protected/pages/Comments.php | 76 +++++++++ demos/quickstart/themes/PradoSoft/style.css | 138 ++++++++++++++++ 18 files changed, 631 insertions(+), 3 deletions(-) create mode 100644 demos/quickstart/protected/comments/CommentList.php create mode 100644 demos/quickstart/protected/comments/CommentList.tpl create mode 100644 demos/quickstart/protected/comments/QuickStartComments.php create mode 100644 demos/quickstart/protected/comments/comments.db create mode 100644 demos/quickstart/protected/pages/Comments.page create mode 100644 demos/quickstart/protected/pages/Comments.php (limited to 'demos') diff --git a/demos/blog/protected/Pages/Admin/ConfigMan.page b/demos/blog/protected/Pages/Admin/ConfigMan.page index 5c6cd53d..b959551e 100644 --- a/demos/blog/protected/Pages/Admin/ConfigMan.page +++ b/demos/blog/protected/Pages/Admin/ConfigMan.page @@ -1,3 +1,5 @@ +<%@ Title="System Configuration" %> +

Administration Center

diff --git a/demos/blog/protected/Pages/Admin/PostMan.page b/demos/blog/protected/Pages/Admin/PostMan.page index 68ac44f8..9d96af42 100644 --- a/demos/blog/protected/Pages/Admin/PostMan.page +++ b/demos/blog/protected/Pages/Admin/PostMan.page @@ -1,3 +1,5 @@ +<%@ Title="Post Management" %> +

Administration Center

diff --git a/demos/blog/protected/Pages/Admin/UserMan.page b/demos/blog/protected/Pages/Admin/UserMan.page index a8b634c6..02b1a069 100644 --- a/demos/blog/protected/Pages/Admin/UserMan.page +++ b/demos/blog/protected/Pages/Admin/UserMan.page @@ -1,3 +1,5 @@ +<%@ Title="User Management" %> +

Administration Center

diff --git a/demos/blog/protected/Pages/Posts/MyPost.page b/demos/blog/protected/Pages/Posts/MyPost.page index ca153166..69ba78e4 100644 --- a/demos/blog/protected/Pages/Posts/MyPost.page +++ b/demos/blog/protected/Pages/Posts/MyPost.page @@ -1,3 +1,5 @@ +<%@ Title="My Posts" %> +

My Posts

@@ -25,7 +27,7 @@ + diff --git a/demos/quickstart/protected/comments/CommentList.php b/demos/quickstart/protected/comments/CommentList.php new file mode 100644 index 00000000..4328991f --- /dev/null +++ b/demos/quickstart/protected/comments/CommentList.php @@ -0,0 +1,59 @@ + + * @version : $ Sat May 27 17:53:15 AZOST 2006 $ + * @package Demo.Quickstart.comments + * @since 3.0 + */ +class CommentList extends TTemplateControl +{ + private $_exclude = array( + 'Comments', + 'Markdown', + 'Search', + 'GettingStarted.Introduction'); + + private $_quickstart; + + public function onLoad($param) + { + parent::onLoad($param); + + $this->_quickstart = new QuickStartComments(); + + $page = $this->getService()->getRequestedPagePath(); + + $this->listComments($page); + } + + protected function listComments($page) + { + $this->comments->setDataSource($this->_quickstart->getComments($page)); + $this->comments->dataBind(); + } + + public function addComment_Clicked($sender, $param) + { + $page = $this->getService()->getRequestedPagePath(); + $this->_quickstart->addNewComment($page, + $this->email->getText(), $this->content->getText()); + $this->multiView1->setActiveViewIndex(1); + $this->listComments($page); + } + + public function setVisible($value) + { + $page = $this->getService()->getRequestedPagePath(); + if(in_array($page, $this->_exclude)) + parent::setVisible(false); + else + parent::setVisible($value); + } +} + +?> \ No newline at end of file diff --git a/demos/quickstart/protected/comments/CommentList.tpl b/demos/quickstart/protected/comments/CommentList.tpl new file mode 100644 index 00000000..0aeb2c81 --- /dev/null +++ b/demos/quickstart/protected/comments/CommentList.tpl @@ -0,0 +1,102 @@ +
+ + + +

Comments + ( Add your comments )

+
+ +
+ <%# $this->ItemIndex+1 %> + + + DataItem['date_added']) %> /> + +
+ + + <%# $this->DataItem['comment'] %> + + +
+
+
+
+ + + +
+

Post a comment

+

Note: + Please only use the comments in relation to this page for +

    +
  • questions/critcisms/suggestions on the documentation,
  • +
  • small notes that can solve or clarify a particular problem or task.
  • +
+ If you experience errors please file a ticket + or ask at the forum. + Please use the Prado wiki for longer pieces and detailed solutions. +

+

Comments will be periodically reviewed, integrated into the documentation and removed. + You may use markdown syntax in your comment.

+ +
+ + + + +
+
+ + +
+ +
+
+ content->Text) %> > +
+

Preview comment

+
+ + + <%= $this->content->Text %> + + +
+
+
+
+ + +
+
+
+ +
+
Thank you, your comment is quequed for moderation.
+
+

Preview comment

+
+ + + <%= $this->content->Text %> + + +
+
+
+
+
+
\ No newline at end of file diff --git a/demos/quickstart/protected/comments/QuickStartComments.php b/demos/quickstart/protected/comments/QuickStartComments.php new file mode 100644 index 00000000..c138bd94 --- /dev/null +++ b/demos/quickstart/protected/comments/QuickStartComments.php @@ -0,0 +1,175 @@ + + * @version : $ Sat May 27 16:49:19 AZOST 2006 $ + * @package Demos.QuickStart.comments + * @since 3.0 + */ +class QuickStartComments +{ + /** + * @var string sqlite database source. + */ + private $_database; + /** + * @var sqlite connection. + */ + private $_connection; + + /** + * Sets the sqlite comment database file. + */ + public function __construct() + { + $this->_database = realpath(dirname(__FILE__).'/comments.db'); + } + + /** + * Closed the database connection. + */ + public function __destruct() + { + if(!is_null($this->_connection)) + sqlite_close($this->_connection); + } + + /** + * @return resource sqlite database connection. + */ + protected function getConnection() + { + if(is_null($this->_connection)) + $this->_connection = sqlite_open($this->_database); + return $this->_connection; + } + + /** + * Quote database input data. + */ + protected function quote($value) + { + return sqlite_escape_string($value); + } + + /** + * Executes an sqlite query. + * @param string SQL + * @return mixed query results. + */ + protected function query($sql) + { + return sqlite_query($this->getConnection(), $sql); + } + + /** + * Returns a row from the sqlite result. + * @param resource sqlite result + * @return array database record. + */ + protected function fetch($resource) + { + if($resource !== false) + return sqlite_fetch_array($resource); + else + return false; + } + + /** + * Fetch all the records for given SQL query. + * @param string SQL query. + * @return array result set. + */ + protected function fetchAll($sql) + { + $rs = $this->query($sql); + $rows = array(); + while($row = $this->fetch($rs)) + $rows[] = $row; + return $rows; + } + + /** + * Returns all the comments for a given page. + * @param string specific page comments + * @return array list of comments + */ + public function getComments($pageID) + { + $page = $this->quote($pageID); + $sql = "SELECT * FROM comments WHERE page=\"$page\" AND approved = 1 ORDER BY date_added ASC"; + return $this->fetchAll($sql); + } + + /** + * Adds a new comment for moderation. + * @param string ID of the page to comment belongs + * @param string email address of the commenter + * @param string comment contents + */ + public function addNewComment($pageID, $email, $comment) + { + $page = $this->quote($pageID); + $email = $this->quote($email); + $comment = $this->quote($comment); + $date_added = time(); + $sql = <<query($sql); + } + + /** + * Update an existing comment. + * @param string comment ID + * @param string page ID + * @param string email address + * @param string updated comment. + */ + public function updateComment($commentID, $page, $email, $content) + { + $ID = intval($commentID); + $email = $this->quote($email); + $comment = $this->quote($content); + $page = $this->quote($page); + $sql = <<query($sql); + } + + /** + * Delete a comment. + * @param string comment ID + */ + public function deleteComment($commentID) + { + $ID = intval($commentID); + $this->query("DELETE FROM comments WHERE id=$ID"); + } + + /** + * @return array all the quequed comments. + */ + public function getQuequedComments() + { + return $this->fetchAll("SELECT * FROM comments WHERE approved != 1"); + } + + /** + * Approve a quequed comment. + * @param string comment ID. + */ + public function approveComment($commentID) + { + $ID = intval($commentID); + $this->query("UPDATE comments SET approved = 1 WHERE id=$ID"); + } +} + +?> \ No newline at end of file diff --git a/demos/quickstart/protected/comments/comments.db b/demos/quickstart/protected/comments/comments.db new file mode 100644 index 00000000..b81d7123 Binary files /dev/null and b/demos/quickstart/protected/comments/comments.db differ diff --git a/demos/quickstart/protected/controls/Layout.tpl b/demos/quickstart/protected/controls/Layout.tpl index 6fbd1380..d4a6a7e5 100644 --- a/demos/quickstart/protected/controls/Layout.tpl +++ b/demos/quickstart/protected/controls/Layout.tpl @@ -32,6 +32,7 @@
+ diff --git a/demos/quickstart/protected/pages/Advanced/I18N.page b/demos/quickstart/protected/pages/Advanced/I18N.page index 5b1fafa0..6c86a6c9 100644 --- a/demos/quickstart/protected/pages/Advanced/I18N.page +++ b/demos/quickstart/protected/pages/Advanced/I18N.page @@ -148,9 +148,11 @@ To translate a message or string in the template, use TTranslate.

<com:TTranslate Text="Goodbye" /> -

TTranslate can also perform string substitution. Any attributes of TTranslate will be substituted with {attribute name} in the translation. E.g.

+

TTranslate can also perform string substitution. +The Parameters property can be use to add name values pairs for substitution. Substrings in the translation enclosed with "{" and "}" are consider as the + parameter names during substitution lookup. The following example will substitute the substring "{time}" with the value of the parameter attribute "Parameters.time=<%= time() %>". -<com:TTranslate time="late"> +<com:TTranslate Parameters.time=<%= time() %> > The time is {time}. </com:TTranslate> diff --git a/demos/quickstart/protected/pages/Comments.page b/demos/quickstart/protected/pages/Comments.page new file mode 100644 index 00000000..32c7bcae --- /dev/null +++ b/demos/quickstart/protected/pages/Comments.page @@ -0,0 +1,46 @@ + + + + + Comments awaiting approval + + + + <%# $this->DataItem['page'] %> + + DataItem['date_added']) %> /> + + +

+ + <%# $this->DataItem['comment']%> + +
+ + + + + + + DataItem['email'] %> /> + DataItem['page'] %> /> + DataItem['comment'] %> TextMode="MultiLine"/> + + + + + +
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Comments.php b/demos/quickstart/protected/pages/Comments.php new file mode 100644 index 00000000..7af70ece --- /dev/null +++ b/demos/quickstart/protected/pages/Comments.php @@ -0,0 +1,76 @@ + + * @version : $ Sat May 27 20:23:00 AZOST 2006 $ + * @package Demo.Quickstart + * @since 3.0 + */ +class Comments extends TPage +{ + private $_quickstart; + + public function onLoad($param) + { + parent::onLoad($param); + $this->_quickstart = new QuickStartComments; + if(!$this->getIsPostBack()) + $this->refreshData(); + } + + protected function refreshData() + { + $this->comments->setDataSource($this->_quickstart->getQuequedComments()); + $this->comments->dataBind(); + } + + public function approveComment($sender, $param) + { + $ID = $this->comments->DataKeys[$this->comments->SelectedItemIndex]; + $this->_quickstart->approveComment($ID); + $this->refreshData(); + $this->comments->SelectedItemIndex=-1; + } + + public function editComment($sender, $param) + { + $this->comments->SelectedItemIndex=-1; + $this->comments->EditItemIndex=$param->Item->ItemIndex; + $this->refreshData(); + } + + public function cancelEdit($sender, $param) + { + $this->comments->SelectedItemIndex=-1; + $this->comments->EditItemIndex=-1; + $this->refreshData(); + } + + public function deleteComment($sender, $param) + { + $ID = $this->comments->DataKeys[$param->Item->ItemIndex]; + $this->_quickstart->deleteComment($ID); + $this->comments->SelectedItemIndex=-1; + $this->comments->EditItemIndex=-1; + $this->refreshData(); + } + + public function updateComment($sender, $param) + { + $item=$param->Item; + $this->_quickstart->updateComment( + $this->comments->DataKeys[$item->ItemIndex], + $item->page->Text, + $item->email->Text, + $item->content->Text); + + $this->comments->EditItemIndex=-1; + $this->refreshData(); + } +} + +?> \ No newline at end of file diff --git a/demos/quickstart/themes/PradoSoft/style.css b/demos/quickstart/themes/PradoSoft/style.css index 0fed7813..782697ae 100644 --- a/demos/quickstart/themes/PradoSoft/style.css +++ b/demos/quickstart/themes/PradoSoft/style.css @@ -379,4 +379,142 @@ dd { text-align: center; margin: 30px; +} + +/** Comments **/ +#comments +{ + margin: 10px; +} + +.comment_header +{ + border-bottom: 1px solid silver; +} + +.comment_item +{ + padding: 10px; + border: 1px solid silver; + margin: 0 10px 10px 10px; +} + +.comment_item .number +{ + float: right; + font-size: 1.5em; + font-weight: bold; + color: silver; +} + +.comment_item1 +{ + background-color: #EDEDED; +} + +.comment_item .email +{ + font-weight: bold; + display: block; +} + +.comment_item .date +{ + font-size: 0.85em; + display: block; + border-bottom: 1px dotted silver; +} + +.comment_item .comment +{ + padding: 10px; +} + +.add_comments +{ + margin-top: 2em; +} + +.add_comments .comment_email +{ + margin-bottom: 5px; +} + +.add_comments .comment_email input +{ + width: 25em; +} + +.add_comments .comment_content textarea +{ + width: 75%; + height: 200px; + padding: 5px; +} + +.add_comments .comment_email label, .add_comments .comment_content label +{ + width: 8em; + float: left; + text-align: right; + padding-right: 5px; +} + +.add_comments .add_comment +{ + padding-left: 8.2em; + padding-top: 0.5em; +} + +.add_comments .please_add +{ + padding-left: 8.2em; +} + +.add_comments h3, .comment_added h3 +{ + border-bottom: 1px solid silver; +} + +.comment_preview +{ + margin: 10px; + padding: 10px; + border: 1px solid silver; +} + +.comment_preview .comment +{ + padding: 10px; +} + +.comment_added +{ + margin-top: 3em; + border-top: 1px dotted silver; + padding: 10px; +} + +.comment_added .comment +{ + padding: 10px; + margin-top: 10px; +} + +.comment_added .thank +{ + background-color: #ffffcc; + padding: 20px; +} + +pre code +{ + display: block; + padding: 0.5em; + border-style:solid; + border-width:1px; + border-color:#eeeeee; + background-color:#ffffee; + font-family: "Courier New", Courier, mono; + margin: 0.2em; } \ No newline at end of file -- cgit v1.2.3