[pLog-svn] r6176 - in plog/branches/lifetype-2.0-csrf: class/action/admin class/dao class/summary/action class/view/admin config js/JSCookMenu js/JSCookMenu/ThemeOffice js/JSCookMenu/ThemeOffice2003 templates/admin
reto at devel.lifetype.net
reto at devel.lifetype.net
Sun Jan 27 13:25:23 EST 2008
Author: reto
Date: 2008-01-27 13:25:22 -0500 (Sun, 27 Jan 2008)
New Revision: 6176
Added:
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrow.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrowdown.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/blank.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.png
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.png
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/spacer.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/effect.js
plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages_table.template
plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages_table.template
plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage_form.template
plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage_form.template
plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage_form.template
plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage_form.template
Removed:
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrow.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrowdown.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/blank.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.png
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.png
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/spacer.gif
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js
Modified:
plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteinboxprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteoutboxprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/admineditinboxprivatemessagesaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/admineditoutboxprivatemessagesaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/adminnewprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadinboxprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadoutboxprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/adminreplyprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendreplyprivatemessageaction.class.php
plog/branches/lifetype-2.0-csrf/class/dao/privatemessagebox.class.php
plog/branches/lifetype-2.0-csrf/class/dao/privatemessageboxes.class.php
plog/branches/lifetype-2.0-csrf/class/summary/action/summaryregistrationaction.class.php
plog/branches/lifetype-2.0-csrf/class/view/admin/admininboxprivatemessageslistview.class.php
plog/branches/lifetype-2.0-csrf/class/view/admin/adminlinkcategorieslistview.class.php
plog/branches/lifetype-2.0-csrf/class/view/admin/adminoutboxprivatemessageslistview.class.php
plog/branches/lifetype-2.0-csrf/config/config.properties.php
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/JSCookMenu.js
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.css
plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.js
plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages.template
plog/branches/lifetype-2.0-csrf/templates/admin/editlinks.template
plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages.template
plog/branches/lifetype-2.0-csrf/templates/admin/header.template
plog/branches/lifetype-2.0-csrf/templates/admin/menus.xml
plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage.template
plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage.template
plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage.template
plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage.template
Log:
svn merge -r 6147:6175
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteinboxprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteinboxprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteinboxprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,8 +1,4 @@
<?php
-
-
-
-
/**
* \ingroup Action
@@ -42,9 +38,14 @@
*/
function _deleteInboxPrivateMessages()
{
+ if( $this->_mode == "deleteInboxPrivateMessage" ) {
+ $this->_messageIds = Array();
+ $this->_messageIds[] = $this->_request->getValue( "messageId" );
+ }
+ else
+ $this->_messageIds = $this->_request->getValue( "messageIds" );
$privateMessages = new PrivateMessages();
-
$errorMessage = "";
$successMessage = "";
$totalOk = 0;
@@ -72,36 +73,42 @@
}
}
- // prepare the view and all the information it needs to know
- $this->_view = new AdminInboxPrivateMessagesListView( $this->_blogInfo );
- if( $errorMessage != "" )
- $this->_view->setErrorMessage( $errorMessage );
- if( $successMessage != "" ) {
- // and clear the cache to avoid outdated information
+ if( $totalOk > 0 )
CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
- $this->_view->setSuccessMessage( $successMessage );
- }
- $this->setCommonData();
-
- return true;
+ return( Array( "errorMessage" => $errorMessage, "successMessage" => $successMessage ));
}
/**
* Carries out the specified action
*/
- function perform()
- {
- // prepare the parameters.. If there's only one private message id, then add it to
- // an array.
- if( $this->_mode == "deleteInboxPrivateMessage" ) {
- $this->_messageIds = Array();
- $this->_messageIds[] = $this->_request->getValue( "messageId" );
- }
- else
- $this->_messageIds = $this->_request->getValue( "messageIds" );
+ function perform()
+ {
+ $results = $this->_deleteInboxPrivateMessages();
- return $this->_deleteInboxPrivateMessages();
- }
+ $this->_view = new AdminInboxPrivateMessagesListView( $this->_blogInfo );
+ if( $results["errorMessage"] != "" ) $this->_view->setErrorMessage( $results["errorMessage"] );
+ if( $results["successMessage"] != "" ) $this->_view->setSuccessMessage( $results["successMessage"] );
+ $this->setCommonData();
+
+ // better to return true if everything fine
+ return true;
+ }
+
+ /**
+ * Ajax-specific behaviour
+ */
+ function performAjax()
+ {
+ $results = $this->_deleteInboxPrivateMessages();
+
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setMessage( $results );
+ $this->_view->setSuccess( true );
+
+ // better to return true if everything fine
+ return true;
+ }
}
?>
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteoutboxprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteoutboxprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/admindeleteoutboxprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,8 +1,4 @@
<?php
-
-
-
-
/**
* \ingroup Action
@@ -42,9 +38,14 @@
*/
function _deleteOutboxPrivateMessages()
{
+ if( $this->_mode == "deleteOutboxPrivateMessage" ) {
+ $this->_messageIds = Array();
+ $this->_messageIds[] = $this->_request->getValue( "messageId" );
+ }
+ else
+ $this->_messageIds = $this->_request->getValue( "messageIds" );
$privateMessages = new PrivateMessages();
-
$errorMessage = "";
$successMessage = "";
$totalOk = 0;
@@ -72,36 +73,42 @@
}
}
- // prepare the view and all the information it needs to know
- $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
- if( $errorMessage != "" )
- $this->_view->setErrorMessage( $errorMessage );
- if( $successMessage != "" ) {
- // and clear the cache to avoid outdated information
+ if( $totalOk > 0 )
CacheControl::resetBlogCache( $this->_blogInfo->getId(), false );
- $this->_view->setSuccessMessage( $successMessage );
- }
- $this->setCommonData();
-
- return true;
+ return( Array( "errorMessage" => $errorMessage, "successMessage" => $successMessage ));
}
/**
* Carries out the specified action
*/
- function perform()
- {
- // prepare the parameters.. If there's only one private message id, then add it to
- // an array.
- if( $this->_mode == "deleteOutboxPrivateMessage" ) {
- $this->_messageIds = Array();
- $this->_messageIds[] = $this->_request->getValue( "messageId" );
- }
- else
- $this->_messageIds = $this->_request->getValue( "messageIds" );
+ function perform()
+ {
+ $results = $this->_deleteOutboxPrivateMessages();
- return $this->_deleteOutboxPrivateMessages();
- }
+ $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
+ if( $results["errorMessage"] != "" ) $this->_view->setErrorMessage( $results["errorMessage"] );
+ if( $results["successMessage"] != "" ) $this->_view->setSuccessMessage( $results["successMessage"] );
+ $this->setCommonData();
+
+ // better to return true if everything fine
+ return true;
+ }
+
+ /**
+ * Ajax-specific behaviour
+ */
+ function performAjax()
+ {
+ $results = $this->_deleteOutboxPrivateMessages();
+
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setMessage( $results );
+ $this->_view->setSuccess( true );
+
+ // better to return true if everything fine
+ return true;
+ }
}
-?>
+?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/admineditinboxprivatemessagesaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/admineditinboxprivatemessagesaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/admineditinboxprivatemessagesaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,8 +1,5 @@
<?php
-
-
-
/**
* \ingroup Action
* @private
@@ -33,5 +30,36 @@
// better to return true if everything fine
return true;
}
+
+ /**
+ * Ajax-specific behaviour
+ */
+ function performAjax()
+ {
+ if( $this->_request->getOutput() == Request::REQUEST_OUTPUT_JSON ) {
+ if( $this->_request->loadAllData()) {
+ // in this case, we load all data
+
+ $privateMessageBoxes = new PrivateMessageBoxes();
+ $privateMessageInbox = $privateMessageBoxes->getPrivateMessageInboxFromUserId( $this->_userInfo->getId() );
+ $inboxPrivateMessages = $privateMessageInbox->getPrivateMessagesFromBox( $searchTerms );
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setSuccess( true );
+ $this->_view->setResult( $inboxPrivateMessages );
+ }
+ else {
+ $searchTerms = $this->_request->getValue( "searchTerms" );
+ $this->_view = new AjaxViewRenderer( new AdminInboxPrivateMessagesListView( $this->_blogInfo, Array( "searchTerms" => $searchTerms )));
+ $this->_view->setSuccess( true );
+ $this->_view->setResultObject( "privatemessages" );
+ }
+ }
+ else {
+ return( $this->perform());
+ }
+
+ return( true );
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/admineditoutboxprivatemessagesaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/admineditoutboxprivatemessagesaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/admineditoutboxprivatemessagesaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,8 +1,5 @@
<?php
-
-
-
/**
* \ingroup Action
* @private
@@ -33,5 +30,36 @@
// better to return true if everything fine
return true;
}
+
+ /**
+ * Ajax-specific behaviour
+ */
+ function performAjax()
+ {
+ if( $this->_request->getOutput() == Request::REQUEST_OUTPUT_JSON ) {
+ if( $this->_request->loadAllData()) {
+ // in this case, we load all data
+
+ $privateMessageBoxes = new PrivateMessageBoxes();
+ $privateMessageOutbox = $privateMessageBoxes->getPrivateMessageOutboxFromUserId( $this->_userInfo->getId() );
+ $outboxPrivateMessages = $privateMessageOutbox->getPrivateMessagesFromBox( $searchTerms );
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setSuccess( true );
+ $this->_view->setResult( $outboxPrivateMessages );
+ }
+ else {
+ $searchTerms = $this->_request->getValue( "searchTerms" );
+ $this->_view = new AjaxViewRenderer( new AdminOutboxPrivateMessagesListView( $this->_blogInfo, Array( "searchTerms" => $searchTerms )));
+ $this->_view->setSuccess( true );
+ $this->_view->setResultObject( "privatemessages" );
+ }
+ }
+ else {
+ return( $this->perform());
+ }
+
+ return( true );
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/adminnewprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/adminnewprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/adminnewprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -26,8 +26,17 @@
function perform()
{
// initialize the view
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "newprivatemessage" );
- $this->setCommonData();
+ if( $this->_request->isXHR())
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "newprivatemessage_form" );
+ else
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "newprivatemessage" );
+
+ $this->setCommonData();
}
+
+ function performAjax()
+ {
+ return( $this->perform());
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadinboxprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadinboxprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadinboxprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,9 +1,4 @@
<?php
-
-
-
-
-
/**
* \ingroup Action
@@ -31,18 +26,36 @@
$this->setValidationErrorView( $errorView );
}
+ function getPrivateMessage()
+ {
+ // fetch the message
+ $this->_messageId = $this->_request->getValue( "messageId" );
+ $privateMessages = new PrivateMessages();
+ $privateMessage = $privateMessages->getPrivateMessageByReceiverId( $this->_messageId, $this->_userInfo->getId() );
+ // show an error if we couldn't fetch the message
+ if( !$privateMessage ) {
+ return false;
+ }
+ $this->notifyEvent( EVENT_PRIVATE_MESSAGE_LOADED, Array( "privatemessage" => &$privateMessage ));
+
+ return( $privateMessage );
+ }
+
/**
* Carries out the specified action
*/
function perform()
{
// fetch the private message
- $this->_messageId = $this->_request->getValue( "messageId" );
- $privateMessages = new PrivateMessages();
- $privateMessage = $privateMessages->getPrivateMessageByReceiverId( $this->_messageId, $this->_userInfo->getId() );
+ $privateMessage = $this->getPrivateMessage();
+
// show an error if we couldn't fetch the private message
if( !$privateMessage ) {
- $this->_view = new AdminInboxPrivateMessagesListView( $this->_blogInfo );
+ if( Request::isXHR() )
+ $this->_view = new AdminErrorDialogView( $this->_blogInfo );
+ else
+ $this->_view = new AdminInboxPrivateMessagesListView( $this->_blogInfo );
+
$this->_view->setErrorMessage( $this->_locale->tr("error_fetching_private_message") );
$this->_view->setError( true );
$this->setCommonData();
@@ -54,9 +67,12 @@
}
}
- $this->notifyEvent( EVENT_PRIVATE_MESSAGE_LOADED, Array( "privatemessage" => &$privateMessage ));
// otherwise show the form to edit its fields
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "readinboxprivatemessage" );
+ if( Request::isXHR())
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "readinboxprivatemessage_form" );
+ else
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "readinboxprivatemessage" );
+
$this->_view->setValue( "messageId", $privateMessage->getId());
$this->_view->setValue( "privatemessage", $privateMessage );
$this->setCommonData();
@@ -64,5 +80,28 @@
// better to return true if everything fine
return true;
}
+
+ function performAjax()
+ {
+ if( $this->_request->getOutput() == Request::REQUEST_OUTPUT_JSON ) {
+ $privateMessage = $this->getPrivateMessage();
+ if( !$privateMessage ) {
+ $this->_view = $this->getAjaxErrorView();
+ $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_private_message"));
+ return( false );
+ }
+
+ // otherwise show the form to edit its fields
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setResult( $privateMessage );
+
+ // better to return true if everything fine
+ return true;
+ }
+ else {
+ return( $this->perform());
+ }
+ }
}
?>
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadoutboxprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadoutboxprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/adminreadoutboxprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,9 +1,4 @@
<?php
-
-
-
-
-
/**
* \ingroup Action
@@ -31,27 +26,48 @@
$this->setValidationErrorView( $errorView );
}
+ function getPrivateMessage()
+ {
+ // fetch the message
+ $this->_messageId = $this->_request->getValue( "messageId" );
+ $privateMessages = new PrivateMessages();
+ $privateMessage = $privateMessages->getPrivateMessageBySenderId( $this->_messageId, $this->_userInfo->getId() );
+ // show an error if we couldn't fetch the message
+ if( !$privateMessage ) {
+ return false;
+ }
+ $this->notifyEvent( EVENT_PRIVATE_MESSAGE_LOADED, Array( "privatemessage" => &$privateMessage ));
+
+ return( $privateMessage );
+ }
+
/**
* Carries out the specified action
*/
function perform()
{
// fetch the private message
- $this->_messageId = $this->_request->getValue( "messageId" );
- $privateMessages = new PrivateMessages();
- $privateMessage = $privateMessages->getPrivateMessageBySenderId( $this->_messageId, $this->_userInfo->getId() );
+ $privateMessage = $this->getPrivateMessage();
+
// show an error if we couldn't fetch the private message
if( !$privateMessage ) {
- $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
+ if( Request::isXHR() )
+ $this->_view = new AdminErrorDialogView( $this->_blogInfo );
+ else
+ $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
+
$this->_view->setErrorMessage( $this->_locale->tr("error_fetching_private_message") );
$this->_view->setError( true );
$this->setCommonData();
return false;
}
- $this->notifyEvent( EVENT_PRIVATE_MESSAGE_LOADED, Array( "privatemessage" => &$privateMessage ));
// otherwise show the form to edit its fields
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "readoutboxprivatemessage" );
+ if( Request::isXHR())
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "readoutboxprivatemessage_form" );
+ else
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "readoutboxprivatemessage" );
+
$this->_view->setValue( "messageId", $privateMessage->getId());
$this->_view->setValue( "privatemessage", $privateMessage );
$this->setCommonData();
@@ -59,5 +75,28 @@
// better to return true if everything fine
return true;
}
+
+ function performAjax()
+ {
+ if( $this->_request->getOutput() == Request::REQUEST_OUTPUT_JSON ) {
+ $privateMessage = $this->getPrivateMessage();
+ if( !$privateMessage ) {
+ $this->_view = $this->getAjaxErrorView();
+ $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_private_message"));
+ return( false );
+ }
+
+ // otherwise show the form to edit its fields
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setResult( $privateMessage );
+
+ // better to return true if everything fine
+ return true;
+ }
+ else {
+ return( $this->perform());
+ }
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/adminreplyprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/adminreplyprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/adminreplyprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,9 +1,4 @@
<?php
-
-
-
-
-
/**
* \ingroup Action
@@ -31,18 +26,36 @@
$this->setValidationErrorView( $errorView );
}
+ function getPrivateMessage()
+ {
+ // fetch the private message
+ $this->_messageId = $this->_request->getValue( "messageId" );
+ $privateMessages = new PrivateMessages();
+ $privateMessage = $privateMessages->getPrivateMessageByReceiverId( $this->_messageId, $this->_userInfo->getId() );
+
+ // show an error if we couldn't fetch the message
+ if( !$privateMessage ) {
+ return false;
+ }
+ $this->notifyEvent( EVENT_PRIVATE_MESSAGE_LOADED, Array( "privatemessage" => &$privateMessage ));
+
+ return( $privateMessage );
+ }
+
/**
* Carries out the specified action
*/
function perform()
{
- // fetch the private message
- $this->_messageId = $this->_request->getValue( "messageId" );
- $privateMessages = new PrivateMessages();
- $privateMessage = $privateMessages->getPrivateMessageByReceiverId( $this->_messageId, $this->_userInfo->getId() );
+ $privateMessage = $this->getPrivateMessage();
+
// show an error if we couldn't fetch the private message
if( !$privateMessage ) {
- $this->_view = new AdminInboxPrivateMessagesListView( $this->_blogInfo );
+ if( Request::isXHR() )
+ $this->_view = new AdminErrorDialogView( $this->_blogInfo );
+ else
+ $this->_view = new AdminInboxPrivateMessagesListView( $this->_blogInfo );
+
$this->_view->setErrorMessage( $this->_locale->tr("error_fetching_private_message") );
$this->_view->setError( true );
$this->setCommonData();
@@ -54,10 +67,13 @@
}
}
- $this->notifyEvent( EVENT_PRIVATE_MESSAGE_LOADED, Array( "privatemessage" => &$privateMessage ));
// otherwise show the form to edit its fields
$senderInfo = $privateMessage->getSenderInfo();
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "replyprivatemessage" );
+ // initialize the view
+ if( $this->_request->isXHR())
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "replyprivatemessage_form" );
+ else
+ $this->_view = new AdminTemplatedView( $this->_blogInfo, "replyprivatemessage" );
$this->_view->setValue( "receiverName", $senderInfo->getUsername() );
$this->_view->setValue( "subject", $this->_locale->tr( 'reply_string' ) . $privateMessage->getSubject() );
$this->setCommonData();
@@ -65,5 +81,28 @@
// better to return true if everything fine
return true;
}
+
+ function performAjax()
+ {
+ if( $this->_request->getOutput() == Request::REQUEST_OUTPUT_JSON ) {
+ $privateMessage = $this->getPrivateMessage();
+ if( !$privateMessage ) {
+ $this->_view = $this->getAjaxErrorView();
+ $this->_view->setErrorMessage( $this->_locale->tr("error_fetching_private_message"));
+ return( false );
+ }
+
+ // otherwise show the form to edit its fields
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+ $this->_view->setResult( $privateMessage );
+
+ // better to return true if everything fine
+ return true;
+ }
+ else {
+ return( $this->perform());
+ }
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,9 +1,4 @@
<?php
-
-
-
-
-
/**
* \ingroup Action
@@ -30,9 +25,9 @@
$this->AdminAction( $actionInfo, $request );
// register two validators
- $this->registerFieldValidator( "receiverName", new StringValidator() );
- $this->registerFieldValidator( "subject", new StringValidator() );
- $this->registerFieldValidator( "messageText", new StringValidator() );
+ $this->registerFieldValidator( "receiverName", new StringValidator(), false, $this->_locale->tr("error_receiver_name"));
+ $this->registerFieldValidator( "subject", new StringValidator(), false, $this->_locale->tr("error_empty_subject"));
+ $this->registerFieldValidator( "messageText", new StringValidator(), false, $this->_locale->tr("error_empty_message_text"));
$this->registerField( "backupPrivateMessage" );
// and the view we should show in case there is a validation error
$errorView = new AdminTemplatedView( $this->_blogInfo, "newprivatemessage" );
@@ -40,10 +35,7 @@
$this->setValidationErrorView( $errorView );
}
- /**
- * Carries out the specified action
- */
- function perform()
+ function sendPrivateMessage()
{
// fetch the data, we already know it's valid and that we can trust it!
$this->_receiverName = Textfilter::filterAllHTML( $this->_request->getValue( "receiverName" ) );
@@ -58,11 +50,8 @@
// see if the user exists
if( !$receiver || $receiver->getId() == $this->_userInfo->getId() ) {
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "newprivatemessage" );
- $this->_view->setErrorMessage( $this->_locale->pr("error_invalid_receiver", $this->_receiverName) );
+ $this->_message = $this->_locale->pr("error_invalid_receiver", $this->_receiverName);
$this->_form->setFieldValidationStatus( "receiverName", false );
- $this->setCommonData( true );
-
return false;
}
@@ -78,47 +67,42 @@
// create the private message object...
$privateMessages = new PrivateMessages();
- $receiverPrivateMessage = new PrivateMessage( $receiverInbox->getId(),
+ $this->_receiverPrivateMessage = new PrivateMessage( $receiverInbox->getId(),
$this->_receiverId,
$this->_senderId,
$this->_subject,
$this->_messageText );
// fire the pre event...
- $this->notifyEvent( EVENT_PRE_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$receiverPrivateMessage ));
+ $this->notifyEvent( EVENT_PRE_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$this->_receiverPrivateMessage ));
// once we have built the object, we can add it to the database!
- if( $privateMessages->addPrivateMessage( $receiverPrivateMessage )) {
- if( $this->_backupPrivateMessage ) {
- $senderOutbox = $privateMessageBoxes->getPrivateMessageOutboxFromUserId( $this->_senderId );
- $senderPrivateMessage = new PrivateMessage( $senderOutbox->getId(),
- $this->_receiverId,
- $this->_senderId,
- $this->_subject,
- $this->_messageText );
- $privateMessages->addPrivateMessage( $senderPrivateMessage );
- }
- $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
- $this->_view->setSuccess( true );
- $this->_view->setSuccessMessage( $this->_locale->pr("private_message_sended_ok", $receiverPrivateMessage->getSubject()));
- $this->notifyEvent( EVENT_POST_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$receiverPrivateMessage ));
+ $result = $privateMessages->addPrivateMessage( $this->_receiverPrivateMessage );
+
+ if( !$result ) {
+ $this->_message = $this->_locale->tr("error_sending_private_message" );
+ return false;
+ }
- $this->sendPrivateMessageEmail( $receiver );
-
- $this->setCommonData();
+ if( $this->_backupPrivateMessage ) {
+ $senderOutbox = $privateMessageBoxes->getPrivateMessageOutboxFromUserId( $this->_senderId );
+ $senderPrivateMessage = new PrivateMessage( $senderOutbox->getId(),
+ $this->_receiverId,
+ $this->_senderId,
+ $this->_subject,
+ $this->_messageText );
+ $privateMessages->addPrivateMessage( $senderPrivateMessage );
}
- else {
- // if there was an error, we should say so... as well as not changing the view since
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "newprivatemessage" );
- $this->_view->setError( true );
- $this->_view->setErrorMessage( $this->_locale->tr("error_sending_private_message" ));
- $this->setCommonData( true );
- }
- return true;
+ $this->_message = $this->_locale->pr("private_message_sended_ok", $this->_receiverPrivateMessage->getSubject());
+ $this->notifyEvent( EVENT_POST_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$this->_receiverPrivateMessage ));
+
+ $this->sendEmail( $receiver );
+
+ return $result;
}
- function sendPrivateMessageEmail( $userInfo )
+ function sendEmail( $userInfo )
{
// if everything went fine, we can now send the private message to the receiver
// only if the receiver specified a valid email address
@@ -137,6 +121,43 @@
}
return true;
+ }
+
+ /**
+ * Carries out the specified action
+ */
+ function perform()
+ {
+ $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
+
+ $result = $this->sendPrivateMessage();
+
+ if( !$result ) {
+ // set an error message
+ $this->_view->setErrorMessage( $this->_message);
+ $this->setCommonData(true);
+ }
+ else {
+ // or success
+ $this->_view->setSuccessMessage( $this->_message );
+ $this->setCommonData();
+ }
+
+ return true;
}
+
+ function performAjax()
+ {
+ $result = $this->sendPrivateMessage();
+
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+
+ $this->_view->setSuccess( $result );
+ $this->_view->setMessage( $this->_message );
+ $this->_view->setResult( $this->_receiverPrivateMessage );
+
+ return( true );
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendreplyprivatemessageaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendreplyprivatemessageaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/action/admin/adminsendreplyprivatemessageaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,9 +1,4 @@
<?php
-
-
-
-
-
/**
* \ingroup Action
@@ -30,9 +25,9 @@
$this->AdminAction( $actionInfo, $request );
// register two validators
- $this->registerFieldValidator( "receiverName", new StringValidator() );
- $this->registerFieldValidator( "subject", new StringValidator() );
- $this->registerFieldValidator( "replyText", new StringValidator() );
+ $this->registerFieldValidator( "receiverName", new StringValidator(), false, $this->_locale->tr("error_receiver_name"));
+ $this->registerFieldValidator( "subject", new StringValidator(), false, $this->_locale->tr("error_empty_subject"));
+ $this->registerFieldValidator( "replyText", new StringValidator(), false, $this->_locale->tr("error_empty_message_text"));
$this->registerField( "backupPrivateMessage" );
// and the view we should show in case there is a validation error
$errorView = new AdminTemplatedView( $this->_blogInfo, "replyprivatemessage" );
@@ -40,10 +35,7 @@
$this->setValidationErrorView( $errorView );
}
- /**
- * Carries out the specified action
- */
- function perform()
+ function sendReplyPrivateMessage()
{
// fetch the data, we already know it's valid and that we can trust it!
$this->_receiverName = Textfilter::filterAllHTML( $this->_request->getValue( "receiverName" ) );
@@ -58,11 +50,8 @@
// see if the user exists
if( !$receiver || $receiver->getId() == $this->_userInfo->getId() ) {
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "replyprivatemessage" );
- $this->_view->setErrorMessage( $this->_locale->pr("error_invalid_receiver", $this->_receiverName) );
+ $this->_message = $this->_locale->pr("error_invalid_receiver", $this->_receiverName);
$this->_form->setFieldValidationStatus( "receiverName", false );
- $this->setCommonData( true );
-
return false;
}
@@ -78,47 +67,42 @@
// create the private message object...
$privateMessages = new PrivateMessages();
- $receiverPrivateMessage = new PrivateMessage( $receiverInbox->getId(),
+ $this->_receiverPrivateMessage = new PrivateMessage( $receiverInbox->getId(),
$this->_receiverId,
$this->_senderId,
$this->_subject,
$this->_replyText );
// fire the pre event...
- $this->notifyEvent( EVENT_PRE_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$receiverPrivateMessage ));
+ $this->notifyEvent( EVENT_PRE_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$this->_receiverPrivateMessage ));
// once we have built the object, we can add it to the database!
- if( $privateMessages->addPrivateMessage( $receiverPrivateMessage )) {
- if( $this->_backupPrivateMessage ) {
- $senderOutbox = $privateMessageBoxes->getPrivateMessageOutboxFromUserId( $this->_senderId );
- $senderPrivateMessage = new PrivateMessage( $senderOutbox->getId(),
- $this->_receiverId,
- $this->_senderId,
- $this->_subject,
- $this->_replyText );
- $privateMessages->addPrivateMessage( $senderPrivateMessage );
- }
- $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
- $this->_view->setSuccess( true );
- $this->_view->setSuccessMessage( $this->_locale->pr("private_message_sended_ok", $receiverPrivateMessage->getSubject()));
- $this->notifyEvent( EVENT_POST_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$receiverPrivateMessage ));
+ $result = $privateMessages->addPrivateMessage( $this->_receiverPrivateMessage );
+
+ if( !$result ) {
+ $this->_message = $this->_locale->tr("error_sending_private_message" );
+ return false;
+ }
- $this->sendPrivateMessageEmail( $receiver );
-
- $this->setCommonData();
+ if( $this->_backupPrivateMessage ) {
+ $senderOutbox = $privateMessageBoxes->getPrivateMessageOutboxFromUserId( $this->_senderId );
+ $senderPrivateMessage = new PrivateMessage( $senderOutbox->getId(),
+ $this->_receiverId,
+ $this->_senderId,
+ $this->_subject,
+ $this->_replyText );
+ $privateMessages->addPrivateMessage( $senderPrivateMessage );
}
- else {
- // if there was an error, we should say so... as well as not changing the view since
- $this->_view = new AdminTemplatedView( $this->_blogInfo, "replyprivatemessage" );
- $this->_view->setError( true );
- $this->_view->setErrorMessage( $this->_locale->tr("error_sending_private_message" ));
- $this->setCommonData( true );
- }
- return true;
+ $this->_message = $this->_locale->pr("private_message_sended_ok", $this->_receiverPrivateMessage->getSubject());
+ $this->notifyEvent( EVENT_POST_SEND_PRIVATE_MESSAGE, Array( "privatemessage" => &$this->_receiverPrivateMessage ));
+
+ $this->sendEmail( $receiver );
+
+ return $result;
}
- function sendPrivateMessageEmail( $userInfo )
+ function sendEmail( $userInfo )
{
// if everything went fine, we can now send the private message to the receiver
// only if the receiver specified a valid email address
@@ -127,7 +111,7 @@
// build an email message
$emailMessage = new EmailMessage();
- $emailMessage->setBody( $this->_replyText );
+ $emailMessage->setBody( $this->_messageText );
$emailMessage->setSubject( "[Private Message]" . $this->_subject );
$emailMessage->addTo( $userInfo->getEmail());
$emailMessage->setFrom( $this->_userInfo->getEmail());
@@ -137,6 +121,43 @@
}
return true;
+ }
+
+ /**
+ * Carries out the specified action
+ */
+ function perform()
+ {
+ $this->_view = new AdminOutboxPrivateMessagesListView( $this->_blogInfo );
+
+ $result = $this->sendReplyPrivateMessage();
+
+ if( !$result ) {
+ // set an error message
+ $this->_view->setErrorMessage( $this->_message);
+ $this->setCommonData(true);
+ }
+ else {
+ // or success
+ $this->_view->setSuccessMessage( $this->_message );
+ $this->setCommonData();
+ }
+
+ return true;
}
+
+ function performAjax()
+ {
+ $result = $this->sendReplyPrivateMessage();
+
+
+ $this->_view = new AdminAjaxView( $this->_blogInfo );
+
+ $this->_view->setSuccess( $result );
+ $this->_view->setMessage( $this->_message );
+ $this->_view->setResult( $this->_receiverPrivateMessage );
+
+ return( true );
+ }
}
?>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/class/dao/privatemessagebox.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/dao/privatemessagebox.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/dao/privatemessagebox.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,14 +1,5 @@
<?php
-
-
- /**
- * whether we'd like to fetch a inbox, outbox or anything
- */
- define( "BOX_TYPE_INBOX", 1 );
- define( "BOX_TYPE_OUTBOX", 2 );
- define( "BOX_TYPE_ANY", -1 );
-
/**
* \ingroup DAO
*
Modified: plog/branches/lifetype-2.0-csrf/class/dao/privatemessageboxes.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/dao/privatemessageboxes.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/dao/privatemessageboxes.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,7 +1,11 @@
<?php
-
-
+ /**
+ * whether we'd like to fetch a inbox, outbox or anything
+ */
+ define( "BOX_TYPE_INBOX", 1 );
+ define( "BOX_TYPE_OUTBOX", 2 );
+ define( "BOX_TYPE_ANY", -1 );
/**
* \ingroup DAO
@@ -165,4 +169,4 @@
return( $privateMessageBox );
}
}
-?>
\ No newline at end of file
+?>
Modified: plog/branches/lifetype-2.0-csrf/class/summary/action/summaryregistrationaction.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/summary/action/summaryregistrationaction.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/summary/action/summaryregistrationaction.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -9,8 +9,8 @@
{
function perform()
{
-
+ lt_include( PLOG_CLASS_PATH."register.php" );
die();
}
}
-?>
\ No newline at end of file
+?>
Modified: plog/branches/lifetype-2.0-csrf/class/view/admin/admininboxprivatemessageslistview.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/view/admin/admininboxprivatemessageslistview.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/view/admin/admininboxprivatemessageslistview.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,8 +1,5 @@
<?php
-
-
-
/**
* \ingroup View
* @private
@@ -15,8 +12,13 @@
function AdminInboxPrivateMessagesListView( $blogInfo, $params = Array())
{
- $this->AdminTemplatedView( $blogInfo, "editinboxprivatemessages" );
+ if( Request::isXHR())
+ $template = "editinboxprivatemessages_table";
+ else
+ $template = "editinboxprivatemessages";
+ $this->AdminTemplatedView( $blogInfo, $template );
+
// save the parameters and put them in a nicer place after checking them
if( !isset( $params["searchTerms"] ) ) $params["searchTerms"] = "";
$this->setValue( "searchTerms", $params["searchTerms"] );
Modified: plog/branches/lifetype-2.0-csrf/class/view/admin/adminlinkcategorieslistview.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/view/admin/adminlinkcategorieslistview.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/view/admin/adminlinkcategorieslistview.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,9 +1,5 @@
<?php
-
-
-
-
/**
* \ingroup View
* @private
Modified: plog/branches/lifetype-2.0-csrf/class/view/admin/adminoutboxprivatemessageslistview.class.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/class/view/admin/adminoutboxprivatemessageslistview.class.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/class/view/admin/adminoutboxprivatemessageslistview.class.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,8 +1,5 @@
<?php
-
-
-
/**
* \ingroup View
* @private
@@ -15,8 +12,13 @@
function AdminOutboxPrivateMessagesListView( $blogInfo, $params = Array())
{
- $this->AdminTemplatedView( $blogInfo, "editoutboxprivatemessages" );
+ if( Request::isXHR())
+ $template = "editoutboxprivatemessages_table";
+ else
+ $template = "editoutboxprivatemessages";
+ $this->AdminTemplatedView( $blogInfo, $template );
+
// save the parameters and put them in a nicer place after checking them
if( !isset( $params["searchTerms"] ) ) $params["searchTerms"] = "";
$this->setValue( "searchTerms", $params["searchTerms"] );
Modified: plog/branches/lifetype-2.0-csrf/config/config.properties.php
===================================================================
--- plog/branches/lifetype-2.0-csrf/config/config.properties.php 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/config/config.properties.php 2008-01-27 18:25:22 UTC (rev 6176)
@@ -26,10 +26,10 @@
# (note, if upgrading between minor releases:
# 1.0 to 1.0.1, etc. you shouldn't run the wizard)
-$config['db_host'] = '';
-$config['db_username'] = '';
-$config['db_password'] = '';
-$config['db_database'] = '';
+$config['db_host'] = 'localhost';
+$config['db_username'] = 'devel';
+$config['db_password'] = '1234';
+$config['db_database'] = 'lt_csrf';
$config['db_driver'] = '';
$config["db_persistent"] = true;
$config['db_character_set'] = '';
@@ -41,7 +41,7 @@
# coexist in the same unique database. If you change this after the initial configuration done
# with the installation wizard, please make sure that you also rename the tables.
#
-$config['db_prefix'] = '';
+$config['db_prefix'] = 'lt_';
#
# This array is used to pass driver-specific parameters. Currently the only supported
Modified: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/JSCookMenu.js
===================================================================
--- plog/branches/lifetype-2.0-csrf/js/JSCookMenu/JSCookMenu.js 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/JSCookMenu.js 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,6 +1,8 @@
/*
- JSCookMenu v1.4.4. (c) Copyright 2002-2005 by Heng Yuan
+ JSCookMenu v2.0.3 (c) Copyright 2002-2006 by Heng Yuan
+ http://jscook.sourceforge.net/JSCookMenu/
+
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
@@ -20,22 +22,12 @@
DEALINGS IN THE SOFTWARE.
*/
-// Globals
-var _cmIDCount = 0;
-var _cmIDName = 'cmSubMenuID'; // for creating submenu id
-
-var _cmTimeOut = null; // how long the menu would stay
-var _cmCurrentItem = null; // the current menu item being selected;
-
-var _cmNoAction = new Object (); // indicate that the item cannot be hovered.
-var _cmNoClick = new Object (); // similar to _cmNoAction but does not respond to mouseup/mousedown events
-var _cmSplit = new Object (); // indicate that the item is a menu split
-
-var _cmItemList = new Array (); // a simple list of items
-
// default node properties
var _cmNodeProperties =
{
+ // theme prefix
+ prefix: '',
+
// main menu display attributes
//
// Note. When the menu bar is horizontal,
@@ -51,34 +43,162 @@
// HTML code to the left of the regular item
mainItemLeft: '',
// HTML code to the right of the regular item
- mainItemRight: '',
+ mainItemRight: '',
// sub menu display attributes
// HTML code to the left of the folder item
- folderLeft: '',
+ folderLeft: '',
// HTML code to the right of the folder item
- folderRight: '',
+ folderRight: '',
// HTML code to the left of the regular item
- itemLeft: '',
+ itemLeft: '',
// HTML code to the right of the regular item
- itemRight: '',
+ itemRight: '',
// cell spacing for main menu
- mainSpacing: 0,
+ mainSpacing: 0,
// cell spacing for sub menus
- subSpacing: 0,
+ subSpacing: 0,
+
+ // optional settings
+ // If not set, use the default
+
// auto disappear time for submenus in milli-seconds
- delay: 500,
+ delay: 500,
+ // 1st layer sub menu starting index
+ zIndexStart: 1000,
+ // z-index incremental step for subsequent layers
+ zIndexInc: 5,
+
+ // sub menu header appears before the sub menu table
+ subMenuHeader: null,
+ // sub menu header appears after the sub menu table
+ subMenuFooter: null,
+
+ // submenu location adjustments
+ //
+ // offsetHMainAdjust for adjusting the first submenu
+ // of a 'hbr' menu.
+ // offsetVMainAdjust for adjusting the first submenu
+ // of a 'vbr' menu.
+ // offsetSubAdjust for subsequent level of submenus
+ //
+ offsetHMainAdjust: [0, 0],
+ offsetVMainAdjust: [0, 0],
+ offsetSubAdjust: [0, 0],
+
// act on click to open sub menu
// not yet implemented
// 0 : use default behavior
// 1 : hover open in all cases
// 2 : click on main, hover on sub
- // 3 : click open in all cases
- clickOpen: 1
+ // 3 : click open in all cases (illegal as of 1.5)
+ clickOpen: 1,
+
+ // special effects on open/closing a sub menu
+ effect: null
};
+// Globals
+var _cmIDCount = 0;
+var _cmIDName = 'cmSubMenuID'; // for creating submenu id
+
+var _cmTimeOut = null; // how long the menu would stay
+var _cmCurrentItem = null; // the current menu item being selected;
+
+var _cmNoAction = new Object (); // indicate that the item cannot be hovered.
+var _cmNoClick = new Object (); // similar to _cmNoAction but does not respond to mouseup/mousedown events
+var _cmSplit = new Object (); // indicate that the item is a menu split
+
+var _cmMenuList = new Array (); // a list of the current menus
+var _cmItemList = new Array (); // a simple list of items
+
+var _cmFrameList = new Array (); // a pool of reusable iframes
+var _cmFrameListSize = 0; // keep track of the actual size
+var _cmFrameIDCount = 0; // keep track of the frame id
+var _cmFrameMasking = true; // use the frame masking
+
+// disable iframe masking for IE7
+/*@cc_on
+ @if (@_jscript_version >= 5.6)
+ if (_cmFrameMasking)
+ {
+ var v = navigator.appVersion;
+ var i = v.indexOf ("MSIE ");
+ if (i >= 0)
+ {
+ if (parseInt (navigator.appVersion.substring (i + 5)) >= 7)
+ _cmFrameMasking = false;
+ }
+ }
+ @end
+@*/
+
+var _cmClicked = false; // for onClick
+
+// flag for turning on off hiding objects
+//
+// 0: automatic
+// 1: hiding
+// 2: no hiding
+var _cmHideObjects = 0;
+
+// Utility function to do a shallow copy a node property
+function cmClone (nodeProperties)
+{
+ var returnVal = new Object ();
+ for (v in nodeProperties)
+ returnVal[v] = nodeProperties[v];
+ return returnVal;
+}
+
+//
+// store the new menu information into a structure to retrieve it later
+//
+function cmAllocMenu (id, menu, orient, nodeProperties, prefix)
+{
+ var info = new Object ();
+ info.div = id;
+ info.menu = menu;
+ info.orient = orient;
+ info.nodeProperties = nodeProperties;
+ info.prefix = prefix;
+ var menuID = _cmMenuList.length;
+ _cmMenuList[menuID] = info;
+ return menuID;
+}
+
+//
+// request a frame
+//
+function cmAllocFrame ()
+{
+ if (_cmFrameListSize > 0)
+ return cmGetObject (_cmFrameList[--_cmFrameListSize]);
+ var frameObj = document.createElement ('iframe');
+ var id = _cmFrameIDCount++;
+ frameObj.id = 'cmFrame' + id;
+ frameObj.frameBorder = '0';
+ frameObj.style.display = 'none';
+ frameObj.src = 'javascript:false';
+ document.body.appendChild (frameObj);
+ frameObj.style.filter = 'alpha(opacity=0)';
+ frameObj.style.zIndex = 99;
+ frameObj.style.position = 'absolute';
+ frameObj.style.border = '0';
+ frameObj.scrolling = 'no';
+ return frameObj;
+}
+
+//
+// make a frame resuable later
+//
+function cmFreeFrame (frameObj)
+{
+ _cmFrameList[_cmFrameListSize++] = frameObj.id;
+}
+
//////////////////////////////////////////////////////////////////////
//
// Drawing Functions and Utility Functions
@@ -96,43 +216,42 @@
//
// return the property string for the menu item
//
-function cmActionItem (item, prefix, isMain, idSub, orient, nodeProperties)
+function cmActionItem (item, isMain, idSub, menuInfo, menuID)
{
- var clickOpen = _cmNodeProperties.clickOpen;
- if (nodeProperties.clickOpen)
- clickOpen = nodeProperties.clickOpen;
-
- // var index = _cmItemList.push (item) - 1;
_cmItemList[_cmItemList.length] = item;
var index = _cmItemList.length - 1;
idSub = (!idSub) ? 'null' : ('\'' + idSub + '\'');
- orient = '\'' + orient + '\'';
- prefix = '\'' + prefix + '\'';
+
+ var clickOpen = menuInfo.nodeProperties.clickOpen;
var onClick = (clickOpen == 3) || (clickOpen == 2 && isMain);
+
+ var param = 'this,' + isMain + ',' + idSub + ',' + menuID + ',' + index;
+
var returnStr;
if (onClick)
- returnStr = ' onmouseover="cmItemMouseOver (this,' + prefix + ',' + isMain + ',' + idSub + ',' + index + ')" onmousedown="cmItemMouseDownOpenSub (this,' + index + ',' + prefix + ',' + orient + ',' + idSub + ')"';
+ returnStr = ' onmouseover="cmItemMouseOver(' + param + ',false)" onmousedown="cmItemMouseDownOpenSub (' + param + ')"';
else
- returnStr = ' onmouseover="cmItemMouseOverOpenSub (this,' + prefix + ',' + isMain + ',' + idSub + ',' + orient + ',' + index + ')" onmousedown="cmItemMouseDown (this,' + index + ')"';
- return returnStr + ' onmouseout="cmItemMouseOut (this,' + nodeProperties.delay + ')" onmouseup="cmItemMouseUp (this,' + index + ')"';
+ returnStr = ' onmouseover="cmItemMouseOverOpenSub (' + param + ')" onmousedown="cmItemMouseDown (' + param + ')"';
+ return returnStr + ' onmouseout="cmItemMouseOut (' + param + ')" onmouseup="cmItemMouseUp (' + param + ')"';
}
//
// this one is used by _cmNoClick to only take care of onmouseover and onmouseout
// events which are associated with menu but not actions associated with menu clicking/closing
//
-function cmNoClickItem (item, prefix, isMain, idSub, orient, nodeProperties)
+function cmNoClickItem (item, isMain, idSub, menuInfo, menuID)
{
// var index = _cmItemList.push (item) - 1;
_cmItemList[_cmItemList.length] = item;
var index = _cmItemList.length - 1;
idSub = (!idSub) ? 'null' : ('\'' + idSub + '\'');
- orient = '\'' + orient + '\'';
- prefix = '\'' + prefix + '\'';
- return ' onmouseover="cmItemMouseOver (this,' + prefix + ',' + isMain + ',' + idSub + ',' + index + ')" onmouseout="cmItemMouseOut (this,' + nodeProperties.delay + ')"';
+
+ var param = 'this,' + isMain + ',' + idSub + ',' + menuID + ',' + index;
+
+ return ' onmouseover="cmItemMouseOver (' + param + ')" onmouseout="cmItemMouseOut (' + param + ')"';
}
-function cmNoActionItem (item, prefix)
+function cmNoActionItem (item)
{
return item[1];
}
@@ -156,9 +275,14 @@
//
// draw the sub menu recursively
//
-function cmDrawSubMenu (subMenu, prefix, id, orient, nodeProperties)
+function cmDrawSubMenu (subMenu, prefix, id, nodeProperties, zIndexStart, menuInfo, menuID)
{
- var str = '<div class="' + prefix + 'SubMenu" id="' + id + '"><table summary="sub menu" cellspacing="' + nodeProperties.subSpacing + '" class="' + prefix + 'SubMenuTable">';
+ var str = '<div class="' + prefix + 'SubMenu" id="' + id + '" style="z-index: ' + zIndexStart + ';position: absolute; top: 0px; left: 0px;">';
+ if (nodeProperties.subMenuHeader)
+ str += nodeProperties.subMenuHeader;
+
+ str += '<table summary="sub menu" id="' + id + 'Table" cellspacing="' + nodeProperties.subSpacing + '" class="' + prefix + 'SubMenuTable">';
+
var strSub = '';
var item;
@@ -177,20 +301,22 @@
if (item == _cmSplit)
item = cmSplitItem (prefix, 0, true);
+ item.parentItem = subMenu;
+ item.subMenuID = id;
hasChild = (item.length > 5);
idSub = hasChild ? cmNewID () : null;
str += '<tr class="' + prefix + 'MenuItem"';
if (item[0] != _cmNoClick)
- str += cmActionItem (item, prefix, 0, idSub, orient, nodeProperties);
+ str += cmActionItem (item, 0, idSub, menuInfo, menuID);
else
- str += cmNoClickItem (item, prefix, 0, idSub, orient, nodeProperties);
+ str += cmNoClickItem (item, 0, idSub, menuInfo, menuID);
str += '>'
if (item[0] == _cmNoAction || item[0] == _cmNoClick)
{
- str += cmNoActionItem (item, prefix);
+ str += cmNoActionItem (item);
str += '</tr>';
continue;
}
@@ -212,56 +338,77 @@
if (hasChild)
{
str += nodeProperties.folderRight;
- strSub += cmDrawSubMenu (item, prefix, idSub, orient, nodeProperties);
+ strSub += cmDrawSubMenu (item, prefix, idSub, nodeProperties, zIndexStart + nodeProperties.zIndexInc, menuInfo, menuID);
}
else
str += nodeProperties.itemRight;
str += '</td></tr>';
}
- str += '</table></div>' + strSub;
+ str += '</table>';
+
+ if (nodeProperties.subMenuFooter)
+ str += nodeProperties.subMenuFooter;
+ str += '</div>' + strSub;
return str;
}
//
// The function that builds the menu inside the specified element id.
//
-// @param id id of the element
-// orient orientation of the menu in [hv][ab][lr] format
-// menu the menu object to be drawn
-// nodeProperties properties for each menu node
+// id id of the element
+// orient orientation of the menu in [hv][ub][lr] format
+// menu the menu object to be drawn
+// nodeProperties properties for the theme
+// prefix prefix of the theme
//
function cmDraw (id, menu, orient, nodeProperties, prefix)
{
var obj = cmGetObject (id);
+ if (!prefix)
+ prefix = nodeProperties.prefix;
+ if (!prefix)
+ prefix = '';
if (!nodeProperties)
nodeProperties = _cmNodeProperties;
- if (!prefix)
- prefix = '';
+ if (!orient)
+ orient = 'hbr';
+ var menuID = cmAllocMenu (id, menu, orient, nodeProperties, prefix);
+ var menuInfo = _cmMenuList[menuID];
+
+ // setup potentially missing properties
+ if (!nodeProperties.delay)
+ nodeProperties.delay = _cmNodeProperties.delay;
+ if (!nodeProperties.clickOpen)
+ nodeProperties.clickOpen = _cmNodeProperties.clickOpen;
+ if (!nodeProperties.zIndexStart)
+ nodeProperties.zIndexStart = _cmNodeProperties.zIndexStart;
+ if (!nodeProperties.zIndexInc)
+ nodeProperties.zIndexInc = _cmNodeProperties.zIndexInc;
+ if (!nodeProperties.offsetHMainAdjust)
+ nodeProperties.offsetHMainAdjust = _cmNodeProperties.offsetHMainAdjust;
+ if (!nodeProperties.offsetVMainAdjust)
+ nodeProperties.offsetVMainAdjust = _cmNodeProperties.offsetVMainAdjust;
+ if (!nodeProperties.offsetSubAdjust)
+ nodeProperties.offsetSubAdjust = _cmNodeProperties.offsetSubAdjust;
+ // save user setting on frame masking
+ menuInfo.cmFrameMasking = _cmFrameMasking;
+
var str = '<table summary="main menu" class="' + prefix + 'Menu" cellspacing="' + nodeProperties.mainSpacing + '">';
var strSub = '';
- if (!orient)
- orient = 'hbr';
-
- var orientStr = String (orient);
- var orientSub;
var vertical;
// draw the main menu items
- if (orientStr.charAt (0) == 'h')
+ if (orient.charAt (0) == 'h')
{
- // horizontal menu
- orientSub = 'v' + orientStr.substr (1, 2);
str += '<tr>';
vertical = false;
}
else
{
- // vertical menu
- orientSub = 'v' + orientStr.substr (1, 2);
vertical = true;
}
@@ -279,20 +426,23 @@
if (!item)
continue;
+ item.menu = menu;
+ item.subMenuID = id;
+
str += vertical ? '<tr' : '<td';
str += ' class="' + prefix + 'MainItem"';
hasChild = (item.length > 5);
idSub = hasChild ? cmNewID () : null;
- str += cmActionItem (item, prefix, 1, idSub, orient, nodeProperties) + '>';
+ str += cmActionItem (item, 1, idSub, menuInfo, menuID) + '>';
if (item == _cmSplit)
item = cmSplitItem (prefix, 1, vertical);
if (item[0] == _cmNoAction || item[0] == _cmNoClick)
{
- str += cmNoActionItem (item, prefix);
+ str += cmNoActionItem (item);
str += vertical? '</tr>' : '</td>';
continue;
}
@@ -322,13 +472,12 @@
str += vertical ? '</tr>' : '</td>';
if (hasChild)
- strSub += cmDrawSubMenu (item, prefix, idSub, orientSub, nodeProperties);
+ strSub += cmDrawSubMenu (item, prefix, idSub, nodeProperties, nodeProperties.zIndexStart, menuInfo, menuID);
}
if (!vertical)
str += '</tr>';
str += '</table>' + strSub;
obj.innerHTML = str;
- //document.write ("<xmp>" + str + "</xmp>");
}
//
@@ -359,8 +508,11 @@
var menu = null;
for (var currentDomItem = domMenu.firstChild; currentDomItem; currentDomItem = currentDomItem.nextSibling)
{
- if (!currentDomItem.tagName || currentDomItem.tagName.toLowerCase () != 'ul')
+ if (!currentDomItem.tagName)
continue;
+ var tag = currentDomItem.tagName.toLowerCase ();
+ if (tag != 'ul' && tag != 'ol')
+ continue;
menu = cmDrawFromTextSubMenu (currentDomItem);
break;
}
@@ -385,38 +537,75 @@
}
var item = new Array ();
var currentItem = currentDomItem.firstChild;
+ var hasAction = false;
for (; currentItem; currentItem = currentItem.nextSibling)
{
- // scan for span tag
- if (!currentItem.tagName || currentItem.tagName.toLowerCase () != 'span')
+ // scan for span or div tag
+ if (!currentItem.tagName)
continue;
+ if (currentItem.className == 'cmNoClick')
+ {
+ item[0] = _cmNoClick;
+ item[1] = getActionHTML (currentItem);
+ hasAction = true;
+ break;
+ }
+ if (currentItem.className == 'cmNoAction')
+ {
+ item[0] = _cmNoAction;
+ item[1] = getActionHTML (currentItem);
+ hasAction = true;
+ break;
+ }
+ var tag = currentItem.tagName.toLowerCase ();
+ if (tag != 'span')
+ continue;
if (!currentItem.firstChild)
item[0] = null;
else
item[0] = currentItem.innerHTML;
+ currentItem = currentItem.nextSibling;
break;
}
+ if (hasAction)
+ {
+ items[items.length] = item;
+ continue;
+ }
if (!currentItem)
continue;
for (; currentItem; currentItem = currentItem.nextSibling)
{
- // scan for span tag
- if (!currentItem.tagName || currentItem.tagName.toLowerCase () != 'a')
+ if (!currentItem.tagName)
continue;
- item[1] = currentItem.innerHTML;
- item[2] = currentItem.href;
- item[3] = currentItem.target;
- item[4] = currentItem.title;
- if (item[4] == '')
+ var tag = currentItem.tagName.toLowerCase ();
+ if (tag == 'a')
+ {
+ item[1] = currentItem.innerHTML;
+ item[2] = currentItem.href;
+ item[3] = currentItem.target;
+ item[4] = currentItem.title;
+ if (item[4] == '')
+ item[4] = null;
+ }
+ else if (tag == 'span' || tag == 'div')
+ {
+ item[1] = currentItem.innerHTML;
+ item[2] = null;
+ item[3] = null;
item[4] = null;
+ }
break;
}
for (; currentItem; currentItem = currentItem.nextSibling)
{
// scan for span tag
- if (!currentItem.tagName || currentItem.tagName.toLowerCase () != 'ul')
+ if (!currentItem.tagName)
continue;
+ var tag = currentItem.tagName.toLowerCase ();
+ if (tag != 'ul' && tag != 'ol')
+ continue;
var subMenuItems = cmDrawFromTextSubMenu (currentItem);
for (i = 0; i < subMenuItems.length; ++i)
item[i + 5] = subMenuItems[i];
@@ -427,6 +616,116 @@
return items;
}
+//
+// obtain the actual action item's action, which is inside a
+// table. The first row should be it
+//
+function getActionHTML (htmlNode)
+{
+ var returnVal = '<td></td><td></td><td></td>';
+ var currentDomItem;
+ // find the table first
+ for (currentDomItem = htmlNode.firstChild; currentDomItem; currentDomItem = currentDomItem.nextSibling)
+ {
+ if (currentDomItem.tagName && currentDomItem.tagName.toLowerCase () == 'table')
+ break;
+ }
+ if (!currentDomItem)
+ return returnVal;
+ // skip over tbody
+ for (currentDomItem = currentDomItem.firstChild; currentDomItem; currentDomItem = currentDomItem.nextSibling)
+ {
+ if (currentDomItem.tagName && currentDomItem.tagName.toLowerCase () == 'tbody')
+ break;
+ }
+ if (!currentDomItem)
+ return returnVal;
+ // get the first tr
+ for (currentDomItem = currentDomItem.firstChild; currentDomItem; currentDomItem = currentDomItem.nextSibling)
+ {
+ if (currentDomItem.tagName && currentDomItem.tagName.toLowerCase () == 'tr')
+ break;
+ }
+ if (!currentDomItem)
+ return returnVal;
+ return currentDomItem.innerHTML;
+}
+
+//
+// get the DOM object associated with the item
+//
+function cmGetMenuItem (item)
+{
+ if (!item.subMenuID)
+ return null;
+ var subMenu = cmGetObject (item.subMenuID);
+ // we are dealing with a main menu item
+ if (item.menu)
+ {
+ var menu = item.menu;
+ // skip over table, tbody, tr, reach td
+ subMenu = subMenu.firstChild.firstChild.firstChild.firstChild;
+ var i;
+ for (i = 0; i < menu.length; ++i)
+ {
+ if (menu[i] == item)
+ return subMenu;
+ subMenu = subMenu.nextSibling;
+ }
+ }
+ else if (item.parentItem) // sub menu item
+ {
+ var menu = item.parentItem;
+ var table = cmGetObject (item.subMenuID + 'Table');
+ if (!table)
+ return null;
+ // skip over table, tbody, reach tr
+ subMenu = table.firstChild.firstChild;
+ var i;
+ for (i = 5; i < menu.length; ++i)
+ {
+ if (menu[i] == item)
+ return subMenu;
+ subMenu = subMenu.nextSibling;
+ }
+ }
+ return null;
+}
+
+//
+// disable a menu item
+//
+function cmDisableItem (item, prefix)
+{
+ if (!item)
+ return;
+ var menuItem = cmGetMenuItem (item);
+ if (!menuItem)
+ return;
+ if (item.menu)
+ menuItem.className = prefix + 'MainItemDisabled';
+ else
+ menuItem.className = prefix + 'MenuItemDisabled';
+ item.isDisabled = true;
+}
+
+//
+// enable a menu item
+//
+function cmEnableItem (item, prefix)
+{
+ if (!item)
+ return;
+ var menuItem = cmGetMenuItem (item);
+ if (!menuItem)
+ return;
+ if (item.menu)
+ menu.className = prefix + 'MainItem';
+ else
+ menu.className = prefix + 'MenuItem';
+ item.isDisabled = true;
+}
+
//////////////////////////////////////////////////////////////////////
//
// Mouse Event Handling Functions
@@ -438,13 +737,24 @@
//
// Here we just do things concerning this menu item, w/o opening sub menus.
//
-function cmItemMouseOver (obj, prefix, isMain, idSub, index)
+function cmItemMouseOver (obj, isMain, idSub, menuID, index, calledByOpenSub)
{
+ if (!calledByOpenSub && _cmClicked)
+ {
+ cmItemMouseOverOpenSub (obj, isMain, idSub, menuID, index);
+ return;
+ }
+
clearTimeout (_cmTimeOut);
- if (!obj.cmPrefix)
+ if (_cmItemList[index].isDisabled)
+ return;
+
+ var prefix = _cmMenuList[menuID].prefix;
+
+ if (!obj.cmMenuID)
{
- obj.cmPrefix = prefix;
+ obj.cmMenuID = menuID;
obj.cmIsMain = isMain;
}
@@ -477,7 +787,8 @@
return;
}
- var thatPrefix = _cmCurrentItem.cmPrefix;
+ var thatMenuInfo = _cmMenuList[_cmCurrentItem.cmMenuID];
+ var thatPrefix = thatMenuInfo.prefix;
var thatMenu = cmGetThisMenu (_cmCurrentItem, thatPrefix);
if (thatMenu != thisMenu.cmParentMenu)
@@ -487,7 +798,7 @@
else
_cmCurrentItem.className = thatPrefix + 'MenuItem';
if (thatMenu.id != idSub)
- cmHideMenu (thatMenu, thisMenu, thatPrefix);
+ cmHideMenu (thatMenu, thisMenu, thatMenuInfo);
}
}
@@ -516,24 +827,31 @@
//
// This function also opens sub menu
//
-function cmItemMouseOverOpenSub (obj, prefix, isMain, idSub, orient, index)
+function cmItemMouseOverOpenSub (obj, isMain, idSub, menuID, index)
{
- cmItemMouseOver (obj, prefix, isMain, idSub, index);
+ clearTimeout (_cmTimeOut);
+ if (_cmItemList[index].isDisabled)
+ return;
+
+ cmItemMouseOver (obj, isMain, idSub, menuID, index, true);
+
if (idSub)
{
var subMenu = cmGetObject (idSub);
- cmShowSubMenu (obj, prefix, subMenu, orient);
+ var menuInfo = _cmMenuList[menuID];
+ var orient = menuInfo.orient;
+ var prefix = menuInfo.prefix;
+ cmShowSubMenu (obj, isMain, subMenu, menuInfo);
}
}
//
// action should be taken for mouse moving out of the menu item
//
-function cmItemMouseOut (obj, delayTime)
+function cmItemMouseOut (obj, isMain, idSub, menuID, index)
{
- if (!delayTime)
- delayTime = _cmNodeProperties.delay;
+ var delayTime = _cmMenuList[menuID].nodeProperties.delay;
_cmTimeOut = window.setTimeout ('cmHideMenuTime ()', delayTime);
window.defaultStatus = '';
}
@@ -541,14 +859,18 @@
//
// action should be taken for mouse button down at a menu item
//
-function cmItemMouseDown (obj, index)
+function cmItemMouseDown (obj, isMain, idSub, menuID, index)
{
+ if (_cmItemList[index].isDisabled)
+ return;
+
if (cmIsDefaultItem (_cmItemList[index]))
{
+ var prefix = _cmMenuList[menuID].prefix;
if (obj.cmIsMain)
- obj.className = obj.cmPrefix + 'MainItemActive';
+ obj.className = prefix + 'MainItemActive';
else
- obj.className = obj.cmPrefix + 'MenuItemActive';
+ obj.className = prefix + 'MenuItemActive';
}
}
@@ -556,22 +878,30 @@
// action should be taken for mouse button down at a menu item
// this is one also opens submenu if needed
//
-function cmItemMouseDownOpenSub (obj, index, prefix, orient, idSub)
+function cmItemMouseDownOpenSub (obj, isMain, idSub, menuID, index)
{
- cmItemMouseDown (obj, index);
+ if (_cmItemList[index].isDisabled)
+ return;
+ _cmClicked = true;
+ cmItemMouseDown (obj, isMain, idSub, menuID, index);
+
if (idSub)
{
var subMenu = cmGetObject (idSub);
- cmShowSubMenu (obj, prefix, subMenu, orient);
+ var menuInfo = _cmMenuList[menuID];
+ cmShowSubMenu (obj, isMain, subMenu, menuInfo);
}
}
//
// action should be taken for mouse button up at a menu item
//
-function cmItemMouseUp (obj, index)
+function cmItemMouseUp (obj, isMain, idSub, menuID, index)
{
+ if (_cmItemList[index].isDisabled)
+ return;
+
var item = _cmItemList[index];
var link = null, target = '_self';
@@ -583,10 +913,12 @@
if (link != null)
{
+ _cmClicked = false;
window.open (link, target);
}
- var prefix = obj.cmPrefix;
+ var menuInfo = _cmMenuList[menuID];
+ var prefix = menuInfo.prefix;
var thisMenu = cmGetThisMenu (obj, prefix);
var hasChild = (item.length > 5);
@@ -599,7 +931,7 @@
else
obj.className = prefix + 'MenuItem';
}
- cmHideMenu (thisMenu, null, prefix);
+ cmHideMenu (thisMenu, null, menuInfo);
}
else
{
@@ -622,12 +954,25 @@
//
// move submenu to the appropriate location
//
-// @param obj the menu item that opens up the subMenu
-// subMenu the sub menu to be shown
-// orient the orientation of the subMenu
-//
-function cmMoveSubMenu (obj, subMenu, orient)
+function cmMoveSubMenu (obj, isMain, subMenu, menuInfo)
{
+ var orient = menuInfo.orient;
+
+ var offsetAdjust;
+
+ if (isMain)
+ {
+ if (orient.charAt (0) == 'h')
+ offsetAdjust = menuInfo.nodeProperties.offsetHMainAdjust;
+ else
+ offsetAdjust = menuInfo.nodeProperties.offsetVMainAdjust;
+ }
+ else
+ offsetAdjust = menuInfo.nodeProperties.offsetSubAdjust;
+
+ if (!isMain && orient.charAt (0) == 'h')
+ orient = 'v' + orient.charAt (1) + orient.charAt (2);
+
var mode = String (orient);
var p = subMenu.offsetParent;
var subMenuWidth = cmGetWidth (subMenu);
@@ -635,25 +980,50 @@
if (mode.charAt (0) == 'h')
{
if (mode.charAt (1) == 'b')
- subMenu.style.top = (cmGetYAt (obj, p) + cmGetHeight (obj)) + 'px';
+ subMenu.style.top = (cmGetYAt (obj, p) + cmGetHeight (obj) + offsetAdjust[1]) + 'px';
else
- subMenu.style.top = (cmGetYAt (obj, p) - cmGetHeight (subMenu)) + 'px';
+ subMenu.style.top = (cmGetYAt (obj, p) - cmGetHeight (subMenu) - offsetAdjust[1]) + 'px';
if (horiz == 'r')
- subMenu.style.left = (cmGetXAt (obj, p)) + 'px';
+ subMenu.style.left = (cmGetXAt (obj, p) + offsetAdjust[0]) + 'px';
else
- subMenu.style.left = (cmGetXAt (obj, p) + cmGetWidth (obj) - subMenuWidth) + 'px';
+ subMenu.style.left = (cmGetXAt (obj, p) + cmGetWidth (obj) - subMenuWidth - offsetAdjust[0]) + 'px';
}
else
{
if (horiz == 'r')
- subMenu.style.left = (cmGetXAt (obj, p) + cmGetWidth (obj)) + 'px';
+ subMenu.style.left = (cmGetXAt (obj, p) + cmGetWidth (obj) + offsetAdjust[0]) + 'px';
else
- subMenu.style.left = (cmGetXAt (obj, p) - subMenuWidth) + 'px';
+ subMenu.style.left = (cmGetXAt (obj, p) - subMenuWidth - offsetAdjust[0]) + 'px';
if (mode.charAt (1) == 'b')
- subMenu.style.top = (cmGetYAt (obj, p)) + 'px';
+ subMenu.style.top = (cmGetYAt (obj, p) + offsetAdjust[1]) + 'px';
else
- subMenu.style.top = (cmGetYAt (obj, p) + cmGetHeight (obj) - cmGetHeight (subMenu)) + 'px';
+ subMenu.style.top = (cmGetYAt (obj, p) + cmGetHeight (obj) - cmGetHeight (subMenu) + offsetAdjust[1]) + 'px';
}
+
+ // IE specific iframe masking method
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (menuInfo.cmFrameMasking)
+ {
+ if (!subMenu.cmFrameObj)
+ {
+ var frameObj = cmAllocFrame ();
+ subMenu.cmFrameObj = frameObj;
+ }
+
+ var frameObj = subMenu.cmFrameObj;
+ frameObj.style.zIndex = subMenu.style.zIndex - 1;
+ frameObj.style.left = (cmGetX (subMenu) - cmGetX (frameObj.offsetParent)) + 'px';
+ frameObj.style.top = (cmGetY (subMenu) - cmGetY (frameObj.offsetParent)) + 'px';
+ frameObj.style.width = cmGetWidth (subMenu) + 'px';
+ frameObj.style.height = cmGetHeight (subMenu) + 'px';
+ frameObj.style.display = 'block';
+ }
+ @end
+ @*/
+ if (horiz != orient.charAt (2))
+ orient = orient.charAt (0) + orient.charAt (1) + horiz;
+ return orient;
}
//
@@ -703,12 +1073,10 @@
// show the subMenu w/ specified orientation
// also move it to the correct coordinates
//
-// @param obj the menu item that opens up the subMenu
-// subMenu the sub menu to be shown
-// orient the orientation of the subMenu
-//
-function cmShowSubMenu (obj, prefix, subMenu, orient)
+function cmShowSubMenu (obj, isMain, subMenu, menuInfo)
{
+ var prefix = menuInfo.prefix;
+
if (!subMenu.cmParentMenu)
{
// establish the tree w/ back edge
@@ -716,35 +1084,68 @@
subMenu.cmParentMenu = thisMenu;
if (!thisMenu.cmSubMenu)
thisMenu.cmSubMenu = new Array ();
- //thisMenu.cmSubMenu.push (subMenu);
thisMenu.cmSubMenu[thisMenu.cmSubMenu.length] = subMenu;
}
- // position the sub menu
- cmMoveSubMenu (obj, subMenu, orient);
- subMenu.style.visibility = 'visible';
+ var effectInstance = subMenu.cmEffect;
+ if (effectInstance)
+ effectInstance.showEffect (true);
+ else
+ {
+ // position the sub menu only if we are not already showing the submenu
+ var orient = cmMoveSubMenu (obj, isMain, subMenu, menuInfo);
+ subMenu.cmOrient = orient;
- //
- // On IE, controls such as SELECT, OBJECT, IFRAME (before 5.5)
- // are window based controls. So, if the sub menu and these
- // controls overlap, sub menu would be hidden behind them. Thus
- // one needs to turn the visibility of these controls off when the
- // sub menu is showing, and turn their visibility back on
- // when the sub menu is hiding.
- //
- if (document.all) // it is IE
+ var forceShow = false;
+ if (subMenu.style.visibility != 'visible' && menuInfo.nodeProperties.effect)
+ {
+ try
+ {
+ effectInstance = menuInfo.nodeProperties.effect.getInstance (subMenu, orient);
+ effectInstance.showEffect (false);
+ }
+ catch (e)
+ {
+ forceShow = true;
+ subMenu.cmEffect = null;
+ }
+ }
+ else
+ forceShow = true;
+
+ if (forceShow)
+ {
+ subMenu.style.visibility = 'visible';
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (subMenu.cmFrameObj)
+ subMenu.cmFrameObj.style.display = 'block';
+ @end
+ @*/
+ }
+ }
+
+ if (!_cmHideObjects)
{
- /* part of Felix Zaslavskiy's fix on hiding controls
- not really sure if this part is necessary, but shouldn't
- hurt. */
+ _cmHideObjects = 2; // default = not hide, may change behavior later
+ try
+ {
+ if (window.opera)
+ {
+ if (parseInt (navigator.appVersion) < 9)
+ _cmHideObjects = 1;
+ }
+ }
+ catch (e)
+ {
+ }
+ }
+
+ if (_cmHideObjects == 1)
+ {
if (!subMenu.cmOverlap)
subMenu.cmOverlap = new Array ();
-/*@cc_on @*/
-/*@if (@_jscript_version >= 5.5)
- at else @*/
cmHideControl ("IFRAME", subMenu);
-/*@end @*/
- cmHideControl ("SELECT", subMenu);
cmHideControl ("OBJECT", subMenu);
}
}
@@ -762,6 +1163,16 @@
for (i = 0; i < items.length; ++i)
{
if (items[i].cmIsMain)
+ {
+ if (items[i].className == (prefix + 'MainItemDisabled'))
+ continue;
+ }
+ else
+ {
+ if (items[i].className == (prefix + 'MenuItemDisabled'))
+ continue;
+ }
+ if (items[i].cmIsMain)
str = prefix + 'MainItem';
else
str = prefix + 'MenuItem';
@@ -776,21 +1187,57 @@
//
function cmHideMenuTime ()
{
+ _cmClicked = false;
if (_cmCurrentItem)
{
- var prefix = _cmCurrentItem.cmPrefix;
- cmHideMenu (cmGetThisMenu (_cmCurrentItem, prefix), null, prefix);
+ var menuInfo = _cmMenuList[_cmCurrentItem.cmMenuID];
+ var prefix = menuInfo.prefix;
+ cmHideMenu (cmGetThisMenu (_cmCurrentItem, prefix), null, menuInfo);
_cmCurrentItem = null;
}
}
//
+// Only hides this menu
+//
+function cmHideThisMenu (thisMenu, menuInfo)
+{
+ var effectInstance = thisMenu.cmEffect;
+ if (effectInstance)
+ effectInstance.hideEffect (true);
+ else
+ {
+ thisMenu.style.visibility = 'hidden';
+ thisMenu.style.top = '0px';
+ thisMenu.style.left = '0px';
+ thisMenu.cmOrient = null;
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (thisMenu.cmFrameObj)
+ {
+ var frameObj = thisMenu.cmFrameObj;
+ frameObj.style.display = 'none';
+ frameObj.style.width = '1px';
+ frameObj.style.height = '1px';
+ thisMenu.cmFrameObj = null;
+ cmFreeFrame (frameObj);
+ }
+ @end
+ @*/
+ }
+
+ cmShowControl (thisMenu);
+ thisMenu.cmItems = null;
+}
+
+//
// hide thisMenu, children of thisMenu, as well as the ancestor
// of thisMenu until currentMenu is encountered. currentMenu
// will not be hidden
//
-function cmHideMenu (thisMenu, currentMenu, prefix)
+function cmHideMenu (thisMenu, currentMenu, menuInfo)
{
+ var prefix = menuInfo.prefix;
var str = prefix + 'SubMenu';
// hide the down stream menus
@@ -799,7 +1246,7 @@
var i;
for (i = 0; i < thisMenu.cmSubMenu.length; ++i)
{
- cmHideSubMenu (thisMenu.cmSubMenu[i], prefix);
+ cmHideSubMenu (thisMenu.cmSubMenu[i], menuInfo);
}
}
@@ -809,8 +1256,7 @@
cmResetMenu (thisMenu, prefix);
if (thisMenu.className == str)
{
- thisMenu.style.visibility = 'hidden';
- cmShowControl (thisMenu);
+ cmHideThisMenu (thisMenu, menuInfo);
}
else
break;
@@ -822,7 +1268,7 @@
// hide thisMenu as well as its sub menus if thisMenu is not
// already hidden
//
-function cmHideSubMenu (thisMenu, prefix)
+function cmHideSubMenu (thisMenu, menuInfo)
{
if (thisMenu.style.visibility == 'hidden')
return;
@@ -831,12 +1277,12 @@
var i;
for (i = 0; i < thisMenu.cmSubMenu.length; ++i)
{
- cmHideSubMenu (thisMenu.cmSubMenu[i], prefix);
+ cmHideSubMenu (thisMenu.cmSubMenu[i], menuInfo);
}
}
+ var prefix = menuInfo.prefix;
cmResetMenu (thisMenu, prefix);
- thisMenu.style.visibility = 'hidden';
- cmShowControl (thisMenu);
+ cmHideThisMenu (thisMenu, menuInfo);
}
//
@@ -872,12 +1318,12 @@
// submenu then we dont want to put it on overlap list of
// of a submenu a second time.
// - bug fixed by Felix Zaslavskiy
- if(obj.style.visibility == "hidden")
+ if(obj.style.visibility == 'hidden')
continue;
//subMenu.cmOverlap.push (obj);
subMenu.cmOverlap[subMenu.cmOverlap.length] = obj;
- obj.style.visibility = "hidden";
+ obj.style.visibility = 'hidden';
}
}
@@ -913,6 +1359,35 @@
}
//
+// A special effect function to hook the menu which contains
+// special effect object to the timer.
+//
+function cmTimeEffect (menuID, show, delayTime)
+{
+ window.setTimeout ('cmCallEffect("' + menuID + '",' + show + ')', delayTime);
+}
+
+//
+// A special effect function. Called by timer.
+//
+function cmCallEffect (menuID, show)
+{
+ var menu = cmGetObject (menuID);
+ if (!menu || !menu.cmEffect)
+ return;
+ try
+ {
+ if (show)
+ menu.cmEffect.showEffect (false);
+ else
+ menu.cmEffect.hideEffect (false);
+ }
+ catch (e)
+ {
+ }
+}
+
+//
// return true if this item is handled using default handlers
//
function cmIsDefaultItem (item)
@@ -968,6 +1443,8 @@
//
function cmGetX (obj)
{
+ if (!obj)
+ return 0;
var x = 0;
do
@@ -995,6 +1472,8 @@
function cmGetY (obj)
{
+ if (!obj)
+ return 0;
var y = 0;
do
{
@@ -1039,7 +1518,6 @@
//
// extract description from the menu item and set the status text
-// @param item the menu item
//
function cmSetStatus (item)
{
@@ -1069,6 +1547,40 @@
return msg;
}
+/* v2.0.3 1. Fix an issue with IE6 displaying menu over HTTPS connection.
+ Thanks to Paul Horton for reporting the bug and testing
+ possible solutions. */
+/* v2.0.2 1. Minor clean up and some attempts to reduce memory leak in IE. */
+/* v2.0.1 1. Disable iframe masking for IE7 since it is no longer necessary. */
+/* v2.0 1. improves the way handling flash/iframe/select boxes in IE
+ and firefox and Opera 9. Hiding these elements is no
+ longer necessary. For older versions of Opera, flash/iframe
+ still need to be hidden.
+ 2. Improves cmDrawFromText (). Also allows custom actions.
+ 3. Improves clickOpen behavior. Now once a submenu is opened,
+ opening other sub menus no longer requires clicking.
+ 4. Special Effects. This version has hooks that allow people
+ to install special effects to various themes.
+ 5. For a given menu item, cmGetMenuitem(item) provides the ability
+ to find the corresponding DOM element.
+ 6. Disable API. If you know which item to disable, you can call
+ cmDisableItem(item, themePrefix) and cmEnableItem(item, themePrefix).
+ However, you will have to provide your own CSS for the item.
+ For purposes other than to disable an item, cmGetMenuItem (item)
+ is provided for locating HTML DOM element of the menu item in concern.
+ 7. Better z-index. Now you can specify in the theme property the
+ starting z-index and incremental step for submenus.
+ 8. Allow themes to insert additional elements before and after
+ the sub menu table.
+ 9. Improved themes. More organized and easier to customize.
+ 10. Add a flag to control hiding/nohiding objects/iframes. By default,
+ only Opera before 9 hides objects.
+ 11. Add new property options to control submenu positions to fine tune
+ the look.
+ 12. It is no longer necessary to specify the theme name while calling
+ cmDraw and cmDrawFromText. Currently it still accepts it, but it
+ will not in the future.
+*/
/* v1.4.4 1. a quick fix for a bug for _cmSplit checking. reported by
Son Nguyen.
*/
Modified: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.css
===================================================================
--- plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.css 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.css 2008-01-27 18:25:22 UTC (rev 6176)
@@ -2,6 +2,9 @@
.ThemeOfficeMenu,.ThemeOfficeSubMenuTable
{
+ font-family: verdana, arial, sans-serif;
+ font-size: 13px;
+
padding: 0;
white-space: nowrap;
@@ -12,25 +15,34 @@
{
position: absolute;
visibility: hidden;
+ overflow: hidden;
- /*
- Netscape/Mozilla renders borders by increasing
- their z-index. The following line is necessary
- to cover any borders underneath
- */
- z-index: 100;
- border: 0;
- padding: 0;
+ padding: 0px;
+ border: 0px;
- overflow: visible;
- border: 1px solid #8C867B;
+ background-color: transparent;
+}
-/* filter:progid:DXImageTransform.Microsoft.Shadow(color=#BDC3BD, Direction=135, Strength=4);*/
+.ThemeOfficeSubMenuShadow
+{
+ z-index: -1;
+ position: absolute;
+ top: 9px;
+ left: 9px;
+ width: 100%;
+ height: 300em;
+ background-color: black;
+ opacity: 0.15;
+ border: 0;
+ margin: 0;
}
.ThemeOfficeSubMenuTable
{
- overflow: visible;
+ border: 1px solid #ADAA9C;
+ background-color: white;
+ padding: 1px;
+ margin: 0px 2px 2px 0px;
}
.ThemeOfficeMainItem,.ThemeOfficeMainItemHover,.ThemeOfficeMainItemActive,
@@ -41,6 +53,8 @@
white-space: nowrap;
}
+/* common background color to both horizontal and vertical menus */
+
.ThemeOfficeMainItem
{
background-color: inherit;
@@ -83,179 +97,169 @@
.ThemeOfficeMainFolderRight,.ThemeOfficeMainItemRight
{
background-color: inherit;
+ white-space: nowrap;
}
/* vertical main menu sub components */
-td.ThemeOfficeMainFolderLeft,td.ThemeOfficeMainItemLeft
+td.ThemeOfficeMainFolderLeft,
+td.ThemeOfficeMainItemLeft
{
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 0px;
- padding-right: 2px;
+ padding: 3px 2px 3px 1px;
- border-top: 1px solid #3169C6;
- border-bottom: 1px solid #3169C6;
- border-left: 1px solid #3169C6;
-
+ border: 0;
background-color: inherit;
+ white-space: nowrap;
}
-td.ThemeOfficeMainFolderText,td.ThemeOfficeMainItemText
+td.ThemeOfficeMainFolderText,
+td.ThemeOfficeMainItemText
{
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 5px;
- padding-right: 5px;
+ padding: 3px 5px 3px 5px;
- border-top: 1px solid #3169C6;
- border-bottom: 1px solid #3169C6;
-
+ border: 0;
background-color: inherit;
white-space: nowrap;
}
-td.ThemeOfficeMainFolderRight,td.ThemeOfficeMainItemRight
+td.ThemeOfficeMainItemRight,
+td.ThemeOfficeMainFolderRight
{
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 0px;
- padding-right: 0px;
+ padding: 3px 1px 3px 0px;
- border-top: 1px solid #3169C6;
- border-bottom: 1px solid #3169C6;
- border-right: 1px solid #3169C6;
-
+ border: 0;
background-color: inherit;
+ white-space: nowrap;
}
-tr.ThemeOfficeMainItem td.ThemeOfficeMainFolderLeft,
-tr.ThemeOfficeMainItem td.ThemeOfficeMainItemLeft
+
+tr.ThemeOfficeMainItemHover td.ThemeOfficeMainFolderLeft,
+tr.ThemeOfficeMainItemActive td.ThemeOfficeMainFolderLeft,
+tr.ThemeOfficeMainItemHover td.ThemeOfficeMainItemLeft,
+tr.ThemeOfficeMainItemActive td.ThemeOfficeMainItemLeft
{
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 1px;
- padding-right: 2px;
+ padding: 2px 2px 2px 0px;
- white-space: nowrap;
-
- border: 0;
- background-color: inherit;
+ border-width: 1px 0px 1px 1px;
+ border-style: solid;
+ border-color: #3169C6;
}
-tr.ThemeOfficeMainItem td.ThemeOfficeMainFolderText,
-tr.ThemeOfficeMainItem td.ThemeOfficeMainItemText
+tr.ThemeOfficeMainItemHover td.ThemeOfficeMainFolderText,
+tr.ThemeOfficeMainItemActive td.ThemeOfficeMainFolderText,
+tr.ThemeOfficeMainItemHover td.ThemeOfficeMainItemText,
+tr.ThemeOfficeMainItemActive td.ThemeOfficeMainItemText
{
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 5px;
- padding-right: 5px;
+ padding: 2px 5px 2px 5px;
- border: 0;
- background-color: inherit;
+ border-width: 1px 0px 1px 0px;
+ border-style: solid;
+ border-color: #3169C6;
}
-tr.ThemeOfficeMainItem td.ThemeOfficeMainItemRight,
-tr.ThemeOfficeMainItem td.ThemeOfficeMainFolderRight
+tr.ThemeOfficeMainItemHover td.ThemeOfficeMainFolderRight,
+tr.ThemeOfficeMainItemActive td.ThemeOfficeMainFolderRight,
+tr.ThemeOfficeMainItemHover td.ThemeOfficeMainItemRight,
+tr.ThemeOfficeMainItemActive td.ThemeOfficeMainItemRight
{
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 0px;
- padding-right: 1px;
+ padding: 2px 0px 2px 0px;
- border: 0;
- background-color: inherit;
+ border-width: 1px 1px 1px 0px;
+ border-style: solid;
+ border-color: #3169C6;
}
/* sub menu sub components */
-.ThemeOfficeMenuFolderLeft,.ThemeOfficeMenuItemLeft
+.ThemeOfficeMenuItem
{
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 1px;
- padding-right: 3px;
+ background-color: white;
+}
- border-top: 1px solid #3169C6;
- border-bottom: 1px solid #3169C6;
- border-left: 1px solid #3169C6;
+.ThemeOfficeMenuItemHover,.ThemeOfficeMenuItemActive
+{
+ background-color: #C6D3EF;
+}
- background-color: inherit;
+.ThemeOfficeMenuFolderLeft,
+.ThemeOfficeMenuItemLeft
+{
+ padding: 3px 3px 3px 2px;
+ border: 0;
+
white-space: nowrap;
+
+ background-color: #EFEFDE;
}
-.ThemeOfficeMenuFolderText,.ThemeOfficeMenuItemText
+.ThemeOfficeMenuFolderText,
+.ThemeOfficeMenuItemText
{
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 5px;
- padding-right: 5px;
+ padding: 3px 5px 3px 5px;
+ border: 0;
- border-top: 1px solid #3169C6;
- border-bottom: 1px solid #3169C6;
-
- background-color: inherit;
white-space: nowrap;
}
-.ThemeOfficeMenuFolderRight,.ThemeOfficeMenuItemRight
+.ThemeOfficeMenuFolderRight,
+.ThemeOfficeMenuItemRight
{
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 0px;
- padding-right: 0px;
+ padding: 3px 1px 3px 0px;
+ border: 0;
- border-top: 1px solid #3169C6;
- border-bottom: 1px solid #3169C6;
- border-right: 1px solid #3169C6;
-
- background-color: inherit;
white-space: nowrap;
}
-.ThemeOfficeMenuItem .ThemeOfficeMenuFolderLeft,
-.ThemeOfficeMenuItem .ThemeOfficeMenuItemLeft
+.ThemeOfficeMenuItemHover .ThemeOfficeMenuFolderLeft,
+.ThemeOfficeMenuItemActive .ThemeOfficeMenuFolderLeft,
+.ThemeOfficeMenuItemHover .ThemeOfficeMenuItemLeft,
+.ThemeOfficeMenuItemActive .ThemeOfficeMenuItemLeft
{
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 2px;
- padding-right: 3px;
+ padding: 2px 3px 2px 1px;
- white-space: nowrap;
+ background-color: #C6D3EF;
- border: 0;
- background-color: #EFEFDE;
+ border-width: 1px 0px 1px 1px;
+ border-style: solid;
+ border-color: #3169C6;
}
-.ThemeOfficeMenuItem .ThemeOfficeMenuFolderText,
-.ThemeOfficeMenuItem .ThemeOfficeMenuItemText
+.ThemeOfficeMenuItemHover .ThemeOfficeMenuFolderText,
+.ThemeOfficeMenuItemActive .ThemeOfficeMenuFolderText,
+.ThemeOfficeMenuItemHover .ThemeOfficeMenuItemText,
+.ThemeOfficeMenuItemActive .ThemeOfficeMenuItemText
{
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 5px;
- padding-right: 5px;
+ padding: 2px 5px 2px 5px;
- border: 0;
- background-color: inherit;
+ border-width: 1px 0px 1px 0px;
+ border-style: solid;
+ border-color: #3169C6;
}
-.ThemeOfficeMenuItem .ThemeOfficeMenuFolderRight,
-.ThemeOfficeMenuItem .ThemeOfficeMenuItemRight
+.ThemeOfficeMenuItemHover .ThemeOfficeMenuFolderRight,
+.ThemeOfficeMenuItemActive .ThemeOfficeMenuFolderRight,
+.ThemeOfficeMenuItemHover .ThemeOfficeMenuItemRight,
+.ThemeOfficeMenuItemActive .ThemeOfficeMenuItemRight
{
- padding-top: 1px;
- padding-bottom: 1px;
- padding-left: 0px;
- padding-right: 1px;
+ padding: 2px 0px 2px 0px;
- border: 0;
- background-color: inherit;
+ border-width: 1px 1px 1px 0px;
+ border-style: solid;
+ border-color: #3169C6;
}
/* menu splits */
-.ThemeOfficeMenuSplit
+td.ThemeOfficeMenuSplit
{
- margin: 2px;
+ margin: 0px;
+ padding: 0px;
+ border: 0px;
+}
+
+div.ThemeOfficeMenuSplit
+{
+ margin: 3px;
height: 1px;
overflow: hidden;
background-color: inherit;
Modified: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.js
===================================================================
--- plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.js 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice/theme.js 2008-01-27 18:25:22 UTC (rev 6176)
@@ -17,6 +17,7 @@
var cmThemeOffice =
{
+ prefix: 'ThemeOffice',
// main menu display attributes
//
// Note. When the menu bar is horizontal,
@@ -36,23 +37,33 @@
// sub menu display attributes
- // 0, HTML code to the left of the folder item
+ // HTML code to the left of the folder item
folderLeft: '<img alt="" src="' + cmThemeOfficeBase + 'spacer.gif">',
- // 1, HTML code to the right of the folder item
+ // HTML code to the right of the folder item
folderRight: '<img alt="" src="' + cmThemeOfficeBase + 'arrow.gif">',
- // 2, HTML code to the left of the regular item
+ // HTML code to the left of the regular item
itemLeft: '<img alt="" src="' + cmThemeOfficeBase + 'spacer.gif">',
- // 3, HTML code to the right of the regular item
+ // HTML code to the right of the regular item
itemRight: '<img alt="" src="' + cmThemeOfficeBase + 'blank.gif">',
- // 4, cell spacing for main menu
+ // cell spacing for main menu
mainSpacing: 0,
- // 5, cell spacing for sub menus
+ // cell spacing for sub menus
subSpacing: 0,
- // 6, auto dispear time for submenus in milli-seconds
- delay: 500
+
+ subMenuHeader: '<div class="ThemeOfficeSubMenuShadow"></div>',
+
+ offsetHMainAdjust: [-1, 0],
+ offsetSubAdjust: [-1, -1]
+
+ // rest use default settings
};
// for horizontal menu split
-var cmThemeOfficeHSplit = [_cmNoClick, '<td class="ThemeOfficeMenuItemLeft"></td><td colspan="2"><div class="ThemeOfficeMenuSplit"></div></td>'];
-var cmThemeOfficeMainHSplit = [_cmNoClick, '<td class="ThemeOfficeMainItemLeft"></td><td colspan="2"><div class="ThemeOfficeMenuSplit"></div></td>'];
+var cmThemeOfficeHSplit = [_cmNoClick, '<td class="ThemeOfficeMenuItemLeft"></td><td colspan="2" class="ThemeOfficeMenuSplit"><div class="ThemeOfficeMenuSplit"></div></td>'];
+var cmThemeOfficeMainHSplit = [_cmNoClick, '<td class="ThemeOfficeMainItemLeft"></td><td colspan="2" class="ThemeOfficeMenuSplit"><div class="ThemeOfficeMenuSplit"></div></td>'];
var cmThemeOfficeMainVSplit = [_cmNoClick, '|'];
+
+/* IE can't do negative margin on tables */
+/*@cc_on
+ cmThemeOffice.subMenuHeader = '<div class="ThemeOfficeSubMenuShadow" style="background-color: #cccccc; filter: alpha(opacity=35);"></div>';
+@*/
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003 (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrow.gif
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrow.gif (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/arrow.gif)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrowdown.gif
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/arrowdown.gif (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/arrowdown.gif)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/blank.gif
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/blank.gif (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/blank.gif)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.gif
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.gif (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/mainmenubg.gif)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.png
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/mainmenubg.png (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/mainmenubg.png)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.gif
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.gif (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/menubg.gif)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.png
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/menubg.png (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/menubg.png)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/spacer.gif
===================================================================
(Binary files differ)
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/spacer.gif (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/spacer.gif)
===================================================================
(Binary files differ)
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css
===================================================================
--- plog/trunk/js/JSCookMenu/ThemeOffice2003/theme.css 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,266 +0,0 @@
-/* ThemeOffice2003Menu Style Sheet */
-
-.ThemeOffice2003Menu,.ThemeOffice2003SubMenuTable
-{
- font-family: verdana, arial, sans-serif;
- font-size: 13px;
-
- padding: 0;
-
- white-space: nowrap;
- cursor: default;
-}
-
-.ThemeOffice2003SubMenu
-{
- position: absolute;
- visibility: hidden;
- overflow: hidden;
-
- padding: 1px 1px 1px 1px;
-
- background: #F6F6F6 url(menubg.gif) repeat-y scroll 0%;
- background-position: left;
-
- border: 1px solid #002D96;
-}
-
-.ThemeOffice2003SubMenuTable
-{
- overflow: hidden;
-}
-
-.ThemeOffice2003MainItem,.ThemeOffice2003MainItemHover,.ThemeOffice2003MainItemActive,
-.ThemeOffice2003MenuItem,.ThemeOffice2003MenuItemHover,.ThemeOffice2003MenuItemActive
-{
- border: 0;
- cursor: default;
- white-space: nowrap;
-}
-
-.ThemeOffice2003MainItem
-{
- background-color: inherit;
- font-weight: bold;
-}
-
-.ThemeOffice2003MainItemHover,.ThemeOffice2003MainItemActive
-{
- background: url(mainmenubg.gif);
- font-weight: bold;
-}
-
-.ThemeOffice2003MenuItem
-{
- background-color: transparent;
-}
-
-.ThemeOffice2003MenuItemHover,.ThemeOffice2003MenuItemActive
-{
- background-color: #FFEEC2;
-}
-
-
-/* horizontal main menu */
-
-.ThemeOffice2003MainItem
-{
- padding: 1px;
- border: 0;
-}
-
-td.ThemeOffice2003MainItemHover,td.ThemeOffice2003MainItemActive
-{
- padding: 0px;
- border: 1px solid #000080;
-}
-
-.ThemeOffice2003MainFolderLeft,.ThemeOffice2003MainItemLeft,
-.ThemeOffice2003MainFolderText,.ThemeOffice2003MainItemText,
-.ThemeOffice2003MainFolderRight,.ThemeOffice2003MainItemRight
-{
- background-color: inherit;
-}
-
-/* vertical main menu sub components */
-
-td.ThemeOffice2003MainFolderLeft,
-td.ThemeOffice2003MainFolderLeft,
-td.ThemeOffice2003MainItemLeft,
-td.ThemeOffice2003MainItemLeft
-{
- padding: 1px 2px 1px 1px;
-
- border: 0;
- background-color: inherit;
-}
-
-td.ThemeOffice2003MainFolderText,
-td.ThemeOffice2003MainFolderText,
-td.ThemeOffice2003MainItemText,
-td.ThemeOffice2003MainItemText
-{
- padding: 1px 5px 1px 5px;
-
- border: 0;
- background-color: inherit;
-}
-
-td.ThemeOffice2003MainItemRight,
-td.ThemeOffice2003MainFolderRight
-{
- padding: 1px 1px 1px 0px;
-
- border: 0;
-
- background-color: inherit;
-}
-
-
-tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainFolderLeft,
-tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainFolderLeft,
-tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainItemLeft,
-tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainItemLeft
-{
- padding: 0px 2px 0px 0px;
-
- border-width: 1px 0px 1px 1px;
- border-style: solid;
- border-color: #000080;
-
- background-color: inherit;
-}
-
-tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainFolderText,
-tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainFolderText,
-tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainItemText,
-tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainItemText
-{
- padding: 0px 5px 0px 5px;
-
- border-width: 1px 0px 1px 0px;
- border-style: solid;
- border-color: #000080;
-
- background-color: inherit;
-}
-
-tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainFolderRight,
-tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainFolderRight,
-tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainItemRight,
-tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainItemRight
-{
- padding: 0px;
-
- border-width: 1px 1px 1px 0px;
- border-style: solid;
- border-color: #000080;
-
- background-color: inherit;
-}
-
-/* sub menu sub components */
-
-.ThemeOffice2003MenuFolderLeft,.ThemeOffice2003MenuItemLeft,
-.ThemeOffice2003MenuFolderText,.ThemeOffice2003MenuItemText,
-.ThemeOffice2003MenuFolderRight,.ThemeOffice2003MenuItemRight
-{
- border: 0;
- white-space: nowrap;
- background-color: inherit;
-}
-
-
-.ThemeOffice2003MenuFolderLeft,
-.ThemeOffice2003MenuItemLeft
-{
- padding: 3px 3px 3px 2px;
-}
-
-.ThemeOffice2003MenuFolderText,
-.ThemeOffice2003MenuItemText
-{
- padding: 3px 5px 3px 5px;
- white-space: nowrap;
-}
-
-.ThemeOffice2003MenuFolderRight,
-.ThemeOffice2003MenuItemRight
-{
- padding: 3px 1px 3px 0px;
-}
-
-.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuFolderLeft,
-.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuFolderLeft,
-.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuItemLeft,
-.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuItemLeft
-{
- padding: 2px 3px 2px 1px;
-
- border-width: 1px 0px 1px 1px;
- border-style: solid;
- border-color: #000080;
-}
-
-.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuFolderText,
-.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuFolderText,
-.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuItemText,
-.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuItemText
-{
- padding: 2px 5px 2px 5px;
-
- border-width: 1px 0px 1px 0px;
- border-style: solid;
- border-color: #000080;
-}
-
-.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuFolderRight,
-.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuFolderRight,
-.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuItemRight,
-.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuItemRight
-{
- padding: 2px 0px 2px 0px;
-
- border-width: 1px 1px 1px 0px;
- border-style: solid;
- border-color: #000080;
-}
-
-/* menu splits */
-
-.ThemeOffice2003MenuSplit
-{
- margin: 2px;
- height: 1px;
- overflow: hidden;
- background-color: inherit;
- border-top: 1px solid #6A8CCB;
-}
-
-/* image shadow animation */
-
-/*
- seq1: image for normal
- seq2: image for hover and active
-
- To use, in the icon field, input the following:
- <img class="seq1" src="normal.gif" /><img class="seq2" src="hover.gif" />
-*/
-
-.ThemeOffice2003MenuItem img.seq1
-{
- display: inline;
-}
-
-.ThemeOffice2003MenuItemHover seq2,
-.ThemeOffice2003MenuItemActive seq2
-{
- display: inline;
-}
-
-.ThemeOffice2003MenuItem .seq2,
-.ThemeOffice2003MenuItemHover .seq1,
-.ThemeOffice2003MenuItemActive .seq1
-{
- display: none;
-}
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/theme.css)
===================================================================
--- plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css (rev 0)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.css 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,266 @@
+/* ThemeOffice2003Menu Style Sheet */
+
+.ThemeOffice2003Menu,.ThemeOffice2003SubMenuTable
+{
+ font-family: verdana, arial, sans-serif;
+ font-size: 13px;
+
+ padding: 0;
+
+ white-space: nowrap;
+ cursor: default;
+}
+
+.ThemeOffice2003SubMenu
+{
+ position: absolute;
+ visibility: hidden;
+ overflow: hidden;
+
+ padding: 1px 1px 1px 1px;
+
+ background: #F6F6F6 url(menubg.gif) repeat-y scroll 0%;
+ background-position: left;
+
+ border: 1px solid #002D96;
+}
+
+.ThemeOffice2003SubMenuTable
+{
+ overflow: hidden;
+}
+
+.ThemeOffice2003MainItem,.ThemeOffice2003MainItemHover,.ThemeOffice2003MainItemActive,
+.ThemeOffice2003MenuItem,.ThemeOffice2003MenuItemHover,.ThemeOffice2003MenuItemActive
+{
+ border: 0;
+ cursor: default;
+ white-space: nowrap;
+}
+
+.ThemeOffice2003MainItem
+{
+ background-color: inherit;
+ font-weight: bold;
+}
+
+.ThemeOffice2003MainItemHover,.ThemeOffice2003MainItemActive
+{
+ background: url(mainmenubg.gif);
+ font-weight: bold;
+}
+
+.ThemeOffice2003MenuItem
+{
+ background-color: transparent;
+}
+
+.ThemeOffice2003MenuItemHover,.ThemeOffice2003MenuItemActive
+{
+ background-color: #FFEEC2;
+}
+
+
+/* horizontal main menu */
+
+.ThemeOffice2003MainItem
+{
+ padding: 1px;
+ border: 0;
+}
+
+td.ThemeOffice2003MainItemHover,td.ThemeOffice2003MainItemActive
+{
+ padding: 0px;
+ border: 1px solid #000080;
+}
+
+.ThemeOffice2003MainFolderLeft,.ThemeOffice2003MainItemLeft,
+.ThemeOffice2003MainFolderText,.ThemeOffice2003MainItemText,
+.ThemeOffice2003MainFolderRight,.ThemeOffice2003MainItemRight
+{
+ background-color: inherit;
+}
+
+/* vertical main menu sub components */
+
+td.ThemeOffice2003MainFolderLeft,
+td.ThemeOffice2003MainFolderLeft,
+td.ThemeOffice2003MainItemLeft,
+td.ThemeOffice2003MainItemLeft
+{
+ padding: 1px 2px 1px 1px;
+
+ border: 0;
+ background-color: inherit;
+}
+
+td.ThemeOffice2003MainFolderText,
+td.ThemeOffice2003MainFolderText,
+td.ThemeOffice2003MainItemText,
+td.ThemeOffice2003MainItemText
+{
+ padding: 1px 5px 1px 5px;
+
+ border: 0;
+ background-color: inherit;
+}
+
+td.ThemeOffice2003MainItemRight,
+td.ThemeOffice2003MainFolderRight
+{
+ padding: 1px 1px 1px 0px;
+
+ border: 0;
+
+ background-color: inherit;
+}
+
+
+tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainFolderLeft,
+tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainFolderLeft,
+tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainItemLeft,
+tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainItemLeft
+{
+ padding: 0px 2px 0px 0px;
+
+ border-width: 1px 0px 1px 1px;
+ border-style: solid;
+ border-color: #000080;
+
+ background-color: inherit;
+}
+
+tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainFolderText,
+tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainFolderText,
+tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainItemText,
+tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainItemText
+{
+ padding: 0px 5px 0px 5px;
+
+ border-width: 1px 0px 1px 0px;
+ border-style: solid;
+ border-color: #000080;
+
+ background-color: inherit;
+}
+
+tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainFolderRight,
+tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainFolderRight,
+tr.ThemeOffice2003MainItemHover td.ThemeOffice2003MainItemRight,
+tr.ThemeOffice2003MainItemActive td.ThemeOffice2003MainItemRight
+{
+ padding: 0px;
+
+ border-width: 1px 1px 1px 0px;
+ border-style: solid;
+ border-color: #000080;
+
+ background-color: inherit;
+}
+
+/* sub menu sub components */
+
+.ThemeOffice2003MenuFolderLeft,.ThemeOffice2003MenuItemLeft,
+.ThemeOffice2003MenuFolderText,.ThemeOffice2003MenuItemText,
+.ThemeOffice2003MenuFolderRight,.ThemeOffice2003MenuItemRight
+{
+ border: 0;
+ white-space: nowrap;
+ background-color: inherit;
+}
+
+
+.ThemeOffice2003MenuFolderLeft,
+.ThemeOffice2003MenuItemLeft
+{
+ padding: 3px 3px 3px 2px;
+}
+
+.ThemeOffice2003MenuFolderText,
+.ThemeOffice2003MenuItemText
+{
+ padding: 3px 5px 3px 5px;
+ white-space: nowrap;
+}
+
+.ThemeOffice2003MenuFolderRight,
+.ThemeOffice2003MenuItemRight
+{
+ padding: 3px 1px 3px 0px;
+}
+
+.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuFolderLeft,
+.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuFolderLeft,
+.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuItemLeft,
+.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuItemLeft
+{
+ padding: 2px 3px 2px 1px;
+
+ border-width: 1px 0px 1px 1px;
+ border-style: solid;
+ border-color: #000080;
+}
+
+.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuFolderText,
+.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuFolderText,
+.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuItemText,
+.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuItemText
+{
+ padding: 2px 5px 2px 5px;
+
+ border-width: 1px 0px 1px 0px;
+ border-style: solid;
+ border-color: #000080;
+}
+
+.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuFolderRight,
+.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuFolderRight,
+.ThemeOffice2003MenuItemHover .ThemeOffice2003MenuItemRight,
+.ThemeOffice2003MenuItemActive .ThemeOffice2003MenuItemRight
+{
+ padding: 2px 0px 2px 0px;
+
+ border-width: 1px 1px 1px 0px;
+ border-style: solid;
+ border-color: #000080;
+}
+
+/* menu splits */
+
+.ThemeOffice2003MenuSplit
+{
+ margin: 2px;
+ height: 1px;
+ overflow: hidden;
+ background-color: inherit;
+ border-top: 1px solid #6A8CCB;
+}
+
+/* image shadow animation */
+
+/*
+ seq1: image for normal
+ seq2: image for hover and active
+
+ To use, in the icon field, input the following:
+ <img class="seq1" src="normal.gif" /><img class="seq2" src="hover.gif" />
+*/
+
+.ThemeOffice2003MenuItem img.seq1
+{
+ display: inline;
+}
+
+.ThemeOffice2003MenuItemHover seq2,
+.ThemeOffice2003MenuItemActive seq2
+{
+ display: inline;
+}
+
+.ThemeOffice2003MenuItem .seq2,
+.ThemeOffice2003MenuItemHover .seq1,
+.ThemeOffice2003MenuItemActive .seq1
+{
+ display: none;
+}
Deleted: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js
===================================================================
--- plog/trunk/js/JSCookMenu/ThemeOffice2003/theme.js 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,64 +0,0 @@
-
-// directory of where all the images are
-var cmThemeOffice2003Base = 'js/JSCookMenu/ThemeOffice2003/';
-
-// the follow block allows user to re-define theme base directory
-// before it is loaded.
-try
-{
- if (myThemeOffice2003Base)
- {
- cmThemeOffice2003Base = myThemeOffice2003Base;
- }
-}
-catch (e)
-{
-}
-
-var cmThemeOffice2003 =
-{
- prefix: 'ThemeOffice2003',
- // main menu display attributes
- //
- // Note. When the menu bar is horizontal,
- // mainFolderLeft and mainFolderRight are
- // put in <span></span>. When the menu
- // bar is vertical, they would be put in
- // a separate TD cell.
-
- // HTML code to the left of the folder item
- mainFolderLeft: ' ',
- // HTML code to the right of the folder item
- mainFolderRight: ' ',
- // HTML code to the left of the regular item
- mainItemLeft: ' ',
- // HTML code to the right of the regular item
- mainItemRight: ' ',
-
- // sub menu display attributes
-
- // 0, HTML code to the left of the folder item
- folderLeft: '<img alt="" src="' + cmThemeOffice2003Base + 'spacer.gif">',
- // 1, HTML code to the right of the folder item
- folderRight: '<img alt="" src="' + cmThemeOffice2003Base + 'arrow.gif">',
- // 2, HTML code to the left of the regular item
- itemLeft: '<img alt="" src="' + cmThemeOffice2003Base + 'spacer.gif">',
- // 3, HTML code to the right of the regular item
- itemRight: '<img alt="" src="' + cmThemeOffice2003Base + 'blank.gif">',
- // 4, cell spacing for main menu
- mainSpacing: 0,
- // 5, cell spacing for sub menus
- subSpacing: 0,
-
- // move 1st lvl submenu for horizontal menus up a bit to avoid double border
- offsetHMainAdjust: [0, -1],
- offsetVMainAdjust: [-1, 0],
- // offset according to Opera, which is correct.
- offsetSubAdjust: [1, 0]
- // rest use default settings
-};
-
-// for horizontal menu split
-var cmThemeOffice2003HSplit = [_cmNoClick, '<td class="ThemeOffice2003MenuItemLeft"></td><td colspan="2"><div class="ThemeOffice2003MenuSplit"></div></td>'];
-var cmThemeOffice2003MainHSplit = [_cmNoClick, '<td class="ThemeOffice2003MainItemLeft"></td><td colspan="2"><div class="ThemeOffice2003MenuSplit"></div></td>'];
-var cmThemeOffice2003MainVSplit = [_cmNoClick, '|'];
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js (from rev 6175, plog/trunk/js/JSCookMenu/ThemeOffice2003/theme.js)
===================================================================
--- plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js (rev 0)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/ThemeOffice2003/theme.js 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,64 @@
+
+// directory of where all the images are
+var cmThemeOffice2003Base = 'js/JSCookMenu/ThemeOffice2003/';
+
+// the follow block allows user to re-define theme base directory
+// before it is loaded.
+try
+{
+ if (myThemeOffice2003Base)
+ {
+ cmThemeOffice2003Base = myThemeOffice2003Base;
+ }
+}
+catch (e)
+{
+}
+
+var cmThemeOffice2003 =
+{
+ prefix: 'ThemeOffice2003',
+ // main menu display attributes
+ //
+ // Note. When the menu bar is horizontal,
+ // mainFolderLeft and mainFolderRight are
+ // put in <span></span>. When the menu
+ // bar is vertical, they would be put in
+ // a separate TD cell.
+
+ // HTML code to the left of the folder item
+ mainFolderLeft: ' ',
+ // HTML code to the right of the folder item
+ mainFolderRight: ' ',
+ // HTML code to the left of the regular item
+ mainItemLeft: ' ',
+ // HTML code to the right of the regular item
+ mainItemRight: ' ',
+
+ // sub menu display attributes
+
+ // 0, HTML code to the left of the folder item
+ folderLeft: '<img alt="" src="' + cmThemeOffice2003Base + 'spacer.gif">',
+ // 1, HTML code to the right of the folder item
+ folderRight: '<img alt="" src="' + cmThemeOffice2003Base + 'arrow.gif">',
+ // 2, HTML code to the left of the regular item
+ itemLeft: '<img alt="" src="' + cmThemeOffice2003Base + 'spacer.gif">',
+ // 3, HTML code to the right of the regular item
+ itemRight: '<img alt="" src="' + cmThemeOffice2003Base + 'blank.gif">',
+ // 4, cell spacing for main menu
+ mainSpacing: 0,
+ // 5, cell spacing for sub menus
+ subSpacing: 0,
+
+ // move 1st lvl submenu for horizontal menus up a bit to avoid double border
+ offsetHMainAdjust: [0, -1],
+ offsetVMainAdjust: [-1, 0],
+ // offset according to Opera, which is correct.
+ offsetSubAdjust: [1, 0]
+ // rest use default settings
+};
+
+// for horizontal menu split
+var cmThemeOffice2003HSplit = [_cmNoClick, '<td class="ThemeOffice2003MenuItemLeft"></td><td colspan="2"><div class="ThemeOffice2003MenuSplit"></div></td>'];
+var cmThemeOffice2003MainHSplit = [_cmNoClick, '<td class="ThemeOffice2003MainItemLeft"></td><td colspan="2"><div class="ThemeOffice2003MenuSplit"></div></td>'];
+var cmThemeOffice2003MainVSplit = [_cmNoClick, '|'];
Copied: plog/branches/lifetype-2.0-csrf/js/JSCookMenu/effect.js (from rev 6175, plog/trunk/js/JSCookMenu/effect.js)
===================================================================
--- plog/branches/lifetype-2.0-csrf/js/JSCookMenu/effect.js (rev 0)
+++ plog/branches/lifetype-2.0-csrf/js/JSCookMenu/effect.js 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,385 @@
+/*
+ JSCookMenu Effect (c) Copyright 2002-2006 by Heng Yuan
+
+ http://jscook.sourceforge.net/JSCookMenu/
+
+ Permission is hereby granted, free of charge, to any person obtaining a
+ copy of this software and associated documentation files (the "Software"),
+ to deal in the Software without restriction, including without limitation
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ and/or sell copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included
+ in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ ITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+*/
+//
+// utiltity object to simplify common tasks in effects.
+//
+function CMSpecialEffectInstance (effect, menu)
+{
+ effect.show = true;
+ effect.menu = menu;
+ menu.cmEffect = effect;
+ this.effect = effect;
+}
+
+CMSpecialEffectInstance.prototype.canShow = function (changed)
+{
+ if (changed)
+ {
+ if (this.effect.show)
+ return false;
+ this.effect.show = true;
+ }
+ else if (!this.effect.show)
+ return false;
+ return true;
+}
+
+CMSpecialEffectInstance.prototype.canHide = function (changed)
+{
+ var effect = this.effect;
+ if (changed)
+ {
+ if (!effect.show)
+ return false;
+ effect.show = false;
+ }
+ else if (effect.show)
+ return false;
+ return true;
+}
+
+//
+// public function to be called to initate the display of the
+// menu.
+//
+CMSpecialEffectInstance.prototype.startShowing = function ()
+{
+ var menu = this.effect.menu;
+ menu.style.visibility = 'visible';
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (menu.cmFrameObj)
+ {
+ var frameObj = menu.cmFrameObj;
+ frameObj.style.display = 'block';
+ }
+ @end
+ @*/
+}
+
+//
+// public function to be called after showing effect is finished.
+//
+CMSpecialEffectInstance.prototype.finishShowing = function ()
+{
+}
+
+//
+// clean up after finish hiding effect.
+//
+CMSpecialEffectInstance.prototype.finishHiding = function ()
+{
+ var menu = this.effect.menu;
+ menu.style.visibility = 'hidden';
+ menu.style.top = '0px';
+ menu.style.left = '0px';
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (menu.cmFrameObj)
+ {
+ var frameObj = menu.cmFrameObj;
+ frameObj.style.display = 'none';
+ frameObj.style.top = '0px';
+ frameObj.style.left = '0px';
+ menu.cmFrameObj = null;
+ cmFreeFrame (frameObj);
+ }
+ @end
+ @*/
+ menu.cmEffect = null;
+ menu.cmOrient = null;
+ this.effect.menu = null;
+}
+
+//
+// this is the internal class to perform the sliding effect
+//
+function CMSlidingEffectInstance (menu, orient, speed)
+{
+ this.base = new CMSpecialEffectInstance (this, menu);
+
+ menu.style.overflow = 'hidden';
+
+ this.x = menu.offsetLeft;
+ this.y = menu.offsetTop;
+
+ if (orient.charAt (0) == 'h')
+ {
+ this.slideOrient = 'h';
+ this.slideDir = orient.charAt (1);
+ }
+ else
+ {
+ this.slideOrient = 'v';
+ this.slideDir = orient.charAt (2);
+ }
+
+ this.speed = speed;
+ this.fullWidth = menu.offsetWidth;
+ this.fullHeight = menu.offsetHeight;
+ this.percent = 0;
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (menu.cmFrameObj)
+ {
+ var frameObj = menu.cmFrameObj;
+ this.frameX = frameObj.offsetLeft;
+ this.frameY = frameObj.offsetTop;
+ this.frameWidth = frameObj.offsetWidth;
+ this.frameHeight = frameObj.offsetHeight;
+ }
+ @end
+ @*/
+}
+ // public function to show the menu
+CMSlidingEffectInstance.prototype.showEffect = function (changed)
+{
+ if (!this.base.canShow (changed))
+ return;
+
+ var percent = this.percent;
+ if (this.slideOrient == 'h')
+ this.slideMenuV ();
+ else
+ this.slideMenuH ();
+
+ if (percent == 0)
+ {
+ this.base.startShowing ();
+ }
+
+ if (percent < 100)
+ {
+ this.percent += this.speed;
+ cmTimeEffect (this.menu.id, this.show, 10);
+ }
+ else if (this.show)
+ {
+ this.base.finishShowing ();
+ }
+}
+
+// public function to hide the menu
+CMSlidingEffectInstance.prototype.hideEffect = function (changed)
+{
+ if (!this.base.canHide (changed))
+ return;
+
+ var percent = this.percent;
+ if (this.slideOrient == 'h')
+ this.slideMenuV ();
+ else
+ this.slideMenuH ();
+
+ if (percent > 0)
+ {
+ this.percent -= this.speed;
+ cmTimeEffect (this.menu.id, this.show, 10);
+ }
+ else if (!this.show)
+ {
+ this.menu.style.clip = 'auto';
+ this.base.finishHiding ();
+ }
+}
+
+// internal function to scroll a menu left/right
+CMSlidingEffectInstance.prototype.slideMenuH = function ()
+{
+ var percent = this.percent;
+ if (percent < 0)
+ percent = 0;
+ if (percent > 100)
+ percent = 100;
+ var fullWidth = this.fullWidth;
+ var fullHeight = this.fullHeight;
+ var x = this.x;
+ var space = percent * fullWidth / 100;
+ var menu = this.menu;
+
+ if (this.slideDir == 'l')
+ {
+ menu.style.left = (x + fullWidth - space) + 'px';
+ menu.style.clip = 'rect(0px ' + space + 'px ' + fullHeight + 'px 0px)';
+ }
+ else
+ {
+ menu.style.left = (x - fullWidth + space) + 'px';
+ menu.style.clip = 'rect(0px ' + fullWidth + 'px ' + fullHeight + 'px ' + (fullWidth - space) + 'px)';
+ }
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (menu.cmFrameObj)
+ {
+ var frameObj = menu.cmFrameObj;
+ if (this.slideDir == 'l')
+ frameObj.style.left = (this.frameX + fullWidth - space) + 'px';
+ frameObj.style.width = space + 'px';
+ }
+ @end
+ @*/
+}
+
+// internal function to scroll a menu up/down
+CMSlidingEffectInstance.prototype.slideMenuV = function ()
+{
+ var percent = this.percent;
+ if (percent < 0)
+ percent = 0;
+ if (percent > 100)
+ percent = 100;
+ var fullWidth = this.fullWidth;
+ var fullHeight = this.fullHeight;
+ var y = this.y;
+ var space = percent * fullHeight / 100;
+ var menu = this.menu;
+
+ if (this.slideDir == 'b')
+ {
+ menu.style.top = (y - fullHeight + space) + 'px';
+ menu.style.clip = 'rect(' + (fullHeight - space) + 'px ' + fullWidth + 'px ' + fullHeight + 'px 0px)';
+ }
+ else
+ {
+ menu.style.top = (y + fullHeight - space) + 'px';
+ menu.style.clip = 'rect(0px ' + fullWidth + 'px ' + space + 'px 0px)';
+ }
+ /*@cc_on
+ @if (@_jscript_version >= 5.5)
+ if (menu.cmFrameObj)
+ {
+ var frameObj = menu.cmFrameObj;
+ if (this.slideDir == 'u')
+ frameObj.style.top = (this.frameX - space) + 'px';
+ frameObj.style.height = space + 'px';
+ }
+ @end
+ @*/
+}
+
+//
+// call
+// new CMSlidingEffect (speed)
+// to create a new effect object.
+//
+function CMSlidingEffect (speed)
+{
+ if (!speed)
+ speed = 10;
+ else if (speed <= 0)
+ speed = 10;
+ else if (speed >= 100)
+ speed = 100;
+ this.speed = speed;
+}
+
+CMSlidingEffect.prototype.getInstance = function (menu, orient)
+{
+ return new CMSlidingEffectInstance (menu, orient, this.speed);
+}
+
+//
+// this is the internal class to perform the sliding effect
+//
+function CMFadingEffectInstance (menu, showSpeed, hideSpeed)
+{
+ this.base = new CMSpecialEffectInstance (this, menu);
+
+ menu.style.overflow = 'hidden';
+
+ this.showSpeed = showSpeed;
+ this.hideSpeed = hideSpeed;
+
+ this.opacity = 0;
+}
+
+// public function to show the menu
+CMFadingEffectInstance.prototype.showEffect = function (changed)
+{
+ if (!this.base.canShow (changed))
+ return;
+
+ var menu = this.menu;
+ var opacity = this.opacity;
+
+ this.setOpacity ();
+
+ if (opacity == 0)
+ {
+ this.base.startShowing ();
+ }
+
+ if (opacity < 100)
+ {
+ this.opacity += 10;
+ cmTimeEffect (menu.id, this.show, this.showSpeed);
+ }
+ else if (this.show)
+ {
+ this.base.finishShowing ();
+ }
+}
+
+// public function to hide the menu
+CMFadingEffectInstance.prototype.hideEffect = function (changed)
+{
+ if (!this.base.canHide (changed))
+ return;
+
+ var menu = this.menu;
+ var opacity = this.opacity;
+
+ this.setOpacity ();
+
+ if (this.opacity > 0)
+ {
+ this.opacity -= 10;
+ cmTimeEffect (menu.id, this.show, this.hideSpeed);
+ }
+ else if (!this.show)
+ {
+ this.base.finishHiding ();
+ }
+}
+
+// internal functions
+CMFadingEffectInstance.prototype.setOpacity = function ()
+{
+ this.menu.style.opacity = this.opacity / 100;
+ /*@cc_on
+ this.menu.style.filter = 'alpha(opacity=' + this.opacity + ')';
+ //this.menu.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + this.opacity + ')';
+ @*/
+}
+
+function CMFadingEffect (showSpeed, hideSpeed)
+{
+ this.showSpeed = showSpeed;
+ this.hideSpeed = hideSpeed;
+}
+
+CMFadingEffect.prototype.getInstance = function (menu, orient)
+{
+ return new CMFadingEffectInstance (menu, this.showSpeed, this.hideSpeed);
+}
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,18 +1,11 @@
{include file="$admintemplatepath/header.template"}
{include file="$admintemplatepath/navigation.template" showOpt=editInboxPrivateMessages title=$locale->tr("editInboxPrivateMessages")}
-<script type="text/javascript">
-{literal}
-YAHOO.util.Event.addListener( window, "load", function() {
- var t = new Lifetype.Effects.Table( "list" );
- t.stripe();
- t.highlightRows();
- });
-{/literal}
-</script>
- <div id="list_nav_bar">
- <div id="list_nav_select">
+{js src="js/ui/plogui.js"}
+{js src="js/ui/pages/privatemessages.js"}
-<form id="viewInboxPrivateMessages" action="admin.php" method="post">
+<div id="list_nav_bar">
+<div id="list_nav_select">
+<form id="viewPrivateMessages" action="admin.php" method="post">
<fieldset>
<legend>{$locale->tr("show_by")}</legend>
@@ -33,66 +26,13 @@
<br style="clear:both" />
</div>
- <form id="inboxPrivateMessages" action="admin.php" method="post">
+ <form id="editPrivateMessages" action="admin.php" method="post" onSubmit="Lifetype.Forms.performRequest(this);return(false);">
+ {include file="$admintemplatepath/viewvalidateajax.template"}
<div id="list">
- {include file="$admintemplatepath/successmessage.template"}
- {include file="$admintemplatepath/errormessage.template"}
- <table id="list" class="info" summary="{$locale->tr("editInboxPrivateMessages")}">
- <thead>
- <tr>
- <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('inboxPrivateMessages');" /></th>
- <th style="width:15%">{$locale->tr("sender_name")}</th>
- <th style="width:10%">{$locale->tr("receiver_read_status")}</th>
- <th style="width:15%">{$locale->tr("date")}</th>
- <th style="width:50%">{$locale->tr("subject")}</th>
- <th style="width:10%">{$locale->tr("actions")}</th>
- </tr>
- </thead>
- <tbody>
- {foreach from=$privatemessages item=privatemessage}
- <tr>
- <td align="center"><input class="checkbox" type="checkbox" name="messageIds[{counter}]" value="{$privatemessage->getId()}"/></td>
- <td class="col_highlighted">
- {assign var=sender value=$privatemessage->getSenderInfo()}
- <a href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}">{$sender->getFullName()}</a>
- </td>
- <td>
- {if $privatemessage->getReceiverReadStatus() == 1}
- <a href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("unread")}">
- <img src="imgs/admin/icon_mailunread-16.png" alt="{$locale->tr("unread")}" />
- </a>
- {else}
- <a href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("readed")}">
- <img src="imgs/admin/icon_mailreaded-16.png" alt="{$locale->tr("readed")}" />
- </a>
- {/if}
- </td>
- <td>
- {assign var=date value=$privatemessage->getDateObject()}
- {$locale->formatDate($date)}
- </td>
- <td>
- <a href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}">{$privatemessage->getSubject()}</a>
- </td>
- <td>
- <div class="list_action_button">
- <a href="?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("read")}">
- <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("read")}" />
- </a>
- <a href="?op=deleteInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("delete")}">
- <img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" />
- </a>
- <a href="?op=replyPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("reply")}">
- <img src="imgs/admin/icon_mailreply-16.png" alt="{$locale->tr("reply")}" />
- </a>
- </td>
- </tr>
- {/foreach}
- </tbody>
- </table>
+ {include file="$admintemplatepath/editinboxprivatemessages_table.template"}
</div>
+
<div id="list_action_bar">
- {adminpager style=list}
<input type="hidden" name="op" value="deleteInboxPrivateMessages"/>
<input type="submit" name="Delete selected" value="{$locale->tr("delete")}"/>
</div>
Copied: plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages_table.template (from rev 6175, plog/trunk/templates/admin/editinboxprivatemessages_table.template)
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages_table.template (rev 0)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/editinboxprivatemessages_table.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,54 @@
+ <table id="privatemessages" class="info" summary="{$locale->tr("editInboxPrivateMessages")}">
+ <thead>
+ <tr>
+ <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('inboxPrivateMessages');" /></th>
+ <th style="width:15%">{$locale->tr("sender_name")}</th>
+ <th style="width:10%">{$locale->tr("receiver_read_status")}</th>
+ <th style="width:15%">{$locale->tr("date")}</th>
+ <th style="width:50%">{$locale->tr("subject")}</th>
+ <th style="width:10%">{$locale->tr("actions")}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {foreach from=$privatemessages item=privatemessage}
+ <tr>
+ <td align="center"><input class="checkbox" type="checkbox" name="messageIds[{counter}]" value="{$privatemessage->getId()}"/></td>
+ <td class="col_highlighted">
+ {assign var=sender value=$privatemessage->getSenderInfo()}
+ <a href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}">{$sender->getFullName()}</a>
+ </td>
+ <td>
+ {if $privatemessage->getReceiverReadStatus() == 1}
+ <a rel="overlay" href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("unread")}">
+ <img src="imgs/admin/icon_mailunread-16.png" alt="{$locale->tr("unread")}" />
+ </a>
+ {else}
+ <a rel="overlay" href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("readed")}">
+ <img src="imgs/admin/icon_mailreaded-16.png" alt="{$locale->tr("readed")}" />
+ </a>
+ {/if}
+ </td>
+ <td>
+ {assign var=date value=$privatemessage->getDateObject()}
+ {$locale->formatDate($date)}
+ </td>
+ <td>
+ <a href="admin.php?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}">{$privatemessage->getSubject()}</a>
+ </td>
+ <td>
+ <div class="list_action_button">
+ <a rel="overlay" href="?op=readInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("read")}">
+ <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("read")}" />
+ </a>
+ <a href="?op=deleteInboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("delete")}" onClick="Lifetype.Forms.performRequest(this);return(false)">
+ <img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" />
+ </a>
+ <a rel="overlay" href="?op=replyPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("reply")}">
+ <img src="imgs/admin/icon_mailreply-16.png" alt="{$locale->tr("reply")}" />
+ </a>
+ </td>
+ </tr>
+ {/foreach}
+ </tbody>
+ </table>
+ {adminpagerajax style=list}
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/editlinks.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/editlinks.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/editlinks.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,6 +1,6 @@
{include file="$admintemplatepath/header.template"}
{include file="$admintemplatepath/navigation.template" showOpt=editLinks title=$locale->tr("editLinks")}
- <script type="text/javascript" src="js/ui/plogui.js"></script>
+{js src="js/ui/plogui.js"}
{js src="js/ui/pages/global.js"}
{js src="js/ui/pages/links.js"}
<div id="list_nav_bar">
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,16 +1,9 @@
{include file="$admintemplatepath/header.template"}
{include file="$admintemplatepath/navigation.template" showOpt=editOutboxPrivateMessages title=$locale->tr("editOutboxPrivateMessages")}
-<script type="text/javascript">
-{literal}
-YAHOO.util.Event.addListener( window, "load", function() {
- var t = new Lifetype.Effects.Table( "list" );
- t.stripe();
- t.highlightRows();
- });
-{/literal}
-</script>
- <div id="list_nav_bar">
- <div id="list_nav_select">
+{js src="js/ui/plogui.js"}
+{js src="js/ui/pages/privatemessages.js"}
+<div id="list_nav_bar">
+<div id="list_nav_select">
<form id="viewPrivateMessages" action="admin.php" method="post">
<fieldset>
@@ -32,51 +25,21 @@
</div>
<br style="clear:both" />
</div>
+
+<div class="extraFunctions">
+<div class="left">
+ <a id="newPrivateMessageButton" href="?op=newPrivateMessage" rel="overlay">{$locale->tr("newPrivateMessage")}</a>
+</div>
+ <br style="clear:both" />
+</div>
- <form id="outboxPrivateMessages" action="admin.php" method="post">
+ <form id="editPrivateMessages" action="admin.php" method="post" onSubmit="Lifetype.Forms.performRequest(this);return(false);">
+ {include file="$admintemplatepath/viewvalidateajax.template"}
<div id="list">
- {include file="$admintemplatepath/successmessage.template"}
- {include file="$admintemplatepath/errormessage.template"}
- <table id="list" class="info" summary="{$locale->tr("editOutboxPrivateMessages")}">
- <thead>
- <tr>
- <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('outboxPrivateMessages');" /></th>
- <th style="width:15%">{$locale->tr("receiver_name")}</th>
- <th style="width:15%">{$locale->tr("date")}</th>
- <th style="width:60%">{$locale->tr("subject")}</th>
- <th style="width:10%">{$locale->tr("actions")}</th>
- </tr>
- </thead>
- <tbody>
- {foreach from=$privatemessages item=privatemessage}
- <tr>
- <td align="center"><input class="checkbox" type="checkbox" name="messageIds[{counter}]" value="{$privatemessage->getId()}"/></td>
- <td class="col_highlighted">
- {assign var=receiver value=$privatemessage->getReceiverInfo()}
- <a href="admin.php?op=readOutboxPrivateMessage&messageId={$privatemessage->getId()}">{$receiver->getFullName()}</a>
- </td>
- <td>
- {assign var=date value=$privatemessage->getDateObject()}
- {$locale->formatDate($date)}
- </td>
- <td>
- <a href="admin.php?op=readOutboxPrivateMessage&messageId={$privatemessage->getId()}">{$privatemessage->getSubject()}</a>
- </td>
- <td>
- <a href="?op=readOutboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("read")}">
- <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("read")}" />
- </a>
- <a href="?op=deleteOutboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("delete")}">
- <img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" />
- </a>
- </td>
- </tr>
- {/foreach}
- </tbody>
- </table>
+ {include file="$admintemplatepath/editoutboxprivatemessages_table.template"}
</div>
+
<div id="list_action_bar">
- {adminpager style=list}
<input type="hidden" name="op" value="deleteOutboxPrivateMessages"/>
<input type="submit" name="Delete selected" value="{$locale->tr("delete")}"/>
</div>
Copied: plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages_table.template (from rev 6175, plog/trunk/templates/admin/editoutboxprivatemessages_table.template)
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages_table.template (rev 0)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/editoutboxprivatemessages_table.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,38 @@
+ <table id="privatemessages" class="info" summary="{$locale->tr("editOutboxPrivateMessages")}">
+ <thead>
+ <tr>
+ <th><input class="checkbox" type="checkbox" name="all" id="all" value="1" onclick="toggleAllChecks('outboxPrivateMessages');" /></th>
+ <th style="width:15%">{$locale->tr("receiver_name")}</th>
+ <th style="width:15%">{$locale->tr("date")}</th>
+ <th style="width:60%">{$locale->tr("subject")}</th>
+ <th style="width:10%">{$locale->tr("actions")}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {foreach from=$privatemessages item=privatemessage}
+ <tr>
+ <td align="center"><input class="checkbox" type="checkbox" name="messageIds[{counter}]" value="{$privatemessage->getId()}"/></td>
+ <td class="col_highlighted">
+ {assign var=receiver value=$privatemessage->getReceiverInfo()}
+ <a rel="overlay" href="admin.php?op=readOutboxPrivateMessage&messageId={$privatemessage->getId()}">{$receiver->getFullName()}</a>
+ </td>
+ <td>
+ {assign var=date value=$privatemessage->getDateObject()}
+ {$locale->formatDate($date)}
+ </td>
+ <td>
+ <a rel="overlay" href="admin.php?op=readOutboxPrivateMessage&messageId={$privatemessage->getId()}">{$privatemessage->getSubject()}</a>
+ </td>
+ <td>
+ <a rel="overlay" href="?op=readOutboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("read")}">
+ <img src="imgs/admin/icon_edit-16.png" alt="{$locale->tr("read")}" />
+ </a>
+ <a href="?op=deleteOutboxPrivateMessage&messageId={$privatemessage->getId()}" title="{$locale->tr("delete")}" onClick="Lifetype.Forms.performRequest(this);return(false)">
+ <img src="imgs/admin/icon_delete-16.png" alt="{$locale->tr("delete")}" />
+ </a>
+ </td>
+ </tr>
+ {/foreach}
+ </tbody>
+ </table>
+ {adminpagerajax style=list}
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/header.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/header.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/header.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -41,8 +41,8 @@
{/if}
{if $blogEnablePullDownMenu}
{js src="js/JSCookMenu/JSCookMenu.js"}
+ {js src="js/JSCookMenu/ThemeOffice/theme.js"}
<link rel="stylesheet" href="js/JSCookMenu/ThemeOffice/theme.css" type="text/css" />
- {js src="js/JSCookMenu/ThemeOffice/theme.js"}
{/if}
{js src="?op=js&mode=config"}
{js src="?op=js&mode=locale"}
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/menus.xml
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/menus.xml 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/menus.xml 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,31 +1,27 @@
<menu url="?op=Dashboard" localeId="dashboard">
<Content url="?op=editPosts">
- <managePosts ignoreBreadCrumbs="1" orPerms="add_post,view_posts,add_category,view_categories,view_comments,view_trackbacks">
- <newPost url="?op=newPost" andPerms="add_post" />
- <editPosts url="?op=editPosts" andPerms="view_posts" />
- <editArticleCategories url="?op=editArticleCategories" andPerms="view_categories" />
- <editComments url="?op=editComments" andPerms="view_comments" />
- <editLinks url="?op=editLinks" andPerms="view_links" />
- <editLinkCategories url="?op=editLinkCategories" andPerms="view_link_categories" />
- <blogCustomFields url="?op=blogCustomFields" andPerms="view_custom_fields" />
- </managePosts>
+ <newPost url="?op=newPost" andPerms="add_post" />
+ <editPosts url="?op=editPosts" andPerms="view_posts" />
+ <editArticleCategories url="?op=editArticleCategories" andPerms="view_categories" />
+ <editComments url="?op=editComments" andPerms="view_comments" />
+ <editLinks url="?op=editLinks" andPerms="view_links" />
+ <editLinkCategories url="?op=editLinkCategories" andPerms="view_link_categories" />
+ <blogCustomFields url="?op=blogCustomFields" andPerms="view_custom_fields" />
</Content>
<resources url="?op=resources" andPerms="view_resources" />
<friendManagement url="?op=editFriends">
- <manageFriends ignoreBreadCrumbs="1">
<editFriends url="?op=editFriends"/>
- <editFriendGroups url="?op=editFriendGroups"/>
+ <editFriendGroups url="?op=editFriendGroups"/>
<editInboxPrivateMessages url="?op=editInboxPrivateMessages"/>
<editOutboxPrivateMessages url="?op=editOutboxPrivateMessages"/>
- </manageFriends>
</friendManagement>
<controlCenter url="?op=controlCenter">
- <blogSettings url="?op=blogSettings" andPerms="update_blog" />
- <userSettings url="?op=userSettings" />
- <Stats url="?op=Stats" andPerms="view_blog_stats" />
- <showBlogUsers url="?op=showBlogUsers" orPerms="add_blog_user,view_blog_users" />
- <showBlogLocations url="?op=showBlogLocations" andPerms="" />
- <blogTemplates url="?op=blogTemplates" orPerms="add_blog_template,view_blog_templates" />
+ <blogSettings url="?op=blogSettings" andPerms="update_blog" />
+ <userSettings url="?op=userSettings" />
+ <Stats url="?op=Stats" andPerms="view_blog_stats" />
+ <showBlogUsers url="?op=showBlogUsers" orPerms="add_blog_user,view_blog_users" />
+ <showBlogLocations url="?op=showBlogLocations" andPerms="" />
+ <blogTemplates url="?op=blogTemplates" orPerms="add_blog_template,view_blog_templates" />
</controlCenter>
<adminSettings url="?op=adminSettings" admin="1" orPerms="add_user,view_users,add_permission,view_permissions,add_site_blog,view_site_blogs,add_blog_category,view_blog_categories,add_locale,view_locales,add_template,view_templates,add_global_category,view_global_categories,view_global_settings,view_plugins,update_plugin_settings,purge_data">
<siteContent ignoreBreadCrumbs="1" orPerms="add_user,view_users,add_permission,view_permissions,add_site_blog,view_site_blogs,add_blog_category,view_blog_categories,add_global_category,view_global_categories,add_locale,view_locales,add_template,view_templates" admin="1">
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,49 +1,7 @@
{include file="$admintemplatepath/header.template"}
-{include file="$admintemplatepath/navigation.template" showOpt=newPrivateMessage title=$locale->tr("newPrivateMessage")}
+{include file="$admintemplatepath/navigation.template" showOpt=editInboxPrivateMessages title=$locale->tr("newPrivateMessage")}
- <form name="addNewPrivateMessage" method="post" action="admin.php">
- <fieldset class="inputField">
- <legend>{$locale->tr("newPrivateMessage")}</legend>
- {include file="$admintemplatepath/formvalidate.template"}
+{include file="$admintemplatepath/newprivatemessage_form.template"}
- <div class="field">
- <label for="receiverName">{$locale->tr("receiver_name")}</label>
- <span class="required">*</span><br/>
- <div class="formHelp">{$locale->tr("receiver_name_help")}</div>
- <input type="text" value="{$receiverName}" id="receiverName" name="receiverName" />
- {include file="$admintemplatepath/validate.template" field=receiverName message=$locale->tr("error_receiver_name")}
- </div>
-
- <div class="field">
- <label for="subject">{$locale->tr("subject")}</label>
- <span class="required">*</span><br/>
- <div class="formHelp">{$locale->tr("subject_help")}</div>
- <input type="text" value="{$subject}" id="subject" name="subject" />
- {include file="$admintemplatepath/validate.template" field=subject message=$locale->tr("error_empty_subject")}
- </div>
-
- <div class="field">
- <label for="messageText">{$locale->tr("message_text")}</label>
- <span class="required">*</span>
- <div class="formHelp">{$locale->tr("message_text_help")}</div>
- <textarea name="messageText" cols="60" id="messageText" rows="5">{$messageText}</textarea>
- {include file="$admintemplatepath/validate.template" field=messageText message=$locale->tr("error_empty_message_text")}
- </div>
-
- <div class="field">
- <label for="backupPrivateMessage">{$locale->tr("backup_private_message")}</label>
- <div class="formHelp">
- <input class="checkbox" type="checkbox" id="backupPrivateMessage" name="backupPrivateMessage" value="1" {if $backupPrivateMessage}checked="checked"{/if} />
- {$locale->tr("backup_private_message_help")}
- </div>
- </div>
-
- </fieldset>
- <div class="buttons">
- <input type="hidden" name="op" value="sendPrivateMessage" />
- <input type="reset" name="resetButton" value="{$locale->tr("reset")}" />
- <input type="submit" name="Add" value="{$locale->tr("send")}" />
- </div>
- </form>
{include file="$admintemplatepath/footernavigation.template"}
{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
Copied: plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage_form.template (from rev 6175, plog/trunk/templates/admin/newprivatemessage_form.template)
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage_form.template (rev 0)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/newprivatemessage_form.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,44 @@
+ <form id="newPrivateMessage" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.PrivateMessages.addSubmitHook(this);return(false);">
+ <fieldset class="inputField">
+ <legend>{$locale->tr("newPrivateMessage")}</legend>
+ {include file="$admintemplatepath/formvalidateajax.template"}
+
+ <div class="field">
+ <label for="receiverName">{$locale->tr("receiver_name")}</label>
+ <span class="required">*</span><br/>
+ <div class="formHelp">{$locale->tr("receiver_name_help")}</div>
+ <input type="text" value="{$receiverName}" id="receiverName" name="receiverName" />
+ {include file="$admintemplatepath/validateajax.template" field=receiverName}
+ </div>
+
+ <div class="field">
+ <label for="subject">{$locale->tr("subject")}</label>
+ <span class="required">*</span><br/>
+ <div class="formHelp">{$locale->tr("subject_help")}</div>
+ <input type="text" value="{$subject}" id="subject" name="subject" />
+ {include file="$admintemplatepath/validateajax.template" field=subject}
+ </div>
+
+ <div class="field">
+ <label for="messageText">{$locale->tr("message_text")}</label>
+ <span class="required">*</span>
+ <div class="formHelp">{$locale->tr("message_text_help")}</div>
+ <textarea name="messageText" cols="60" id="messageText" rows="5">{$messageText}</textarea>
+ {include file="$admintemplatepath/validateajax.template" field=messageText}
+ </div>
+
+ <div class="field">
+ <label for="backupPrivateMessage">{$locale->tr("backup_private_message")}</label>
+ <div class="formHelp">
+ <input class="checkbox" type="checkbox" id="backupPrivateMessage" name="backupPrivateMessage" value="1" {if $backupPrivateMessage}checked="checked"{/if} />
+ {$locale->tr("backup_private_message_help")}
+ </div>
+ </div>
+
+ </fieldset>
+ <div class="buttons">
+ <input type="hidden" name="op" value="sendPrivateMessage" />
+ <input type="reset" name="resetButton" value="{$locale->tr("reset")}" />
+ <input type="submit" name="Add" value="{$locale->tr("send")}" />
+ </div>
+ </form>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,38 +1,7 @@
{include file="$admintemplatepath/header.template"}
{include file="$admintemplatepath/navigation.template" showOpt=editInboxPrivateMessages title=$locale->tr("readInboxPrivateMessage")}
- <form name="readInboxPrivateMessage" method="post" action="admin.php">
- <fieldset class="inputField">
- <legend>{$locale->tr("readInboxPrivateMessage")}</legend>
+{include file="$admintemplatepath/readinboxprivatemessage_form.template"}
- <div class="field">
- <label for="senderName">{$locale->tr("sender_name")}</label>
- <span class="required"></span><br/>
- <div class="formHelp">{$locale->tr("sender_name_help")}</div>
- {assign var=senderInfo value=$privatemessage->getSenderInfo()}
- <input type="text" value="{$senderInfo->getFullName()}" id="senderName" name="senderName" readonly=readonly />
- </div>
-
- <div class="field">
- <label for="subject">{$locale->tr("subject")}</label>
- <span class="required"></span><br/>
- <div class="formHelp">{$locale->tr("subject_help")}</div>
- <input type="text" value="{$privatemessage->getSubject()}" id="subject" name="subject" readonly=readonly />
- </div>
-
- <div class="field">
- <label for="messageText">{$locale->tr("message_text")}</label>
- <span class="required"></span>
- <div class="formHelp">{$locale->tr("message_text_help")}</div>
- <textarea name="messageText" cols="60" id="messageText" rows="5" readonly=readonly >{$privatemessage->getMessage()}</textarea>
- </div>
-
- </fieldset>
- <div class="buttons">
- <input type="hidden" name="op" value="replyPrivateMessage" />
- <input type="button" name="Delete" value="{$locale->tr("delete")}" onClick="window.location='?op=deletePrivateMessage&messageId={$messageId}'" />
- <input type="button" name="Reply" value="{$locale->tr("reply")}" onClick="window.location='?op=replyPrivateMessage&messageId={$messageId}'" />
- </div>
- </form>
{include file="$admintemplatepath/footernavigation.template"}
{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
Copied: plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage_form.template (from rev 6175, plog/trunk/templates/admin/readinboxprivatemessage_form.template)
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage_form.template (rev 0)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/readinboxprivatemessage_form.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,33 @@
+ <form name="readInboxPrivateMessage" method="post" action="admin.php">
+ <fieldset class="inputField">
+ <legend>{$locale->tr("readInboxPrivateMessage")}</legend>
+
+ <div class="field">
+ <label for="senderName">{$locale->tr("sender_name")}</label>
+ <span class="required"></span><br/>
+ <div class="formHelp">{$locale->tr("sender_name_help")}</div>
+ {assign var=senderInfo value=$privatemessage->getSenderInfo()}
+ <input type="text" value="{$senderInfo->getFullName()}" id="senderName" name="senderName" readonly=readonly />
+ </div>
+
+ <div class="field">
+ <label for="subject">{$locale->tr("subject")}</label>
+ <span class="required"></span><br/>
+ <div class="formHelp">{$locale->tr("subject_help")}</div>
+ <input type="text" value="{$privatemessage->getSubject()}" id="subject" name="subject" readonly=readonly />
+ </div>
+
+ <div class="field">
+ <label for="messageText">{$locale->tr("message_text")}</label>
+ <span class="required"></span>
+ <div class="formHelp">{$locale->tr("message_text_help")}</div>
+ <textarea name="messageText" cols="60" id="messageText" rows="5" readonly=readonly >{$privatemessage->getMessage()}</textarea>
+ </div>
+
+ </fieldset>
+ <div class="buttons">
+ <input type="hidden" name="op" value="replyPrivateMessage" />
+ <input type="button" name="Delete" value="{$locale->tr("delete")}" onClick="Lifetype.Forms.performUrl('?op=deleteInboxPrivateMessage&messageId={$messageId}');Lifetype.UI.OverlayManager.getActive().hide();return(false)" />
+ <input type="button" name="Reply" value="{$locale->tr("reply")}" onClick="Lifetype.UI.OverlayManager.getActive().hide();Lifetype.UI.ContentOverlay.createAndShow('?op=replyPrivateMessage&messageId={$messageId}');return(false)" />
+ </div>
+ </form>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,38 +1,7 @@
{include file="$admintemplatepath/header.template"}
{include file="$admintemplatepath/navigation.template" showOpt=editOutboxPrivateMessages title=$locale->tr("readOutboxPrivateMessage")}
- <form name="readOutboxPrivateMessage" method="post" action="admin.php">
- <fieldset class="inputField">
- <legend>{$locale->tr("readOutboxPrivateMessage")}</legend>
+{include file="$admintemplatepath/readoutboxprivatemessage_form.template"}
- <div class="field">
- <label for="receiverName">{$locale->tr("receiver_name")}</label>
- <span class="required"></span><br/>
- <div class="formHelp">{$locale->tr("receiver_name_help")}</div>
- {assign var=receiverInfo value=$privatemessage->getReceiverInfo()}
- <input type="text" value="{$receiverInfo->getFullName()}" id="receiverName" name="receiverName" readonly=readonly />
- </div>
-
- <div class="field">
- <label for="subject">{$locale->tr("subject")}</label>
- <span class="required"></span><br/>
- <div class="formHelp">{$locale->tr("subject_help")}</div>
- <input type="text" value="{$privatemessage->getSubject()}" id="subject" name="subject" readonly=readonly />
- </div>
-
- <div class="field">
- <label for="messageText">{$locale->tr("message_text")}</label>
- <span class="required"></span>
- <div class="formHelp">{$locale->tr("message_text_help")}</div>
- <textarea name="messageText" cols="60" id="messageText" rows="5" readonly=readonly >{$privatemessage->getMessage()}</textarea>
- </div>
-
- </fieldset>
- <div class="buttons">
- <input type="hidden" name="op" value="deletePrivateMessage" />
- <input type="hidden" name="messageId" value="{$messageId}" />
- <input type="submit" name="Delete" value="{$locale->tr("delete")}" />
- </div>
- </form>
{include file="$admintemplatepath/footernavigation.template"}
{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
Copied: plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage_form.template (from rev 6175, plog/trunk/templates/admin/readoutboxprivatemessage_form.template)
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage_form.template (rev 0)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/readoutboxprivatemessage_form.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,31 @@
+ <form name="readOutboxPrivateMessage" method="post" action="admin.php">
+ <fieldset class="inputField">
+ <legend>{$locale->tr("readOutboxPrivateMessage")}</legend>
+
+ <div class="field">
+ <label for="receiverName">{$locale->tr("receiver_name")}</label>
+ <span class="required"></span><br/>
+ <div class="formHelp">{$locale->tr("receiver_name_help")}</div>
+ {assign var=receiverInfo value=$privatemessage->getReceiverInfo()}
+ <input type="text" value="{$receiverInfo->getFullName()}" id="receiverName" name="receiverName" readonly=readonly />
+ </div>
+
+ <div class="field">
+ <label for="subject">{$locale->tr("subject")}</label>
+ <span class="required"></span><br/>
+ <div class="formHelp">{$locale->tr("subject_help")}</div>
+ <input type="text" value="{$privatemessage->getSubject()}" id="subject" name="subject" readonly=readonly />
+ </div>
+
+ <div class="field">
+ <label for="messageText">{$locale->tr("message_text")}</label>
+ <span class="required"></span>
+ <div class="formHelp">{$locale->tr("message_text_help")}</div>
+ <textarea name="messageText" cols="60" id="messageText" rows="5" readonly=readonly >{$privatemessage->getMessage()}</textarea>
+ </div>
+
+ </fieldset>
+ <div class="buttons">
+ <input type="button" name="Delete" value="{$locale->tr("delete")}" onClick="Lifetype.Forms.performUrl('?op=deleteOutboxPrivateMessage&messageId={$messageId}');Lifetype.UI.OverlayManager.getActive().hide();return(false)" />
+ </div>
+ </form>
\ No newline at end of file
Modified: plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage.template
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage.template 2008-01-26 20:47:45 UTC (rev 6175)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -1,49 +1,7 @@
{include file="$admintemplatepath/header.template"}
{include file="$admintemplatepath/navigation.template" showOpt=editInboxPrivateMessages title=$locale->tr("replyPrivateMessage")}
- <form name="replyPrivateMessage" method="post" action="admin.php">
- <fieldset class="inputField">
- <legend>{$locale->tr("replyPrivateMessage")}</legend>
- {include file="$admintemplatepath/formvalidate.template"}
+{include file="$admintemplatepath/replyprivatemessage_form.template"}
- <div class="field">
- <label for="receiverName">{$locale->tr("receiver_name")}</label>
- <span class="required">*</span><br/>
- <div class="formHelp">{$locale->tr("receiver_name_help")}</div>
- <input type="text" value="{$receiverName}" id="receiverName" name="receiverName" readonly=readonly />
- {include file="$admintemplatepath/validate.template" field=receiverName message=$locale->tr("error_receiver_name")}
- </div>
-
- <div class="field">
- <label for="subject">{$locale->tr("subject")}</label>
- <span class="required">*</span><br/>
- <div class="formHelp">{$locale->tr("subject_help")}</div>
- <input type="text" value="{$subject}" id="subject" name="subject" />
- {include file="$admintemplatepath/validate.template" field=subject message=$locale->tr("error_empty_subject")}
- </div>
-
- <div class="field">
- <label for="replyText">{$locale->tr("reply_text")}</label>
- <span class="required">*</span>
- <div class="formHelp">{$locale->tr("reply_text_help")}</div>
- <textarea name="replyText" cols="60" id="replyText" rows="5">{$messageText}</textarea>
- {include file="$admintemplatepath/validate.template" field=replyText message=$locale->tr("error_empty_reply_text")}
- </div>
-
- <div class="field">
- <label for="backupPrivateMessage">{$locale->tr("backup_private_message")}</label>
- <div class="formHelp">
- <input class="checkbox" type="checkbox" id="backupPrivateMessage" name="backupPrivateMessage" value="1" {if $backupPrivateMessage}checked="checked"{/if} />
- {$locale->tr("backup_private_message_help")}
- </div>
- </div>
-
- </fieldset>
- <div class="buttons">
- <input type="hidden" name="op" value="sendReplyPrivateMessage" />
- <input type="reset" name="resetButton" value="{$locale->tr("reset")}" />
- <input type="submit" name="Add" value="{$locale->tr("send")}" />
- </div>
- </form>
{include file="$admintemplatepath/footernavigation.template"}
{include file="$admintemplatepath/footer.template"}
\ No newline at end of file
Copied: plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage_form.template (from rev 6175, plog/trunk/templates/admin/replyprivatemessage_form.template)
===================================================================
--- plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage_form.template (rev 0)
+++ plog/branches/lifetype-2.0-csrf/templates/admin/replyprivatemessage_form.template 2008-01-27 18:25:22 UTC (rev 6176)
@@ -0,0 +1,44 @@
+ <form id="replyPrivateMessage" method="post" action="admin.php" onSubmit="Lifetype.UI.Pages.PrivateMessages.addSubmitHook(this);return(false);">
+ <fieldset class="inputField">
+ <legend>{$locale->tr("replyPrivateMessage")}</legend>
+ {include file="$admintemplatepath/formvalidateajax.template"}
+
+ <div class="field">
+ <label for="receiverName">{$locale->tr("receiver_name")}</label>
+ <span class="required">*</span><br/>
+ <div class="formHelp">{$locale->tr("receiver_name_help")}</div>
+ <input type="text" value="{$receiverName}" id="receiverName" name="receiverName" readonly=readonly />
+ {include file="$admintemplatepath/validateajax.template" field=receiverName}
+ </div>
+
+ <div class="field">
+ <label for="subject">{$locale->tr("subject")}</label>
+ <span class="required">*</span><br/>
+ <div class="formHelp">{$locale->tr("subject_help")}</div>
+ <input type="text" value="{$subject}" id="subject" name="subject" />
+ {include file="$admintemplatepath/validateajax.template" field=subject}
+ </div>
+
+ <div class="field">
+ <label for="replyText">{$locale->tr("reply_text")}</label>
+ <span class="required">*</span>
+ <div class="formHelp">{$locale->tr("reply_text_help")}</div>
+ <textarea name="replyText" cols="60" id="replyText" rows="5">{$replyText}</textarea>
+ {include file="$admintemplatepath/validateajax.template" field=replyText}
+ </div>
+
+ <div class="field">
+ <label for="backupPrivateMessage">{$locale->tr("backup_private_message")}</label>
+ <div class="formHelp">
+ <input class="checkbox" type="checkbox" id="backupPrivateMessage" name="backupPrivateMessage" value="1" {if $backupPrivateMessage}checked="checked"{/if} />
+ {$locale->tr("backup_private_message_help")}
+ </div>
+ </div>
+
+ </fieldset>
+ <div class="buttons">
+ <input type="hidden" name="op" value="sendReplyPrivateMessage" />
+ <input type="reset" name="resetButton" value="{$locale->tr("reset")}" />
+ <input type="submit" name="Add" value="{$locale->tr("send")}" />
+ </div>
+ </form>
\ No newline at end of file
More information about the pLog-svn
mailing list