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 @@
+
\ 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 @@
+
+
+
\ 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
Comments + ( Add your comments )
+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.
+ +Preview comment
+Preview comment
+