Version Description
- First Release
=
Download this release
Release Info
Developer | paultgoodchild |
Plugin | Shield Security for WordPress |
Version | 1.0 |
Comparing to | |
See all releases |
Version 1.0
- icwp-wpsf.php +653 -0
- readme.txt +106 -0
- resources/css/bootstrap-wpadmin-fixes.css +9 -0
- resources/css/bootstrap-wpadmin.css +4956 -0
- resources/css/icontrolwp-plugin.css +127 -0
- resources/css/worpit-plugin.css +119 -0
- resources/images/bright_squares.png +0 -0
- resources/images/icontrolwp_16x16.png +0 -0
- resources/images/icontrolwp_24x24.png +0 -0
- resources/images/icontrolwp_32x32.png +0 -0
- src/icwp-data-processor.php +83 -0
- src/icwp-firewall-processor.php +502 -0
- src/icwp-plugins-base.php +529 -0
- views/icwp_options_helper.php +163 -0
- views/icwp_wpsf_firewall_config_index.php +39 -0
- views/icwp_wpsf_firewall_log_index.php +92 -0
- views/icwp_wpsf_index.php +96 -0
- views/include_js.php +70 -0
- views/widgets/icwp_common_widgets.php +32 -0
- views/widgets/icwp_widgets.php +27 -0
icwp-wpsf.php
ADDED
@@ -0,0 +1,653 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: WordPress Simple Firewall
|
4 |
+
Plugin URI: http://www.icontrolwp.com/
|
5 |
+
Description: A Simple WordPress Firewall
|
6 |
+
Version: 1.0
|
7 |
+
Author: iControlWP
|
8 |
+
Author URI: http://icwp.io/v
|
9 |
+
*/
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Copyright (c) 2013 iControlWP <support@icontrolwp.com>
|
13 |
+
* All rights reserved.
|
14 |
+
*
|
15 |
+
* "WordPress Simple Firewall" is
|
16 |
+
* distributed under the GNU General Public License, Version 2,
|
17 |
+
* June 1991. Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin
|
18 |
+
* St, Fifth Floor, Boston, MA 02110, USA
|
19 |
+
*
|
20 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
21 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
22 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
23 |
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
24 |
+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
25 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
26 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
27 |
+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
28 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
29 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30 |
+
*
|
31 |
+
*/
|
32 |
+
|
33 |
+
require_once( dirname(__FILE__).'/src/icwp-plugins-base.php' );
|
34 |
+
|
35 |
+
if ( !class_exists('ICWP_Wordpress_Simple_Firewall') ):
|
36 |
+
|
37 |
+
class ICWP_Wordpress_Simple_Firewall extends ICWP_WPSF_Base_Plugin {
|
38 |
+
|
39 |
+
const InputPrefix = 'icwp_wpsf_';
|
40 |
+
const OptionPrefix = 'icwp_wpsf_'; //ALL database options use this as the prefix.
|
41 |
+
|
42 |
+
static public $VERSION = '1.0'; //SHOULD BE UPDATED UPON EACH NEW RELEASE
|
43 |
+
|
44 |
+
protected $m_aAllPluginOptions;
|
45 |
+
protected $m_aPluginOptions_Base;
|
46 |
+
protected $m_aPluginOptions_BlockTypesSection;
|
47 |
+
protected $m_aPluginOptions_BlockSection;
|
48 |
+
protected $m_aPluginOptions_WhitelistSection;
|
49 |
+
protected $m_aPluginOptions_BlacklistSection;
|
50 |
+
|
51 |
+
public function __construct() {
|
52 |
+
parent::__construct();
|
53 |
+
|
54 |
+
register_activation_hook( __FILE__, array( $this, 'onWpActivatePlugin' ) );
|
55 |
+
register_deactivation_hook( __FILE__, array( $this, 'onWpDeactivatePlugin' ) );
|
56 |
+
// register_uninstall_hook( __FILE__, array( &$this, 'onWpUninstallPlugin' ) );
|
57 |
+
|
58 |
+
self::$PLUGIN_NAME = basename(__FILE__);
|
59 |
+
self::$PLUGIN_PATH = plugin_basename( dirname(__FILE__) );
|
60 |
+
self::$PLUGIN_DIR = WP_PLUGIN_DIR.WORPIT_DS.self::$PLUGIN_PATH.WORPIT_DS;
|
61 |
+
self::$PLUGIN_URL = plugins_url( '/', __FILE__ ) ;
|
62 |
+
self::$OPTION_PREFIX = self::OptionPrefix;
|
63 |
+
|
64 |
+
$this->m_sParentMenuIdSuffix = 'wpsf';
|
65 |
+
|
66 |
+
$this->override();
|
67 |
+
|
68 |
+
if ( self::getOption( 'enable_firewall' ) == 'Y' ) {
|
69 |
+
require_once( dirname(__FILE__).'/src/icwp-firewall-processor.php' );
|
70 |
+
$this->runFirewallProcess();
|
71 |
+
}
|
72 |
+
|
73 |
+
}//__construct
|
74 |
+
|
75 |
+
protected function override() {
|
76 |
+
if ( is_file( self::$PLUGIN_DIR . 'forceOff' ) ) {
|
77 |
+
self::updateOption( 'enable_firewall', 'N' );
|
78 |
+
}
|
79 |
+
else if ( is_file( self::$PLUGIN_DIR . 'forceOn' ) ) {
|
80 |
+
self::updateOption( 'enable_firewall', 'Y' );
|
81 |
+
}
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Updates the current log data with new data.
|
86 |
+
*
|
87 |
+
* @param array $inaNewLogData
|
88 |
+
* @return boolean
|
89 |
+
*/
|
90 |
+
protected function updateLogStore( $inaNewLogData ) {
|
91 |
+
|
92 |
+
if ( self::getOption( 'enable_firewall_log' ) != 'Y' ) {
|
93 |
+
return true;
|
94 |
+
}
|
95 |
+
|
96 |
+
//Save the firewall log
|
97 |
+
$aFullLog = self::getOption( 'firewall_log' );
|
98 |
+
if ( !$aFullLog ) {
|
99 |
+
$aFullLog = array();
|
100 |
+
}
|
101 |
+
return self::updateOption( 'firewall_log', array_merge( $inaNewLogData, $aFullLog ) );
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* Should be called from the constructor so as to ensure it is called as early as possible.
|
106 |
+
*
|
107 |
+
* @param array $inaNewLogData
|
108 |
+
* @return boolean
|
109 |
+
*/
|
110 |
+
public function runFirewallProcess() {
|
111 |
+
|
112 |
+
$oFP = self::getOption( 'firewall_processor', $oFP );
|
113 |
+
if ( empty( $oFP ) ) {
|
114 |
+
|
115 |
+
//collect up all the settings to pass to the processor
|
116 |
+
$aSettingSlugs = array(
|
117 |
+
'block_wplogin_access',
|
118 |
+
'block_dir_traversal',
|
119 |
+
'block_sql_queries',
|
120 |
+
'block_wordpress_terms',
|
121 |
+
'block_field_truncation',
|
122 |
+
'block_exe_file_uploads',
|
123 |
+
'block_leading_schema'
|
124 |
+
);
|
125 |
+
$aBlockSettings = array();
|
126 |
+
foreach( $aSettingSlugs as $sSetting ) {
|
127 |
+
$aBlockSettings[ $sSetting ] = self::getOption( $sSetting ) == 'Y';
|
128 |
+
}
|
129 |
+
$aIpWhitelist = self::getOption( 'ips_whitelist' );
|
130 |
+
if ( empty($aIpWhitelist) ) {
|
131 |
+
$aIpWhitelist = array();
|
132 |
+
}
|
133 |
+
$aIpBlacklist = self::getOption( 'ips_blacklist' );
|
134 |
+
if ( empty($aIpBlacklist) ) {
|
135 |
+
$aIpBlacklist = array();
|
136 |
+
}
|
137 |
+
$sBlockResponse = self::getOption( 'block_response' );
|
138 |
+
$oFP = new ICWP_FirewallProcessor( $aBlockSettings, $aIpWhitelist, $aIpBlacklist, $sBlockResponse );
|
139 |
+
|
140 |
+
self::updateOption( 'firewall_processor', $oFP );
|
141 |
+
|
142 |
+
} else {
|
143 |
+
$oFP->reset();
|
144 |
+
}
|
145 |
+
|
146 |
+
$fFirewallBlockUser = !$oFP->doFirewallCheck();
|
147 |
+
|
148 |
+
if ( $fFirewallBlockUser ) {
|
149 |
+
switch( $sBlockResponse ) {
|
150 |
+
case 'redirect_home':
|
151 |
+
$oFP->logWarning(
|
152 |
+
sprintf( 'Firewall Block: Visitor was sent HOME: %s', home_url() )
|
153 |
+
);
|
154 |
+
break;
|
155 |
+
case 'redirect_404':
|
156 |
+
$oFP->logWarning(
|
157 |
+
sprintf( 'Firewall Block: Visitor was sent 404: %s', home_url().'/404?testfirewall' )
|
158 |
+
);
|
159 |
+
break;
|
160 |
+
case 'redirect_die':
|
161 |
+
$oFP->logWarning(
|
162 |
+
sprintf( 'Firewall Block: Visitor connection was killed with %s', 'die()' )
|
163 |
+
);
|
164 |
+
break;
|
165 |
+
}
|
166 |
+
$this->updateLogStore( $oFP->getLog() );
|
167 |
+
|
168 |
+
if ( self::getOption( 'block_send_email' ) === 'Y' ) {
|
169 |
+
$sEmail = get_option('admin_email');
|
170 |
+
if ( is_email( $sEmail ) ) {
|
171 |
+
$oFP->sendBlockEmail( $sEmail );
|
172 |
+
}
|
173 |
+
}
|
174 |
+
$oFP->doFirewallBlock();
|
175 |
+
|
176 |
+
}
|
177 |
+
else {
|
178 |
+
$this->updateLogStore( $oFP->getLog() );
|
179 |
+
}
|
180 |
+
}
|
181 |
+
|
182 |
+
protected function initPluginOptions() {
|
183 |
+
|
184 |
+
$this->m_aPluginOptions_Base = array(
|
185 |
+
'section_title' => 'WordPress Firewall Options',
|
186 |
+
'section_options' => array(
|
187 |
+
array( 'enable_firewall', '', 'N', 'checkbox', 'Enable Firewall', 'Completely turn on/off the firewall', 'Regardless of any settings anywhere else, this option will turn off the whole firewall, or enable your desired options below.' ),
|
188 |
+
array( 'enable_firewall_log', '', 'N', 'checkbox', 'Firewall Logging', 'Turn on a detailed Firewall Log', 'Will log every visit to the site and how the firewall processes it. Not recommended to leave on unless you want to debug something and check the firewall is working as you expect.' )
|
189 |
+
)
|
190 |
+
);
|
191 |
+
$this->m_aPluginOptions_BlockTypesSection = array(
|
192 |
+
'section_title' => 'Firewall Blocking Options',
|
193 |
+
'section_options' => array(
|
194 |
+
array(
|
195 |
+
'block_wplogin_access',
|
196 |
+
'',
|
197 |
+
'N',
|
198 |
+
'checkbox',
|
199 |
+
'Login Access',
|
200 |
+
'Block WP Login Access',
|
201 |
+
'This will block access to the WordPress Login (wp-login.php) except to IP Addresses on the whitelist. If the IP whitelist is empty, this setting is ignored (so you do not lock yourself out!)'
|
202 |
+
),
|
203 |
+
array(
|
204 |
+
'block_dir_traversal',
|
205 |
+
'',
|
206 |
+
'N',
|
207 |
+
'checkbox',
|
208 |
+
'Directory Traversals',
|
209 |
+
'Block Directory Traversals',
|
210 |
+
'This will block directory traversal paths in in application parameters (../, ../../etc/passwd, etc.)'
|
211 |
+
),
|
212 |
+
array(
|
213 |
+
'block_sql_queries',
|
214 |
+
'',
|
215 |
+
'N',
|
216 |
+
'checkbox',
|
217 |
+
'SQL Queries',
|
218 |
+
'Block SQL Queries',
|
219 |
+
'This will block in application parameters (union select, concat(, /**/, etc.).'
|
220 |
+
),
|
221 |
+
array(
|
222 |
+
'block_wordpress_terms',
|
223 |
+
'',
|
224 |
+
'N',
|
225 |
+
'checkbox',
|
226 |
+
'WordPress Terms',
|
227 |
+
'Block WordPress Specific Terms',
|
228 |
+
'This will block WordPress specific terms in application parameters (wp_, user_login, etc.).'
|
229 |
+
),
|
230 |
+
array(
|
231 |
+
'block_field_truncation',
|
232 |
+
'',
|
233 |
+
'N',
|
234 |
+
'checkbox',
|
235 |
+
'Field Truncation',
|
236 |
+
'Block Field Truncation Attacks',
|
237 |
+
'This will block field truncation attacks in application parameters.'
|
238 |
+
),
|
239 |
+
array(
|
240 |
+
'block_exe_file_uploads',
|
241 |
+
'',
|
242 |
+
'N',
|
243 |
+
'checkbox',
|
244 |
+
'Exe File Uploads',
|
245 |
+
'Block Executable File Uploads',
|
246 |
+
'This will block executable file uploads (.php, .exe, etc.).'
|
247 |
+
),
|
248 |
+
array(
|
249 |
+
'block_leading_schema',
|
250 |
+
'',
|
251 |
+
'N',
|
252 |
+
'checkbox',
|
253 |
+
'Leading Schemas',
|
254 |
+
'Block Leading Schemas (HTTPS / HTTP)',
|
255 |
+
'This will block leading schemas http:// and https:// in application parameters (off by default; may cause problems with many plugins).'
|
256 |
+
)
|
257 |
+
),
|
258 |
+
);
|
259 |
+
$this->m_aRedirectOptions = array( 'select',
|
260 |
+
array( 'redirect_die', 'Die' ),
|
261 |
+
array( 'redirect_home', 'Redirect To Home Page' ),
|
262 |
+
array( 'redirect_404', 'Return 404' ),
|
263 |
+
);
|
264 |
+
$this->m_aPluginOptions_BlockSection = array(
|
265 |
+
'section_title' => 'Choose Firewall Block Response',
|
266 |
+
'section_options' => array(
|
267 |
+
array( 'block_response', '', 'none', $this->m_aRedirectOptions, 'Block Response', 'Choose how the firewall responds when it blocks a request', '' ),
|
268 |
+
array( 'block_send_email', '', 'N', 'checkbox', 'Send Email Report', 'When a visitor is blocked it will send an email to the blog admin', 'Use with caution - if you get hit by automated bots you may send out too many emails and you could get blocked by your host.' ),
|
269 |
+
)
|
270 |
+
);
|
271 |
+
|
272 |
+
$this->m_aPluginOptions_WhitelistSection = array(
|
273 |
+
'section_title' => 'Choose IP Addresses To Whitelist',
|
274 |
+
'section_options' => array(
|
275 |
+
array(
|
276 |
+
'ips_whitelist',
|
277 |
+
'',
|
278 |
+
'none',
|
279 |
+
'ip_addresses',
|
280 |
+
'Whitelist IP Addresses',
|
281 |
+
'Choose IP Addresses that are never subjected to Firewall Rules',
|
282 |
+
'Take a new line per address. Each IP Address must be valid and will be checked.'
|
283 |
+
)
|
284 |
+
)
|
285 |
+
);
|
286 |
+
|
287 |
+
$this->m_aPluginOptions_BlacklistSection = array(
|
288 |
+
'section_title' => 'Choose IP Addresses To Blacklist',
|
289 |
+
'section_options' => array(
|
290 |
+
array(
|
291 |
+
'ips_blacklist',
|
292 |
+
'',
|
293 |
+
'none',
|
294 |
+
'ip_addresses',
|
295 |
+
'Blacklist IP Addresses',
|
296 |
+
'Choose IP Addresses that are always blocked access to the site',
|
297 |
+
'Take a new line per address. Each IP Address must be valid and will be checked.'
|
298 |
+
)
|
299 |
+
)
|
300 |
+
);
|
301 |
+
|
302 |
+
$this->m_aAllPluginOptions = array(
|
303 |
+
&$this->m_aPluginOptions_Base,
|
304 |
+
&$this->m_aPluginOptions_BlockSection,
|
305 |
+
&$this->m_aPluginOptions_WhitelistSection,
|
306 |
+
&$this->m_aPluginOptions_BlacklistSection,
|
307 |
+
&$this->m_aPluginOptions_BlockTypesSection
|
308 |
+
);
|
309 |
+
|
310 |
+
return true;
|
311 |
+
|
312 |
+
}//initPluginOptions
|
313 |
+
|
314 |
+
public function onWpPluginsLoaded() {
|
315 |
+
parent::onWpPluginsLoaded();
|
316 |
+
}//onWpPluginsLoaded
|
317 |
+
|
318 |
+
public function onWpInit() {
|
319 |
+
parent::onWpInit();
|
320 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'onWpPrintStyles' ) );
|
321 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'onWpEnqueueScripts' ) );
|
322 |
+
}//onWpInit
|
323 |
+
|
324 |
+
public function onWpAdminInit() {
|
325 |
+
parent::onWpAdminInit();
|
326 |
+
|
327 |
+
// If it's a plugin admin page, we do certain things we don't do anywhere else.
|
328 |
+
if ( $this->isIcwpPluginAdminPage()) {
|
329 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'enqueueBootstrapAdminCss' ), 99 );
|
330 |
+
}
|
331 |
+
|
332 |
+
// This is only done on WP Admin loads so as not to affect the front-end.
|
333 |
+
$this->filterIpsLists();
|
334 |
+
|
335 |
+
//Multilingual support.
|
336 |
+
load_plugin_textdomain( 'hlt-wordpress-bootstrap-css', false, basename( dirname( __FILE__ ) ) . '/languages' );
|
337 |
+
}
|
338 |
+
|
339 |
+
protected function createPluginSubMenuItems(){
|
340 |
+
$this->m_aPluginMenu = array(
|
341 |
+
//Menu Page Title => Menu Item name, page ID (slug), callback function for this page - i.e. what to do/load.
|
342 |
+
$this->getSubmenuPageTitle( 'Firewall' ) => array( 'Firewall', $this->getSubmenuId('firewall-config'), 'onDisplayFirewallConfig' ),
|
343 |
+
$this->getSubmenuPageTitle( 'Log' ) => array( 'Log', $this->getSubmenuId('firewall-log'), 'onDisplayFirewallLog' )
|
344 |
+
);
|
345 |
+
}//createPluginSubMenuItems
|
346 |
+
|
347 |
+
/**
|
348 |
+
* Handles the upgrade from version 1 to version 2 of Twitter Bootstrap as well as any other plugin upgrade
|
349 |
+
*/
|
350 |
+
protected function handlePluginUpgrade() {
|
351 |
+
|
352 |
+
$sCurrentPluginVersion = self::getOption( 'current_plugin_version' );
|
353 |
+
|
354 |
+
if ( $sCurrentPluginVersion !== self::$VERSION && current_user_can( 'manage_options' ) ) {
|
355 |
+
|
356 |
+
//Do any upgrade handling here.
|
357 |
+
|
358 |
+
//Set the flag so that this update handler isn't run again for this version.
|
359 |
+
self::updateOption( 'current_plugin_version', self::$VERSION );
|
360 |
+
}//if
|
361 |
+
|
362 |
+
//Someone clicked the button to acknowledge the update
|
363 |
+
if ( isset( $_POST[self::OptionPrefix.'hide_update_notice'] ) && isset( $_POST['user_id'] ) ) {
|
364 |
+
$result = update_user_meta( $_POST['user_id'], self::OptionPrefix.'current_version', self::$VERSION );
|
365 |
+
|
366 |
+
if ( $this->isShowMarketing() ) {
|
367 |
+
wp_redirect( admin_url( "admin.php?page=".$this->getFullParentMenuId() ) );
|
368 |
+
}
|
369 |
+
else {
|
370 |
+
wp_redirect( admin_url( $_POST['redirect_page'] ) );
|
371 |
+
}
|
372 |
+
}
|
373 |
+
}
|
374 |
+
|
375 |
+
public function onWpAdminNotices() {
|
376 |
+
|
377 |
+
//Do we have admin priviledges?
|
378 |
+
if ( !current_user_can( 'manage_options' ) ) {
|
379 |
+
return;
|
380 |
+
}
|
381 |
+
$this->adminNoticeVersionUpgrade();
|
382 |
+
$this->adminNoticeOptionsUpdated();
|
383 |
+
}
|
384 |
+
|
385 |
+
/**
|
386 |
+
* Shows the update notification - will bail out if the current user is not an admin
|
387 |
+
*/
|
388 |
+
private function adminNoticeVersionUpgrade() {
|
389 |
+
|
390 |
+
$oCurrentUser = wp_get_current_user();
|
391 |
+
if ( !($oCurrentUser instanceof WP_User) ) {
|
392 |
+
return;
|
393 |
+
}
|
394 |
+
$nUserId = $oCurrentUser->ID;
|
395 |
+
$sCurrentVersion = get_user_meta( $nUserId, self::OptionPrefix.'current_version', true );
|
396 |
+
// A guard whereby if we can't ever get a value for this meta, it means we can never set it.
|
397 |
+
// If we can never set it, we shouldn't force the Ads on those users who can't get rid of it.
|
398 |
+
if ( $sCurrentVersion === false ) { //the value has never been set, or it's been installed for the first time.
|
399 |
+
$result = update_user_meta( $nUserId, self::OptionPrefix.'current_version', self::$VERSION );
|
400 |
+
return; //meaning we don't show the update notice upon new installations and for those people who can't set the version in their meta.
|
401 |
+
}
|
402 |
+
|
403 |
+
if ( $sCurrentVersion !== self::$VERSION ) {
|
404 |
+
|
405 |
+
$sRedirectPage = isset( $GLOBALS['pagenow'] ) ? $GLOBALS['pagenow'] : 'index.php';
|
406 |
+
ob_start();
|
407 |
+
?>
|
408 |
+
<style>
|
409 |
+
a#fromIcwp { padding: 0 5px; border-bottom: 1px dashed rgba(0,0,0,0.1); color: blue; font-weight: bold; }
|
410 |
+
</style>
|
411 |
+
<form id="IcwpUpdateNotice" method="post" action="admin.php?page=<?php echo $this->getSubmenuId('firewall-config'); ?>">
|
412 |
+
<input type="hidden" value="<?php echo $sRedirectPage; ?>" name="redirect_page" id="redirect_page">
|
413 |
+
<input type="hidden" value="1" name="<?php echo self::OptionPrefix; ?>hide_update_notice" id="<?php echo self::OptionPrefix; ?>hide_update_notice">
|
414 |
+
<input type="hidden" value="<?php echo $nUserId; ?>" name="user_id" id="user_id">
|
415 |
+
<h4 style="margin:10px 0 3px;">WordPress Firewall plugin has been updated- there may or may not be <a href="http://icwp.io/1v" id="fromIcwp" title="Twitter Bootstrap Plugin Shortcodes" target="_blank">updates to shortcodes</a> or the Bootstrap CSS may have changed quite a bit.</h4>
|
416 |
+
<input type="submit" value="Show me and hide this notice." name="submit" class="button" style="float:left; margin-bottom:10px;">
|
417 |
+
<div style="clear:both;"></div>
|
418 |
+
</form>
|
419 |
+
<?php
|
420 |
+
$sNotice = ob_get_contents();
|
421 |
+
ob_end_clean();
|
422 |
+
|
423 |
+
$this->getAdminNotice( $sNotice, 'updated', true );
|
424 |
+
}
|
425 |
+
|
426 |
+
}//adminNoticeVersionUpgrade
|
427 |
+
|
428 |
+
private function adminNoticeOptionsUpdated() {
|
429 |
+
|
430 |
+
$sAdminFeedbackNotice = $this->getOption( 'feedback_admin_notice' );
|
431 |
+
if ( !empty( $sAdminFeedbackNotice ) ) {
|
432 |
+
$sNotice = '<p>'.$sAdminFeedbackNotice.'</p>';
|
433 |
+
$this->getAdminNotice( $sNotice, 'updated', true );
|
434 |
+
$this->updateOption( 'feedback_admin_notice', '' );
|
435 |
+
}
|
436 |
+
|
437 |
+
}//adminNoticeOptionsUpdated
|
438 |
+
|
439 |
+
public function onDisplayMainMenu() {
|
440 |
+
|
441 |
+
//populates plugin options with existing configuration
|
442 |
+
$this->readyAllPluginOptions();
|
443 |
+
|
444 |
+
$aData = array(
|
445 |
+
'plugin_url' => self::$PLUGIN_URL,
|
446 |
+
'aAllOptions' => $aAvailableOptions,
|
447 |
+
'fShowAds' => $this->isShowMarketing(),
|
448 |
+
|
449 |
+
'fFirewallOn' => self::getOption( 'enable_firewall' ) == 'Y',
|
450 |
+
'fFirewallLogOn' => self::getOption( 'enable_firewall_log' )== 'Y',
|
451 |
+
'sBlockResponse' => self::getOption( 'block_response' ),
|
452 |
+
'fBlockSendEmail' => self::getOption( 'block_send_email' ) == 'Y',
|
453 |
+
'aIpWhitelist' => self::getOption( 'ips_whitelist' ),
|
454 |
+
'aIpBlacklist' => self::getOption( 'ips_blacklist' ),
|
455 |
+
'fBlockLogin' => self::getOption( 'block_wplogin_access' )== 'Y',
|
456 |
+
'fBlockDirTrav' => self::getOption( 'block_dir_traversal' )== 'Y',
|
457 |
+
'fBlockSql' => self::getOption( 'block_sql_queries' )== 'Y',
|
458 |
+
'fBlockWpTerms' => self::getOption( 'block_wordpress_terms' )== 'Y',
|
459 |
+
'fBlockFieldTrun' => self::getOption( 'block_field_truncation' )== 'Y',
|
460 |
+
'fBlockExeFile' => self::getOption( 'block_exe_file_uploads' )== 'Y',
|
461 |
+
'fBlockSchema' => self::getOption( 'block_leading_schema' )== 'Y'
|
462 |
+
);
|
463 |
+
|
464 |
+
$this->display( 'icwp_'.$this->m_sParentMenuIdSuffix.'_index', $aData );
|
465 |
+
}
|
466 |
+
|
467 |
+
public function onDisplayFirewallConfig() {
|
468 |
+
|
469 |
+
//populates plugin options with existing configuration
|
470 |
+
$this->readyAllPluginOptions();
|
471 |
+
|
472 |
+
//Specify what set of options are available for this page
|
473 |
+
$aAvailableOptions = array(
|
474 |
+
&$this->m_aPluginOptions_Base,
|
475 |
+
&$this->m_aPluginOptions_BlockSection,
|
476 |
+
&$this->m_aPluginOptions_WhitelistSection,
|
477 |
+
&$this->m_aPluginOptions_BlacklistSection,
|
478 |
+
&$this->m_aPluginOptions_BlockTypesSection
|
479 |
+
);
|
480 |
+
|
481 |
+
$sAllFormInputOptions = $this->collateAllFormInputsForAllOptions( $aAvailableOptions );
|
482 |
+
$aData = array(
|
483 |
+
'plugin_url' => self::$PLUGIN_URL,
|
484 |
+
'var_prefix' => self::OptionPrefix,
|
485 |
+
'fShowAds' => $this->isShowMarketing(),
|
486 |
+
'aAllOptions' => $aAvailableOptions,
|
487 |
+
'all_options_input' => $sAllFormInputOptions,
|
488 |
+
'nonce_field' => $this->getSubmenuId('firewall').'_config',
|
489 |
+
'form_action' => 'admin.php?page='.$this->getSubmenuId('firewall-config'),
|
490 |
+
);
|
491 |
+
|
492 |
+
$this->display( 'icwp_wpsf_firewall_config_index', $aData );
|
493 |
+
}
|
494 |
+
|
495 |
+
public function onDisplayFirewallLog() {
|
496 |
+
|
497 |
+
$sAllFormInputOptions = $this->collateAllFormInputsForAllOptions( $aAvailableOptions );
|
498 |
+
$aData = array(
|
499 |
+
'plugin_url' => self::$PLUGIN_URL,
|
500 |
+
'var_prefix' => self::OptionPrefix,
|
501 |
+
'firewall_log' => self::getOption( 'firewall_log' ),
|
502 |
+
'fShowAds' => $this->isShowMarketing(),
|
503 |
+
'nonce_field' => $this->getSubmenuId('firewall').'_log',
|
504 |
+
'form_action' => 'admin.php?page='.$this->getSubmenuId('firewall-log'),
|
505 |
+
);
|
506 |
+
|
507 |
+
$this->display( 'icwp_wpsf_firewall_log_index', $aData );
|
508 |
+
}
|
509 |
+
|
510 |
+
protected function handlePluginFormSubmit() {
|
511 |
+
|
512 |
+
if ( !isset( $_POST['icwp_plugin_form_submit'] ) ) {
|
513 |
+
return;
|
514 |
+
}
|
515 |
+
|
516 |
+
if ( isset( $_GET['page'] ) ) {
|
517 |
+
switch ( $_GET['page'] ) {
|
518 |
+
case $this->getSubmenuId( 'firewall-config' ):
|
519 |
+
$this->handleSubmit_FirewallConfigOptions();
|
520 |
+
break;
|
521 |
+
case $this->getSubmenuId( 'firewall-log' ):
|
522 |
+
$this->handleSubmit_FirewallLog();
|
523 |
+
break;
|
524 |
+
}
|
525 |
+
}
|
526 |
+
|
527 |
+
if ( !self::$m_fUpdateSuccessTracker ) {
|
528 |
+
self::updateOption( 'feedback_admin_notice', 'Updating Settings <strong>Failed</strong>.' );
|
529 |
+
}
|
530 |
+
else {
|
531 |
+
self::updateOption( 'feedback_admin_notice', 'Updating Settings <strong>Succeeded</strong>.' );
|
532 |
+
}
|
533 |
+
|
534 |
+
}
|
535 |
+
|
536 |
+
protected function handleSubmit_FirewallConfigOptions() {
|
537 |
+
//Ensures we're actually getting this request from WP.
|
538 |
+
check_admin_referer( $this->getSubmenuId('firewall').'_config' );
|
539 |
+
|
540 |
+
self::updateOption( 'firewall_processor', false );
|
541 |
+
|
542 |
+
if ( !isset($_POST[self::OptionPrefix.'all_options_input']) ) {
|
543 |
+
return;
|
544 |
+
}
|
545 |
+
$this->updatePluginOptionsFromSubmit( $_POST[self::OptionPrefix.'all_options_input'] );
|
546 |
+
}
|
547 |
+
|
548 |
+
protected function handleSubmit_FirewallLog() {
|
549 |
+
//Ensures we're actually getting this request from WP.
|
550 |
+
check_admin_referer( $this->getSubmenuId('firewall').'_log' );
|
551 |
+
|
552 |
+
// At the time of writing the page only has 1 form submission item - clear log
|
553 |
+
self::updateOption( 'firewall_log', array() );
|
554 |
+
wp_safe_redirect( admin_url( "admin.php?page=".$this->getSubmenuId('firewall-log') ) ); //means no admin message is displayed
|
555 |
+
exit();
|
556 |
+
}
|
557 |
+
|
558 |
+
public function onWpPrintStyles() {
|
559 |
+
}
|
560 |
+
|
561 |
+
public function onWpEnqueueScripts() {
|
562 |
+
}
|
563 |
+
|
564 |
+
public function onWpPluginActionLinks( $inaLinks, $insFile ) {
|
565 |
+
if ( $insFile == plugin_basename( __FILE__ ) ) {
|
566 |
+
$sSettingsLink = '<a href="'.admin_url( "admin.php" ).'?page='.$this->getSubmenuId('firewall-config').'">' . 'Firewall' . '</a>';
|
567 |
+
array_unshift( $inaLinks, $sSettingsLink );
|
568 |
+
}
|
569 |
+
return $inaLinks;
|
570 |
+
}
|
571 |
+
|
572 |
+
protected function deleteAllPluginDbOptions() {
|
573 |
+
|
574 |
+
parent::deleteAllPluginDbOptions();
|
575 |
+
|
576 |
+
if ( !current_user_can( 'manage_options' ) ) {
|
577 |
+
return;
|
578 |
+
}
|
579 |
+
|
580 |
+
}
|
581 |
+
|
582 |
+
public function onWpDeactivatePlugin() {
|
583 |
+
|
584 |
+
if ( $this->getOption('delete_on_deactivate') == 'Y' ) {
|
585 |
+
$this->deleteAllPluginDbOptions();
|
586 |
+
}
|
587 |
+
|
588 |
+
$this->deleteOption( 'current_plugin_version' );
|
589 |
+
$this->deleteOption( 'feedback_admin_notice' );
|
590 |
+
|
591 |
+
}//onWpDeactivatePlugin
|
592 |
+
|
593 |
+
public function onWpActivatePlugin() { }
|
594 |
+
|
595 |
+
public function enqueueBootstrapAdminCss() {
|
596 |
+
wp_register_style( 'worpit_bootstrap_wpadmin_css', $this->getCssUrl( 'bootstrap-wpadmin.css' ), false, self::$VERSION );
|
597 |
+
wp_enqueue_style( 'worpit_bootstrap_wpadmin_css' );
|
598 |
+
wp_register_style( 'worpit_bootstrap_wpadmin_css_fixes', $this->getCssUrl('bootstrap-wpadmin-fixes.css'), array('worpit_bootstrap_wpadmin_css'), self::$VERSION );
|
599 |
+
wp_enqueue_style( 'worpit_bootstrap_wpadmin_css_fixes' );
|
600 |
+
}
|
601 |
+
|
602 |
+
/**
|
603 |
+
*
|
604 |
+
*/
|
605 |
+
protected function filterIpsLists() {
|
606 |
+
|
607 |
+
$aWhitelistIps = self::getOption('ips_whitelist');
|
608 |
+
if ( is_array($aWhitelistIps) ) {
|
609 |
+
$aWhitelistIps = array();
|
610 |
+
self::updateOption( 'ips_whitelist', $aWhitelistIps );
|
611 |
+
}
|
612 |
+
$aWhitelistIpsFiltered = apply_filters( 'icwp_simple_firewall_whitelist_ips', $aWhitelistIps );
|
613 |
+
$aDiff = array_diff( $aWhitelistIpsFiltered, $aWhitelistIps );
|
614 |
+
if ( !empty( $aDiff ) ) {
|
615 |
+
self::updateOption( 'ips_whitelist', $this->verifyIpAddressList( $aWhitelistIpsFiltered ) );
|
616 |
+
}
|
617 |
+
|
618 |
+
$aBlacklistIps = self::getOption('ips_blacklist');
|
619 |
+
if ( !is_array($aBlacklistIps) ) {
|
620 |
+
$aBlacklistIps = array();
|
621 |
+
self::updateOption( 'ips_blacklist', $aBlacklistIps );
|
622 |
+
}
|
623 |
+
$aBlacklistIpsFiltered = apply_filters( 'icwp_simple_firewall_blacklist_ips', $aBlacklistIps );
|
624 |
+
$aDiff = array_diff( $aBlacklistIpsFiltered, $aBlacklistIps );
|
625 |
+
if ( !empty( $aDiff ) ) {
|
626 |
+
self::updateOption( 'ips_blacklist', $this->verifyIpAddressList( $aBlacklistIpsFiltered ) );
|
627 |
+
}
|
628 |
+
}
|
629 |
+
|
630 |
+
protected function verifyIpAddressList( $inaIpList ) {
|
631 |
+
|
632 |
+
if ( function_exists('filter_var') && defined( FILTER_VALIDATE_IP ) ) {
|
633 |
+
$fUseFilter = true;
|
634 |
+
}
|
635 |
+
else {
|
636 |
+
$fUseFilter = false;
|
637 |
+
}
|
638 |
+
|
639 |
+
if ( !class_exists('ICWP_DataProcessor') ) {
|
640 |
+
require_once ( dirname(__FILE__).'/src/icwp-data-processor.php' );
|
641 |
+
}
|
642 |
+
foreach( $inaIpList as $sKey => $sIpAddress ) {
|
643 |
+
if ( !ICWP_DataProcessor::Verify_Ip( $sIpAddress, $fUseFilter ) ) {
|
644 |
+
unset( $inaIpList[ $sKey ] );
|
645 |
+
}
|
646 |
+
}
|
647 |
+
return $inaIpList;
|
648 |
+
}
|
649 |
+
}
|
650 |
+
|
651 |
+
endif;
|
652 |
+
|
653 |
+
$oICWP_Wpsf = new ICWP_Wordpress_Simple_Firewall();
|
readme.txt
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Plugin Name ===
|
2 |
+
Contributors: dlgoodchild, paultgoodchild
|
3 |
+
Donate link: http://icwp.io/q
|
4 |
+
License: GPLv3
|
5 |
+
License URI: http://www.gnu.org/licenses/gpl.html
|
6 |
+
Tags: WordPress Firewall, protection, whitelist
|
7 |
+
Requires at least: 3.2.0
|
8 |
+
Tested up to: 3.6
|
9 |
+
Stable tag: 1.0
|
10 |
+
|
11 |
+
WordPress Simple Firewall
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
Principally based on functionality provided by the [WordPress Firewall 2 plugin](http://wordpress.org/plugins/wordpress-firewall-2/).
|
16 |
+
|
17 |
+
The WordPress Simple Firewall is built to be principally easy to use. It takes a lead from the WordPress Firewall 2 plugin that is already quite old and
|
18 |
+
that hasn't been updated for more than 2 years.
|
19 |
+
|
20 |
+
This plugin is built for reliability of operation, ease of extension, and overall... simplicity.
|
21 |
+
|
22 |
+
It adds extra features over WordPress Firewall 2, including:
|
23 |
+
|
24 |
+
* Option to completely block access to wp-login.php based on IP Address whitelist
|
25 |
+
* Added a Blacklist option so you can completely block based on IP address.
|
26 |
+
* Option to easily turn on / off the whole firewall. This means you don't have to disable certain settings or even disable the plugin to temporarily turn it off.
|
27 |
+
To debug the plugin, just turn off the firewall in the Firewall Options screen and all settings are ignored.
|
28 |
+
* Filesystem based plugin override. This means if you accidentally lock yourself out, you can forcefully turn off the firewall using FTP. You can also
|
29 |
+
turn back on the firewall using the same method.
|
30 |
+
* Automatic caching to reduce database calls when determining Firewall settings: 1-3 database calls per page load.
|
31 |
+
* Ability to easily turn on and off firewall logging.
|
32 |
+
* Ability to view the complete log of the firewall and all its messages.
|
33 |
+
* Ability to clear the whole log.
|
34 |
+
* For developers - ability to programmatically add to the IP address whitelist/blacklist - this is
|
35 |
+
useful for 3rd party services that connect to the site using other plugins. E.g. [iControlWP](http://www.icontrolwp.com/).
|
36 |
+
|
37 |
+
== Installation ==
|
38 |
+
|
39 |
+
See FAQs.
|
40 |
+
|
41 |
+
== Frequently Asked Questions ==
|
42 |
+
|
43 |
+
= How can I install the plugin? =
|
44 |
+
|
45 |
+
This plugin should install as any other WordPress.org respository plugin.
|
46 |
+
|
47 |
+
1. Browse to Plugins -> Add Plugin
|
48 |
+
1. Search: WordPress Simple Firewall
|
49 |
+
1. Click Install
|
50 |
+
1. Click to Activate.
|
51 |
+
|
52 |
+
Alternatively using FTP:
|
53 |
+
|
54 |
+
1. Download the zip file using the download link to the right.
|
55 |
+
1. Extract the contents of the file and locate the folder called 'wp-simple-firewall' containing the plugin files.
|
56 |
+
1. Upload this whole folder to your '/wp-content/plugins/' directory
|
57 |
+
1. From the plugins page within Wordpress locate the plugin 'WordPress Simple Firewall' and click Activate
|
58 |
+
|
59 |
+
A new menu item will appear on the left-hand side called 'Simple Firewall'.
|
60 |
+
|
61 |
+
= How does the IP Whitelist work? =
|
62 |
+
|
63 |
+
Any IP address that is on the whitelist will not be subject to any of the firewall scanning/processing. This setting takes priority over all other settings.
|
64 |
+
|
65 |
+
= How does the wp-login.php block work? =
|
66 |
+
|
67 |
+
If the IP whitelist is empty, this setting is ignored. This stops you from easily locking yourself out.
|
68 |
+
|
69 |
+
When enabled, and there are valid IP addresses in the whitelist, any access to wp-login.php will be blocked from a visitor
|
70 |
+
who's IP address is not on the whitelist.
|
71 |
+
|
72 |
+
= I've locked myself out from the WordPress login screen! =
|
73 |
+
|
74 |
+
This happens when ALL the following 3 conditions are all met:
|
75 |
+
* you turn on the option to restrict access to wp-login.php,
|
76 |
+
* you have at least 1 IP address in the IP Whitelist, and
|
77 |
+
* your current IP address is not on the IP Whitelist.
|
78 |
+
|
79 |
+
This plugin offers the ability to completely turn off (and on) the WordPress Simple Firewall by creating a specific file in the plugin folder.
|
80 |
+
|
81 |
+
Here's how:
|
82 |
+
|
83 |
+
1. Open up an FTP connection to your site, browse to the plugin folder <your site WordPress root>/wp-content/plugins/wp-simple-firewall/
|
84 |
+
1. Create a new file in here called: "forceOff".
|
85 |
+
1. Load any page on your WordPress site.
|
86 |
+
1. After this, you'll find your WordPress Simple Firewall has been switched off.
|
87 |
+
|
88 |
+
If you want to turn the firewall on in the same way, create a file called "forceOn".
|
89 |
+
|
90 |
+
Remember: If you leave one of these files on the server, it will override your on/off settings, so you should delete it when you're done.
|
91 |
+
|
92 |
+
= Which takes precedence... whitelist or blacklist? =
|
93 |
+
|
94 |
+
Whitelist. So if you have the same address in both lists, it'll be whitelisted and allowed to pass before the blacklist comes into effect.
|
95 |
+
|
96 |
+
== Screenshots ==
|
97 |
+
|
98 |
+
== Changelog ==
|
99 |
+
|
100 |
+
= 1.0 =
|
101 |
+
* First Release
|
102 |
+
|
103 |
+
== Upgrade Notice ==
|
104 |
+
|
105 |
+
= 1.0 =
|
106 |
+
* First Release
|
resources/css/bootstrap-wpadmin-fixes.css
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
.bootstrap-wpadmin input[type="text"],
|
3 |
+
.bootstrap-wpadmin input[type="submit"],
|
4 |
+
.bootstrap-wpadmin input[type="password"],
|
5 |
+
.bootstrap-wpadmin textarea {
|
6 |
+
-moz-box-sizing: content-box;
|
7 |
+
-webkit-box-sizing: content-box;
|
8 |
+
box-sizing: content-box;
|
9 |
+
}
|
resources/css/bootstrap-wpadmin.css
ADDED
@@ -0,0 +1,4956 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap v2.0.3
|
3 |
+
*
|
4 |
+
* Copyright 2012 Twitter, Inc
|
5 |
+
* Licensed under the Apache License v2.0
|
6 |
+
* http://www.apache.org/licenses/LICENSE-2.0
|
7 |
+
*
|
8 |
+
* Designed and built with all the love in the world @twitter by @mdo and @fat.
|
9 |
+
*/
|
10 |
+
|
11 |
+
.bootstrap-wpadmin article,
|
12 |
+
.bootstrap-wpadmin aside,
|
13 |
+
.bootstrap-wpadmin details,
|
14 |
+
.bootstrap-wpadmin figcaption,
|
15 |
+
.bootstrap-wpadmin figure,
|
16 |
+
.bootstrap-wpadmin footer,
|
17 |
+
.bootstrap-wpadmin header,
|
18 |
+
.bootstrap-wpadmin hgroup,
|
19 |
+
.bootstrap-wpadmin nav,
|
20 |
+
.bootstrap-wpadmin section {
|
21 |
+
display: block;
|
22 |
+
}
|
23 |
+
|
24 |
+
.bootstrap-wpadmin audio,
|
25 |
+
.bootstrap-wpadmin canvas,
|
26 |
+
.bootstrap-wpadmin video {
|
27 |
+
display: inline-block;
|
28 |
+
*display: inline;
|
29 |
+
*zoom: 1;
|
30 |
+
}
|
31 |
+
|
32 |
+
.bootstrap-wpadmin audio:not([controls]) {
|
33 |
+
display: none;
|
34 |
+
}
|
35 |
+
|
36 |
+
.bootstrap-wpadmin html {
|
37 |
+
font-size: 100%;
|
38 |
+
-webkit-text-size-adjust: 100%;
|
39 |
+
-ms-text-size-adjust: 100%;
|
40 |
+
}
|
41 |
+
|
42 |
+
.bootstrap-wpadmin a:focus {
|
43 |
+
outline: thin dotted #333;
|
44 |
+
outline: 5px auto -webkit-focus-ring-color;
|
45 |
+
outline-offset: -2px;
|
46 |
+
}
|
47 |
+
|
48 |
+
.bootstrap-wpadmin a:hover,
|
49 |
+
.bootstrap-wpadmin a:active {
|
50 |
+
outline: 0;
|
51 |
+
}
|
52 |
+
|
53 |
+
.bootstrap-wpadmin sub,
|
54 |
+
.bootstrap-wpadmin sup {
|
55 |
+
position: relative;
|
56 |
+
font-size: 75%;
|
57 |
+
line-height: 0;
|
58 |
+
vertical-align: baseline;
|
59 |
+
}
|
60 |
+
|
61 |
+
.bootstrap-wpadmin sup {
|
62 |
+
top: -0.5em;
|
63 |
+
}
|
64 |
+
|
65 |
+
.bootstrap-wpadmin sub {
|
66 |
+
bottom: -0.25em;
|
67 |
+
}
|
68 |
+
|
69 |
+
.bootstrap-wpadmin img {
|
70 |
+
max-width: 100%;
|
71 |
+
vertical-align: middle;
|
72 |
+
border: 0;
|
73 |
+
-ms-interpolation-mode: bicubic;
|
74 |
+
}
|
75 |
+
|
76 |
+
.bootstrap-wpadmin button,
|
77 |
+
.bootstrap-wpadmin input,
|
78 |
+
.bootstrap-wpadmin select,
|
79 |
+
.bootstrap-wpadmin textarea {
|
80 |
+
margin: 0;
|
81 |
+
font-size: 100%;
|
82 |
+
vertical-align: middle;
|
83 |
+
}
|
84 |
+
|
85 |
+
.bootstrap-wpadmin button,
|
86 |
+
.bootstrap-wpadmin input {
|
87 |
+
*overflow: visible;
|
88 |
+
line-height: normal;
|
89 |
+
}
|
90 |
+
|
91 |
+
.bootstrap-wpadmin button::-moz-focus-inner,
|
92 |
+
.bootstrap-wpadmin input::-moz-focus-inner {
|
93 |
+
padding: 0;
|
94 |
+
border: 0;
|
95 |
+
}
|
96 |
+
|
97 |
+
.bootstrap-wpadmin button,
|
98 |
+
.bootstrap-wpadmin input[type="button"],
|
99 |
+
.bootstrap-wpadmin input[type="reset"],
|
100 |
+
.bootstrap-wpadmin input[type="submit"] {
|
101 |
+
cursor: pointer;
|
102 |
+
-webkit-appearance: button;
|
103 |
+
}
|
104 |
+
|
105 |
+
.bootstrap-wpadmin input[type="search"] {
|
106 |
+
-webkit-box-sizing: content-box;
|
107 |
+
-moz-box-sizing: content-box;
|
108 |
+
box-sizing: content-box;
|
109 |
+
-webkit-appearance: textfield;
|
110 |
+
}
|
111 |
+
|
112 |
+
.bootstrap-wpadmin input[type="search"]::-webkit-search-decoration,
|
113 |
+
.bootstrap-wpadmin input[type="search"]::-webkit-search-cancel-button {
|
114 |
+
-webkit-appearance: none;
|
115 |
+
}
|
116 |
+
|
117 |
+
.bootstrap-wpadmin textarea {
|
118 |
+
overflow: auto;
|
119 |
+
vertical-align: top;
|
120 |
+
}
|
121 |
+
|
122 |
+
.bootstrap-wpadmin .clearfix {
|
123 |
+
*zoom: 1;
|
124 |
+
}
|
125 |
+
|
126 |
+
.bootstrap-wpadmin .clearfix:before,
|
127 |
+
.bootstrap-wpadmin .clearfix:after {
|
128 |
+
display: table;
|
129 |
+
content: "";
|
130 |
+
}
|
131 |
+
|
132 |
+
.bootstrap-wpadmin .clearfix:after {
|
133 |
+
clear: both;
|
134 |
+
}
|
135 |
+
|
136 |
+
.bootstrap-wpadmin .hide-text {
|
137 |
+
font: 0/0 a;
|
138 |
+
color: transparent;
|
139 |
+
text-shadow: none;
|
140 |
+
background-color: transparent;
|
141 |
+
border: 0;
|
142 |
+
}
|
143 |
+
|
144 |
+
.bootstrap-wpadmin .input-block-level {
|
145 |
+
display: block;
|
146 |
+
width: 100%;
|
147 |
+
min-height: 28px;
|
148 |
+
-webkit-box-sizing: border-box;
|
149 |
+
-moz-box-sizing: border-box;
|
150 |
+
-ms-box-sizing: border-box;
|
151 |
+
box-sizing: border-box;
|
152 |
+
}
|
153 |
+
|
154 |
+
.bootstrap-wpadmin body {
|
155 |
+
margin: 0;
|
156 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
157 |
+
font-size: 13px;
|
158 |
+
line-height: 18px;
|
159 |
+
color: #333333;
|
160 |
+
background-color: #ffffff;
|
161 |
+
}
|
162 |
+
|
163 |
+
.bootstrap-wpadmin a {
|
164 |
+
color: #0088cc;
|
165 |
+
text-decoration: none;
|
166 |
+
}
|
167 |
+
|
168 |
+
.bootstrap-wpadmin a:hover {
|
169 |
+
color: #005580;
|
170 |
+
text-decoration: underline;
|
171 |
+
}
|
172 |
+
|
173 |
+
.bootstrap-wpadmin .row {
|
174 |
+
margin-left: -20px;
|
175 |
+
*zoom: 1;
|
176 |
+
}
|
177 |
+
|
178 |
+
.bootstrap-wpadmin .row:before,
|
179 |
+
.bootstrap-wpadmin .row:after {
|
180 |
+
display: table;
|
181 |
+
content: "";
|
182 |
+
}
|
183 |
+
|
184 |
+
.bootstrap-wpadmin .row:after {
|
185 |
+
clear: both;
|
186 |
+
}
|
187 |
+
|
188 |
+
.bootstrap-wpadmin [class*="span"] {
|
189 |
+
float: left;
|
190 |
+
margin-left: 20px;
|
191 |
+
}
|
192 |
+
|
193 |
+
.bootstrap-wpadmin .container,
|
194 |
+
.bootstrap-wpadmin .navbar-fixed-top .container,
|
195 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .container {
|
196 |
+
width: 940px;
|
197 |
+
}
|
198 |
+
|
199 |
+
.bootstrap-wpadmin .span12 {
|
200 |
+
width: 940px;
|
201 |
+
}
|
202 |
+
|
203 |
+
.bootstrap-wpadmin .span11 {
|
204 |
+
width: 860px;
|
205 |
+
}
|
206 |
+
|
207 |
+
.bootstrap-wpadmin .span10 {
|
208 |
+
width: 780px;
|
209 |
+
}
|
210 |
+
|
211 |
+
.bootstrap-wpadmin .span9 {
|
212 |
+
width: 700px;
|
213 |
+
}
|
214 |
+
|
215 |
+
.bootstrap-wpadmin .span8 {
|
216 |
+
width: 620px;
|
217 |
+
}
|
218 |
+
|
219 |
+
.bootstrap-wpadmin .span7 {
|
220 |
+
width: 540px;
|
221 |
+
}
|
222 |
+
|
223 |
+
.bootstrap-wpadmin .span6 {
|
224 |
+
width: 460px;
|
225 |
+
}
|
226 |
+
|
227 |
+
.bootstrap-wpadmin .span5 {
|
228 |
+
width: 380px;
|
229 |
+
}
|
230 |
+
|
231 |
+
.bootstrap-wpadmin .span4 {
|
232 |
+
width: 300px;
|
233 |
+
}
|
234 |
+
|
235 |
+
.bootstrap-wpadmin .span3 {
|
236 |
+
width: 220px;
|
237 |
+
}
|
238 |
+
|
239 |
+
.bootstrap-wpadmin .span2 {
|
240 |
+
width: 140px;
|
241 |
+
}
|
242 |
+
|
243 |
+
.bootstrap-wpadmin .span1 {
|
244 |
+
width: 60px;
|
245 |
+
}
|
246 |
+
|
247 |
+
.bootstrap-wpadmin .offset12 {
|
248 |
+
margin-left: 980px;
|
249 |
+
}
|
250 |
+
|
251 |
+
.bootstrap-wpadmin .offset11 {
|
252 |
+
margin-left: 900px;
|
253 |
+
}
|
254 |
+
|
255 |
+
.bootstrap-wpadmin .offset10 {
|
256 |
+
margin-left: 820px;
|
257 |
+
}
|
258 |
+
|
259 |
+
.bootstrap-wpadmin .offset9 {
|
260 |
+
margin-left: 740px;
|
261 |
+
}
|
262 |
+
|
263 |
+
.bootstrap-wpadmin .offset8 {
|
264 |
+
margin-left: 660px;
|
265 |
+
}
|
266 |
+
|
267 |
+
.bootstrap-wpadmin .offset7 {
|
268 |
+
margin-left: 580px;
|
269 |
+
}
|
270 |
+
|
271 |
+
.bootstrap-wpadmin .offset6 {
|
272 |
+
margin-left: 500px;
|
273 |
+
}
|
274 |
+
|
275 |
+
.bootstrap-wpadmin .offset5 {
|
276 |
+
margin-left: 420px;
|
277 |
+
}
|
278 |
+
|
279 |
+
.bootstrap-wpadmin .offset4 {
|
280 |
+
margin-left: 340px;
|
281 |
+
}
|
282 |
+
|
283 |
+
.bootstrap-wpadmin .offset3 {
|
284 |
+
margin-left: 260px;
|
285 |
+
}
|
286 |
+
|
287 |
+
.bootstrap-wpadmin .offset2 {
|
288 |
+
margin-left: 180px;
|
289 |
+
}
|
290 |
+
|
291 |
+
.bootstrap-wpadmin .offset1 {
|
292 |
+
margin-left: 100px;
|
293 |
+
}
|
294 |
+
|
295 |
+
.bootstrap-wpadmin .row-fluid {
|
296 |
+
width: 100%;
|
297 |
+
*zoom: 1;
|
298 |
+
}
|
299 |
+
|
300 |
+
.bootstrap-wpadmin .row-fluid:before,
|
301 |
+
.bootstrap-wpadmin .row-fluid:after {
|
302 |
+
display: table;
|
303 |
+
content: "";
|
304 |
+
}
|
305 |
+
|
306 |
+
.bootstrap-wpadmin .row-fluid:after {
|
307 |
+
clear: both;
|
308 |
+
}
|
309 |
+
|
310 |
+
.bootstrap-wpadmin .row-fluid [class*="span"] {
|
311 |
+
display: block;
|
312 |
+
float: left;
|
313 |
+
width: 100%;
|
314 |
+
min-height: 28px;
|
315 |
+
margin-left: 2.127659574%;
|
316 |
+
*margin-left: 2.0744680846382977%;
|
317 |
+
-webkit-box-sizing: border-box;
|
318 |
+
-moz-box-sizing: border-box;
|
319 |
+
-ms-box-sizing: border-box;
|
320 |
+
box-sizing: border-box;
|
321 |
+
}
|
322 |
+
|
323 |
+
.bootstrap-wpadmin .row-fluid [class*="span"]:first-child {
|
324 |
+
margin-left: 0;
|
325 |
+
}
|
326 |
+
|
327 |
+
.bootstrap-wpadmin .row-fluid .span12 {
|
328 |
+
width: 99.99999998999999%;
|
329 |
+
*width: 99.94680850063828%;
|
330 |
+
}
|
331 |
+
|
332 |
+
.bootstrap-wpadmin .row-fluid .span11 {
|
333 |
+
width: 91.489361693%;
|
334 |
+
*width: 91.4361702036383%;
|
335 |
+
}
|
336 |
+
|
337 |
+
.bootstrap-wpadmin .row-fluid .span10 {
|
338 |
+
width: 82.97872339599999%;
|
339 |
+
*width: 82.92553190663828%;
|
340 |
+
}
|
341 |
+
|
342 |
+
.bootstrap-wpadmin .row-fluid .span9 {
|
343 |
+
width: 74.468085099%;
|
344 |
+
*width: 74.4148936096383%;
|
345 |
+
}
|
346 |
+
|
347 |
+
.bootstrap-wpadmin .row-fluid .span8 {
|
348 |
+
width: 65.95744680199999%;
|
349 |
+
*width: 65.90425531263828%;
|
350 |
+
}
|
351 |
+
|
352 |
+
.bootstrap-wpadmin .row-fluid .span7 {
|
353 |
+
width: 57.446808505%;
|
354 |
+
*width: 57.3936170156383%;
|
355 |
+
}
|
356 |
+
|
357 |
+
.bootstrap-wpadmin .row-fluid .span6 {
|
358 |
+
width: 48.93617020799999%;
|
359 |
+
*width: 48.88297871863829%;
|
360 |
+
}
|
361 |
+
|
362 |
+
.bootstrap-wpadmin .row-fluid .span5 {
|
363 |
+
width: 40.425531911%;
|
364 |
+
*width: 40.3723404216383%;
|
365 |
+
}
|
366 |
+
|
367 |
+
.bootstrap-wpadmin .row-fluid .span4 {
|
368 |
+
width: 31.914893614%;
|
369 |
+
*width: 31.8617021246383%;
|
370 |
+
}
|
371 |
+
|
372 |
+
.bootstrap-wpadmin .row-fluid .span3 {
|
373 |
+
width: 23.404255317%;
|
374 |
+
*width: 23.3510638276383%;
|
375 |
+
}
|
376 |
+
|
377 |
+
.bootstrap-wpadmin .row-fluid .span2 {
|
378 |
+
width: 14.89361702%;
|
379 |
+
*width: 14.8404255306383%;
|
380 |
+
}
|
381 |
+
|
382 |
+
.bootstrap-wpadmin .row-fluid .span1 {
|
383 |
+
width: 6.382978723%;
|
384 |
+
*width: 6.329787233638298%;
|
385 |
+
}
|
386 |
+
|
387 |
+
.bootstrap-wpadmin .container {
|
388 |
+
margin-right: auto;
|
389 |
+
margin-left: auto;
|
390 |
+
*zoom: 1;
|
391 |
+
}
|
392 |
+
|
393 |
+
.bootstrap-wpadmin .container:before,
|
394 |
+
.bootstrap-wpadmin .container:after {
|
395 |
+
display: table;
|
396 |
+
content: "";
|
397 |
+
}
|
398 |
+
|
399 |
+
.bootstrap-wpadmin .container:after {
|
400 |
+
clear: both;
|
401 |
+
}
|
402 |
+
|
403 |
+
.bootstrap-wpadmin .container-fluid {
|
404 |
+
padding-right: 20px;
|
405 |
+
padding-left: 20px;
|
406 |
+
*zoom: 1;
|
407 |
+
}
|
408 |
+
|
409 |
+
.bootstrap-wpadmin .container-fluid:before,
|
410 |
+
.bootstrap-wpadmin .container-fluid:after {
|
411 |
+
display: table;
|
412 |
+
content: "";
|
413 |
+
}
|
414 |
+
|
415 |
+
.bootstrap-wpadmin .container-fluid:after {
|
416 |
+
clear: both;
|
417 |
+
}
|
418 |
+
|
419 |
+
.bootstrap-wpadmin p {
|
420 |
+
margin: 0 0 9px;
|
421 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
422 |
+
font-size: 13px;
|
423 |
+
line-height: 18px;
|
424 |
+
}
|
425 |
+
|
426 |
+
.bootstrap-wpadmin p small {
|
427 |
+
font-size: 11px;
|
428 |
+
color: #999999;
|
429 |
+
}
|
430 |
+
|
431 |
+
.bootstrap-wpadmin .lead {
|
432 |
+
margin-bottom: 18px;
|
433 |
+
font-size: 20px;
|
434 |
+
font-weight: 200;
|
435 |
+
line-height: 27px;
|
436 |
+
}
|
437 |
+
|
438 |
+
.bootstrap-wpadmin h1,
|
439 |
+
.bootstrap-wpadmin h2,
|
440 |
+
.bootstrap-wpadmin h3,
|
441 |
+
.bootstrap-wpadmin h4,
|
442 |
+
.bootstrap-wpadmin h5,
|
443 |
+
.bootstrap-wpadmin h6 {
|
444 |
+
margin: 0;
|
445 |
+
font-family: inherit;
|
446 |
+
font-weight: bold;
|
447 |
+
color: inherit;
|
448 |
+
text-rendering: optimizelegibility;
|
449 |
+
}
|
450 |
+
|
451 |
+
.bootstrap-wpadmin h1 small,
|
452 |
+
.bootstrap-wpadmin h2 small,
|
453 |
+
.bootstrap-wpadmin h3 small,
|
454 |
+
.bootstrap-wpadmin h4 small,
|
455 |
+
.bootstrap-wpadmin h5 small,
|
456 |
+
.bootstrap-wpadmin h6 small {
|
457 |
+
font-weight: normal;
|
458 |
+
color: #999999;
|
459 |
+
}
|
460 |
+
|
461 |
+
.bootstrap-wpadmin h1 {
|
462 |
+
font-size: 30px;
|
463 |
+
line-height: 36px;
|
464 |
+
}
|
465 |
+
|
466 |
+
.bootstrap-wpadmin h1 small {
|
467 |
+
font-size: 18px;
|
468 |
+
}
|
469 |
+
|
470 |
+
.bootstrap-wpadmin h2 {
|
471 |
+
font-size: 24px;
|
472 |
+
line-height: 36px;
|
473 |
+
}
|
474 |
+
|
475 |
+
.bootstrap-wpadmin h2 small {
|
476 |
+
font-size: 18px;
|
477 |
+
}
|
478 |
+
|
479 |
+
.bootstrap-wpadmin h3 {
|
480 |
+
font-size: 18px;
|
481 |
+
line-height: 27px;
|
482 |
+
}
|
483 |
+
|
484 |
+
.bootstrap-wpadmin h3 small {
|
485 |
+
font-size: 14px;
|
486 |
+
}
|
487 |
+
|
488 |
+
.bootstrap-wpadmin h4,
|
489 |
+
.bootstrap-wpadmin h5,
|
490 |
+
.bootstrap-wpadmin h6 {
|
491 |
+
line-height: 18px;
|
492 |
+
}
|
493 |
+
|
494 |
+
.bootstrap-wpadmin h4 {
|
495 |
+
font-size: 14px;
|
496 |
+
}
|
497 |
+
|
498 |
+
.bootstrap-wpadmin h4 small {
|
499 |
+
font-size: 12px;
|
500 |
+
}
|
501 |
+
|
502 |
+
.bootstrap-wpadmin h5 {
|
503 |
+
font-size: 12px;
|
504 |
+
}
|
505 |
+
|
506 |
+
.bootstrap-wpadmin h6 {
|
507 |
+
font-size: 11px;
|
508 |
+
color: #999999;
|
509 |
+
text-transform: uppercase;
|
510 |
+
}
|
511 |
+
|
512 |
+
.bootstrap-wpadmin .page-header {
|
513 |
+
padding-bottom: 17px;
|
514 |
+
margin: 18px 0;
|
515 |
+
border-bottom: 1px solid #eeeeee;
|
516 |
+
}
|
517 |
+
|
518 |
+
.bootstrap-wpadmin .page-header h1 {
|
519 |
+
line-height: 1;
|
520 |
+
}
|
521 |
+
|
522 |
+
.bootstrap-wpadmin ul,
|
523 |
+
.bootstrap-wpadmin ol {
|
524 |
+
padding: 0;
|
525 |
+
margin: 0 0 9px 25px;
|
526 |
+
}
|
527 |
+
|
528 |
+
.bootstrap-wpadmin ul ul,
|
529 |
+
.bootstrap-wpadmin ul ol,
|
530 |
+
.bootstrap-wpadmin ol ol,
|
531 |
+
.bootstrap-wpadmin ol ul {
|
532 |
+
margin-bottom: 0;
|
533 |
+
}
|
534 |
+
|
535 |
+
.bootstrap-wpadmin ul {
|
536 |
+
list-style: disc;
|
537 |
+
}
|
538 |
+
|
539 |
+
.bootstrap-wpadmin ol {
|
540 |
+
list-style: decimal;
|
541 |
+
}
|
542 |
+
|
543 |
+
.bootstrap-wpadmin li {
|
544 |
+
line-height: 18px;
|
545 |
+
}
|
546 |
+
|
547 |
+
.bootstrap-wpadmin ul.unstyled,
|
548 |
+
.bootstrap-wpadmin ol.unstyled {
|
549 |
+
margin-left: 0;
|
550 |
+
list-style: none;
|
551 |
+
}
|
552 |
+
|
553 |
+
.bootstrap-wpadmin dl {
|
554 |
+
margin-bottom: 18px;
|
555 |
+
}
|
556 |
+
|
557 |
+
.bootstrap-wpadmin dt,
|
558 |
+
.bootstrap-wpadmin dd {
|
559 |
+
line-height: 18px;
|
560 |
+
}
|
561 |
+
|
562 |
+
.bootstrap-wpadmin dt {
|
563 |
+
font-weight: bold;
|
564 |
+
line-height: 17px;
|
565 |
+
}
|
566 |
+
|
567 |
+
.bootstrap-wpadmin dd {
|
568 |
+
margin-left: 9px;
|
569 |
+
}
|
570 |
+
|
571 |
+
.bootstrap-wpadmin .dl-horizontal dt {
|
572 |
+
float: left;
|
573 |
+
width: 120px;
|
574 |
+
overflow: hidden;
|
575 |
+
clear: left;
|
576 |
+
text-align: right;
|
577 |
+
text-overflow: ellipsis;
|
578 |
+
white-space: nowrap;
|
579 |
+
}
|
580 |
+
|
581 |
+
.bootstrap-wpadmin .dl-horizontal dd {
|
582 |
+
margin-left: 130px;
|
583 |
+
}
|
584 |
+
|
585 |
+
.bootstrap-wpadmin hr {
|
586 |
+
margin: 18px 0;
|
587 |
+
border: 0;
|
588 |
+
border-top: 1px solid #eeeeee;
|
589 |
+
border-bottom: 1px solid #ffffff;
|
590 |
+
}
|
591 |
+
|
592 |
+
.bootstrap-wpadmin strong {
|
593 |
+
font-weight: bold;
|
594 |
+
}
|
595 |
+
|
596 |
+
.bootstrap-wpadmin em {
|
597 |
+
font-style: italic;
|
598 |
+
}
|
599 |
+
|
600 |
+
.bootstrap-wpadmin .muted {
|
601 |
+
color: #999999;
|
602 |
+
}
|
603 |
+
|
604 |
+
.bootstrap-wpadmin abbr[title] {
|
605 |
+
cursor: help;
|
606 |
+
border-bottom: 1px dotted #ddd;
|
607 |
+
}
|
608 |
+
|
609 |
+
.bootstrap-wpadmin abbr.initialism {
|
610 |
+
font-size: 90%;
|
611 |
+
text-transform: uppercase;
|
612 |
+
}
|
613 |
+
|
614 |
+
.bootstrap-wpadmin blockquote {
|
615 |
+
padding: 0 0 0 15px;
|
616 |
+
margin: 0 0 18px;
|
617 |
+
border-left: 5px solid #eeeeee;
|
618 |
+
}
|
619 |
+
|
620 |
+
.bootstrap-wpadmin blockquote p {
|
621 |
+
margin-bottom: 0;
|
622 |
+
font-size: 16px;
|
623 |
+
font-weight: 300;
|
624 |
+
line-height: 22.5px;
|
625 |
+
}
|
626 |
+
|
627 |
+
.bootstrap-wpadmin blockquote small {
|
628 |
+
display: block;
|
629 |
+
line-height: 18px;
|
630 |
+
color: #999999;
|
631 |
+
}
|
632 |
+
|
633 |
+
.bootstrap-wpadmin blockquote small:before {
|
634 |
+
content: '\2014 \00A0';
|
635 |
+
}
|
636 |
+
|
637 |
+
.bootstrap-wpadmin blockquote.pull-right {
|
638 |
+
float: right;
|
639 |
+
padding-right: 15px;
|
640 |
+
padding-left: 0;
|
641 |
+
border-right: 5px solid #eeeeee;
|
642 |
+
border-left: 0;
|
643 |
+
}
|
644 |
+
|
645 |
+
.bootstrap-wpadmin blockquote.pull-right p,
|
646 |
+
.bootstrap-wpadmin blockquote.pull-right small {
|
647 |
+
text-align: right;
|
648 |
+
}
|
649 |
+
|
650 |
+
.bootstrap-wpadmin q:before,
|
651 |
+
.bootstrap-wpadmin q:after,
|
652 |
+
.bootstrap-wpadmin blockquote:before,
|
653 |
+
.bootstrap-wpadmin blockquote:after {
|
654 |
+
content: "";
|
655 |
+
}
|
656 |
+
|
657 |
+
.bootstrap-wpadmin address {
|
658 |
+
display: block;
|
659 |
+
margin-bottom: 18px;
|
660 |
+
font-style: normal;
|
661 |
+
line-height: 18px;
|
662 |
+
}
|
663 |
+
|
664 |
+
.bootstrap-wpadmin small {
|
665 |
+
font-size: 100%;
|
666 |
+
}
|
667 |
+
|
668 |
+
.bootstrap-wpadmin cite {
|
669 |
+
font-style: normal;
|
670 |
+
}
|
671 |
+
|
672 |
+
.bootstrap-wpadmin code,
|
673 |
+
.bootstrap-wpadmin pre {
|
674 |
+
padding: 0 3px 2px;
|
675 |
+
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
|
676 |
+
font-size: 12px;
|
677 |
+
color: #333333;
|
678 |
+
-webkit-border-radius: 3px;
|
679 |
+
-moz-border-radius: 3px;
|
680 |
+
border-radius: 3px;
|
681 |
+
}
|
682 |
+
|
683 |
+
.bootstrap-wpadmin code {
|
684 |
+
padding: 2px 4px;
|
685 |
+
color: #d14;
|
686 |
+
background-color: #f7f7f9;
|
687 |
+
border: 1px solid #e1e1e8;
|
688 |
+
}
|
689 |
+
|
690 |
+
.bootstrap-wpadmin pre {
|
691 |
+
display: block;
|
692 |
+
padding: 8.5px;
|
693 |
+
margin: 0 0 9px;
|
694 |
+
font-size: 12.025px;
|
695 |
+
line-height: 18px;
|
696 |
+
word-break: break-all;
|
697 |
+
word-wrap: break-word;
|
698 |
+
white-space: pre;
|
699 |
+
white-space: pre-wrap;
|
700 |
+
background-color: #f5f5f5;
|
701 |
+
border: 1px solid #ccc;
|
702 |
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
703 |
+
-webkit-border-radius: 4px;
|
704 |
+
-moz-border-radius: 4px;
|
705 |
+
border-radius: 4px;
|
706 |
+
}
|
707 |
+
|
708 |
+
.bootstrap-wpadmin pre.prettyprint {
|
709 |
+
margin-bottom: 18px;
|
710 |
+
}
|
711 |
+
|
712 |
+
.bootstrap-wpadmin pre code {
|
713 |
+
padding: 0;
|
714 |
+
color: inherit;
|
715 |
+
background-color: transparent;
|
716 |
+
border: 0;
|
717 |
+
}
|
718 |
+
|
719 |
+
.bootstrap-wpadmin .pre-scrollable {
|
720 |
+
max-height: 340px;
|
721 |
+
overflow-y: scroll;
|
722 |
+
}
|
723 |
+
|
724 |
+
.bootstrap-wpadmin form {
|
725 |
+
margin: 0 0 18px;
|
726 |
+
}
|
727 |
+
|
728 |
+
.bootstrap-wpadmin fieldset {
|
729 |
+
padding: 0;
|
730 |
+
margin: 0;
|
731 |
+
border: 0;
|
732 |
+
}
|
733 |
+
|
734 |
+
.bootstrap-wpadmin legend {
|
735 |
+
display: block;
|
736 |
+
width: 100%;
|
737 |
+
padding: 0;
|
738 |
+
margin-bottom: 27px;
|
739 |
+
font-size: 19.5px;
|
740 |
+
line-height: 36px;
|
741 |
+
color: #333333;
|
742 |
+
border: 0;
|
743 |
+
border-bottom: 1px solid #eee;
|
744 |
+
}
|
745 |
+
|
746 |
+
.bootstrap-wpadmin legend small {
|
747 |
+
font-size: 13.5px;
|
748 |
+
color: #999999;
|
749 |
+
}
|
750 |
+
|
751 |
+
.bootstrap-wpadmin label,
|
752 |
+
.bootstrap-wpadmin input,
|
753 |
+
.bootstrap-wpadmin button,
|
754 |
+
.bootstrap-wpadmin select,
|
755 |
+
.bootstrap-wpadmin textarea {
|
756 |
+
font-size: 13px;
|
757 |
+
font-weight: normal;
|
758 |
+
line-height: 18px;
|
759 |
+
}
|
760 |
+
|
761 |
+
.bootstrap-wpadmin input,
|
762 |
+
.bootstrap-wpadmin button,
|
763 |
+
.bootstrap-wpadmin select,
|
764 |
+
.bootstrap-wpadmin textarea {
|
765 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
766 |
+
}
|
767 |
+
|
768 |
+
.bootstrap-wpadmin label {
|
769 |
+
display: block;
|
770 |
+
margin-bottom: 5px;
|
771 |
+
color: #333333;
|
772 |
+
}
|
773 |
+
|
774 |
+
.bootstrap-wpadmin input,
|
775 |
+
.bootstrap-wpadmin textarea,
|
776 |
+
.bootstrap-wpadmin select,
|
777 |
+
.bootstrap-wpadmin .uneditable-input {
|
778 |
+
display: inline-block;
|
779 |
+
width: 210px;
|
780 |
+
height: 18px;
|
781 |
+
padding: 4px;
|
782 |
+
margin-bottom: 9px;
|
783 |
+
font-size: 13px;
|
784 |
+
line-height: 18px;
|
785 |
+
color: #555555;
|
786 |
+
background-color: #ffffff;
|
787 |
+
border: 1px solid #cccccc;
|
788 |
+
-webkit-border-radius: 3px;
|
789 |
+
-moz-border-radius: 3px;
|
790 |
+
border-radius: 3px;
|
791 |
+
}
|
792 |
+
|
793 |
+
.bootstrap-wpadmin .uneditable-textarea {
|
794 |
+
width: auto;
|
795 |
+
height: auto;
|
796 |
+
}
|
797 |
+
|
798 |
+
.bootstrap-wpadmin label input,
|
799 |
+
.bootstrap-wpadmin label textarea,
|
800 |
+
.bootstrap-wpadmin label select {
|
801 |
+
display: block;
|
802 |
+
}
|
803 |
+
|
804 |
+
.bootstrap-wpadmin input[type="image"],
|
805 |
+
.bootstrap-wpadmin input[type="checkbox"],
|
806 |
+
.bootstrap-wpadmin input[type="radio"] {
|
807 |
+
width: auto;
|
808 |
+
height: auto;
|
809 |
+
padding: 0;
|
810 |
+
margin: 3px 0;
|
811 |
+
*margin-top: 0;
|
812 |
+
/* IE7 */
|
813 |
+
|
814 |
+
line-height: normal;
|
815 |
+
cursor: pointer;
|
816 |
+
background-color: transparent;
|
817 |
+
border: 0 \9;
|
818 |
+
/* IE9 and down */
|
819 |
+
|
820 |
+
-webkit-border-radius: 0;
|
821 |
+
-moz-border-radius: 0;
|
822 |
+
border-radius: 0;
|
823 |
+
}
|
824 |
+
|
825 |
+
.bootstrap-wpadmin input[type="image"] {
|
826 |
+
border: 0;
|
827 |
+
}
|
828 |
+
|
829 |
+
.bootstrap-wpadmin input[type="file"] {
|
830 |
+
width: auto;
|
831 |
+
padding: initial;
|
832 |
+
line-height: initial;
|
833 |
+
background-color: #ffffff;
|
834 |
+
background-color: initial;
|
835 |
+
border: initial;
|
836 |
+
-webkit-box-shadow: none;
|
837 |
+
-moz-box-shadow: none;
|
838 |
+
box-shadow: none;
|
839 |
+
}
|
840 |
+
|
841 |
+
.bootstrap-wpadmin input[type="button"],
|
842 |
+
.bootstrap-wpadmin input[type="reset"],
|
843 |
+
.bootstrap-wpadmin input[type="submit"] {
|
844 |
+
width: auto;
|
845 |
+
height: auto;
|
846 |
+
}
|
847 |
+
|
848 |
+
.bootstrap-wpadmin select,
|
849 |
+
.bootstrap-wpadmin input[type="file"] {
|
850 |
+
height: 28px;
|
851 |
+
/* In IE7, the height of the select element cannot be changed by height, only font-size */
|
852 |
+
|
853 |
+
*margin-top: 4px;
|
854 |
+
/* For IE7, add top margin to align select with labels */
|
855 |
+
|
856 |
+
line-height: 28px;
|
857 |
+
}
|
858 |
+
|
859 |
+
.bootstrap-wpadmin input[type="file"] {
|
860 |
+
line-height: 18px \9;
|
861 |
+
}
|
862 |
+
|
863 |
+
.bootstrap-wpadmin select {
|
864 |
+
width: 220px;
|
865 |
+
background-color: #ffffff;
|
866 |
+
}
|
867 |
+
|
868 |
+
.bootstrap-wpadmin select[multiple],
|
869 |
+
.bootstrap-wpadmin select[size] {
|
870 |
+
height: auto;
|
871 |
+
}
|
872 |
+
|
873 |
+
.bootstrap-wpadmin input[type="image"] {
|
874 |
+
-webkit-box-shadow: none;
|
875 |
+
-moz-box-shadow: none;
|
876 |
+
box-shadow: none;
|
877 |
+
}
|
878 |
+
|
879 |
+
.bootstrap-wpadmin textarea {
|
880 |
+
height: auto;
|
881 |
+
}
|
882 |
+
|
883 |
+
.bootstrap-wpadmin input[type="hidden"] {
|
884 |
+
display: none;
|
885 |
+
}
|
886 |
+
|
887 |
+
.bootstrap-wpadmin .radio,
|
888 |
+
.bootstrap-wpadmin .checkbox {
|
889 |
+
min-height: 18px;
|
890 |
+
padding-left: 18px;
|
891 |
+
}
|
892 |
+
|
893 |
+
.bootstrap-wpadmin .radio input[type="radio"],
|
894 |
+
.bootstrap-wpadmin .checkbox input[type="checkbox"] {
|
895 |
+
float: left;
|
896 |
+
margin-left: -18px;
|
897 |
+
}
|
898 |
+
|
899 |
+
.bootstrap-wpadmin .controls > .radio:first-child,
|
900 |
+
.bootstrap-wpadmin .controls > .checkbox:first-child {
|
901 |
+
padding-top: 5px;
|
902 |
+
}
|
903 |
+
|
904 |
+
.bootstrap-wpadmin .radio.inline,
|
905 |
+
.bootstrap-wpadmin .checkbox.inline {
|
906 |
+
display: inline-block;
|
907 |
+
padding-top: 5px;
|
908 |
+
margin-bottom: 0;
|
909 |
+
vertical-align: middle;
|
910 |
+
}
|
911 |
+
|
912 |
+
.bootstrap-wpadmin .radio.inline + .radio.inline,
|
913 |
+
.bootstrap-wpadmin .checkbox.inline + .checkbox.inline {
|
914 |
+
margin-left: 10px;
|
915 |
+
}
|
916 |
+
|
917 |
+
.bootstrap-wpadmin input,
|
918 |
+
.bootstrap-wpadmin textarea {
|
919 |
+
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
920 |
+
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
921 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
922 |
+
-webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
|
923 |
+
-moz-transition: border linear 0.2s, box-shadow linear 0.2s;
|
924 |
+
-ms-transition: border linear 0.2s, box-shadow linear 0.2s;
|
925 |
+
-o-transition: border linear 0.2s, box-shadow linear 0.2s;
|
926 |
+
transition: border linear 0.2s, box-shadow linear 0.2s;
|
927 |
+
}
|
928 |
+
|
929 |
+
.bootstrap-wpadmin input:focus,
|
930 |
+
.bootstrap-wpadmin textarea:focus {
|
931 |
+
border-color: rgba(82, 168, 236, 0.8);
|
932 |
+
outline: 0;
|
933 |
+
outline: thin dotted \9;
|
934 |
+
/* IE6-9 */
|
935 |
+
|
936 |
+
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
937 |
+
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
938 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
|
939 |
+
}
|
940 |
+
|
941 |
+
.bootstrap-wpadmin input[type="file"]:focus,
|
942 |
+
.bootstrap-wpadmin input[type="radio"]:focus,
|
943 |
+
.bootstrap-wpadmin input[type="checkbox"]:focus,
|
944 |
+
.bootstrap-wpadmin select:focus {
|
945 |
+
outline: thin dotted #333;
|
946 |
+
outline: 5px auto -webkit-focus-ring-color;
|
947 |
+
outline-offset: -2px;
|
948 |
+
-webkit-box-shadow: none;
|
949 |
+
-moz-box-shadow: none;
|
950 |
+
box-shadow: none;
|
951 |
+
}
|
952 |
+
|
953 |
+
.bootstrap-wpadmin .input-mini {
|
954 |
+
width: 60px;
|
955 |
+
}
|
956 |
+
|
957 |
+
.bootstrap-wpadmin .input-small {
|
958 |
+
width: 90px;
|
959 |
+
}
|
960 |
+
|
961 |
+
.bootstrap-wpadmin .input-medium {
|
962 |
+
width: 150px;
|
963 |
+
}
|
964 |
+
|
965 |
+
.bootstrap-wpadmin .input-large {
|
966 |
+
width: 210px;
|
967 |
+
}
|
968 |
+
|
969 |
+
.bootstrap-wpadmin .input-xlarge {
|
970 |
+
width: 270px;
|
971 |
+
}
|
972 |
+
|
973 |
+
.bootstrap-wpadmin .input-xxlarge {
|
974 |
+
width: 530px;
|
975 |
+
}
|
976 |
+
|
977 |
+
.bootstrap-wpadmin input[class*="span"],
|
978 |
+
.bootstrap-wpadmin select[class*="span"],
|
979 |
+
.bootstrap-wpadmin textarea[class*="span"],
|
980 |
+
.bootstrap-wpadmin .uneditable-input[class*="span"],
|
981 |
+
.bootstrap-wpadmin .row-fluid input[class*="span"],
|
982 |
+
.bootstrap-wpadmin .row-fluid select[class*="span"],
|
983 |
+
.bootstrap-wpadmin .row-fluid textarea[class*="span"],
|
984 |
+
.bootstrap-wpadmin .row-fluid .uneditable-input[class*="span"] {
|
985 |
+
float: none;
|
986 |
+
margin-left: 0;
|
987 |
+
}
|
988 |
+
|
989 |
+
.bootstrap-wpadmin input,
|
990 |
+
.bootstrap-wpadmin textarea,
|
991 |
+
.bootstrap-wpadmin .uneditable-input {
|
992 |
+
margin-left: 0;
|
993 |
+
}
|
994 |
+
|
995 |
+
.bootstrap-wpadmin input.span12,
|
996 |
+
.bootstrap-wpadmin textarea.span12,
|
997 |
+
.bootstrap-wpadmin .uneditable-input.span12 {
|
998 |
+
width: 930px;
|
999 |
+
}
|
1000 |
+
|
1001 |
+
.bootstrap-wpadmin input.span11,
|
1002 |
+
.bootstrap-wpadmin textarea.span11,
|
1003 |
+
.bootstrap-wpadmin .uneditable-input.span11 {
|
1004 |
+
width: 850px;
|
1005 |
+
}
|
1006 |
+
|
1007 |
+
.bootstrap-wpadmin input.span10,
|
1008 |
+
.bootstrap-wpadmin textarea.span10,
|
1009 |
+
.bootstrap-wpadmin .uneditable-input.span10 {
|
1010 |
+
width: 770px;
|
1011 |
+
}
|
1012 |
+
|
1013 |
+
.bootstrap-wpadmin input.span9,
|
1014 |
+
.bootstrap-wpadmin textarea.span9,
|
1015 |
+
.bootstrap-wpadmin .uneditable-input.span9 {
|
1016 |
+
width: 690px;
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
.bootstrap-wpadmin input.span8,
|
1020 |
+
.bootstrap-wpadmin textarea.span8,
|
1021 |
+
.bootstrap-wpadmin .uneditable-input.span8 {
|
1022 |
+
width: 610px;
|
1023 |
+
}
|
1024 |
+
|
1025 |
+
.bootstrap-wpadmin input.span7,
|
1026 |
+
.bootstrap-wpadmin textarea.span7,
|
1027 |
+
.bootstrap-wpadmin .uneditable-input.span7 {
|
1028 |
+
width: 530px;
|
1029 |
+
}
|
1030 |
+
|
1031 |
+
.bootstrap-wpadmin input.span6,
|
1032 |
+
.bootstrap-wpadmin textarea.span6,
|
1033 |
+
.bootstrap-wpadmin .uneditable-input.span6 {
|
1034 |
+
width: 450px;
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
.bootstrap-wpadmin input.span5,
|
1038 |
+
.bootstrap-wpadmin textarea.span5,
|
1039 |
+
.bootstrap-wpadmin .uneditable-input.span5 {
|
1040 |
+
width: 370px;
|
1041 |
+
}
|
1042 |
+
|
1043 |
+
.bootstrap-wpadmin input.span4,
|
1044 |
+
.bootstrap-wpadmin textarea.span4,
|
1045 |
+
.bootstrap-wpadmin .uneditable-input.span4 {
|
1046 |
+
width: 290px;
|
1047 |
+
}
|
1048 |
+
|
1049 |
+
.bootstrap-wpadmin input.span3,
|
1050 |
+
.bootstrap-wpadmin textarea.span3,
|
1051 |
+
.bootstrap-wpadmin .uneditable-input.span3 {
|
1052 |
+
width: 210px;
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
.bootstrap-wpadmin input.span2,
|
1056 |
+
.bootstrap-wpadmin textarea.span2,
|
1057 |
+
.bootstrap-wpadmin .uneditable-input.span2 {
|
1058 |
+
width: 130px;
|
1059 |
+
}
|
1060 |
+
|
1061 |
+
.bootstrap-wpadmin input.span1,
|
1062 |
+
.bootstrap-wpadmin textarea.span1,
|
1063 |
+
.bootstrap-wpadmin .uneditable-input.span1 {
|
1064 |
+
width: 50px;
|
1065 |
+
}
|
1066 |
+
|
1067 |
+
.bootstrap-wpadmin input[disabled],
|
1068 |
+
.bootstrap-wpadmin select[disabled],
|
1069 |
+
.bootstrap-wpadmin textarea[disabled],
|
1070 |
+
.bootstrap-wpadmin input[readonly],
|
1071 |
+
.bootstrap-wpadmin select[readonly],
|
1072 |
+
.bootstrap-wpadmin textarea[readonly] {
|
1073 |
+
cursor: not-allowed;
|
1074 |
+
background-color: #eeeeee;
|
1075 |
+
border-color: #ddd;
|
1076 |
+
}
|
1077 |
+
|
1078 |
+
.bootstrap-wpadmin input[type="radio"][disabled],
|
1079 |
+
.bootstrap-wpadmin input[type="checkbox"][disabled],
|
1080 |
+
.bootstrap-wpadmin input[type="radio"][readonly],
|
1081 |
+
.bootstrap-wpadmin input[type="checkbox"][readonly] {
|
1082 |
+
background-color: transparent;
|
1083 |
+
}
|
1084 |
+
|
1085 |
+
.bootstrap-wpadmin .control-group.warning > label,
|
1086 |
+
.bootstrap-wpadmin .control-group.warning .help-block,
|
1087 |
+
.bootstrap-wpadmin .control-group.warning .help-inline {
|
1088 |
+
color: #c09853;
|
1089 |
+
}
|
1090 |
+
|
1091 |
+
.bootstrap-wpadmin .control-group.warning input,
|
1092 |
+
.bootstrap-wpadmin .control-group.warning select,
|
1093 |
+
.bootstrap-wpadmin .control-group.warning textarea {
|
1094 |
+
color: #c09853;
|
1095 |
+
border-color: #c09853;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
.bootstrap-wpadmin .control-group.warning input:focus,
|
1099 |
+
.bootstrap-wpadmin .control-group.warning select:focus,
|
1100 |
+
.bootstrap-wpadmin .control-group.warning textarea:focus {
|
1101 |
+
border-color: #a47e3c;
|
1102 |
+
-webkit-box-shadow: 0 0 6px #dbc59e;
|
1103 |
+
-moz-box-shadow: 0 0 6px #dbc59e;
|
1104 |
+
box-shadow: 0 0 6px #dbc59e;
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
.bootstrap-wpadmin .control-group.warning .input-prepend .add-on,
|
1108 |
+
.bootstrap-wpadmin .control-group.warning .input-append .add-on {
|
1109 |
+
color: #c09853;
|
1110 |
+
background-color: #fcf8e3;
|
1111 |
+
border-color: #c09853;
|
1112 |
+
}
|
1113 |
+
|
1114 |
+
.bootstrap-wpadmin .control-group.error > label,
|
1115 |
+
.bootstrap-wpadmin .control-group.error .help-block,
|
1116 |
+
.bootstrap-wpadmin .control-group.error .help-inline {
|
1117 |
+
color: #b94a48;
|
1118 |
+
}
|
1119 |
+
|
1120 |
+
.bootstrap-wpadmin .control-group.error input,
|
1121 |
+
.bootstrap-wpadmin .control-group.error select,
|
1122 |
+
.bootstrap-wpadmin .control-group.error textarea {
|
1123 |
+
color: #b94a48;
|
1124 |
+
border-color: #b94a48;
|
1125 |
+
}
|
1126 |
+
|
1127 |
+
.bootstrap-wpadmin .control-group.error input:focus,
|
1128 |
+
.bootstrap-wpadmin .control-group.error select:focus,
|
1129 |
+
.bootstrap-wpadmin .control-group.error textarea:focus {
|
1130 |
+
border-color: #953b39;
|
1131 |
+
-webkit-box-shadow: 0 0 6px #d59392;
|
1132 |
+
-moz-box-shadow: 0 0 6px #d59392;
|
1133 |
+
box-shadow: 0 0 6px #d59392;
|
1134 |
+
}
|
1135 |
+
|
1136 |
+
.bootstrap-wpadmin .control-group.error .input-prepend .add-on,
|
1137 |
+
.bootstrap-wpadmin .control-group.error .input-append .add-on {
|
1138 |
+
color: #b94a48;
|
1139 |
+
background-color: #f2dede;
|
1140 |
+
border-color: #b94a48;
|
1141 |
+
}
|
1142 |
+
|
1143 |
+
.bootstrap-wpadmin .control-group.success > label,
|
1144 |
+
.bootstrap-wpadmin .control-group.success .help-block,
|
1145 |
+
.bootstrap-wpadmin .control-group.success .help-inline {
|
1146 |
+
color: #468847;
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
.bootstrap-wpadmin .control-group.success input,
|
1150 |
+
.bootstrap-wpadmin .control-group.success select,
|
1151 |
+
.bootstrap-wpadmin .control-group.success textarea {
|
1152 |
+
color: #468847;
|
1153 |
+
border-color: #468847;
|
1154 |
+
}
|
1155 |
+
|
1156 |
+
.bootstrap-wpadmin .control-group.success input:focus,
|
1157 |
+
.bootstrap-wpadmin .control-group.success select:focus,
|
1158 |
+
.bootstrap-wpadmin .control-group.success textarea:focus {
|
1159 |
+
border-color: #356635;
|
1160 |
+
-webkit-box-shadow: 0 0 6px #7aba7b;
|
1161 |
+
-moz-box-shadow: 0 0 6px #7aba7b;
|
1162 |
+
box-shadow: 0 0 6px #7aba7b;
|
1163 |
+
}
|
1164 |
+
|
1165 |
+
.bootstrap-wpadmin .control-group.success .input-prepend .add-on,
|
1166 |
+
.bootstrap-wpadmin .control-group.success .input-append .add-on {
|
1167 |
+
color: #468847;
|
1168 |
+
background-color: #dff0d8;
|
1169 |
+
border-color: #468847;
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
.bootstrap-wpadmin input:focus:required:invalid,
|
1173 |
+
.bootstrap-wpadmin textarea:focus:required:invalid,
|
1174 |
+
.bootstrap-wpadmin select:focus:required:invalid {
|
1175 |
+
color: #b94a48;
|
1176 |
+
border-color: #ee5f5b;
|
1177 |
+
}
|
1178 |
+
|
1179 |
+
.bootstrap-wpadmin input:focus:required:invalid:focus,
|
1180 |
+
.bootstrap-wpadmin textarea:focus:required:invalid:focus,
|
1181 |
+
.bootstrap-wpadmin select:focus:required:invalid:focus {
|
1182 |
+
border-color: #e9322d;
|
1183 |
+
-webkit-box-shadow: 0 0 6px #f8b9b7;
|
1184 |
+
-moz-box-shadow: 0 0 6px #f8b9b7;
|
1185 |
+
box-shadow: 0 0 6px #f8b9b7;
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
.bootstrap-wpadmin .form-actions {
|
1189 |
+
padding: 17px 20px 18px;
|
1190 |
+
margin-top: 18px;
|
1191 |
+
margin-bottom: 18px;
|
1192 |
+
background-color: #f5f5f5;
|
1193 |
+
border-top: 1px solid #ddd;
|
1194 |
+
*zoom: 1;
|
1195 |
+
}
|
1196 |
+
|
1197 |
+
.bootstrap-wpadmin .form-actions:before,
|
1198 |
+
.bootstrap-wpadmin .form-actions:after {
|
1199 |
+
display: table;
|
1200 |
+
content: "";
|
1201 |
+
}
|
1202 |
+
|
1203 |
+
.bootstrap-wpadmin .form-actions:after {
|
1204 |
+
clear: both;
|
1205 |
+
}
|
1206 |
+
|
1207 |
+
.bootstrap-wpadmin .uneditable-input {
|
1208 |
+
overflow: hidden;
|
1209 |
+
white-space: nowrap;
|
1210 |
+
cursor: not-allowed;
|
1211 |
+
background-color: #ffffff;
|
1212 |
+
border-color: #eee;
|
1213 |
+
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
|
1214 |
+
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
|
1215 |
+
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
|
1216 |
+
}
|
1217 |
+
|
1218 |
+
.bootstrap-wpadmin :-moz-placeholder {
|
1219 |
+
color: #999999;
|
1220 |
+
}
|
1221 |
+
|
1222 |
+
.bootstrap-wpadmin ::-webkit-input-placeholder {
|
1223 |
+
color: #999999;
|
1224 |
+
}
|
1225 |
+
|
1226 |
+
.bootstrap-wpadmin .help-block,
|
1227 |
+
.bootstrap-wpadmin .help-inline {
|
1228 |
+
color: #555555;
|
1229 |
+
}
|
1230 |
+
|
1231 |
+
.bootstrap-wpadmin .help-block {
|
1232 |
+
display: block;
|
1233 |
+
margin-bottom: 9px;
|
1234 |
+
}
|
1235 |
+
|
1236 |
+
.bootstrap-wpadmin .help-inline {
|
1237 |
+
display: inline-block;
|
1238 |
+
*display: inline;
|
1239 |
+
padding-left: 5px;
|
1240 |
+
vertical-align: middle;
|
1241 |
+
*zoom: 1;
|
1242 |
+
}
|
1243 |
+
|
1244 |
+
.bootstrap-wpadmin .input-prepend,
|
1245 |
+
.bootstrap-wpadmin .input-append {
|
1246 |
+
margin-bottom: 5px;
|
1247 |
+
}
|
1248 |
+
|
1249 |
+
.bootstrap-wpadmin .input-prepend input,
|
1250 |
+
.bootstrap-wpadmin .input-append input,
|
1251 |
+
.bootstrap-wpadmin .input-prepend select,
|
1252 |
+
.bootstrap-wpadmin .input-append select,
|
1253 |
+
.bootstrap-wpadmin .input-prepend .uneditable-input,
|
1254 |
+
.bootstrap-wpadmin .input-append .uneditable-input {
|
1255 |
+
position: relative;
|
1256 |
+
margin-bottom: 0;
|
1257 |
+
*margin-left: 0;
|
1258 |
+
vertical-align: middle;
|
1259 |
+
-webkit-border-radius: 0 3px 3px 0;
|
1260 |
+
-moz-border-radius: 0 3px 3px 0;
|
1261 |
+
border-radius: 0 3px 3px 0;
|
1262 |
+
}
|
1263 |
+
|
1264 |
+
.bootstrap-wpadmin .input-prepend input:focus,
|
1265 |
+
.bootstrap-wpadmin .input-append input:focus,
|
1266 |
+
.bootstrap-wpadmin .input-prepend select:focus,
|
1267 |
+
.bootstrap-wpadmin .input-append select:focus,
|
1268 |
+
.bootstrap-wpadmin .input-prepend .uneditable-input:focus,
|
1269 |
+
.bootstrap-wpadmin .input-append .uneditable-input:focus {
|
1270 |
+
z-index: 2;
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
.bootstrap-wpadmin .input-prepend .uneditable-input,
|
1274 |
+
.bootstrap-wpadmin .input-append .uneditable-input {
|
1275 |
+
border-left-color: #ccc;
|
1276 |
+
}
|
1277 |
+
|
1278 |
+
.bootstrap-wpadmin .input-prepend .add-on,
|
1279 |
+
.bootstrap-wpadmin .input-append .add-on {
|
1280 |
+
display: inline-block;
|
1281 |
+
width: auto;
|
1282 |
+
height: 18px;
|
1283 |
+
min-width: 16px;
|
1284 |
+
padding: 4px 5px;
|
1285 |
+
font-weight: normal;
|
1286 |
+
line-height: 18px;
|
1287 |
+
text-align: center;
|
1288 |
+
text-shadow: 0 1px 0 #ffffff;
|
1289 |
+
vertical-align: middle;
|
1290 |
+
background-color: #eeeeee;
|
1291 |
+
border: 1px solid #ccc;
|
1292 |
+
}
|
1293 |
+
|
1294 |
+
.bootstrap-wpadmin .input-prepend .add-on,
|
1295 |
+
.bootstrap-wpadmin .input-append .add-on,
|
1296 |
+
.bootstrap-wpadmin .input-prepend .btn,
|
1297 |
+
.bootstrap-wpadmin .input-append .btn {
|
1298 |
+
margin-left: -1px;
|
1299 |
+
-webkit-border-radius: 0;
|
1300 |
+
-moz-border-radius: 0;
|
1301 |
+
border-radius: 0;
|
1302 |
+
}
|
1303 |
+
|
1304 |
+
.bootstrap-wpadmin .input-prepend .active,
|
1305 |
+
.bootstrap-wpadmin .input-append .active {
|
1306 |
+
background-color: #a9dba9;
|
1307 |
+
border-color: #46a546;
|
1308 |
+
}
|
1309 |
+
|
1310 |
+
.bootstrap-wpadmin .input-prepend .add-on,
|
1311 |
+
.bootstrap-wpadmin .input-prepend .btn {
|
1312 |
+
margin-right: -1px;
|
1313 |
+
}
|
1314 |
+
|
1315 |
+
.bootstrap-wpadmin .input-prepend .add-on:first-child,
|
1316 |
+
.bootstrap-wpadmin .input-prepend .btn:first-child {
|
1317 |
+
-webkit-border-radius: 3px 0 0 3px;
|
1318 |
+
-moz-border-radius: 3px 0 0 3px;
|
1319 |
+
border-radius: 3px 0 0 3px;
|
1320 |
+
}
|
1321 |
+
|
1322 |
+
.bootstrap-wpadmin .input-append input,
|
1323 |
+
.bootstrap-wpadmin .input-append select,
|
1324 |
+
.bootstrap-wpadmin .input-append .uneditable-input {
|
1325 |
+
-webkit-border-radius: 3px 0 0 3px;
|
1326 |
+
-moz-border-radius: 3px 0 0 3px;
|
1327 |
+
border-radius: 3px 0 0 3px;
|
1328 |
+
}
|
1329 |
+
|
1330 |
+
.bootstrap-wpadmin .input-append .uneditable-input {
|
1331 |
+
border-right-color: #ccc;
|
1332 |
+
border-left-color: #eee;
|
1333 |
+
}
|
1334 |
+
|
1335 |
+
.bootstrap-wpadmin .input-append .add-on:last-child,
|
1336 |
+
.bootstrap-wpadmin .input-append .btn:last-child {
|
1337 |
+
-webkit-border-radius: 0 3px 3px 0;
|
1338 |
+
-moz-border-radius: 0 3px 3px 0;
|
1339 |
+
border-radius: 0 3px 3px 0;
|
1340 |
+
}
|
1341 |
+
|
1342 |
+
.bootstrap-wpadmin .input-prepend.input-append input,
|
1343 |
+
.bootstrap-wpadmin .input-prepend.input-append select,
|
1344 |
+
.bootstrap-wpadmin .input-prepend.input-append .uneditable-input {
|
1345 |
+
-webkit-border-radius: 0;
|
1346 |
+
-moz-border-radius: 0;
|
1347 |
+
border-radius: 0;
|
1348 |
+
}
|
1349 |
+
|
1350 |
+
.bootstrap-wpadmin .input-prepend.input-append .add-on:first-child,
|
1351 |
+
.bootstrap-wpadmin .input-prepend.input-append .btn:first-child {
|
1352 |
+
margin-right: -1px;
|
1353 |
+
-webkit-border-radius: 3px 0 0 3px;
|
1354 |
+
-moz-border-radius: 3px 0 0 3px;
|
1355 |
+
border-radius: 3px 0 0 3px;
|
1356 |
+
}
|
1357 |
+
|
1358 |
+
.bootstrap-wpadmin .input-prepend.input-append .add-on:last-child,
|
1359 |
+
.bootstrap-wpadmin .input-prepend.input-append .btn:last-child {
|
1360 |
+
margin-left: -1px;
|
1361 |
+
-webkit-border-radius: 0 3px 3px 0;
|
1362 |
+
-moz-border-radius: 0 3px 3px 0;
|
1363 |
+
border-radius: 0 3px 3px 0;
|
1364 |
+
}
|
1365 |
+
|
1366 |
+
.bootstrap-wpadmin .search-query {
|
1367 |
+
padding-right: 14px;
|
1368 |
+
padding-right: 4px \9;
|
1369 |
+
padding-left: 14px;
|
1370 |
+
padding-left: 4px \9;
|
1371 |
+
/* IE7-8 doesn't have border-radius, so don't indent the padding */
|
1372 |
+
|
1373 |
+
margin-bottom: 0;
|
1374 |
+
-webkit-border-radius: 14px;
|
1375 |
+
-moz-border-radius: 14px;
|
1376 |
+
border-radius: 14px;
|
1377 |
+
}
|
1378 |
+
|
1379 |
+
.bootstrap-wpadmin .form-search input,
|
1380 |
+
.bootstrap-wpadmin .form-inline input,
|
1381 |
+
.bootstrap-wpadmin .form-horizontal input,
|
1382 |
+
.bootstrap-wpadmin .form-search textarea,
|
1383 |
+
.bootstrap-wpadmin .form-inline textarea,
|
1384 |
+
.bootstrap-wpadmin .form-horizontal textarea,
|
1385 |
+
.bootstrap-wpadmin .form-search select,
|
1386 |
+
.bootstrap-wpadmin .form-inline select,
|
1387 |
+
.bootstrap-wpadmin .form-horizontal select,
|
1388 |
+
.bootstrap-wpadmin .form-search .help-inline,
|
1389 |
+
.bootstrap-wpadmin .form-inline .help-inline,
|
1390 |
+
.bootstrap-wpadmin .form-horizontal .help-inline,
|
1391 |
+
.bootstrap-wpadmin .form-search .uneditable-input,
|
1392 |
+
.bootstrap-wpadmin .form-inline .uneditable-input,
|
1393 |
+
.bootstrap-wpadmin .form-horizontal .uneditable-input,
|
1394 |
+
.bootstrap-wpadmin .form-search .input-prepend,
|
1395 |
+
.bootstrap-wpadmin .form-inline .input-prepend,
|
1396 |
+
.bootstrap-wpadmin .form-horizontal .input-prepend,
|
1397 |
+
.bootstrap-wpadmin .form-search .input-append,
|
1398 |
+
.bootstrap-wpadmin .form-inline .input-append,
|
1399 |
+
.bootstrap-wpadmin .form-horizontal .input-append {
|
1400 |
+
display: inline-block;
|
1401 |
+
*display: inline;
|
1402 |
+
margin-bottom: 0;
|
1403 |
+
*zoom: 1;
|
1404 |
+
}
|
1405 |
+
|
1406 |
+
.bootstrap-wpadmin .form-search .hide,
|
1407 |
+
.bootstrap-wpadmin .form-inline .hide,
|
1408 |
+
.bootstrap-wpadmin .form-horizontal .hide {
|
1409 |
+
display: none;
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
.bootstrap-wpadmin .form-search label,
|
1413 |
+
.bootstrap-wpadmin .form-inline label {
|
1414 |
+
display: inline-block;
|
1415 |
+
}
|
1416 |
+
|
1417 |
+
.bootstrap-wpadmin .form-search .input-append,
|
1418 |
+
.bootstrap-wpadmin .form-inline .input-append,
|
1419 |
+
.bootstrap-wpadmin .form-search .input-prepend,
|
1420 |
+
.bootstrap-wpadmin .form-inline .input-prepend {
|
1421 |
+
margin-bottom: 0;
|
1422 |
+
}
|
1423 |
+
|
1424 |
+
.bootstrap-wpadmin .form-search .radio,
|
1425 |
+
.bootstrap-wpadmin .form-search .checkbox,
|
1426 |
+
.bootstrap-wpadmin .form-inline .radio,
|
1427 |
+
.bootstrap-wpadmin .form-inline .checkbox {
|
1428 |
+
padding-left: 0;
|
1429 |
+
margin-bottom: 0;
|
1430 |
+
vertical-align: middle;
|
1431 |
+
}
|
1432 |
+
|
1433 |
+
.bootstrap-wpadmin .form-search .radio input[type="radio"],
|
1434 |
+
.bootstrap-wpadmin .form-search .checkbox input[type="checkbox"],
|
1435 |
+
.bootstrap-wpadmin .form-inline .radio input[type="radio"],
|
1436 |
+
.bootstrap-wpadmin .form-inline .checkbox input[type="checkbox"] {
|
1437 |
+
float: left;
|
1438 |
+
margin-right: 3px;
|
1439 |
+
margin-left: 0;
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
.bootstrap-wpadmin .control-group {
|
1443 |
+
margin-bottom: 9px;
|
1444 |
+
}
|
1445 |
+
|
1446 |
+
.bootstrap-wpadmin legend + .control-group {
|
1447 |
+
margin-top: 18px;
|
1448 |
+
-webkit-margin-top-collapse: separate;
|
1449 |
+
}
|
1450 |
+
|
1451 |
+
.bootstrap-wpadmin .form-horizontal .control-group {
|
1452 |
+
margin-bottom: 18px;
|
1453 |
+
*zoom: 1;
|
1454 |
+
}
|
1455 |
+
|
1456 |
+
.bootstrap-wpadmin .form-horizontal .control-group:before,
|
1457 |
+
.bootstrap-wpadmin .form-horizontal .control-group:after {
|
1458 |
+
display: table;
|
1459 |
+
content: "";
|
1460 |
+
}
|
1461 |
+
|
1462 |
+
.bootstrap-wpadmin .form-horizontal .control-group:after {
|
1463 |
+
clear: both;
|
1464 |
+
}
|
1465 |
+
|
1466 |
+
.bootstrap-wpadmin .form-horizontal .control-label {
|
1467 |
+
float: left;
|
1468 |
+
width: 140px;
|
1469 |
+
padding-top: 5px;
|
1470 |
+
text-align: right;
|
1471 |
+
}
|
1472 |
+
|
1473 |
+
.bootstrap-wpadmin .form-horizontal .controls {
|
1474 |
+
*display: inline-block;
|
1475 |
+
*padding-left: 20px;
|
1476 |
+
margin-left: 160px;
|
1477 |
+
*margin-left: 0;
|
1478 |
+
}
|
1479 |
+
|
1480 |
+
.bootstrap-wpadmin .form-horizontal .controls:first-child {
|
1481 |
+
*padding-left: 160px;
|
1482 |
+
}
|
1483 |
+
|
1484 |
+
.bootstrap-wpadmin .form-horizontal .help-block {
|
1485 |
+
margin-top: 9px;
|
1486 |
+
margin-bottom: 0;
|
1487 |
+
}
|
1488 |
+
|
1489 |
+
.bootstrap-wpadmin .form-horizontal .form-actions {
|
1490 |
+
padding-left: 160px;
|
1491 |
+
}
|
1492 |
+
|
1493 |
+
.bootstrap-wpadmin table {
|
1494 |
+
max-width: 100%;
|
1495 |
+
background-color: transparent;
|
1496 |
+
border-collapse: collapse;
|
1497 |
+
border-spacing: 0;
|
1498 |
+
}
|
1499 |
+
|
1500 |
+
.bootstrap-wpadmin .table {
|
1501 |
+
width: 100%;
|
1502 |
+
margin-bottom: 18px;
|
1503 |
+
}
|
1504 |
+
|
1505 |
+
.bootstrap-wpadmin .table th,
|
1506 |
+
.bootstrap-wpadmin .table td {
|
1507 |
+
padding: 8px;
|
1508 |
+
line-height: 18px;
|
1509 |
+
text-align: left;
|
1510 |
+
vertical-align: top;
|
1511 |
+
border-top: 1px solid #dddddd;
|
1512 |
+
}
|
1513 |
+
|
1514 |
+
.bootstrap-wpadmin .table th {
|
1515 |
+
font-weight: bold;
|
1516 |
+
}
|
1517 |
+
|
1518 |
+
.bootstrap-wpadmin .table thead th {
|
1519 |
+
vertical-align: bottom;
|
1520 |
+
}
|
1521 |
+
|
1522 |
+
.bootstrap-wpadmin .table caption + thead tr:first-child th,
|
1523 |
+
.bootstrap-wpadmin .table caption + thead tr:first-child td,
|
1524 |
+
.bootstrap-wpadmin .table colgroup + thead tr:first-child th,
|
1525 |
+
.bootstrap-wpadmin .table colgroup + thead tr:first-child td,
|
1526 |
+
.bootstrap-wpadmin .table thead:first-child tr:first-child th,
|
1527 |
+
.bootstrap-wpadmin .table thead:first-child tr:first-child td {
|
1528 |
+
border-top: 0;
|
1529 |
+
}
|
1530 |
+
|
1531 |
+
.bootstrap-wpadmin .table tbody + tbody {
|
1532 |
+
border-top: 2px solid #dddddd;
|
1533 |
+
}
|
1534 |
+
|
1535 |
+
.bootstrap-wpadmin .table-condensed th,
|
1536 |
+
.bootstrap-wpadmin .table-condensed td {
|
1537 |
+
padding: 4px 5px;
|
1538 |
+
}
|
1539 |
+
|
1540 |
+
.bootstrap-wpadmin .table-bordered {
|
1541 |
+
border: 1px solid #dddddd;
|
1542 |
+
border-collapse: separate;
|
1543 |
+
*border-collapse: collapsed;
|
1544 |
+
border-left: 0;
|
1545 |
+
-webkit-border-radius: 4px;
|
1546 |
+
-moz-border-radius: 4px;
|
1547 |
+
border-radius: 4px;
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
.bootstrap-wpadmin .table-bordered th,
|
1551 |
+
.bootstrap-wpadmin .table-bordered td {
|
1552 |
+
border-left: 1px solid #dddddd;
|
1553 |
+
}
|
1554 |
+
|
1555 |
+
.bootstrap-wpadmin .table-bordered caption + thead tr:first-child th,
|
1556 |
+
.bootstrap-wpadmin .table-bordered caption + tbody tr:first-child th,
|
1557 |
+
.bootstrap-wpadmin .table-bordered caption + tbody tr:first-child td,
|
1558 |
+
.bootstrap-wpadmin .table-bordered colgroup + thead tr:first-child th,
|
1559 |
+
.bootstrap-wpadmin .table-bordered colgroup + tbody tr:first-child th,
|
1560 |
+
.bootstrap-wpadmin .table-bordered colgroup + tbody tr:first-child td,
|
1561 |
+
.bootstrap-wpadmin .table-bordered thead:first-child tr:first-child th,
|
1562 |
+
.bootstrap-wpadmin .table-bordered tbody:first-child tr:first-child th,
|
1563 |
+
.bootstrap-wpadmin .table-bordered tbody:first-child tr:first-child td {
|
1564 |
+
border-top: 0;
|
1565 |
+
}
|
1566 |
+
|
1567 |
+
.bootstrap-wpadmin .table-bordered thead:first-child tr:first-child th:first-child,
|
1568 |
+
.bootstrap-wpadmin .table-bordered tbody:first-child tr:first-child td:first-child {
|
1569 |
+
-webkit-border-top-left-radius: 4px;
|
1570 |
+
border-top-left-radius: 4px;
|
1571 |
+
-moz-border-radius-topleft: 4px;
|
1572 |
+
}
|
1573 |
+
|
1574 |
+
.bootstrap-wpadmin .table-bordered thead:first-child tr:first-child th:last-child,
|
1575 |
+
.bootstrap-wpadmin .table-bordered tbody:first-child tr:first-child td:last-child {
|
1576 |
+
-webkit-border-top-right-radius: 4px;
|
1577 |
+
border-top-right-radius: 4px;
|
1578 |
+
-moz-border-radius-topright: 4px;
|
1579 |
+
}
|
1580 |
+
|
1581 |
+
.bootstrap-wpadmin .table-bordered thead:last-child tr:last-child th:first-child,
|
1582 |
+
.bootstrap-wpadmin .table-bordered tbody:last-child tr:last-child td:first-child {
|
1583 |
+
-webkit-border-radius: 0 0 0 4px;
|
1584 |
+
-moz-border-radius: 0 0 0 4px;
|
1585 |
+
border-radius: 0 0 0 4px;
|
1586 |
+
-webkit-border-bottom-left-radius: 4px;
|
1587 |
+
border-bottom-left-radius: 4px;
|
1588 |
+
-moz-border-radius-bottomleft: 4px;
|
1589 |
+
}
|
1590 |
+
|
1591 |
+
.bootstrap-wpadmin .table-bordered thead:last-child tr:last-child th:last-child,
|
1592 |
+
.bootstrap-wpadmin .table-bordered tbody:last-child tr:last-child td:last-child {
|
1593 |
+
-webkit-border-bottom-right-radius: 4px;
|
1594 |
+
border-bottom-right-radius: 4px;
|
1595 |
+
-moz-border-radius-bottomright: 4px;
|
1596 |
+
}
|
1597 |
+
|
1598 |
+
.bootstrap-wpadmin .table-striped tbody tr:nth-child(odd) td,
|
1599 |
+
.bootstrap-wpadmin .table-striped tbody tr:nth-child(odd) th {
|
1600 |
+
background-color: #f9f9f9;
|
1601 |
+
}
|
1602 |
+
|
1603 |
+
.bootstrap-wpadmin .table tbody tr:hover td,
|
1604 |
+
.bootstrap-wpadmin .table tbody tr:hover th {
|
1605 |
+
background-color: #f5f5f5;
|
1606 |
+
}
|
1607 |
+
|
1608 |
+
.bootstrap-wpadmin table .span1 {
|
1609 |
+
float: none;
|
1610 |
+
width: 44px;
|
1611 |
+
margin-left: 0;
|
1612 |
+
}
|
1613 |
+
|
1614 |
+
.bootstrap-wpadmin table .span2 {
|
1615 |
+
float: none;
|
1616 |
+
width: 124px;
|
1617 |
+
margin-left: 0;
|
1618 |
+
}
|
1619 |
+
|
1620 |
+
.bootstrap-wpadmin table .span3 {
|
1621 |
+
float: none;
|
1622 |
+
width: 204px;
|
1623 |
+
margin-left: 0;
|
1624 |
+
}
|
1625 |
+
|
1626 |
+
.bootstrap-wpadmin table .span4 {
|
1627 |
+
float: none;
|
1628 |
+
width: 284px;
|
1629 |
+
margin-left: 0;
|
1630 |
+
}
|
1631 |
+
|
1632 |
+
.bootstrap-wpadmin table .span5 {
|
1633 |
+
float: none;
|
1634 |
+
width: 364px;
|
1635 |
+
margin-left: 0;
|
1636 |
+
}
|
1637 |
+
|
1638 |
+
.bootstrap-wpadmin table .span6 {
|
1639 |
+
float: none;
|
1640 |
+
width: 444px;
|
1641 |
+
margin-left: 0;
|
1642 |
+
}
|
1643 |
+
|
1644 |
+
.bootstrap-wpadmin table .span7 {
|
1645 |
+
float: none;
|
1646 |
+
width: 524px;
|
1647 |
+
margin-left: 0;
|
1648 |
+
}
|
1649 |
+
|
1650 |
+
.bootstrap-wpadmin table .span8 {
|
1651 |
+
float: none;
|
1652 |
+
width: 604px;
|
1653 |
+
margin-left: 0;
|
1654 |
+
}
|
1655 |
+
|
1656 |
+
.bootstrap-wpadmin table .span9 {
|
1657 |
+
float: none;
|
1658 |
+
width: 684px;
|
1659 |
+
margin-left: 0;
|
1660 |
+
}
|
1661 |
+
|
1662 |
+
.bootstrap-wpadmin table .span10 {
|
1663 |
+
float: none;
|
1664 |
+
width: 764px;
|
1665 |
+
margin-left: 0;
|
1666 |
+
}
|
1667 |
+
|
1668 |
+
.bootstrap-wpadmin table .span11 {
|
1669 |
+
float: none;
|
1670 |
+
width: 844px;
|
1671 |
+
margin-left: 0;
|
1672 |
+
}
|
1673 |
+
|
1674 |
+
.bootstrap-wpadmin table .span12 {
|
1675 |
+
float: none;
|
1676 |
+
width: 924px;
|
1677 |
+
margin-left: 0;
|
1678 |
+
}
|
1679 |
+
|
1680 |
+
.bootstrap-wpadmin table .span13 {
|
1681 |
+
float: none;
|
1682 |
+
width: 1004px;
|
1683 |
+
margin-left: 0;
|
1684 |
+
}
|
1685 |
+
|
1686 |
+
.bootstrap-wpadmin table .span14 {
|
1687 |
+
float: none;
|
1688 |
+
width: 1084px;
|
1689 |
+
margin-left: 0;
|
1690 |
+
}
|
1691 |
+
|
1692 |
+
.bootstrap-wpadmin table .span15 {
|
1693 |
+
float: none;
|
1694 |
+
width: 1164px;
|
1695 |
+
margin-left: 0;
|
1696 |
+
}
|
1697 |
+
|
1698 |
+
.bootstrap-wpadmin table .span16 {
|
1699 |
+
float: none;
|
1700 |
+
width: 1244px;
|
1701 |
+
margin-left: 0;
|
1702 |
+
}
|
1703 |
+
|
1704 |
+
.bootstrap-wpadmin table .span17 {
|
1705 |
+
float: none;
|
1706 |
+
width: 1324px;
|
1707 |
+
margin-left: 0;
|
1708 |
+
}
|
1709 |
+
|
1710 |
+
.bootstrap-wpadmin table .span18 {
|
1711 |
+
float: none;
|
1712 |
+
width: 1404px;
|
1713 |
+
margin-left: 0;
|
1714 |
+
}
|
1715 |
+
|
1716 |
+
.bootstrap-wpadmin table .span19 {
|
1717 |
+
float: none;
|
1718 |
+
width: 1484px;
|
1719 |
+
margin-left: 0;
|
1720 |
+
}
|
1721 |
+
|
1722 |
+
.bootstrap-wpadmin table .span20 {
|
1723 |
+
float: none;
|
1724 |
+
width: 1564px;
|
1725 |
+
margin-left: 0;
|
1726 |
+
}
|
1727 |
+
|
1728 |
+
.bootstrap-wpadmin table .span21 {
|
1729 |
+
float: none;
|
1730 |
+
width: 1644px;
|
1731 |
+
margin-left: 0;
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
.bootstrap-wpadmin table .span22 {
|
1735 |
+
float: none;
|
1736 |
+
width: 1724px;
|
1737 |
+
margin-left: 0;
|
1738 |
+
}
|
1739 |
+
|
1740 |
+
.bootstrap-wpadmin table .span23 {
|
1741 |
+
float: none;
|
1742 |
+
width: 1804px;
|
1743 |
+
margin-left: 0;
|
1744 |
+
}
|
1745 |
+
|
1746 |
+
.bootstrap-wpadmin table .span24 {
|
1747 |
+
float: none;
|
1748 |
+
width: 1884px;
|
1749 |
+
margin-left: 0;
|
1750 |
+
}
|
1751 |
+
|
1752 |
+
.bootstrap-wpadmin [class^="icon-"],
|
1753 |
+
.bootstrap-wpadmin [class*=" icon-"] {
|
1754 |
+
display: inline-block;
|
1755 |
+
width: 14px;
|
1756 |
+
height: 14px;
|
1757 |
+
*margin-right: .3em;
|
1758 |
+
line-height: 14px;
|
1759 |
+
vertical-align: text-top;
|
1760 |
+
background-image: url("../img/glyphicons-halflings.png");
|
1761 |
+
background-position: 14px 14px;
|
1762 |
+
background-repeat: no-repeat;
|
1763 |
+
}
|
1764 |
+
|
1765 |
+
.bootstrap-wpadmin [class^="icon-"]:last-child,
|
1766 |
+
.bootstrap-wpadmin [class*=" icon-"]:last-child {
|
1767 |
+
*margin-left: 0;
|
1768 |
+
}
|
1769 |
+
|
1770 |
+
.bootstrap-wpadmin .icon-white {
|
1771 |
+
background-image: url("../img/glyphicons-halflings-white.png");
|
1772 |
+
}
|
1773 |
+
|
1774 |
+
.bootstrap-wpadmin .icon-glass {
|
1775 |
+
background-position: 0 0;
|
1776 |
+
}
|
1777 |
+
|
1778 |
+
.bootstrap-wpadmin .icon-music {
|
1779 |
+
background-position: -24px 0;
|
1780 |
+
}
|
1781 |
+
|
1782 |
+
.bootstrap-wpadmin .icon-search {
|
1783 |
+
background-position: -48px 0;
|
1784 |
+
}
|
1785 |
+
|
1786 |
+
.bootstrap-wpadmin .icon-envelope {
|
1787 |
+
background-position: -72px 0;
|
1788 |
+
}
|
1789 |
+
|
1790 |
+
.bootstrap-wpadmin .icon-heart {
|
1791 |
+
background-position: -96px 0;
|
1792 |
+
}
|
1793 |
+
|
1794 |
+
.bootstrap-wpadmin .icon-star {
|
1795 |
+
background-position: -120px 0;
|
1796 |
+
}
|
1797 |
+
|
1798 |
+
.bootstrap-wpadmin .icon-star-empty {
|
1799 |
+
background-position: -144px 0;
|
1800 |
+
}
|
1801 |
+
|
1802 |
+
.bootstrap-wpadmin .icon-user {
|
1803 |
+
background-position: -168px 0;
|
1804 |
+
}
|
1805 |
+
|
1806 |
+
.bootstrap-wpadmin .icon-film {
|
1807 |
+
background-position: -192px 0;
|
1808 |
+
}
|
1809 |
+
|
1810 |
+
.bootstrap-wpadmin .icon-th-large {
|
1811 |
+
background-position: -216px 0;
|
1812 |
+
}
|
1813 |
+
|
1814 |
+
.bootstrap-wpadmin .icon-th {
|
1815 |
+
background-position: -240px 0;
|
1816 |
+
}
|
1817 |
+
|
1818 |
+
.bootstrap-wpadmin .icon-th-list {
|
1819 |
+
background-position: -264px 0;
|
1820 |
+
}
|
1821 |
+
|
1822 |
+
.bootstrap-wpadmin .icon-ok {
|
1823 |
+
background-position: -288px 0;
|
1824 |
+
}
|
1825 |
+
|
1826 |
+
.bootstrap-wpadmin .icon-remove {
|
1827 |
+
background-position: -312px 0;
|
1828 |
+
}
|
1829 |
+
|
1830 |
+
.bootstrap-wpadmin .icon-zoom-in {
|
1831 |
+
background-position: -336px 0;
|
1832 |
+
}
|
1833 |
+
|
1834 |
+
.bootstrap-wpadmin .icon-zoom-out {
|
1835 |
+
background-position: -360px 0;
|
1836 |
+
}
|
1837 |
+
|
1838 |
+
.bootstrap-wpadmin .icon-off {
|
1839 |
+
background-position: -384px 0;
|
1840 |
+
}
|
1841 |
+
|
1842 |
+
.bootstrap-wpadmin .icon-signal {
|
1843 |
+
background-position: -408px 0;
|
1844 |
+
}
|
1845 |
+
|
1846 |
+
.bootstrap-wpadmin .icon-cog {
|
1847 |
+
background-position: -432px 0;
|
1848 |
+
}
|
1849 |
+
|
1850 |
+
.bootstrap-wpadmin .icon-trash {
|
1851 |
+
background-position: -456px 0;
|
1852 |
+
}
|
1853 |
+
|
1854 |
+
.bootstrap-wpadmin .icon-home {
|
1855 |
+
background-position: 0 -24px;
|
1856 |
+
}
|
1857 |
+
|
1858 |
+
.bootstrap-wpadmin .icon-file {
|
1859 |
+
background-position: -24px -24px;
|
1860 |
+
}
|
1861 |
+
|
1862 |
+
.bootstrap-wpadmin .icon-time {
|
1863 |
+
background-position: -48px -24px;
|
1864 |
+
}
|
1865 |
+
|
1866 |
+
.bootstrap-wpadmin .icon-road {
|
1867 |
+
background-position: -72px -24px;
|
1868 |
+
}
|
1869 |
+
|
1870 |
+
.bootstrap-wpadmin .icon-download-alt {
|
1871 |
+
background-position: -96px -24px;
|
1872 |
+
}
|
1873 |
+
|
1874 |
+
.bootstrap-wpadmin .icon-download {
|
1875 |
+
background-position: -120px -24px;
|
1876 |
+
}
|
1877 |
+
|
1878 |
+
.bootstrap-wpadmin .icon-upload {
|
1879 |
+
background-position: -144px -24px;
|
1880 |
+
}
|
1881 |
+
|
1882 |
+
.bootstrap-wpadmin .icon-inbox {
|
1883 |
+
background-position: -168px -24px;
|
1884 |
+
}
|
1885 |
+
|
1886 |
+
.bootstrap-wpadmin .icon-play-circle {
|
1887 |
+
background-position: -192px -24px;
|
1888 |
+
}
|
1889 |
+
|
1890 |
+
.bootstrap-wpadmin .icon-repeat {
|
1891 |
+
background-position: -216px -24px;
|
1892 |
+
}
|
1893 |
+
|
1894 |
+
.bootstrap-wpadmin .icon-refresh {
|
1895 |
+
background-position: -240px -24px;
|
1896 |
+
}
|
1897 |
+
|
1898 |
+
.bootstrap-wpadmin .icon-list-alt {
|
1899 |
+
background-position: -264px -24px;
|
1900 |
+
}
|
1901 |
+
|
1902 |
+
.bootstrap-wpadmin .icon-lock {
|
1903 |
+
background-position: -287px -24px;
|
1904 |
+
}
|
1905 |
+
|
1906 |
+
.bootstrap-wpadmin .icon-flag {
|
1907 |
+
background-position: -312px -24px;
|
1908 |
+
}
|
1909 |
+
|
1910 |
+
.bootstrap-wpadmin .icon-headphones {
|
1911 |
+
background-position: -336px -24px;
|
1912 |
+
}
|
1913 |
+
|
1914 |
+
.bootstrap-wpadmin .icon-volume-off {
|
1915 |
+
background-position: -360px -24px;
|
1916 |
+
}
|
1917 |
+
|
1918 |
+
.bootstrap-wpadmin .icon-volume-down {
|
1919 |
+
background-position: -384px -24px;
|
1920 |
+
}
|
1921 |
+
|
1922 |
+
.bootstrap-wpadmin .icon-volume-up {
|
1923 |
+
background-position: -408px -24px;
|
1924 |
+
}
|
1925 |
+
|
1926 |
+
.bootstrap-wpadmin .icon-qrcode {
|
1927 |
+
background-position: -432px -24px;
|
1928 |
+
}
|
1929 |
+
|
1930 |
+
.bootstrap-wpadmin .icon-barcode {
|
1931 |
+
background-position: -456px -24px;
|
1932 |
+
}
|
1933 |
+
|
1934 |
+
.bootstrap-wpadmin .icon-tag {
|
1935 |
+
background-position: 0 -48px;
|
1936 |
+
}
|
1937 |
+
|
1938 |
+
.bootstrap-wpadmin .icon-tags {
|
1939 |
+
background-position: -25px -48px;
|
1940 |
+
}
|
1941 |
+
|
1942 |
+
.bootstrap-wpadmin .icon-book {
|
1943 |
+
background-position: -48px -48px;
|
1944 |
+
}
|
1945 |
+
|
1946 |
+
.bootstrap-wpadmin .icon-bookmark {
|
1947 |
+
background-position: -72px -48px;
|
1948 |
+
}
|
1949 |
+
|
1950 |
+
.bootstrap-wpadmin .icon-print {
|
1951 |
+
background-position: -96px -48px;
|
1952 |
+
}
|
1953 |
+
|
1954 |
+
.bootstrap-wpadmin .icon-camera {
|
1955 |
+
background-position: -120px -48px;
|
1956 |
+
}
|
1957 |
+
|
1958 |
+
.bootstrap-wpadmin .icon-font {
|
1959 |
+
background-position: -144px -48px;
|
1960 |
+
}
|
1961 |
+
|
1962 |
+
.bootstrap-wpadmin .icon-bold {
|
1963 |
+
background-position: -167px -48px;
|
1964 |
+
}
|
1965 |
+
|
1966 |
+
.bootstrap-wpadmin .icon-italic {
|
1967 |
+
background-position: -192px -48px;
|
1968 |
+
}
|
1969 |
+
|
1970 |
+
.bootstrap-wpadmin .icon-text-height {
|
1971 |
+
background-position: -216px -48px;
|
1972 |
+
}
|
1973 |
+
|
1974 |
+
.bootstrap-wpadmin .icon-text-width {
|
1975 |
+
background-position: -240px -48px;
|
1976 |
+
}
|
1977 |
+
|
1978 |
+
.bootstrap-wpadmin .icon-align-left {
|
1979 |
+
background-position: -264px -48px;
|
1980 |
+
}
|
1981 |
+
|
1982 |
+
.bootstrap-wpadmin .icon-align-center {
|
1983 |
+
background-position: -288px -48px;
|
1984 |
+
}
|
1985 |
+
|
1986 |
+
.bootstrap-wpadmin .icon-align-right {
|
1987 |
+
background-position: -312px -48px;
|
1988 |
+
}
|
1989 |
+
|
1990 |
+
.bootstrap-wpadmin .icon-align-justify {
|
1991 |
+
background-position: -336px -48px;
|
1992 |
+
}
|
1993 |
+
|
1994 |
+
.bootstrap-wpadmin .icon-list {
|
1995 |
+
background-position: -360px -48px;
|
1996 |
+
}
|
1997 |
+
|
1998 |
+
.bootstrap-wpadmin .icon-indent-left {
|
1999 |
+
background-position: -384px -48px;
|
2000 |
+
}
|
2001 |
+
|
2002 |
+
.bootstrap-wpadmin .icon-indent-right {
|
2003 |
+
background-position: -408px -48px;
|
2004 |
+
}
|
2005 |
+
|
2006 |
+
.bootstrap-wpadmin .icon-facetime-video {
|
2007 |
+
background-position: -432px -48px;
|
2008 |
+
}
|
2009 |
+
|
2010 |
+
.bootstrap-wpadmin .icon-picture {
|
2011 |
+
background-position: -456px -48px;
|
2012 |
+
}
|
2013 |
+
|
2014 |
+
.bootstrap-wpadmin .icon-pencil {
|
2015 |
+
background-position: 0 -72px;
|
2016 |
+
}
|
2017 |
+
|
2018 |
+
.bootstrap-wpadmin .icon-map-marker {
|
2019 |
+
background-position: -24px -72px;
|
2020 |
+
}
|
2021 |
+
|
2022 |
+
.bootstrap-wpadmin .icon-adjust {
|
2023 |
+
background-position: -48px -72px;
|
2024 |
+
}
|
2025 |
+
|
2026 |
+
.bootstrap-wpadmin .icon-tint {
|
2027 |
+
background-position: -72px -72px;
|
2028 |
+
}
|
2029 |
+
|
2030 |
+
.bootstrap-wpadmin .icon-edit {
|
2031 |
+
background-position: -96px -72px;
|
2032 |
+
}
|
2033 |
+
|
2034 |
+
.bootstrap-wpadmin .icon-share {
|
2035 |
+
background-position: -120px -72px;
|
2036 |
+
}
|
2037 |
+
|
2038 |
+
.bootstrap-wpadmin .icon-check {
|
2039 |
+
background-position: -144px -72px;
|
2040 |
+
}
|
2041 |
+
|
2042 |
+
.bootstrap-wpadmin .icon-move {
|
2043 |
+
background-position: -168px -72px;
|
2044 |
+
}
|
2045 |
+
|
2046 |
+
.bootstrap-wpadmin .icon-step-backward {
|
2047 |
+
background-position: -192px -72px;
|
2048 |
+
}
|
2049 |
+
|
2050 |
+
.bootstrap-wpadmin .icon-fast-backward {
|
2051 |
+
background-position: -216px -72px;
|
2052 |
+
}
|
2053 |
+
|
2054 |
+
.bootstrap-wpadmin .icon-backward {
|
2055 |
+
background-position: -240px -72px;
|
2056 |
+
}
|
2057 |
+
|
2058 |
+
.bootstrap-wpadmin .icon-play {
|
2059 |
+
background-position: -264px -72px;
|
2060 |
+
}
|
2061 |
+
|
2062 |
+
.bootstrap-wpadmin .icon-pause {
|
2063 |
+
background-position: -288px -72px;
|
2064 |
+
}
|
2065 |
+
|
2066 |
+
.bootstrap-wpadmin .icon-stop {
|
2067 |
+
background-position: -312px -72px;
|
2068 |
+
}
|
2069 |
+
|
2070 |
+
.bootstrap-wpadmin .icon-forward {
|
2071 |
+
background-position: -336px -72px;
|
2072 |
+
}
|
2073 |
+
|
2074 |
+
.bootstrap-wpadmin .icon-fast-forward {
|
2075 |
+
background-position: -360px -72px;
|
2076 |
+
}
|
2077 |
+
|
2078 |
+
.bootstrap-wpadmin .icon-step-forward {
|
2079 |
+
background-position: -384px -72px;
|
2080 |
+
}
|
2081 |
+
|
2082 |
+
.bootstrap-wpadmin .icon-eject {
|
2083 |
+
background-position: -408px -72px;
|
2084 |
+
}
|
2085 |
+
|
2086 |
+
.bootstrap-wpadmin .icon-chevron-left {
|
2087 |
+
background-position: -432px -72px;
|
2088 |
+
}
|
2089 |
+
|
2090 |
+
.bootstrap-wpadmin .icon-chevron-right {
|
2091 |
+
background-position: -456px -72px;
|
2092 |
+
}
|
2093 |
+
|
2094 |
+
.bootstrap-wpadmin .icon-plus-sign {
|
2095 |
+
background-position: 0 -96px;
|
2096 |
+
}
|
2097 |
+
|
2098 |
+
.bootstrap-wpadmin .icon-minus-sign {
|
2099 |
+
background-position: -24px -96px;
|
2100 |
+
}
|
2101 |
+
|
2102 |
+
.bootstrap-wpadmin .icon-remove-sign {
|
2103 |
+
background-position: -48px -96px;
|
2104 |
+
}
|
2105 |
+
|
2106 |
+
.bootstrap-wpadmin .icon-ok-sign {
|
2107 |
+
background-position: -72px -96px;
|
2108 |
+
}
|
2109 |
+
|
2110 |
+
.bootstrap-wpadmin .icon-question-sign {
|
2111 |
+
background-position: -96px -96px;
|
2112 |
+
}
|
2113 |
+
|
2114 |
+
.bootstrap-wpadmin .icon-info-sign {
|
2115 |
+
background-position: -120px -96px;
|
2116 |
+
}
|
2117 |
+
|
2118 |
+
.bootstrap-wpadmin .icon-screenshot {
|
2119 |
+
background-position: -144px -96px;
|
2120 |
+
}
|
2121 |
+
|
2122 |
+
.bootstrap-wpadmin .icon-remove-circle {
|
2123 |
+
background-position: -168px -96px;
|
2124 |
+
}
|
2125 |
+
|
2126 |
+
.bootstrap-wpadmin .icon-ok-circle {
|
2127 |
+
background-position: -192px -96px;
|
2128 |
+
}
|
2129 |
+
|
2130 |
+
.bootstrap-wpadmin .icon-ban-circle {
|
2131 |
+
background-position: -216px -96px;
|
2132 |
+
}
|
2133 |
+
|
2134 |
+
.bootstrap-wpadmin .icon-arrow-left {
|
2135 |
+
background-position: -240px -96px;
|
2136 |
+
}
|
2137 |
+
|
2138 |
+
.bootstrap-wpadmin .icon-arrow-right {
|
2139 |
+
background-position: -264px -96px;
|
2140 |
+
}
|
2141 |
+
|
2142 |
+
.bootstrap-wpadmin .icon-arrow-up {
|
2143 |
+
background-position: -289px -96px;
|
2144 |
+
}
|
2145 |
+
|
2146 |
+
.bootstrap-wpadmin .icon-arrow-down {
|
2147 |
+
background-position: -312px -96px;
|
2148 |
+
}
|
2149 |
+
|
2150 |
+
.bootstrap-wpadmin .icon-share-alt {
|
2151 |
+
background-position: -336px -96px;
|
2152 |
+
}
|
2153 |
+
|
2154 |
+
.bootstrap-wpadmin .icon-resize-full {
|
2155 |
+
background-position: -360px -96px;
|
2156 |
+
}
|
2157 |
+
|
2158 |
+
.bootstrap-wpadmin .icon-resize-small {
|
2159 |
+
background-position: -384px -96px;
|
2160 |
+
}
|
2161 |
+
|
2162 |
+
.bootstrap-wpadmin .icon-plus {
|
2163 |
+
background-position: -408px -96px;
|
2164 |
+
}
|
2165 |
+
|
2166 |
+
.bootstrap-wpadmin .icon-minus {
|
2167 |
+
background-position: -433px -96px;
|
2168 |
+
}
|
2169 |
+
|
2170 |
+
.bootstrap-wpadmin .icon-asterisk {
|
2171 |
+
background-position: -456px -96px;
|
2172 |
+
}
|
2173 |
+
|
2174 |
+
.bootstrap-wpadmin .icon-exclamation-sign {
|
2175 |
+
background-position: 0 -120px;
|
2176 |
+
}
|
2177 |
+
|
2178 |
+
.bootstrap-wpadmin .icon-gift {
|
2179 |
+
background-position: -24px -120px;
|
2180 |
+
}
|
2181 |
+
|
2182 |
+
.bootstrap-wpadmin .icon-leaf {
|
2183 |
+
background-position: -48px -120px;
|
2184 |
+
}
|
2185 |
+
|
2186 |
+
.bootstrap-wpadmin .icon-fire {
|
2187 |
+
background-position: -72px -120px;
|
2188 |
+
}
|
2189 |
+
|
2190 |
+
.bootstrap-wpadmin .icon-eye-open {
|
2191 |
+
background-position: -96px -120px;
|
2192 |
+
}
|
2193 |
+
|
2194 |
+
.bootstrap-wpadmin .icon-eye-close {
|
2195 |
+
background-position: -120px -120px;
|
2196 |
+
}
|
2197 |
+
|
2198 |
+
.bootstrap-wpadmin .icon-warning-sign {
|
2199 |
+
background-position: -144px -120px;
|
2200 |
+
}
|
2201 |
+
|
2202 |
+
.bootstrap-wpadmin .icon-plane {
|
2203 |
+
background-position: -168px -120px;
|
2204 |
+
}
|
2205 |
+
|
2206 |
+
.bootstrap-wpadmin .icon-calendar {
|
2207 |
+
background-position: -192px -120px;
|
2208 |
+
}
|
2209 |
+
|
2210 |
+
.bootstrap-wpadmin .icon-random {
|
2211 |
+
background-position: -216px -120px;
|
2212 |
+
}
|
2213 |
+
|
2214 |
+
.bootstrap-wpadmin .icon-comment {
|
2215 |
+
background-position: -240px -120px;
|
2216 |
+
}
|
2217 |
+
|
2218 |
+
.bootstrap-wpadmin .icon-magnet {
|
2219 |
+
background-position: -264px -120px;
|
2220 |
+
}
|
2221 |
+
|
2222 |
+
.bootstrap-wpadmin .icon-chevron-up {
|
2223 |
+
background-position: -288px -120px;
|
2224 |
+
}
|
2225 |
+
|
2226 |
+
.bootstrap-wpadmin .icon-chevron-down {
|
2227 |
+
background-position: -313px -119px;
|
2228 |
+
}
|
2229 |
+
|
2230 |
+
.bootstrap-wpadmin .icon-retweet {
|
2231 |
+
background-position: -336px -120px;
|
2232 |
+
}
|
2233 |
+
|
2234 |
+
.bootstrap-wpadmin .icon-shopping-cart {
|
2235 |
+
background-position: -360px -120px;
|
2236 |
+
}
|
2237 |
+
|
2238 |
+
.bootstrap-wpadmin .icon-folder-close {
|
2239 |
+
background-position: -384px -120px;
|
2240 |
+
}
|
2241 |
+
|
2242 |
+
.bootstrap-wpadmin .icon-folder-open {
|
2243 |
+
background-position: -408px -120px;
|
2244 |
+
}
|
2245 |
+
|
2246 |
+
.bootstrap-wpadmin .icon-resize-vertical {
|
2247 |
+
background-position: -432px -119px;
|
2248 |
+
}
|
2249 |
+
|
2250 |
+
.bootstrap-wpadmin .icon-resize-horizontal {
|
2251 |
+
background-position: -456px -118px;
|
2252 |
+
}
|
2253 |
+
|
2254 |
+
.bootstrap-wpadmin .icon-hdd {
|
2255 |
+
background-position: 0 -144px;
|
2256 |
+
}
|
2257 |
+
|
2258 |
+
.bootstrap-wpadmin .icon-bullhorn {
|
2259 |
+
background-position: -24px -144px;
|
2260 |
+
}
|
2261 |
+
|
2262 |
+
.bootstrap-wpadmin .icon-bell {
|
2263 |
+
background-position: -48px -144px;
|
2264 |
+
}
|
2265 |
+
|
2266 |
+
.bootstrap-wpadmin .icon-certificate {
|
2267 |
+
background-position: -72px -144px;
|
2268 |
+
}
|
2269 |
+
|
2270 |
+
.bootstrap-wpadmin .icon-thumbs-up {
|
2271 |
+
background-position: -96px -144px;
|
2272 |
+
}
|
2273 |
+
|
2274 |
+
.bootstrap-wpadmin .icon-thumbs-down {
|
2275 |
+
background-position: -120px -144px;
|
2276 |
+
}
|
2277 |
+
|
2278 |
+
.bootstrap-wpadmin .icon-hand-right {
|
2279 |
+
background-position: -144px -144px;
|
2280 |
+
}
|
2281 |
+
|
2282 |
+
.bootstrap-wpadmin .icon-hand-left {
|
2283 |
+
background-position: -168px -144px;
|
2284 |
+
}
|
2285 |
+
|
2286 |
+
.bootstrap-wpadmin .icon-hand-up {
|
2287 |
+
background-position: -192px -144px;
|
2288 |
+
}
|
2289 |
+
|
2290 |
+
.bootstrap-wpadmin .icon-hand-down {
|
2291 |
+
background-position: -216px -144px;
|
2292 |
+
}
|
2293 |
+
|
2294 |
+
.bootstrap-wpadmin .icon-circle-arrow-right {
|
2295 |
+
background-position: -240px -144px;
|
2296 |
+
}
|
2297 |
+
|
2298 |
+
.bootstrap-wpadmin .icon-circle-arrow-left {
|
2299 |
+
background-position: -264px -144px;
|
2300 |
+
}
|
2301 |
+
|
2302 |
+
.bootstrap-wpadmin .icon-circle-arrow-up {
|
2303 |
+
background-position: -288px -144px;
|
2304 |
+
}
|
2305 |
+
|
2306 |
+
.bootstrap-wpadmin .icon-circle-arrow-down {
|
2307 |
+
background-position: -312px -144px;
|
2308 |
+
}
|
2309 |
+
|
2310 |
+
.bootstrap-wpadmin .icon-globe {
|
2311 |
+
background-position: -336px -144px;
|
2312 |
+
}
|
2313 |
+
|
2314 |
+
.bootstrap-wpadmin .icon-wrench {
|
2315 |
+
background-position: -360px -144px;
|
2316 |
+
}
|
2317 |
+
|
2318 |
+
.bootstrap-wpadmin .icon-tasks {
|
2319 |
+
background-position: -384px -144px;
|
2320 |
+
}
|
2321 |
+
|
2322 |
+
.bootstrap-wpadmin .icon-filter {
|
2323 |
+
background-position: -408px -144px;
|
2324 |
+
}
|
2325 |
+
|
2326 |
+
.bootstrap-wpadmin .icon-briefcase {
|
2327 |
+
background-position: -432px -144px;
|
2328 |
+
}
|
2329 |
+
|
2330 |
+
.bootstrap-wpadmin .icon-fullscreen {
|
2331 |
+
background-position: -456px -144px;
|
2332 |
+
}
|
2333 |
+
|
2334 |
+
.bootstrap-wpadmin .dropup,
|
2335 |
+
.bootstrap-wpadmin .dropdown {
|
2336 |
+
position: relative;
|
2337 |
+
}
|
2338 |
+
|
2339 |
+
.bootstrap-wpadmin .dropdown-toggle {
|
2340 |
+
*margin-bottom: -3px;
|
2341 |
+
}
|
2342 |
+
|
2343 |
+
.bootstrap-wpadmin .dropdown-toggle:active,
|
2344 |
+
.bootstrap-wpadmin .open .dropdown-toggle {
|
2345 |
+
outline: 0;
|
2346 |
+
}
|
2347 |
+
|
2348 |
+
.bootstrap-wpadmin .caret {
|
2349 |
+
display: inline-block;
|
2350 |
+
width: 0;
|
2351 |
+
height: 0;
|
2352 |
+
vertical-align: top;
|
2353 |
+
border-top: 4px solid #000000;
|
2354 |
+
border-right: 4px solid transparent;
|
2355 |
+
border-left: 4px solid transparent;
|
2356 |
+
content: "";
|
2357 |
+
opacity: 0.3;
|
2358 |
+
filter: alpha(opacity=30);
|
2359 |
+
}
|
2360 |
+
|
2361 |
+
.bootstrap-wpadmin .dropdown .caret {
|
2362 |
+
margin-top: 8px;
|
2363 |
+
margin-left: 2px;
|
2364 |
+
}
|
2365 |
+
|
2366 |
+
.bootstrap-wpadmin .dropdown:hover .caret,
|
2367 |
+
.bootstrap-wpadmin .open .caret {
|
2368 |
+
opacity: 1;
|
2369 |
+
filter: alpha(opacity=100);
|
2370 |
+
}
|
2371 |
+
|
2372 |
+
.bootstrap-wpadmin .dropdown-menu {
|
2373 |
+
position: absolute;
|
2374 |
+
top: 100%;
|
2375 |
+
left: 0;
|
2376 |
+
z-index: 1000;
|
2377 |
+
display: none;
|
2378 |
+
float: left;
|
2379 |
+
min-width: 160px;
|
2380 |
+
padding: 4px 0;
|
2381 |
+
margin: 1px 0 0;
|
2382 |
+
list-style: none;
|
2383 |
+
background-color: #ffffff;
|
2384 |
+
border: 1px solid #ccc;
|
2385 |
+
border: 1px solid rgba(0, 0, 0, 0.2);
|
2386 |
+
*border-right-width: 2px;
|
2387 |
+
*border-bottom-width: 2px;
|
2388 |
+
-webkit-border-radius: 5px;
|
2389 |
+
-moz-border-radius: 5px;
|
2390 |
+
border-radius: 5px;
|
2391 |
+
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
2392 |
+
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
2393 |
+
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
|
2394 |
+
-webkit-background-clip: padding-box;
|
2395 |
+
-moz-background-clip: padding;
|
2396 |
+
background-clip: padding-box;
|
2397 |
+
}
|
2398 |
+
|
2399 |
+
.bootstrap-wpadmin .dropdown-menu.pull-right {
|
2400 |
+
right: 0;
|
2401 |
+
left: auto;
|
2402 |
+
}
|
2403 |
+
|
2404 |
+
.bootstrap-wpadmin .dropdown-menu .divider {
|
2405 |
+
*width: 100%;
|
2406 |
+
height: 1px;
|
2407 |
+
margin: 8px 1px;
|
2408 |
+
*margin: -5px 0 5px;
|
2409 |
+
overflow: hidden;
|
2410 |
+
background-color: #e5e5e5;
|
2411 |
+
border-bottom: 1px solid #ffffff;
|
2412 |
+
}
|
2413 |
+
|
2414 |
+
.bootstrap-wpadmin .dropdown-menu a {
|
2415 |
+
display: block;
|
2416 |
+
padding: 3px 15px;
|
2417 |
+
clear: both;
|
2418 |
+
font-weight: normal;
|
2419 |
+
line-height: 18px;
|
2420 |
+
color: #333333;
|
2421 |
+
white-space: nowrap;
|
2422 |
+
}
|
2423 |
+
|
2424 |
+
.bootstrap-wpadmin .dropdown-menu li > a:hover,
|
2425 |
+
.bootstrap-wpadmin .dropdown-menu .active > a,
|
2426 |
+
.bootstrap-wpadmin .dropdown-menu .active > a:hover {
|
2427 |
+
color: #ffffff;
|
2428 |
+
text-decoration: none;
|
2429 |
+
background-color: #0088cc;
|
2430 |
+
}
|
2431 |
+
|
2432 |
+
.bootstrap-wpadmin .open {
|
2433 |
+
*z-index: 1000;
|
2434 |
+
}
|
2435 |
+
|
2436 |
+
.bootstrap-wpadmin .open .dropdown-menu {
|
2437 |
+
display: block;
|
2438 |
+
}
|
2439 |
+
|
2440 |
+
.bootstrap-wpadmin .pull-right .dropdown-menu {
|
2441 |
+
right: 0;
|
2442 |
+
left: auto;
|
2443 |
+
}
|
2444 |
+
|
2445 |
+
.bootstrap-wpadmin .dropup .caret,
|
2446 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .dropdown .caret {
|
2447 |
+
border-top: 0;
|
2448 |
+
border-bottom: 4px solid #000000;
|
2449 |
+
content: "\2191";
|
2450 |
+
}
|
2451 |
+
|
2452 |
+
.bootstrap-wpadmin .dropup .dropdown-menu,
|
2453 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .dropdown .dropdown-menu {
|
2454 |
+
top: auto;
|
2455 |
+
bottom: 100%;
|
2456 |
+
margin-bottom: 1px;
|
2457 |
+
}
|
2458 |
+
|
2459 |
+
.bootstrap-wpadmin .typeahead {
|
2460 |
+
margin-top: 2px;
|
2461 |
+
-webkit-border-radius: 4px;
|
2462 |
+
-moz-border-radius: 4px;
|
2463 |
+
border-radius: 4px;
|
2464 |
+
}
|
2465 |
+
|
2466 |
+
.bootstrap-wpadmin .well {
|
2467 |
+
min-height: 20px;
|
2468 |
+
padding: 19px;
|
2469 |
+
margin-bottom: 20px;
|
2470 |
+
background-color: #f5f5f5;
|
2471 |
+
border: 1px solid #eee;
|
2472 |
+
border: 1px solid rgba(0, 0, 0, 0.05);
|
2473 |
+
-webkit-border-radius: 4px;
|
2474 |
+
-moz-border-radius: 4px;
|
2475 |
+
border-radius: 4px;
|
2476 |
+
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
2477 |
+
-moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
2478 |
+
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
|
2479 |
+
}
|
2480 |
+
|
2481 |
+
.bootstrap-wpadmin .well blockquote {
|
2482 |
+
border-color: #ddd;
|
2483 |
+
border-color: rgba(0, 0, 0, 0.15);
|
2484 |
+
}
|
2485 |
+
|
2486 |
+
.bootstrap-wpadmin .well-large {
|
2487 |
+
padding: 24px;
|
2488 |
+
-webkit-border-radius: 6px;
|
2489 |
+
-moz-border-radius: 6px;
|
2490 |
+
border-radius: 6px;
|
2491 |
+
}
|
2492 |
+
|
2493 |
+
.bootstrap-wpadmin .well-small {
|
2494 |
+
padding: 9px;
|
2495 |
+
-webkit-border-radius: 3px;
|
2496 |
+
-moz-border-radius: 3px;
|
2497 |
+
border-radius: 3px;
|
2498 |
+
}
|
2499 |
+
|
2500 |
+
.bootstrap-wpadmin .fade {
|
2501 |
+
opacity: 0;
|
2502 |
+
-webkit-transition: opacity 0.15s linear;
|
2503 |
+
-moz-transition: opacity 0.15s linear;
|
2504 |
+
-ms-transition: opacity 0.15s linear;
|
2505 |
+
-o-transition: opacity 0.15s linear;
|
2506 |
+
transition: opacity 0.15s linear;
|
2507 |
+
}
|
2508 |
+
|
2509 |
+
.bootstrap-wpadmin .fade.in {
|
2510 |
+
opacity: 1;
|
2511 |
+
}
|
2512 |
+
|
2513 |
+
.bootstrap-wpadmin .collapse {
|
2514 |
+
position: relative;
|
2515 |
+
height: 0;
|
2516 |
+
overflow: hidden;
|
2517 |
+
-webkit-transition: height 0.35s ease;
|
2518 |
+
-moz-transition: height 0.35s ease;
|
2519 |
+
-ms-transition: height 0.35s ease;
|
2520 |
+
-o-transition: height 0.35s ease;
|
2521 |
+
transition: height 0.35s ease;
|
2522 |
+
}
|
2523 |
+
|
2524 |
+
.bootstrap-wpadmin .collapse.in {
|
2525 |
+
height: auto;
|
2526 |
+
}
|
2527 |
+
|
2528 |
+
.bootstrap-wpadmin .close {
|
2529 |
+
float: right;
|
2530 |
+
font-size: 20px;
|
2531 |
+
font-weight: bold;
|
2532 |
+
line-height: 18px;
|
2533 |
+
color: #000000;
|
2534 |
+
text-shadow: 0 1px 0 #ffffff;
|
2535 |
+
opacity: 0.2;
|
2536 |
+
filter: alpha(opacity=20);
|
2537 |
+
}
|
2538 |
+
|
2539 |
+
.bootstrap-wpadmin .close:hover {
|
2540 |
+
color: #000000;
|
2541 |
+
text-decoration: none;
|
2542 |
+
cursor: pointer;
|
2543 |
+
opacity: 0.4;
|
2544 |
+
filter: alpha(opacity=40);
|
2545 |
+
}
|
2546 |
+
|
2547 |
+
.bootstrap-wpadmin button.close {
|
2548 |
+
padding: 0;
|
2549 |
+
cursor: pointer;
|
2550 |
+
background-color: transparent;
|
2551 |
+
border: 0;
|
2552 |
+
-webkit-appearance: none;
|
2553 |
+
}
|
2554 |
+
|
2555 |
+
.bootstrap-wpadmin .btn {
|
2556 |
+
display: inline-block;
|
2557 |
+
*display: inline;
|
2558 |
+
padding: 4px 10px 4px;
|
2559 |
+
margin-bottom: 0;
|
2560 |
+
*margin-left: .3em;
|
2561 |
+
font-size: 13px;
|
2562 |
+
line-height: 18px;
|
2563 |
+
*line-height: 20px;
|
2564 |
+
color: #333333;
|
2565 |
+
text-align: center;
|
2566 |
+
text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
|
2567 |
+
vertical-align: middle;
|
2568 |
+
cursor: pointer;
|
2569 |
+
background-color: #f5f5f5;
|
2570 |
+
*background-color: #e6e6e6;
|
2571 |
+
background-image: -ms-linear-gradient(top, #ffffff, #e6e6e6);
|
2572 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
|
2573 |
+
background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
|
2574 |
+
background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
|
2575 |
+
background-image: linear-gradient(top, #ffffff, #e6e6e6);
|
2576 |
+
background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
|
2577 |
+
background-repeat: repeat-x;
|
2578 |
+
border: 1px solid #cccccc;
|
2579 |
+
*border: 0;
|
2580 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2581 |
+
border-color: #e6e6e6 #e6e6e6 #bfbfbf;
|
2582 |
+
border-bottom-color: #b3b3b3;
|
2583 |
+
-webkit-border-radius: 4px;
|
2584 |
+
-moz-border-radius: 4px;
|
2585 |
+
border-radius: 4px;
|
2586 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
|
2587 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2588 |
+
*zoom: 1;
|
2589 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
2590 |
+
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
2591 |
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
2592 |
+
}
|
2593 |
+
|
2594 |
+
.bootstrap-wpadmin .btn:hover,
|
2595 |
+
.bootstrap-wpadmin .btn:active,
|
2596 |
+
.bootstrap-wpadmin .btn.active,
|
2597 |
+
.bootstrap-wpadmin .btn.disabled,
|
2598 |
+
.bootstrap-wpadmin .btn[disabled] {
|
2599 |
+
background-color: #e6e6e6;
|
2600 |
+
*background-color: #d9d9d9;
|
2601 |
+
}
|
2602 |
+
|
2603 |
+
.bootstrap-wpadmin .btn:active,
|
2604 |
+
.bootstrap-wpadmin .btn.active {
|
2605 |
+
background-color: #cccccc \9;
|
2606 |
+
}
|
2607 |
+
|
2608 |
+
.bootstrap-wpadmin .btn:first-child {
|
2609 |
+
*margin-left: 0;
|
2610 |
+
}
|
2611 |
+
|
2612 |
+
.bootstrap-wpadmin .btn:hover {
|
2613 |
+
color: #333333;
|
2614 |
+
text-decoration: none;
|
2615 |
+
background-color: #e6e6e6;
|
2616 |
+
*background-color: #d9d9d9;
|
2617 |
+
/* Buttons in IE7 don't get borders, so darken on hover */
|
2618 |
+
|
2619 |
+
background-position: 0 -15px;
|
2620 |
+
-webkit-transition: background-position 0.1s linear;
|
2621 |
+
-moz-transition: background-position 0.1s linear;
|
2622 |
+
-ms-transition: background-position 0.1s linear;
|
2623 |
+
-o-transition: background-position 0.1s linear;
|
2624 |
+
transition: background-position 0.1s linear;
|
2625 |
+
}
|
2626 |
+
|
2627 |
+
.bootstrap-wpadmin .btn:focus {
|
2628 |
+
outline: thin dotted #333;
|
2629 |
+
outline: 5px auto -webkit-focus-ring-color;
|
2630 |
+
outline-offset: -2px;
|
2631 |
+
}
|
2632 |
+
|
2633 |
+
.bootstrap-wpadmin .btn.active,
|
2634 |
+
.bootstrap-wpadmin .btn:active {
|
2635 |
+
background-color: #e6e6e6;
|
2636 |
+
background-color: #d9d9d9 \9;
|
2637 |
+
background-image: none;
|
2638 |
+
outline: 0;
|
2639 |
+
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
2640 |
+
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
2641 |
+
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
2642 |
+
}
|
2643 |
+
|
2644 |
+
.bootstrap-wpadmin .btn.disabled,
|
2645 |
+
.bootstrap-wpadmin .btn[disabled] {
|
2646 |
+
cursor: default;
|
2647 |
+
background-color: #e6e6e6;
|
2648 |
+
background-image: none;
|
2649 |
+
opacity: 0.65;
|
2650 |
+
filter: alpha(opacity=65);
|
2651 |
+
-webkit-box-shadow: none;
|
2652 |
+
-moz-box-shadow: none;
|
2653 |
+
box-shadow: none;
|
2654 |
+
}
|
2655 |
+
|
2656 |
+
.bootstrap-wpadmin .btn-large {
|
2657 |
+
padding: 9px 14px;
|
2658 |
+
font-size: 15px;
|
2659 |
+
line-height: normal;
|
2660 |
+
-webkit-border-radius: 5px;
|
2661 |
+
-moz-border-radius: 5px;
|
2662 |
+
border-radius: 5px;
|
2663 |
+
}
|
2664 |
+
|
2665 |
+
.bootstrap-wpadmin .btn-large [class^="icon-"] {
|
2666 |
+
margin-top: 1px;
|
2667 |
+
}
|
2668 |
+
|
2669 |
+
.bootstrap-wpadmin .btn-small {
|
2670 |
+
padding: 5px 9px;
|
2671 |
+
font-size: 11px;
|
2672 |
+
line-height: 16px;
|
2673 |
+
}
|
2674 |
+
|
2675 |
+
.bootstrap-wpadmin .btn-small [class^="icon-"] {
|
2676 |
+
margin-top: -1px;
|
2677 |
+
}
|
2678 |
+
|
2679 |
+
.bootstrap-wpadmin .btn-mini {
|
2680 |
+
padding: 2px 6px;
|
2681 |
+
font-size: 11px;
|
2682 |
+
line-height: 14px;
|
2683 |
+
}
|
2684 |
+
|
2685 |
+
.bootstrap-wpadmin .btn-primary,
|
2686 |
+
.bootstrap-wpadmin .btn-primary:hover,
|
2687 |
+
.bootstrap-wpadmin .btn-warning,
|
2688 |
+
.bootstrap-wpadmin .btn-warning:hover,
|
2689 |
+
.bootstrap-wpadmin .btn-danger,
|
2690 |
+
.bootstrap-wpadmin .btn-danger:hover,
|
2691 |
+
.bootstrap-wpadmin .btn-success,
|
2692 |
+
.bootstrap-wpadmin .btn-success:hover,
|
2693 |
+
.bootstrap-wpadmin .btn-info,
|
2694 |
+
.bootstrap-wpadmin .btn-info:hover,
|
2695 |
+
.bootstrap-wpadmin .btn-inverse,
|
2696 |
+
.bootstrap-wpadmin .btn-inverse:hover {
|
2697 |
+
color: #ffffff;
|
2698 |
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
2699 |
+
}
|
2700 |
+
|
2701 |
+
.bootstrap-wpadmin .btn-primary.active,
|
2702 |
+
.bootstrap-wpadmin .btn-warning.active,
|
2703 |
+
.bootstrap-wpadmin .btn-danger.active,
|
2704 |
+
.bootstrap-wpadmin .btn-success.active,
|
2705 |
+
.bootstrap-wpadmin .btn-info.active,
|
2706 |
+
.bootstrap-wpadmin .btn-inverse.active {
|
2707 |
+
color: rgba(255, 255, 255, 0.75);
|
2708 |
+
}
|
2709 |
+
|
2710 |
+
.bootstrap-wpadmin .btn {
|
2711 |
+
border-color: #ccc;
|
2712 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2713 |
+
}
|
2714 |
+
|
2715 |
+
.bootstrap-wpadmin .btn-primary {
|
2716 |
+
background-color: #0074cc;
|
2717 |
+
*background-color: #0055cc;
|
2718 |
+
background-image: -ms-linear-gradient(top, #0088cc, #0055cc);
|
2719 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));
|
2720 |
+
background-image: -webkit-linear-gradient(top, #0088cc, #0055cc);
|
2721 |
+
background-image: -o-linear-gradient(top, #0088cc, #0055cc);
|
2722 |
+
background-image: -moz-linear-gradient(top, #0088cc, #0055cc);
|
2723 |
+
background-image: linear-gradient(top, #0088cc, #0055cc);
|
2724 |
+
background-repeat: repeat-x;
|
2725 |
+
border-color: #0055cc #0055cc #003580;
|
2726 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2727 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);
|
2728 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2729 |
+
}
|
2730 |
+
|
2731 |
+
.bootstrap-wpadmin .btn-primary:hover,
|
2732 |
+
.bootstrap-wpadmin .btn-primary:active,
|
2733 |
+
.bootstrap-wpadmin .btn-primary.active,
|
2734 |
+
.bootstrap-wpadmin .btn-primary.disabled,
|
2735 |
+
.bootstrap-wpadmin .btn-primary[disabled] {
|
2736 |
+
background-color: #0055cc;
|
2737 |
+
*background-color: #004ab3;
|
2738 |
+
}
|
2739 |
+
|
2740 |
+
.bootstrap-wpadmin .btn-primary:active,
|
2741 |
+
.bootstrap-wpadmin .btn-primary.active {
|
2742 |
+
background-color: #004099 \9;
|
2743 |
+
}
|
2744 |
+
|
2745 |
+
.bootstrap-wpadmin .btn-warning {
|
2746 |
+
background-color: #faa732;
|
2747 |
+
*background-color: #f89406;
|
2748 |
+
background-image: -ms-linear-gradient(top, #fbb450, #f89406);
|
2749 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
|
2750 |
+
background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
|
2751 |
+
background-image: -o-linear-gradient(top, #fbb450, #f89406);
|
2752 |
+
background-image: -moz-linear-gradient(top, #fbb450, #f89406);
|
2753 |
+
background-image: linear-gradient(top, #fbb450, #f89406);
|
2754 |
+
background-repeat: repeat-x;
|
2755 |
+
border-color: #f89406 #f89406 #ad6704;
|
2756 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2757 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
|
2758 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2759 |
+
}
|
2760 |
+
|
2761 |
+
.bootstrap-wpadmin .btn-warning:hover,
|
2762 |
+
.bootstrap-wpadmin .btn-warning:active,
|
2763 |
+
.bootstrap-wpadmin .btn-warning.active,
|
2764 |
+
.bootstrap-wpadmin .btn-warning.disabled,
|
2765 |
+
.bootstrap-wpadmin .btn-warning[disabled] {
|
2766 |
+
background-color: #f89406;
|
2767 |
+
*background-color: #df8505;
|
2768 |
+
}
|
2769 |
+
|
2770 |
+
.bootstrap-wpadmin .btn-warning:active,
|
2771 |
+
.bootstrap-wpadmin .btn-warning.active {
|
2772 |
+
background-color: #c67605 \9;
|
2773 |
+
}
|
2774 |
+
|
2775 |
+
.bootstrap-wpadmin .btn-danger {
|
2776 |
+
background-color: #da4f49;
|
2777 |
+
*background-color: #bd362f;
|
2778 |
+
background-image: -ms-linear-gradient(top, #ee5f5b, #bd362f);
|
2779 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
|
2780 |
+
background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
|
2781 |
+
background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
|
2782 |
+
background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
|
2783 |
+
background-image: linear-gradient(top, #ee5f5b, #bd362f);
|
2784 |
+
background-repeat: repeat-x;
|
2785 |
+
border-color: #bd362f #bd362f #802420;
|
2786 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2787 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);
|
2788 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2789 |
+
}
|
2790 |
+
|
2791 |
+
.bootstrap-wpadmin .btn-danger:hover,
|
2792 |
+
.bootstrap-wpadmin .btn-danger:active,
|
2793 |
+
.bootstrap-wpadmin .btn-danger.active,
|
2794 |
+
.bootstrap-wpadmin .btn-danger.disabled,
|
2795 |
+
.bootstrap-wpadmin .btn-danger[disabled] {
|
2796 |
+
background-color: #bd362f;
|
2797 |
+
*background-color: #a9302a;
|
2798 |
+
}
|
2799 |
+
|
2800 |
+
.bootstrap-wpadmin .btn-danger:active,
|
2801 |
+
.bootstrap-wpadmin .btn-danger.active {
|
2802 |
+
background-color: #942a25 \9;
|
2803 |
+
}
|
2804 |
+
|
2805 |
+
.bootstrap-wpadmin .btn-success {
|
2806 |
+
background-color: #5bb75b;
|
2807 |
+
*background-color: #51a351;
|
2808 |
+
background-image: -ms-linear-gradient(top, #62c462, #51a351);
|
2809 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
|
2810 |
+
background-image: -webkit-linear-gradient(top, #62c462, #51a351);
|
2811 |
+
background-image: -o-linear-gradient(top, #62c462, #51a351);
|
2812 |
+
background-image: -moz-linear-gradient(top, #62c462, #51a351);
|
2813 |
+
background-image: linear-gradient(top, #62c462, #51a351);
|
2814 |
+
background-repeat: repeat-x;
|
2815 |
+
border-color: #51a351 #51a351 #387038;
|
2816 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2817 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);
|
2818 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2819 |
+
}
|
2820 |
+
|
2821 |
+
.bootstrap-wpadmin .btn-success:hover,
|
2822 |
+
.bootstrap-wpadmin .btn-success:active,
|
2823 |
+
.bootstrap-wpadmin .btn-success.active,
|
2824 |
+
.bootstrap-wpadmin .btn-success.disabled,
|
2825 |
+
.bootstrap-wpadmin .btn-success[disabled] {
|
2826 |
+
background-color: #51a351;
|
2827 |
+
*background-color: #499249;
|
2828 |
+
}
|
2829 |
+
|
2830 |
+
.bootstrap-wpadmin .btn-success:active,
|
2831 |
+
.bootstrap-wpadmin .btn-success.active {
|
2832 |
+
background-color: #408140 \9;
|
2833 |
+
}
|
2834 |
+
|
2835 |
+
.bootstrap-wpadmin .btn-info {
|
2836 |
+
background-color: #49afcd;
|
2837 |
+
*background-color: #2f96b4;
|
2838 |
+
background-image: -ms-linear-gradient(top, #5bc0de, #2f96b4);
|
2839 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
|
2840 |
+
background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
|
2841 |
+
background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
|
2842 |
+
background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
|
2843 |
+
background-image: linear-gradient(top, #5bc0de, #2f96b4);
|
2844 |
+
background-repeat: repeat-x;
|
2845 |
+
border-color: #2f96b4 #2f96b4 #1f6377;
|
2846 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2847 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);
|
2848 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2849 |
+
}
|
2850 |
+
|
2851 |
+
.bootstrap-wpadmin .btn-info:hover,
|
2852 |
+
.bootstrap-wpadmin .btn-info:active,
|
2853 |
+
.bootstrap-wpadmin .btn-info.active,
|
2854 |
+
.bootstrap-wpadmin .btn-info.disabled,
|
2855 |
+
.bootstrap-wpadmin .btn-info[disabled] {
|
2856 |
+
background-color: #2f96b4;
|
2857 |
+
*background-color: #2a85a0;
|
2858 |
+
}
|
2859 |
+
|
2860 |
+
.bootstrap-wpadmin .btn-info:active,
|
2861 |
+
.bootstrap-wpadmin .btn-info.active {
|
2862 |
+
background-color: #24748c \9;
|
2863 |
+
}
|
2864 |
+
|
2865 |
+
.bootstrap-wpadmin .btn-inverse {
|
2866 |
+
background-color: #414141;
|
2867 |
+
*background-color: #222222;
|
2868 |
+
background-image: -ms-linear-gradient(top, #555555, #222222);
|
2869 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));
|
2870 |
+
background-image: -webkit-linear-gradient(top, #555555, #222222);
|
2871 |
+
background-image: -o-linear-gradient(top, #555555, #222222);
|
2872 |
+
background-image: -moz-linear-gradient(top, #555555, #222222);
|
2873 |
+
background-image: linear-gradient(top, #555555, #222222);
|
2874 |
+
background-repeat: repeat-x;
|
2875 |
+
border-color: #222222 #222222 #000000;
|
2876 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
2877 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);
|
2878 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
2879 |
+
}
|
2880 |
+
|
2881 |
+
.bootstrap-wpadmin .btn-inverse:hover,
|
2882 |
+
.bootstrap-wpadmin .btn-inverse:active,
|
2883 |
+
.bootstrap-wpadmin .btn-inverse.active,
|
2884 |
+
.bootstrap-wpadmin .btn-inverse.disabled,
|
2885 |
+
.bootstrap-wpadmin .btn-inverse[disabled] {
|
2886 |
+
background-color: #222222;
|
2887 |
+
*background-color: #151515;
|
2888 |
+
}
|
2889 |
+
|
2890 |
+
.bootstrap-wpadmin .btn-inverse:active,
|
2891 |
+
.bootstrap-wpadmin .btn-inverse.active {
|
2892 |
+
background-color: #080808 \9;
|
2893 |
+
}
|
2894 |
+
|
2895 |
+
.bootstrap-wpadmin button.btn,
|
2896 |
+
.bootstrap-wpadmin input[type="submit"].btn {
|
2897 |
+
*padding-top: 2px;
|
2898 |
+
*padding-bottom: 2px;
|
2899 |
+
}
|
2900 |
+
|
2901 |
+
.bootstrap-wpadmin button.btn::-moz-focus-inner,
|
2902 |
+
.bootstrap-wpadmin input[type="submit"].btn::-moz-focus-inner {
|
2903 |
+
padding: 0;
|
2904 |
+
border: 0;
|
2905 |
+
}
|
2906 |
+
|
2907 |
+
.bootstrap-wpadmin button.btn.btn-large,
|
2908 |
+
.bootstrap-wpadmin input[type="submit"].btn.btn-large {
|
2909 |
+
*padding-top: 7px;
|
2910 |
+
*padding-bottom: 7px;
|
2911 |
+
}
|
2912 |
+
|
2913 |
+
.bootstrap-wpadmin button.btn.btn-small,
|
2914 |
+
.bootstrap-wpadmin input[type="submit"].btn.btn-small {
|
2915 |
+
*padding-top: 3px;
|
2916 |
+
*padding-bottom: 3px;
|
2917 |
+
}
|
2918 |
+
|
2919 |
+
.bootstrap-wpadmin button.btn.btn-mini,
|
2920 |
+
.bootstrap-wpadmin input[type="submit"].btn.btn-mini {
|
2921 |
+
*padding-top: 1px;
|
2922 |
+
*padding-bottom: 1px;
|
2923 |
+
}
|
2924 |
+
|
2925 |
+
.bootstrap-wpadmin .btn-group {
|
2926 |
+
position: relative;
|
2927 |
+
*margin-left: .3em;
|
2928 |
+
*zoom: 1;
|
2929 |
+
}
|
2930 |
+
|
2931 |
+
.bootstrap-wpadmin .btn-group:before,
|
2932 |
+
.bootstrap-wpadmin .btn-group:after {
|
2933 |
+
display: table;
|
2934 |
+
content: "";
|
2935 |
+
}
|
2936 |
+
|
2937 |
+
.bootstrap-wpadmin .btn-group:after {
|
2938 |
+
clear: both;
|
2939 |
+
}
|
2940 |
+
|
2941 |
+
.bootstrap-wpadmin .btn-group:first-child {
|
2942 |
+
*margin-left: 0;
|
2943 |
+
}
|
2944 |
+
|
2945 |
+
.bootstrap-wpadmin .btn-group + .btn-group {
|
2946 |
+
margin-left: 5px;
|
2947 |
+
}
|
2948 |
+
|
2949 |
+
.bootstrap-wpadmin .btn-toolbar {
|
2950 |
+
margin-top: 9px;
|
2951 |
+
margin-bottom: 9px;
|
2952 |
+
}
|
2953 |
+
|
2954 |
+
.bootstrap-wpadmin .btn-toolbar .btn-group {
|
2955 |
+
display: inline-block;
|
2956 |
+
*display: inline;
|
2957 |
+
/* IE7 inline-block hack */
|
2958 |
+
|
2959 |
+
*zoom: 1;
|
2960 |
+
}
|
2961 |
+
|
2962 |
+
.bootstrap-wpadmin .btn-group > .btn {
|
2963 |
+
position: relative;
|
2964 |
+
float: left;
|
2965 |
+
margin-left: -1px;
|
2966 |
+
-webkit-border-radius: 0;
|
2967 |
+
-moz-border-radius: 0;
|
2968 |
+
border-radius: 0;
|
2969 |
+
}
|
2970 |
+
|
2971 |
+
.bootstrap-wpadmin .btn-group > .btn:first-child {
|
2972 |
+
margin-left: 0;
|
2973 |
+
-webkit-border-bottom-left-radius: 4px;
|
2974 |
+
border-bottom-left-radius: 4px;
|
2975 |
+
-webkit-border-top-left-radius: 4px;
|
2976 |
+
border-top-left-radius: 4px;
|
2977 |
+
-moz-border-radius-bottomleft: 4px;
|
2978 |
+
-moz-border-radius-topleft: 4px;
|
2979 |
+
}
|
2980 |
+
|
2981 |
+
.bootstrap-wpadmin .btn-group > .btn:last-child,
|
2982 |
+
.bootstrap-wpadmin .btn-group > .dropdown-toggle {
|
2983 |
+
-webkit-border-top-right-radius: 4px;
|
2984 |
+
border-top-right-radius: 4px;
|
2985 |
+
-webkit-border-bottom-right-radius: 4px;
|
2986 |
+
border-bottom-right-radius: 4px;
|
2987 |
+
-moz-border-radius-topright: 4px;
|
2988 |
+
-moz-border-radius-bottomright: 4px;
|
2989 |
+
}
|
2990 |
+
|
2991 |
+
.bootstrap-wpadmin .btn-group > .btn.large:first-child {
|
2992 |
+
margin-left: 0;
|
2993 |
+
-webkit-border-bottom-left-radius: 6px;
|
2994 |
+
border-bottom-left-radius: 6px;
|
2995 |
+
-webkit-border-top-left-radius: 6px;
|
2996 |
+
border-top-left-radius: 6px;
|
2997 |
+
-moz-border-radius-bottomleft: 6px;
|
2998 |
+
-moz-border-radius-topleft: 6px;
|
2999 |
+
}
|
3000 |
+
|
3001 |
+
.bootstrap-wpadmin .btn-group > .btn.large:last-child,
|
3002 |
+
.bootstrap-wpadmin .btn-group > .large.dropdown-toggle {
|
3003 |
+
-webkit-border-top-right-radius: 6px;
|
3004 |
+
border-top-right-radius: 6px;
|
3005 |
+
-webkit-border-bottom-right-radius: 6px;
|
3006 |
+
border-bottom-right-radius: 6px;
|
3007 |
+
-moz-border-radius-topright: 6px;
|
3008 |
+
-moz-border-radius-bottomright: 6px;
|
3009 |
+
}
|
3010 |
+
|
3011 |
+
.bootstrap-wpadmin .btn-group > .btn:hover,
|
3012 |
+
.bootstrap-wpadmin .btn-group > .btn:focus,
|
3013 |
+
.bootstrap-wpadmin .btn-group > .btn:active,
|
3014 |
+
.bootstrap-wpadmin .btn-group > .btn.active {
|
3015 |
+
z-index: 2;
|
3016 |
+
}
|
3017 |
+
|
3018 |
+
.bootstrap-wpadmin .btn-group .dropdown-toggle:active,
|
3019 |
+
.bootstrap-wpadmin .btn-group.open .dropdown-toggle {
|
3020 |
+
outline: 0;
|
3021 |
+
}
|
3022 |
+
|
3023 |
+
.bootstrap-wpadmin .btn-group > .dropdown-toggle {
|
3024 |
+
*padding-top: 4px;
|
3025 |
+
padding-right: 8px;
|
3026 |
+
*padding-bottom: 4px;
|
3027 |
+
padding-left: 8px;
|
3028 |
+
-webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
3029 |
+
-moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
3030 |
+
box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
|
3031 |
+
}
|
3032 |
+
|
3033 |
+
.bootstrap-wpadmin .btn-group > .btn-mini.dropdown-toggle {
|
3034 |
+
padding-right: 5px;
|
3035 |
+
padding-left: 5px;
|
3036 |
+
}
|
3037 |
+
|
3038 |
+
.bootstrap-wpadmin .btn-group > .btn-small.dropdown-toggle {
|
3039 |
+
*padding-top: 4px;
|
3040 |
+
*padding-bottom: 4px;
|
3041 |
+
}
|
3042 |
+
|
3043 |
+
.bootstrap-wpadmin .btn-group > .btn-large.dropdown-toggle {
|
3044 |
+
padding-right: 12px;
|
3045 |
+
padding-left: 12px;
|
3046 |
+
}
|
3047 |
+
|
3048 |
+
.bootstrap-wpadmin .btn-group.open .dropdown-toggle {
|
3049 |
+
background-image: none;
|
3050 |
+
-webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
3051 |
+
-moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
3052 |
+
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
|
3053 |
+
}
|
3054 |
+
|
3055 |
+
.bootstrap-wpadmin .btn-group.open .btn.dropdown-toggle {
|
3056 |
+
background-color: #e6e6e6;
|
3057 |
+
}
|
3058 |
+
|
3059 |
+
.bootstrap-wpadmin .btn-group.open .btn-primary.dropdown-toggle {
|
3060 |
+
background-color: #0055cc;
|
3061 |
+
}
|
3062 |
+
|
3063 |
+
.bootstrap-wpadmin .btn-group.open .btn-warning.dropdown-toggle {
|
3064 |
+
background-color: #f89406;
|
3065 |
+
}
|
3066 |
+
|
3067 |
+
.bootstrap-wpadmin .btn-group.open .btn-danger.dropdown-toggle {
|
3068 |
+
background-color: #bd362f;
|
3069 |
+
}
|
3070 |
+
|
3071 |
+
.bootstrap-wpadmin .btn-group.open .btn-success.dropdown-toggle {
|
3072 |
+
background-color: #51a351;
|
3073 |
+
}
|
3074 |
+
|
3075 |
+
.bootstrap-wpadmin .btn-group.open .btn-info.dropdown-toggle {
|
3076 |
+
background-color: #2f96b4;
|
3077 |
+
}
|
3078 |
+
|
3079 |
+
.bootstrap-wpadmin .btn-group.open .btn-inverse.dropdown-toggle {
|
3080 |
+
background-color: #222222;
|
3081 |
+
}
|
3082 |
+
|
3083 |
+
.bootstrap-wpadmin .btn .caret {
|
3084 |
+
margin-top: 7px;
|
3085 |
+
margin-left: 0;
|
3086 |
+
}
|
3087 |
+
|
3088 |
+
.bootstrap-wpadmin .btn:hover .caret,
|
3089 |
+
.bootstrap-wpadmin .open.btn-group .caret {
|
3090 |
+
opacity: 1;
|
3091 |
+
filter: alpha(opacity=100);
|
3092 |
+
}
|
3093 |
+
|
3094 |
+
.bootstrap-wpadmin .btn-mini .caret {
|
3095 |
+
margin-top: 5px;
|
3096 |
+
}
|
3097 |
+
|
3098 |
+
.bootstrap-wpadmin .btn-small .caret {
|
3099 |
+
margin-top: 6px;
|
3100 |
+
}
|
3101 |
+
|
3102 |
+
.bootstrap-wpadmin .btn-large .caret {
|
3103 |
+
margin-top: 6px;
|
3104 |
+
border-top-width: 5px;
|
3105 |
+
border-right-width: 5px;
|
3106 |
+
border-left-width: 5px;
|
3107 |
+
}
|
3108 |
+
|
3109 |
+
.bootstrap-wpadmin .dropup .btn-large .caret {
|
3110 |
+
border-top: 0;
|
3111 |
+
border-bottom: 5px solid #000000;
|
3112 |
+
}
|
3113 |
+
|
3114 |
+
.bootstrap-wpadmin .btn-primary .caret,
|
3115 |
+
.bootstrap-wpadmin .btn-warning .caret,
|
3116 |
+
.bootstrap-wpadmin .btn-danger .caret,
|
3117 |
+
.bootstrap-wpadmin .btn-info .caret,
|
3118 |
+
.bootstrap-wpadmin .btn-success .caret,
|
3119 |
+
.bootstrap-wpadmin .btn-inverse .caret {
|
3120 |
+
border-top-color: #ffffff;
|
3121 |
+
border-bottom-color: #ffffff;
|
3122 |
+
opacity: 0.75;
|
3123 |
+
filter: alpha(opacity=75);
|
3124 |
+
}
|
3125 |
+
|
3126 |
+
.bootstrap-wpadmin .alert {
|
3127 |
+
padding: 8px 35px 8px 14px;
|
3128 |
+
margin-bottom: 18px;
|
3129 |
+
color: #c09853;
|
3130 |
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
3131 |
+
background-color: #fcf8e3;
|
3132 |
+
border: 1px solid #fbeed5;
|
3133 |
+
-webkit-border-radius: 4px;
|
3134 |
+
-moz-border-radius: 4px;
|
3135 |
+
border-radius: 4px;
|
3136 |
+
}
|
3137 |
+
|
3138 |
+
.bootstrap-wpadmin .alert-heading {
|
3139 |
+
color: inherit;
|
3140 |
+
}
|
3141 |
+
|
3142 |
+
.bootstrap-wpadmin .alert .close {
|
3143 |
+
position: relative;
|
3144 |
+
top: -2px;
|
3145 |
+
right: -21px;
|
3146 |
+
line-height: 18px;
|
3147 |
+
}
|
3148 |
+
|
3149 |
+
.bootstrap-wpadmin .alert-success {
|
3150 |
+
color: #468847;
|
3151 |
+
background-color: #dff0d8;
|
3152 |
+
border-color: #d6e9c6;
|
3153 |
+
}
|
3154 |
+
|
3155 |
+
.bootstrap-wpadmin .alert-danger,
|
3156 |
+
.bootstrap-wpadmin .alert-error {
|
3157 |
+
color: #b94a48;
|
3158 |
+
background-color: #f2dede;
|
3159 |
+
border-color: #eed3d7;
|
3160 |
+
}
|
3161 |
+
|
3162 |
+
.bootstrap-wpadmin .alert-info {
|
3163 |
+
color: #3a87ad;
|
3164 |
+
background-color: #d9edf7;
|
3165 |
+
border-color: #bce8f1;
|
3166 |
+
}
|
3167 |
+
|
3168 |
+
.bootstrap-wpadmin .alert-block {
|
3169 |
+
padding-top: 14px;
|
3170 |
+
padding-bottom: 14px;
|
3171 |
+
}
|
3172 |
+
|
3173 |
+
.bootstrap-wpadmin .alert-block > p,
|
3174 |
+
.bootstrap-wpadmin .alert-block > ul {
|
3175 |
+
margin-bottom: 0;
|
3176 |
+
}
|
3177 |
+
|
3178 |
+
.bootstrap-wpadmin .alert-block p + p {
|
3179 |
+
margin-top: 5px;
|
3180 |
+
}
|
3181 |
+
|
3182 |
+
.bootstrap-wpadmin .nav {
|
3183 |
+
margin-bottom: 18px;
|
3184 |
+
margin-left: 0;
|
3185 |
+
list-style: none;
|
3186 |
+
}
|
3187 |
+
|
3188 |
+
.bootstrap-wpadmin .nav > li > a {
|
3189 |
+
display: block;
|
3190 |
+
}
|
3191 |
+
|
3192 |
+
.bootstrap-wpadmin .nav > li > a:hover {
|
3193 |
+
text-decoration: none;
|
3194 |
+
background-color: #eeeeee;
|
3195 |
+
}
|
3196 |
+
|
3197 |
+
.bootstrap-wpadmin .nav > .pull-right {
|
3198 |
+
float: right;
|
3199 |
+
}
|
3200 |
+
|
3201 |
+
.bootstrap-wpadmin .nav .nav-header {
|
3202 |
+
display: block;
|
3203 |
+
padding: 3px 15px;
|
3204 |
+
font-size: 11px;
|
3205 |
+
font-weight: bold;
|
3206 |
+
line-height: 18px;
|
3207 |
+
color: #999999;
|
3208 |
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
3209 |
+
text-transform: uppercase;
|
3210 |
+
}
|
3211 |
+
|
3212 |
+
.bootstrap-wpadmin .nav li + .nav-header {
|
3213 |
+
margin-top: 9px;
|
3214 |
+
}
|
3215 |
+
|
3216 |
+
.bootstrap-wpadmin .nav-list {
|
3217 |
+
padding-right: 15px;
|
3218 |
+
padding-left: 15px;
|
3219 |
+
margin-bottom: 0;
|
3220 |
+
}
|
3221 |
+
|
3222 |
+
.bootstrap-wpadmin .nav-list > li > a,
|
3223 |
+
.bootstrap-wpadmin .nav-list .nav-header {
|
3224 |
+
margin-right: -15px;
|
3225 |
+
margin-left: -15px;
|
3226 |
+
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
|
3227 |
+
}
|
3228 |
+
|
3229 |
+
.bootstrap-wpadmin .nav-list > li > a {
|
3230 |
+
padding: 3px 15px;
|
3231 |
+
}
|
3232 |
+
|
3233 |
+
.bootstrap-wpadmin .nav-list > .active > a,
|
3234 |
+
.bootstrap-wpadmin .nav-list > .active > a:hover {
|
3235 |
+
color: #ffffff;
|
3236 |
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
|
3237 |
+
background-color: #0088cc;
|
3238 |
+
}
|
3239 |
+
|
3240 |
+
.bootstrap-wpadmin .nav-list [class^="icon-"] {
|
3241 |
+
margin-right: 2px;
|
3242 |
+
}
|
3243 |
+
|
3244 |
+
.bootstrap-wpadmin .nav-list .divider {
|
3245 |
+
*width: 100%;
|
3246 |
+
height: 1px;
|
3247 |
+
margin: 8px 1px;
|
3248 |
+
*margin: -5px 0 5px;
|
3249 |
+
overflow: hidden;
|
3250 |
+
background-color: #e5e5e5;
|
3251 |
+
border-bottom: 1px solid #ffffff;
|
3252 |
+
}
|
3253 |
+
|
3254 |
+
.bootstrap-wpadmin .nav-tabs,
|
3255 |
+
.bootstrap-wpadmin .nav-pills {
|
3256 |
+
*zoom: 1;
|
3257 |
+
}
|
3258 |
+
|
3259 |
+
.bootstrap-wpadmin .nav-tabs:before,
|
3260 |
+
.bootstrap-wpadmin .nav-pills:before,
|
3261 |
+
.bootstrap-wpadmin .nav-tabs:after,
|
3262 |
+
.bootstrap-wpadmin .nav-pills:after {
|
3263 |
+
display: table;
|
3264 |
+
content: "";
|
3265 |
+
}
|
3266 |
+
|
3267 |
+
.bootstrap-wpadmin .nav-tabs:after,
|
3268 |
+
.bootstrap-wpadmin .nav-pills:after {
|
3269 |
+
clear: both;
|
3270 |
+
}
|
3271 |
+
|
3272 |
+
.bootstrap-wpadmin .nav-tabs > li,
|
3273 |
+
.bootstrap-wpadmin .nav-pills > li {
|
3274 |
+
float: left;
|
3275 |
+
}
|
3276 |
+
|
3277 |
+
.bootstrap-wpadmin .nav-tabs > li > a,
|
3278 |
+
.bootstrap-wpadmin .nav-pills > li > a {
|
3279 |
+
padding-right: 12px;
|
3280 |
+
padding-left: 12px;
|
3281 |
+
margin-right: 2px;
|
3282 |
+
line-height: 14px;
|
3283 |
+
}
|
3284 |
+
|
3285 |
+
.bootstrap-wpadmin .nav-tabs {
|
3286 |
+
border-bottom: 1px solid #ddd;
|
3287 |
+
}
|
3288 |
+
|
3289 |
+
.bootstrap-wpadmin .nav-tabs > li {
|
3290 |
+
margin-bottom: -1px;
|
3291 |
+
}
|
3292 |
+
|
3293 |
+
.bootstrap-wpadmin .nav-tabs > li > a {
|
3294 |
+
padding-top: 8px;
|
3295 |
+
padding-bottom: 8px;
|
3296 |
+
line-height: 18px;
|
3297 |
+
border: 1px solid transparent;
|
3298 |
+
-webkit-border-radius: 4px 4px 0 0;
|
3299 |
+
-moz-border-radius: 4px 4px 0 0;
|
3300 |
+
border-radius: 4px 4px 0 0;
|
3301 |
+
}
|
3302 |
+
|
3303 |
+
.bootstrap-wpadmin .nav-tabs > li > a:hover {
|
3304 |
+
border-color: #eeeeee #eeeeee #dddddd;
|
3305 |
+
}
|
3306 |
+
|
3307 |
+
.bootstrap-wpadmin .nav-tabs > .active > a,
|
3308 |
+
.bootstrap-wpadmin .nav-tabs > .active > a:hover {
|
3309 |
+
color: #555555;
|
3310 |
+
cursor: default;
|
3311 |
+
background-color: #ffffff;
|
3312 |
+
border: 1px solid #ddd;
|
3313 |
+
border-bottom-color: transparent;
|
3314 |
+
}
|
3315 |
+
|
3316 |
+
.bootstrap-wpadmin .nav-pills > li > a {
|
3317 |
+
padding-top: 8px;
|
3318 |
+
padding-bottom: 8px;
|
3319 |
+
margin-top: 2px;
|
3320 |
+
margin-bottom: 2px;
|
3321 |
+
-webkit-border-radius: 5px;
|
3322 |
+
-moz-border-radius: 5px;
|
3323 |
+
border-radius: 5px;
|
3324 |
+
}
|
3325 |
+
|
3326 |
+
.bootstrap-wpadmin .nav-pills > .active > a,
|
3327 |
+
.bootstrap-wpadmin .nav-pills > .active > a:hover {
|
3328 |
+
color: #ffffff;
|
3329 |
+
background-color: #0088cc;
|
3330 |
+
}
|
3331 |
+
|
3332 |
+
.bootstrap-wpadmin .nav-stacked > li {
|
3333 |
+
float: none;
|
3334 |
+
}
|
3335 |
+
|
3336 |
+
.bootstrap-wpadmin .nav-stacked > li > a {
|
3337 |
+
margin-right: 0;
|
3338 |
+
}
|
3339 |
+
|
3340 |
+
.bootstrap-wpadmin .nav-tabs.nav-stacked {
|
3341 |
+
border-bottom: 0;
|
3342 |
+
}
|
3343 |
+
|
3344 |
+
.bootstrap-wpadmin .nav-tabs.nav-stacked > li > a {
|
3345 |
+
border: 1px solid #ddd;
|
3346 |
+
-webkit-border-radius: 0;
|
3347 |
+
-moz-border-radius: 0;
|
3348 |
+
border-radius: 0;
|
3349 |
+
}
|
3350 |
+
|
3351 |
+
.bootstrap-wpadmin .nav-tabs.nav-stacked > li:first-child > a {
|
3352 |
+
-webkit-border-radius: 4px 4px 0 0;
|
3353 |
+
-moz-border-radius: 4px 4px 0 0;
|
3354 |
+
border-radius: 4px 4px 0 0;
|
3355 |
+
}
|
3356 |
+
|
3357 |
+
.bootstrap-wpadmin .nav-tabs.nav-stacked > li:last-child > a {
|
3358 |
+
-webkit-border-radius: 0 0 4px 4px;
|
3359 |
+
-moz-border-radius: 0 0 4px 4px;
|
3360 |
+
border-radius: 0 0 4px 4px;
|
3361 |
+
}
|
3362 |
+
|
3363 |
+
.bootstrap-wpadmin .nav-tabs.nav-stacked > li > a:hover {
|
3364 |
+
z-index: 2;
|
3365 |
+
border-color: #ddd;
|
3366 |
+
}
|
3367 |
+
|
3368 |
+
.bootstrap-wpadmin .nav-pills.nav-stacked > li > a {
|
3369 |
+
margin-bottom: 3px;
|
3370 |
+
}
|
3371 |
+
|
3372 |
+
.bootstrap-wpadmin .nav-pills.nav-stacked > li:last-child > a {
|
3373 |
+
margin-bottom: 1px;
|
3374 |
+
}
|
3375 |
+
|
3376 |
+
.bootstrap-wpadmin .nav-tabs .dropdown-menu {
|
3377 |
+
-webkit-border-radius: 0 0 5px 5px;
|
3378 |
+
-moz-border-radius: 0 0 5px 5px;
|
3379 |
+
border-radius: 0 0 5px 5px;
|
3380 |
+
}
|
3381 |
+
|
3382 |
+
.bootstrap-wpadmin .nav-pills .dropdown-menu {
|
3383 |
+
-webkit-border-radius: 4px;
|
3384 |
+
-moz-border-radius: 4px;
|
3385 |
+
border-radius: 4px;
|
3386 |
+
}
|
3387 |
+
|
3388 |
+
.bootstrap-wpadmin .nav-tabs .dropdown-toggle .caret,
|
3389 |
+
.bootstrap-wpadmin .nav-pills .dropdown-toggle .caret {
|
3390 |
+
margin-top: 6px;
|
3391 |
+
border-top-color: #0088cc;
|
3392 |
+
border-bottom-color: #0088cc;
|
3393 |
+
}
|
3394 |
+
|
3395 |
+
.bootstrap-wpadmin .nav-tabs .dropdown-toggle:hover .caret,
|
3396 |
+
.bootstrap-wpadmin .nav-pills .dropdown-toggle:hover .caret {
|
3397 |
+
border-top-color: #005580;
|
3398 |
+
border-bottom-color: #005580;
|
3399 |
+
}
|
3400 |
+
|
3401 |
+
.bootstrap-wpadmin .nav-tabs .active .dropdown-toggle .caret,
|
3402 |
+
.bootstrap-wpadmin .nav-pills .active .dropdown-toggle .caret {
|
3403 |
+
border-top-color: #333333;
|
3404 |
+
border-bottom-color: #333333;
|
3405 |
+
}
|
3406 |
+
|
3407 |
+
.bootstrap-wpadmin .nav > .dropdown.active > a:hover {
|
3408 |
+
color: #000000;
|
3409 |
+
cursor: pointer;
|
3410 |
+
}
|
3411 |
+
|
3412 |
+
.bootstrap-wpadmin .nav-tabs .open .dropdown-toggle,
|
3413 |
+
.bootstrap-wpadmin .nav-pills .open .dropdown-toggle,
|
3414 |
+
.bootstrap-wpadmin .nav > li.dropdown.open.active > a:hover {
|
3415 |
+
color: #ffffff;
|
3416 |
+
background-color: #999999;
|
3417 |
+
border-color: #999999;
|
3418 |
+
}
|
3419 |
+
|
3420 |
+
.bootstrap-wpadmin .nav li.dropdown.open .caret,
|
3421 |
+
.bootstrap-wpadmin .nav li.dropdown.open.active .caret,
|
3422 |
+
.bootstrap-wpadmin .nav li.dropdown.open a:hover .caret {
|
3423 |
+
border-top-color: #ffffff;
|
3424 |
+
border-bottom-color: #ffffff;
|
3425 |
+
opacity: 1;
|
3426 |
+
filter: alpha(opacity=100);
|
3427 |
+
}
|
3428 |
+
|
3429 |
+
.bootstrap-wpadmin .tabs-stacked .open > a:hover {
|
3430 |
+
border-color: #999999;
|
3431 |
+
}
|
3432 |
+
|
3433 |
+
.bootstrap-wpadmin .tabbable {
|
3434 |
+
*zoom: 1;
|
3435 |
+
}
|
3436 |
+
|
3437 |
+
.bootstrap-wpadmin .tabbable:before,
|
3438 |
+
.bootstrap-wpadmin .tabbable:after {
|
3439 |
+
display: table;
|
3440 |
+
content: "";
|
3441 |
+
}
|
3442 |
+
|
3443 |
+
.bootstrap-wpadmin .tabbable:after {
|
3444 |
+
clear: both;
|
3445 |
+
}
|
3446 |
+
|
3447 |
+
.bootstrap-wpadmin .tab-content {
|
3448 |
+
overflow: auto;
|
3449 |
+
}
|
3450 |
+
|
3451 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs,
|
3452 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs,
|
3453 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs {
|
3454 |
+
border-bottom: 0;
|
3455 |
+
}
|
3456 |
+
|
3457 |
+
.bootstrap-wpadmin .tab-content > .tab-pane,
|
3458 |
+
.bootstrap-wpadmin .pill-content > .pill-pane {
|
3459 |
+
display: none;
|
3460 |
+
}
|
3461 |
+
|
3462 |
+
.bootstrap-wpadmin .tab-content > .active,
|
3463 |
+
.bootstrap-wpadmin .pill-content > .active {
|
3464 |
+
display: block;
|
3465 |
+
}
|
3466 |
+
|
3467 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs {
|
3468 |
+
border-top: 1px solid #ddd;
|
3469 |
+
}
|
3470 |
+
|
3471 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs > li {
|
3472 |
+
margin-top: -1px;
|
3473 |
+
margin-bottom: 0;
|
3474 |
+
}
|
3475 |
+
|
3476 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs > li > a {
|
3477 |
+
-webkit-border-radius: 0 0 4px 4px;
|
3478 |
+
-moz-border-radius: 0 0 4px 4px;
|
3479 |
+
border-radius: 0 0 4px 4px;
|
3480 |
+
}
|
3481 |
+
|
3482 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs > li > a:hover {
|
3483 |
+
border-top-color: #ddd;
|
3484 |
+
border-bottom-color: transparent;
|
3485 |
+
}
|
3486 |
+
|
3487 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs > .active > a,
|
3488 |
+
.bootstrap-wpadmin .tabs-below > .nav-tabs > .active > a:hover {
|
3489 |
+
border-color: transparent #ddd #ddd #ddd;
|
3490 |
+
}
|
3491 |
+
|
3492 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs > li,
|
3493 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs > li {
|
3494 |
+
float: none;
|
3495 |
+
}
|
3496 |
+
|
3497 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs > li > a,
|
3498 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs > li > a {
|
3499 |
+
min-width: 74px;
|
3500 |
+
margin-right: 0;
|
3501 |
+
margin-bottom: 3px;
|
3502 |
+
}
|
3503 |
+
|
3504 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs {
|
3505 |
+
float: left;
|
3506 |
+
margin-right: 19px;
|
3507 |
+
border-right: 1px solid #ddd;
|
3508 |
+
}
|
3509 |
+
|
3510 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs > li > a {
|
3511 |
+
margin-right: -1px;
|
3512 |
+
-webkit-border-radius: 4px 0 0 4px;
|
3513 |
+
-moz-border-radius: 4px 0 0 4px;
|
3514 |
+
border-radius: 4px 0 0 4px;
|
3515 |
+
}
|
3516 |
+
|
3517 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs > li > a:hover {
|
3518 |
+
border-color: #eeeeee #dddddd #eeeeee #eeeeee;
|
3519 |
+
}
|
3520 |
+
|
3521 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs .active > a,
|
3522 |
+
.bootstrap-wpadmin .tabs-left > .nav-tabs .active > a:hover {
|
3523 |
+
border-color: #ddd transparent #ddd #ddd;
|
3524 |
+
*border-right-color: #ffffff;
|
3525 |
+
}
|
3526 |
+
|
3527 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs {
|
3528 |
+
float: right;
|
3529 |
+
margin-left: 19px;
|
3530 |
+
border-left: 1px solid #ddd;
|
3531 |
+
}
|
3532 |
+
|
3533 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs > li > a {
|
3534 |
+
margin-left: -1px;
|
3535 |
+
-webkit-border-radius: 0 4px 4px 0;
|
3536 |
+
-moz-border-radius: 0 4px 4px 0;
|
3537 |
+
border-radius: 0 4px 4px 0;
|
3538 |
+
}
|
3539 |
+
|
3540 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs > li > a:hover {
|
3541 |
+
border-color: #eeeeee #eeeeee #eeeeee #dddddd;
|
3542 |
+
}
|
3543 |
+
|
3544 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs .active > a,
|
3545 |
+
.bootstrap-wpadmin .tabs-right > .nav-tabs .active > a:hover {
|
3546 |
+
border-color: #ddd #ddd #ddd transparent;
|
3547 |
+
*border-left-color: #ffffff;
|
3548 |
+
}
|
3549 |
+
|
3550 |
+
.bootstrap-wpadmin .navbar {
|
3551 |
+
*position: relative;
|
3552 |
+
*z-index: 2;
|
3553 |
+
margin-bottom: 18px;
|
3554 |
+
overflow: visible;
|
3555 |
+
}
|
3556 |
+
|
3557 |
+
.bootstrap-wpadmin .navbar-inner {
|
3558 |
+
min-height: 40px;
|
3559 |
+
padding-right: 20px;
|
3560 |
+
padding-left: 20px;
|
3561 |
+
background-color: #2c2c2c;
|
3562 |
+
background-image: -moz-linear-gradient(top, #333333, #222222);
|
3563 |
+
background-image: -ms-linear-gradient(top, #333333, #222222);
|
3564 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
|
3565 |
+
background-image: -webkit-linear-gradient(top, #333333, #222222);
|
3566 |
+
background-image: -o-linear-gradient(top, #333333, #222222);
|
3567 |
+
background-image: linear-gradient(top, #333333, #222222);
|
3568 |
+
background-repeat: repeat-x;
|
3569 |
+
-webkit-border-radius: 4px;
|
3570 |
+
-moz-border-radius: 4px;
|
3571 |
+
border-radius: 4px;
|
3572 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
|
3573 |
+
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
|
3574 |
+
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
|
3575 |
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
|
3576 |
+
}
|
3577 |
+
|
3578 |
+
.bootstrap-wpadmin .navbar .container {
|
3579 |
+
width: auto;
|
3580 |
+
}
|
3581 |
+
|
3582 |
+
.bootstrap-wpadmin .nav-collapse.collapse {
|
3583 |
+
height: auto;
|
3584 |
+
}
|
3585 |
+
|
3586 |
+
.bootstrap-wpadmin .navbar {
|
3587 |
+
color: #999999;
|
3588 |
+
}
|
3589 |
+
|
3590 |
+
.bootstrap-wpadmin .navbar .brand:hover {
|
3591 |
+
text-decoration: none;
|
3592 |
+
}
|
3593 |
+
|
3594 |
+
.bootstrap-wpadmin .navbar .brand {
|
3595 |
+
display: block;
|
3596 |
+
float: left;
|
3597 |
+
padding: 8px 20px 12px;
|
3598 |
+
margin-left: -20px;
|
3599 |
+
font-size: 20px;
|
3600 |
+
font-weight: 200;
|
3601 |
+
line-height: 1;
|
3602 |
+
color: #999999;
|
3603 |
+
}
|
3604 |
+
|
3605 |
+
.bootstrap-wpadmin .navbar .navbar-text {
|
3606 |
+
margin-bottom: 0;
|
3607 |
+
line-height: 40px;
|
3608 |
+
}
|
3609 |
+
|
3610 |
+
.bootstrap-wpadmin .navbar .navbar-link {
|
3611 |
+
color: #999999;
|
3612 |
+
}
|
3613 |
+
|
3614 |
+
.bootstrap-wpadmin .navbar .navbar-link:hover {
|
3615 |
+
color: #ffffff;
|
3616 |
+
}
|
3617 |
+
|
3618 |
+
.bootstrap-wpadmin .navbar .btn,
|
3619 |
+
.bootstrap-wpadmin .navbar .btn-group {
|
3620 |
+
margin-top: 5px;
|
3621 |
+
}
|
3622 |
+
|
3623 |
+
.bootstrap-wpadmin .navbar .btn-group .btn {
|
3624 |
+
margin: 0;
|
3625 |
+
}
|
3626 |
+
|
3627 |
+
.bootstrap-wpadmin .navbar-form {
|
3628 |
+
margin-bottom: 0;
|
3629 |
+
*zoom: 1;
|
3630 |
+
}
|
3631 |
+
|
3632 |
+
.bootstrap-wpadmin .navbar-form:before,
|
3633 |
+
.bootstrap-wpadmin .navbar-form:after {
|
3634 |
+
display: table;
|
3635 |
+
content: "";
|
3636 |
+
}
|
3637 |
+
|
3638 |
+
.bootstrap-wpadmin .navbar-form:after {
|
3639 |
+
clear: both;
|
3640 |
+
}
|
3641 |
+
|
3642 |
+
.bootstrap-wpadmin .navbar-form input,
|
3643 |
+
.bootstrap-wpadmin .navbar-form select,
|
3644 |
+
.bootstrap-wpadmin .navbar-form .radio,
|
3645 |
+
.bootstrap-wpadmin .navbar-form .checkbox {
|
3646 |
+
margin-top: 5px;
|
3647 |
+
}
|
3648 |
+
|
3649 |
+
.bootstrap-wpadmin .navbar-form input,
|
3650 |
+
.bootstrap-wpadmin .navbar-form select {
|
3651 |
+
display: inline-block;
|
3652 |
+
margin-bottom: 0;
|
3653 |
+
}
|
3654 |
+
|
3655 |
+
.bootstrap-wpadmin .navbar-form input[type="image"],
|
3656 |
+
.bootstrap-wpadmin .navbar-form input[type="checkbox"],
|
3657 |
+
.bootstrap-wpadmin .navbar-form input[type="radio"] {
|
3658 |
+
margin-top: 3px;
|
3659 |
+
}
|
3660 |
+
|
3661 |
+
.bootstrap-wpadmin .navbar-form .input-append,
|
3662 |
+
.bootstrap-wpadmin .navbar-form .input-prepend {
|
3663 |
+
margin-top: 6px;
|
3664 |
+
white-space: nowrap;
|
3665 |
+
}
|
3666 |
+
|
3667 |
+
.bootstrap-wpadmin .navbar-form .input-append input,
|
3668 |
+
.bootstrap-wpadmin .navbar-form .input-prepend input {
|
3669 |
+
margin-top: 0;
|
3670 |
+
}
|
3671 |
+
|
3672 |
+
.bootstrap-wpadmin .navbar-search {
|
3673 |
+
position: relative;
|
3674 |
+
float: left;
|
3675 |
+
margin-top: 6px;
|
3676 |
+
margin-bottom: 0;
|
3677 |
+
}
|
3678 |
+
|
3679 |
+
.bootstrap-wpadmin .navbar-search .search-query {
|
3680 |
+
padding: 4px 9px;
|
3681 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
3682 |
+
font-size: 13px;
|
3683 |
+
font-weight: normal;
|
3684 |
+
line-height: 1;
|
3685 |
+
color: #ffffff;
|
3686 |
+
background-color: #626262;
|
3687 |
+
border: 1px solid #151515;
|
3688 |
+
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
|
3689 |
+
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
|
3690 |
+
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
|
3691 |
+
-webkit-transition: none;
|
3692 |
+
-moz-transition: none;
|
3693 |
+
-ms-transition: none;
|
3694 |
+
-o-transition: none;
|
3695 |
+
transition: none;
|
3696 |
+
}
|
3697 |
+
|
3698 |
+
.bootstrap-wpadmin .navbar-search .search-query:-moz-placeholder {
|
3699 |
+
color: #cccccc;
|
3700 |
+
}
|
3701 |
+
|
3702 |
+
.bootstrap-wpadmin .navbar-search .search-query::-webkit-input-placeholder {
|
3703 |
+
color: #cccccc;
|
3704 |
+
}
|
3705 |
+
|
3706 |
+
.bootstrap-wpadmin .navbar-search .search-query:focus,
|
3707 |
+
.bootstrap-wpadmin .navbar-search .search-query.focused {
|
3708 |
+
padding: 5px 10px;
|
3709 |
+
color: #333333;
|
3710 |
+
text-shadow: 0 1px 0 #ffffff;
|
3711 |
+
background-color: #ffffff;
|
3712 |
+
border: 0;
|
3713 |
+
outline: 0;
|
3714 |
+
-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
|
3715 |
+
-moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
|
3716 |
+
box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
|
3717 |
+
}
|
3718 |
+
|
3719 |
+
.bootstrap-wpadmin .navbar-fixed-top,
|
3720 |
+
.bootstrap-wpadmin .navbar-fixed-bottom {
|
3721 |
+
position: fixed;
|
3722 |
+
right: 0;
|
3723 |
+
left: 0;
|
3724 |
+
z-index: 1030;
|
3725 |
+
margin-bottom: 0;
|
3726 |
+
}
|
3727 |
+
|
3728 |
+
.bootstrap-wpadmin .navbar-fixed-top .navbar-inner,
|
3729 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .navbar-inner {
|
3730 |
+
padding-right: 0;
|
3731 |
+
padding-left: 0;
|
3732 |
+
-webkit-border-radius: 0;
|
3733 |
+
-moz-border-radius: 0;
|
3734 |
+
border-radius: 0;
|
3735 |
+
}
|
3736 |
+
|
3737 |
+
.bootstrap-wpadmin .navbar-fixed-top .container,
|
3738 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .container {
|
3739 |
+
width: 940px;
|
3740 |
+
}
|
3741 |
+
|
3742 |
+
.bootstrap-wpadmin .navbar-fixed-top {
|
3743 |
+
top: 0;
|
3744 |
+
}
|
3745 |
+
|
3746 |
+
.bootstrap-wpadmin .navbar-fixed-bottom {
|
3747 |
+
bottom: 0;
|
3748 |
+
}
|
3749 |
+
|
3750 |
+
.bootstrap-wpadmin .navbar .nav {
|
3751 |
+
position: relative;
|
3752 |
+
left: 0;
|
3753 |
+
display: block;
|
3754 |
+
float: left;
|
3755 |
+
margin: 0 10px 0 0;
|
3756 |
+
}
|
3757 |
+
|
3758 |
+
.bootstrap-wpadmin .navbar .nav.pull-right {
|
3759 |
+
float: right;
|
3760 |
+
}
|
3761 |
+
|
3762 |
+
.bootstrap-wpadmin .navbar .nav > li {
|
3763 |
+
display: block;
|
3764 |
+
float: left;
|
3765 |
+
}
|
3766 |
+
|
3767 |
+
.bootstrap-wpadmin .navbar .nav > li > a {
|
3768 |
+
float: none;
|
3769 |
+
padding: 9px 10px 11px;
|
3770 |
+
line-height: 19px;
|
3771 |
+
color: #999999;
|
3772 |
+
text-decoration: none;
|
3773 |
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
3774 |
+
}
|
3775 |
+
|
3776 |
+
.bootstrap-wpadmin .navbar .btn {
|
3777 |
+
display: inline-block;
|
3778 |
+
padding: 4px 10px 4px;
|
3779 |
+
margin: 5px 5px 6px;
|
3780 |
+
line-height: 18px;
|
3781 |
+
}
|
3782 |
+
|
3783 |
+
.bootstrap-wpadmin .navbar .btn-group {
|
3784 |
+
padding: 5px 5px 6px;
|
3785 |
+
margin: 0;
|
3786 |
+
}
|
3787 |
+
|
3788 |
+
.bootstrap-wpadmin .navbar .nav > li > a:hover {
|
3789 |
+
color: #ffffff;
|
3790 |
+
text-decoration: none;
|
3791 |
+
background-color: transparent;
|
3792 |
+
}
|
3793 |
+
|
3794 |
+
.bootstrap-wpadmin .navbar .nav .active > a,
|
3795 |
+
.bootstrap-wpadmin .navbar .nav .active > a:hover {
|
3796 |
+
color: #ffffff;
|
3797 |
+
text-decoration: none;
|
3798 |
+
background-color: #222222;
|
3799 |
+
}
|
3800 |
+
|
3801 |
+
.bootstrap-wpadmin .navbar .divider-vertical {
|
3802 |
+
width: 1px;
|
3803 |
+
height: 40px;
|
3804 |
+
margin: 0 9px;
|
3805 |
+
overflow: hidden;
|
3806 |
+
background-color: #222222;
|
3807 |
+
border-right: 1px solid #333333;
|
3808 |
+
}
|
3809 |
+
|
3810 |
+
.bootstrap-wpadmin .navbar .nav.pull-right {
|
3811 |
+
margin-right: 0;
|
3812 |
+
margin-left: 10px;
|
3813 |
+
}
|
3814 |
+
|
3815 |
+
.bootstrap-wpadmin .navbar .btn-navbar {
|
3816 |
+
display: none;
|
3817 |
+
float: right;
|
3818 |
+
padding: 7px 10px;
|
3819 |
+
margin-right: 5px;
|
3820 |
+
margin-left: 5px;
|
3821 |
+
background-color: #2c2c2c;
|
3822 |
+
*background-color: #222222;
|
3823 |
+
background-image: -ms-linear-gradient(top, #333333, #222222);
|
3824 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
|
3825 |
+
background-image: -webkit-linear-gradient(top, #333333, #222222);
|
3826 |
+
background-image: -o-linear-gradient(top, #333333, #222222);
|
3827 |
+
background-image: linear-gradient(top, #333333, #222222);
|
3828 |
+
background-image: -moz-linear-gradient(top, #333333, #222222);
|
3829 |
+
background-repeat: repeat-x;
|
3830 |
+
border-color: #222222 #222222 #000000;
|
3831 |
+
border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
|
3832 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
|
3833 |
+
filter: progid:dximagetransform.microsoft.gradient(enabled=false);
|
3834 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
|
3835 |
+
-moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
|
3836 |
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
|
3837 |
+
}
|
3838 |
+
|
3839 |
+
.bootstrap-wpadmin .navbar .btn-navbar:hover,
|
3840 |
+
.bootstrap-wpadmin .navbar .btn-navbar:active,
|
3841 |
+
.bootstrap-wpadmin .navbar .btn-navbar.active,
|
3842 |
+
.bootstrap-wpadmin .navbar .btn-navbar.disabled,
|
3843 |
+
.bootstrap-wpadmin .navbar .btn-navbar[disabled] {
|
3844 |
+
background-color: #222222;
|
3845 |
+
*background-color: #151515;
|
3846 |
+
}
|
3847 |
+
|
3848 |
+
.bootstrap-wpadmin .navbar .btn-navbar:active,
|
3849 |
+
.bootstrap-wpadmin .navbar .btn-navbar.active {
|
3850 |
+
background-color: #080808 \9;
|
3851 |
+
}
|
3852 |
+
|
3853 |
+
.bootstrap-wpadmin .navbar .btn-navbar .icon-bar {
|
3854 |
+
display: block;
|
3855 |
+
width: 18px;
|
3856 |
+
height: 2px;
|
3857 |
+
background-color: #f5f5f5;
|
3858 |
+
-webkit-border-radius: 1px;
|
3859 |
+
-moz-border-radius: 1px;
|
3860 |
+
border-radius: 1px;
|
3861 |
+
-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
|
3862 |
+
-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
|
3863 |
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
|
3864 |
+
}
|
3865 |
+
|
3866 |
+
.bootstrap-wpadmin .btn-navbar .icon-bar + .icon-bar {
|
3867 |
+
margin-top: 3px;
|
3868 |
+
}
|
3869 |
+
|
3870 |
+
.bootstrap-wpadmin .navbar .dropdown-menu:before {
|
3871 |
+
position: absolute;
|
3872 |
+
top: -7px;
|
3873 |
+
left: 9px;
|
3874 |
+
display: inline-block;
|
3875 |
+
border-right: 7px solid transparent;
|
3876 |
+
border-bottom: 7px solid #ccc;
|
3877 |
+
border-left: 7px solid transparent;
|
3878 |
+
border-bottom-color: rgba(0, 0, 0, 0.2);
|
3879 |
+
content: '';
|
3880 |
+
}
|
3881 |
+
|
3882 |
+
.bootstrap-wpadmin .navbar .dropdown-menu:after {
|
3883 |
+
position: absolute;
|
3884 |
+
top: -6px;
|
3885 |
+
left: 10px;
|
3886 |
+
display: inline-block;
|
3887 |
+
border-right: 6px solid transparent;
|
3888 |
+
border-bottom: 6px solid #ffffff;
|
3889 |
+
border-left: 6px solid transparent;
|
3890 |
+
content: '';
|
3891 |
+
}
|
3892 |
+
|
3893 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .dropdown-menu:before {
|
3894 |
+
top: auto;
|
3895 |
+
bottom: -7px;
|
3896 |
+
border-top: 7px solid #ccc;
|
3897 |
+
border-bottom: 0;
|
3898 |
+
border-top-color: rgba(0, 0, 0, 0.2);
|
3899 |
+
}
|
3900 |
+
|
3901 |
+
.bootstrap-wpadmin .navbar-fixed-bottom .dropdown-menu:after {
|
3902 |
+
top: auto;
|
3903 |
+
bottom: -6px;
|
3904 |
+
border-top: 6px solid #ffffff;
|
3905 |
+
border-bottom: 0;
|
3906 |
+
}
|
3907 |
+
|
3908 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown .dropdown-toggle .caret,
|
3909 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown.open .caret {
|
3910 |
+
border-top-color: #ffffff;
|
3911 |
+
border-bottom-color: #ffffff;
|
3912 |
+
}
|
3913 |
+
|
3914 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown.active .caret {
|
3915 |
+
opacity: 1;
|
3916 |
+
filter: alpha(opacity=100);
|
3917 |
+
}
|
3918 |
+
|
3919 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown.open > .dropdown-toggle,
|
3920 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown.active > .dropdown-toggle,
|
3921 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown.open.active > .dropdown-toggle {
|
3922 |
+
background-color: transparent;
|
3923 |
+
}
|
3924 |
+
|
3925 |
+
.bootstrap-wpadmin .navbar .nav li.dropdown.active > .dropdown-toggle:hover {
|
3926 |
+
color: #ffffff;
|
3927 |
+
}
|
3928 |
+
|
3929 |
+
.bootstrap-wpadmin .navbar .pull-right .dropdown-menu,
|
3930 |
+
.bootstrap-wpadmin .navbar .dropdown-menu.pull-right {
|
3931 |
+
right: 0;
|
3932 |
+
left: auto;
|
3933 |
+
}
|
3934 |
+
|
3935 |
+
.bootstrap-wpadmin .navbar .pull-right .dropdown-menu:before,
|
3936 |
+
.bootstrap-wpadmin .navbar .dropdown-menu.pull-right:before {
|
3937 |
+
right: 12px;
|
3938 |
+
left: auto;
|
3939 |
+
}
|
3940 |
+
|
3941 |
+
.bootstrap-wpadmin .navbar .pull-right .dropdown-menu:after,
|
3942 |
+
.bootstrap-wpadmin .navbar .dropdown-menu.pull-right:after {
|
3943 |
+
right: 13px;
|
3944 |
+
left: auto;
|
3945 |
+
}
|
3946 |
+
|
3947 |
+
.bootstrap-wpadmin .breadcrumb {
|
3948 |
+
padding: 7px 14px;
|
3949 |
+
margin: 0 0 18px;
|
3950 |
+
list-style: none;
|
3951 |
+
background-color: #fbfbfb;
|
3952 |
+
background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
|
3953 |
+
background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
|
3954 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));
|
3955 |
+
background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
|
3956 |
+
background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
|
3957 |
+
background-image: linear-gradient(top, #ffffff, #f5f5f5);
|
3958 |
+
background-repeat: repeat-x;
|
3959 |
+
border: 1px solid #ddd;
|
3960 |
+
-webkit-border-radius: 3px;
|
3961 |
+
-moz-border-radius: 3px;
|
3962 |
+
border-radius: 3px;
|
3963 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
|
3964 |
+
-webkit-box-shadow: inset 0 1px 0 #ffffff;
|
3965 |
+
-moz-box-shadow: inset 0 1px 0 #ffffff;
|
3966 |
+
box-shadow: inset 0 1px 0 #ffffff;
|
3967 |
+
}
|
3968 |
+
|
3969 |
+
.bootstrap-wpadmin .breadcrumb li {
|
3970 |
+
display: inline-block;
|
3971 |
+
*display: inline;
|
3972 |
+
text-shadow: 0 1px 0 #ffffff;
|
3973 |
+
*zoom: 1;
|
3974 |
+
}
|
3975 |
+
|
3976 |
+
.bootstrap-wpadmin .breadcrumb .divider {
|
3977 |
+
padding: 0 5px;
|
3978 |
+
color: #999999;
|
3979 |
+
}
|
3980 |
+
|
3981 |
+
.bootstrap-wpadmin .breadcrumb .active a {
|
3982 |
+
color: #333333;
|
3983 |
+
}
|
3984 |
+
|
3985 |
+
.bootstrap-wpadmin .pagination {
|
3986 |
+
height: 36px;
|
3987 |
+
margin: 18px 0;
|
3988 |
+
}
|
3989 |
+
|
3990 |
+
.bootstrap-wpadmin .pagination ul {
|
3991 |
+
display: inline-block;
|
3992 |
+
*display: inline;
|
3993 |
+
margin-bottom: 0;
|
3994 |
+
margin-left: 0;
|
3995 |
+
-webkit-border-radius: 3px;
|
3996 |
+
-moz-border-radius: 3px;
|
3997 |
+
border-radius: 3px;
|
3998 |
+
*zoom: 1;
|
3999 |
+
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
4000 |
+
-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
4001 |
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
4002 |
+
}
|
4003 |
+
|
4004 |
+
.bootstrap-wpadmin .pagination li {
|
4005 |
+
display: inline;
|
4006 |
+
}
|
4007 |
+
|
4008 |
+
.bootstrap-wpadmin .pagination a {
|
4009 |
+
float: left;
|
4010 |
+
padding: 0 14px;
|
4011 |
+
line-height: 34px;
|
4012 |
+
text-decoration: none;
|
4013 |
+
border: 1px solid #ddd;
|
4014 |
+
border-left-width: 0;
|
4015 |
+
}
|
4016 |
+
|
4017 |
+
.bootstrap-wpadmin .pagination a:hover,
|
4018 |
+
.bootstrap-wpadmin .pagination .active a {
|
4019 |
+
background-color: #f5f5f5;
|
4020 |
+
}
|
4021 |
+
|
4022 |
+
.bootstrap-wpadmin .pagination .active a {
|
4023 |
+
color: #999999;
|
4024 |
+
cursor: default;
|
4025 |
+
}
|
4026 |
+
|
4027 |
+
.bootstrap-wpadmin .pagination .disabled span,
|
4028 |
+
.bootstrap-wpadmin .pagination .disabled a,
|
4029 |
+
.bootstrap-wpadmin .pagination .disabled a:hover {
|
4030 |
+
color: #999999;
|
4031 |
+
cursor: default;
|
4032 |
+
background-color: transparent;
|
4033 |
+
}
|
4034 |
+
|
4035 |
+
.bootstrap-wpadmin .pagination li:first-child a {
|
4036 |
+
border-left-width: 1px;
|
4037 |
+
-webkit-border-radius: 3px 0 0 3px;
|
4038 |
+
-moz-border-radius: 3px 0 0 3px;
|
4039 |
+
border-radius: 3px 0 0 3px;
|
4040 |
+
}
|
4041 |
+
|
4042 |
+
.bootstrap-wpadmin .pagination li:last-child a {
|
4043 |
+
-webkit-border-radius: 0 3px 3px 0;
|
4044 |
+
-moz-border-radius: 0 3px 3px 0;
|
4045 |
+
border-radius: 0 3px 3px 0;
|
4046 |
+
}
|
4047 |
+
|
4048 |
+
.bootstrap-wpadmin .pagination-centered {
|
4049 |
+
text-align: center;
|
4050 |
+
}
|
4051 |
+
|
4052 |
+
.bootstrap-wpadmin .pagination-right {
|
4053 |
+
text-align: right;
|
4054 |
+
}
|
4055 |
+
|
4056 |
+
.bootstrap-wpadmin .pager {
|
4057 |
+
margin-bottom: 18px;
|
4058 |
+
margin-left: 0;
|
4059 |
+
text-align: center;
|
4060 |
+
list-style: none;
|
4061 |
+
*zoom: 1;
|
4062 |
+
}
|
4063 |
+
|
4064 |
+
.bootstrap-wpadmin .pager:before,
|
4065 |
+
.bootstrap-wpadmin .pager:after {
|
4066 |
+
display: table;
|
4067 |
+
content: "";
|
4068 |
+
}
|
4069 |
+
|
4070 |
+
.bootstrap-wpadmin .pager:after {
|
4071 |
+
clear: both;
|
4072 |
+
}
|
4073 |
+
|
4074 |
+
.bootstrap-wpadmin .pager li {
|
4075 |
+
display: inline;
|
4076 |
+
}
|
4077 |
+
|
4078 |
+
.bootstrap-wpadmin .pager a {
|
4079 |
+
display: inline-block;
|
4080 |
+
padding: 5px 14px;
|
4081 |
+
background-color: #fff;
|
4082 |
+
border: 1px solid #ddd;
|
4083 |
+
-webkit-border-radius: 15px;
|
4084 |
+
-moz-border-radius: 15px;
|
4085 |
+
border-radius: 15px;
|
4086 |
+
}
|
4087 |
+
|
4088 |
+
.bootstrap-wpadmin .pager a:hover {
|
4089 |
+
text-decoration: none;
|
4090 |
+
background-color: #f5f5f5;
|
4091 |
+
}
|
4092 |
+
|
4093 |
+
.bootstrap-wpadmin .pager .next a {
|
4094 |
+
float: right;
|
4095 |
+
}
|
4096 |
+
|
4097 |
+
.bootstrap-wpadmin .pager .previous a {
|
4098 |
+
float: left;
|
4099 |
+
}
|
4100 |
+
|
4101 |
+
.bootstrap-wpadmin .pager .disabled a,
|
4102 |
+
.bootstrap-wpadmin .pager .disabled a:hover {
|
4103 |
+
color: #999999;
|
4104 |
+
cursor: default;
|
4105 |
+
background-color: #fff;
|
4106 |
+
}
|
4107 |
+
|
4108 |
+
.bootstrap-wpadmin .modal-open .dropdown-menu {
|
4109 |
+
z-index: 2050;
|
4110 |
+
}
|
4111 |
+
|
4112 |
+
.bootstrap-wpadmin .modal-open .dropdown.open {
|
4113 |
+
*z-index: 2050;
|
4114 |
+
}
|
4115 |
+
|
4116 |
+
.bootstrap-wpadmin .modal-open .popover {
|
4117 |
+
z-index: 2060;
|
4118 |
+
}
|
4119 |
+
|
4120 |
+
.bootstrap-wpadmin .modal-open .tooltip {
|
4121 |
+
z-index: 2070;
|
4122 |
+
}
|
4123 |
+
|
4124 |
+
.bootstrap-wpadmin .modal-backdrop {
|
4125 |
+
position: fixed;
|
4126 |
+
top: 0;
|
4127 |
+
right: 0;
|
4128 |
+
bottom: 0;
|
4129 |
+
left: 0;
|
4130 |
+
z-index: 1040;
|
4131 |
+
background-color: #000000;
|
4132 |
+
}
|
4133 |
+
|
4134 |
+
.bootstrap-wpadmin .modal-backdrop.fade {
|
4135 |
+
opacity: 0;
|
4136 |
+
}
|
4137 |
+
|
4138 |
+
.bootstrap-wpadmin .modal-backdrop,
|
4139 |
+
.bootstrap-wpadmin .modal-backdrop.fade.in {
|
4140 |
+
opacity: 0.8;
|
4141 |
+
filter: alpha(opacity=80);
|
4142 |
+
}
|
4143 |
+
|
4144 |
+
.bootstrap-wpadmin .modal {
|
4145 |
+
position: fixed;
|
4146 |
+
top: 50%;
|
4147 |
+
left: 50%;
|
4148 |
+
z-index: 1050;
|
4149 |
+
width: 560px;
|
4150 |
+
margin: -250px 0 0 -280px;
|
4151 |
+
overflow: auto;
|
4152 |
+
background-color: #ffffff;
|
4153 |
+
border: 1px solid #999;
|
4154 |
+
border: 1px solid rgba(0, 0, 0, 0.3);
|
4155 |
+
*border: 1px solid #999;
|
4156 |
+
-webkit-border-radius: 6px;
|
4157 |
+
-moz-border-radius: 6px;
|
4158 |
+
border-radius: 6px;
|
4159 |
+
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
4160 |
+
-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
4161 |
+
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
4162 |
+
-webkit-background-clip: padding-box;
|
4163 |
+
-moz-background-clip: padding-box;
|
4164 |
+
background-clip: padding-box;
|
4165 |
+
}
|
4166 |
+
|
4167 |
+
.bootstrap-wpadmin .modal.fade {
|
4168 |
+
top: -25%;
|
4169 |
+
-webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
|
4170 |
+
-moz-transition: opacity 0.3s linear, top 0.3s ease-out;
|
4171 |
+
-ms-transition: opacity 0.3s linear, top 0.3s ease-out;
|
4172 |
+
-o-transition: opacity 0.3s linear, top 0.3s ease-out;
|
4173 |
+
transition: opacity 0.3s linear, top 0.3s ease-out;
|
4174 |
+
}
|
4175 |
+
|
4176 |
+
.bootstrap-wpadmin .modal.fade.in {
|
4177 |
+
top: 50%;
|
4178 |
+
}
|
4179 |
+
|
4180 |
+
.bootstrap-wpadmin .modal-header {
|
4181 |
+
padding: 9px 15px;
|
4182 |
+
border-bottom: 1px solid #eee;
|
4183 |
+
}
|
4184 |
+
|
4185 |
+
.bootstrap-wpadmin .modal-header .close {
|
4186 |
+
margin-top: 2px;
|
4187 |
+
}
|
4188 |
+
|
4189 |
+
.bootstrap-wpadmin .modal-body {
|
4190 |
+
max-height: 400px;
|
4191 |
+
padding: 15px;
|
4192 |
+
overflow-y: auto;
|
4193 |
+
}
|
4194 |
+
|
4195 |
+
.bootstrap-wpadmin .modal-form {
|
4196 |
+
margin-bottom: 0;
|
4197 |
+
}
|
4198 |
+
|
4199 |
+
.bootstrap-wpadmin .modal-footer {
|
4200 |
+
padding: 14px 15px 15px;
|
4201 |
+
margin-bottom: 0;
|
4202 |
+
text-align: right;
|
4203 |
+
background-color: #f5f5f5;
|
4204 |
+
border-top: 1px solid #ddd;
|
4205 |
+
-webkit-border-radius: 0 0 6px 6px;
|
4206 |
+
-moz-border-radius: 0 0 6px 6px;
|
4207 |
+
border-radius: 0 0 6px 6px;
|
4208 |
+
*zoom: 1;
|
4209 |
+
-webkit-box-shadow: inset 0 1px 0 #ffffff;
|
4210 |
+
-moz-box-shadow: inset 0 1px 0 #ffffff;
|
4211 |
+
box-shadow: inset 0 1px 0 #ffffff;
|
4212 |
+
}
|
4213 |
+
|
4214 |
+
.bootstrap-wpadmin .modal-footer:before,
|
4215 |
+
.bootstrap-wpadmin .modal-footer:after {
|
4216 |
+
display: table;
|
4217 |
+
content: "";
|
4218 |
+
}
|
4219 |
+
|
4220 |
+
.bootstrap-wpadmin .modal-footer:after {
|
4221 |
+
clear: both;
|
4222 |
+
}
|
4223 |
+
|
4224 |
+
.bootstrap-wpadmin .modal-footer .btn + .btn {
|
4225 |
+
margin-bottom: 0;
|
4226 |
+
margin-left: 5px;
|
4227 |
+
}
|
4228 |
+
|
4229 |
+
.bootstrap-wpadmin .modal-footer .btn-group .btn + .btn {
|
4230 |
+
margin-left: -1px;
|
4231 |
+
}
|
4232 |
+
|
4233 |
+
.bootstrap-wpadmin .tooltip {
|
4234 |
+
position: absolute;
|
4235 |
+
z-index: 1020;
|
4236 |
+
display: block;
|
4237 |
+
padding: 5px;
|
4238 |
+
font-size: 11px;
|
4239 |
+
opacity: 0;
|
4240 |
+
filter: alpha(opacity=0);
|
4241 |
+
visibility: visible;
|
4242 |
+
}
|
4243 |
+
|
4244 |
+
.bootstrap-wpadmin .tooltip.in {
|
4245 |
+
opacity: 0.8;
|
4246 |
+
filter: alpha(opacity=80);
|
4247 |
+
}
|
4248 |
+
|
4249 |
+
.bootstrap-wpadmin .tooltip.top {
|
4250 |
+
margin-top: -2px;
|
4251 |
+
}
|
4252 |
+
|
4253 |
+
.bootstrap-wpadmin .tooltip.right {
|
4254 |
+
margin-left: 2px;
|
4255 |
+
}
|
4256 |
+
|
4257 |
+
.bootstrap-wpadmin .tooltip.bottom {
|
4258 |
+
margin-top: 2px;
|
4259 |
+
}
|
4260 |
+
|
4261 |
+
.bootstrap-wpadmin .tooltip.left {
|
4262 |
+
margin-left: -2px;
|
4263 |
+
}
|
4264 |
+
|
4265 |
+
.bootstrap-wpadmin .tooltip.top .tooltip-arrow {
|
4266 |
+
bottom: 0;
|
4267 |
+
left: 50%;
|
4268 |
+
margin-left: -5px;
|
4269 |
+
border-top: 5px solid #000000;
|
4270 |
+
border-right: 5px solid transparent;
|
4271 |
+
border-left: 5px solid transparent;
|
4272 |
+
}
|
4273 |
+
|
4274 |
+
.bootstrap-wpadmin .tooltip.left .tooltip-arrow {
|
4275 |
+
top: 50%;
|
4276 |
+
right: 0;
|
4277 |
+
margin-top: -5px;
|
4278 |
+
border-top: 5px solid transparent;
|
4279 |
+
border-bottom: 5px solid transparent;
|
4280 |
+
border-left: 5px solid #000000;
|
4281 |
+
}
|
4282 |
+
|
4283 |
+
.bootstrap-wpadmin .tooltip.bottom .tooltip-arrow {
|
4284 |
+
top: 0;
|
4285 |
+
left: 50%;
|
4286 |
+
margin-left: -5px;
|
4287 |
+
border-right: 5px solid transparent;
|
4288 |
+
border-bottom: 5px solid #000000;
|
4289 |
+
border-left: 5px solid transparent;
|
4290 |
+
}
|
4291 |
+
|
4292 |
+
.bootstrap-wpadmin .tooltip.right .tooltip-arrow {
|
4293 |
+
top: 50%;
|
4294 |
+
left: 0;
|
4295 |
+
margin-top: -5px;
|
4296 |
+
border-top: 5px solid transparent;
|
4297 |
+
border-right: 5px solid #000000;
|
4298 |
+
border-bottom: 5px solid transparent;
|
4299 |
+
}
|
4300 |
+
|
4301 |
+
.bootstrap-wpadmin .tooltip-inner {
|
4302 |
+
max-width: 200px;
|
4303 |
+
padding: 3px 8px;
|
4304 |
+
color: #ffffff;
|
4305 |
+
text-align: center;
|
4306 |
+
text-decoration: none;
|
4307 |
+
background-color: #000000;
|
4308 |
+
-webkit-border-radius: 4px;
|
4309 |
+
-moz-border-radius: 4px;
|
4310 |
+
border-radius: 4px;
|
4311 |
+
}
|
4312 |
+
|
4313 |
+
.bootstrap-wpadmin .tooltip-arrow {
|
4314 |
+
position: absolute;
|
4315 |
+
width: 0;
|
4316 |
+
height: 0;
|
4317 |
+
}
|
4318 |
+
|
4319 |
+
.bootstrap-wpadmin .popover {
|
4320 |
+
position: absolute;
|
4321 |
+
top: 0;
|
4322 |
+
left: 0;
|
4323 |
+
z-index: 1010;
|
4324 |
+
display: none;
|
4325 |
+
padding: 5px;
|
4326 |
+
}
|
4327 |
+
|
4328 |
+
.bootstrap-wpadmin .popover.top {
|
4329 |
+
margin-top: -5px;
|
4330 |
+
}
|
4331 |
+
|
4332 |
+
.bootstrap-wpadmin .popover.right {
|
4333 |
+
margin-left: 5px;
|
4334 |
+
}
|
4335 |
+
|
4336 |
+
.bootstrap-wpadmin .popover.bottom {
|
4337 |
+
margin-top: 5px;
|
4338 |
+
}
|
4339 |
+
|
4340 |
+
.bootstrap-wpadmin .popover.left {
|
4341 |
+
margin-left: -5px;
|
4342 |
+
}
|
4343 |
+
|
4344 |
+
.bootstrap-wpadmin .popover.top .arrow {
|
4345 |
+
bottom: 0;
|
4346 |
+
left: 50%;
|
4347 |
+
margin-left: -5px;
|
4348 |
+
border-top: 5px solid #000000;
|
4349 |
+
border-right: 5px solid transparent;
|
4350 |
+
border-left: 5px solid transparent;
|
4351 |
+
}
|
4352 |
+
|
4353 |
+
.bootstrap-wpadmin .popover.right .arrow {
|
4354 |
+
top: 50%;
|
4355 |
+
left: 0;
|
4356 |
+
margin-top: -5px;
|
4357 |
+
border-top: 5px solid transparent;
|
4358 |
+
border-right: 5px solid #000000;
|
4359 |
+
border-bottom: 5px solid transparent;
|
4360 |
+
}
|
4361 |
+
|
4362 |
+
.bootstrap-wpadmin .popover.bottom .arrow {
|
4363 |
+
top: 0;
|
4364 |
+
left: 50%;
|
4365 |
+
margin-left: -5px;
|
4366 |
+
border-right: 5px solid transparent;
|
4367 |
+
border-bottom: 5px solid #000000;
|
4368 |
+
border-left: 5px solid transparent;
|
4369 |
+
}
|
4370 |
+
|
4371 |
+
.bootstrap-wpadmin .popover.left .arrow {
|
4372 |
+
top: 50%;
|
4373 |
+
right: 0;
|
4374 |
+
margin-top: -5px;
|
4375 |
+
border-top: 5px solid transparent;
|
4376 |
+
border-bottom: 5px solid transparent;
|
4377 |
+
border-left: 5px solid #000000;
|
4378 |
+
}
|
4379 |
+
|
4380 |
+
.bootstrap-wpadmin .popover .arrow {
|
4381 |
+
position: absolute;
|
4382 |
+
width: 0;
|
4383 |
+
height: 0;
|
4384 |
+
}
|
4385 |
+
|
4386 |
+
.bootstrap-wpadmin .popover-inner {
|
4387 |
+
width: 280px;
|
4388 |
+
padding: 3px;
|
4389 |
+
overflow: hidden;
|
4390 |
+
background: #000000;
|
4391 |
+
background: rgba(0, 0, 0, 0.8);
|
4392 |
+
-webkit-border-radius: 6px;
|
4393 |
+
-moz-border-radius: 6px;
|
4394 |
+
border-radius: 6px;
|
4395 |
+
-webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
4396 |
+
-moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
4397 |
+
box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
|
4398 |
+
}
|
4399 |
+
|
4400 |
+
.bootstrap-wpadmin .popover-title {
|
4401 |
+
padding: 9px 15px;
|
4402 |
+
line-height: 1;
|
4403 |
+
background-color: #f5f5f5;
|
4404 |
+
border-bottom: 1px solid #eee;
|
4405 |
+
-webkit-border-radius: 3px 3px 0 0;
|
4406 |
+
-moz-border-radius: 3px 3px 0 0;
|
4407 |
+
border-radius: 3px 3px 0 0;
|
4408 |
+
}
|
4409 |
+
|
4410 |
+
.bootstrap-wpadmin .popover-content {
|
4411 |
+
padding: 14px;
|
4412 |
+
background-color: #ffffff;
|
4413 |
+
-webkit-border-radius: 0 0 3px 3px;
|
4414 |
+
-moz-border-radius: 0 0 3px 3px;
|
4415 |
+
border-radius: 0 0 3px 3px;
|
4416 |
+
-webkit-background-clip: padding-box;
|
4417 |
+
-moz-background-clip: padding-box;
|
4418 |
+
background-clip: padding-box;
|
4419 |
+
}
|
4420 |
+
|
4421 |
+
.bootstrap-wpadmin .popover-content p,
|
4422 |
+
.bootstrap-wpadmin .popover-content ul,
|
4423 |
+
.bootstrap-wpadmin .popover-content ol {
|
4424 |
+
margin-bottom: 0;
|
4425 |
+
}
|
4426 |
+
|
4427 |
+
.bootstrap-wpadmin .thumbnails {
|
4428 |
+
margin-left: -20px;
|
4429 |
+
list-style: none;
|
4430 |
+
*zoom: 1;
|
4431 |
+
}
|
4432 |
+
|
4433 |
+
.bootstrap-wpadmin .thumbnails:before,
|
4434 |
+
.bootstrap-wpadmin .thumbnails:after {
|
4435 |
+
display: table;
|
4436 |
+
content: "";
|
4437 |
+
}
|
4438 |
+
|
4439 |
+
.bootstrap-wpadmin .thumbnails:after {
|
4440 |
+
clear: both;
|
4441 |
+
}
|
4442 |
+
|
4443 |
+
.bootstrap-wpadmin .row-fluid .thumbnails {
|
4444 |
+
margin-left: 0;
|
4445 |
+
}
|
4446 |
+
|
4447 |
+
.bootstrap-wpadmin .thumbnails > li {
|
4448 |
+
margin-bottom: 18px;
|
4449 |
+
}
|
4450 |
+
|
4451 |
+
.bootstrap-wpadmin .thumbnail {
|
4452 |
+
display: block;
|
4453 |
+
padding: 4px;
|
4454 |
+
line-height: 1;
|
4455 |
+
border: 1px solid #ddd;
|
4456 |
+
-webkit-border-radius: 4px;
|
4457 |
+
-moz-border-radius: 4px;
|
4458 |
+
border-radius: 4px;
|
4459 |
+
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
|
4460 |
+
-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
|
4461 |
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
|
4462 |
+
}
|
4463 |
+
|
4464 |
+
.bootstrap-wpadmin a.thumbnail:hover {
|
4465 |
+
border-color: #0088cc;
|
4466 |
+
-webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
|
4467 |
+
-moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
|
4468 |
+
box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
|
4469 |
+
}
|
4470 |
+
|
4471 |
+
.bootstrap-wpadmin .thumbnail > img {
|
4472 |
+
display: block;
|
4473 |
+
max-width: 100%;
|
4474 |
+
margin-right: auto;
|
4475 |
+
margin-left: auto;
|
4476 |
+
}
|
4477 |
+
|
4478 |
+
.bootstrap-wpadmin .thumbnail .caption {
|
4479 |
+
padding: 9px;
|
4480 |
+
}
|
4481 |
+
|
4482 |
+
.bootstrap-wpadmin .label,
|
4483 |
+
.bootstrap-wpadmin .badge {
|
4484 |
+
font-size: 10.998px;
|
4485 |
+
font-weight: bold;
|
4486 |
+
line-height: 14px;
|
4487 |
+
color: #ffffff;
|
4488 |
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
4489 |
+
white-space: nowrap;
|
4490 |
+
vertical-align: baseline;
|
4491 |
+
background-color: #999999;
|
4492 |
+
}
|
4493 |
+
|
4494 |
+
.bootstrap-wpadmin .label {
|
4495 |
+
padding: 1px 4px 2px;
|
4496 |
+
-webkit-border-radius: 3px;
|
4497 |
+
-moz-border-radius: 3px;
|
4498 |
+
border-radius: 3px;
|
4499 |
+
}
|
4500 |
+
|
4501 |
+
.bootstrap-wpadmin .badge {
|
4502 |
+
padding: 1px 9px 2px;
|
4503 |
+
-webkit-border-radius: 9px;
|
4504 |
+
-moz-border-radius: 9px;
|
4505 |
+
border-radius: 9px;
|
4506 |
+
}
|
4507 |
+
|
4508 |
+
.bootstrap-wpadmin a.label:hover,
|
4509 |
+
.bootstrap-wpadmin a.badge:hover {
|
4510 |
+
color: #ffffff;
|
4511 |
+
text-decoration: none;
|
4512 |
+
cursor: pointer;
|
4513 |
+
}
|
4514 |
+
|
4515 |
+
.bootstrap-wpadmin .label-important,
|
4516 |
+
.bootstrap-wpadmin .badge-important {
|
4517 |
+
background-color: #b94a48;
|
4518 |
+
}
|
4519 |
+
|
4520 |
+
.bootstrap-wpadmin .label-important[href],
|
4521 |
+
.bootstrap-wpadmin .badge-important[href] {
|
4522 |
+
background-color: #953b39;
|
4523 |
+
}
|
4524 |
+
|
4525 |
+
.bootstrap-wpadmin .label-warning,
|
4526 |
+
.bootstrap-wpadmin .badge-warning {
|
4527 |
+
background-color: #f89406;
|
4528 |
+
}
|
4529 |
+
|
4530 |
+
.bootstrap-wpadmin .label-warning[href],
|
4531 |
+
.bootstrap-wpadmin .badge-warning[href] {
|
4532 |
+
background-color: #c67605;
|
4533 |
+
}
|
4534 |
+
|
4535 |
+
.bootstrap-wpadmin .label-success,
|
4536 |
+
.bootstrap-wpadmin .badge-success {
|
4537 |
+
background-color: #468847;
|
4538 |
+
}
|
4539 |
+
|
4540 |
+
.bootstrap-wpadmin .label-success[href],
|
4541 |
+
.bootstrap-wpadmin .badge-success[href] {
|
4542 |
+
background-color: #356635;
|
4543 |
+
}
|
4544 |
+
|
4545 |
+
.bootstrap-wpadmin .label-info,
|
4546 |
+
.bootstrap-wpadmin .badge-info {
|
4547 |
+
background-color: #3a87ad;
|
4548 |
+
}
|
4549 |
+
|
4550 |
+
.bootstrap-wpadmin .label-info[href],
|
4551 |
+
.bootstrap-wpadmin .badge-info[href] {
|
4552 |
+
background-color: #2d6987;
|
4553 |
+
}
|
4554 |
+
|
4555 |
+
.bootstrap-wpadmin .label-inverse,
|
4556 |
+
.bootstrap-wpadmin .badge-inverse {
|
4557 |
+
background-color: #333333;
|
4558 |
+
}
|
4559 |
+
|
4560 |
+
.bootstrap-wpadmin .label-inverse[href],
|
4561 |
+
.bootstrap-wpadmin .badge-inverse[href] {
|
4562 |
+
background-color: #1a1a1a;
|
4563 |
+
}
|
4564 |
+
|
4565 |
+
.bootstrap-wpadmin @-webkit-keyframes progress-bar-stripes {
|
4566 |
+
from {
|
4567 |
+
background-position: 40px 0;
|
4568 |
+
}
|
4569 |
+
to {
|
4570 |
+
background-position: 0 0;
|
4571 |
+
}
|
4572 |
+
}
|
4573 |
+
|
4574 |
+
.bootstrap-wpadmin @-moz-keyframes progress-bar-stripes {
|
4575 |
+
from {
|
4576 |
+
background-position: 40px 0;
|
4577 |
+
}
|
4578 |
+
to {
|
4579 |
+
background-position: 0 0;
|
4580 |
+
}
|
4581 |
+
}
|
4582 |
+
|
4583 |
+
.bootstrap-wpadmin @-ms-keyframes progress-bar-stripes {
|
4584 |
+
from {
|
4585 |
+
background-position: 40px 0;
|
4586 |
+
}
|
4587 |
+
to {
|
4588 |
+
background-position: 0 0;
|
4589 |
+
}
|
4590 |
+
}
|
4591 |
+
|
4592 |
+
.bootstrap-wpadmin @-o-keyframes progress-bar-stripes {
|
4593 |
+
from {
|
4594 |
+
background-position: 0 0;
|
4595 |
+
}
|
4596 |
+
to {
|
4597 |
+
background-position: 40px 0;
|
4598 |
+
}
|
4599 |
+
}
|
4600 |
+
|
4601 |
+
.bootstrap-wpadmin @keyframes progress-bar-stripes {
|
4602 |
+
from {
|
4603 |
+
background-position: 40px 0;
|
4604 |
+
}
|
4605 |
+
to {
|
4606 |
+
background-position: 0 0;
|
4607 |
+
}
|
4608 |
+
}
|
4609 |
+
|
4610 |
+
.bootstrap-wpadmin .progress {
|
4611 |
+
height: 18px;
|
4612 |
+
margin-bottom: 18px;
|
4613 |
+
overflow: hidden;
|
4614 |
+
background-color: #f7f7f7;
|
4615 |
+
background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
|
4616 |
+
background-image: -ms-linear-gradient(top, #f5f5f5, #f9f9f9);
|
4617 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
|
4618 |
+
background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
|
4619 |
+
background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
|
4620 |
+
background-image: linear-gradient(top, #f5f5f5, #f9f9f9);
|
4621 |
+
background-repeat: repeat-x;
|
4622 |
+
-webkit-border-radius: 4px;
|
4623 |
+
-moz-border-radius: 4px;
|
4624 |
+
border-radius: 4px;
|
4625 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);
|
4626 |
+
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
4627 |
+
-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
4628 |
+
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
|
4629 |
+
}
|
4630 |
+
|
4631 |
+
.bootstrap-wpadmin .progress .bar {
|
4632 |
+
width: 0;
|
4633 |
+
height: 18px;
|
4634 |
+
font-size: 12px;
|
4635 |
+
color: #ffffff;
|
4636 |
+
text-align: center;
|
4637 |
+
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
4638 |
+
background-color: #0e90d2;
|
4639 |
+
background-image: -moz-linear-gradient(top, #149bdf, #0480be);
|
4640 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
|
4641 |
+
background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
|
4642 |
+
background-image: -o-linear-gradient(top, #149bdf, #0480be);
|
4643 |
+
background-image: linear-gradient(top, #149bdf, #0480be);
|
4644 |
+
background-image: -ms-linear-gradient(top, #149bdf, #0480be);
|
4645 |
+
background-repeat: repeat-x;
|
4646 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);
|
4647 |
+
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
4648 |
+
-moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
4649 |
+
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
|
4650 |
+
-webkit-box-sizing: border-box;
|
4651 |
+
-moz-box-sizing: border-box;
|
4652 |
+
-ms-box-sizing: border-box;
|
4653 |
+
box-sizing: border-box;
|
4654 |
+
-webkit-transition: width 0.6s ease;
|
4655 |
+
-moz-transition: width 0.6s ease;
|
4656 |
+
-ms-transition: width 0.6s ease;
|
4657 |
+
-o-transition: width 0.6s ease;
|
4658 |
+
transition: width 0.6s ease;
|
4659 |
+
}
|
4660 |
+
|
4661 |
+
.bootstrap-wpadmin .progress-striped .bar {
|
4662 |
+
background-color: #149bdf;
|
4663 |
+
background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4664 |
+
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4665 |
+
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4666 |
+
background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4667 |
+
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
4668 |
+
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4669 |
+
-webkit-background-size: 40px 40px;
|
4670 |
+
-moz-background-size: 40px 40px;
|
4671 |
+
-o-background-size: 40px 40px;
|
4672 |
+
background-size: 40px 40px;
|
4673 |
+
}
|
4674 |
+
|
4675 |
+
.bootstrap-wpadmin .progress.active .bar {
|
4676 |
+
-webkit-animation: progress-bar-stripes 2s linear infinite;
|
4677 |
+
-moz-animation: progress-bar-stripes 2s linear infinite;
|
4678 |
+
-ms-animation: progress-bar-stripes 2s linear infinite;
|
4679 |
+
-o-animation: progress-bar-stripes 2s linear infinite;
|
4680 |
+
animation: progress-bar-stripes 2s linear infinite;
|
4681 |
+
}
|
4682 |
+
|
4683 |
+
.bootstrap-wpadmin .progress-danger .bar {
|
4684 |
+
background-color: #dd514c;
|
4685 |
+
background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
|
4686 |
+
background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
|
4687 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
|
4688 |
+
background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
|
4689 |
+
background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
|
4690 |
+
background-image: linear-gradient(top, #ee5f5b, #c43c35);
|
4691 |
+
background-repeat: repeat-x;
|
4692 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
|
4693 |
+
}
|
4694 |
+
|
4695 |
+
.bootstrap-wpadmin .progress-danger.progress-striped .bar {
|
4696 |
+
background-color: #ee5f5b;
|
4697 |
+
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
4698 |
+
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4699 |
+
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4700 |
+
background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4701 |
+
background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4702 |
+
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4703 |
+
}
|
4704 |
+
|
4705 |
+
.bootstrap-wpadmin .progress-success .bar {
|
4706 |
+
background-color: #5eb95e;
|
4707 |
+
background-image: -moz-linear-gradient(top, #62c462, #57a957);
|
4708 |
+
background-image: -ms-linear-gradient(top, #62c462, #57a957);
|
4709 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
|
4710 |
+
background-image: -webkit-linear-gradient(top, #62c462, #57a957);
|
4711 |
+
background-image: -o-linear-gradient(top, #62c462, #57a957);
|
4712 |
+
background-image: linear-gradient(top, #62c462, #57a957);
|
4713 |
+
background-repeat: repeat-x;
|
4714 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
|
4715 |
+
}
|
4716 |
+
|
4717 |
+
.bootstrap-wpadmin .progress-success.progress-striped .bar {
|
4718 |
+
background-color: #62c462;
|
4719 |
+
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
4720 |
+
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4721 |
+
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4722 |
+
background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4723 |
+
background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4724 |
+
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4725 |
+
}
|
4726 |
+
|
4727 |
+
.bootstrap-wpadmin .progress-info .bar {
|
4728 |
+
background-color: #4bb1cf;
|
4729 |
+
background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
|
4730 |
+
background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
|
4731 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
|
4732 |
+
background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
|
4733 |
+
background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
|
4734 |
+
background-image: linear-gradient(top, #5bc0de, #339bb9);
|
4735 |
+
background-repeat: repeat-x;
|
4736 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
|
4737 |
+
}
|
4738 |
+
|
4739 |
+
.bootstrap-wpadmin .progress-info.progress-striped .bar {
|
4740 |
+
background-color: #5bc0de;
|
4741 |
+
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
4742 |
+
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4743 |
+
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4744 |
+
background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4745 |
+
background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4746 |
+
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4747 |
+
}
|
4748 |
+
|
4749 |
+
.bootstrap-wpadmin .progress-warning .bar {
|
4750 |
+
background-color: #faa732;
|
4751 |
+
background-image: -moz-linear-gradient(top, #fbb450, #f89406);
|
4752 |
+
background-image: -ms-linear-gradient(top, #fbb450, #f89406);
|
4753 |
+
background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
|
4754 |
+
background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
|
4755 |
+
background-image: -o-linear-gradient(top, #fbb450, #f89406);
|
4756 |
+
background-image: linear-gradient(top, #fbb450, #f89406);
|
4757 |
+
background-repeat: repeat-x;
|
4758 |
+
filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);
|
4759 |
+
}
|
4760 |
+
|
4761 |
+
.bootstrap-wpadmin .progress-warning.progress-striped .bar {
|
4762 |
+
background-color: #fbb450;
|
4763 |
+
background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
|
4764 |
+
background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4765 |
+
background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4766 |
+
background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4767 |
+
background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4768 |
+
background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
|
4769 |
+
}
|
4770 |
+
|
4771 |
+
.bootstrap-wpadmin .accordion {
|
4772 |
+
margin-bottom: 18px;
|
4773 |
+
}
|
4774 |
+
|
4775 |
+
.bootstrap-wpadmin .accordion-group {
|
4776 |
+
margin-bottom: 2px;
|
4777 |
+
border: 1px solid #e5e5e5;
|
4778 |
+
-webkit-border-radius: 4px;
|
4779 |
+
-moz-border-radius: 4px;
|
4780 |
+
border-radius: 4px;
|
4781 |
+
}
|
4782 |
+
|
4783 |
+
.bootstrap-wpadmin .accordion-heading {
|
4784 |
+
border-bottom: 0;
|
4785 |
+
}
|
4786 |
+
|
4787 |
+
.bootstrap-wpadmin .accordion-heading .accordion-toggle {
|
4788 |
+
display: block;
|
4789 |
+
padding: 8px 15px;
|
4790 |
+
}
|
4791 |
+
|
4792 |
+
.bootstrap-wpadmin .accordion-toggle {
|
4793 |
+
cursor: pointer;
|
4794 |
+
}
|
4795 |
+
|
4796 |
+
.bootstrap-wpadmin .accordion-inner {
|
4797 |
+
padding: 9px 15px;
|
4798 |
+
border-top: 1px solid #e5e5e5;
|
4799 |
+
}
|
4800 |
+
|
4801 |
+
.bootstrap-wpadmin .carousel {
|
4802 |
+
position: relative;
|
4803 |
+
margin-bottom: 18px;
|
4804 |
+
line-height: 1;
|
4805 |
+
}
|
4806 |
+
|
4807 |
+
.bootstrap-wpadmin .carousel-inner {
|
4808 |
+
position: relative;
|
4809 |
+
width: 100%;
|
4810 |
+
overflow: hidden;
|
4811 |
+
}
|
4812 |
+
|
4813 |
+
.bootstrap-wpadmin .carousel .item {
|
4814 |
+
position: relative;
|
4815 |
+
display: none;
|
4816 |
+
-webkit-transition: 0.6s ease-in-out left;
|
4817 |
+
-moz-transition: 0.6s ease-in-out left;
|
4818 |
+
-ms-transition: 0.6s ease-in-out left;
|
4819 |
+
-o-transition: 0.6s ease-in-out left;
|
4820 |
+
transition: 0.6s ease-in-out left;
|
4821 |
+
}
|
4822 |
+
|
4823 |
+
.bootstrap-wpadmin .carousel .item > img {
|
4824 |
+
display: block;
|
4825 |
+
line-height: 1;
|
4826 |
+
}
|
4827 |
+
|
4828 |
+
.bootstrap-wpadmin .carousel .active,
|
4829 |
+
.bootstrap-wpadmin .carousel .next,
|
4830 |
+
.bootstrap-wpadmin .carousel .prev {
|
4831 |
+
display: block;
|
4832 |
+
}
|
4833 |
+
|
4834 |
+
.bootstrap-wpadmin .carousel .active {
|
4835 |
+
left: 0;
|
4836 |
+
}
|
4837 |
+
|
4838 |
+
.bootstrap-wpadmin .carousel .next,
|
4839 |
+
.bootstrap-wpadmin .carousel .prev {
|
4840 |
+
position: absolute;
|
4841 |
+
top: 0;
|
4842 |
+
width: 100%;
|
4843 |
+
}
|
4844 |
+
|
4845 |
+
.bootstrap-wpadmin .carousel .next {
|
4846 |
+
left: 100%;
|
4847 |
+
}
|
4848 |
+
|
4849 |
+
.bootstrap-wpadmin .carousel .prev {
|
4850 |
+
left: -100%;
|
4851 |
+
}
|
4852 |
+
|
4853 |
+
.bootstrap-wpadmin .carousel .next.left,
|
4854 |
+
.bootstrap-wpadmin .carousel .prev.right {
|
4855 |
+
left: 0;
|
4856 |
+
}
|
4857 |
+
|
4858 |
+
.bootstrap-wpadmin .carousel .active.left {
|
4859 |
+
left: -100%;
|
4860 |
+
}
|
4861 |
+
|
4862 |
+
.bootstrap-wpadmin .carousel .active.right {
|
4863 |
+
left: 100%;
|
4864 |
+
}
|
4865 |
+
|
4866 |
+
.bootstrap-wpadmin .carousel-control {
|
4867 |
+
position: absolute;
|
4868 |
+
top: 40%;
|
4869 |
+
left: 15px;
|
4870 |
+
width: 40px;
|
4871 |
+
height: 40px;
|
4872 |
+
margin-top: -20px;
|
4873 |
+
font-size: 60px;
|
4874 |
+
font-weight: 100;
|
4875 |
+
line-height: 30px;
|
4876 |
+
color: #ffffff;
|
4877 |
+
text-align: center;
|
4878 |
+
background: #222222;
|
4879 |
+
border: 3px solid #ffffff;
|
4880 |
+
-webkit-border-radius: 23px;
|
4881 |
+
-moz-border-radius: 23px;
|
4882 |
+
border-radius: 23px;
|
4883 |
+
opacity: 0.5;
|
4884 |
+
filter: alpha(opacity=50);
|
4885 |
+
}
|
4886 |
+
|
4887 |
+
.bootstrap-wpadmin .carousel-control.right {
|
4888 |
+
right: 15px;
|
4889 |
+
left: auto;
|
4890 |
+
}
|
4891 |
+
|
4892 |
+
.bootstrap-wpadmin .carousel-control:hover {
|
4893 |
+
color: #ffffff;
|
4894 |
+
text-decoration: none;
|
4895 |
+
opacity: 0.9;
|
4896 |
+
filter: alpha(opacity=90);
|
4897 |
+
}
|
4898 |
+
|
4899 |
+
.bootstrap-wpadmin .carousel-caption {
|
4900 |
+
position: absolute;
|
4901 |
+
right: 0;
|
4902 |
+
bottom: 0;
|
4903 |
+
left: 0;
|
4904 |
+
padding: 10px 15px 5px;
|
4905 |
+
background: #333333;
|
4906 |
+
background: rgba(0, 0, 0, 0.75);
|
4907 |
+
}
|
4908 |
+
|
4909 |
+
.bootstrap-wpadmin .carousel-caption h4,
|
4910 |
+
.bootstrap-wpadmin .carousel-caption p {
|
4911 |
+
color: #ffffff;
|
4912 |
+
}
|
4913 |
+
|
4914 |
+
.bootstrap-wpadmin .hero-unit {
|
4915 |
+
padding: 60px;
|
4916 |
+
margin-bottom: 30px;
|
4917 |
+
background-color: #eeeeee;
|
4918 |
+
-webkit-border-radius: 6px;
|
4919 |
+
-moz-border-radius: 6px;
|
4920 |
+
border-radius: 6px;
|
4921 |
+
}
|
4922 |
+
|
4923 |
+
.bootstrap-wpadmin .hero-unit h1 {
|
4924 |
+
margin-bottom: 0;
|
4925 |
+
font-size: 60px;
|
4926 |
+
line-height: 1;
|
4927 |
+
letter-spacing: -1px;
|
4928 |
+
color: inherit;
|
4929 |
+
}
|
4930 |
+
|
4931 |
+
.bootstrap-wpadmin .hero-unit p {
|
4932 |
+
font-size: 18px;
|
4933 |
+
font-weight: 200;
|
4934 |
+
line-height: 27px;
|
4935 |
+
color: inherit;
|
4936 |
+
}
|
4937 |
+
|
4938 |
+
.bootstrap-wpadmin .pull-right {
|
4939 |
+
float: right;
|
4940 |
+
}
|
4941 |
+
|
4942 |
+
.bootstrap-wpadmin .pull-left {
|
4943 |
+
float: left;
|
4944 |
+
}
|
4945 |
+
|
4946 |
+
.bootstrap-wpadmin .hide {
|
4947 |
+
display: none;
|
4948 |
+
}
|
4949 |
+
|
4950 |
+
.bootstrap-wpadmin .show {
|
4951 |
+
display: block;
|
4952 |
+
}
|
4953 |
+
|
4954 |
+
.bootstrap-wpadmin .invisible {
|
4955 |
+
visibility: hidden;
|
4956 |
+
}
|
resources/css/icontrolwp-plugin.css
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@CHARSET "ISO-8859-1";
|
2 |
+
|
3 |
+
/* GENERAL STYLES */
|
4 |
+
|
5 |
+
.bootstrap-wpadmin {
|
6 |
+
}
|
7 |
+
.bootstrap-wpadmin .row {
|
8 |
+
margin-left: 0;
|
9 |
+
}
|
10 |
+
#icontrolwp-icon {
|
11 |
+
background: url("../images/icontrolwp_32x32.png") no-repeat 0px 3px transparent;
|
12 |
+
}
|
13 |
+
.wrap .icon32 {
|
14 |
+
width: 32px;
|
15 |
+
}
|
16 |
+
.bootstrap-wpadmin .page-header {
|
17 |
+
padding-bottom: 17px;
|
18 |
+
margin: 18px 0;
|
19 |
+
border-bottom: 1px solid #EEE;
|
20 |
+
}
|
21 |
+
/* Form elements */
|
22 |
+
.bootstrap-wpadmin form fieldset {
|
23 |
+
}
|
24 |
+
.bootstrap-wpadmin .label {
|
25 |
+
vertical-align: baseline !important;
|
26 |
+
}
|
27 |
+
.shortcode-usage {
|
28 |
+
border-bottom: 1px solid #bbbbbb;
|
29 |
+
margin-bottom: 10px;
|
30 |
+
}
|
31 |
+
p.code-description {
|
32 |
+
font-style: italic;
|
33 |
+
}
|
34 |
+
/* Worpit promo */
|
35 |
+
#worpit_button {
|
36 |
+
background: url("../images/bright_squares.png") #EFEFEF;
|
37 |
+
}
|
38 |
+
#worpit_button {
|
39 |
+
border: 1px solid #cccccc;
|
40 |
+
border-radius: 4px;
|
41 |
+
height: 190px;
|
42 |
+
}
|
43 |
+
#worpit_button:hover {
|
44 |
+
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.4);
|
45 |
+
border: 1px solid transparent;
|
46 |
+
}
|
47 |
+
.row#developer_channel_promo #developer_channel_description .well {
|
48 |
+
height: 275px;
|
49 |
+
}
|
50 |
+
.row#developer_channel_promo #developer_channel_form {
|
51 |
+
border: 1px solid #EEE;
|
52 |
+
border-radius: 6px;
|
53 |
+
height: 315px; /* 275px + 20px-padding-x2 */
|
54 |
+
}
|
55 |
+
.row#developer_channel_promo #developer_channel_form h3 {
|
56 |
+
padding: 10px 20px;
|
57 |
+
}
|
58 |
+
|
59 |
+
/** LESS PAGE **/
|
60 |
+
.enabled_section {
|
61 |
+
opacity: 1.0;
|
62 |
+
}
|
63 |
+
.disabled_section {
|
64 |
+
opacity: 0.5;
|
65 |
+
}
|
66 |
+
/* BOOSTRAP SETTINGS PAGE STYLES */
|
67 |
+
.wrap .icon32 {
|
68 |
+
width: 32px;
|
69 |
+
}
|
70 |
+
.submit span {
|
71 |
+
font-size: smaller;
|
72 |
+
font-style: italic;
|
73 |
+
}
|
74 |
+
.option_section {
|
75 |
+
border: 1px solid #f2f2f2;
|
76 |
+
border-radius: 8px 8px 8px 8px;
|
77 |
+
margin-bottom: 8px;
|
78 |
+
padding: 8px 10px;
|
79 |
+
}
|
80 |
+
.option_section label {
|
81 |
+
background-color: transparent;
|
82 |
+
}
|
83 |
+
.selected_item label {
|
84 |
+
font-weight: bold;
|
85 |
+
}
|
86 |
+
.nonselected_item {
|
87 |
+
background-color: transparent;
|
88 |
+
}
|
89 |
+
.nonselected_item label {
|
90 |
+
font-weight: normal;
|
91 |
+
}
|
92 |
+
.option_section:hover {
|
93 |
+
background-color: #ffffff;
|
94 |
+
border: 1px dashed #BBBBBB;
|
95 |
+
cursor: pointer;
|
96 |
+
}
|
97 |
+
|
98 |
+
.option_section.active {
|
99 |
+
background-color: #f6f6f6;
|
100 |
+
border-color: #dddddd;
|
101 |
+
}
|
102 |
+
table.tbl_tbs_options {
|
103 |
+
width: 100%;
|
104 |
+
border: 1px solid transparent;
|
105 |
+
}
|
106 |
+
table.tbl_tbs_options tr td {
|
107 |
+
width: 49%;
|
108 |
+
border: 1px solid transparent;
|
109 |
+
}
|
110 |
+
|
111 |
+
select#hlt_bootstrap_option {
|
112 |
+
padding: 5px;
|
113 |
+
border-radius:6px 6px 6px 6px;
|
114 |
+
line-height: auto;
|
115 |
+
height: 30px;
|
116 |
+
width: 200px;
|
117 |
+
}
|
118 |
+
|
119 |
+
table#tbl_tbs_options_javascript td {
|
120 |
+
vertical-align: top;
|
121 |
+
width: 50%;
|
122 |
+
}
|
123 |
+
|
124 |
+
/** OPTIONS PAGES **/
|
125 |
+
.bootstrap-wpadmin .row.row_number_1 {
|
126 |
+
padding-top: 18px;
|
127 |
+
}
|
resources/css/worpit-plugin.css
ADDED
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@CHARSET "ISO-8859-1";
|
2 |
+
|
3 |
+
/* GENERAL STYLES */
|
4 |
+
|
5 |
+
.bootstrap-wpadmin {
|
6 |
+
}
|
7 |
+
.bootstrap-wpadmin .row {
|
8 |
+
margin-left: 0;
|
9 |
+
}
|
10 |
+
#worpit-icon {
|
11 |
+
background: url("../images/worpit_32x32.png") no-repeat 0px 3px transparent;
|
12 |
+
}
|
13 |
+
/* Form elements */
|
14 |
+
.bootstrap-wpadmin form fieldset {
|
15 |
+
}
|
16 |
+
.bootstrap-wpadmin .label {
|
17 |
+
vertical-align: baseline !important;
|
18 |
+
}
|
19 |
+
.shortcode-usage {
|
20 |
+
border-bottom: 1px solid #bbbbbb;
|
21 |
+
margin-bottom: 10px;
|
22 |
+
}
|
23 |
+
p.code-description {
|
24 |
+
font-style: italic;
|
25 |
+
}
|
26 |
+
/* Worpit promo */
|
27 |
+
#worpit_button {
|
28 |
+
background: url("../images/bright_squares.png") #EFEFEF;
|
29 |
+
}
|
30 |
+
#worpit_button {
|
31 |
+
border: 1px solid #cccccc;
|
32 |
+
border-radius: 4px;
|
33 |
+
height: 190px;
|
34 |
+
}
|
35 |
+
#worpit_button:hover {
|
36 |
+
box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.4);
|
37 |
+
border: 1px solid transparent;
|
38 |
+
}
|
39 |
+
.row#developer_channel_promo #developer_channel_description .well {
|
40 |
+
height: 275px;
|
41 |
+
}
|
42 |
+
.row#developer_channel_promo #developer_channel_form {
|
43 |
+
border: 1px solid #EEE;
|
44 |
+
border-radius: 6px;
|
45 |
+
height: 315px; /* 275px + 20px-padding-x2 */
|
46 |
+
}
|
47 |
+
.row#developer_channel_promo #developer_channel_form h3 {
|
48 |
+
padding: 10px 20px;
|
49 |
+
}
|
50 |
+
|
51 |
+
/** LESS PAGE **/
|
52 |
+
.enabled_section {
|
53 |
+
opacity: 1.0;
|
54 |
+
}
|
55 |
+
.disabled_section {
|
56 |
+
opacity: 0.5;
|
57 |
+
}
|
58 |
+
/* BOOSTRAP SETTINGS PAGE STYLES */
|
59 |
+
.wrap .icon32 {
|
60 |
+
width: 32px;
|
61 |
+
}
|
62 |
+
.submit span {
|
63 |
+
font-size: smaller;
|
64 |
+
font-style: italic;
|
65 |
+
}
|
66 |
+
.option_section {
|
67 |
+
border: 1px solid #f2f2f2;
|
68 |
+
border-radius: 8px 8px 8px 8px;
|
69 |
+
margin-bottom: 8px;
|
70 |
+
padding: 8px 10px;
|
71 |
+
}
|
72 |
+
.option_section label {
|
73 |
+
background-color: transparent;
|
74 |
+
}
|
75 |
+
.selected_item label {
|
76 |
+
font-weight: bold;
|
77 |
+
}
|
78 |
+
.nonselected_item {
|
79 |
+
background-color: transparent;
|
80 |
+
}
|
81 |
+
.nonselected_item label {
|
82 |
+
font-weight: normal;
|
83 |
+
}
|
84 |
+
.option_section:hover {
|
85 |
+
background-color: #ffffff;
|
86 |
+
border: 1px dashed #BBBBBB;
|
87 |
+
cursor: pointer;
|
88 |
+
}
|
89 |
+
|
90 |
+
.option_section.active {
|
91 |
+
background-color: #f6f6f6;
|
92 |
+
border-color: #dddddd;
|
93 |
+
}
|
94 |
+
table.tbl_tbs_options {
|
95 |
+
width: 100%;
|
96 |
+
border: 1px solid transparent;
|
97 |
+
}
|
98 |
+
table.tbl_tbs_options tr td {
|
99 |
+
width: 49%;
|
100 |
+
border: 1px solid transparent;
|
101 |
+
}
|
102 |
+
|
103 |
+
select#hlt_bootstrap_option {
|
104 |
+
padding: 5px;
|
105 |
+
border-radius:6px 6px 6px 6px;
|
106 |
+
line-height: auto;
|
107 |
+
height: 30px;
|
108 |
+
width: 200px;
|
109 |
+
}
|
110 |
+
|
111 |
+
table#tbl_tbs_options_javascript td {
|
112 |
+
vertical-align: top;
|
113 |
+
width: 50%;
|
114 |
+
}
|
115 |
+
|
116 |
+
/** OPTIONS PAGES **/
|
117 |
+
.bootstrap-wpadmin .row.row_number_1 {
|
118 |
+
padding-top: 18px;
|
119 |
+
}
|
resources/images/bright_squares.png
ADDED
Binary file
|
resources/images/icontrolwp_16x16.png
ADDED
Binary file
|
resources/images/icontrolwp_24x24.png
ADDED
Binary file
|
resources/images/icontrolwp_32x32.png
ADDED
Binary file
|
src/icwp-data-processor.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Copyright (c) 2013 iControlWP <support@icontrolwp.com>
|
5 |
+
* All rights reserved.
|
6 |
+
*
|
7 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
8 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
9 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
10 |
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
11 |
+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
12 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
13 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
14 |
+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
15 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
16 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
17 |
+
*
|
18 |
+
*/
|
19 |
+
|
20 |
+
if ( !class_exists('ICWP_DataProcessor') ):
|
21 |
+
|
22 |
+
class ICWP_DataProcessor {
|
23 |
+
|
24 |
+
static public function ExtractIpAddresses( $insAddresses = '' ) {
|
25 |
+
|
26 |
+
$aAddresses = array();
|
27 |
+
|
28 |
+
if ( empty( $insAddresses ) ) {
|
29 |
+
return $aAddresses;
|
30 |
+
}
|
31 |
+
$aRawList = array_map( 'trim', explode( "\n", $insAddresses ) );
|
32 |
+
|
33 |
+
foreach( $aRawList as $sKey => $sRawAddress ) {
|
34 |
+
$aRawList[ $sKey ] = self::Clean_Ip( $sRawAddress );;
|
35 |
+
}
|
36 |
+
|
37 |
+
if ( function_exists('filter_var') && defined( FILTER_VALIDATE_IP ) ) {
|
38 |
+
$fUseFilter = true;
|
39 |
+
}
|
40 |
+
else {
|
41 |
+
$fUseFilter = false;
|
42 |
+
}
|
43 |
+
|
44 |
+
foreach( $aRawList as $sAddress ) {
|
45 |
+
if ( self::Verify_Ip( $sAddress, $fUseFilter ) ) {
|
46 |
+
$aAddresses[] = $sAddress;
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
return array_unique( $aAddresses );
|
51 |
+
}
|
52 |
+
|
53 |
+
public static function Clean_Ip( $insRawAddress ) {
|
54 |
+
$insRawAddress = preg_replace( '/[a-z\s]/i', '', $insRawAddress );
|
55 |
+
$insRawAddress = str_replace( '.', 'PERIOD', $insRawAddress );
|
56 |
+
$insRawAddress = preg_replace( '/[^a-z0-9]/i', '', $insRawAddress );
|
57 |
+
$insRawAddress = str_replace( 'PERIOD', '.', $insRawAddress );
|
58 |
+
return $insRawAddress;
|
59 |
+
}
|
60 |
+
|
61 |
+
public static function Verify_Ip( $insIpAddress, $infUseFilter = false ) {
|
62 |
+
if ( $infUseFilter ) {
|
63 |
+
if ( filter_var( $insIpAddress, FILTER_VALIDATE_IP ) ) {
|
64 |
+
return true;
|
65 |
+
}
|
66 |
+
}
|
67 |
+
else {
|
68 |
+
if ( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $insIpAddress ) ) { //It's a valid IPv4 format, now check components
|
69 |
+
$aParts = explode( '.', $insIpAddress );
|
70 |
+
foreach ( $aParts as $sPart ) {
|
71 |
+
$sPart = intval( $sPart );
|
72 |
+
if ( $sPart < 0 || $sPart > 255 ) {
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
}
|
76 |
+
return true;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
}
|
82 |
+
|
83 |
+
endif;
|
src/icwp-firewall-processor.php
ADDED
@@ -0,0 +1,502 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013 iControlWP <support@icontrolwp.com>
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
7 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
8 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
9 |
+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
10 |
+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
11 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
12 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
13 |
+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
14 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
15 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
16 |
+
*
|
17 |
+
*/
|
18 |
+
|
19 |
+
if ( !class_exists('ICWP_DataProcessor') ):
|
20 |
+
|
21 |
+
class ICWP_FirewallProcessor {
|
22 |
+
|
23 |
+
const PcreDelimiter = '/';
|
24 |
+
const LOG_MESSAGE_TYPE_INFO = 0;
|
25 |
+
const LOG_MESSAGE_TYPE_WARNING = 1;
|
26 |
+
const LOG_MESSAGE_TYPE_CRITICAL = 2;
|
27 |
+
|
28 |
+
protected $m_sRequestId;
|
29 |
+
protected $m_sRequestIp;
|
30 |
+
|
31 |
+
protected $m_aBlockSettings;
|
32 |
+
protected $m_sBlockResponse;
|
33 |
+
protected $m_aWhitelistIps;
|
34 |
+
protected $m_aBlacklistIps;
|
35 |
+
|
36 |
+
protected $m_aWhitelistPages;
|
37 |
+
protected $m_aWhitelistPagesPatterns;
|
38 |
+
|
39 |
+
protected $m_aRequestUriParts;
|
40 |
+
|
41 |
+
protected $m_aLog;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* A combination of the current request $_GET and $_POST
|
45 |
+
* @var array
|
46 |
+
*/
|
47 |
+
protected $m_aPageParams;
|
48 |
+
|
49 |
+
/**
|
50 |
+
* All the remaining values of the page parameters after they've been filtered
|
51 |
+
* @var array
|
52 |
+
*/
|
53 |
+
protected $m_aPageParamValues;
|
54 |
+
|
55 |
+
public function __construct( $inaBlockSettings, $inaIpWhitelist, $inaIpBlacklist, $insBlockResponse ) {
|
56 |
+
|
57 |
+
$this->reset();
|
58 |
+
$this->m_aBlockSettings = $inaBlockSettings;
|
59 |
+
$this->m_sBlockResponse = $insBlockResponse;
|
60 |
+
$this->m_aWhitelistIps = $inaIpWhitelist;
|
61 |
+
$this->m_aBlacklistIps = $inaIpBlacklist;
|
62 |
+
}
|
63 |
+
|
64 |
+
public function reset() {
|
65 |
+
$this->m_sRequestIp = self::GetVisitorIpAddress();
|
66 |
+
$this->m_sRequestId = $this->m_sRequestIp.'_'.uniqid();
|
67 |
+
$this->m_aRequestUriParts = array();
|
68 |
+
$this->m_aPageParams = array();
|
69 |
+
$this->m_aPageParamValues = array();
|
70 |
+
$this->resetLog();
|
71 |
+
}
|
72 |
+
|
73 |
+
public function resetLog() {
|
74 |
+
if ( !is_array($this->m_aLog) ) {
|
75 |
+
$this->m_aLog = array();
|
76 |
+
}
|
77 |
+
$this->m_aLog[ $this->m_sRequestId ] = array();
|
78 |
+
}
|
79 |
+
|
80 |
+
public function getLog() {
|
81 |
+
return $this->m_aLog;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
*
|
86 |
+
* @param string $insLogMessage
|
87 |
+
* @param string $insMessageType
|
88 |
+
*/
|
89 |
+
public function writeLog( $insLogMessage = '', $insMessageType = self::LOG_MESSAGE_TYPE_INFO ) {
|
90 |
+
if ( !isset( $this->m_aLog[ $this->m_sRequestId ] ) ) {
|
91 |
+
$this->resetLog();
|
92 |
+
}
|
93 |
+
$this->m_aLog[ $this->m_sRequestId ][] = array( time(), $insMessageType, $insLogMessage );
|
94 |
+
}
|
95 |
+
|
96 |
+
public function doFirewallCheck() {
|
97 |
+
|
98 |
+
//Check if the visitor is excluded from the firewall from the outset.
|
99 |
+
if ( $this->isVisitorOnWhitelist() ) {
|
100 |
+
$this->logInfo( 'Visitor is whitelisted by IP Address' );
|
101 |
+
return true;
|
102 |
+
}
|
103 |
+
else {
|
104 |
+
$this->logInfo( 'Visitor is NOT whitelisted by IP Address' );
|
105 |
+
}
|
106 |
+
|
107 |
+
//Check if the visitor is excluded from the firewall from the outset.
|
108 |
+
if ( $this->isVisitorOnBlacklist() ) {
|
109 |
+
$this->logWarning( 'Visitor is blacklisted by IP Address' );
|
110 |
+
return false;
|
111 |
+
}
|
112 |
+
else {
|
113 |
+
$this->logInfo( 'Visitor is NOT blacklisted by IP Address' );
|
114 |
+
}
|
115 |
+
|
116 |
+
// if we can't process the REQUEST_URI parts, we can't firewall so we effectively whitelist without erroring.
|
117 |
+
if ( !$this->setRequestUriPageParts() ) {
|
118 |
+
return true;
|
119 |
+
}
|
120 |
+
|
121 |
+
$fIsPermittedVisitor = true;
|
122 |
+
|
123 |
+
//Checking this comes before all else but after the IP whitelist check.
|
124 |
+
if ( $this->m_aBlockSettings[ 'block_wplogin_access' ] ) {
|
125 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockWpLogin();
|
126 |
+
}
|
127 |
+
|
128 |
+
// Set up the page parameters ($_GET and $_POST). If there are none, quit since there's nothing for the firewall to check.
|
129 |
+
$this->setPageParams();
|
130 |
+
if ( $fIsPermittedVisitor && empty( $this->m_aPageParams ) ) {
|
131 |
+
$this->logInfo( 'There were no page parameters to check on this visit.' );
|
132 |
+
return true;
|
133 |
+
}
|
134 |
+
|
135 |
+
// Check if the page and its parameters are whitelisted.
|
136 |
+
if ( $fIsPermittedVisitor && $this->isPageWhitelisted() ) {
|
137 |
+
return true;
|
138 |
+
}
|
139 |
+
|
140 |
+
// ensures we have a simple array with all the values that need to be checked.
|
141 |
+
$this->m_aPageParamValues = array_values( $this->m_aPageParams );
|
142 |
+
|
143 |
+
if ( $fIsPermittedVisitor && $this->m_aBlockSettings[ 'block_dir_traversal' ] ) {
|
144 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockDirTraversal();
|
145 |
+
}
|
146 |
+
if ( $fIsPermittedVisitor && $this->m_aBlockSettings[ 'block_sql_queries' ] ) {
|
147 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockSqlQueries();
|
148 |
+
}
|
149 |
+
if ( $fIsPermittedVisitor && $this->m_aBlockSettings[ 'block_wordpress_terms' ] ) {
|
150 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockWordpressTerms();
|
151 |
+
}
|
152 |
+
if ( $fIsPermittedVisitor && $this->m_aBlockSettings[ 'block_field_truncation' ] ) {
|
153 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockFieldTruncation();
|
154 |
+
}
|
155 |
+
if ( $fIsPermittedVisitor && $this->m_aBlockSettings[ 'block_exe_file_uploads' ] ) {
|
156 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockExeFileUploads();
|
157 |
+
}
|
158 |
+
if ( $fIsPermittedVisitor && $this->m_aBlockSettings[ 'block_leading_schema' ] ) {
|
159 |
+
$fIsPermittedVisitor = $this->doPassCheckBlockLoadingSchema();
|
160 |
+
}
|
161 |
+
|
162 |
+
return $fIsPermittedVisitor || isset($_GET['testfirewall']); //testing
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* This function assumes that isVisitorOnWhitelist() check has been run previously. Meaning the
|
167 |
+
* current visitor is NOT on the whitelist and so if the page they're accessing is wp-login then
|
168 |
+
* they do not pass this check.
|
169 |
+
*
|
170 |
+
* If whitelisted IPs is empty, we never block access.
|
171 |
+
*
|
172 |
+
* @return boolean
|
173 |
+
*/
|
174 |
+
protected function doPassCheckBlockWpLogin() {
|
175 |
+
|
176 |
+
list( $sRequestPage, $sRequestQuery ) = $this->m_aRequestUriParts;
|
177 |
+
|
178 |
+
if ( substr_count( $sRequestPage, '/wp-login.php' ) > 0 ) {
|
179 |
+
|
180 |
+
// We don't block wp-login.php if there are no whitelisted IPs.
|
181 |
+
if ( count( $this->m_aWhitelistIps ) < 1 ) {
|
182 |
+
$this->logInfo( 'Requested: Block access to wp-login.php, but this was skipped because whitelisted IPs list was empty.' );
|
183 |
+
return true;
|
184 |
+
}
|
185 |
+
|
186 |
+
$this->logWarning( 'Requested: Block access to wp-login.php. Visitor not on IP whitelist and blocked by firewall.' );
|
187 |
+
return false;
|
188 |
+
}
|
189 |
+
return true;
|
190 |
+
}
|
191 |
+
|
192 |
+
protected function doPassCheckBlockDirTraversal() {
|
193 |
+
$aTerms = array(
|
194 |
+
'etc/passwd',
|
195 |
+
'proc/self/environ',
|
196 |
+
'../'
|
197 |
+
);
|
198 |
+
$fPass = $this->doPassCheck( $this->m_aPageParamValues, $aTerms );
|
199 |
+
if ( !$fPass ) {
|
200 |
+
$this->logWarning( 'Requested: Block Directory Traversal. This visitor.' );
|
201 |
+
}
|
202 |
+
return $fPass;
|
203 |
+
}
|
204 |
+
|
205 |
+
protected function doPassCheckBlockSqlQueries() {
|
206 |
+
$aTerms = array(
|
207 |
+
'/concat\s*\(/i',
|
208 |
+
'/group_concat/i',
|
209 |
+
'/union.*select/i'
|
210 |
+
);
|
211 |
+
$fPass = $this->doPassCheck( $this->m_aPageParamValues, $aTerms, true );
|
212 |
+
if ( !$fPass ) {
|
213 |
+
$this->logWarning( 'Requested: Block access to wp-login.php, but this was skipped because whitelisted IPs list was empty.' );
|
214 |
+
}
|
215 |
+
return $fPass;
|
216 |
+
}
|
217 |
+
|
218 |
+
protected function doPassCheckBlockWordpressTerms() {
|
219 |
+
$aTerms = array(
|
220 |
+
'/wp_/i',
|
221 |
+
'/user_login/i',
|
222 |
+
'/user_pass/i',
|
223 |
+
'/0x[0-9a-f][0-9a-f]/i',
|
224 |
+
'/\/\*\*\//'
|
225 |
+
);
|
226 |
+
return $this->doPassCheck( $this->m_aPageParamValues, $aTerms, true );
|
227 |
+
}
|
228 |
+
|
229 |
+
protected function doPassCheckBlockFieldTruncation() {
|
230 |
+
$aTerms = array(
|
231 |
+
'/\s{49,}/i',
|
232 |
+
'/\x00/'
|
233 |
+
);
|
234 |
+
return $this->doPassCheck( $this->m_aPageParamValues, $aTerms, true );
|
235 |
+
}
|
236 |
+
|
237 |
+
protected function doPassCheckBlockExeFileUploads() {
|
238 |
+
$aTerms = array(
|
239 |
+
'/\.dll$/i', '/\.rb$/i', '/\.py$/i', '/\.exe$/i', '/\.php[3-6]?$/i', '/\.pl$/i',
|
240 |
+
'/\.perl$/i', '/\.ph[34]$/i', '/\.phl$/i', '/\.phtml$/i', '/\.phtm$/i'
|
241 |
+
);
|
242 |
+
|
243 |
+
if ( isset( $_FILES ) && !empty( $_FILES ) ) {
|
244 |
+
$aFileNames = array();
|
245 |
+
foreach( $_FILES as $aFile ) {
|
246 |
+
if ( !empty( $aFile['name'] ) ) {
|
247 |
+
$aFileNames[] = $aFile['name'];
|
248 |
+
}
|
249 |
+
}
|
250 |
+
return $this->doPassCheck( $aFileNames, $aTerms, true );
|
251 |
+
}
|
252 |
+
|
253 |
+
return true;
|
254 |
+
}
|
255 |
+
|
256 |
+
protected function doPassCheckBlockLoadingSchema() {
|
257 |
+
$aTerms = array(
|
258 |
+
'/^http/i', '/\.shtml$/i'
|
259 |
+
);
|
260 |
+
return $this->doPassCheck( $this->m_aPageParamValues, $aTerms, true );
|
261 |
+
}
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Returns false when check fails - that is to say, it should be blocked by the firewall.
|
265 |
+
*
|
266 |
+
* @param array $inaValues
|
267 |
+
* @param array $inaTerms
|
268 |
+
* @param boolean $infRegex
|
269 |
+
* @return boolean
|
270 |
+
*/
|
271 |
+
private function doPassCheck( $inaValues, $inaTerms, $infRegex = false ) {
|
272 |
+
|
273 |
+
foreach ( $inaValues as $sValue ) {
|
274 |
+
foreach ( $inaTerms as $sTerm ) {
|
275 |
+
|
276 |
+
if ( $infRegex && preg_match( $sTerm, $sValue ) ) { //dodgy term pattern found in a parameter value
|
277 |
+
$this->logWarning(
|
278 |
+
sprintf( 'Page parameter failed firewall check. The value was %s and the term is matched was %s', $sValue, $sTerm )
|
279 |
+
);
|
280 |
+
return false;
|
281 |
+
}
|
282 |
+
else {
|
283 |
+
if ( strpos( $sValue, $sTerm ) !== false ) { //dodgy term found in a parameter value
|
284 |
+
$this->logWarning(
|
285 |
+
sprintf( 'Page parameter failed firewall check. The value was %s and the search term it matched was %s', $sValue, $sTerm )
|
286 |
+
);
|
287 |
+
return false;
|
288 |
+
}
|
289 |
+
}
|
290 |
+
}
|
291 |
+
}
|
292 |
+
return true;
|
293 |
+
}
|
294 |
+
|
295 |
+
public function doFirewallBlock() {
|
296 |
+
|
297 |
+
switch( $this->m_sBlockResponse ) {
|
298 |
+
|
299 |
+
case 'redirect_home':
|
300 |
+
header( "Location: ".home_url().'?testfirewall' );
|
301 |
+
exit();
|
302 |
+
break;
|
303 |
+
case 'redirect_404':
|
304 |
+
header( "Location: ".home_url().'/404?testfirewall' );
|
305 |
+
exit();
|
306 |
+
break;
|
307 |
+
case 'redirect_die':
|
308 |
+
die();
|
309 |
+
}
|
310 |
+
}
|
311 |
+
|
312 |
+
public function isPageWhitelisted() {
|
313 |
+
|
314 |
+
if ( empty( $this->m_aWhitelistPages ) ) {
|
315 |
+
$this->setWhitelistPages();
|
316 |
+
}
|
317 |
+
if ( empty( $this->m_aWhitelistPages ) ) {
|
318 |
+
return false;
|
319 |
+
}
|
320 |
+
|
321 |
+
// Check normal whitelisting pages without patterns.
|
322 |
+
if ( $this->checkPagesForWhiteListing( $this->m_aWhitelistPages ) ) {
|
323 |
+
return true;
|
324 |
+
}
|
325 |
+
// Check pattern-based whitelisting pages.
|
326 |
+
if ( $this->checkPagesForWhiteListing( $this->m_aWhitelistPagesPatterns ) ) {
|
327 |
+
return true;
|
328 |
+
}
|
329 |
+
|
330 |
+
return false;
|
331 |
+
}
|
332 |
+
|
333 |
+
/**
|
334 |
+
*
|
335 |
+
* @param array $inaWhitelistPagesParams
|
336 |
+
* @param boolean $infUseRegex
|
337 |
+
* @return boolean
|
338 |
+
*/
|
339 |
+
protected function checkPagesForWhiteListing( $inaWhitelistPagesParams = array(), $infUseRegex = false ) {
|
340 |
+
|
341 |
+
list( $sRequestPage, $sRequestQuery ) = $this->m_aRequestUriParts;
|
342 |
+
|
343 |
+
// Now we compare pages in the whitelist with the parts of the request uri. If we get a match, that page is whitelisted
|
344 |
+
$aWhitelistPages = array_keys( $inaWhitelistPagesParams );
|
345 |
+
|
346 |
+
// 1. Is the page in the list of white pages?
|
347 |
+
$fPageWhitelisted = false;
|
348 |
+
if ( $infUseRegex ) {
|
349 |
+
foreach ( $aWhitelistPages as $sPagePattern ) {
|
350 |
+
if ( preg_match( $sPagePattern, $sRequestPage ) ) {
|
351 |
+
$fPageWhitelisted = true;
|
352 |
+
break;
|
353 |
+
}
|
354 |
+
}
|
355 |
+
}
|
356 |
+
else if ( in_array( $sRequestPage, $aWhitelistPages ) ) {
|
357 |
+
$fPageWhitelisted = true;
|
358 |
+
}
|
359 |
+
|
360 |
+
if ( $fPageWhitelisted ) {
|
361 |
+
// the current page is whitelisted - now check if it has request parameters.
|
362 |
+
if ( empty( $inaWhitelistPagesParams[$sRequestPage] ) ) {
|
363 |
+
return true; //because it's just plain whitelisted
|
364 |
+
}
|
365 |
+
foreach ( $inaWhitelistPagesParams[$sRequestPage] as $sWhitelistParam ) {
|
366 |
+
if ( array_key_exists( $sWhitelistParam, $this->m_aPageParams ) ) {
|
367 |
+
unset( $this->m_aPageParams[ $sWhitelistParam ] );
|
368 |
+
}
|
369 |
+
}
|
370 |
+
// After removing all the whitelisted params, we now check if there are any params left that'll
|
371 |
+
// need matched later in the firewall checking. If there are no parameters left, we return true.
|
372 |
+
if ( empty( $this->m_aPageParams ) ) {
|
373 |
+
return true;
|
374 |
+
}
|
375 |
+
}
|
376 |
+
return false;
|
377 |
+
}
|
378 |
+
|
379 |
+
protected function setRequestUriPageParts() {
|
380 |
+
|
381 |
+
if ( !isset( $_SERVER['REQUEST_URI'] ) || empty( $_SERVER['REQUEST_URI'] ) ) {
|
382 |
+
$this->m_aRequestUriParts = false;
|
383 |
+
$this->logWarning( 'Could not parse the details of this page call as $_SERVER[REQUEST_URI] was empty or not defined.' );
|
384 |
+
return false;
|
385 |
+
}
|
386 |
+
$this->m_aRequestUriParts = explode( '?', $_SERVER['REQUEST_URI'] );
|
387 |
+
$this->logInfo( sprintf( 'Page Request URI: %s', $_SERVER['REQUEST_URI'] ) );
|
388 |
+
return true;
|
389 |
+
}
|
390 |
+
|
391 |
+
protected function setPageParams() {
|
392 |
+
$this->m_aPageParams = array_merge( $_GET, $_POST );
|
393 |
+
return true;
|
394 |
+
}
|
395 |
+
|
396 |
+
private function setWhitelistPages() {
|
397 |
+
|
398 |
+
$aDefaultWlPages = array(
|
399 |
+
'/wp-admin/options-general.php' => array(),
|
400 |
+
'/wp-admin/post-new.php' => array(),
|
401 |
+
'/wp-admin/page-new.php' => array(),
|
402 |
+
'/wp-admin/link-add.php' => array(),
|
403 |
+
'/wp-admin/media-upload.php' => array(),
|
404 |
+
'/wp-admin/post.php' => array(),
|
405 |
+
'/wp-admin/page.php' => array(),
|
406 |
+
'/wp-admin/admin-ajax.php' => array(),
|
407 |
+
'/wp-comments-post.php' => array(
|
408 |
+
'url',
|
409 |
+
'comment'
|
410 |
+
),
|
411 |
+
'/wp-login.php' => array(
|
412 |
+
'redirect_to'
|
413 |
+
)
|
414 |
+
);
|
415 |
+
|
416 |
+
// add in custom whitelisted pages later
|
417 |
+
|
418 |
+
$this->m_aWhitelistPages = $aDefaultWlPages;
|
419 |
+
$this->m_aWhitelistPagesPatterns = array(
|
420 |
+
'/wp-admin/\*' => array(
|
421 |
+
'_wp_original_http_referer',
|
422 |
+
'_wp_http_referer'
|
423 |
+
),
|
424 |
+
);
|
425 |
+
}
|
426 |
+
|
427 |
+
public function isVisitorOnWhitelist() {
|
428 |
+
return $this->isIpOnlist( $this->m_aWhitelistIps, $this->m_sRequestIp );
|
429 |
+
}
|
430 |
+
|
431 |
+
public function isVisitorOnBlacklist() {
|
432 |
+
return $this->isIpOnlist( $this->m_aBlacklistIps, $this->m_sRequestIp );
|
433 |
+
}
|
434 |
+
|
435 |
+
public function isIpOnlist( $inaList, $insIpAddress = '' ) {
|
436 |
+
|
437 |
+
if ( empty( $insIpAddress ) ) {
|
438 |
+
return true;
|
439 |
+
}
|
440 |
+
return in_array( $insIpAddress, $inaList );
|
441 |
+
}
|
442 |
+
|
443 |
+
public static function GetVisitorIpAddress() {
|
444 |
+
|
445 |
+
$sIpAddress = empty($_SERVER["HTTP_X_FORWARDED_FOR"]) ? $_SERVER["REMOTE_ADDR"] : $_SERVER["HTTP_X_FORWARDED_FOR"];
|
446 |
+
|
447 |
+
if( strpos($sIpAddress, ',') !== false ) {
|
448 |
+
$sIpAddress = explode(',', $sIpAddress);
|
449 |
+
$sIpAddress = $sIpAddress[0];
|
450 |
+
}
|
451 |
+
|
452 |
+
return $sIpAddress;
|
453 |
+
|
454 |
+
}//GetVisitorIpAddress
|
455 |
+
|
456 |
+
/**
|
457 |
+
* @param string $insLogMessage
|
458 |
+
*/
|
459 |
+
public function logInfo( $insLogMessage ) {
|
460 |
+
$this->writeLog( $insLogMessage, self::LOG_MESSAGE_TYPE_INFO );
|
461 |
+
}
|
462 |
+
/**
|
463 |
+
* @param string $insLogMessage
|
464 |
+
*/
|
465 |
+
public function logWarning( $insLogMessage ) {
|
466 |
+
$this->writeLog( $insLogMessage, self::LOG_MESSAGE_TYPE_WARNING );
|
467 |
+
}
|
468 |
+
/**
|
469 |
+
* @param string $insLogMessage
|
470 |
+
*/
|
471 |
+
public function logCritical( $insLogMessage ) {
|
472 |
+
$this->writeLog( $insLogMessage, self::LOG_MESSAGE_TYPE_CRITICAL );
|
473 |
+
}
|
474 |
+
|
475 |
+
public function sendBlockEmail( $insEmailAddress ) {
|
476 |
+
|
477 |
+
$aMessage = array(
|
478 |
+
'WordPress Simple Firewall has blocked a visitor to your site.',
|
479 |
+
'Log details for this visitor are below:',
|
480 |
+
'- IP Address: '.$this->m_sRequestIp
|
481 |
+
);
|
482 |
+
foreach( $this->m_aLog[ $this->m_sRequestId ] as $aLogItem ) {
|
483 |
+
list( $sTime, $sLogType, $sLogMessage ) = $aLogItem;
|
484 |
+
$aMessage[] = '- '.$aLogItem[2];
|
485 |
+
}
|
486 |
+
|
487 |
+
$aMessage[] = 'You could look up the offending IP Address here: http://ip-lookup.net/?ip='. $this->m_sRequestIp;
|
488 |
+
$sEmailSubject = 'Firewall Block Alert: ' . home_url();
|
489 |
+
$sSiteName = get_bloginfo('name');
|
490 |
+
$aHeaders = array(
|
491 |
+
'MIME-Version: 1.0',
|
492 |
+
'Content-type: text/plain; charset=iso-8859-1',
|
493 |
+
"From: Simple Firewall Plugin - $sSiteName <$insEmailAddress>",
|
494 |
+
'Reply-To: Site Admin <receiver@domain3.com>',
|
495 |
+
'Subject: '.$sEmailSubject,
|
496 |
+
'X-Mailer: PHP/'.phpversion()
|
497 |
+
);
|
498 |
+
mail( $insEmailAddress, $sEmailSubject, implode( "\r\n", $aMessage ), implode( "\r\n", $aHeaders ) );
|
499 |
+
}
|
500 |
+
}
|
501 |
+
|
502 |
+
endif;
|
src/icwp-plugins-base.php
ADDED
@@ -0,0 +1,529 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( !defined('WORPIT_DS') ) {
|
4 |
+
define( 'WORPIT_DS', DIRECTORY_SEPARATOR );
|
5 |
+
}
|
6 |
+
|
7 |
+
if ( !function_exists( '_hlt_e' ) ) {
|
8 |
+
function _hlt_e( $insStr ) {
|
9 |
+
_e( $insStr, 'hlt-wordpress-bootstrap-css' );
|
10 |
+
}
|
11 |
+
}
|
12 |
+
if ( !function_exists( '_hlt__' ) ) {
|
13 |
+
function _hlt__( $insStr ) {
|
14 |
+
return __( $insStr, 'hlt-wordpress-bootstrap-css' );
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
if ( !class_exists('ICWP_WPSF_Base_Plugin') ):
|
19 |
+
|
20 |
+
class ICWP_WPSF_Base_Plugin {
|
21 |
+
|
22 |
+
static public $VERSION;
|
23 |
+
|
24 |
+
static public $PLUGIN_NAME;
|
25 |
+
static public $PLUGIN_PATH;
|
26 |
+
static public $PLUGIN_DIR;
|
27 |
+
static public $PLUGIN_URL;
|
28 |
+
static public $PLUGIN_BASENAME;
|
29 |
+
static public $OPTION_PREFIX;
|
30 |
+
|
31 |
+
const ParentTitle = 'iControlWP Plugins';
|
32 |
+
const ParentName = 'Simple Firewall';
|
33 |
+
const ParentPermissions = 'manage_options';
|
34 |
+
const ParentMenuId = 'icwp';
|
35 |
+
const VariablePrefix = 'icwp';
|
36 |
+
const BaseOptionPrefix = 'icwp_';
|
37 |
+
|
38 |
+
const ViewExt = '.php';
|
39 |
+
const ViewDir = 'views';
|
40 |
+
|
41 |
+
protected $m_aPluginMenu;
|
42 |
+
|
43 |
+
protected $m_aAllPluginOptions;
|
44 |
+
|
45 |
+
protected $m_sParentMenuIdSuffix;
|
46 |
+
|
47 |
+
protected $m_fShowMarketing = '';
|
48 |
+
|
49 |
+
static protected $m_fUpdateSuccessTracker;
|
50 |
+
static protected $m_aFailedUpdateOptions;
|
51 |
+
|
52 |
+
public function __construct() {
|
53 |
+
|
54 |
+
add_action( 'plugins_loaded', array( &$this, 'onWpPluginsLoaded' ) );
|
55 |
+
add_action( 'init', array( &$this, 'onWpInit' ), 0 );
|
56 |
+
if ( is_admin() ) {
|
57 |
+
add_action( 'admin_init', array( &$this, 'onWpAdminInit' ) );
|
58 |
+
add_action( 'admin_notices', array( &$this, 'onWpAdminNotices' ) );
|
59 |
+
add_action( 'admin_menu', array( &$this, 'onWpAdminMenu' ) );
|
60 |
+
add_action( 'plugin_action_links', array( &$this, 'onWpPluginActionLinks' ), 10, 4 );
|
61 |
+
}
|
62 |
+
/**
|
63 |
+
* We make the assumption that all settings updates are successful until told otherwise
|
64 |
+
* by an actual failing update_option call.
|
65 |
+
*/
|
66 |
+
self::$m_fUpdateSuccessTracker = true;
|
67 |
+
self::$m_aFailedUpdateOptions = array();
|
68 |
+
|
69 |
+
$this->m_sParentMenuIdSuffix = 'base';
|
70 |
+
}
|
71 |
+
|
72 |
+
protected function getFullParentMenuId() {
|
73 |
+
return self::ParentMenuId .'-'. $this->m_sParentMenuIdSuffix;
|
74 |
+
}//getFullParentMenuId
|
75 |
+
|
76 |
+
protected function display( $insView, $inaData = array() ) {
|
77 |
+
$sFile = dirname(__FILE__).WORPIT_DS.'..'.WORPIT_DS.self::ViewDir.WORPIT_DS.$insView.self::ViewExt;
|
78 |
+
|
79 |
+
if ( !is_file( $sFile ) ) {
|
80 |
+
echo "View not found: ".$sFile;
|
81 |
+
return false;
|
82 |
+
}
|
83 |
+
|
84 |
+
if ( count( $inaData ) > 0 ) {
|
85 |
+
extract( $inaData, EXTR_PREFIX_ALL, self::VariablePrefix );
|
86 |
+
}
|
87 |
+
|
88 |
+
ob_start();
|
89 |
+
include( $sFile );
|
90 |
+
$sContents = ob_get_contents();
|
91 |
+
ob_end_clean();
|
92 |
+
|
93 |
+
echo $sContents;
|
94 |
+
return true;
|
95 |
+
}
|
96 |
+
|
97 |
+
protected function getImageUrl( $insImage ) {
|
98 |
+
return self::$PLUGIN_URL.'resources/images/'.$insImage;
|
99 |
+
}
|
100 |
+
protected function getCssUrl( $insCss ) {
|
101 |
+
return self::$PLUGIN_URL.'resources/css/'.$insCss;
|
102 |
+
}
|
103 |
+
protected function getJsUrl( $insJs ) {
|
104 |
+
return self::$PLUGIN_URL.'resources/js/'.$insJs;
|
105 |
+
}
|
106 |
+
|
107 |
+
protected function getSubmenuPageTitle( $insTitle ) {
|
108 |
+
return self::ParentTitle.' - '.$insTitle;
|
109 |
+
}
|
110 |
+
protected function getSubmenuId( $insId ) {
|
111 |
+
return $this->getFullParentMenuId().'-'.$insId;
|
112 |
+
}
|
113 |
+
|
114 |
+
public function onWpPluginsLoaded() {
|
115 |
+
|
116 |
+
if ( is_admin() ) {
|
117 |
+
//Handle plugin upgrades
|
118 |
+
$this->handlePluginUpgrade();
|
119 |
+
}
|
120 |
+
|
121 |
+
if ( $this->isIcwpPluginAdminPage() ) {
|
122 |
+
//Handle form submit
|
123 |
+
$this->handlePluginFormSubmit();
|
124 |
+
}
|
125 |
+
}//onWpPluginsLoaded
|
126 |
+
|
127 |
+
public function onWpInit() { }
|
128 |
+
|
129 |
+
public function onWpAdminInit() {
|
130 |
+
|
131 |
+
//Do Plugin-Specific Admin Work
|
132 |
+
if ( $this->isIcwpPluginAdminPage() ) {
|
133 |
+
|
134 |
+
//Links up CSS styles for the plugin itself (set the admin bootstrap CSS as a dependency also)
|
135 |
+
$this->enqueuePluginAdminCss();
|
136 |
+
|
137 |
+
}
|
138 |
+
|
139 |
+
// Determine whether to show ads and marketing messages
|
140 |
+
// Currently this is when the site uses the iControlWP service and is linked
|
141 |
+
$this->isShowMarketing();
|
142 |
+
|
143 |
+
}//onWpAdminInit
|
144 |
+
|
145 |
+
public function onWpAdminMenu() {
|
146 |
+
|
147 |
+
$sFullParentMenuId = $this->getFullParentMenuId();
|
148 |
+
|
149 |
+
add_menu_page( self::ParentTitle, self::ParentName, self::ParentPermissions, $sFullParentMenuId, array( $this, 'onDisplayMainMenu' ), $this->getImageUrl( 'icontrolwp_16x16.png' ) );
|
150 |
+
|
151 |
+
//Create and Add the submenu items
|
152 |
+
$this->createPluginSubMenuItems();
|
153 |
+
if ( !empty($this->m_aPluginMenu) ) {
|
154 |
+
foreach ( $this->m_aPluginMenu as $sMenuTitle => $aMenu ) {
|
155 |
+
list( $sMenuItemText, $sMenuItemId, $sMenuCallBack ) = $aMenu;
|
156 |
+
add_submenu_page( $sFullParentMenuId, $sMenuTitle, $sMenuItemText, self::ParentPermissions, $sMenuItemId, array( &$this, $sMenuCallBack ) );
|
157 |
+
}
|
158 |
+
}
|
159 |
+
|
160 |
+
$this->fixSubmenu();
|
161 |
+
|
162 |
+
}//onWpAdminMenu
|
163 |
+
|
164 |
+
protected function createPluginSubMenuItems(){
|
165 |
+
/* Override to create array of sub-menu items
|
166 |
+
$this->m_aPluginMenu = array(
|
167 |
+
//Menu Page Title => Menu Item name, page ID (slug), callback function onLoad.
|
168 |
+
$this->getSubmenuPageTitle( 'Content by Country' ) => array( 'Content by Country', $this->getSubmenuId('main'), 'onDisplayCbcMain' ),
|
169 |
+
);
|
170 |
+
*/
|
171 |
+
}//createPluginSubMenuItems
|
172 |
+
|
173 |
+
protected function fixSubmenu() {
|
174 |
+
global $submenu;
|
175 |
+
$sFullParentMenuId = $this->getFullParentMenuId();
|
176 |
+
if ( isset( $submenu[$sFullParentMenuId] ) ) {
|
177 |
+
$submenu[$sFullParentMenuId][0][0] = 'Dashboard';
|
178 |
+
}
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* The callback function for the main admin menu index page
|
183 |
+
*/
|
184 |
+
public function onDisplayMainMenu() {
|
185 |
+
$aData = array(
|
186 |
+
'plugin_url' => self::$PLUGIN_URL,
|
187 |
+
'fShowAds' => $this->isShowMarketing()
|
188 |
+
);
|
189 |
+
$this->display( 'icwp_'.$this->m_sParentMenuIdSuffix.'_index', $aData );
|
190 |
+
}
|
191 |
+
|
192 |
+
protected function isShowMarketing() {
|
193 |
+
|
194 |
+
if ( $this->m_fShowMarketing == 'Y' ) {
|
195 |
+
return true;
|
196 |
+
}
|
197 |
+
elseif ( $this->m_fShowMarketing == 'N' ) {
|
198 |
+
return false;
|
199 |
+
}
|
200 |
+
|
201 |
+
$sServiceClassName = 'Worpit_Plugin';
|
202 |
+
$this->m_fShowMarketing = 'Y';
|
203 |
+
if ( class_exists( 'Worpit_Plugin' ) ) {
|
204 |
+
if ( method_exists( 'Worpit_Plugin', 'IsLinked' ) ) {
|
205 |
+
$this->m_fShowMarketing = Worpit_Plugin::IsLinked() ? 'N' : 'Y';
|
206 |
+
}
|
207 |
+
elseif ( function_exists( 'get_option' )
|
208 |
+
&& get_option( Worpit_Plugin::$VariablePrefix.'assigned' ) == 'Y'
|
209 |
+
&& get_option( Worpit_Plugin::$VariablePrefix.'assigned_to' ) != '' ) {
|
210 |
+
|
211 |
+
$this->m_fShowMarketing = 'N';
|
212 |
+
}
|
213 |
+
}
|
214 |
+
return $this->m_fShowMarketing === 'N' ? false : true;
|
215 |
+
}
|
216 |
+
|
217 |
+
/**
|
218 |
+
* The Action Links in the main plugins page. Defaults to link to the main Dashboard page
|
219 |
+
*
|
220 |
+
* @param $inaLinks
|
221 |
+
* @param $insFile
|
222 |
+
*/
|
223 |
+
public function onWpPluginActionLinks( $inaLinks, $insFile ) {
|
224 |
+
if ( $insFile == self::$PLUGIN_BASENAME ) {
|
225 |
+
$sSettingsLink = '<a href="'.admin_url( "admin.php" ).'?page='.$this->getFullParentMenuId().'">' . __( 'Settings', 'worpit' ) . '</a>';
|
226 |
+
array_unshift( $inaLinks, $sSettingsLink );
|
227 |
+
}
|
228 |
+
return $inaLinks;
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Override this method to handle all the admin notices
|
233 |
+
*/
|
234 |
+
public function onWpAdminNotices() { }
|
235 |
+
|
236 |
+
/**
|
237 |
+
* This is called from within onWpAdminInit. Use this solely to manage upgrades of the plugin
|
238 |
+
*/
|
239 |
+
protected function handlePluginUpgrade() { }
|
240 |
+
|
241 |
+
protected function handlePluginFormSubmit() { }
|
242 |
+
|
243 |
+
protected function enqueuePluginAdminCss() {
|
244 |
+
$iRand = rand();
|
245 |
+
wp_register_style( 'worpit_plugin_css'.$iRand, $this->getCssUrl('icontrolwp-plugin.css'), array('worpit_bootstrap_wpadmin_css_fixes'), self::$VERSION );
|
246 |
+
wp_enqueue_style( 'worpit_plugin_css'.$iRand );
|
247 |
+
}//enqueuePluginAdminCss
|
248 |
+
|
249 |
+
/**
|
250 |
+
* Provides the basic HTML template for printing a WordPress Admin Notices
|
251 |
+
*
|
252 |
+
* @param $insNotice - The message to be displayed.
|
253 |
+
* @param $insMessageClass - either error or updated
|
254 |
+
* @param $infPrint - if true, will echo. false will return the string
|
255 |
+
* @return boolean|string
|
256 |
+
*/
|
257 |
+
protected function getAdminNotice( $insNotice = '', $insMessageClass = 'updated', $infPrint = false ) {
|
258 |
+
|
259 |
+
$sFullNotice = '
|
260 |
+
<div id="message" class="'.$insMessageClass.'">
|
261 |
+
<style>
|
262 |
+
#message form { margin: 0px; }
|
263 |
+
</style>
|
264 |
+
'.$insNotice.'
|
265 |
+
</div>
|
266 |
+
';
|
267 |
+
|
268 |
+
if ( $infPrint ) {
|
269 |
+
echo $sFullNotice;
|
270 |
+
return true;
|
271 |
+
} else {
|
272 |
+
return $sFullNotice;
|
273 |
+
}
|
274 |
+
}//getAdminNotice
|
275 |
+
|
276 |
+
protected function redirect( $insUrl, $innTimeout = 1 ) {
|
277 |
+
echo '
|
278 |
+
<script type="text/javascript">
|
279 |
+
function redirect() {
|
280 |
+
window.location = "'.$insUrl.'";
|
281 |
+
}
|
282 |
+
var oTimer = setTimeout( "redirect()", "'.($innTimeout * 1000).'" );
|
283 |
+
</script>';
|
284 |
+
}
|
285 |
+
|
286 |
+
/**
|
287 |
+
* A little helper function that populates all the plugin options arrays with DB values
|
288 |
+
*/
|
289 |
+
protected function readyAllPluginOptions() {
|
290 |
+
$this->initPluginOptions();
|
291 |
+
$this->populateAllPluginOptions();
|
292 |
+
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* Override to create the plugin options array.
|
296 |
+
*
|
297 |
+
* Returns false if nothing happens - i.e. not over-rided.
|
298 |
+
*/
|
299 |
+
protected function initPluginOptions() {
|
300 |
+
return false;
|
301 |
+
}
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Reads the current value for ALL plugin options from the WP options db.
|
305 |
+
*
|
306 |
+
* Assumes the standard plugin options array structure. Over-ride to change.
|
307 |
+
*
|
308 |
+
* NOT automatically executed on any hooks.
|
309 |
+
*/
|
310 |
+
protected function populateAllPluginOptions() {
|
311 |
+
|
312 |
+
if ( empty($this->m_aAllPluginOptions) && !$this->initPluginOptions() ) {
|
313 |
+
return false;
|
314 |
+
}
|
315 |
+
self::PopulatePluginOptions( $this->m_aAllPluginOptions );
|
316 |
+
|
317 |
+
}//populateAllPluginOptions
|
318 |
+
|
319 |
+
public static function PopulatePluginOptions( &$inaAllOptions ) {
|
320 |
+
|
321 |
+
if ( empty($inaAllOptions) ) {
|
322 |
+
return false;
|
323 |
+
}
|
324 |
+
foreach ( $inaAllOptions as &$aOptionsSection ) {
|
325 |
+
self::PopulatePluginOptionsSection($aOptionsSection);
|
326 |
+
}
|
327 |
+
}
|
328 |
+
|
329 |
+
public static function PopulatePluginOptionsSection( &$inaOptionsSection ) {
|
330 |
+
|
331 |
+
if ( empty($inaOptionsSection) ) {
|
332 |
+
return false;
|
333 |
+
}
|
334 |
+
foreach ( $inaOptionsSection['section_options'] as &$aOptionParams ) {
|
335 |
+
|
336 |
+
list( $sOptionKey, $sOptionCurrent, $sOptionDefault, $sOptionType ) = $aOptionParams;
|
337 |
+
$sCurrentOptionVal = self::getOption( $sOptionKey );
|
338 |
+
if ( $sOptionType == 'ip_addresses' ) {
|
339 |
+
if ( !empty( $sCurrentOptionVal ) ) {
|
340 |
+
$sCurrentOptionVal = implode( "\n", $sCurrentOptionVal );
|
341 |
+
}
|
342 |
+
else {
|
343 |
+
$sCurrentOptionVal = '';
|
344 |
+
}
|
345 |
+
}
|
346 |
+
$aOptionParams[1] = ($sCurrentOptionVal == '' )? $sOptionDefault : $sCurrentOptionVal;
|
347 |
+
}
|
348 |
+
}
|
349 |
+
|
350 |
+
/**
|
351 |
+
* $sAllOptionsInput is a comma separated list of all the input keys to be processed from the $_POST
|
352 |
+
*/
|
353 |
+
protected function updatePluginOptionsFromSubmit( $sAllOptionsInput ) {
|
354 |
+
|
355 |
+
if ( empty($sAllOptionsInput) ) {
|
356 |
+
return;
|
357 |
+
}
|
358 |
+
|
359 |
+
$aAllInputOptions = explode( ',', $sAllOptionsInput);
|
360 |
+
foreach ( $aAllInputOptions as $sInputKey ) {
|
361 |
+
$aInput = explode( ':', $sInputKey );
|
362 |
+
list( $sOptionType, $sOptionKey ) = $aInput;
|
363 |
+
|
364 |
+
$sOptionValue = $this->getAnswerFromPost( $sOptionKey );
|
365 |
+
if ( is_null($sOptionValue) ) {
|
366 |
+
|
367 |
+
if ( $sOptionType == 'text' ) { //if it was a text box, and it's null, don't update anything
|
368 |
+
continue;
|
369 |
+
} else if ( $sOptionType == 'checkbox' ) { //if it was a checkbox, and it's null, it means 'N'
|
370 |
+
$sOptionValue = 'N';
|
371 |
+
}
|
372 |
+
}
|
373 |
+
else { //handle any pre-processing we need to.
|
374 |
+
|
375 |
+
if ( $sOptionType == 'ip_addresses' ) { //ip addresses are textareas, where each is separated by newline
|
376 |
+
|
377 |
+
if ( !class_exists('ICWP_DataProcessor') ) {
|
378 |
+
require_once ( dirname(__FILE__).'/icwp-data-processor.php' );
|
379 |
+
}
|
380 |
+
$oProcessor = new ICWP_DataProcessor();
|
381 |
+
$sOptionValue = $oProcessor->ExtractIpAddresses( $sOptionValue );
|
382 |
+
}
|
383 |
+
}
|
384 |
+
$this->updateOption( $sOptionKey, $sOptionValue );
|
385 |
+
}
|
386 |
+
|
387 |
+
return true;
|
388 |
+
}//updatePluginOptionsFromSubmit
|
389 |
+
|
390 |
+
protected function collateAllFormInputsForAllOptions($aAllOptions, $sInputSeparator = ',') {
|
391 |
+
|
392 |
+
if ( empty($aAllOptions) ) {
|
393 |
+
return '';
|
394 |
+
}
|
395 |
+
$iCount = 0;
|
396 |
+
foreach ( $aAllOptions as $aOptionsSection ) {
|
397 |
+
|
398 |
+
if ( $iCount == 0 ) {
|
399 |
+
$sCollated = $this->collateAllFormInputsForOptionsSection($aOptionsSection, $sInputSeparator);
|
400 |
+
} else {
|
401 |
+
$sCollated .= $sInputSeparator.$this->collateAllFormInputsForOptionsSection($aOptionsSection, $sInputSeparator);
|
402 |
+
}
|
403 |
+
$iCount++;
|
404 |
+
}
|
405 |
+
return $sCollated;
|
406 |
+
|
407 |
+
}//collateAllFormInputsAllOptions
|
408 |
+
|
409 |
+
/**
|
410 |
+
* Returns a comma seperated list of all the options in a given options section.
|
411 |
+
*
|
412 |
+
* @param array $aOptionsSection
|
413 |
+
*/
|
414 |
+
protected function collateAllFormInputsForOptionsSection( $aOptionsSection, $sInputSeparator = ',' ) {
|
415 |
+
|
416 |
+
if ( empty($aOptionsSection) ) {
|
417 |
+
return '';
|
418 |
+
}
|
419 |
+
$iCount = 0;
|
420 |
+
foreach ( $aOptionsSection['section_options'] as $aOption ) {
|
421 |
+
|
422 |
+
list($sKey, $fill1, $fill2, $sType) = $aOption;
|
423 |
+
|
424 |
+
if ( $iCount == 0 ) {
|
425 |
+
$sCollated = $sType.':'.$sKey;
|
426 |
+
} else {
|
427 |
+
$sCollated .= $sInputSeparator.$sType.':'.$sKey;
|
428 |
+
}
|
429 |
+
$iCount++;
|
430 |
+
}
|
431 |
+
return $sCollated;
|
432 |
+
}//collateAllFormInputsForOptionsSection
|
433 |
+
|
434 |
+
protected function isIcwpPluginAdminPage() {
|
435 |
+
|
436 |
+
$sSubPageNow = isset( $_GET['page'] )? $_GET['page']: '';
|
437 |
+
if ( is_admin() && !empty($sSubPageNow) && (strpos( $sSubPageNow, $this->getFullParentMenuId() ) === 0 )) { //admin area, and the 'page' begins with 'worpit'
|
438 |
+
return true;
|
439 |
+
}
|
440 |
+
|
441 |
+
return false;
|
442 |
+
}//isIcwpPluginAdminPage
|
443 |
+
|
444 |
+
protected function deleteAllPluginDbOptions() {
|
445 |
+
|
446 |
+
if ( !current_user_can( 'manage_options' ) ) {
|
447 |
+
return;
|
448 |
+
}
|
449 |
+
|
450 |
+
if ( empty($this->m_aAllPluginOptions) && !$this->initPluginOptions() ) {
|
451 |
+
return;
|
452 |
+
}
|
453 |
+
|
454 |
+
foreach ( $this->m_aAllPluginOptions as $aOptionsSection ) {
|
455 |
+
foreach ( $aOptionsSection['section_options'] as $aOptionParams ) {
|
456 |
+
if ( isset( $aOptionParams[0] ) ) {
|
457 |
+
$this->deleteOption($aOptionParams[0]);
|
458 |
+
}
|
459 |
+
}
|
460 |
+
}
|
461 |
+
|
462 |
+
}//deleteAllPluginDbOptions
|
463 |
+
|
464 |
+
protected function getAnswerFromPost( $insKey, $insPrefix = null ) {
|
465 |
+
if ( is_null( $insPrefix ) ) {
|
466 |
+
$insKey = self::$OPTION_PREFIX.$insKey;
|
467 |
+
}
|
468 |
+
return ( isset( $_POST[$insKey] )? $_POST[$insKey]: null );
|
469 |
+
}
|
470 |
+
|
471 |
+
static public function getOption( $insKey, $insAddPrefix = '' ) {
|
472 |
+
return get_option( self::$OPTION_PREFIX.$insKey );
|
473 |
+
}
|
474 |
+
|
475 |
+
static public function addOption( $insKey, $insValue ) {
|
476 |
+
return add_option( self::$OPTION_PREFIX.$insKey, $insValue );
|
477 |
+
}
|
478 |
+
|
479 |
+
static public function updateOption( $insKey, $insValue ) {
|
480 |
+
if ( self::getOption( $insKey ) == $insValue ) {
|
481 |
+
return true;
|
482 |
+
}
|
483 |
+
$fResult = update_option( self::$OPTION_PREFIX.$insKey, $insValue );
|
484 |
+
if ( !$fResult ) {
|
485 |
+
self::$m_fUpdateSuccessTracker = false;
|
486 |
+
self::$m_aFailedUpdateOptions[] = self::$OPTION_PREFIX.$insKey;
|
487 |
+
}
|
488 |
+
}
|
489 |
+
|
490 |
+
static public function deleteOption( $insKey ) {
|
491 |
+
return delete_option( self::$OPTION_PREFIX.$insKey );
|
492 |
+
}
|
493 |
+
|
494 |
+
public function onWpActivatePlugin() { }
|
495 |
+
public function onWpDeactivatePlugin() { }
|
496 |
+
|
497 |
+
public function onWpUninstallPlugin() {
|
498 |
+
|
499 |
+
//Do we have admin priviledges?
|
500 |
+
if ( current_user_can( 'manage_options' ) ) {
|
501 |
+
$this->deleteAllPluginDbOptions();
|
502 |
+
}
|
503 |
+
}
|
504 |
+
|
505 |
+
/**
|
506 |
+
* Takes an array, an array key, and a default value. If key isn't set, sets it to default.
|
507 |
+
*/
|
508 |
+
protected function def( &$aSrc, $insKey, $insValue = '' ) {
|
509 |
+
if ( !isset( $aSrc[$insKey] ) ) {
|
510 |
+
$aSrc[$insKey] = $insValue;
|
511 |
+
}
|
512 |
+
}
|
513 |
+
/**
|
514 |
+
* Takes an array, an array key and an element type. If value is empty, sets the html element
|
515 |
+
* string to empty string, otherwise forms a complete html element parameter.
|
516 |
+
*
|
517 |
+
* E.g. noEmptyElement( aSomeArray, sSomeArrayKey, "style" )
|
518 |
+
* will return String: style="aSomeArray[sSomeArrayKey]" or empty string.
|
519 |
+
*/
|
520 |
+
protected function noEmptyElement( &$inaArgs, $insAttrKey, $insElement = '' ) {
|
521 |
+
$sAttrValue = $inaArgs[$insAttrKey];
|
522 |
+
$insElement = ( $insElement == '' )? $insAttrKey : $insElement;
|
523 |
+
$inaArgs[$insAttrKey] = ( empty($sAttrValue) ) ? '' : ' '.$insElement.'="'.$sAttrValue.'"';
|
524 |
+
}
|
525 |
+
|
526 |
+
}//CLASS ICWP_WPSF_Base_Plugin
|
527 |
+
|
528 |
+
endif;
|
529 |
+
|
views/icwp_options_helper.php
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
function printAllPluginOptionsForm( $inaAllPluginOptions, $insVarPrefix = '', $iOptionsPerRow = 1 ) {
|
4 |
+
|
5 |
+
if ( empty($inaAllPluginOptions) ) {
|
6 |
+
return;
|
7 |
+
}
|
8 |
+
|
9 |
+
$iRowWidth = 8; //8 spans.
|
10 |
+
$iOptionWidth = $iRowWidth / $iOptionsPerRow;
|
11 |
+
$sOptionValue;
|
12 |
+
|
13 |
+
//Take each Options Section in turn
|
14 |
+
foreach ( $inaAllPluginOptions as $sOptionSection ) {
|
15 |
+
|
16 |
+
$sRowId = str_replace( ' ', '', $sOptionSection['section_title'] );
|
17 |
+
//Print the Section Title
|
18 |
+
echo '
|
19 |
+
<div class="row" id="'.$sRowId.'">
|
20 |
+
<div class="span9" style="margin-left:0px">
|
21 |
+
<fieldset>
|
22 |
+
<legend>'.$sOptionSection['section_title'].'</legend>
|
23 |
+
';
|
24 |
+
|
25 |
+
$rowCount = 1;
|
26 |
+
$iOptionCount = 0;
|
27 |
+
//Print each option in the option section
|
28 |
+
foreach ( $sOptionSection['section_options'] as $aOption ) {
|
29 |
+
|
30 |
+
$iOptionCount = $iOptionCount % $iOptionsPerRow;
|
31 |
+
|
32 |
+
if ( $iOptionCount == 0 ) {
|
33 |
+
echo '
|
34 |
+
<div class="row row_number_'.$rowCount.'">';
|
35 |
+
}
|
36 |
+
|
37 |
+
echo getPluginOptionSpan( $aOption, $iOptionWidth, $insVarPrefix );
|
38 |
+
|
39 |
+
$iOptionCount++;
|
40 |
+
|
41 |
+
if ( $iOptionCount == $iOptionsPerRow ) {
|
42 |
+
echo '
|
43 |
+
</div> <!-- / options row -->';
|
44 |
+
$rowCount++;
|
45 |
+
}
|
46 |
+
|
47 |
+
}//foreach option
|
48 |
+
|
49 |
+
echo '
|
50 |
+
</fieldset>
|
51 |
+
</div>
|
52 |
+
</div>
|
53 |
+
';
|
54 |
+
|
55 |
+
}//foreach section
|
56 |
+
|
57 |
+
}//printAllPluginOptionsForm
|
58 |
+
|
59 |
+
function getPluginOptionSpan( $inaOption, $iSpanSize, $insVarPrefix = '' ) {
|
60 |
+
|
61 |
+
list( $sOptionKey, $sOptionSaved, $sOptionDefault, $mOptionType, $sOptionHumanName, $sOptionTitle, $sOptionHelpText ) = $inaOption;
|
62 |
+
|
63 |
+
if ( $sOptionKey == 'spacer' ) {
|
64 |
+
$sHtml = '
|
65 |
+
<div class="span'.$iSpanSize.'">
|
66 |
+
</div>
|
67 |
+
';
|
68 |
+
} else {
|
69 |
+
|
70 |
+
$sSpanId = 'span_'.$insVarPrefix.$sOptionKey;
|
71 |
+
$sHtml = '
|
72 |
+
<div class="span'.$iSpanSize.'" id="'.$sSpanId.'">
|
73 |
+
<div class="control-group">
|
74 |
+
<label class="control-label" for="'.$insVarPrefix.$sOptionKey.'">'.$sOptionHumanName.'<br /></label>
|
75 |
+
<div class="controls">
|
76 |
+
<div class="option_section'.( ($sOptionSaved == 'Y')? ' selected_item':'' ).'" id="option_section_'.$insVarPrefix.$sOptionKey.'">
|
77 |
+
<label>
|
78 |
+
';
|
79 |
+
$sAdditionalClass = '';
|
80 |
+
$sTextInput = '';
|
81 |
+
$sChecked = '';
|
82 |
+
$sHelpSection = '';
|
83 |
+
|
84 |
+
if ( $mOptionType === 'checkbox' ) {
|
85 |
+
|
86 |
+
$sChecked = ( $sOptionSaved == 'Y' )? 'checked="checked"' : '';
|
87 |
+
|
88 |
+
$sHtml .= '
|
89 |
+
<input '.$sChecked.'
|
90 |
+
type="checkbox"
|
91 |
+
name="'.$insVarPrefix.$sOptionKey.'"
|
92 |
+
value="Y"
|
93 |
+
class="'.$sAdditionalClass.'"
|
94 |
+
id="'.$insVarPrefix.$sOptionKey.'" />
|
95 |
+
'.$sOptionTitle;
|
96 |
+
|
97 |
+
$sOptionHelpText = '<p class="help-block">'.$sOptionHelpText.'</p>';
|
98 |
+
|
99 |
+
} else if ( $mOptionType === 'text' ) {
|
100 |
+
$sTextInput = esc_attr( $sOptionSaved );
|
101 |
+
$sHtml .= '
|
102 |
+
<p>'.$sOptionTitle.'</p>
|
103 |
+
<input type="text"
|
104 |
+
name="'.$insVarPrefix.$sOptionKey.'"
|
105 |
+
value="'.$sTextInput.'"
|
106 |
+
placeholder="'.$sTextInput.'"
|
107 |
+
id="'.$insVarPrefix.$sOptionKey.'"
|
108 |
+
class="span5" />';
|
109 |
+
|
110 |
+
$sOptionHelpText = '<p class="help-block">'.$sOptionHelpText.'</p>';
|
111 |
+
|
112 |
+
} else if ( is_array($mOptionType) ) { //it's a select, or radio
|
113 |
+
|
114 |
+
$sInputType = array_shift($mOptionType);
|
115 |
+
|
116 |
+
if ( $sInputType == 'select' ) {
|
117 |
+
$sHtml .= '<p>'.$sOptionTitle.'</p>
|
118 |
+
<select id="'.$insVarPrefix.$sOptionKey.'" name="'.$insVarPrefix.$sOptionKey.'">';
|
119 |
+
}
|
120 |
+
|
121 |
+
foreach( $mOptionType as $aInput ) {
|
122 |
+
|
123 |
+
$sHtml .= '
|
124 |
+
<option value="'.$aInput[0].'" id="'.$insVarPrefix.$sOptionKey.'_'.$aInput[0].'"' . (( $sOptionSaved == $aInput[0] )? ' selected="selected"' : '') .'>'. $aInput[1].'</option>';
|
125 |
+
}
|
126 |
+
|
127 |
+
if ($sInputType == 'select') {
|
128 |
+
$sHtml .= '
|
129 |
+
</select>';
|
130 |
+
}
|
131 |
+
|
132 |
+
$sOptionHelpText = '<p class="help-block">'.$sOptionHelpText.'</p>';
|
133 |
+
|
134 |
+
} else if ( $mOptionType === 'ip_addresses' ) {
|
135 |
+
$sTextInput = esc_attr( $sOptionSaved );
|
136 |
+
$nRows = substr_count( $sTextInput, "\n" ) + 1;
|
137 |
+
$sHtml .= '
|
138 |
+
<p>'.$sOptionTitle.'</p>
|
139 |
+
<textarea type="text"
|
140 |
+
name="'.$insVarPrefix.$sOptionKey.'"
|
141 |
+
placeholder="'.$sTextInput.'"
|
142 |
+
id="'.$insVarPrefix.$sOptionKey.'"
|
143 |
+
rows="'.$nRows.'"
|
144 |
+
class="span5">'.$sTextInput.'</textarea>';
|
145 |
+
|
146 |
+
$sOptionHelpText = '<p class="help-block">'.$sOptionHelpText.'</p>';
|
147 |
+
} else {
|
148 |
+
$sHtml .= 'we should never reach this point';
|
149 |
+
}
|
150 |
+
|
151 |
+
$sHtml .= '
|
152 |
+
</label>
|
153 |
+
'.$sOptionHelpText.'
|
154 |
+
</div>
|
155 |
+
</div><!-- controls -->'
|
156 |
+
.$sHelpSection.'
|
157 |
+
</div><!-- control-group -->
|
158 |
+
</div>
|
159 |
+
';
|
160 |
+
}
|
161 |
+
|
162 |
+
return $sHtml;
|
163 |
+
}//getPluginOptionSpan
|
views/icwp_wpsf_firewall_config_index.php
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once( dirname(__FILE__).WORPIT_DS.'icwp_options_helper.php' );
|
3 |
+
include_once( dirname(__FILE__).WORPIT_DS.'widgets'.WORPIT_DS.'icwp_widgets.php' );
|
4 |
+
?>
|
5 |
+
<div class="wrap">
|
6 |
+
<div class="bootstrap-wpadmin">
|
7 |
+
|
8 |
+
<div class="page-header">
|
9 |
+
<a href="http://wwwicontrolwp.com/"><div class="icon32" id="icontrolwp-icon"><br /></div></a>
|
10 |
+
<h2><?php _hlt_e( 'Simple WordPress Firewall (from iControlWP)' ); ?></h2>
|
11 |
+
</div>
|
12 |
+
|
13 |
+
<div class="row">
|
14 |
+
<div class="<?php echo $icwp_fShowAds? 'span9' : 'span12'; ?>">
|
15 |
+
|
16 |
+
<form action="<?php echo $icwp_form_action; ?>" method="post" class="form-horizontal">
|
17 |
+
<?php
|
18 |
+
wp_nonce_field( $icwp_nonce_field );
|
19 |
+
printAllPluginOptionsForm( $icwp_aAllOptions, $icwp_var_prefix, 1 );
|
20 |
+
?>
|
21 |
+
<div class="form-actions">
|
22 |
+
<input type="hidden" name="<?php echo $icwp_var_prefix; ?>all_options_input" value="<?php echo $icwp_all_options_input; ?>" />
|
23 |
+
<input type="hidden" name="icwp_plugin_form_submit" value="Y" />
|
24 |
+
<button type="submit" class="btn btn-primary" name="submit"><?php _hlt_e( 'Save All Settings'); ?></button>
|
25 |
+
</div>
|
26 |
+
</form>
|
27 |
+
|
28 |
+
</div><!-- / span9 -->
|
29 |
+
|
30 |
+
<?php if ( $icwp_fShowAds ) : ?>
|
31 |
+
<div class="span3" id="side_widgets">
|
32 |
+
<?php echo getWidgetIframeHtml('side-widgets-wtb'); ?>
|
33 |
+
</div>
|
34 |
+
<?php endif; ?>
|
35 |
+
</div><!-- / row -->
|
36 |
+
|
37 |
+
</div><!-- / bootstrap-wpadmin -->
|
38 |
+
<?php include_once( dirname(__FILE__).'/include_js.php' ); ?>
|
39 |
+
</div>
|
views/icwp_wpsf_firewall_log_index.php
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once( dirname(__FILE__).'/widgets/icwp_widgets.php' );
|
3 |
+
$sPluginName = 'WordPress Simple Firewall';
|
4 |
+
|
5 |
+
$aLogTypes = array(
|
6 |
+
0 => 'Info',
|
7 |
+
1 => 'Warning',
|
8 |
+
2 => 'Critical'
|
9 |
+
);
|
10 |
+
|
11 |
+
?>
|
12 |
+
<style>
|
13 |
+
tr.row-Info td {
|
14 |
+
}
|
15 |
+
tr.row-Warning td {
|
16 |
+
background-color: #F2D5AE;
|
17 |
+
}
|
18 |
+
tr.row-Critical td {
|
19 |
+
background-color: #DBAFB0;
|
20 |
+
}
|
21 |
+
</style>
|
22 |
+
|
23 |
+
<div class="wrap">
|
24 |
+
<div class="bootstrap-wpadmin">
|
25 |
+
|
26 |
+
<div class="page-header">
|
27 |
+
<a href="http://icwp.io/t" target="_blank"><div class="icon32" id="icontrolwp-icon"><br /></div></a>
|
28 |
+
<h2>Firewall Log :: <?php echo $sPluginName; ?> Plugin (from iControlWP)</h2>
|
29 |
+
</div>
|
30 |
+
|
31 |
+
<div class="row">
|
32 |
+
<div class="<?php echo $icwp_fShowAds? 'span9' : 'span12'; ?>">
|
33 |
+
|
34 |
+
<?php if ( !$icwp_firewall_log ) : ?>
|
35 |
+
<?php echo 'There are currently no logs to display.'; ?>
|
36 |
+
<?php else : ?>
|
37 |
+
|
38 |
+
<form action="<?php echo $icwp_form_action; ?>" method="post" class="form-horizontal">
|
39 |
+
<?php
|
40 |
+
wp_nonce_field( $icwp_nonce_field );
|
41 |
+
?>
|
42 |
+
<div class="form-actions">
|
43 |
+
<input type="hidden" name="icwp_plugin_form_submit" value="Y" />
|
44 |
+
<button type="submit" class="btn btn-primary" name="submit"><?php _hlt_e( 'Clear Log'); ?></button>
|
45 |
+
</div>
|
46 |
+
</form>
|
47 |
+
|
48 |
+
<table class="table table-bordered table-hover table-condensed">
|
49 |
+
<tr>
|
50 |
+
<th>Time</th>
|
51 |
+
<th>Message Type</th>
|
52 |
+
<th>Message</th>
|
53 |
+
</tr>
|
54 |
+
<?php foreach( $icwp_firewall_log as $sId => $aLogData ) :
|
55 |
+
list( $sRequestIp, $sRequestId ) = explode( '_', $sId );
|
56 |
+
?>
|
57 |
+
<tr>
|
58 |
+
<td colspan="3">IP: <?php echo $sRequestIp; ?> (Request ID: <?php echo $sRequestId; ?>)</td>
|
59 |
+
</tr>
|
60 |
+
<?php foreach( $aLogData as $aLogItem ) :
|
61 |
+
list( $sTime, $sLogType, $sLogMessage ) = $aLogItem;
|
62 |
+
?>
|
63 |
+
<tr class="row-<?php echo $aLogTypes[$sLogType]; ?>">
|
64 |
+
<td><?php echo $sTime; ?></td>
|
65 |
+
<td><?php echo $aLogTypes[$sLogType] ?></td>
|
66 |
+
<td><?php echo $sLogMessage; ?></td>
|
67 |
+
</tr>
|
68 |
+
<?php endforeach; ?>
|
69 |
+
<?php endforeach; ?>
|
70 |
+
</table>
|
71 |
+
|
72 |
+
<?php endif; ?>
|
73 |
+
</div><!-- / span9 -->
|
74 |
+
|
75 |
+
<?php if ( $icwp_fShowAds ) : ?>
|
76 |
+
<div class="span3" id="side_widgets">
|
77 |
+
<?php echo getWidgetIframeHtml('side-widgets-wtb'); ?>
|
78 |
+
</div>
|
79 |
+
<?php endif; ?>
|
80 |
+
</div><!-- / row -->
|
81 |
+
|
82 |
+
<div class="row">
|
83 |
+
<div class="span6">
|
84 |
+
</div><!-- / span6 -->
|
85 |
+
<div class="span6">
|
86 |
+
<p></p>
|
87 |
+
</div><!-- / span6 -->
|
88 |
+
</div><!-- / row -->
|
89 |
+
|
90 |
+
</div><!-- / bootstrap-wpadmin -->
|
91 |
+
|
92 |
+
</div><!-- / wrap -->
|
views/icwp_wpsf_index.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
include_once( dirname(__FILE__).'/widgets/icwp_widgets.php' );
|
3 |
+
$sPluginName = 'WordPress Simple Firewall';
|
4 |
+
?>
|
5 |
+
|
6 |
+
<div class="wrap">
|
7 |
+
<div class="bootstrap-wpadmin">
|
8 |
+
|
9 |
+
<div class="page-header">
|
10 |
+
<a href="http://icwp.io/t" target="_blank"><div class="icon32" id="icontrolwp-icon"><br /></div></a>
|
11 |
+
<h2>Dashboard :: <?php echo $sPluginName; ?> Plugin (from iControlWP)</h2>
|
12 |
+
</div>
|
13 |
+
|
14 |
+
<?php include_once( dirname(__FILE__).'/widgets/icwp_common_widgets.php' ); ?>
|
15 |
+
|
16 |
+
<?php if ( $icwp_fShowAds ) : ?>
|
17 |
+
<div class="row" id="worpit_promo">
|
18 |
+
<div class="span12">
|
19 |
+
<?php echo getWidgetIframeHtml( 'dashboard-widget-worpit-wtb' ); ?>
|
20 |
+
</div>
|
21 |
+
</div><!-- / row -->
|
22 |
+
|
23 |
+
<div class="row" id="developer_channel_promo">
|
24 |
+
<div class="span12">
|
25 |
+
<?php echo getWidgetIframeHtml('dashboard-widget-developerchannel-wtb'); ?>
|
26 |
+
</div>
|
27 |
+
</div><!-- / row -->
|
28 |
+
|
29 |
+
<?php endif; ?>
|
30 |
+
|
31 |
+
<div class="row" id="tbs_docs">
|
32 |
+
<div class="span6" id="tbs_docs_shortcodes">
|
33 |
+
<div class="well">
|
34 |
+
<h3>Current Firewall Configuration</h3>
|
35 |
+
<p>The following summarises your current firewall configuration:</p>
|
36 |
+
|
37 |
+
<?php if ( !$icwp_fFirewallOn ) : ?>
|
38 |
+
Firewall is currently OFF.
|
39 |
+
<?php else: ?>
|
40 |
+
|
41 |
+
<ul>
|
42 |
+
<li>Firewall is: <?php echo $icwp_fFirewallOn? 'ON' : 'OFF'; ?></li>
|
43 |
+
<li>Firewall logging is: <?php echo $icwp_fFirewallLogOn? 'ON' : 'OFF'; ?></li>
|
44 |
+
<li>When the firewall blocks a visit, it <?php echo $icwp_fBlockSendEmail? 'will': 'will not'; ?> send an email and then :
|
45 |
+
<?php
|
46 |
+
if( $icwp_sBlockResponse == 'redirect_die' ) {
|
47 |
+
echo 'die.';
|
48 |
+
}
|
49 |
+
else if ( $icwp_sBlockResponse == 'redirect_home' ) {
|
50 |
+
echo 'Redirect to home.';
|
51 |
+
}
|
52 |
+
else if ( $icwp_sBlockResponse == 'redirect_404' ) {
|
53 |
+
echo 'Redirect to 404 page.';
|
54 |
+
}
|
55 |
+
else {
|
56 |
+
echo 'Unknown.';
|
57 |
+
}
|
58 |
+
?>
|
59 |
+
</li>
|
60 |
+
<li>You have <?php echo count($icwp_aIpWhitelist);?> whitelisted IP addresses.
|
61 |
+
<?php foreach( $icwp_aIpWhitelist as $sIp ) : ?>
|
62 |
+
<p><?php echo $sIp; ?><p>
|
63 |
+
<?php endforeach; ?>
|
64 |
+
</li>
|
65 |
+
<li>Firewall blocks WP Login Access: <?php echo $icwp_fBlockLogin? 'ON' : 'OFF'; ?>
|
66 |
+
<?php if ( $icwp_fBlockLogin && count($icwp_aIpWhitelist) == 0 ) : ?>
|
67 |
+
<strong>But, there are no whitelisted IPs so it is effectively off.</strong>
|
68 |
+
<?php endif; ?>
|
69 |
+
</li>
|
70 |
+
<li>Firewall blocks Directory Traversals: <?php echo $icwp_fBlockDirTrav? 'ON' : 'OFF'; ?></li>
|
71 |
+
<li>Firewall blocks SQL Queries: <?php echo $icwp_fBlockSql? 'ON' : 'OFF'; ?></li>
|
72 |
+
<li>Firewall blocks WordPress Specific Terms: <?php echo $icwp_fBlockWpTerms? 'ON' : 'OFF'; ?></li>
|
73 |
+
<li>Firewall blocks Field Truncation Attacks: <?php echo $icwp_fBlockFieldTrun? 'ON' : 'OFF'; ?></li>
|
74 |
+
<li>Firewall blocks Executable File Uploads:<?php echo $icwp_fBlockExeFile? 'ON' : 'OFF'; ?> </li>
|
75 |
+
<li>Firewall blocks Leading Schemas (HTTPS / HTTP): <?php echo $icwp_fBlockSchema? 'ON' : 'OFF'; ?></li>
|
76 |
+
</ul>
|
77 |
+
<?php endif; ?>
|
78 |
+
</div>
|
79 |
+
</div><!-- / span6 -->
|
80 |
+
<div class="span6" id="tbs_docs_examples">
|
81 |
+
<div class="well">
|
82 |
+
</div>
|
83 |
+
</div><!-- / span6 -->
|
84 |
+
</div><!-- / row -->
|
85 |
+
|
86 |
+
<div class="row">
|
87 |
+
<div class="span6">
|
88 |
+
</div><!-- / span6 -->
|
89 |
+
<div class="span6">
|
90 |
+
<p></p>
|
91 |
+
</div><!-- / span6 -->
|
92 |
+
</div><!-- / row -->
|
93 |
+
|
94 |
+
</div><!-- / bootstrap-wpadmin -->
|
95 |
+
|
96 |
+
</div><!-- / wrap -->
|
views/include_js.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
<script type="text/javascript">
|
3 |
+
jQuery( document ).ready(
|
4 |
+
function () {
|
5 |
+
|
6 |
+
/**
|
7 |
+
* Initialise the default states of sections and inputs.
|
8 |
+
*/
|
9 |
+
jQuery( 'input:checked' ).parents( 'div.option_section' ).addClass( 'active' );
|
10 |
+
|
11 |
+
/**
|
12 |
+
* When the user clicks on a "section", this handler will adjust the radio/checkbox
|
13 |
+
* according to the current value. If the user clicked "section" but actually clicked
|
14 |
+
* on an input field within the section, this normal handler will get called, and the
|
15 |
+
* "section" handler will exit immediately.
|
16 |
+
*/
|
17 |
+
jQuery( '.option_section' ).on( 'click', onSectionClick );
|
18 |
+
|
19 |
+
/**
|
20 |
+
* When a checkbox, or associated label is clicked, the parent "section" style is updated.
|
21 |
+
*/
|
22 |
+
jQuery( '.option_section input[type=checkbox],.option_section label' ).on( 'click',
|
23 |
+
function ( inoEvent ) {
|
24 |
+
var $this = jQuery( this );
|
25 |
+
var oParent = $this.parents( 'div.option_section' );
|
26 |
+
|
27 |
+
var oInput = jQuery( 'input[type=checkbox]', oParent );
|
28 |
+
if ( oInput.is( ':checked' ) ) {
|
29 |
+
oParent.addClass( 'active' );
|
30 |
+
}
|
31 |
+
else {
|
32 |
+
oParent.removeClass( 'active' );
|
33 |
+
}
|
34 |
+
}
|
35 |
+
);
|
36 |
+
|
37 |
+
jQuery( 'select[name=<?php echo $worpit_var_prefix; ?>option]' ).trigger( 'change' );
|
38 |
+
}
|
39 |
+
);
|
40 |
+
|
41 |
+
function onSectionClick( inoEvent ) {
|
42 |
+
/**
|
43 |
+
* Don't manipulate the checkboxes/radios if the actual input or linked-label was
|
44 |
+
* the target of the click.
|
45 |
+
*/
|
46 |
+
var oDiv = jQuery( inoEvent.currentTarget );
|
47 |
+
if ( inoEvent.target.tagName && inoEvent.target.tagName.match( /input|label/i ) ) {
|
48 |
+
return true;
|
49 |
+
}
|
50 |
+
|
51 |
+
var oEl = oDiv.find( 'input[type=checkbox]' );
|
52 |
+
if ( oEl.length > 0 ) {
|
53 |
+
if ( oEl.is( ':checked' ) ) {
|
54 |
+
oEl.removeAttr( 'checked' );
|
55 |
+
oDiv.removeClass( 'active' );
|
56 |
+
}
|
57 |
+
else {
|
58 |
+
oEl.attr( 'checked', 'checked' );
|
59 |
+
oDiv.addClass( 'active' );
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
var oEl = oDiv.find( 'input[type=radio]' );
|
64 |
+
if ( oEl.length > 0 && !oEl.is( ':checked' ) ) {
|
65 |
+
oEl.attr( 'checked', 'checked' );
|
66 |
+
oDiv.addClass( 'active' ).siblings().removeClass( 'active' );
|
67 |
+
}
|
68 |
+
|
69 |
+
}
|
70 |
+
</script>
|
views/widgets/icwp_common_widgets.php
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
$sPluginName = 'WordPress Simple Firewall';
|
3 |
+
?>
|
4 |
+
<div class="row">
|
5 |
+
<div class="span12">
|
6 |
+
<div class="well">
|
7 |
+
<div class="row">
|
8 |
+
<div class="span6">
|
9 |
+
<h3>Love the <?php echo $sPluginName; ?> plugin?</h3>
|
10 |
+
<p>Please help <u>spread the word</u> or check out what else we do ...</p>
|
11 |
+
</div>
|
12 |
+
<div class="span4">
|
13 |
+
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://icwp.io/r" data-text="I use the <?php echo $sPluginName; ?> plugin to protect my #WordPress sites!" data-via="iControlWP" data-size="large">Tweet</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
|
14 |
+
</div>
|
15 |
+
</div>
|
16 |
+
<div class="row">
|
17 |
+
<div class="span6">
|
18 |
+
<ul>
|
19 |
+
<li><a href="http://icwp.io/4" target="_blank"><strong>Manage <u>All</u> Your WordPress Sites In 1 Place!</strong></a></li>
|
20 |
+
<li><a href="http://icwp.io/y" target="_blank">Check out all our other WordPress Plugins</a></li>
|
21 |
+
</ul>
|
22 |
+
</div>
|
23 |
+
<div class="span5">
|
24 |
+
<ul>
|
25 |
+
<li><a href="http://icwp.io/a" target="_blank"><strong>Visit the plugin Help & Support page</strong></a>.</li>
|
26 |
+
<li><a href="http://wordpress.org/extend/plugins/wordpress-bootstrap-css/" target="_blank">Show some love, and give this a 5 star rating on WordPress.org.</a></li>
|
27 |
+
</ul>
|
28 |
+
</div>
|
29 |
+
</div>
|
30 |
+
</div><!-- / well -->
|
31 |
+
</div><!-- / span12 -->
|
32 |
+
</div><!-- / row -->
|
views/widgets/icwp_widgets.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
function getWidgetIframeHtml( $insSnippet ) {
|
3 |
+
|
4 |
+
$sSubPageNow = isset( $_GET['page'] )? 'page='.$_GET['page'].'&': '';
|
5 |
+
|
6 |
+
$sWidth = '100%';
|
7 |
+
$sBackgroundColor = "#ffffff";
|
8 |
+
$sIframeName = 'iframe-hlt-bootstrapcss-'.$insSnippet;
|
9 |
+
|
10 |
+
if ( strpos( $insSnippet, 'side-widgets') !== false ) {
|
11 |
+
$sHeight = '1200px';
|
12 |
+
}
|
13 |
+
elseif ( strpos( $insSnippet, 'dashboard-widget-developerchannel') !== false ) {
|
14 |
+
$sHeight = '312px';
|
15 |
+
}
|
16 |
+
elseif ( strpos( $insSnippet, 'dashboard-widget-worpit') !== false ) {
|
17 |
+
$sHeight = '230px';
|
18 |
+
$sBackgroundColor = 'whiteSmoke';
|
19 |
+
}
|
20 |
+
|
21 |
+
return '<iframe name="'.$sIframeName.'"
|
22 |
+
src="http://www.hostliketoast.com/custom/remote/plugins/hlt-bootstrapcss-plugin-widgets.php?'.$sSubPageNow.'snippet='.$insSnippet.'"
|
23 |
+
width="'.$sWidth.'" height="'.$sHeight.'" frameborder="0" scrolling="no" style="background-color:'.$sBackgroundColor.';" ></iframe>
|
24 |
+
';
|
25 |
+
|
26 |
+
}//getWidgetIframeHtml
|
27 |
+
?>
|