Version Notes
No notes
Download this release
Release Info
| Developer | Magento Core Team |
| Extension | Afg_LightboxMessages |
| Version | 1.0.1 |
| Comparing to | |
| See all releases | |
Version 1.0.1
- app/code/community/Afg/LightboxMessages/Block/Messages.php +204 -0
- app/code/community/Afg/LightboxMessages/etc/config.xml +77 -0
- app/code/community/Afg/LightboxMessages/etc/system.xml +128 -0
- app/design/adminhtml/default/default/layout/lightboxMessages.xml +9 -0
- app/design/adminhtml/default/default/template/login.phtml +77 -0
- app/design/frontend/base/default/layout/lightboxMessages.xml +9 -0
- app/etc/modules/Afg_Informations.xml +35 -0
- app/etc/modules/Afg_LightboxMessages.xml +35 -0
- js/prototype/modalbox.js +593 -0
- media/groupe-afg.png +0 -0
- media/txt-groupeafg.png +0 -0
- package.xml +18 -0
- skin/adminhtml/default/default/modalbox.css +122 -0
- skin/frontend/base/default/css/modalbox.css +122 -0
app/code/community/Afg/LightboxMessages/Block/Messages.php
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Core
|
| 23 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 25 |
+
*/
|
| 26 |
+
|
| 27 |
+
/**
|
| 28 |
+
* Messages block
|
| 29 |
+
*
|
| 30 |
+
* @category Afg
|
| 31 |
+
* @package Afg_LightboxMessages
|
| 32 |
+
* @author Jerome DIMANCHE <jdimanche@groupeafg.com>
|
| 33 |
+
*/
|
| 34 |
+
class Afg_LightboxMessages_Block_Messages extends Mage_Core_Block_Messages
|
| 35 |
+
{
|
| 36 |
+
/**
|
| 37 |
+
* Retrieve messages in HTML format grouped by type
|
| 38 |
+
*
|
| 39 |
+
* @param string $type
|
| 40 |
+
* @return string
|
| 41 |
+
*/
|
| 42 |
+
public function getGroupedHtml()
|
| 43 |
+
{
|
| 44 |
+
if(!$this->isActivated())
|
| 45 |
+
return parent::getGroupedHtml();
|
| 46 |
+
else
|
| 47 |
+
return $this->getAfgGroupedHtml();
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
/**
|
| 51 |
+
* @desc Draw specific messages
|
| 52 |
+
* @param Varien_Object $specificRules
|
| 53 |
+
*/
|
| 54 |
+
public function getAfgGroupedHtml(Varien_Object $specificRules = null)
|
| 55 |
+
{
|
| 56 |
+
$types = array(
|
| 57 |
+
Mage_Core_Model_Message::ERROR,
|
| 58 |
+
Mage_Core_Model_Message::WARNING,
|
| 59 |
+
Mage_Core_Model_Message::NOTICE,
|
| 60 |
+
Mage_Core_Model_Message::SUCCESS
|
| 61 |
+
);
|
| 62 |
+
$html = '';
|
| 63 |
+
$lightbox = '';
|
| 64 |
+
|
| 65 |
+
foreach ($types as $type)
|
| 66 |
+
{
|
| 67 |
+
if ( $messages = $this->getMessages($type) )
|
| 68 |
+
{
|
| 69 |
+
if($this->useForce($type))
|
| 70 |
+
{
|
| 71 |
+
/*########## HTML LIGHTBOX ##########*/
|
| 72 |
+
if ( !$lightbox )
|
| 73 |
+
{
|
| 74 |
+
//UL general
|
| 75 |
+
$lightbox .= '<' . $this->_messagesFirstLevelTagName . ' class="messages">';
|
| 76 |
+
}
|
| 77 |
+
//LI - Type
|
| 78 |
+
//UL du type
|
| 79 |
+
$lightbox .= '<' . $this->_messagesSecondLevelTagName . ' class="' . $type . '-msg">';
|
| 80 |
+
$lightbox .= '<' . $this->_messagesFirstLevelTagName . '>';
|
| 81 |
+
|
| 82 |
+
foreach ( $messages as $message )
|
| 83 |
+
{
|
| 84 |
+
//Li du type
|
| 85 |
+
$lightbox.= '<' . $this->_messagesSecondLevelTagName . '>';
|
| 86 |
+
$lightbox.= '<' . $this->_messagesContentWrapperTagName . '>';
|
| 87 |
+
$lightbox.= ($this->_escapeMessageFlag) ? $this->htmlEscape($message->getText()) : $message->getText();
|
| 88 |
+
$lightbox.= '</' . $this->_messagesContentWrapperTagName . '>';
|
| 89 |
+
$lightbox.= '</' . $this->_messagesSecondLevelTagName . '>';
|
| 90 |
+
}
|
| 91 |
+
//UL du type
|
| 92 |
+
$lightbox .= '</' . $this->_messagesFirstLevelTagName . '>';
|
| 93 |
+
//UL general
|
| 94 |
+
$lightbox .= '</' . $this->_messagesSecondLevelTagName . '>';
|
| 95 |
+
/*########## END HTML LIGHTBOX ##########*/
|
| 96 |
+
}
|
| 97 |
+
else
|
| 98 |
+
{
|
| 99 |
+
/*########## HTML ##########*/
|
| 100 |
+
if ( !$html )
|
| 101 |
+
{
|
| 102 |
+
//UL general
|
| 103 |
+
$html .= '<' . $this->_messagesFirstLevelTagName . ' class="messages">';
|
| 104 |
+
}
|
| 105 |
+
//LI - Type
|
| 106 |
+
//UL du type
|
| 107 |
+
$html .= '<' . $this->_messagesSecondLevelTagName . ' class="' . $type . '-msg">';
|
| 108 |
+
$html .= '<' . $this->_messagesFirstLevelTagName . '>';
|
| 109 |
+
|
| 110 |
+
foreach ( $messages as $message )
|
| 111 |
+
{
|
| 112 |
+
//Li du type
|
| 113 |
+
$html.= '<' . $this->_messagesSecondLevelTagName . '>';
|
| 114 |
+
$html.= '<' . $this->_messagesContentWrapperTagName . '>';
|
| 115 |
+
$html.= ($this->_escapeMessageFlag) ? $this->htmlEscape($message->getText()) : $message->getText();
|
| 116 |
+
$html.= '</' . $this->_messagesContentWrapperTagName . '>';
|
| 117 |
+
$html.= '</' . $this->_messagesSecondLevelTagName . '>';
|
| 118 |
+
}
|
| 119 |
+
//UL du type
|
| 120 |
+
$html .= '</' . $this->_messagesFirstLevelTagName . '>';
|
| 121 |
+
//UL general
|
| 122 |
+
$html .= '</' . $this->_messagesSecondLevelTagName . '>';
|
| 123 |
+
/*########## END HTML ##########*/
|
| 124 |
+
}
|
| 125 |
+
}
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
if ($html)
|
| 129 |
+
{
|
| 130 |
+
$html .= '</' . $this->_messagesFirstLevelTagName . '>';
|
| 131 |
+
}
|
| 132 |
+
|
| 133 |
+
if ($lightbox)
|
| 134 |
+
{
|
| 135 |
+
$html .= "<script type='text/javascript'>
|
| 136 |
+
//<![CDATA[
|
| 137 |
+
if(typeof Modalbox != 'undefined')
|
| 138 |
+
{
|
| 139 |
+
Event.observe(window, 'load', function() {
|
| 140 |
+
Modalbox.show('$lightbox', {title: '".$this->getLightboxTitle()."'});
|
| 141 |
+
});
|
| 142 |
+
}
|
| 143 |
+
else alert('Afg Lightbox Messages needs ModalBox.js to run.');
|
| 144 |
+
//]]>
|
| 145 |
+
</script>";
|
| 146 |
+
}
|
| 147 |
+
return $html;
|
| 148 |
+
}
|
| 149 |
+
public function useForce($type)
|
| 150 |
+
{
|
| 151 |
+
switch($type)
|
| 152 |
+
{
|
| 153 |
+
case Mage_Core_Model_Message::ERROR :
|
| 154 |
+
return $this->forceError();
|
| 155 |
+
case Mage_Core_Model_Message::WARNING :
|
| 156 |
+
return $this->forceWarning();
|
| 157 |
+
case Mage_Core_Model_Message::NOTICE :
|
| 158 |
+
return $this->forceNotice();
|
| 159 |
+
case Mage_Core_Model_Message::SUCCESS :
|
| 160 |
+
return $this->forceSuccess();
|
| 161 |
+
default :
|
| 162 |
+
return false;
|
| 163 |
+
}
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
public function isActivated()
|
| 167 |
+
{
|
| 168 |
+
return ((Mage::app()->getStore()->isAdmin() && $this->isBackendActivated()) || (!Mage::app()->getStore()->isAdmin() && $this->isFrontendActivated()));
|
| 169 |
+
}
|
| 170 |
+
public function isFrontendActivated()
|
| 171 |
+
{
|
| 172 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_activate_frontend');
|
| 173 |
+
}
|
| 174 |
+
|
| 175 |
+
public function isBackendActivated()
|
| 176 |
+
{
|
| 177 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_activate_backend');
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
public function forceError()
|
| 181 |
+
{
|
| 182 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_force_error');
|
| 183 |
+
}
|
| 184 |
+
|
| 185 |
+
public function forceNotice()
|
| 186 |
+
{
|
| 187 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_force_notice');
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
public function forceWarning()
|
| 191 |
+
{
|
| 192 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_force_warning');
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
public function forceSuccess()
|
| 196 |
+
{
|
| 197 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_force_success');
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
public function getLightboxTitle()
|
| 201 |
+
{
|
| 202 |
+
return Mage::getStoreConfig('afg_lightboxmessages/afg_lightboxmessages_group/lightboxmessages_title');
|
| 203 |
+
}
|
| 204 |
+
}
|
app/code/community/Afg/LightboxMessages/etc/config.xml
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Afg_LightboxMessages>
|
| 5 |
+
<version>1.0.0</version>
|
| 6 |
+
</Afg_LightboxMessages>
|
| 7 |
+
</modules>
|
| 8 |
+
<global>
|
| 9 |
+
<blocks>
|
| 10 |
+
<core>
|
| 11 |
+
<rewrite>
|
| 12 |
+
<messages>Afg_LightboxMessages_Block_Messages</messages>
|
| 13 |
+
</rewrite>
|
| 14 |
+
</core>
|
| 15 |
+
</blocks>
|
| 16 |
+
<global>
|
| 17 |
+
<models>
|
| 18 |
+
<lightboxmessages>
|
| 19 |
+
<class>Afg_LightboxLessages_Model</class>
|
| 20 |
+
</lightboxmessages>
|
| 21 |
+
</models>
|
| 22 |
+
</global>
|
| 23 |
+
</global>
|
| 24 |
+
<adminhtml>
|
| 25 |
+
<acl>
|
| 26 |
+
<resources>
|
| 27 |
+
<all>
|
| 28 |
+
<title>Allow Everything</title>
|
| 29 |
+
</all>
|
| 30 |
+
<admin>
|
| 31 |
+
<children>
|
| 32 |
+
<system>
|
| 33 |
+
<children>
|
| 34 |
+
<config>
|
| 35 |
+
<children>
|
| 36 |
+
<afg_lightboxmessages>
|
| 37 |
+
<title>AFG Solutions - LightboxMessages</title>
|
| 38 |
+
</afg_lightboxmessages>
|
| 39 |
+
</children>
|
| 40 |
+
</config>
|
| 41 |
+
</children>
|
| 42 |
+
</system>
|
| 43 |
+
</children>
|
| 44 |
+
</admin>
|
| 45 |
+
</resources>
|
| 46 |
+
</acl>
|
| 47 |
+
<layout>
|
| 48 |
+
<updates>
|
| 49 |
+
<articles>
|
| 50 |
+
<file>lightboxMessages.xml</file>
|
| 51 |
+
</articles>
|
| 52 |
+
</updates>
|
| 53 |
+
</layout>
|
| 54 |
+
</adminhtml>
|
| 55 |
+
<frontend>
|
| 56 |
+
<layout>
|
| 57 |
+
<updates>
|
| 58 |
+
<articles>
|
| 59 |
+
<file>lightboxMessages.xml</file>
|
| 60 |
+
</articles>
|
| 61 |
+
</updates>
|
| 62 |
+
</layout>
|
| 63 |
+
</frontend>
|
| 64 |
+
<default>
|
| 65 |
+
<afg_lightboxmessages>
|
| 66 |
+
<afg_lightboxmessages_group>
|
| 67 |
+
<lightboxmessages_activate_frontend>0</lightboxmessages_activate_frontend>
|
| 68 |
+
<lightboxmessages_activate_backend>0</lightboxmessages_activate_backend>
|
| 69 |
+
<lightboxmessages_force_error>0</lightboxmessages_force_error>
|
| 70 |
+
<lightboxmessages_force_notice>0</lightboxmessages_force_notice>
|
| 71 |
+
<lightboxmessages_force_warning>0</lightboxmessages_force_warning>
|
| 72 |
+
<lightboxmessages_force_success>0</lightboxmessages_force_success>
|
| 73 |
+
<lightboxmessages_title>For your information</lightboxmessages_title>
|
| 74 |
+
</afg_lightboxmessages_group>
|
| 75 |
+
</afg_lightboxmessages>
|
| 76 |
+
</default>
|
| 77 |
+
</config>
|
app/code/community/Afg/LightboxMessages/etc/system.xml
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!-- /** * Magento * * NOTICE OF LICENSE * * This source file is subject
|
| 3 |
+
to the Academic Free License (AFL 3.0) * that is bundled with this package
|
| 4 |
+
in the file LICENSE_AFL.txt. * It is also available through the world-wide-web
|
| 5 |
+
at this URL: * http://opensource.org/licenses/afl-3.0.php * If you did not
|
| 6 |
+
receive a copy of the license and are unable to * obtain it through the world-wide-web,
|
| 7 |
+
please send an email * to license@magentocommerce.com so we can send you
|
| 8 |
+
a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if
|
| 9 |
+
you wish to upgrade Magento to newer * versions in the future. If you wish
|
| 10 |
+
to customize Magento for your * needs please refer to http://www.magentocommerce.com
|
| 11 |
+
for more information. * * @category Mage * @package Mage_Sales * @copyright
|
| 12 |
+
Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com) * @license
|
| 13 |
+
http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
| 14 |
+
*/ -->
|
| 15 |
+
<config>
|
| 16 |
+
<tabs>
|
| 17 |
+
<afg translate="label">
|
| 18 |
+
<label>AFG Solutions</label>
|
| 19 |
+
<sort_order>106</sort_order>
|
| 20 |
+
</afg>
|
| 21 |
+
</tabs>
|
| 22 |
+
|
| 23 |
+
<sections>
|
| 24 |
+
<afg_lightboxmessages translate="label">
|
| 25 |
+
<label>AFG Lightbox Messages</label>
|
| 26 |
+
<tab>afg</tab>
|
| 27 |
+
<frontend_type>text</frontend_type>
|
| 28 |
+
<sort_order>120</sort_order>
|
| 29 |
+
<show_in_default>1</show_in_default>
|
| 30 |
+
<show_in_website>1</show_in_website>
|
| 31 |
+
<show_in_store>1</show_in_store>
|
| 32 |
+
<groups>
|
| 33 |
+
<afg_lightboxmessages_group translate="label">
|
| 34 |
+
<label>Lightbox Messages</label>
|
| 35 |
+
<sort_order>70</sort_order>
|
| 36 |
+
<show_in_default>1</show_in_default>
|
| 37 |
+
<show_in_website>1</show_in_website>
|
| 38 |
+
<show_in_store>1</show_in_store>
|
| 39 |
+
<fields>
|
| 40 |
+
<lightboxmessages_activate_frontend translate="label, comment">
|
| 41 |
+
<label>Use Lightbox Messages in Frontend</label>
|
| 42 |
+
<sort_order>10</sort_order>
|
| 43 |
+
<frontend_type>select</frontend_type>
|
| 44 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 45 |
+
<show_in_default>1</show_in_default>
|
| 46 |
+
<show_in_website>1</show_in_website>
|
| 47 |
+
<show_in_store>1</show_in_store>
|
| 48 |
+
<comment>
|
| 49 |
+
<![CDATA[Activate Lightbox Messages in <span style='color:green;font-weight:bold;'>Frontend</span>]]>
|
| 50 |
+
</comment>
|
| 51 |
+
</lightboxmessages_activate_frontend>
|
| 52 |
+
<lightboxmessages_activate_backend translate="label, comment">
|
| 53 |
+
<label>Use Lightbox Messages in Backend</label>
|
| 54 |
+
<sort_order>12</sort_order>
|
| 55 |
+
<frontend_type>select</frontend_type>
|
| 56 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 57 |
+
<show_in_default>1</show_in_default>
|
| 58 |
+
<show_in_website>1</show_in_website>
|
| 59 |
+
<show_in_store>1</show_in_store>
|
| 60 |
+
<comment>
|
| 61 |
+
<![CDATA[Activate of Lightbox Messages in <span style='color:red;font-weight:bold;'>Backend</span>]]>
|
| 62 |
+
</comment>
|
| 63 |
+
</lightboxmessages_activate_backend>
|
| 64 |
+
<lightboxmessages_title translate="label, comment">
|
| 65 |
+
<label>Title for the lightbox</label>
|
| 66 |
+
<sort_order>15</sort_order>
|
| 67 |
+
<frontend_type>text</frontend_type>
|
| 68 |
+
<show_in_default>1</show_in_default>
|
| 69 |
+
<show_in_website>1</show_in_website>
|
| 70 |
+
<show_in_store>1</show_in_store>
|
| 71 |
+
<comment>
|
| 72 |
+
<![CDATA[The title of the lightbox]]>
|
| 73 |
+
</comment>
|
| 74 |
+
</lightboxmessages_title>
|
| 75 |
+
<lightboxmessages_force_success translate="label, comment">
|
| 76 |
+
<label>Force Lightbox Messages for Success</label>
|
| 77 |
+
<sort_order>20</sort_order>
|
| 78 |
+
<frontend_type>select</frontend_type>
|
| 79 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 80 |
+
<show_in_default>1</show_in_default>
|
| 81 |
+
<show_in_website>1</show_in_website>
|
| 82 |
+
<show_in_store>1</show_in_store>
|
| 83 |
+
<comment>
|
| 84 |
+
<![CDATA[Use Lightbox Messages for all <span style='color:green;font-weight:bold;'>success</span> messages.]]>
|
| 85 |
+
</comment>
|
| 86 |
+
</lightboxmessages_force_success>
|
| 87 |
+
<lightboxmessages_force_error translate="label, comment">
|
| 88 |
+
<label>Force Lightbox Messages for Errors</label>
|
| 89 |
+
<sort_order>30</sort_order>
|
| 90 |
+
<frontend_type>select</frontend_type>
|
| 91 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 92 |
+
<show_in_default>1</show_in_default>
|
| 93 |
+
<show_in_website>1</show_in_website>
|
| 94 |
+
<show_in_store>1</show_in_store>
|
| 95 |
+
<comment>
|
| 96 |
+
<![CDATA[Use Lightbox Messages for all <span style='color:red;font-weight:bold;'>error</span> messages.]]>
|
| 97 |
+
</comment>
|
| 98 |
+
</lightboxmessages_force_error>
|
| 99 |
+
<lightboxmessages_force_warning translate="label, comment">
|
| 100 |
+
<label>Force Lightbox Messages for Warnings</label>
|
| 101 |
+
<sort_order>40</sort_order>
|
| 102 |
+
<frontend_type>select</frontend_type>
|
| 103 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 104 |
+
<show_in_default>1</show_in_default>
|
| 105 |
+
<show_in_website>1</show_in_website>
|
| 106 |
+
<show_in_store>1</show_in_store>
|
| 107 |
+
<comment>
|
| 108 |
+
<![CDATA[Use Lightbox Messages for all <span style='color:orange;font-weight:bold;'>warning</span> messages.]]>
|
| 109 |
+
</comment>
|
| 110 |
+
</lightboxmessages_force_warning>
|
| 111 |
+
<lightboxmessages_force_notice translate="label, comment">
|
| 112 |
+
<label>Force Lightbox Messages for Notices</label>
|
| 113 |
+
<sort_order>50</sort_order>
|
| 114 |
+
<frontend_type>select</frontend_type>
|
| 115 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 116 |
+
<show_in_default>1</show_in_default>
|
| 117 |
+
<show_in_website>1</show_in_website>
|
| 118 |
+
<show_in_store>1</show_in_store>
|
| 119 |
+
<comment>
|
| 120 |
+
<![CDATA[Use Lightbox Messages for all <span style='color:black;font-weight:bold;'>notice</span> messages.]]>
|
| 121 |
+
</comment>
|
| 122 |
+
</lightboxmessages_force_notice>
|
| 123 |
+
</fields>
|
| 124 |
+
</afg_lightboxmessages_group>
|
| 125 |
+
</groups>
|
| 126 |
+
</afg_lightboxmessages>
|
| 127 |
+
</sections>
|
| 128 |
+
</config>
|
app/design/adminhtml/default/default/layout/lightboxMessages.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout>
|
| 3 |
+
<default>
|
| 4 |
+
<reference name="head">
|
| 5 |
+
<action method="addJs"><script>prototype/modalbox.js</script></action>
|
| 6 |
+
<action method="addCss"><name>modalbox.css</name></action>
|
| 7 |
+
</reference>
|
| 8 |
+
</default>
|
| 9 |
+
</layout>
|
app/design/adminhtml/default/default/template/login.phtml
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/afl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category design
|
| 22 |
+
* @package default_default
|
| 23 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
| 25 |
+
*/
|
| 26 |
+
?>
|
| 27 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
| 28 |
+
<html lang="en">
|
| 29 |
+
<head>
|
| 30 |
+
<title><?php echo Mage::helper('adminhtml')->__('Log into Magento Admin Page') ?></title>
|
| 31 |
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" ></meta>
|
| 32 |
+
<link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('reset.css') ?>" media="all" />
|
| 33 |
+
<link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('modalbox.css') ?>" media="all" />
|
| 34 |
+
<link type="text/css" rel="stylesheet" href="<?php echo $this->getSkinUrl('boxes.css') ?>" media="all" />
|
| 35 |
+
<link rel="icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
|
| 36 |
+
<link rel="shortcut icon" href="<?php echo $this->getSkinUrl('favicon.ico') ?>" type="image/x-icon" />
|
| 37 |
+
|
| 38 |
+
<script type="text/javascript" src="<?php echo $this->getJsUrl('prototype/prototype.js') ?>"></script>
|
| 39 |
+
<script type="text/javascript" src="<?php echo $this->getJsUrl('prototype/validation.js') ?>"></script>
|
| 40 |
+
<script type="text/javascript" src="<?php echo $this->getJsUrl('scriptaculous/effects.js') ?>"></script>
|
| 41 |
+
<script type="text/javascript" src="<?php echo $this->getJsUrl('mage/adminhtml/form.js') ?>"></script>
|
| 42 |
+
<script type="text/javascript" src="<?php echo $this->getJsUrl('prototype/modalbox.js') ?>"></script>
|
| 43 |
+
|
| 44 |
+
<!--[if IE]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('iestyles.css') ?>" type="text/css" media="all" /> <![endif]-->
|
| 45 |
+
<!--[if lt IE 7]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('below_ie7.css') ?>" type="text/css" media="all" /> <![endif]-->
|
| 46 |
+
<!--[if IE 7]> <link rel="stylesheet" href="<?php echo $this->getSkinUrl('ie7.css') ?>" type="text/css" media="all" /> <![endif]-->
|
| 47 |
+
</head>
|
| 48 |
+
<body id="page-login" onload="document.forms.loginForm.username.focus();">
|
| 49 |
+
<div class="login-container">
|
| 50 |
+
<div class="login-box">
|
| 51 |
+
<form method="post" action="" id="loginForm">
|
| 52 |
+
<div class="login-form">
|
| 53 |
+
<input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" />
|
| 54 |
+
<h2><?php echo Mage::helper('adminhtml')->__('Log in to Admin Panel') ?></h2>
|
| 55 |
+
<div id="messages">
|
| 56 |
+
<?php echo $this->getMessagesBlock()->getGroupedHtml() ?>
|
| 57 |
+
</div>
|
| 58 |
+
<div class="input-box input-left"><label for="username"><?php echo Mage::helper('adminhtml')->__('User Name:') ?></label><br/>
|
| 59 |
+
<input type="text" id="username" name="login[username]" value="" class="required-entry input-text" /></div>
|
| 60 |
+
<div class="input-box input-right"><label for="login"><?php echo Mage::helper('adminhtml')->__('Password:') ?></label><br />
|
| 61 |
+
<input type="password" id="login" name="login[password]" class="required-entry input-text" value="" /></div>
|
| 62 |
+
<div class="clear"></div>
|
| 63 |
+
<div class="form-buttons">
|
| 64 |
+
<a class="left" href="<?php echo Mage::helper('adminhtml')->getUrl('adminhtml/index/forgotpassword', array('_nosecret' => true)) ?>"><?php echo Mage::helper('adminhtml')->__('Forgot your password?') ?></a>
|
| 65 |
+
<input type="submit" class="form-button" value="<?php echo Mage::helper('adminhtml')->__('Login') ?>" title="<?php echo Mage::helper('adminhtml')->__('Login') ?>" /></div>
|
| 66 |
+
</div>
|
| 67 |
+
<p class="legal"><?php echo Mage::helper('adminhtml')->__('Magento is a trademark of Magento Inc. Copyright © %s Magento Inc.', date('Y')) ?></p>
|
| 68 |
+
</form>
|
| 69 |
+
<div class="bottom"></div>
|
| 70 |
+
<script type="text/javascript">
|
| 71 |
+
var loginForm = new varienForm('loginForm');
|
| 72 |
+
</script>
|
| 73 |
+
</div>
|
| 74 |
+
</div>
|
| 75 |
+
</body>
|
| 76 |
+
</html>
|
| 77 |
+
|
app/design/frontend/base/default/layout/lightboxMessages.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<layout>
|
| 3 |
+
<default>
|
| 4 |
+
<reference name="head">
|
| 5 |
+
<action method="addJs"><script>prototype/modalbox.js</script></action>
|
| 6 |
+
<action method="addCss"><name>css/modalbox.css</name></action>
|
| 7 |
+
</reference>
|
| 8 |
+
</default>
|
| 9 |
+
</layout>
|
app/etc/modules/Afg_Informations.xml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Magento
|
| 5 |
+
*
|
| 6 |
+
* NOTICE OF LICENSE
|
| 7 |
+
*
|
| 8 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
| 9 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
| 10 |
+
* It is also available through the world-wide-web at this URL:
|
| 11 |
+
* http://opensource.org/licenses/afl-3.0.php
|
| 12 |
+
* If you did not receive a copy of the license and are unable to
|
| 13 |
+
* obtain it through the world-wide-web, please send an email
|
| 14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 15 |
+
*
|
| 16 |
+
* DISCLAIMER
|
| 17 |
+
*
|
| 18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 19 |
+
* versions in the future. If you wish to customize Magento for your
|
| 20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 21 |
+
*
|
| 22 |
+
* @category Afg
|
| 23 |
+
* @package Afg_CleanOrders
|
| 24 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
| 25 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
| 26 |
+
*/
|
| 27 |
+
-->
|
| 28 |
+
<config>
|
| 29 |
+
<modules>
|
| 30 |
+
<Afg_Informations>
|
| 31 |
+
<active>true</active>
|
| 32 |
+
<codePool>community</codePool>
|
| 33 |
+
</Afg_Informations>
|
| 34 |
+
</modules>
|
| 35 |
+
</config>
|
app/etc/modules/Afg_LightboxMessages.xml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Magento
|
| 5 |
+
*
|
| 6 |
+
* NOTICE OF LICENSE
|
| 7 |
+
*
|
| 8 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
| 9 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
| 10 |
+
* It is also available through the world-wide-web at this URL:
|
| 11 |
+
* http://opensource.org/licenses/afl-3.0.php
|
| 12 |
+
* If you did not receive a copy of the license and are unable to
|
| 13 |
+
* obtain it through the world-wide-web, please send an email
|
| 14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 15 |
+
*
|
| 16 |
+
* DISCLAIMER
|
| 17 |
+
*
|
| 18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 19 |
+
* versions in the future. If you wish to customize Magento for your
|
| 20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 21 |
+
*
|
| 22 |
+
* @category Afg
|
| 23 |
+
* @package Afg_CleanOrders
|
| 24 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
| 25 |
+
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
| 26 |
+
*/
|
| 27 |
+
-->
|
| 28 |
+
<config>
|
| 29 |
+
<modules>
|
| 30 |
+
<Afg_LightboxMessages>
|
| 31 |
+
<active>true</active>
|
| 32 |
+
<codePool>community</codePool>
|
| 33 |
+
</Afg_LightboxMessages>
|
| 34 |
+
</modules>
|
| 35 |
+
</config>
|
js/prototype/modalbox.js
ADDED
|
@@ -0,0 +1,593 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
//
|
| 2 |
+
// ModalBox - The pop-up window thingie with AJAX, based on Prototype JS framework.
|
| 3 |
+
//
|
| 4 |
+
// Created by Andrew Okonetchnikov
|
| 5 |
+
// Copyright 2006-2010 okonet.ru. All rights reserved.
|
| 6 |
+
//
|
| 7 |
+
// Licensed under MIT license.
|
| 8 |
+
//
|
| 9 |
+
|
| 10 |
+
if (Object.isUndefined(Prototype.Browser.IE6)) {
|
| 11 |
+
Prototype.Browser.IE6 = (navigator.appName.indexOf("Microsoft Internet Explorer") != -1 && navigator.appVersion.indexOf("MSIE 6.0") != -1 && !window.XMLHttpRequest);
|
| 12 |
+
}
|
| 13 |
+
|
| 14 |
+
if (!window.Modalbox)
|
| 15 |
+
var Modalbox = {};
|
| 16 |
+
|
| 17 |
+
Modalbox.Methods = {
|
| 18 |
+
overrideAlert: false, // Override standard browser alert message with ModalBox
|
| 19 |
+
focusableElements: [],
|
| 20 |
+
currFocused: 0,
|
| 21 |
+
initialized: false, // Modalbox is visible
|
| 22 |
+
active: true, // Modalbox is visible and active
|
| 23 |
+
options: {
|
| 24 |
+
title: "ModalBox Window", // Title of the ModalBox window
|
| 25 |
+
overlayClose: true, // Close modal box by clicking on overlay
|
| 26 |
+
width: 500, // Default width in px
|
| 27 |
+
height: 90, // Default height in px
|
| 28 |
+
overlayOpacity: 0.65, // Default overlay opacity
|
| 29 |
+
overlayDuration: 0.25, // Default overlay fade in/out duration in seconds
|
| 30 |
+
slideDownDuration: 0.5, // Default Modalbox appear slide down effect in seconds
|
| 31 |
+
slideUpDuration: 0.5, // Default Modalbox hiding slide up effect in seconds
|
| 32 |
+
resizeDuration: 0.25, // Default resize duration seconds
|
| 33 |
+
inactiveFade: true, // Fades MB window on inactive state
|
| 34 |
+
transitions: true, // Toggles transition effects. Transitions are enabled by default
|
| 35 |
+
loadingString: "Please wait. Loading...", // Default loading string message
|
| 36 |
+
closeString: "Close window", // Default title attribute for close window link
|
| 37 |
+
closeValue: "×", // Default string for close link in the header
|
| 38 |
+
params: {},
|
| 39 |
+
method: 'get', // Default Ajax request method
|
| 40 |
+
autoFocusing: true, // Toggles auto-focusing for form elements. Disable for long text pages.
|
| 41 |
+
aspnet: false, // Should be true when using with ASP.NET controls. When true Modalbox window will be injected into the first form element.
|
| 42 |
+
resizeCSSID: ''
|
| 43 |
+
},
|
| 44 |
+
_options: {},
|
| 45 |
+
|
| 46 |
+
setOptions: function(options) {
|
| 47 |
+
Object.extend(this.options, options || {});
|
| 48 |
+
},
|
| 49 |
+
|
| 50 |
+
_init: function(options) {
|
| 51 |
+
// Setting up original options with default options
|
| 52 |
+
Object.extend(this._options, this.options);
|
| 53 |
+
this.setOptions(options);
|
| 54 |
+
|
| 55 |
+
// Creating the overlay
|
| 56 |
+
this.MBoverlay = new Element("div", {id: "MB_overlay", style: "opacity: 0"});
|
| 57 |
+
|
| 58 |
+
// Creating the modal window
|
| 59 |
+
this.MBwindowwrapper = new Element("div", {id: "MB_windowwrapper"}).update(
|
| 60 |
+
this.MBwindow = new Element("div", {id: "MB_window", style: "display: none"}).update(
|
| 61 |
+
this.MBframe = new Element("div", {id: "MB_frame"}).update(
|
| 62 |
+
this.MBheader = new Element("div", {id: "MB_header"}).update(
|
| 63 |
+
this.MBcaption = new Element("div", {id: "MB_caption"})
|
| 64 |
+
)
|
| 65 |
+
)
|
| 66 |
+
)
|
| 67 |
+
);
|
| 68 |
+
|
| 69 |
+
this.MBclose = new Element("a", {id: "MB_close", title: this.options.closeString, href: "#"}).update("<span>" + this.options.closeValue + "</span>");
|
| 70 |
+
this.MBheader.insert({'bottom':this.MBclose});
|
| 71 |
+
|
| 72 |
+
this.MBcontent = new Element("div", {id: "MB_content"}).update(
|
| 73 |
+
this.MBloading = new Element("div", {id: "MB_loading"}).update(this.options.loadingString)
|
| 74 |
+
);
|
| 75 |
+
this.MBframe.insert({'bottom':this.MBcontent});
|
| 76 |
+
|
| 77 |
+
// Inserting into DOM. If parameter set and form element have been found will inject into it. Otherwise will inject into body as topmost element.
|
| 78 |
+
// Be sure to set padding and marging to null via CSS for both body and (in case of asp.net) form elements.
|
| 79 |
+
var injectToEl = this.options.aspnet ? $(document.body).down('form') : $(document.body);
|
| 80 |
+
injectToEl.insert({'top':this.MBwindowwrapper});
|
| 81 |
+
injectToEl.insert({'top':this.MBoverlay});
|
| 82 |
+
|
| 83 |
+
var scrollOffsets = document.viewport.getScrollOffsets();
|
| 84 |
+
if (scrollOffsets[1] > 0) {
|
| 85 |
+
$('MB_window').setStyle({top:scrollOffsets[1] + 'px'});
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
Event.observe(window, 'scroll', function() {
|
| 89 |
+
scrollOffsets = document.viewport.getScrollOffsets();
|
| 90 |
+
$('MB_window').setStyle({top:scrollOffsets[1] + 'px'});
|
| 91 |
+
});
|
| 92 |
+
|
| 93 |
+
// Initial scrolling position of the window. To be used for remove scrolling effect during ModalBox appearing
|
| 94 |
+
this.initScrollX = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
|
| 95 |
+
this.initScrollY = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
|
| 96 |
+
|
| 97 |
+
//Adding event observers
|
| 98 |
+
this.hideObserver = this._hide.bindAsEventListener(this);
|
| 99 |
+
this.kbdObserver = this._kbdHandler.bindAsEventListener(this);
|
| 100 |
+
this.resizeObserver = this._setWidthAndPosition.bindAsEventListener(this);
|
| 101 |
+
this._initObservers();
|
| 102 |
+
|
| 103 |
+
this.initialized = true; // Mark as initialized
|
| 104 |
+
},
|
| 105 |
+
|
| 106 |
+
show: function(content, options) {
|
| 107 |
+
if (!this.initialized) this._init(options); // Check if MB is already initialized
|
| 108 |
+
|
| 109 |
+
this._cleanUpContentIDs();
|
| 110 |
+
|
| 111 |
+
this.content = content;
|
| 112 |
+
this.setOptions(options);
|
| 113 |
+
|
| 114 |
+
if (this.options.title) { // Updating title of the MB
|
| 115 |
+
this.MBcaption.update(this.options.title);
|
| 116 |
+
} else { // If title isn't given, the header will not displayed
|
| 117 |
+
this.MBheader.hide();
|
| 118 |
+
this.MBcaption.hide();
|
| 119 |
+
}
|
| 120 |
+
|
| 121 |
+
if (this.MBwindow.style.display == "none") { // First modal box appearing
|
| 122 |
+
this._appear();
|
| 123 |
+
this.event("onShow"); // Passing onShow callback
|
| 124 |
+
} else { // If MB already on the screen, update it
|
| 125 |
+
this._update();
|
| 126 |
+
this.event("onUpdate"); // Passing onUpdate callback
|
| 127 |
+
}
|
| 128 |
+
},
|
| 129 |
+
|
| 130 |
+
hide: function(options) { // External hide method to use from external HTML and JS
|
| 131 |
+
if (this.initialized) {
|
| 132 |
+
// Reading for options/callbacks except if event given as a parameter
|
| 133 |
+
if (options && !Object.isFunction(options.element))
|
| 134 |
+
Object.extend(this.options, options);
|
| 135 |
+
this.event("beforeHide"); // Passing beforeHide callback
|
| 136 |
+
if (this.options.transitions) {
|
| 137 |
+
Effect.SlideUp(this.MBwindow, { duration: this.options.slideUpDuration, transition: Effect.Transitions.sinoidal, afterFinish: this._deinit.bind(this) });
|
| 138 |
+
} else {
|
| 139 |
+
this.MBwindow.hide();
|
| 140 |
+
this._deinit();
|
| 141 |
+
}
|
| 142 |
+
Event.stopObserving(window, 'scroll');
|
| 143 |
+
} else {
|
| 144 |
+
throw("Modalbox is not initialized.");
|
| 145 |
+
}
|
| 146 |
+
},
|
| 147 |
+
|
| 148 |
+
_hide: function(event) { // Internal hide method to use with overlay and close link
|
| 149 |
+
event.stop(); // Stop event propagation for link elements
|
| 150 |
+
// When clicked on overlay we'll check the option and in case of overlayClose == false we'll break hiding execution [Fix for #139]
|
| 151 |
+
if (event.element().id == 'MB_overlay' && !this.options.overlayClose) return false;
|
| 152 |
+
this.hide();
|
| 153 |
+
},
|
| 154 |
+
|
| 155 |
+
alert: function(message){
|
| 156 |
+
var html = '<div class="MB_alert"><p>' + message + '</p><input type="button" onclick="Modalbox.hide()" value="OK" /></div>';
|
| 157 |
+
Modalbox.show(html, {title: 'Alert: ' + document.title, width: 300});
|
| 158 |
+
},
|
| 159 |
+
|
| 160 |
+
_appear: function() { // First appearing of MB
|
| 161 |
+
if (Prototype.Browser.IE6) { // Preparing IE 6 for showing modalbox
|
| 162 |
+
window.scrollTo(0,0);
|
| 163 |
+
this._prepareIEHtml("100%", "hidden");
|
| 164 |
+
this._prepareIESelects("hidden");
|
| 165 |
+
}
|
| 166 |
+
this._setWidth();
|
| 167 |
+
if(this.options.transitions) {
|
| 168 |
+
this.MBoverlay.setOpacity(0);
|
| 169 |
+
new Effect.Fade(this.MBoverlay, {
|
| 170 |
+
from: 0,
|
| 171 |
+
to: this.options.overlayOpacity,
|
| 172 |
+
duration: this.options.overlayDuration,
|
| 173 |
+
afterFinish: (function() {
|
| 174 |
+
new Effect.SlideDown(this.MBwindow, {
|
| 175 |
+
duration: this.options.slideDownDuration,
|
| 176 |
+
transition: Effect.Transitions.sinoidal,
|
| 177 |
+
afterFinish: this.loadContent.bind(this)
|
| 178 |
+
});
|
| 179 |
+
}).bind(this)
|
| 180 |
+
});
|
| 181 |
+
} else {
|
| 182 |
+
this.MBoverlay.setOpacity(this.options.overlayOpacity);
|
| 183 |
+
this.MBwindow.show();
|
| 184 |
+
this.loadContent();
|
| 185 |
+
}
|
| 186 |
+
Event.observe(window, "resize", this.resizeObserver);
|
| 187 |
+
},
|
| 188 |
+
|
| 189 |
+
resize: function(byWidth, byHeight, options) { // Change size of MB without content reloading
|
| 190 |
+
var oWidth = $(this.MBoverlay).getWidth();
|
| 191 |
+
var wHeight = $(this.MBwindow).getHeight();
|
| 192 |
+
var wWidth = $(this.MBwindow).getWidth();
|
| 193 |
+
var hHeight = $(this.MBheader).getHeight();
|
| 194 |
+
var cHeight = $(this.MBcontent).getHeight();
|
| 195 |
+
var newHeight = ((wHeight - hHeight + byHeight) < cHeight) ? (cHeight + hHeight) : (wHeight + byHeight);
|
| 196 |
+
|
| 197 |
+
var el = $(this.MBwindow);
|
| 198 |
+
var contentEl = $(this.MBcontent);
|
| 199 |
+
var windowBottomMargin = 10;
|
| 200 |
+
newHeight += windowBottomMargin;
|
| 201 |
+
var windowOffset = (parseInt(el.getStyle('margin-top'), 0) + parseInt(el.getStyle('margin-bottom'), 0) + parseInt(el.getStyle('border-top-width'), 0) + parseInt(el.getStyle('border-bottom-width'), 0)) + windowBottomMargin;
|
| 202 |
+
var contentPadding = (parseInt(contentEl.getStyle('padding-top')) + parseInt(contentEl.getStyle('padding-bottom')));
|
| 203 |
+
|
| 204 |
+
if ((newHeight + windowOffset + contentPadding) > document.viewport.getHeight()) {
|
| 205 |
+
// adjust window height to account for margins and border widths
|
| 206 |
+
newHeight = document.viewport.getHeight() - windowOffset - windowBottomMargin;
|
| 207 |
+
// calculate content height including header height and padding values
|
| 208 |
+
newcHeight = newHeight - hHeight - parseInt($(this.MBframe).getStyle('padding-bottom'), 0) - parseInt($(this.MBcontent).getStyle('padding-bottom'), 0);
|
| 209 |
+
$(this.MBcontent).setStyle({height:newcHeight + 'px'});
|
| 210 |
+
} else if ($(this.MBcontent).getStyle('height')) {
|
| 211 |
+
// release any MB_content height set prior to establish scrollbars in content area
|
| 212 |
+
$(this.MBcontent).setStyle({height:''});
|
| 213 |
+
}
|
| 214 |
+
|
| 215 |
+
var newWidth = wWidth + byWidth;
|
| 216 |
+
//var newStyle = {width: newWidth + "px", height: newHeight + "px", left: (o.width - newWidth)/2 + "px"};
|
| 217 |
+
var newStyle = {width: newWidth + "px", height: newHeight + "px"};
|
| 218 |
+
this.options.width = newWidth;
|
| 219 |
+
if (options) this.setOptions(options); // Passing callbacks
|
| 220 |
+
if (this.options.transitions && !Modalbox.animating) {
|
| 221 |
+
Modalbox.animating = true;
|
| 222 |
+
new Effect.Morph(this.MBwindow, {
|
| 223 |
+
style: newStyle,
|
| 224 |
+
duration: this.options.resizeDuration,
|
| 225 |
+
beforeStart: function(fx){
|
| 226 |
+
fx.element.setStyle({overflow: "hidden"}); // Fix for MSIE 6 to resize correctly
|
| 227 |
+
},
|
| 228 |
+
afterFinish: (function(fx) {
|
| 229 |
+
fx.element.setStyle({overflow: "visible"});
|
| 230 |
+
this.event("_afterResize"); // Passing internal callback
|
| 231 |
+
this.event("afterResize"); // Passing callback
|
| 232 |
+
Modalbox.animating = false;
|
| 233 |
+
}).bind(this)
|
| 234 |
+
});
|
| 235 |
+
} else {
|
| 236 |
+
this.MBwindow.setStyle(newStyle);
|
| 237 |
+
(function() {
|
| 238 |
+
this.event("_afterResize"); // Passing internal callback
|
| 239 |
+
this.event("afterResize"); // Passing callback
|
| 240 |
+
}).bind(this).defer();
|
| 241 |
+
}
|
| 242 |
+
},
|
| 243 |
+
|
| 244 |
+
resizeToContent: function(options){
|
| 245 |
+
// Resizes the modalbox window to the actual content height.
|
| 246 |
+
// This might be useful to resize modalbox after some content modifications which were changed content height.
|
| 247 |
+
|
| 248 |
+
if (typeof options == "undefined") {
|
| 249 |
+
options = {};
|
| 250 |
+
}
|
| 251 |
+
|
| 252 |
+
// check to see if MB_content includes any images
|
| 253 |
+
var mbimages = $('MB_content').select('img');
|
| 254 |
+
var totalimages = mbimages.length;
|
| 255 |
+
if (mbimages[0]) {
|
| 256 |
+
if (typeof options.imagesloaded == "undefined") {
|
| 257 |
+
|
| 258 |
+
var loadedImages = $A();
|
| 259 |
+
var loadedImageTotal = 0;
|
| 260 |
+
mbimages.each(function(o,idx) {
|
| 261 |
+
loadedImages[idx] = new Image();
|
| 262 |
+
loadedImages[idx].src = o.src;
|
| 263 |
+
loadedImages[idx].onload = function() {
|
| 264 |
+
loadedImageTotal++;
|
| 265 |
+
if (loadedImageTotal == totalimages) {
|
| 266 |
+
// make sure all images have been rendered by checking their height
|
| 267 |
+
var imageincomplete = false;
|
| 268 |
+
mbimages.each(function(i) {
|
| 269 |
+
if (i.height == 0) {
|
| 270 |
+
imageincomplete = true;
|
| 271 |
+
}
|
| 272 |
+
});
|
| 273 |
+
if (imageincomplete || Modalbox.animating) {
|
| 274 |
+
// some image hasn't been rendered yet, trigger resize loop until it is
|
| 275 |
+
Modalbox.resizeToContent();
|
| 276 |
+
} else {
|
| 277 |
+
// trigger one final resize, but set imagesloaded option to skip inspection of images
|
| 278 |
+
options.imagesloaded = true;
|
| 279 |
+
Modalbox.resizeToContent(options);
|
| 280 |
+
}
|
| 281 |
+
}
|
| 282 |
+
}
|
| 283 |
+
})
|
| 284 |
+
}
|
| 285 |
+
}
|
| 286 |
+
|
| 287 |
+
var byWidth = 0, byHeight = this.options.height - this.MBwindow.getHeight();
|
| 288 |
+
if (options.resizeCSSID && $(options.resizeCSSID)) {
|
| 289 |
+
// byWidth is the amount of pixels needed to increase/decrease window to meet width of options.resizeCSSID
|
| 290 |
+
// plus a 10 pixel margin to accommodate scrollbars
|
| 291 |
+
byWidth = $(options.resizeCSSID).getWidth() - $(this.MBwindow).getWidth() + (parseInt($(this.MBcontent).getStyle('padding-left'), 0) + parseInt($(this.MBcontent).getStyle('padding-right'), 0)) + 15;
|
| 292 |
+
}
|
| 293 |
+
if (byHeight != 0) {
|
| 294 |
+
this.resize(byWidth, byHeight, options);
|
| 295 |
+
}
|
| 296 |
+
},
|
| 297 |
+
|
| 298 |
+
resizeToInclude: function(element, options){
|
| 299 |
+
// Resizes the modalbox window to the cumulative height of element. Calculations are using CSS properties for margins and border.
|
| 300 |
+
// This method might be useful to resize modalbox before including or updating content.
|
| 301 |
+
|
| 302 |
+
var el = $(element);
|
| 303 |
+
var elHeight = el.getHeight() + parseInt(el.getStyle('margin-top'), 0) + parseInt(el.getStyle('margin-bottom'), 0) + parseInt(el.getStyle('border-top-width'), 0) + parseInt(el.getStyle('border-bottom-width'), 0);
|
| 304 |
+
if (elHeight > 0) {
|
| 305 |
+
this.resize(0, elHeight, options);
|
| 306 |
+
}
|
| 307 |
+
},
|
| 308 |
+
|
| 309 |
+
_update: function() { // Updating MB in case of wizards
|
| 310 |
+
this.MBcontent.update($(this.MBloading).update(this.options.loadingString));
|
| 311 |
+
this.loadContent();
|
| 312 |
+
},
|
| 313 |
+
|
| 314 |
+
loadContent: function() {
|
| 315 |
+
if (this.event("beforeLoad") != false) { // If callback passed false, skip loading of the content
|
| 316 |
+
if (typeof this.content == 'string') {
|
| 317 |
+
var htmlRegExp = new RegExp(/<\/?[^>]+>/gi);
|
| 318 |
+
if (htmlRegExp.test(this.content)) { // Plain HTML given as a parameter
|
| 319 |
+
this._processContent(this.content);
|
| 320 |
+
} else { // URL given as a parameter. We'll request it via Ajax
|
| 321 |
+
new Ajax.Request(this.content, {
|
| 322 |
+
method: this.options.method.toLowerCase(),
|
| 323 |
+
parameters: this.options.params,
|
| 324 |
+
onComplete: (function(response) {
|
| 325 |
+
this._processContent(response.responseText);
|
| 326 |
+
}).bind(this),
|
| 327 |
+
onException: function(instance, exception){
|
| 328 |
+
Modalbox.hide();
|
| 329 |
+
throw('Modalbox Loading Error: ' + exception);
|
| 330 |
+
}
|
| 331 |
+
});
|
| 332 |
+
}
|
| 333 |
+
} else if (typeof this.content == 'object') { // HTML Object is given
|
| 334 |
+
this._insertContent(this.content);
|
| 335 |
+
} else {
|
| 336 |
+
this.hide();
|
| 337 |
+
throw('Modalbox Parameters Error: Please specify correct URL or HTML element (plain HTML or object)');
|
| 338 |
+
}
|
| 339 |
+
}
|
| 340 |
+
},
|
| 341 |
+
|
| 342 |
+
_processContent: function(content) {
|
| 343 |
+
var html = content.stripScripts(), scripts = content.extractScripts();
|
| 344 |
+
this._insertContent(html, function() {
|
| 345 |
+
scripts.map(function(script) {
|
| 346 |
+
return eval(script.replace("<!--", "").replace("// -->", ""));
|
| 347 |
+
}, window);
|
| 348 |
+
});
|
| 349 |
+
},
|
| 350 |
+
|
| 351 |
+
_insertContent: function(content, callback) {
|
| 352 |
+
this.MBcontent.hide().update();
|
| 353 |
+
|
| 354 |
+
if (typeof content == 'string') { // Plain HTML is given
|
| 355 |
+
this.MBcontent.insert(new Element("div", { style: "display: none" }).update(content)).down().show();
|
| 356 |
+
} else if (typeof content == 'object') { // HTML Object is given
|
| 357 |
+
var _htmlObj = content.cloneNode(true); // If node is already a part of DOM we'll clone it
|
| 358 |
+
// If cloneable element has ID attribute defined, modify it to prevent duplicates
|
| 359 |
+
if (content.id) content.id = "MB_" + content.id;
|
| 360 |
+
// Add prefix for IDs on all elements inside the DOM node
|
| 361 |
+
$(content).select('*[id]').each(function(el) { el.id = "MB_" + el.id; });
|
| 362 |
+
this.MBcontent.insert(_htmlObj).down('div').show();
|
| 363 |
+
if (Prototype.Browser.IE6) { // Toggling back visibility for hidden selects in IE
|
| 364 |
+
this._prepareIESelects("", "#MB_content ");
|
| 365 |
+
}
|
| 366 |
+
}
|
| 367 |
+
|
| 368 |
+
// Prepare and resize modal box for content
|
| 369 |
+
if (this.options.height == this._options.height) {
|
| 370 |
+
this.resize((this.options.width - $(this.MBwindow).getWidth()), this.MBcontent.getHeight() - $(this.MBwindow).getHeight() + this.MBheader.getHeight(), {
|
| 371 |
+
afterResize: (function() {
|
| 372 |
+
this._putContent.bind(this, callback).defer(); // MSIE fix
|
| 373 |
+
}).bind(this)
|
| 374 |
+
});
|
| 375 |
+
} else { // Height is defined. Creating a scrollable window
|
| 376 |
+
this._setWidth();
|
| 377 |
+
this.MBcontent.setStyle({
|
| 378 |
+
overflow: 'auto',
|
| 379 |
+
height: this.MBwindow.getHeight() - this.MBheader.getHeight() - 13 + 'px'
|
| 380 |
+
});
|
| 381 |
+
this._putContent.bind(this, callback).defer(); // MSIE fix
|
| 382 |
+
}
|
| 383 |
+
},
|
| 384 |
+
|
| 385 |
+
_putContent: function(callback) {
|
| 386 |
+
this.MBcontent.show();
|
| 387 |
+
this._findFocusableElements();
|
| 388 |
+
this._setFocus(); // Setting focus on first 'focusable' element in content (input, select, textarea, link or button)
|
| 389 |
+
if (Object.isFunction(callback))
|
| 390 |
+
callback(); // Executing internal JS from loaded content
|
| 391 |
+
this.event("afterLoad"); // Passing callback
|
| 392 |
+
},
|
| 393 |
+
|
| 394 |
+
activate: function(options) {
|
| 395 |
+
this.setOptions(options);
|
| 396 |
+
this.active = true;
|
| 397 |
+
if (this.options.overlayClose)
|
| 398 |
+
this.MBoverlay.observe("click", this.hideObserver);
|
| 399 |
+
this.MBclose.observe("click", this.hideObserver).show();
|
| 400 |
+
if (this.options.transitions && this.options.inactiveFade)
|
| 401 |
+
new Effect.Appear(this.MBwindow, {duration: this.options.slideUpDuration});
|
| 402 |
+
},
|
| 403 |
+
|
| 404 |
+
deactivate: function(options) {
|
| 405 |
+
this.setOptions(options);
|
| 406 |
+
this.active = false;
|
| 407 |
+
if (this.options.overlayClose)
|
| 408 |
+
this.MBoverlay.stopObserving("click", this.hideObserver);
|
| 409 |
+
this.MBclose.stopObserving("click", this.hideObserver).hide();
|
| 410 |
+
if (this.options.transitions && this.options.inactiveFade)
|
| 411 |
+
new Effect.Fade(this.MBwindow, {duration: this.options.slideUpDuration, to: 0.75});
|
| 412 |
+
},
|
| 413 |
+
|
| 414 |
+
_initObservers: function() {
|
| 415 |
+
this.MBclose.observe("click", this.hideObserver);
|
| 416 |
+
if (this.options.overlayClose)
|
| 417 |
+
this.MBoverlay.observe("click", this.hideObserver);
|
| 418 |
+
// Gecko and Opera are moving focus a way too fast, all other browsers are okay with keydown
|
| 419 |
+
var kbdEvent = (Prototype.Browser.Gecko || Prototype.Browser.Opera) ? "keypress" : "keydown";
|
| 420 |
+
Event.observe(document, kbdEvent, this.kbdObserver);
|
| 421 |
+
},
|
| 422 |
+
|
| 423 |
+
_removeObservers: function() {
|
| 424 |
+
this.MBclose.stopObserving("click", this.hideObserver);
|
| 425 |
+
if (this.options.overlayClose)
|
| 426 |
+
this.MBoverlay.stopObserving("click", this.hideObserver);
|
| 427 |
+
var kbdEvent = (Prototype.Browser.Gecko || Prototype.Browser.Opera) ? "keypress" : "keydown";
|
| 428 |
+
Event.stopObserving(document, kbdEvent, this.kbdObserver);
|
| 429 |
+
},
|
| 430 |
+
|
| 431 |
+
_setFocus: function() {
|
| 432 |
+
// Setting focus to the first 'focusable' element which is one with tabindex = 1 or the first in the form loaded.
|
| 433 |
+
if (this.focusableElements.length > 0 && this.options.autoFocusing == true) {
|
| 434 |
+
var firstEl = this.focusableElements.find(function (el){
|
| 435 |
+
return el.tabIndex == 1;
|
| 436 |
+
}) || this.focusableElements.first();
|
| 437 |
+
this.currFocused = this.focusableElements.toArray().indexOf(firstEl);
|
| 438 |
+
firstEl.focus(); // Focus on first focusable element except close button
|
| 439 |
+
} else if (this.MBclose.visible()) {
|
| 440 |
+
this.MBclose.focus(); // If no focusable elements exist focus on close button
|
| 441 |
+
}
|
| 442 |
+
},
|
| 443 |
+
|
| 444 |
+
_findFocusableElements: function() { // Collect form elements and links from MB content
|
| 445 |
+
if (this.options.autoFocusing === true) {
|
| 446 |
+
// TODO maybe add :enabled to select and textarea elements
|
| 447 |
+
this.MBcontent.select('input:not([type=hidden]):enabled, select, textarea, button, a[href]').invoke('addClassName', 'MB_focusable');
|
| 448 |
+
this.focusableElements = this.MBcontent.select('.MB_focusable');
|
| 449 |
+
}
|
| 450 |
+
},
|
| 451 |
+
|
| 452 |
+
_kbdHandler: function(event) {
|
| 453 |
+
var node = event.element();
|
| 454 |
+
switch(event.keyCode) {
|
| 455 |
+
case Event.KEY_TAB:
|
| 456 |
+
event.stop();
|
| 457 |
+
|
| 458 |
+
// Switching currFocused to the element which was focused by mouse instead of TAB-key. Fix for #134
|
| 459 |
+
if (node != this.focusableElements[this.currFocused])
|
| 460 |
+
this.currFocused = this.focusableElements.indexOf(node);
|
| 461 |
+
|
| 462 |
+
if (!event.shiftKey) { // Focusing in direct order
|
| 463 |
+
if (this.currFocused >= this.focusableElements.length - 1) {
|
| 464 |
+
this.currFocused = 0;
|
| 465 |
+
} else {
|
| 466 |
+
this.currFocused++;
|
| 467 |
+
}
|
| 468 |
+
} else { // Shift key is pressed. Focusing in reverse order
|
| 469 |
+
if (this.currFocused <= 0) {
|
| 470 |
+
this.currFocused = this.focusableElements.length - 1;
|
| 471 |
+
} else {
|
| 472 |
+
this.currFocused--;
|
| 473 |
+
}
|
| 474 |
+
}
|
| 475 |
+
this.focusableElements[this.currFocused].focus();
|
| 476 |
+
break;
|
| 477 |
+
case Event.KEY_ESC:
|
| 478 |
+
if (this.active) this._hide(event);
|
| 479 |
+
break;
|
| 480 |
+
case 32:
|
| 481 |
+
this._preventScroll(event);
|
| 482 |
+
break;
|
| 483 |
+
case 0: // For Gecko browsers compatibility
|
| 484 |
+
if (event.which == 32) this._preventScroll(event);
|
| 485 |
+
break;
|
| 486 |
+
case Event.KEY_UP:
|
| 487 |
+
case Event.KEY_DOWN:
|
| 488 |
+
case Event.KEY_PAGEDOWN:
|
| 489 |
+
case Event.KEY_PAGEUP:
|
| 490 |
+
case Event.KEY_HOME:
|
| 491 |
+
case Event.KEY_END:
|
| 492 |
+
var tagName = node.tagName.toLowerCase();
|
| 493 |
+
// Safari operates in slightly different way. This realization is still buggy in Safari.
|
| 494 |
+
if (Prototype.Browser.WebKit && !["textarea", "select"].include(tagName)) {
|
| 495 |
+
event.stop();
|
| 496 |
+
} else if ((tagName == "input" && ["submit", "button"].include(node.type)) || (tagName == "a")) {
|
| 497 |
+
event.stop();
|
| 498 |
+
}
|
| 499 |
+
break;
|
| 500 |
+
}
|
| 501 |
+
},
|
| 502 |
+
|
| 503 |
+
_preventScroll: function(event) { // Disabling scrolling by "space" key
|
| 504 |
+
if (!["input", "textarea", "select", "button"].include(event.element().tagName.toLowerCase()))
|
| 505 |
+
event.stop();
|
| 506 |
+
},
|
| 507 |
+
|
| 508 |
+
_deinit: function() {
|
| 509 |
+
this._removeObservers();
|
| 510 |
+
Event.stopObserving(window, "resize", this.resizeObserver);
|
| 511 |
+
if (this.options.transitions) {
|
| 512 |
+
Effect.toggle(this.MBoverlay, 'appear', {duration: this.options.overlayDuration, afterFinish: this._removeElements.bind(this) });
|
| 513 |
+
} else {
|
| 514 |
+
this.MBoverlay.hide();
|
| 515 |
+
this._removeElements();
|
| 516 |
+
}
|
| 517 |
+
this.MBcontent.setStyle({overflow: '', height: ''});
|
| 518 |
+
},
|
| 519 |
+
|
| 520 |
+
_cleanUpContentIDs: function() {
|
| 521 |
+
// Replace prefixes 'MB_' in IDs for the original content
|
| 522 |
+
if (typeof this.content == 'object') {
|
| 523 |
+
if (this.content.id && this.content.id.match(/MB_/)) {
|
| 524 |
+
this.content.id = this.content.id.replace(/MB_/, "");
|
| 525 |
+
}
|
| 526 |
+
|
| 527 |
+
this.content.select('*[id]').each(function(el) {
|
| 528 |
+
el.id = el.id.replace(/MB_/, "");
|
| 529 |
+
});
|
| 530 |
+
}
|
| 531 |
+
},
|
| 532 |
+
|
| 533 |
+
_removeElements: function() {
|
| 534 |
+
if (Prototype.Browser.Opera) { // Remove overlay after-effects in Opera
|
| 535 |
+
window.scrollBy(0, 0);
|
| 536 |
+
}
|
| 537 |
+
this.MBoverlay.remove();
|
| 538 |
+
$(this.MBwindowwrapper).remove();
|
| 539 |
+
if (Prototype.Browser.IE6) {
|
| 540 |
+
this._prepareIEHtml("", ""); // If set to auto MSIE will show horizontal scrolling
|
| 541 |
+
this._prepareIESelects("");
|
| 542 |
+
window.scrollTo(this.initScrollX, this.initScrollY);
|
| 543 |
+
}
|
| 544 |
+
|
| 545 |
+
this._cleanUpContentIDs();
|
| 546 |
+
|
| 547 |
+
// Initialized will be set to false
|
| 548 |
+
this.initialized = false;
|
| 549 |
+
this.event("afterHide"); // Passing afterHide callback
|
| 550 |
+
this.setOptions(this._options); // Settings options object into initial state
|
| 551 |
+
},
|
| 552 |
+
|
| 553 |
+
_setWidth: function() { // Set size
|
| 554 |
+
this.MBwindow.setStyle({width: this.options.width + "px", height: this.options.height + "px"});
|
| 555 |
+
},
|
| 556 |
+
|
| 557 |
+
_setWidthAndPosition: function() {
|
| 558 |
+
this.MBwindow.setStyle({
|
| 559 |
+
width: this.options.width + "px"
|
| 560 |
+
});
|
| 561 |
+
},
|
| 562 |
+
|
| 563 |
+
_prepareIEHtml: function(height, overflow) {
|
| 564 |
+
// IE6 requires width and height set to 100% and overflow hidden
|
| 565 |
+
$$('html, body').invoke('setStyle', {
|
| 566 |
+
width: height,
|
| 567 |
+
height: height,
|
| 568 |
+
overflow: overflow
|
| 569 |
+
});
|
| 570 |
+
},
|
| 571 |
+
|
| 572 |
+
_prepareIESelects: function(visibility, prefix) {
|
| 573 |
+
// Toggle visibility for select elements
|
| 574 |
+
$$((prefix || "") + "select").invoke('setStyle', {
|
| 575 |
+
'visibility': visibility
|
| 576 |
+
});
|
| 577 |
+
},
|
| 578 |
+
|
| 579 |
+
event: function(eventName) {
|
| 580 |
+
var r = true;
|
| 581 |
+
if (this.options[eventName]) {
|
| 582 |
+
var returnValue = this.options[eventName](); // Executing callback
|
| 583 |
+
this.options[eventName] = null; // Removing callback after execution
|
| 584 |
+
if (!Object.isUndefined(returnValue))
|
| 585 |
+
r = returnValue;
|
| 586 |
+
}
|
| 587 |
+
return r;
|
| 588 |
+
}
|
| 589 |
+
};
|
| 590 |
+
|
| 591 |
+
Object.extend(Modalbox, Modalbox.Methods);
|
| 592 |
+
|
| 593 |
+
if (Modalbox.overrideAlert) window.alert = Modalbox.alert;
|
media/groupe-afg.png
ADDED
|
Binary file
|
media/txt-groupeafg.png
ADDED
|
Binary file
|
package.xml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Afg_LightboxMessages</name>
|
| 4 |
+
<version>1.0.1</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license>MIT</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Show session messages in lightbox</summary>
|
| 10 |
+
<description>Afg Lightbox Messages allow you to show error, warning, notice and success messages into a lightbox.</description>
|
| 11 |
+
<notes>No notes</notes>
|
| 12 |
+
<authors><author><name>Jerome DIMANCHE</name><user>auto-converted</user><email>jdimanche@groupeafg.com</email></author></authors>
|
| 13 |
+
<date>2011-05-02</date>
|
| 14 |
+
<time>15:38:10</time>
|
| 15 |
+
<contents><target name="magecommunity"><dir name="Afg"><dir name="LightboxMessages"><dir name="Block"><file name="Messages.php" hash="267d543e4d4c73e78c0053ff47479064"/></dir><dir name="etc"><file name="config.xml" hash="6c046caba898271ae30d5728f5249f0a"/><file name="system.xml" hash="d28eb3e9fbbc7fd4355ce83b113734b6"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Afg_LightboxMessages.xml" hash="e72a742fcad05e438fba3f7ba5d910e5"/><file name="Afg_Informations.xml" hash="59a9ec4eb0059dfdfc98784e50804bc6"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="lightboxMessages.xml" hash="2a11a9c144b89ca8da57f0c45e5f0e4a"/></dir><dir name="template"><file name="login.phtml" hash="806e515a093369e7e4e393fd7b559e1e"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="lightboxMessages.xml" hash="da6f932bb3bf87ad058690033198ba01"/></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="prototype"><file name="modalbox.js" hash="8b25242bc4fa182a8c5a03a17c7d06b2"/></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><file name="modalbox.css" hash="ec73e146b72c8c7bb1e2baabd7ebeaa2"/></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><file name="modalbox.css" hash="ec73e146b72c8c7bb1e2baabd7ebeaa2"/></dir></dir></dir></dir></target><target name="magemedia"><dir name="."><file name="groupe-afg.png" hash="953f603db2de1d0a7ab16eace11ae94d"/><file name="txt-groupeafg.png" hash="36ca561c5e1698ec435266466d23873f"/></dir></target></contents>
|
| 16 |
+
<compatible/>
|
| 17 |
+
<dependencies/>
|
| 18 |
+
</package>
|
skin/adminhtml/default/default/modalbox.css
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
modalbox.css
|
| 3 |
+
|
| 4 |
+
Modalbox project
|
| 5 |
+
|
| 6 |
+
Created by Andrew Okonetchnikov.
|
| 7 |
+
Copyright 2006-2010 okonet.ru. All rights reserved.
|
| 8 |
+
|
| 9 |
+
Licensed under MIT license.
|
| 10 |
+
*/
|
| 11 |
+
|
| 12 |
+
#MB_overlay {
|
| 13 |
+
position: absolute;
|
| 14 |
+
margin: auto;
|
| 15 |
+
top: 0; left: 0;
|
| 16 |
+
width: 100%; height: 100%;
|
| 17 |
+
z-index: 9999;
|
| 18 |
+
border: 0;
|
| 19 |
+
background-color: #000!important;
|
| 20 |
+
}
|
| 21 |
+
#MB_overlay[id] { position: fixed; }
|
| 22 |
+
|
| 23 |
+
#MB_windowwrapper {
|
| 24 |
+
position:absolute;
|
| 25 |
+
top:0;
|
| 26 |
+
width:100%;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
#MB_window {
|
| 30 |
+
position:relative;
|
| 31 |
+
margin-left:auto;
|
| 32 |
+
margin-right:auto;
|
| 33 |
+
top:0;
|
| 34 |
+
left:0;
|
| 35 |
+
border: 0 solid;
|
| 36 |
+
text-align: left;
|
| 37 |
+
z-index: 10000;
|
| 38 |
+
}
|
| 39 |
+
#MB_window[id] { position: relative; }
|
| 40 |
+
|
| 41 |
+
#MB_frame {
|
| 42 |
+
position: relative;
|
| 43 |
+
background-color: #EFEFEF;
|
| 44 |
+
height: 100%;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
#MB_header {
|
| 48 |
+
margin: 0;
|
| 49 |
+
padding: 0;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
#MB_content {
|
| 53 |
+
position: relative;
|
| 54 |
+
padding: 6px .75em;
|
| 55 |
+
overflow: auto;
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
#MB_caption {
|
| 59 |
+
font: bold 100% "Lucida Grande", Arial, sans-serif;
|
| 60 |
+
text-shadow: #FFF 0 1px 0;
|
| 61 |
+
padding: .5em 2em .5em .75em;
|
| 62 |
+
margin: 0;
|
| 63 |
+
text-align: left;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
#MB_close {
|
| 67 |
+
display: block;
|
| 68 |
+
position: absolute;
|
| 69 |
+
right: 5px; top: 4px;
|
| 70 |
+
padding: 2px 3px;
|
| 71 |
+
font-weight: bold;
|
| 72 |
+
text-decoration: none;
|
| 73 |
+
font-size: 13px;
|
| 74 |
+
}
|
| 75 |
+
#MB_close:hover {
|
| 76 |
+
background: transparent;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
#MB_loading {
|
| 80 |
+
padding: 1.5em;
|
| 81 |
+
text-indent: -10000px;
|
| 82 |
+
background: transparent url(spinner.gif) 50% 0 no-repeat;
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
/* Color scheme */
|
| 86 |
+
#MB_window {
|
| 87 |
+
background-color: #EFEFEF;
|
| 88 |
+
color: #000;
|
| 89 |
+
|
| 90 |
+
-webkit-box-shadow: 0 0 64px #000;
|
| 91 |
+
-moz-box-shadow: #000 0 0 64px;
|
| 92 |
+
box-shadow: 0 0 64px #000;
|
| 93 |
+
}
|
| 94 |
+
#MB_frame {
|
| 95 |
+
padding-bottom: 4px;
|
| 96 |
+
|
| 97 |
+
-webkit-border-bottom-left-radius: 4px;
|
| 98 |
+
-webkit-border-bottom-right-radius: 4px;
|
| 99 |
+
|
| 100 |
+
-moz-border-radius-bottomleft: 4px;
|
| 101 |
+
-moz-border-radius-bottomright: 4px;
|
| 102 |
+
|
| 103 |
+
border-bottom-left-radius: 4px;
|
| 104 |
+
border-bottom-right-radius: 4px;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
#MB_content { border-top: 1px solid #F9F9F9; }
|
| 108 |
+
|
| 109 |
+
#MB_header {
|
| 110 |
+
background-color: #DDD;
|
| 111 |
+
border-bottom: 1px solid #CCC;
|
| 112 |
+
}
|
| 113 |
+
#MB_caption { color: #000 }
|
| 114 |
+
#MB_close { color: #777 }
|
| 115 |
+
#MB_close:hover { color: #000 }
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
/* Alert message */
|
| 119 |
+
.MB_alert {
|
| 120 |
+
margin: 10px 0;
|
| 121 |
+
text-align: center;
|
| 122 |
+
}
|
skin/frontend/base/default/css/modalbox.css
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
modalbox.css
|
| 3 |
+
|
| 4 |
+
Modalbox project
|
| 5 |
+
|
| 6 |
+
Created by Andrew Okonetchnikov.
|
| 7 |
+
Copyright 2006-2010 okonet.ru. All rights reserved.
|
| 8 |
+
|
| 9 |
+
Licensed under MIT license.
|
| 10 |
+
*/
|
| 11 |
+
|
| 12 |
+
#MB_overlay {
|
| 13 |
+
position: absolute;
|
| 14 |
+
margin: auto;
|
| 15 |
+
top: 0; left: 0;
|
| 16 |
+
width: 100%; height: 100%;
|
| 17 |
+
z-index: 9999;
|
| 18 |
+
border: 0;
|
| 19 |
+
background-color: #000!important;
|
| 20 |
+
}
|
| 21 |
+
#MB_overlay[id] { position: fixed; }
|
| 22 |
+
|
| 23 |
+
#MB_windowwrapper {
|
| 24 |
+
position:absolute;
|
| 25 |
+
top:0;
|
| 26 |
+
width:100%;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
#MB_window {
|
| 30 |
+
position:relative;
|
| 31 |
+
margin-left:auto;
|
| 32 |
+
margin-right:auto;
|
| 33 |
+
top:0;
|
| 34 |
+
left:0;
|
| 35 |
+
border: 0 solid;
|
| 36 |
+
text-align: left;
|
| 37 |
+
z-index: 10000;
|
| 38 |
+
}
|
| 39 |
+
#MB_window[id] { position: relative; }
|
| 40 |
+
|
| 41 |
+
#MB_frame {
|
| 42 |
+
position: relative;
|
| 43 |
+
background-color: #EFEFEF;
|
| 44 |
+
height: 100%;
|
| 45 |
+
}
|
| 46 |
+
|
| 47 |
+
#MB_header {
|
| 48 |
+
margin: 0;
|
| 49 |
+
padding: 0;
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
#MB_content {
|
| 53 |
+
position: relative;
|
| 54 |
+
padding: 6px .75em;
|
| 55 |
+
overflow: auto;
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
#MB_caption {
|
| 59 |
+
font: bold 100% "Lucida Grande", Arial, sans-serif;
|
| 60 |
+
text-shadow: #FFF 0 1px 0;
|
| 61 |
+
padding: .5em 2em .5em .75em;
|
| 62 |
+
margin: 0;
|
| 63 |
+
text-align: left;
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
#MB_close {
|
| 67 |
+
display: block;
|
| 68 |
+
position: absolute;
|
| 69 |
+
right: 5px; top: 4px;
|
| 70 |
+
padding: 2px 3px;
|
| 71 |
+
font-weight: bold;
|
| 72 |
+
text-decoration: none;
|
| 73 |
+
font-size: 13px;
|
| 74 |
+
}
|
| 75 |
+
#MB_close:hover {
|
| 76 |
+
background: transparent;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
#MB_loading {
|
| 80 |
+
padding: 1.5em;
|
| 81 |
+
text-indent: -10000px;
|
| 82 |
+
background: transparent url(spinner.gif) 50% 0 no-repeat;
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
/* Color scheme */
|
| 86 |
+
#MB_window {
|
| 87 |
+
background-color: #EFEFEF;
|
| 88 |
+
color: #000;
|
| 89 |
+
|
| 90 |
+
-webkit-box-shadow: 0 0 64px #000;
|
| 91 |
+
-moz-box-shadow: #000 0 0 64px;
|
| 92 |
+
box-shadow: 0 0 64px #000;
|
| 93 |
+
}
|
| 94 |
+
#MB_frame {
|
| 95 |
+
padding-bottom: 4px;
|
| 96 |
+
|
| 97 |
+
-webkit-border-bottom-left-radius: 4px;
|
| 98 |
+
-webkit-border-bottom-right-radius: 4px;
|
| 99 |
+
|
| 100 |
+
-moz-border-radius-bottomleft: 4px;
|
| 101 |
+
-moz-border-radius-bottomright: 4px;
|
| 102 |
+
|
| 103 |
+
border-bottom-left-radius: 4px;
|
| 104 |
+
border-bottom-right-radius: 4px;
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
#MB_content { border-top: 1px solid #F9F9F9; }
|
| 108 |
+
|
| 109 |
+
#MB_header {
|
| 110 |
+
background-color: #DDD;
|
| 111 |
+
border-bottom: 1px solid #CCC;
|
| 112 |
+
}
|
| 113 |
+
#MB_caption { color: #000 }
|
| 114 |
+
#MB_close { color: #777 }
|
| 115 |
+
#MB_close:hover { color: #000 }
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
/* Alert message */
|
| 119 |
+
.MB_alert {
|
| 120 |
+
margin: 10px 0;
|
| 121 |
+
text-align: center;
|
| 122 |
+
}
|
