[Isocial-svn] SF.net SVN: isocial: [46] public
Status: Pre-Alpha
Brought to you by:
aguidrevitch
From: <di...@us...> - 2008-03-09 12:04:49
|
Revision: 46 http://isocial.svn.sourceforge.net/isocial/?rev=46&view=rev Author: dim0s77 Date: 2008-03-09 05:04:55 -0700 (Sun, 09 Mar 2008) Log Message: ----------- messaging updated Modified Paths: -------------- app/controllers/message_controller.php app/locales/message/ru.php app/shared_model.php app/views/message/_rows.tpl app/views/message/inbox.tpl app/views/message/show.tpl app/views/shared/loggedin/pageheader.tpl config/routes.php public/stylesheets/Message.css Added Paths: ----------- app/views/message/_count.tpl app/views/message/_thread.tpl public/images/email.png public/images/email_open.png Modified: app/controllers/message_controller.php =================================================================== --- app/controllers/message_controller.php 2008-03-09 12:04:52 UTC (rev 45) +++ app/controllers/message_controller.php 2008-03-09 12:04:55 UTC (rev 46) @@ -9,6 +9,12 @@ } function inbox () { + $this->inbox_messages = $this->_getInboxMessages(); + $this->message_threads = $this->Message->count('thread_id', array('distinct' => 'thread_id', + 'conditions' => "sender_id = " . $this->current_user->getId())); + } + + function _getInboxMessages () { $messages = $this->current_user->inbox_message->load(); $inbox_messages = array(); if(!empty($messages)) { @@ -22,7 +28,7 @@ } } } - $this->inbox_messages = $inbox_messages; + return $inbox_messages; } function outbox () { @@ -64,25 +70,101 @@ $this->addError('_common', 'Sending message error', 'please, try again'); } } + + function reply () { + if (!empty($this->params['message'])) { + $recipient = $this->User->findFirst(array( 'id' => $this->params['message']['recipient'] )); + if ($recipient) { + $message = $this->current_user->outbox_message->build(); + $message->recipient->assign($recipient); + $message->setAttributes($this->params['message']); + if ($message->save()) { + $thread_id = $this->params['message']['thread_id']; + $thread = $this->Message->findFirst(array('thread_id' => $thread_id )); + $user_id = $this->current_user->getId(); + if ($thread->sender_id == $user_id || $thread->recipient_id == $user_id ) { + $recipient_id = $thread->sender_id == $user_id ? $thread->recipient_id : $thread->sender_id; + $interlocutor = $this->User->findFirst(array( 'id' => $recipient_id)); + $messages = $this->Message->find('all', array('conditions' => array('thread_id' => $thread->getId()), + 'order' => 'created_at', + 'include' => array('sender', 'recipient'))); + return $this->render(array('partial' =>'thread', + 'locals' => array('interlocutor' => $interlocutor, + 'messages' => $messages))); + } + } + } + } + } function send_successfully () { } function show () { - if (!empty($this->params['t'])){ - $thread = $this->Message->FindFirst(array( 'thread_id' => $this->params['t'] )); + if (!empty($this->params['t'])) { + $thread = $this->Message->findFirst(array('thread_id' => $this->params['t'] )); $user_id = $this->current_user->getId(); if ($thread->sender_id == $user_id || $thread->recipient_id == $user_id ) { - $this->recipient_id = $thread->sender_id == $user_id ? $thread->recipient_id : $thread->sender_id; + $recipient_id = $thread->sender_id == $user_id ? $thread->recipient_id : $thread->sender_id; + $this->interlocutor = $this->User->findFirst(array( 'id' => $recipient_id)); $this->messages = $this->Message->find('all', array('conditions' => array('thread_id' => $thread->getId()), - 'order' => 'created_at')); - $this->interlocutors[$user_id] = $this->current_user; - $this->interlocutors[$this->recipient_id] = $this->User->findFirst(array( 'id' => $this->recipient_id)); + 'order' => 'created_at', + 'include' => array('sender', 'recipient'))); return; } } $this->addError('_common', 'Thread unavailable', 'Sorry, the contents of this thread are temporarily unavailable. Please check back later.'); } + function inbox_count () { + $messages = $this->Message->find('all', array('conditions' => array('is_read' => '0'))); + return $this->render(array('partial' =>'count', + 'locals' => array('count' => count($messages)))); + } + + function mark_unread () { + return $this->_mark_messages(0); + } + + function mark_read () { + return $this->_mark_messages(1); + } + + function _mark_messages ($is_read) { + if (!empty($this->params['check_messages'])) { + $messages = $this->Message->find('all', + array('conditions' => array("id IN (" . $this->Message->_make_in_statement_from_array('id', $this->params['check_messages']) . ")", ))); + if ($messages) { + foreach ($messages as $message_loop_key => $message) { + if ($message->sender_id = $this->current_user->getId() || + $message->recipient_id = $this->current_user->getId()) { + $message->is_read = $is_read; + $message->save(); + } + } + } + } + return $this->render(array('partial' => 'rows', + 'locals' => array('messages' => $this->_getInboxMessages(), + 'target' => 'sender'))); + } + + function delete_thread () { + if (!empty($this->params['check_messages'])) { + $threads = $this->Message->find('all', + array('conditions' => array("id IN (" . $this->Message->_make_in_statement_from_array('id', $this->params['check_messages']) . ")", ))); + if ($threads) { + foreach ($threads as $thread_loop_key => $thread) { + if ($thread->sender_id = $this->current_user->getId() || + $thread->recipient_id = $this->current_user->getId()) { + $this->Message->destroyAll("thread_id = $thread->thread_id"); + } + } + } + } + return $this->render(array('partial' => 'rows', + 'locals' => array('messages' => $this->_getInboxMessages(), + 'target' => 'sender'))); + } } ?> \ No newline at end of file Modified: app/locales/message/ru.php =================================================================== --- app/locales/message/ru.php 2008-03-09 12:04:52 UTC (rev 45) +++ app/locales/message/ru.php 2008-03-09 12:04:55 UTC (rev 46) @@ -19,6 +19,8 @@ $dictionary['All'] = 'все'; $dictionary['Mark as'] = 'Отметить как'; $dictionary['Delete'] = 'Удалить'; +$dictionary['New message'] = 'Новое сообщение'; +$dictionary['Message is readed'] = 'Сообщение прочитано'; $dictionary['Message successfully sended'] = 'Сообщение отправлено'; $dictionary['Thread unavailable'] = 'Нить сообщений недоступна'; $dictionary['Sorry, the contents of this thread are temporarily unavailable. Please check back later.'] = 'К сожалению, содержание этой нити сообщений временно недоступно. Повторите попытку позже.'; @@ -27,5 +29,7 @@ $dictionary['and'] = 'и'; $dictionary['Reply'] = 'Ответ'; $dictionary['Back to'] = 'Обратно во'; +$dictionary['Delete Thread'] = 'Удалить нить сообщений'; +$dictionary['Are you sure you want to delete this thread'] = 'Вы уверены, что хотите удалить эту нить сообщений'; ?> Modified: app/shared_model.php =================================================================== --- app/shared_model.php 2008-03-09 12:04:52 UTC (rev 45) +++ app/shared_model.php 2008-03-09 12:04:55 UTC (rev 46) @@ -14,6 +14,15 @@ */ class ActiveRecord extends AkActiveRecord { + + function _make_in_statement_from_array ($column_name, $values) { + $options = array(); + foreach ($values as $value) { + $options[] = $this->castAttributeForDatabase($column_name, $value); + } + return join(", ", $options); + } + } ?> Added: app/views/message/_count.tpl =================================================================== --- app/views/message/_count.tpl (rev 0) +++ app/views/message/_count.tpl 2008-03-09 12:04:55 UTC (rev 46) @@ -0,0 +1 @@ +{count} \ No newline at end of file Modified: app/views/message/_rows.tpl =================================================================== --- app/views/message/_rows.tpl 2008-03-09 12:04:52 UTC (rev 45) +++ app/views/message/_rows.tpl 2008-03-09 12:04:55 UTC (rev 46) @@ -1,11 +1,25 @@ <table class="message_row"> <tbody> {loop messages} -<tr><? $sender = $message->$target->load() ?> - <td class="msg_icon"> </td> - <td class="checkbox"><input onclick="" type="checkbox"></td> +<? $sender = $message->$target->load() ?> +<tr class="<? if (!$message->is_read) { echo 'new_message'; } ?>"> + <td class="msg_icon"> + <? if ($target == 'sender') { + echo '<a href="">'; + if (!$message->is_read) { + echo '<img src="/images/email.png" alt="_{New message}" class="">'; + } else { + echo '<img src="/images/email_open.png" alt="_{Message is readed}" class="">'; + } + echo '</a>'; + } else { + echo '<span> </span>'; + } + ?> + </td> + <td class="checkbox"><input onclick="oncheck(this, {?message.is_read}{message.is_read}{else}0{end})" type="checkbox" class="check{?message.is_read}read{else}unread{end}" id="{message.id}" name="check_messages[]" value="{message.id}"></td> <td class="profile_photo"><a href=""><img src="/images/nophoto_men_sm.gif" alt="" class=""></a></td> - <td class="name_and_datetime"> + <td class="info"> <span class="name"><a href="">{sender.name?}</a></span> <span class="datetime">{message.created_at?}</span> </td> @@ -13,7 +27,7 @@ <div class="wrapper"> <a href="/message/show?t={message.thread_id?}" class="subject">{message.subject?}</a> <div class="body_wrap"> - <? (utf8_strlen($message->body) > 50) ? $msg_body = utf8_substr($message->body, 0, 50) . " [..]" : $msg_body = $message->body; ?> + <? (utf8_strlen($message->body) > 47) ? $msg_body = utf8_substr($message->body, 0, 47) . " [..]" : $msg_body = $message->body; ?> <a href="/message/show?t={message.thread_id?}" class="body">{msg_body?}</a> </div> </div> @@ -30,4 +44,5 @@ </tbody> </table> -<div class="inbox_footer"><div class="mailbox_size">1 Message Threads</div></div> +<div class="inbox_footer"><div class="mailbox_size">{message_threads} _{Message Threads}</div></div> + Added: app/views/message/_thread.tpl =================================================================== --- app/views/message/_thread.tpl (rev 0) +++ app/views/message/_thread.tpl 2008-03-09 12:04:55 UTC (rev 46) @@ -0,0 +1,17 @@ +<div class="head"> + <h2 class="subject">{messages-0.subject}</h2> + <div class="interlocutors">_{Between} + <a href="">_{You}</a> _{and} <a href="">{interlocutor.name}</a> + </div> +</div> +{loop messages} +<div class="message" id="msg{message_loop_counter}"> + <div class="message_author_pict"><a href=""><img src="/images/nophoto_men_sm.gif" alt="" class=""></a></div> + <div class="message_author_info"> + <div class="name"><a href="">{message.sender.name?}</a></div> + <div class="date">{message.created_at?}</div> + </div> + <div class="message_body">{message.body?}</div> +</div> +<div class="divide_line"> </div> +{end} Modified: app/views/message/inbox.tpl =================================================================== --- app/views/message/inbox.tpl 2008-03-09 12:04:52 UTC (rev 45) +++ app/views/message/inbox.tpl 2008-03-09 12:04:55 UTC (rev 46) @@ -3,9 +3,9 @@ <div class="inbox_submenu"> <div class="menu_block selector"> <label for="action_select">_{Select}: - <select class="" onchange="" id="action_select" name="action_selector"> + <select class="" onchange="onselect(this)" id="action_select" name="action_selector"> <option selected="selected" value="_">---------</option> - <option value="">_{None}</option> + <option value="none">_{None}</option> <option value="read">_{Read}</option> <option value="unread">_{Unread}</option> <option value="all">_{All}</option> @@ -14,15 +14,83 @@ </div> <div class="menu_block"> <ul id="inbox_action" class="buttons"> - <li class="disabled"><a>_{Mark as}:</a></li> - <li class="disabled"><a href="#" onclick="" id="unread">_{Unread},</a></li> - <li class="disabled"><a href="#" onclick="" id="read">_{Read};</a></li> - <li class="disabled"><a href="#" onclick="" id="delete">_{Delete}</a></li> + <li><a class="disabled">_{Mark as}:</a></li> + <li><a href="#" onclick="mark_as_unread(this)" id="unread_link" class="disabled">_{Unread},</a></li> + <li><a href="#" onclick="mark_as_read(this)" id="read_link" class="disabled">_{Read};</a></li> + <li><a href="#" onclick="delete_thread(this)" id="delete_link" class="disabled">_{Delete}</a></li> </ul> </div> </div> -<?= $controller->render(array('partial' => 'rows', - 'locals' => array('messages' => $inbox_messages, - 'target' => 'sender'))) ?> +<form id="messages_form" action="/message/inbox" method="post" onsubmit="return false;"> + <div id="messages"> + <?= $controller->render(array('partial' => 'rows', + 'locals' => array('messages' => $inbox_messages, + 'target' => 'sender'))) ?> + </div> +</form> +<script> +function oncheck (element, is_read) { + checkread = $$('input[type=checkbox].checkread:checked'); + checkunread = $$('input[type=checkbox].checkunread:checked'); + + checkread.length ? $("unread_link").removeClassName('disabled') : $("unread_link").addClassName('disabled'); + checkunread.length ? $("read_link").removeClassName('disabled') : $("read_link").addClassName('disabled'); + checkunread.length || checkread.length ? $("delete_link").removeClassName('disabled') : $("delete_link").addClassName('disabled'); +}; + +function onselect (element) { + var checkboxes; + switch (element.getValue()) { + case "none": + checkboxes = $$('input[type=checkbox]:checked'); + break; + case "read": + checkboxes = $$('input[type=checkbox].checkread:not(:checked)'); + checkboxes = checkboxes.concat($$('input[type=checkbox].checkunread:checked')); + break; + case "unread": + checkboxes = $$('input[type=checkbox].checkread:checked'); + checkboxes = checkboxes.concat($$('input[type=checkbox].checkunread:not(:checked)')); + break; + case "all": + checkboxes = $$('input[type=checkbox]:not(:checked)'); + break; + } + if (checkboxes) { + checkboxes.invoke('click'); + } +}; + +function mark_as_unread (element) { + new Ajax.Updater('messages', + '/message/mark_unread', + { method:'post', asynchronous:true, parameters:$('messages_form').serialize()}); + disable_action_links(); + return false; +} + +function mark_as_read (element) { + new Ajax.Updater('messages', + '/message/mark_read', + { method:'post', asynchronous:true, parameters:$('messages_form').serialize()}); + disable_action_links(); + return false; +} + +function delete_thread (element) { + new Ajax.Updater('messages', + '/message/delete_thread', + { method:'post', asynchronous:true, parameters:$('messages_form').serialize()}); + disable_action_links(); + return false; +} + +function disable_action_links () { + $("read_link").addClassName('disabled'); + $("unread_link").addClassName('disabled'); + $("delete_link").addClassName('disabled'); +} + +</script> Modified: app/views/message/show.tpl =================================================================== --- app/views/message/show.tpl 2008-03-09 12:04:52 UTC (rev 45) +++ app/views/message/show.tpl 2008-03-09 12:04:55 UTC (rev 46) @@ -3,45 +3,33 @@ <?= $controller->renderErrors() ?> <div class="messages_thread"> - <div class="thread_head"> - <h2 class="subject">{messages-0.subject} - <div class="interlocutors">_{Between} - <a href="">_{You}</a> _{and} - <a href=""><? $recipient = $interlocutors[$recipient_id] ?>{recipient.name}</a></div> - </h2> + <div id="messages"> + <?= $controller->render(array('partial' =>'thread', + 'locals' => array('interlocutor' => $interlocutor, + 'messages' => $messages))); ?> </div> - <hr width="600px"> -{loop messages} - <? $interlocutor = $interlocutors[$message->sender_id] ?> - <div class="message" id="msg{message_loop_counter}"> - <div class="column author_picture"><a href=""><img src="/images/nophoto_men_sm.gif" alt="" class=""></a></div> - <div class="column author_info"> - <div class="name"><a href="">{interlocutor.name?}</a></div> - <div class="date">{message.created_at?}</div> - <div class="extras"></div> - </div> - <div class="column body"> - <div class="text">{message.body?}</div> - </div> - </div> - <div class="msg_divide_btm"> </div> -{end} - <div class="reply_container"> - <form action="/message/send" method="post"> - <div class="row"><label>_{Reply}:</label></div> - <div class="row"><?= $form_helper->text_area('message', 'body', array('class' => 'textinput'))?></div> - <input id="message_recipient" name="message[recipient]" type="hidden" value="{recipient_id}" /> - <input id="message_thread_id" name="message[thread_id]" type="hidden" value="{message.thread_id}" /> - <input id="message_subject" name="message[subject]" type="hidden" value="re: {message.subject}" /> - <div class="msg_divide_btm"> </div> - <div class="row"> - <div class="submits"> - <input class="submitinput" type="submit" value="_{Send}"> - <input class="cancelinput" type="button" value="_{Back to} _{Inbox}" onclick=""> - </div> - <div class="sub_controls"><a href="#" onclick="">_{Delete}</a></div> + <form id="reply_message_form" action="/message/show" method="post" onsubmit="return false;"> + <label>_{Reply}:</label> + <?= $form_helper->text_area('message', 'body', array('class' => 'textinput'))?> + <input id="message_recipient" name="message[recipient]" type="hidden" value="{interlocutor.id}" /> + <input id="message_thread_id" name="message[thread_id]" type="hidden" value="{messages-0.thread_id}" /> + <input id="message_subject" name="message[subject]" type="hidden" value="re: {messages-0.subject}" /> + <div class="divide_line"> </div> + <div class="submits"> + <input class="submitinput" type="submit" value="_{Send}" onclick="new Ajax.Updater('messages', '/message/reply', { method:'post', asynchronous:true, parameters:Form.serialize('reply_message_form')}); $('message_body').clear(); return false;"> + <input class="cancelinput" type="button" value="_{Back to} _{Inbox}" onclick=""> + </div> + <div class="sub_controls"><a href="#" onclick="Element.show('dlg'); return false;">_{Delete}</a></div> </form> </div> - </div> + +<div class="action_dialog" id="dlg"> + <div class="header">_{Delete Thread}</div> + <div class="body">_{Are you sure you want to delete this thread}?</div> + <div class="footer"><div class="buttons"> + <input class="submitinput" type="button" value="_{Delete}"> + <input class="cancelinput" type="button" value="_{Cancel}"> + </div></div> +</div> Modified: app/views/shared/loggedin/pageheader.tpl =================================================================== --- app/views/shared/loggedin/pageheader.tpl 2008-03-09 12:04:52 UTC (rev 45) +++ app/views/shared/loggedin/pageheader.tpl 2008-03-09 12:04:55 UTC (rev 46) @@ -1,8 +1,16 @@ <ul id="headermenuleft"> <li><a class="globallink" href="/profile/">_{Profile}</a> <a href="/profile/basic">_{edit}</a></li> <li><a class="globallink" href="/friend/">_{Friends}</a></li> - <li><a class="globallink" href="/message/">_{Messages} (0)</a></li> + <li><a class="globallink" href="/message/">_{Messages} (<span id="messages_count">0</span>)</a></li> </ul> <ul id="headermenuright"> <li><a href="/user/logout">_{Logout}</a></li> -</ul> \ No newline at end of file +</ul> + +<script> +window.onload = function () { + new Ajax.PeriodicalUpdater('messages_count', '/message/inbox_count', { + method: 'get', frequency: 3, decay: 0 + }); +} +</script> Modified: config/routes.php =================================================================== --- config/routes.php 2008-03-09 12:04:52 UTC (rev 45) +++ config/routes.php 2008-03-09 12:04:55 UTC (rev 46) @@ -2,7 +2,7 @@ // You can find more about routes on /lib/AkRouters.php and /test/test_AkRouter.php -$Map->connect('/:controller/:action', array('controller' => 'default', 'action' => 'index')); +$Map->connect('/:controller/:action/:id', array('controller' => 'default', 'action' => 'index')); $Map->connect('/', array('controller' => 'default', 'action' => 'index')); ?> Added: public/images/email.png =================================================================== (Binary files differ) Property changes on: public/images/email.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: public/images/email_open.png =================================================================== (Binary files differ) Property changes on: public/images/email_open.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: public/stylesheets/Message.css =================================================================== --- public/stylesheets/Message.css 2008-03-09 12:04:52 UTC (rev 45) +++ public/stylesheets/Message.css 2008-03-09 12:04:55 UTC (rev 46) @@ -31,11 +31,8 @@ display: block; } -.inbox_submenu .disabled a { +.inbox_submenu .disabled { color: #aaaaaa; -} - -.inbox_submenu .disabled a:hover { cursor: default; text-decoration: none; } @@ -57,6 +54,14 @@ width: 100%; } +.message_row .new_message { + background: #f4f8fc; +} + +.message_row .new_message .msg .subject { + font-weight: bold; +} + .message_row tr td { border-bottom: 1px solid #e1e1e1; padding: 5px 0px 5px 0px; @@ -67,8 +72,8 @@ display: block; margin-top: 1px; width: 17px; - height: 14px; - padding-left: 10px; + height: 19px; + padding: 0px 10px 0px 10px; text-decoration: none; } @@ -81,7 +86,7 @@ line-height: 1px; } -.message_row .name_and_datetime .name { +.message_row .info .name { display: block; width: 130px; margin-right: 20px; @@ -89,17 +94,13 @@ text-overflow: ellipsis; } -.name_and_datetime .datetime { +.message_row .info .datetime { display: block; padding: 1px 0px 0px 0px; font-size: 9px; color: #777777; } -.name_and_datetime .unread_name { - font-weight: bold; -} - .message_row .msg { margin-right: 10px; line-height: 14px; @@ -167,94 +168,75 @@ padding: 20px 30px 0px 30px; } -.thread_head { - margin: 0px 0px 0px 10px; +.head { + padding: 0px 0px 5px 185px; + border-bottom: 1px solid #777777; } -.thread_head h2 { - margin: 0px 20px 1px 153px; - padding: 0px 0px 0px 22px; +.head h2 { font-size: 15px; color: #333333; } -.thread_head h2 .interlocutors { +.head .interlocutors { + padding: 3px 0px 0px 0px; font-size: 11px; font-weight: normal; } .message { - display: block; - margin-top: 10px; - overflow: hidden; + //height: 1%; } -.message .column { +.message:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} + +.message div { float: left; - padding: 0px 0px 10px 0px; + padding: 5px 0px 10px 0px; } -.message .author_picture { +.message_author_pict { width: 50px; padding-bottom: 0px; } -.message .author_picture img { +.message_author_pict img { display: block; } -.message .author_info { +.message_author_info { width: 120px; - padding: 0px 10px 0px 0px; font-weight: normal; font-size: 9px; - text-align: right; } -.message .author_info .name { - padding: 3px 5px 0px 5px; +.message_author_info .name { + padding: 3px 0px 0px 0px; font-size: 11px; font-weight: bold; - overflow: hidden; + float: right; + text-align: right; } -.message.unread .author_info .name { - padding: 3px 5px 4px 20px; - background: #eff2f7 url('/inbox/images/new_message.gif') no-repeat 7px 5px; - border-top: 1px solid #d8dfea; - overflow: hidden; -} - -.message .author_info .date { - display: block; - padding: 2px 5px 2px 0px; +.message_author_info .date { + padding: 2px 0px 2px 0px; color: #777777; -} - -.message .author_info .extras a { float: right; - padding-right: 5px; - margin-bottom: 1px; } -.message .body { - padding: 3px 0px 14px 5px; -} - -.message.unread .body { - padding-top: 4px; -} - -.message .body .text { - width: 300px; +.message_body { + margin: 3px 5px 14px 15px; + width: 380px; word-wrap: break-word; } -.message .body .text.no_body { - color: #777777; -} - -.msg_divide_btm { +.divide_line { height: 1px; margin: 1px 0px 0px 185px; background: #dddddd; @@ -268,27 +250,71 @@ overflow: auto; } -.reply_container .row { - display: block; +.reply_container form { padding: 5px 0px 0px 185px; - margin-right: 20px; - clear: both; } -.row textarea { +.reply_container form label { + margin: 0px 0px 5px 0px; +} + +.reply_container form textarea { height: 100px; - width: 355px; + width: 360px; padding: 5px 0px 15px 3px; font-size: 11px; - overflow: hidden; + overflow: auto; } -.row .submits { +.reply_container form .submits { float: left; } -.row .sub_controls { +.reply_container form .sub_controls { padding-top: 11px; font-size: 9px; float: right; } + +.reply_container form .divide_line { + height: 1px; + margin: 1px 0px 0px 0px; + background: #dddddd; + overflow: hidden; +} + +.action_dialog { + border: 6px solid #999999; + width: 465px; + overflow: auto; + top: 34px; + position: relative; + z-index: 100; +} + +.action_dialog .header { + background-color: #6d84b4; + border: 1px solid #3b5998; + color: #ffffff; + font-weight: bold; + font-size: 13px; + padding: 6px 0px 6px 10px; +} + +.action_dialog .body { + background-color: #ffffff; + color: #000000; + font-size: 11px; + padding: 15px; +} + +.action_dialog .footer { + background-color: #f2f2f2; + border: 1px solid #a6a6a6; + overflow: auto; +} + +.action_dialog .footer .buttons { + margin: 0px 6px 0px 0px; + float: right; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |