Version Description
- Added open_basedir conditional check to toggle CURLOPT_FOLLOWLOCATION based on users server settings
- Prevents warning being thrown for users on shared hosts with an open_basedir set
Download this release
Release Info
| Developer | eherman24 |
| Plugin | |
| Version | 4.2.2 |
| Comparing to | |
| See all releases | |
Code changes from version 3.0.1 to 4.2.2
- .gitignore +6 -0
- classes/MCAPI_2.0.class.php +7 -14
- classes/class.yksemeBase.php +1376 -241
- classes/set_language.php +111 -0
- css/animate.css +3303 -0
- css/fonts/yks-mc-font.eot +0 -0
- css/fonts/yks-mc-font.svg +13 -0
- css/fonts/yks-mc-font.ttf +0 -0
- css/fonts/yks-mc-font.woff +0 -0
- css/jquery-ui-1.10.4.smoothness.css +1172 -1
- css/jquery.dataTables.css +212 -0
- css/style.ykseme.css +603 -8
- css/yks_easy_mc_wp_3point8.css +20 -0
- images/pagination/back_disabled.png +0 -0
- images/pagination/back_enabled.png +0 -0
- images/pagination/back_enabled_hover.png +0 -0
- images/pagination/forward_disabled.png +0 -0
- images/pagination/forward_enabled.png +0 -0
- images/pagination/forward_enabled_hover.png +0 -0
- images/pagination/sort_asc.png +0 -0
- images/pagination/sort_asc_disabled.png +0 -0
- images/pagination/sort_both.png +0 -0
- images/pagination/sort_desc.png +0 -0
- images/pagination/sort_desc_disabled.png +0 -0
- images/preloader.gif +0 -0
- images/smoothness/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- images/smoothness/ui-bg_flat_75_ffffff_40x100.png +0 -0
- images/smoothness/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- images/smoothness/ui-bg_glass_65_ffffff_1x400.png +0 -0
- images/smoothness/ui-bg_glass_75_dadada_1x400.png +0 -0
- images/smoothness/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- images/smoothness/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- images/smoothness/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- images/smoothness/ui-icons_222222_256x240.png +0 -0
- images/smoothness/ui-icons_2e83ff_256x240.png +0 -0
- images/smoothness/ui-icons_454545_256x240.png +0 -0
- images/smoothness/ui-icons_888888_256x240.png +0 -0
- images/smoothness/ui-icons_cd0a0a_256x240.png +0 -0
- images/yikes_logo_widget_icon.png +0 -0
- images/yks_mc_lets_get_started.png +0 -0
- js/jQuery_1.11.0.min.js +4 -0
- js/jquery.dataTables.js +12098 -0
- js/yks_mc_tinymce_button.js +85 -0
- languages/Lanages To Translate To.txt +30 -0
- languages/yikes-inc-easy-mailchimp-extender-ar_AR.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-ar_AR.po +753 -0
- languages/yikes-inc-easy-mailchimp-extender-cy.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-cy.po +781 -0
- languages/yikes-inc-easy-mailchimp-extender-de_DE.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-de_DE.po +800 -0
- languages/yikes-inc-easy-mailchimp-extender-el.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-el.po +792 -0
- languages/yikes-inc-easy-mailchimp-extender-en_US.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-en_US.po +711 -0
- languages/yikes-inc-easy-mailchimp-extender-es_ES.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-es_ES.po +781 -0
- languages/yikes-inc-easy-mailchimp-extender-fa_IR.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-fa_IR.po +766 -0
- languages/yikes-inc-easy-mailchimp-extender-he_IL.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-he_IL.po +750 -0
- languages/yikes-inc-easy-mailchimp-extender-hi_IN.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-hi_IN.po +757 -0
- languages/yikes-inc-easy-mailchimp-extender-it_IT.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-it_IT.po +788 -0
- languages/yikes-inc-easy-mailchimp-extender-ja.mo +0 -0
- languages/yikes-inc-easy-mailchimp-extender-ja.po +708 -0
.gitignore
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Windows Files
|
| 2 |
+
Thumbs.db
|
| 3 |
+
desktop.ini
|
| 4 |
+
|
| 5 |
+
# OS X Files
|
| 6 |
+
.DS_Store
|
classes/MCAPI_2.0.class.php
CHANGED
|
@@ -1,15 +1,4 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
-
// TO DO
|
| 4 |
-
|
| 5 |
-
// Go through and check that all methods are update to MC API 2.0
|
| 6 |
-
// Confirm all functionality works correctly
|
| 7 |
-
// Check form embed into new posts/pages
|
| 8 |
-
// --------------------------------------------------------------------------------------- //
|
| 9 |
-
// --------------------------------------------------------------------------------------- //
|
| 10 |
-
// Double check all methods are MC API 2.0 appropriate
|
| 11 |
-
// Remove PHPDebug tool and comments
|
| 12 |
-
|
| 13 |
require_once YKSEME_PATH.'/Mailchimp/Folders.php';
|
| 14 |
require_once YKSEME_PATH.'/Mailchimp/Templates.php';
|
| 15 |
require_once YKSEME_PATH.'/Mailchimp/Users.php';
|
|
@@ -24,7 +13,6 @@ require_once YKSEME_PATH.'/Mailchimp/Reports.php';
|
|
| 24 |
require_once YKSEME_PATH.'/Mailchimp/Gallery.php';
|
| 25 |
require_once YKSEME_PATH.'/Mailchimp/Exceptions.php';
|
| 26 |
|
| 27 |
-
|
| 28 |
if(!class_exists("wpyksMCAPI"))
|
| 29 |
{
|
| 30 |
class wpyksMCAPI {
|
|
@@ -266,10 +254,15 @@ class wpyksMCAPI {
|
|
| 266 |
$this->ch = curl_init();
|
| 267 |
curl_setopt($this->ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.4');
|
| 268 |
curl_setopt($this->ch, CURLOPT_POST, true);
|
| 269 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 270 |
curl_setopt($this->ch, CURLOPT_HEADER, false);
|
| 271 |
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
|
| 272 |
-
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT,
|
| 273 |
curl_setopt($this->ch, CURLOPT_TIMEOUT, $opts['timeout']);
|
| 274 |
|
| 275 |
|
| 1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
require_once YKSEME_PATH.'/Mailchimp/Folders.php';
|
| 3 |
require_once YKSEME_PATH.'/Mailchimp/Templates.php';
|
| 4 |
require_once YKSEME_PATH.'/Mailchimp/Users.php';
|
| 13 |
require_once YKSEME_PATH.'/Mailchimp/Gallery.php';
|
| 14 |
require_once YKSEME_PATH.'/Mailchimp/Exceptions.php';
|
| 15 |
|
|
|
|
| 16 |
if(!class_exists("wpyksMCAPI"))
|
| 17 |
{
|
| 18 |
class wpyksMCAPI {
|
| 254 |
$this->ch = curl_init();
|
| 255 |
curl_setopt($this->ch, CURLOPT_USERAGENT, 'MailChimp-PHP/2.0.4');
|
| 256 |
curl_setopt($this->ch, CURLOPT_POST, true);
|
| 257 |
+
// if open base directiory is set, toggle to false, else keep true
|
| 258 |
+
if ( ini_get('open_basedir') ) {
|
| 259 |
+
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, false);
|
| 260 |
+
} else {
|
| 261 |
+
curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, true);
|
| 262 |
+
}
|
| 263 |
curl_setopt($this->ch, CURLOPT_HEADER, false);
|
| 264 |
curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, true);
|
| 265 |
+
curl_setopt($this->ch, CURLOPT_CONNECTTIMEOUT, 45);
|
| 266 |
curl_setopt($this->ch, CURLOPT_TIMEOUT, $opts['timeout']);
|
| 267 |
|
| 268 |
|
classes/class.yksemeBase.php
CHANGED
|
@@ -3,8 +3,6 @@ if(!class_exists("yksemeBase"))
|
|
| 3 |
{
|
| 4 |
class yksemeBase
|
| 5 |
{
|
| 6 |
-
|
| 7 |
-
|
| 8 |
|
| 9 |
/**
|
| 10 |
* Variables
|
|
@@ -22,6 +20,7 @@ public $currentListsCt = false;
|
|
| 22 |
public function __construct()
|
| 23 |
{
|
| 24 |
yksemeBase::initialize();
|
|
|
|
| 25 |
}
|
| 26 |
|
| 27 |
/**
|
|
@@ -38,22 +37,27 @@ public function __destruct()
|
|
| 38 |
*/
|
| 39 |
public function activate()
|
| 40 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
// check if our option is already set
|
|
|
|
| 42 |
if( get_option( 'api_validation' ) ) {
|
| 43 |
return;
|
| 44 |
-
} else {
|
| 45 |
add_option('api_validation' , 'invalid_api_key');
|
| 46 |
}
|
| 47 |
-
|
| 48 |
}
|
| 49 |
public function deactivate()
|
| 50 |
{
|
| 51 |
-
|
| 52 |
}
|
| 53 |
public function uninstall()
|
| 54 |
-
{
|
| 55 |
delete_option(YKSEME_OPTION);
|
| 56 |
delete_option('api_validation');
|
|
|
|
| 57 |
}
|
| 58 |
|
| 59 |
/***** INITIAL SETUP
|
|
@@ -61,14 +65,32 @@ public function uninstall()
|
|
| 61 |
public function initialize()
|
| 62 |
{
|
| 63 |
// If it's not already set up, initialize our plugin session
|
| 64 |
-
if(session_id() == '') session_start();
|
| 65 |
-
if(!is_array(
|
| 66 |
{
|
| 67 |
$_SESSION[$this->sessName] = array();
|
| 68 |
}
|
| 69 |
// Add the CSS/JS files
|
| 70 |
add_action('admin_print_styles', array(&$this, 'addStyles'));
|
| 71 |
add_action('admin_print_scripts', array(&$this, 'addScripts'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
if(!is_admin())
|
| 73 |
{
|
| 74 |
add_action('wp_print_styles', array(&$this, 'addStyles_frontend'));
|
|
@@ -85,24 +107,35 @@ public function initialize()
|
|
| 85 |
$this->currentListsCt = array();
|
| 86 |
// Do any update tasks if needed
|
| 87 |
$this->runUpdateCheck();
|
|
|
|
|
|
|
| 88 |
}
|
| 89 |
public function createShortcodes()
|
| 90 |
{
|
| 91 |
add_shortcode('yks-mailchimp-list', array(&$this, 'processShortcode'));
|
| 92 |
}
|
|
|
|
| 93 |
public function getOptionValue()
|
| 94 |
{
|
| 95 |
$defaultVals = array(
|
| 96 |
'version' => YKSEME_VERSION_CURRENT,
|
| 97 |
'api-key' => '',
|
| 98 |
-
'flavor' => '
|
| 99 |
'debug' => '0',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
'lists' => array()
|
| 101 |
);
|
| 102 |
$ov = get_option(YKSEME_OPTION, $defaultVals);
|
| 103 |
$this->optionVal = $ov;
|
| 104 |
return $ov;
|
| 105 |
}
|
|
|
|
| 106 |
private function runUpdateCheck()
|
| 107 |
{
|
| 108 |
if(!isset($this->optionVal['version'])
|
|
@@ -113,11 +146,13 @@ private function runUpdateCheck()
|
|
| 113 |
}
|
| 114 |
|
| 115 |
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
/***** FUNCTIONS
|
| 120 |
****************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
public function slugify($text)
|
| 122 |
{
|
| 123 |
// replace non letter or digits by -
|
|
@@ -136,11 +171,11 @@ public function slugify($text)
|
|
| 136 |
}
|
| 137 |
return $text;
|
| 138 |
}
|
| 139 |
-
|
|
|
|
| 140 |
public function getBlankFieldsArray($lid='')
|
| 141 |
{
|
| 142 |
$fields = array();
|
| 143 |
-
|
| 144 |
// Add Field
|
| 145 |
$name = $this->slugify('Email Address'.'-'.'EMAIL');
|
| 146 |
$addField = array(
|
|
@@ -158,10 +193,11 @@ public function getBlankFieldsArray($lid='')
|
|
| 158 |
'choices' => ''
|
| 159 |
);
|
| 160 |
$fields[$addField['id']] = $addField;
|
| 161 |
-
|
| 162 |
return $fields;
|
| 163 |
}
|
| 164 |
-
|
|
|
|
| 165 |
public function getImportedFieldsArray($lid, $mv)
|
| 166 |
{
|
| 167 |
if(empty($mv)) {
|
|
@@ -169,12 +205,11 @@ public function getImportedFieldsArray($lid, $mv)
|
|
| 169 |
} else {
|
| 170 |
$fields = array();
|
| 171 |
|
| 172 |
-
|
| 173 |
-
// TODO
|
| 174 |
foreach($mv['data'][0]['merge_vars'] as $field)
|
| 175 |
{
|
| 176 |
// Add Field
|
| 177 |
-
$name = $this->slugify($field['label'].'-'.$field['tag']);
|
| 178 |
$addField = array(
|
| 179 |
'id' => $lid.'-'.$name,
|
| 180 |
'name' => $lid.$field['tag'],
|
|
@@ -186,14 +221,20 @@ public function getImportedFieldsArray($lid, $mv)
|
|
| 186 |
'sort' => $field['order'],
|
| 187 |
'type' => $field['field_type'],
|
| 188 |
'help' => $field['helptext'],
|
| 189 |
-
'
|
|
|
|
|
|
|
|
|
|
| 190 |
'choices' => (isset($field['choices']) ? $field['choices'] : '')
|
| 191 |
);
|
| 192 |
$fields[$addField['id']] = $addField;
|
|
|
|
| 193 |
}
|
| 194 |
return $fields;
|
| 195 |
}
|
| 196 |
}
|
|
|
|
|
|
|
| 197 |
public function getBrowser()
|
| 198 |
{
|
| 199 |
$u_agent = $_SERVER['HTTP_USER_AGENT'];
|
|
@@ -286,29 +327,12 @@ public function getBrowser()
|
|
| 286 |
'pattern' => $pattern
|
| 287 |
);
|
| 288 |
}
|
| 289 |
-
public function getTrackingGif($page='')
|
| 290 |
-
{
|
| 291 |
-
?>
|
| 292 |
-
<script type="text/javascript">
|
| 293 |
-
var _gaq = _gaq || [];
|
| 294 |
-
_gaq.push(['_setAccount', 'UA-3024863-1']);
|
| 295 |
-
_gaq.push(['_trackPageview', '/virtual/wordpress/plugin/yikes-inc-easy-mailchimp-extender/<?php echo $this->slugify($page); ?>']);
|
| 296 |
-
|
| 297 |
-
(function() {
|
| 298 |
-
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
| 299 |
-
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
| 300 |
-
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
| 301 |
-
})();
|
| 302 |
-
</script>
|
| 303 |
-
<?php
|
| 304 |
-
}
|
| 305 |
-
|
| 306 |
-
|
| 307 |
-
|
| 308 |
|
| 309 |
|
| 310 |
/***** CONFIGURATION
|
| 311 |
****************************************************************************************************/
|
|
|
|
|
|
|
| 312 |
public function updateOptions($p)
|
| 313 |
{
|
| 314 |
if(!empty($p['form_data']))
|
|
@@ -317,15 +341,25 @@ public function updateOptions($p)
|
|
| 317 |
$this->optionVal['api-key'] = $fd['yks-mailchimp-api-key'];
|
| 318 |
$this->optionVal['flavor'] = $fd['yks-mailchimp-flavor'];
|
| 319 |
$this->optionVal['debug'] = $fd['yks-mailchimp-debug'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 320 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 321 |
}
|
| 322 |
return false;
|
| 323 |
}
|
|
|
|
| 324 |
public function updateApiKey($k)
|
| 325 |
{
|
| 326 |
$this->optionVal['api-key'] = $k;
|
| 327 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 328 |
}
|
|
|
|
| 329 |
public function updateVersion($k)
|
| 330 |
{
|
| 331 |
$this->optionVal['version'] = $k;
|
|
@@ -335,7 +369,8 @@ public function updateVersion($k)
|
|
| 335 |
|
| 336 |
/********Mailchimp Error Codes
|
| 337 |
*****************************************************************************************************/
|
| 338 |
-
|
|
|
|
| 339 |
public function YksMCErrorCodes ($error)
|
| 340 |
{
|
| 341 |
//Server Errors
|
|
@@ -460,7 +495,6 @@ $errorcode['508'][9] = 'Invalid_URL';
|
|
| 460 |
$errormessage[9] = "Sorry, that URL is invalid. Please try again.";
|
| 461 |
|
| 462 |
// Get error message
|
| 463 |
-
|
| 464 |
foreach ($errorcode as $eid => $value )
|
| 465 |
{
|
| 466 |
if ($eid == $error)
|
|
@@ -481,20 +515,16 @@ foreach ($errorcode as $eid => $value )
|
|
| 481 |
}
|
| 482 |
|
| 483 |
|
| 484 |
-
|
| 485 |
/***** LIST ACTIONS
|
| 486 |
****************************************************************************************************/
|
| 487 |
-
|
| 488 |
-
|
| 489 |
-
|
| 490 |
-
public function addList($lid='' , $name='')
|
| 491 |
{
|
| 492 |
-
if($lid == '' || isset($this->optionVal['lists'][$
|
| 493 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 494 |
|
| 495 |
-
// test
|
| 496 |
-
// $fields = $api->call('lists/list', '');
|
| 497 |
-
|
| 498 |
$mv = $api->call('lists/merge-vars', array(
|
| 499 |
'id' => array($lid)
|
| 500 |
)
|
|
@@ -508,21 +538,186 @@ public function addList($lid='' , $name='')
|
|
| 508 |
'name' => $name,
|
| 509 |
'fields' => $this->getImportedFieldsArray($lid, $mv)
|
| 510 |
);
|
|
|
|
| 511 |
$this->optionVal['lists'][$list['id']] = $list;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 512 |
if(update_option(YKSEME_OPTION, $this->optionVal))
|
| 513 |
{
|
| 514 |
return $this->generateListContainers(array($list));
|
| 515 |
}
|
| 516 |
}
|
| 517 |
return false;
|
| 518 |
-
|
| 519 |
}
|
| 520 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 521 |
public function getLists()
|
| 522 |
{
|
| 523 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 524 |
$lists = $this->getListsData();
|
| 525 |
-
$listArr = ($listArr
|
| 526 |
$theusedlist = array();
|
| 527 |
if(count($listArr) > 0)
|
| 528 |
{
|
|
@@ -535,6 +730,7 @@ public function getLists()
|
|
| 535 |
{
|
| 536 |
echo "<select id='yks-list-select' name='yks-list-select'>";
|
| 537 |
echo "<option value=''> Select List</option>";
|
|
|
|
| 538 |
foreach ($lists as $lkey => $lvalue)
|
| 539 |
{
|
| 540 |
if (!in_array($lkey, $theusedlist))
|
|
@@ -546,25 +742,49 @@ public function getLists()
|
|
| 546 |
}
|
| 547 |
return false;
|
| 548 |
}
|
| 549 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 550 |
public function getListsData()
|
| 551 |
{
|
|
|
|
| 552 |
$theListItems = get_transient('yks-mcp-listdata-retrieved');
|
| 553 |
if (!$theListItems)
|
| 554 |
{
|
|
|
|
| 555 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 556 |
$lists = $api->call('lists/list', array( 'limit' => 100 ));
|
| 557 |
if($lists)
|
| 558 |
{
|
| 559 |
foreach ($lists['data'] as $list)
|
| 560 |
{
|
| 561 |
-
$theListItems[$list['id']] = $list['name'];
|
|
|
|
| 562 |
}
|
|
|
|
| 563 |
}
|
| 564 |
-
set_transient( 'yks-mcp-listdata-retrieved', $theListItems, 60/
|
| 565 |
-
}
|
| 566 |
return $theListItems;
|
| 567 |
}
|
|
|
|
| 568 |
public function sortList($p)
|
| 569 |
{
|
| 570 |
if(empty($p['update_string'])
|
|
@@ -597,6 +817,9 @@ private function sortListfields($a,$b)
|
|
| 597 |
}
|
| 598 |
return ($a < $b) ? -1 : 1;
|
| 599 |
}
|
|
|
|
|
|
|
|
|
|
| 600 |
public function updateList($p)
|
| 601 |
{
|
| 602 |
if(!empty($p['form_data']))
|
|
@@ -604,35 +827,52 @@ public function updateList($p)
|
|
| 604 |
parse_str($p['form_data'], $fd);
|
| 605 |
if(!empty($fd['yks-mailchimp-unique-id']))
|
| 606 |
{
|
|
|
|
| 607 |
foreach($this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'] as $k => $v)
|
| 608 |
{
|
| 609 |
// Only proceed if the field is not locked
|
| 610 |
if($v['require'] == 0)
|
| 611 |
{
|
| 612 |
// Make sure this field was included in the update
|
| 613 |
-
$this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'][$k]['active']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 614 |
}
|
|
|
|
| 615 |
}
|
| 616 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 617 |
}
|
| 618 |
}
|
| 619 |
return false;
|
| 620 |
}
|
| 621 |
-
|
|
|
|
| 622 |
public function deleteList($i=false)
|
| 623 |
{
|
| 624 |
if($i == false) return false;
|
| 625 |
else
|
| 626 |
{
|
| 627 |
unset($this->optionVal['lists'][$i]);
|
|
|
|
| 628 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 629 |
}
|
| 630 |
}
|
|
|
|
|
|
|
| 631 |
public function importList($i=false)
|
| 632 |
{
|
| 633 |
if($i == false) return false;
|
| 634 |
else
|
| 635 |
{
|
|
|
|
| 636 |
$lid = $this->optionVal['lists'][$i]['list-id'];
|
| 637 |
$name = $this->optionVal['lists'][$i]['name'];
|
| 638 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
|
@@ -640,6 +880,7 @@ public function importList($i=false)
|
|
| 640 |
'id' => array( $lid )
|
| 641 |
)
|
| 642 |
);
|
|
|
|
| 643 |
if($mv)
|
| 644 |
{
|
| 645 |
$mv = $this->getImportedFieldsArray($lid, $mv);
|
|
@@ -656,10 +897,249 @@ public function importList($i=false)
|
|
| 656 |
}
|
| 657 |
return false;
|
| 658 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 659 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 660 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 661 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 662 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 663 |
|
| 664 |
/***** SCRIPTS/STYLES
|
| 665 |
****************************************************************************************************/
|
|
@@ -667,19 +1147,23 @@ public function addStyles()
|
|
| 667 |
{
|
| 668 |
// Register Styles
|
| 669 |
wp_register_style('ykseme-css-base', YKSEME_URL.'css/style.ykseme.css', array(), '1.0.0', 'all');
|
|
|
|
| 670 |
// Enqueue Styles
|
| 671 |
wp_enqueue_style('thickbox');
|
| 672 |
-
wp_enqueue_style('ykseme-css-base');
|
|
|
|
| 673 |
}
|
| 674 |
|
| 675 |
public function addStyles_frontend()
|
| 676 |
{
|
| 677 |
// Register Styles
|
| 678 |
wp_register_style('ykseme-css-base', YKSEME_URL.'css/style.ykseme.css', array(), '1.0.0', 'all');
|
| 679 |
-
wp_register_style('ykseme-css-smoothness',
|
|
|
|
| 680 |
// Enqueue Styles
|
| 681 |
wp_enqueue_style('ykseme-css-base');
|
| 682 |
wp_enqueue_style('ykseme-css-smoothness');
|
|
|
|
| 683 |
}
|
| 684 |
|
| 685 |
public function addScripts()
|
|
@@ -690,21 +1174,36 @@ public function addScripts()
|
|
| 690 |
wp_enqueue_script('jquery-ui-sortable');
|
| 691 |
wp_enqueue_script('jquery-ui-tabs');
|
| 692 |
wp_enqueue_script('ykseme-base', YKSEME_URL.'js/script.ykseme.js', array('jquery'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 693 |
}
|
| 694 |
|
| 695 |
public function addScripts_frontend()
|
| 696 |
{
|
| 697 |
global $wp_scripts;
|
|
|
|
| 698 |
$version ='1.9.0';
|
| 699 |
-
|
|
|
|
| 700 |
{
|
| 701 |
wp_enqueue_script( 'jquery' );
|
| 702 |
}
|
| 703 |
else
|
| 704 |
{
|
| 705 |
-
|
| 706 |
-
|
| 707 |
-
|
|
|
|
|
|
|
|
|
|
| 708 |
}
|
| 709 |
// Everything else
|
| 710 |
wp_enqueue_script('jquery-ui-core');
|
|
@@ -712,17 +1211,19 @@ public function addScripts_frontend()
|
|
| 712 |
}
|
| 713 |
|
| 714 |
|
| 715 |
-
|
| 716 |
/***** SHORTCODES
|
| 717 |
****************************************************************************************************/
|
|
|
|
|
|
|
| 718 |
public function processShortcode($p)
|
| 719 |
{
|
| 720 |
ob_start();
|
| 721 |
if($this->optionVal['api-key'] != ''
|
| 722 |
-
&& (is_array($this->optionVal['lists'][$p['id']]) && !empty($this->optionVal['lists'][$p['id']]
|
| 723 |
{
|
| 724 |
// Setup this list
|
| 725 |
$list = $this->optionVal['lists'][$p['id']];
|
|
|
|
| 726 |
// Which form are we on?
|
| 727 |
if(!isset($this->currentLists[$p['id']]))
|
| 728 |
$this->currentLists[$p['id']] = 0;
|
|
@@ -741,90 +1242,106 @@ public function processShortcode($p)
|
|
| 741 |
// List form
|
| 742 |
include YKSEME_PATH.'templates/shortcode_form.php';
|
| 743 |
}
|
| 744 |
-
|
|
|
|
| 745 |
{
|
| 746 |
-
include YKSEME_PATH.'templates/
|
|
|
|
|
|
|
|
|
|
| 747 |
}
|
| 748 |
$shortcode = ob_get_contents();
|
| 749 |
ob_end_clean();
|
| 750 |
return $shortcode;
|
| 751 |
}
|
| 752 |
-
|
|
|
|
|
|
|
| 753 |
{
|
| 754 |
-
$p = array(
|
|
|
|
|
|
|
|
|
|
| 755 |
return $this->processShortcode($p);
|
| 756 |
}
|
| 757 |
|
| 758 |
|
| 759 |
-
|
| 760 |
-
|
| 761 |
-
|
| 762 |
/***** ADMINISTRATION MENUS
|
| 763 |
****************************************************************************************************/
|
| 764 |
public function addAdministrationMenu()
|
| 765 |
{
|
| 766 |
// Top Level Menu
|
| 767 |
-
add_menu_page('MailChimp Forms', 'MailChimp Forms', 'manage_options', 'yks-mailchimp-form', array(&$this, 'generatePageOptions'),
|
| 768 |
// Sub Items
|
| 769 |
-
add_submenu_page('yks-mailchimp-form', 'MailChimp Forms', 'MailChimp Settings', 'manage_options', 'yks-mailchimp-form', array(&$this, 'generatePageOptions'));
|
| 770 |
-
add_submenu_page('yks-mailchimp-form', 'Manage List Forms', 'Manage List Forms', 'manage_options', 'yks-mailchimp-form-lists', array(&$this, 'generatePageLists'));
|
| 771 |
-
add_submenu_page('yks-mailchimp-form', 'About YIKES, Inc.', 'About YIKES, Inc.', 'manage_options', 'yks-mailchimp-about-yikes', array(&$this, 'generatePageAboutYikes'));
|
| 772 |
}
|
| 773 |
|
| 774 |
|
| 775 |
-
|
| 776 |
-
|
| 777 |
-
|
| 778 |
/***** ADMINISTRATION PAGES
|
| 779 |
****************************************************************************************************/
|
| 780 |
public function generatePageOptions()
|
| 781 |
{
|
| 782 |
-
require_once YKSEME_PATH.'pages/options.php';
|
| 783 |
}
|
| 784 |
public function generatePageLists()
|
| 785 |
{
|
| 786 |
-
require_once YKSEME_PATH.'pages/lists.php';
|
| 787 |
}
|
| 788 |
public function generatePageAboutYikes()
|
| 789 |
{
|
| 790 |
-
require_once YKSEME_PATH.'pages/about.php';
|
| 791 |
}
|
| 792 |
-
|
| 793 |
-
|
| 794 |
-
|
|
|
|
| 795 |
|
| 796 |
|
| 797 |
/***** FORM DATA
|
| 798 |
-
****************************************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 799 |
|
|
|
|
|
|
|
| 800 |
public function validateAPIkeySettings()
|
| 801 |
{
|
| 802 |
-
|
| 803 |
-
$
|
| 804 |
-
|
| 805 |
$api = new wpyksMCAPI($apiKey);
|
| 806 |
-
|
| 807 |
-
|
| 808 |
-
// if there is an error with the $resp variable
|
| 809 |
-
// display the error
|
| 810 |
-
|
| 811 |
-
// need to add an exception for mailchimp HTTP error
|
| 812 |
-
// not sur ehow to yet.
|
| 813 |
try {
|
| 814 |
-
//First try getting our user numero uno
|
| 815 |
$resp = $api->call('helper/ping', array('apikey' => $apiKey));
|
| 816 |
echo $resp['msg'];
|
| 817 |
-
|
| 818 |
} catch( Exception $e ) {
|
| 819 |
$errorMessage = str_replace('API call to helper/ping failed:', '', $e->getMessage());
|
| 820 |
-
|
| 821 |
update_option('api_validation', 'invalid_api_key');
|
| 822 |
}
|
| 823 |
-
|
| 824 |
-
|
| 825 |
wp_die();
|
| 826 |
}
|
| 827 |
|
|
|
|
|
|
|
| 828 |
public function addUserToMailchimp($p)
|
| 829 |
{
|
| 830 |
if(!empty($p['form_data']))
|
|
@@ -832,15 +1349,15 @@ public function addUserToMailchimp($p)
|
|
| 832 |
parse_str($p['form_data'], $fd);
|
| 833 |
if(!empty($fd['yks-mailchimp-list-id']))
|
| 834 |
{
|
|
|
|
| 835 |
$email = false;
|
| 836 |
-
$lid
|
| 837 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 838 |
$mv = array();
|
| 839 |
-
|
| 840 |
-
|
| 841 |
-
|
| 842 |
foreach($this->optionVal['lists'][$lid]['fields'] as $field) : if($field['active'] == '1') :
|
| 843 |
-
|
| 844 |
// Check to see if the field is in the post
|
| 845 |
if(isset($fd[$field['name']])) :
|
| 846 |
|
|
@@ -854,6 +1371,7 @@ public function addUserToMailchimp($p)
|
|
| 854 |
default:
|
| 855 |
$mv[$field['merge']] = $fd[$field['name']];
|
| 856 |
break;
|
|
|
|
| 857 |
case 'address':
|
| 858 |
$mv[$field['merge']] = array(
|
| 859 |
'addr1' => $fd[$field['name']],
|
|
@@ -864,33 +1382,94 @@ public function addUserToMailchimp($p)
|
|
| 864 |
'country' => 'US'
|
| 865 |
);
|
| 866 |
break;
|
|
|
|
| 867 |
}
|
| 868 |
-
|
| 869 |
endif;
|
| 870 |
endif; endforeach;
|
| 871 |
|
| 872 |
-
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 873 |
$noemail = "The email address is blank";
|
| 874 |
if($email === false) return $noemail;
|
| 875 |
-
|
| 876 |
-
|
| 877 |
-
|
| 878 |
-
|
| 879 |
-
|
| 880 |
-
|
| 881 |
-
|
| 882 |
-
|
| 883 |
-
|
| 884 |
-
|
| 885 |
-
|
| 886 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 887 |
}
|
| 888 |
-
|
| 889 |
}
|
| 890 |
}
|
| 891 |
-
return
|
| 892 |
}
|
| 893 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 894 |
private function getFieldMergeVar($fn, $lid)
|
| 895 |
{
|
| 896 |
$mk = '_YKS_UNKNOWN';
|
|
@@ -915,35 +1494,44 @@ private function getFieldMergeVar($fn, $lid)
|
|
| 915 |
}
|
| 916 |
return $mk;
|
| 917 |
}
|
|
|
|
| 918 |
|
|
|
|
|
|
|
| 919 |
public function generateListContainers($listArr=false)
|
| 920 |
{
|
| 921 |
$listArr = ($listArr == false ? $this->optionVal['lists'] : $listArr);
|
| 922 |
$thelistdata = $this->getListsData(); //Get list names from API
|
| 923 |
-
|
| 924 |
if(count($listArr) > 0)
|
| 925 |
{
|
| 926 |
-
|
| 927 |
ob_start();
|
|
|
|
| 928 |
foreach($listArr as $list)
|
| 929 |
{
|
|
|
|
|
|
|
| 930 |
?>
|
| 931 |
<div class="yks-list-container" id="yks-list-container_<?php echo $list['id']; ?>">
|
| 932 |
<div class="yks-status" id="yks-status" style="display: none;">
|
| 933 |
-
<div class="yks-success" style="padding:.25em;"
|
| 934 |
</div>
|
| 935 |
-
<
|
|
|
|
|
|
|
|
|
|
| 936 |
<form method="post" name="yks-mailchimp-form" id="yks-mailchimp-form_<?php echo $list['id']; ?>" rel="<?php echo $list['id']; ?>">
|
| 937 |
<input type="hidden" name="yks-mailchimp-unique-id" id="yks-mailchimp-unique-id_<?php echo $list['id']; ?>" value="<?php echo $list['id']; ?>" />
|
| 938 |
<table class="form-table yks-admin-form">
|
| 939 |
<tbody>
|
| 940 |
<tr valign="top">
|
| 941 |
-
<th scope="row"><label for="yks-mailchimp-api-key"
|
| 942 |
<td class="yks-mailchimp-listname"><?php
|
| 943 |
if ($list['name'])
|
| 944 |
{
|
| 945 |
$thename = $list['name'];
|
| 946 |
-
echo $thename;
|
|
|
|
| 947 |
}
|
| 948 |
else
|
| 949 |
{
|
|
@@ -952,77 +1540,163 @@ public function generateListContainers($listArr=false)
|
|
| 952 |
if ($lkey == $list['id'])
|
| 953 |
{
|
| 954 |
$thename = $lval;
|
| 955 |
-
echo $thename;
|
|
|
|
| 956 |
}
|
| 957 |
}
|
| 958 |
}
|
| 959 |
?></td>
|
| 960 |
-
</tr>
|
|
|
|
| 961 |
<tr valign="top">
|
| 962 |
-
<th scope="row"><label for="yks-mailchimp-api-key"
|
| 963 |
<td><?php echo $list['list-id']; ?>
|
| 964 |
</td>
|
| 965 |
</tr>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 966 |
<tr valign="top">
|
| 967 |
-
<th scope="row"><label for="yks-mailchimp-api-key"
|
| 968 |
<td>
|
| 969 |
-
|
| 970 |
-
<span class="description yks-margin-left"
|
| 971 |
</td>
|
| 972 |
</tr>
|
|
|
|
| 973 |
<tr valign="top">
|
| 974 |
-
<th scope="row"><label for="yks-mailchimp-api-key"
|
| 975 |
<td>
|
| 976 |
-
|
| 977 |
-
<span class="
|
| 978 |
</td>
|
| 979 |
</tr>
|
|
|
|
| 980 |
<tr valign="top">
|
| 981 |
<td scope="row">
|
| 982 |
-
<label for="api-key"><strong
|
| 983 |
<p class="description">
|
| 984 |
-
Check the fields you want included in your form (Email Address is required).
|
| 985 |
</p>
|
| 986 |
<p class="description">
|
| 987 |
-
Use the green arrows to drag-and-drop the fields and rearrange their order.
|
| 988 |
<span class="yks-mailchimp-sorthandle-img"></span>
|
| 989 |
</p>
|
| 990 |
</th>
|
| 991 |
<td class="yks-mailchimp-fields-td" id="yks-mailchimp-fields-td_<?php echo $list['id']; ?>">
|
| 992 |
<fieldset class="yks-mailchimp-fields-container" id="yks-mailchimp-fields-container_<?php echo $list['id']; ?>">
|
| 993 |
-
<legend class="screen-reader-text"><span
|
| 994 |
<div class="yks-mailchimp-fields-list" id="yks-mailchimp-fields-list_<?php echo $list['id']; ?>" rel="<?php echo $list['id']; ?>">
|
| 995 |
|
| 996 |
<!-- create sortable rows populated with mailchimp data -->
|
| 997 |
-
<?php
|
| 998 |
-
|
|
|
|
| 999 |
<div class="yks-mailchimp-fields-list-row">
|
| 1000 |
<label title="<?php echo $field['name']; ?>" rel="<?php echo $field['id']; ?>">
|
| 1001 |
-
<span class="yks-mailchimp-sorthandle"
|
| 1002 |
<input type="checkbox" name="<?php echo $field['name']; ?>" id="<?php echo $field['id']; ?>" value="1" <?php echo ($field['active'] == 1 ? 'checked="checked"' : ''); ?><?php echo ($field['require'] == 1 ? 'disabled="disabled"' : ''); ?> />
|
| 1003 |
|
| 1004 |
<div class="yks-mailchimp-field-name"><?php echo $field['label']; ?></div>
|
| 1005 |
</label>
|
| 1006 |
-
<span class="yks-mailchimp-field-merge"><span class="description"
|
|
|
|
| 1007 |
</div>
|
| 1008 |
-
<?php
|
|
|
|
|
|
|
| 1009 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1010 |
</fieldset>
|
| 1011 |
</td>
|
| 1012 |
</tr>
|
| 1013 |
<tr>
|
| 1014 |
<td></td>
|
| 1015 |
<td>
|
| 1016 |
-
<input type="submit" name="submit" class="yks-mailchimp-list-update button-primary" value="Save Form Settings" rel="<?php echo $list['id']; ?>" />
|
| 1017 |
-
<input type="button" name="delete" class="yks-mailchimp-delete button-primary" value="Delete Form" rel="<?php echo $list['id']; ?>" data-title="<?php echo $thename; ?>" />
|
| 1018 |
-
<input type="button" name="import" class="yks-mailchimp-import button-primary" value="Re-Import Form Fields from MailChimp" rel="<?php echo $list['id']; ?>" />
|
| 1019 |
</td>
|
| 1020 |
</tr>
|
| 1021 |
</tbody>
|
| 1022 |
</table>
|
| 1023 |
-
|
| 1024 |
-
|
| 1025 |
</form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1026 |
</div>
|
| 1027 |
<?php
|
| 1028 |
}
|
|
@@ -1031,62 +1705,87 @@ public function generateListContainers($listArr=false)
|
|
| 1031 |
ob_end_clean();
|
| 1032 |
return $output;
|
| 1033 |
}
|
| 1034 |
-
|
| 1035 |
public function getFrontendFormJavascript($list='')
|
| 1036 |
{
|
| 1037 |
if($list === '') return false;
|
| 1038 |
-
|
| 1039 |
$js = false;
|
| 1040 |
foreach($list['fields'] as $field) : if($field['active'] == 1) :
|
| 1041 |
-
// Setup
|
| 1042 |
if($field['require'] == '1') :
|
| 1043 |
-
$prefix = "
|
| 1044 |
$js .= "\n";
|
| 1045 |
switch($field['type'])
|
| 1046 |
{
|
|
|
|
| 1047 |
default:
|
| 1048 |
$prefixa = "ymce";
|
| 1049 |
-
$js .= "if ($".$prefixa."('#
|
| 1050 |
-
$js .=
|
| 1051 |
-
|
| 1052 |
-
|
| 1053 |
-
|
| 1054 |
-
|
| 1055 |
-
|
| 1056 |
-
|
|
|
|
|
|
|
|
|
|
| 1057 |
break;
|
| 1058 |
-
|
| 1059 |
-
|
| 1060 |
-
if($prefix('#
|
| 1061 |
-
|
| 1062 |
-
|
| 1063 |
-
|
| 1064 |
-
|
| 1065 |
-
|
| 1066 |
-
|
| 1067 |
-
|
| 1068 |
-
|
| 1069 |
-
|
| 1070 |
-
|
| 1071 |
-
|
| 1072 |
-
|
| 1073 |
-
|
| 1074 |
-
|
| 1075 |
-
|
| 1076 |
-
|
| 1077 |
-
|
| 1078 |
-
|
| 1079 |
-
|
| 1080 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1081 |
break;
|
|
|
|
| 1082 |
case 'radio':
|
| 1083 |
-
$js .=
|
| 1084 |
-
|
| 1085 |
-
|
| 1086 |
-
|
| 1087 |
-
|
| 1088 |
-
}
|
| 1089 |
-
JSC;
|
| 1090 |
break;
|
| 1091 |
}
|
| 1092 |
$js .= "\n";
|
|
@@ -1094,61 +1793,132 @@ JSC;
|
|
| 1094 |
endif; endforeach;
|
| 1095 |
return $js;
|
| 1096 |
}
|
| 1097 |
-
|
| 1098 |
-
|
|
|
|
| 1099 |
{
|
| 1100 |
if($list === '') return false;
|
| 1101 |
ob_start();
|
| 1102 |
switch($this->optionVal['flavor'])
|
| 1103 |
{
|
| 1104 |
default:
|
|
|
|
|
|
|
|
|
|
| 1105 |
case '0':
|
| 1106 |
?>
|
| 1107 |
-
|
| 1108 |
-
<
|
| 1109 |
-
<?php foreach($list['fields'] as $field) : if($field['active'] == 1) : ?>
|
| 1110 |
<?php
|
| 1111 |
-
|
| 1112 |
-
|
| 1113 |
-
|
| 1114 |
-
|
| 1115 |
-
|
| 1116 |
-
|
| 1117 |
-
|
| 1118 |
-
|
| 1119 |
-
|
| 1120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1121 |
?>
|
| 1122 |
<tr class="yks-mailchimpFormTableRow">
|
| 1123 |
-
|
| 1124 |
-
|
| 1125 |
-
|
| 1126 |
-
|
| 1127 |
-
</tr>
|
| 1128 |
-
<?php endif; endforeach; ?>
|
| 1129 |
-
<tr>
|
| 1130 |
-
<td colspan="2" class="yks-mailchimpFormTableSubmit">
|
| 1131 |
-
<p>
|
| 1132 |
-
<input type="submit" class="ykfmc-submit" id="ykfmc-submit_<?php echo $list['id']; ?>" value="Submit" />
|
| 1133 |
-
</p>
|
| 1134 |
</td>
|
| 1135 |
</tr>
|
| 1136 |
-
</
|
| 1137 |
-
|
| 1138 |
-
|
| 1139 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1141 |
case '1':
|
| 1142 |
?>
|
| 1143 |
<div class="yks-mailchimpFormDiv">
|
| 1144 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1145 |
<?php
|
| 1146 |
-
if ($field['require'] == 1)
|
| 1147 |
{
|
| 1148 |
$reqindicator = " <span class='yks-required-label'>*</span>";
|
| 1149 |
$reqlabel = " yks-mailchimpFormDivRowLabel-required";
|
| 1150 |
}
|
| 1151 |
-
else
|
| 1152 |
{
|
| 1153 |
$reqindicator = "";
|
| 1154 |
$reqlabel = "";
|
|
@@ -1157,17 +1927,52 @@ public function getFrontendFormDisplay($list='')
|
|
| 1157 |
<div class="yks-mailchimpFormDivRow">
|
| 1158 |
<label class="prompt yks-mailchimpFormDivRowLabel<?php echo $reqlabel; ?>" for="<?php echo $field['id']; ?>"><?php echo $field['label']; ?><?php echo $reqindicator; ?></label>
|
| 1159 |
<div class="yks-mailchimpFormDivRowField">
|
|
|
|
| 1160 |
<?php echo $this->getFrontendFormDisplay_field($field); ?>
|
| 1161 |
</div>
|
| 1162 |
-
</div>
|
| 1163 |
-
|
|
|
|
|
|
|
|
|
|
| 1164 |
<div class="yks-mailchimpFormDivRow">
|
|
|
|
|
|
|
| 1165 |
<div class="yks-mailchimpFormDivSubmit">
|
| 1166 |
-
<p><input type="submit" class="ykfmc-submit" id="ykfmc-submit_<?php echo $list['id']; ?>" value="
|
| 1167 |
</div>
|
| 1168 |
</div>
|
| 1169 |
</div>
|
| 1170 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1171 |
break;
|
| 1172 |
}
|
| 1173 |
$output = ob_get_contents();
|
|
@@ -1175,10 +1980,15 @@ public function getFrontendFormDisplay($list='')
|
|
| 1175 |
return $output;
|
| 1176 |
}
|
| 1177 |
|
|
|
|
|
|
|
| 1178 |
private function getFrontendFormDisplay_field($field=false)
|
| 1179 |
{
|
| 1180 |
if($field === false) return false;
|
| 1181 |
$o = '';
|
|
|
|
|
|
|
|
|
|
| 1182 |
switch($field['type'])
|
| 1183 |
{
|
| 1184 |
default:
|
|
@@ -1189,7 +1999,9 @@ private function getFrontendFormDisplay_field($field=false)
|
|
| 1189 |
case 'phone':
|
| 1190 |
case 'website':
|
| 1191 |
case 'imageurl':
|
|
|
|
| 1192 |
$o .= '<input type="text" name="'.$field['name'].'" class="'.$field['name'].($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'" value="" />';
|
|
|
|
| 1193 |
break;
|
| 1194 |
case 'dropdown':
|
| 1195 |
$o .= '<select name="'.$field['name'].'" class="'.$field['name'].($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'">';
|
|
@@ -1200,10 +2012,10 @@ private function getFrontendFormDisplay_field($field=false)
|
|
| 1200 |
break;
|
| 1201 |
case 'address':
|
| 1202 |
|
| 1203 |
-
$o .= '<input type="text" name="'.$field['name'].'" class="'.$field['name'].($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'" value="" /><span class="yks-mailchimp-form-tooltip">Street Address</span
|
| 1204 |
-
$o .= '<input type="text" name="'.$field['name'].'-add2" class="'.$field['name'].'-add2'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-add2" value="" /><span class="yks-mailchimp-form-tooltip">Apt/Suite</span
|
| 1205 |
-
$o .= '<input type="text" name="'.$field['name'].'-city" class="'.$field['name'].'-city'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-city" value="" /><span class="yks-mailchimp-form-tooltip">City</span
|
| 1206 |
-
$o .= '<input type="text" name="'.$field['name'].'-state" class="'.$field['name'].'-state'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-state" value="" /><span class="yks-mailchimp-form-tooltip">State</span
|
| 1207 |
$o .= '<input type="text" name="'.$field['name'].'-zip" class="'.$field['name'].'-zip'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-zip" value="" /><span class="yks-mailchimp-form-tooltip">Zip</span>';
|
| 1208 |
break;
|
| 1209 |
case 'radio':
|
|
@@ -1223,11 +2035,10 @@ private function getFrontendFormDisplay_field($field=false)
|
|
| 1223 |
}
|
| 1224 |
|
| 1225 |
|
| 1226 |
-
|
| 1227 |
-
|
| 1228 |
-
|
| 1229 |
/***** DROPDOWNS
|
| 1230 |
****************************************************************************************************/
|
|
|
|
|
|
|
| 1231 |
public function generateDropdown($name, $html='', $sel='', $type=false, $zopt=false)
|
| 1232 |
{
|
| 1233 |
switch($type)
|
|
@@ -1266,9 +2077,6 @@ private function andOrDropdown($name, $html, $sel)
|
|
| 1266 |
}
|
| 1267 |
|
| 1268 |
|
| 1269 |
-
|
| 1270 |
-
|
| 1271 |
-
|
| 1272 |
/***** UPDATES
|
| 1273 |
****************************************************************************************************/
|
| 1274 |
public function runUpdateTasks()
|
|
@@ -1385,11 +2193,338 @@ private function runUpdateTasks_1_3_0()
|
|
| 1385 |
$this->optionVal['version'] = '2.2.1';
|
| 1386 |
return true;
|
| 1387 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1388 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1389 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1390 |
|
| 1391 |
|
|
|
|
| 1392 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1393 |
}
|
| 1394 |
}
|
| 1395 |
?>
|
| 3 |
{
|
| 4 |
class yksemeBase
|
| 5 |
{
|
|
|
|
|
|
|
| 6 |
|
| 7 |
/**
|
| 8 |
* Variables
|
| 20 |
public function __construct()
|
| 21 |
{
|
| 22 |
yksemeBase::initialize();
|
| 23 |
+
add_action('init', array(&$this, 'ykes_mc_apply_filters'));
|
| 24 |
}
|
| 25 |
|
| 26 |
/**
|
| 37 |
*/
|
| 38 |
public function activate()
|
| 39 |
{
|
| 40 |
+
// redirect the user on plugin activation
|
| 41 |
+
// to our MailChimp settings page
|
| 42 |
+
add_option('yks_easy_mc_plugin_do_activation_redirect', true);
|
| 43 |
+
|
| 44 |
// check if our option is already set
|
| 45 |
+
// if it exists, return
|
| 46 |
if( get_option( 'api_validation' ) ) {
|
| 47 |
return;
|
| 48 |
+
} else { // else create it
|
| 49 |
add_option('api_validation' , 'invalid_api_key');
|
| 50 |
}
|
|
|
|
| 51 |
}
|
| 52 |
public function deactivate()
|
| 53 |
{
|
| 54 |
+
|
| 55 |
}
|
| 56 |
public function uninstall()
|
| 57 |
+
{ // delete options on plugin uninstall
|
| 58 |
delete_option(YKSEME_OPTION);
|
| 59 |
delete_option('api_validation');
|
| 60 |
+
delete_option('imported_lists');
|
| 61 |
}
|
| 62 |
|
| 63 |
/***** INITIAL SETUP
|
| 65 |
public function initialize()
|
| 66 |
{
|
| 67 |
// If it's not already set up, initialize our plugin session
|
| 68 |
+
if(session_id() == '') @session_start();
|
| 69 |
+
if(!is_array(@$_SESSION[$this->sessName]))
|
| 70 |
{
|
| 71 |
$_SESSION[$this->sessName] = array();
|
| 72 |
}
|
| 73 |
// Add the CSS/JS files
|
| 74 |
add_action('admin_print_styles', array(&$this, 'addStyles'));
|
| 75 |
add_action('admin_print_scripts', array(&$this, 'addScripts'));
|
| 76 |
+
add_action('admin_init', array( &$this, 'yks_easy_mc_plugin_activation_redirect' ) );
|
| 77 |
+
// tinymce buttons
|
| 78 |
+
// only add filters and actions on wp 3.9 and above
|
| 79 |
+
if ( get_bloginfo( 'version' ) >= '3.9' ) {
|
| 80 |
+
add_action( 'admin_head', array(&$this, 'yks_mc_add_tinyMCE') );
|
| 81 |
+
add_filter( 'mce_external_plugins', array(&$this, 'yks_mc_add_tinymce_plugin') );
|
| 82 |
+
add_filter( 'mce_buttons', array(&$this, 'yks_mc_add_tinymce_button') );
|
| 83 |
+
// pass our lists data to tinyMCE button for use
|
| 84 |
+
foreach( array('post.php','post-new.php') as $hook )
|
| 85 |
+
add_action( "admin_head-$hook", array(&$this, 'yks_mc_js_admin_head') );
|
| 86 |
+
} else {
|
| 87 |
+
// if the WordPress is older than 3.9
|
| 88 |
+
// load jQuery UI 1.10 CSS for dialogs
|
| 89 |
+
wp_enqueue_style('yks_easy_mc_extender-admin-ui-css',
|
| 90 |
+
'//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css'
|
| 91 |
+
);
|
| 92 |
+
wp_enqueue_style('yks_easy_mc_wp_3.8', plugin_dir_url(__FILE__).'../css/yks_easy_mc_wp_3point8.css');
|
| 93 |
+
}
|
| 94 |
if(!is_admin())
|
| 95 |
{
|
| 96 |
add_action('wp_print_styles', array(&$this, 'addStyles_frontend'));
|
| 107 |
$this->currentListsCt = array();
|
| 108 |
// Do any update tasks if needed
|
| 109 |
$this->runUpdateCheck();
|
| 110 |
+
// Register Our Widget
|
| 111 |
+
$this->registerMailChimpWidget($this->optionVal['lists']);
|
| 112 |
}
|
| 113 |
public function createShortcodes()
|
| 114 |
{
|
| 115 |
add_shortcode('yks-mailchimp-list', array(&$this, 'processShortcode'));
|
| 116 |
}
|
| 117 |
+
// Create and store our initial plugin options
|
| 118 |
public function getOptionValue()
|
| 119 |
{
|
| 120 |
$defaultVals = array(
|
| 121 |
'version' => YKSEME_VERSION_CURRENT,
|
| 122 |
'api-key' => '',
|
| 123 |
+
'flavor' => '1',
|
| 124 |
'debug' => '0',
|
| 125 |
+
'optin' => 'true',
|
| 126 |
+
'single-optin-message' => __('Thank You for subscribing!', 'yikes-inc-easy-mailchimp-extender'),
|
| 127 |
+
'double-optin-message' => __('Thank You for subscribing! Check your email for the confirmation message.', 'yikes-inc-easy-mailchimp-extender'),
|
| 128 |
+
'interest-group-label' => __('Select Your Area of Interest', 'yikes-inc-easy-mailchimp-extender'),
|
| 129 |
+
'yks-mailchimp-optIn-checkbox' => 'hide',
|
| 130 |
+
'yks-mailchimp-optIn-default-list' => array(),
|
| 131 |
+
'yks-mailchimp-optin-checkbox-text' => 'SIGN ME UP!',
|
| 132 |
'lists' => array()
|
| 133 |
);
|
| 134 |
$ov = get_option(YKSEME_OPTION, $defaultVals);
|
| 135 |
$this->optionVal = $ov;
|
| 136 |
return $ov;
|
| 137 |
}
|
| 138 |
+
|
| 139 |
private function runUpdateCheck()
|
| 140 |
{
|
| 141 |
if(!isset($this->optionVal['version'])
|
| 146 |
}
|
| 147 |
|
| 148 |
|
|
|
|
|
|
|
|
|
|
| 149 |
/***** FUNCTIONS
|
| 150 |
****************************************************************************************************/
|
| 151 |
+
// check if were on the login page
|
| 152 |
+
function is_login_page() {
|
| 153 |
+
return in_array($GLOBALS['pagenow'], array('wp-login.php', 'wp-register.php'));
|
| 154 |
+
}
|
| 155 |
+
// create a slug like string, given some text (ie: this-is-the-name)
|
| 156 |
public function slugify($text)
|
| 157 |
{
|
| 158 |
// replace non letter or digits by -
|
| 171 |
}
|
| 172 |
return $text;
|
| 173 |
}
|
| 174 |
+
// create an array for any fields left blank
|
| 175 |
+
// not sure if still needed
|
| 176 |
public function getBlankFieldsArray($lid='')
|
| 177 |
{
|
| 178 |
$fields = array();
|
|
|
|
| 179 |
// Add Field
|
| 180 |
$name = $this->slugify('Email Address'.'-'.'EMAIL');
|
| 181 |
$addField = array(
|
| 193 |
'choices' => ''
|
| 194 |
);
|
| 195 |
$fields[$addField['id']] = $addField;
|
| 196 |
+
// return our fields
|
| 197 |
return $fields;
|
| 198 |
}
|
| 199 |
+
|
| 200 |
+
// Create an array of data for imported fields based on the Merge Varaibles passed back from MailChimp
|
| 201 |
public function getImportedFieldsArray($lid, $mv)
|
| 202 |
{
|
| 203 |
if(empty($mv)) {
|
| 205 |
} else {
|
| 206 |
$fields = array();
|
| 207 |
|
| 208 |
+
$num = 1;
|
|
|
|
| 209 |
foreach($mv['data'][0]['merge_vars'] as $field)
|
| 210 |
{
|
| 211 |
// Add Field
|
| 212 |
+
$name = $this->slugify(isset($field['label']).'-'.$field['tag']);
|
| 213 |
$addField = array(
|
| 214 |
'id' => $lid.'-'.$name,
|
| 215 |
'name' => $lid.$field['tag'],
|
| 221 |
'sort' => $field['order'],
|
| 222 |
'type' => $field['field_type'],
|
| 223 |
'help' => $field['helptext'],
|
| 224 |
+
'default' => $field['default'],
|
| 225 |
+
'placeholder' => (isset($field['placeholder-'.$lid.'-'.$num]) ? $field['placeholder-'.$lid.'-'.$num] : ''),
|
| 226 |
+
'redirect_checkbox' => (isset($field['yks_mailchimp_redirect_'.$lid]) ? $field['yks_mailchimp_redirect_'.$lid] : ''),
|
| 227 |
+
'selected_page' => (isset($field['page_id_'.$lid]) ? $field['page_id_'.$lid] : ''),
|
| 228 |
'choices' => (isset($field['choices']) ? $field['choices'] : '')
|
| 229 |
);
|
| 230 |
$fields[$addField['id']] = $addField;
|
| 231 |
+
$num++;
|
| 232 |
}
|
| 233 |
return $fields;
|
| 234 |
}
|
| 235 |
}
|
| 236 |
+
// Get the current users browser information
|
| 237 |
+
// Used specifically on the lists page
|
| 238 |
public function getBrowser()
|
| 239 |
{
|
| 240 |
$u_agent = $_SERVER['HTTP_USER_AGENT'];
|
| 327 |
'pattern' => $pattern
|
| 328 |
);
|
| 329 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 330 |
|
| 331 |
|
| 332 |
/***** CONFIGURATION
|
| 333 |
****************************************************************************************************/
|
| 334 |
+
// Update our plugin options
|
| 335 |
+
// Runs when the user updates the settings page with new values
|
| 336 |
public function updateOptions($p)
|
| 337 |
{
|
| 338 |
if(!empty($p['form_data']))
|
| 341 |
$this->optionVal['api-key'] = $fd['yks-mailchimp-api-key'];
|
| 342 |
$this->optionVal['flavor'] = $fd['yks-mailchimp-flavor'];
|
| 343 |
$this->optionVal['debug'] = $fd['yks-mailchimp-debug'];
|
| 344 |
+
$this->optionVal['optin'] = $fd['yks-mailchimp-optin'];
|
| 345 |
+
$this->optionVal['single-optin-message'] = $fd['single-optin-message'];
|
| 346 |
+
$this->optionVal['double-optin-message'] = $fd['double-optin-message'];
|
| 347 |
+
$this->optionVal['interest-group-label'] = $fd['interest-group-label'];
|
| 348 |
+
$this->optionVal['yks-mailchimp-optIn-checkbox'] = $fd['yks-mailchimp-optIn-checkbox'];
|
| 349 |
+
$this->optionVal['yks-mailchimp-optIn-default-list'] = isset($fd['yks-mailchimp-optIn-default-list']) ? $fd['yks-mailchimp-optIn-default-list'] : null; // if its set, else set to null <- fixes save form settings bug
|
| 350 |
+
$this->optionVal['yks-mailchimp-optin-checkbox-text'] = $fd['yks-mailchimp-optin-checkbox-text'];
|
| 351 |
+
update_option('api_validation', 'valid_api_key');
|
| 352 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 353 |
}
|
| 354 |
return false;
|
| 355 |
}
|
| 356 |
+
// Update the API Key
|
| 357 |
public function updateApiKey($k)
|
| 358 |
{
|
| 359 |
$this->optionVal['api-key'] = $k;
|
| 360 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 361 |
}
|
| 362 |
+
// Update the version number
|
| 363 |
public function updateVersion($k)
|
| 364 |
{
|
| 365 |
$this->optionVal['version'] = $k;
|
| 369 |
|
| 370 |
/********Mailchimp Error Codes
|
| 371 |
*****************************************************************************************************/
|
| 372 |
+
// not sure these are used any more
|
| 373 |
+
// maybe remove
|
| 374 |
public function YksMCErrorCodes ($error)
|
| 375 |
{
|
| 376 |
//Server Errors
|
| 495 |
$errormessage[9] = "Sorry, that URL is invalid. Please try again.";
|
| 496 |
|
| 497 |
// Get error message
|
|
|
|
| 498 |
foreach ($errorcode as $eid => $value )
|
| 499 |
{
|
| 500 |
if ($eid == $error)
|
| 515 |
}
|
| 516 |
|
| 517 |
|
|
|
|
| 518 |
/***** LIST ACTIONS
|
| 519 |
****************************************************************************************************/
|
| 520 |
+
// Import a list from MailChimp and add it to the lists page
|
| 521 |
+
// Runs when user add's a list from the drop down on the list page
|
| 522 |
+
// Sending a call to MailChimp api to retrieve list data
|
| 523 |
+
public function addList($lid='' , $name='')
|
| 524 |
{
|
| 525 |
+
if($lid == '' || isset($this->optionVal['lists'][$lid])) return false;
|
| 526 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 527 |
|
|
|
|
|
|
|
|
|
|
| 528 |
$mv = $api->call('lists/merge-vars', array(
|
| 529 |
'id' => array($lid)
|
| 530 |
)
|
| 538 |
'name' => $name,
|
| 539 |
'fields' => $this->getImportedFieldsArray($lid, $mv)
|
| 540 |
);
|
| 541 |
+
|
| 542 |
$this->optionVal['lists'][$list['id']] = $list;
|
| 543 |
+
|
| 544 |
+
// store newly retreived list array in imported_list global option
|
| 545 |
+
update_option('imported_lists', $this->optionVal['lists']);
|
| 546 |
+
|
| 547 |
if(update_option(YKSEME_OPTION, $this->optionVal))
|
| 548 |
{
|
| 549 |
return $this->generateListContainers(array($list));
|
| 550 |
}
|
| 551 |
}
|
| 552 |
return false;
|
|
|
|
| 553 |
}
|
| 554 |
|
| 555 |
+
///////////////////////////////////////////////////
|
| 556 |
+
/* Get Interest Groups */
|
| 557 |
+
///////////////////////////////////////////////////
|
| 558 |
+
// Send request to MailChimp API to retreive interest groups associated to a sepcific list
|
| 559 |
+
public function getInterestGroups($list_id)
|
| 560 |
+
{
|
| 561 |
+
// store our API key
|
| 562 |
+
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 563 |
+
|
| 564 |
+
// setup switch for div/table
|
| 565 |
+
$yikes_mc_flavor = $this->optionVal['flavor'];
|
| 566 |
+
|
| 567 |
+
// try the request, and catch any errors
|
| 568 |
+
try {
|
| 569 |
+
$interest_groups = $api->call('lists/interest-groupings', array( 'id' => $list_id ));
|
| 570 |
+
// if the list has an interest group
|
| 571 |
+
if ($interest_groups) {
|
| 572 |
+
// json_encode the data, and store it in optionVal['interest-groups']
|
| 573 |
+
$this->optionVal['interest-groups'] = json_encode($interest_groups);
|
| 574 |
+
|
| 575 |
+
$num = 0;
|
| 576 |
+
|
| 577 |
+
switch($yikes_mc_flavor)
|
| 578 |
+
{
|
| 579 |
+
// table flavor
|
| 580 |
+
case '0':
|
| 581 |
+
// loop over each interest group returned
|
| 582 |
+
foreach($interest_groups as $interest_group) {
|
| 583 |
+
// if the interest group label is set to '' on the settings page
|
| 584 |
+
if ( $this->optionVal['interest-group-label'] == '' ) {
|
| 585 |
+
$user_set_interest_group_label = '<label class="prompt yks_table_label yks-mailchimpFormTableRowLabel yks-mailchimpFormTableRowLabel-required font-secondary label-text">'.$interest_group['name'].'</label>'; // display the interest group name from MailChimp
|
| 586 |
+
} else {
|
| 587 |
+
$user_set_interest_group_label = '<label class="prompt yks_table_label yks-mailchimpFormTableRowLabel yks-mailchimpFormTableRowLabel-required font-secondary label-text">'.$this->optionVal['interest-group-label'].'</label>'; // else display the custom name set in the settings page
|
| 588 |
+
}
|
| 589 |
+
?>
|
| 590 |
+
<!-- pass interest group data in a hidden form field , required to pass the data back to the correct interest-group -->
|
| 591 |
+
<input type='hidden' name='interest-group-data' value='<?php echo $this->optionVal["interest-groups"]; ?>' />
|
| 592 |
+
<?php
|
| 593 |
+
// get form type
|
| 594 |
+
$list_form_type = $interest_group['form_field'];
|
| 595 |
+
$interestGroupID = $interest_group['id'];
|
| 596 |
+
|
| 597 |
+
switch($list_form_type)
|
| 598 |
+
{
|
| 599 |
+
|
| 600 |
+
// checkbox interest groups
|
| 601 |
+
case 'checkboxes':
|
| 602 |
+
echo '<tr class="yks_mc_table_interest_group_holder yks_mc_table_checkbox_holder">';
|
| 603 |
+
echo '<td class="yks_mc_table_td">';
|
| 604 |
+
// display the label
|
| 605 |
+
echo $user_set_interest_group_label;
|
| 606 |
+
foreach ($interest_group['groups'] as $singleGrouping) {
|
| 607 |
+
$checkboxValue = $interest_group['name'];
|
| 608 |
+
echo '<label class="yks_mc_interest_group_label" for="'.$singleGrouping['name'].'"><input type="checkbox" id="'.$singleGrouping['name'].'" class="yikes_mc_interest_group_checkbox" name="'.$interest_group['form_field'].'-'.$interest_group['id'].'[]" value="'.$singleGrouping['name'].'">'.$singleGrouping['name'].'</label>';
|
| 609 |
+
}
|
| 610 |
+
echo '</td>';
|
| 611 |
+
echo '</tr>';
|
| 612 |
+
break;
|
| 613 |
+
|
| 614 |
+
// radiobuttons interest groups
|
| 615 |
+
case 'radio':
|
| 616 |
+
echo '<tr class="yks_mc_table_interest_group_holder yks_mc_table_radio_holder">';
|
| 617 |
+
echo '<td class="yks_mc_interest_radio_button_holder yks_mc_table_td">';
|
| 618 |
+
// display the label
|
| 619 |
+
echo $user_set_interest_group_label;
|
| 620 |
+
foreach ($interest_group['groups'] as $singleGrouping) {
|
| 621 |
+
$radioValue = $interest_group['name'];
|
| 622 |
+
echo '<label class="yks_mc_interest_group_label" for="'.$singleGrouping['name'].'"><input type="radio" id="'.$singleGrouping['name'].'" class="yikes_mc_interest_group_radio" name="'.$interest_group['form_field'].'-'.$interest_group['id'].'" value="'.$singleGrouping['name'].'">'.$singleGrouping['name'].'</label>';
|
| 623 |
+
}
|
| 624 |
+
echo '</td>';
|
| 625 |
+
echo '</tr>';
|
| 626 |
+
break;
|
| 627 |
+
|
| 628 |
+
// drop down interest groups
|
| 629 |
+
case 'dropdown':
|
| 630 |
+
echo '<tr class="yks_mc_table_interest_group_holder yks_mc_table_dropdown_holder">';
|
| 631 |
+
echo '<td class="yks_mc_table_dropdown_interest_group_holder yks_mc_table_td">';
|
| 632 |
+
// display the label
|
| 633 |
+
echo $user_set_interest_group_label;
|
| 634 |
+
echo '<select id="yks_mc_interest_dropdown" name="'.$interest_group['form_field'].'-'.$interest_group['id'].'" class="yks_mc_interest_group_select">';
|
| 635 |
+
foreach ($interest_group['groups'] as $singleGrouping) {
|
| 636 |
+
$dropDownValue = $interest_group['name'];
|
| 637 |
+
echo '<option value="'.$singleGrouping['name'].'" name="'.$dropDownValue.'">'.$singleGrouping['name'].'</option>';
|
| 638 |
+
}
|
| 639 |
+
echo '</select>';
|
| 640 |
+
echo '</td>';
|
| 641 |
+
echo '</tr>';
|
| 642 |
+
break;
|
| 643 |
+
}
|
| 644 |
+
$num++;
|
| 645 |
+
}
|
| 646 |
+
|
| 647 |
+
break;
|
| 648 |
+
|
| 649 |
+
// div flavor
|
| 650 |
+
case '1':
|
| 651 |
+
// loop over each interest group returned
|
| 652 |
+
foreach($interest_groups as $interest_group) {
|
| 653 |
+
// if the interest group label is set to '' on the settings page
|
| 654 |
+
if ( $this->optionVal['interest-group-label'] == '' ) {
|
| 655 |
+
echo '<b class="yks_mc_interest_group_text">'.$interest_group['name'].'</b>'; // display the interest group name from MailChimp
|
| 656 |
+
} else {
|
| 657 |
+
echo '<b class="yks_mc_interest_group_text">'.$this->optionVal['interest-group-label'].'</b>'; // else display the custom name set in the settings page
|
| 658 |
+
}
|
| 659 |
+
?>
|
| 660 |
+
<!-- pass interest group data in a hidden form field , required to pass the data back to the correct interest-group -->
|
| 661 |
+
<input type='hidden' name='interest-group-data' value='<?php echo $this->optionVal["interest-groups"]; ?>' />
|
| 662 |
+
<?php
|
| 663 |
+
// get form type
|
| 664 |
+
$list_form_type = $interest_group['form_field'];
|
| 665 |
+
$interestGroupID = $interest_group['id'];
|
| 666 |
+
|
| 667 |
+
switch($list_form_type)
|
| 668 |
+
{
|
| 669 |
+
|
| 670 |
+
// checkbox interest groups
|
| 671 |
+
case 'checkboxes':
|
| 672 |
+
echo '<div class="yks_mc_interest_group_holder">';
|
| 673 |
+
foreach ($interest_group['groups'] as $singleGrouping) {
|
| 674 |
+
$checkboxValue = $interest_group['name'];
|
| 675 |
+
echo '<label class="yks_mc_interest_group_label" for="'.$singleGrouping['name'].'"><input type="checkbox" id="'.$singleGrouping['name'].'" class="yikes_mc_interest_group_checkbox" name="'.$interest_group['form_field'].'-'.$interest_group['id'].'[]" value="'.$singleGrouping['name'].'">'.$singleGrouping['name'].'</label>';
|
| 676 |
+
}
|
| 677 |
+
echo '</div>';
|
| 678 |
+
break;
|
| 679 |
+
|
| 680 |
+
// radiobuttons interest groups
|
| 681 |
+
case 'radio':
|
| 682 |
+
echo '<div class="yks_mc_interest_group_holder">';
|
| 683 |
+
echo '<div class="yks_mc_interest_radio_button_holder">';
|
| 684 |
+
foreach ($interest_group['groups'] as $singleGrouping) {
|
| 685 |
+
$radioValue = $interest_group['name'];
|
| 686 |
+
echo '<label class="yks_mc_interest_group_label" for="'.$singleGrouping['name'].'"><input type="radio" id="'.$singleGrouping['name'].'" class="yikes_mc_interest_group_radio" name="'.$interest_group['form_field'].'-'.$interest_group['id'].'" value="'.$singleGrouping['name'].'">'.$singleGrouping['name'].'</label>';
|
| 687 |
+
}
|
| 688 |
+
echo '</div>';
|
| 689 |
+
echo '</div>';
|
| 690 |
+
break;
|
| 691 |
+
|
| 692 |
+
// drop down interest groups
|
| 693 |
+
case 'dropdown':
|
| 694 |
+
echo '<div class="yks_mc_interest_group_holder">';
|
| 695 |
+
echo '<select id="yks_mc_interest_dropdown" name="'.$interest_group['form_field'].'-'.$interest_group['id'].'" class="yks_mc_interest_group_select">';
|
| 696 |
+
foreach ($interest_group['groups'] as $singleGrouping) {
|
| 697 |
+
$dropDownValue = $interest_group['name'];
|
| 698 |
+
echo '<option value="'.$singleGrouping['name'].'" name="'.$dropDownValue.'">'.$singleGrouping['name'].'</option>';
|
| 699 |
+
}
|
| 700 |
+
echo '</select>';
|
| 701 |
+
echo '</div>';
|
| 702 |
+
break;
|
| 703 |
+
}
|
| 704 |
+
$num++;
|
| 705 |
+
}
|
| 706 |
+
break;
|
| 707 |
+
|
| 708 |
+
}
|
| 709 |
+
}
|
| 710 |
+
} catch( Exception $e ) {
|
| 711 |
+
return;
|
| 712 |
+
}
|
| 713 |
+
return false;
|
| 714 |
+
}
|
| 715 |
+
// Send a call to the MailChimp API to retreive all lists on the account
|
| 716 |
public function getLists()
|
| 717 |
{
|
| 718 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 719 |
$lists = $this->getListsData();
|
| 720 |
+
$listArr = (!isset($listArr) ? $this->optionVal['lists'] : $listArr);
|
| 721 |
$theusedlist = array();
|
| 722 |
if(count($listArr) > 0)
|
| 723 |
{
|
| 730 |
{
|
| 731 |
echo "<select id='yks-list-select' name='yks-list-select'>";
|
| 732 |
echo "<option value=''> Select List</option>";
|
| 733 |
+
|
| 734 |
foreach ($lists as $lkey => $lvalue)
|
| 735 |
{
|
| 736 |
if (!in_array($lkey, $theusedlist))
|
| 742 |
}
|
| 743 |
return false;
|
| 744 |
}
|
| 745 |
+
// Get lists for the settings page
|
| 746 |
+
// Used for default subscription list
|
| 747 |
+
public function getOptionsLists()
|
| 748 |
+
{
|
| 749 |
+
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 750 |
+
$lists = $this->getListsData();
|
| 751 |
+
$listArr = (!isset($listArr) ? $this->optionVal['lists'] : $listArr);
|
| 752 |
+
if($lists)
|
| 753 |
+
{
|
| 754 |
+
echo "<select id='yks-mailchimp-optIn-default-list' name='yks-mailchimp-optIn-default-list'>";
|
| 755 |
+
echo "<option value='select_list'> Select List</option>";
|
| 756 |
+
foreach ($lists as $lkey => $list_name)
|
| 757 |
+
{
|
| 758 |
+
echo "<option ".selected( isset($this->optionVal['yks-mailchimp-optIn-default-list']) ? $this->optionVal['yks-mailchimp-optIn-default-list'] : "select_list", $lkey )." value='".$lkey."'>".$list_name."</option>";
|
| 759 |
+
}
|
| 760 |
+
echo "</select>";
|
| 761 |
+
}
|
| 762 |
+
return false;
|
| 763 |
+
}
|
| 764 |
+
// Send a call to MailChimp API to get the data associated with a specific list (in this instance: the fields, and the subscriber count)
|
| 765 |
public function getListsData()
|
| 766 |
{
|
| 767 |
+
/*
|
| 768 |
$theListItems = get_transient('yks-mcp-listdata-retrieved');
|
| 769 |
if (!$theListItems)
|
| 770 |
{
|
| 771 |
+
*/
|
| 772 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 773 |
$lists = $api->call('lists/list', array( 'limit' => 100 ));
|
| 774 |
if($lists)
|
| 775 |
{
|
| 776 |
foreach ($lists['data'] as $list)
|
| 777 |
{
|
| 778 |
+
$theListItems[$list['id']] = $list['name'];
|
| 779 |
+
$theListItems['subscriber-count']['subscriber-count-'.$list['id']] = $list['stats']['member_count'];
|
| 780 |
}
|
| 781 |
+
|
| 782 |
}
|
| 783 |
+
/* set_transient( 'yks-mcp-listdata-retrieved', $theListItems, 60/60 ); //cache lists for 15 seconds for testing, originally 5 mins 60*5 */
|
| 784 |
+
/* } */
|
| 785 |
return $theListItems;
|
| 786 |
}
|
| 787 |
+
// Sort through the returned data
|
| 788 |
public function sortList($p)
|
| 789 |
{
|
| 790 |
if(empty($p['update_string'])
|
| 817 |
}
|
| 818 |
return ($a < $b) ? -1 : 1;
|
| 819 |
}
|
| 820 |
+
|
| 821 |
+
// Update a single list on the lists page
|
| 822 |
+
// This function fires when the user clicks 'save settings' for a specific form on the lists page
|
| 823 |
public function updateList($p)
|
| 824 |
{
|
| 825 |
if(!empty($p['form_data']))
|
| 827 |
parse_str($p['form_data'], $fd);
|
| 828 |
if(!empty($fd['yks-mailchimp-unique-id']))
|
| 829 |
{
|
| 830 |
+
$num = 1;
|
| 831 |
foreach($this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'] as $k => $v)
|
| 832 |
{
|
| 833 |
// Only proceed if the field is not locked
|
| 834 |
if($v['require'] == 0)
|
| 835 |
{
|
| 836 |
// Make sure this field was included in the update
|
| 837 |
+
$this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'][$k]['active'] = (isset($fd[$v['name']]) ? '1' : '0');
|
| 838 |
+
}
|
| 839 |
+
// $name = $this->slugify($field['label'].'-'.$field['tag']);
|
| 840 |
+
$this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'][$k]['placeholder-'.$fd['yks-mailchimp-unique-id'].'-'.$num] = $fd['placeholder-'.$fd['yks-mailchimp-unique-id'].'-'.$num];
|
| 841 |
+
|
| 842 |
+
$num++;
|
| 843 |
+
|
| 844 |
+
$this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'][$k]['yks_mailchimp_redirect_'.$fd['yks-mailchimp-unique-id']] = $fd['yks_mailchimp_redirect_'.$fd['yks-mailchimp-unique-id']];
|
| 845 |
+
|
| 846 |
+
if(isset($fd['yks_mailchimp_redirect_'.$fd['yks-mailchimp-unique-id']])) {
|
| 847 |
+
$this->optionVal['lists'][$fd['yks-mailchimp-unique-id']]['fields'][$k]['page_id_'.$fd['yks-mailchimp-unique-id']] = $fd['page_id_'.$fd['yks-mailchimp-unique-id']];
|
| 848 |
}
|
| 849 |
+
|
| 850 |
}
|
| 851 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 852 |
}
|
| 853 |
}
|
| 854 |
return false;
|
| 855 |
}
|
| 856 |
+
// Remove a list from the lists page
|
| 857 |
+
// Runs when a user clicks 'delete list' on the lists page
|
| 858 |
public function deleteList($i=false)
|
| 859 |
{
|
| 860 |
if($i == false) return false;
|
| 861 |
else
|
| 862 |
{
|
| 863 |
unset($this->optionVal['lists'][$i]);
|
| 864 |
+
update_option('imported_lists', $this->optionVal['lists']);
|
| 865 |
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 866 |
}
|
| 867 |
}
|
| 868 |
+
// Import a list to the lists page
|
| 869 |
+
// Runs when a user adds a list from the drop down on the lists page
|
| 870 |
public function importList($i=false)
|
| 871 |
{
|
| 872 |
if($i == false) return false;
|
| 873 |
else
|
| 874 |
{
|
| 875 |
+
// create our variables
|
| 876 |
$lid = $this->optionVal['lists'][$i]['list-id'];
|
| 877 |
$name = $this->optionVal['lists'][$i]['name'];
|
| 878 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 880 |
'id' => array( $lid )
|
| 881 |
)
|
| 882 |
);
|
| 883 |
+
// if merge variables are returned
|
| 884 |
if($mv)
|
| 885 |
{
|
| 886 |
$mv = $this->getImportedFieldsArray($lid, $mv);
|
| 897 |
}
|
| 898 |
return false;
|
| 899 |
}
|
| 900 |
+
// Make a call to the MailChimp API to retrieve all subscribers to a given list
|
| 901 |
+
// Runs when the user clicks 'view' next to the subscriber count on the list page
|
| 902 |
+
public function listAllSubscribers($lid, $list_name) {
|
| 903 |
+
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 904 |
+
$subscribers_list = $api->call('lists/members',
|
| 905 |
+
array(
|
| 906 |
+
'id' => $lid,
|
| 907 |
+
'opts' => array(
|
| 908 |
+
'limit' => '100',
|
| 909 |
+
'sort_field' => 'optin_time',
|
| 910 |
+
'sort_dir' => 'DESC'
|
| 911 |
+
)
|
| 912 |
+
)
|
| 913 |
+
);
|
| 914 |
+
// if the subscriber count is greater than 0
|
| 915 |
+
// display all subscribers in a table
|
| 916 |
+
if($subscribers_list['total'] > 0) {
|
| 917 |
+
?>
|
| 918 |
+
<h2><?php echo $list_name; echo ' <span class="subscriber-count" style="font-size:11px;">(<span class="number">'.$subscribers_list['total'].'</span> subscribers)</span>'; ?></h2>
|
| 919 |
+
<p><?php _e('Click on a subscriber to see further information','yikes-inc-easy-mailchimp-extender'); ?></p>
|
| 920 |
+
|
| 921 |
+
<table id="yikes-mailchimp-subscribers-table" class="yks-mailchimp-fields-list" style="width:100%;">
|
| 922 |
+
<thead class="yikes-mailchimp-subscribers-table-head">
|
| 923 |
+
<tr>
|
| 924 |
+
<th width="50%"><?php _e('E-Mail','yikes-inc-easy-mailchimp-extender'); ?></th>
|
| 925 |
+
<th width="50%"><?php _e('Date Subscribed','yikes-inc-easy-mailchimp-extender'); ?></th>
|
| 926 |
+
</tr>
|
| 927 |
+
</thead>
|
| 928 |
+
<?php
|
| 929 |
+
foreach ( $subscribers_list['data'] as $subscriber ) {
|
| 930 |
+
$timeStamp = explode(' ', $subscriber['timestamp_opt'] );
|
| 931 |
+
echo '<tr class="yks-mailchimp-subscribers-list-row" id="yks-mailchimp-subscribers-list-row">';
|
| 932 |
+
echo '<td><a class="subscriber-mail-link" rel="'.$subscriber["email"].'" class="subscriberEmailAddress">'.$subscriber['email'].'</a></td>';
|
| 933 |
+
// echo '<td>'.str_replace('-', ' ', date("M-jS-Y", strtotime($subscriber['timestamp_opt']))).'</td>';
|
| 934 |
+
echo '<td>'.str_replace('-', ' ', date("M-jS-Y", strtotime($timeStamp[0]))).'</td></tr>';
|
| 935 |
+
}
|
| 936 |
+
?>
|
| 937 |
+
</table>
|
| 938 |
|
| 939 |
+
<!-- display a single user profile in this div -->
|
| 940 |
+
<div id="individual_subscriber_information" style="display:none;"></div>
|
| 941 |
+
<?php
|
| 942 |
+
} else { // else display an error of sorts
|
| 943 |
+
?>
|
| 944 |
+
<h2><?php echo $list_name; echo ' <span class="subscriber-count" style="font-size:11px;">(<span class="number">0</span> subscribers)</span>'; ?></h2>
|
| 945 |
+
<?php
|
| 946 |
+
_e('Sorry You Don\'t Currently Have Any Subscribers In This List!','yikes-inc-easy-mailchimp-extender');
|
| 947 |
+
}
|
| 948 |
+
wp_die();
|
| 949 |
+
}
|
| 950 |
|
| 951 |
+
// Make a call to the MailChimp API to retrieve information about a specific user
|
| 952 |
+
// Runs when the user clicks a subscribers email address
|
| 953 |
+
public function getSubscriberInfo($lid, $email) {
|
| 954 |
+
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 955 |
+
$subscriber_info = $api->call('lists/member-info',
|
| 956 |
+
array(
|
| 957 |
+
'id' => $lid,
|
| 958 |
+
'emails' => array(
|
| 959 |
+
0 => array(
|
| 960 |
+
'email' => $email,
|
| 961 |
+
),
|
| 962 |
+
)
|
| 963 |
+
)
|
| 964 |
+
);
|
| 965 |
+
// if the subscriber count is greater than 0
|
| 966 |
+
// display all subscribers in a table
|
| 967 |
+
if($subscriber_info) {
|
| 968 |
+
// store user data into variables
|
| 969 |
+
$subscriber_data = $subscriber_info['data'][0];
|
| 970 |
+
$member_rating = $subscriber_data['member_rating'];
|
| 971 |
+
// firstname/lastname data inside of new array
|
| 972 |
+
$subscriber_data_merges = $subscriber_data['merges'];
|
| 973 |
+
// seperate date+time
|
| 974 |
+
$subscriber_data_info_changed = explode(' ' , $subscriber_data['info_changed']);
|
| 975 |
+
$subscriber_data_timestamp_opt = explode (' ', $subscriber_data['timestamp_opt']);
|
| 976 |
+
// store date+time in seperate variables
|
| 977 |
+
$subscriber_data_info_changed_date = $subscriber_data_info_changed[0];
|
| 978 |
+
$subscriber_data_info_changed_time = $subscriber_data_info_changed[1];
|
| 979 |
+
// store optin-time+date in seperate variables
|
| 980 |
+
$subscriber_data_info_optin_date = $subscriber_data_timestamp_opt[0];
|
| 981 |
+
$subscriber_data_info_optin_time = $subscriber_data_timestamp_opt[1];
|
| 982 |
+
|
| 983 |
+
// create our language variable dependent on what is set in MailChimp
|
| 984 |
+
include_once('set_language.php');
|
| 985 |
+
|
| 986 |
+
// create star rating variable, based on returned member_rating value
|
| 987 |
+
if(isset($member_rating)) {
|
| 988 |
+
if ($member_rating == 1) {
|
| 989 |
+
$member_rating_stars = '<div class="yks-mc-subscriber-rating"><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span></div>';
|
| 990 |
+
} else if ($member_rating == 2) {
|
| 991 |
+
$member_rating_stars = '<div class="yks-mc-subscriber-rating"><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span></div>';
|
| 992 |
+
} else if ($member_rating == 3) {
|
| 993 |
+
$member_rating_stars = '<div class="yks-mc-subscriber-rating"><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span></div>';
|
| 994 |
+
} else if ($member_rating == 4) {
|
| 995 |
+
$member_rating_stars = '<div class="yks-mc-subscriber-rating"><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-empty"></span></div>';
|
| 996 |
+
} else if ($member_rating == 5) {
|
| 997 |
+
$member_rating_stars = '<div class="yks-mc-subscriber-rating"><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span><span class="subscriber_rating_star dashicons dashicons-star-filled"></span></div>';
|
| 998 |
+
}
|
| 999 |
+
}
|
| 1000 |
+
?>
|
| 1001 |
+
|
| 1002 |
+
<div class="yks-mc-subscriber-top">
|
| 1003 |
+
<span class="button-primary dashicons dashicons-arrow-left-alt2 yks-mc-subscriber-go-back"><?php _e('Back to Subscriber List', 'yikes-inc-easy-mailchimp-extender'); ?></span>
|
| 1004 |
+
<h2 class="yks-mc-subscriber-header"><?php _e('Subscriber Details', 'yikes-inc-easy-mailchimp-extender'); ?> </h2>
|
| 1005 |
+
<!-- display users email address -->
|
| 1006 |
+
<h3 id="yks-subscriber-info-email-address"><?php echo $subscriber_data['email']; ?></h3>
|
| 1007 |
+
<!-- display member star rating pulled from MailChimp -->
|
| 1008 |
+
<?php echo $member_rating_stars; ?>
|
| 1009 |
+
<!-- user optin time and date -->
|
| 1010 |
+
<span class="yks-subscriber-info-optin-data">
|
| 1011 |
+
<?php echo 'Subscribed on : '.date('m/d/Y',strtotime($subscriber_data_info_optin_date)); ?><?php echo ' at '.date('g:i A',strtotime($subscriber_data_info_optin_time)); ?>
|
| 1012 |
+
</span>
|
| 1013 |
+
</div>
|
| 1014 |
+
|
| 1015 |
+
<h2 class="yks-mc-subscriber-header"><?php _e('Overview', 'yikes-inc-easy-mailchimp-extender'); ?></h2>
|
| 1016 |
+
<div class="yks-mc-subscriber-overview">
|
| 1017 |
+
|
| 1018 |
+
<div class="yks-mc-subscriber-left-container">
|
| 1019 |
+
|
| 1020 |
+
<label class="yks-mc-overview-title"><?php _e('First Name', 'yikes-inc-easy-mailchimp-extender'); ?></label>
|
| 1021 |
+
<p class="yks-mc-overview-info-value yks-mc-subscriber-firstName"><?php if(!empty($subscriber_data_merges['FNAME'])) { echo $subscriber_data_merges['FNAME']; } else { echo 'not provided'; } ?></p>
|
| 1022 |
+
|
| 1023 |
+
<label class="yks-mc-overview-title"><?php _e('Last Updated', 'yikes-inc-easy-mailchimp-extender'); ?></label>
|
| 1024 |
+
<p class="yks-mc-overview-info-value"><?php echo date('m/d/Y',strtotime($subscriber_data_info_changed_date)); ?><?php echo ' at '.date('g:i A',strtotime($subscriber_data_info_changed_time)); ?></p>
|
| 1025 |
+
|
| 1026 |
+
<label class="yks-mc-overview-title"><?php _e('Preferred Email Type', 'yikes-inc-easy-mailchimp-extender'); ?></label>
|
| 1027 |
+
<p class="yks-mc-overview-info-value"><?php if(!empty($subscriber_data['email_type'])) { echo $subscriber_data['email_type']; } else { echo 'No Preference.'; } ?></p>
|
| 1028 |
+
|
| 1029 |
+
</div>
|
| 1030 |
|
| 1031 |
+
<div class="yks-mc-subscriber-right-container">
|
| 1032 |
+
|
| 1033 |
+
<label class="yks-mc-overview-title"><?php _e('Last Name', 'yikes-inc-easy-mailchimp-extender'); ?></label>
|
| 1034 |
+
<p class="yks-mc-overview-info-value yks-mc-subscriber-lastName"><?php if(!empty($subscriber_data_merges['LNAME'])) { echo $subscriber_data_merges['LNAME']; } else { echo 'not provided'; } ?></p>
|
| 1035 |
+
|
| 1036 |
+
<label class="yks-mc-overview-title"><?php _e('Language', 'yikes-inc-easy-mailchimp-extender'); ?></label>
|
| 1037 |
+
<p class="yks-mc-overview-info-value"><?php echo $subscriber_data_language; ?></p>
|
| 1038 |
+
|
| 1039 |
+
</div>
|
| 1040 |
+
|
| 1041 |
+
|
| 1042 |
+
</div>
|
| 1043 |
+
|
| 1044 |
+
|
| 1045 |
+
<?php
|
| 1046 |
+
// build our segment array to determine if the user is subscribed to any segments
|
| 1047 |
+
$segment_count = array();
|
| 1048 |
+
// check if groupings data is set (for segment and interest groups)
|
| 1049 |
+
// this avoids an error being thrown when no segment/interest groups have been selected
|
| 1050 |
+
if ( isset( $subscriber_data_merges['GROUPINGS'] ) ) {
|
| 1051 |
+
foreach ($subscriber_data_merges['GROUPINGS'] as $group1) {
|
| 1052 |
+
foreach ($group1['groups'] as $group2) {
|
| 1053 |
+
if ($group2['interested'] == 1) {
|
| 1054 |
+
array_push($segment_count, $group2['name']);
|
| 1055 |
+
}
|
| 1056 |
+
}
|
| 1057 |
+
}
|
| 1058 |
+
}
|
| 1059 |
+
// test $segment_count array
|
| 1060 |
+
// print_r($segment_count);
|
| 1061 |
+
?>
|
| 1062 |
+
<!-- returns true always, groupings gets stored, but segments do not // need to check if there are any segments stored in the groupings array -->
|
| 1063 |
+
<h2 class="yks-mc-subscriber-header"><?php _e('Groups Subscribed To', 'yikes-inc-easy-mailchimp-extender'); ?></h2>
|
| 1064 |
+
<!-- display what groups/segments the subscriber is subscribed too -->
|
| 1065 |
+
<?php
|
| 1066 |
+
|
| 1067 |
+
// if the user is subscribed to some segment
|
| 1068 |
+
if(!empty($segment_count)) {
|
| 1069 |
+
|
| 1070 |
+
$groups_array = array(
|
| 1071 |
+
'group_name' => '',
|
| 1072 |
+
'segments' => array()
|
| 1073 |
+
);
|
| 1074 |
+
|
| 1075 |
+
$num = 0;
|
| 1076 |
+
foreach ($subscriber_data_merges['GROUPINGS'] as $group_name) {
|
| 1077 |
+
$groups_array[$num]['group_name'] = $group_name['name'];
|
| 1078 |
+
foreach ($group_name['groups'] as $groupData ) {
|
| 1079 |
+
if ($groupData['interested'] == 1) {
|
| 1080 |
+
$groups_array[$num]['segments'] = $groupData['name'];
|
| 1081 |
+
}
|
| 1082 |
+
}
|
| 1083 |
+
$num++;
|
| 1084 |
+
}
|
| 1085 |
+
|
| 1086 |
+
// build up the segments array that the user is subscribed too
|
| 1087 |
+
foreach ( $groups_array as $group_data ) {
|
| 1088 |
+
if(!empty($group_data['segments'])) {
|
| 1089 |
+
?>
|
| 1090 |
+
<ul>
|
| 1091 |
+
<?php
|
| 1092 |
+
echo '<li style="font-size:16px; color:#333;">'.$group_data['group_name'].'</li>';
|
| 1093 |
+
if(!empty($group_data['group_name']) && isset($group_data['segments'])) {
|
| 1094 |
+
echo 'Segments : '; echo implode(' ,', array($group_data['segments']));
|
| 1095 |
+
} elseif (count($group_data['segments']) == 0) {
|
| 1096 |
+
echo 'n/a';
|
| 1097 |
+
}
|
| 1098 |
+
?>
|
| 1099 |
+
</ul>
|
| 1100 |
+
<?php
|
| 1101 |
+
}
|
| 1102 |
+
}
|
| 1103 |
+
|
| 1104 |
+
} else {
|
| 1105 |
+
// if there are no segments subscribed too
|
| 1106 |
+
// just print a message none specified
|
| 1107 |
+
echo 'none specified';
|
| 1108 |
+
}
|
| 1109 |
+
|
| 1110 |
+
// display the notes associated with a user if there are any returned
|
| 1111 |
+
if(!empty($subscriber_data['notes'])) { ?>
|
| 1112 |
+
<div class="yks-mc-subscriber-bottom">
|
| 1113 |
+
<h2 class="yks-mc-subscriber-header"><?php _e('Subscriber Notes', 'yikes-inc-easy-mailchimp-extender'); ?></h2>
|
| 1114 |
+
<?php
|
| 1115 |
+
foreach ( $subscriber_data['notes'] as $note ) {
|
| 1116 |
+
?>
|
| 1117 |
+
<textarea style="width:100%; height:100px; resize:none;" id="yks-mc-subscriber-notes" disabled><?php echo $note['note']; ?></textarea>
|
| 1118 |
+
<span style="font-size:11px; opacity:.75;"><?php _e('Written by', 'yikes-inc-easy-mailchimp-extender'); ?>: <?php echo $note['created_by_name']; ?> // <?php _e('Created on', 'yikes-inc-easy-mailchimp-extender'); ?>: <?php echo date('m/d/Y',strtotime($note['created'])); ?></span>
|
| 1119 |
+
<?php
|
| 1120 |
+
}
|
| 1121 |
+
?>
|
| 1122 |
+
</div>
|
| 1123 |
+
<?php } ?>
|
| 1124 |
+
|
| 1125 |
+
<!-- <h2>Var Dump</h2> -->
|
| 1126 |
+
<?php /* print_r($subscriber_info); // testing the returned subscriber info data */
|
| 1127 |
+
|
| 1128 |
+
}
|
| 1129 |
+
wp_die();
|
| 1130 |
+
}
|
| 1131 |
|
| 1132 |
+
// Make a call to the MailChimp API to remove a specified user from a given list
|
| 1133 |
+
// Runs when the user clicks the 'X' next to a subscriber when viewing all subscribers on the lists page
|
| 1134 |
+
public function yks_removeSubscriber($lid, $user_email) {
|
| 1135 |
+
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 1136 |
+
$subscribers_list = $api->call('lists/unsubscribe', array(
|
| 1137 |
+
'id' => $lid,
|
| 1138 |
+
'email' => array(
|
| 1139 |
+
'email' => $user_email
|
| 1140 |
+
)
|
| 1141 |
+
));
|
| 1142 |
+
}
|
| 1143 |
|
| 1144 |
/***** SCRIPTS/STYLES
|
| 1145 |
****************************************************************************************************/
|
| 1147 |
{
|
| 1148 |
// Register Styles
|
| 1149 |
wp_register_style('ykseme-css-base', YKSEME_URL.'css/style.ykseme.css', array(), '1.0.0', 'all');
|
| 1150 |
+
wp_register_style('jquery-datatables-pagination', YKSEME_URL.'css/jquery.dataTables.css', array(), '1.0.0', 'all');
|
| 1151 |
// Enqueue Styles
|
| 1152 |
wp_enqueue_style('thickbox');
|
| 1153 |
+
wp_enqueue_style('ykseme-css-base');
|
| 1154 |
+
wp_enqueue_style('jquery-datatables-pagination');
|
| 1155 |
}
|
| 1156 |
|
| 1157 |
public function addStyles_frontend()
|
| 1158 |
{
|
| 1159 |
// Register Styles
|
| 1160 |
wp_register_style('ykseme-css-base', YKSEME_URL.'css/style.ykseme.css', array(), '1.0.0', 'all');
|
| 1161 |
+
wp_register_style('ykseme-css-smoothness', '//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css', array(), '1.0.0', 'all');
|
| 1162 |
+
wp_register_style('ykseme-animate-css', YKSEME_URL.'css/animate.css', array(), '1.0.0', 'all');
|
| 1163 |
// Enqueue Styles
|
| 1164 |
wp_enqueue_style('ykseme-css-base');
|
| 1165 |
wp_enqueue_style('ykseme-css-smoothness');
|
| 1166 |
+
wp_enqueue_style('ykseme-animate-css');
|
| 1167 |
}
|
| 1168 |
|
| 1169 |
public function addScripts()
|
| 1174 |
wp_enqueue_script('jquery-ui-sortable');
|
| 1175 |
wp_enqueue_script('jquery-ui-tabs');
|
| 1176 |
wp_enqueue_script('ykseme-base', YKSEME_URL.'js/script.ykseme.js', array('jquery'));
|
| 1177 |
+
wp_enqueue_script('jquery-datatables-pagination', YKSEME_URL.'js/jquery.dataTables.js', array('jquery'));
|
| 1178 |
+
}
|
| 1179 |
+
|
| 1180 |
+
// redirect the user to the settings page on initial activation
|
| 1181 |
+
function yks_easy_mc_plugin_activation_redirect() {
|
| 1182 |
+
if (get_option('yks_easy_mc_plugin_do_activation_redirect', false)) {
|
| 1183 |
+
delete_option('yks_easy_mc_plugin_do_activation_redirect');
|
| 1184 |
+
// redirect to settings page
|
| 1185 |
+
wp_redirect(admin_url('/admin.php?page=yks-mailchimp-form'));
|
| 1186 |
+
}
|
| 1187 |
}
|
| 1188 |
|
| 1189 |
public function addScripts_frontend()
|
| 1190 |
{
|
| 1191 |
global $wp_scripts;
|
| 1192 |
+
|
| 1193 |
$version ='1.9.0';
|
| 1194 |
+
// compare the registered version of jQuery with 1.9.0
|
| 1195 |
+
if ( ( version_compare( @$wp_scripts->registered['jquery']->ver, $version ) >= 0 ) && !is_admin() )
|
| 1196 |
{
|
| 1197 |
wp_enqueue_script( 'jquery' );
|
| 1198 |
}
|
| 1199 |
else
|
| 1200 |
{
|
| 1201 |
+
if ( !is_admin() && !$this->is_login_page() ) {
|
| 1202 |
+
// if its older, or non-existent, load the newest version from google CDN
|
| 1203 |
+
wp_deregister_script('jquery');
|
| 1204 |
+
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/'.$version.'/jquery.min.js', false, $version );
|
| 1205 |
+
wp_enqueue_script( 'jquery' );
|
| 1206 |
+
}
|
| 1207 |
}
|
| 1208 |
// Everything else
|
| 1209 |
wp_enqueue_script('jquery-ui-core');
|
| 1211 |
}
|
| 1212 |
|
| 1213 |
|
|
|
|
| 1214 |
/***** SHORTCODES
|
| 1215 |
****************************************************************************************************/
|
| 1216 |
+
// Function to process the shortcode provided by the plugin
|
| 1217 |
+
// $p is the data associated with the shortcode (ie: form id and submit button text)
|
| 1218 |
public function processShortcode($p)
|
| 1219 |
{
|
| 1220 |
ob_start();
|
| 1221 |
if($this->optionVal['api-key'] != ''
|
| 1222 |
+
&& (is_array($this->optionVal['lists'][$p['id']]) && !empty($this->optionVal['lists'][$p['id']])))
|
| 1223 |
{
|
| 1224 |
// Setup this list
|
| 1225 |
$list = $this->optionVal['lists'][$p['id']];
|
| 1226 |
+
$submit_text = $p['submit_text'];
|
| 1227 |
// Which form are we on?
|
| 1228 |
if(!isset($this->currentLists[$p['id']]))
|
| 1229 |
$this->currentLists[$p['id']] = 0;
|
| 1242 |
// List form
|
| 1243 |
include YKSEME_PATH.'templates/shortcode_form.php';
|
| 1244 |
}
|
| 1245 |
+
// if there is no api key entered, or it's an invalid api key
|
| 1246 |
+
else if ( $this->optionVal['api-key'] == '' || get_option( 'api_validation' ) == 'invalid_api_key' )
|
| 1247 |
{
|
| 1248 |
+
include YKSEME_PATH.'templates/shortcode_error_no_API_key.php';
|
| 1249 |
+
// else if the form was removed from the lists page
|
| 1250 |
+
} else {
|
| 1251 |
+
include YKSEME_PATH.'templates/shortcode_error_data.php';
|
| 1252 |
}
|
| 1253 |
$shortcode = ob_get_contents();
|
| 1254 |
ob_end_clean();
|
| 1255 |
return $shortcode;
|
| 1256 |
}
|
| 1257 |
+
// Function to process the PHP snippet provided by the plugin
|
| 1258 |
+
// Again the data passed in, is the shortcode/php snippet paramaters (form id, submit button text)
|
| 1259 |
+
public function processSnippet($list=false, $submit_text)
|
| 1260 |
{
|
| 1261 |
+
$p = array(
|
| 1262 |
+
'id' => $list,
|
| 1263 |
+
'submit_text' => $submit_text
|
| 1264 |
+
);
|
| 1265 |
return $this->processShortcode($p);
|
| 1266 |
}
|
| 1267 |
|
| 1268 |
|
|
|
|
|
|
|
|
|
|
| 1269 |
/***** ADMINISTRATION MENUS
|
| 1270 |
****************************************************************************************************/
|
| 1271 |
public function addAdministrationMenu()
|
| 1272 |
{
|
| 1273 |
// Top Level Menu
|
| 1274 |
+
add_menu_page( __('MailChimp Forms','yikes-inc-easy-mailchimp-extender'), __('MailChimp Forms','yikes-inc-easy-mailchimp-extender'), 'manage_options', 'yks-mailchimp-form', array(&$this, 'generatePageOptions'), 'dashicons-welcome-write-blog', 400);
|
| 1275 |
// Sub Items
|
| 1276 |
+
add_submenu_page('yks-mailchimp-form', __('MailChimp Forms','yikes-inc-easy-mailchimp-extender'), __('MailChimp Settings','yikes-inc-easy-mailchimp-extender'), 'manage_options', 'yks-mailchimp-form', array(&$this, 'generatePageOptions'));
|
| 1277 |
+
add_submenu_page('yks-mailchimp-form', __('Manage List Forms','yikes-inc-easy-mailchimp-extender'), __('Manage List Forms','yikes-inc-easy-mailchimp-extender'), 'manage_options', 'yks-mailchimp-form-lists', array(&$this, 'generatePageLists'));
|
| 1278 |
+
add_submenu_page('yks-mailchimp-form', __('About YIKES, Inc.','yikes-inc-easy-mailchimp-extender'), __('About YIKES, Inc.','yikes-inc-easy-mailchimp-extender'), 'manage_options', 'yks-mailchimp-about-yikes', array(&$this, 'generatePageAboutYikes'));
|
| 1279 |
}
|
| 1280 |
|
| 1281 |
|
|
|
|
|
|
|
|
|
|
| 1282 |
/***** ADMINISTRATION PAGES
|
| 1283 |
****************************************************************************************************/
|
| 1284 |
public function generatePageOptions()
|
| 1285 |
{
|
| 1286 |
+
require_once YKSEME_PATH.'pages/options.php'; // include our options page
|
| 1287 |
}
|
| 1288 |
public function generatePageLists()
|
| 1289 |
{
|
| 1290 |
+
require_once YKSEME_PATH.'pages/lists.php'; // include our lists page
|
| 1291 |
}
|
| 1292 |
public function generatePageAboutYikes()
|
| 1293 |
{
|
| 1294 |
+
require_once YKSEME_PATH.'pages/about.php'; // include our about page
|
| 1295 |
}
|
| 1296 |
+
public function registerMailChimpWidget()
|
| 1297 |
+
{
|
| 1298 |
+
require_once YKSEME_PATH.'templates/yikes-mailchimp-widget.php'; // include our widget
|
| 1299 |
+
}
|
| 1300 |
|
| 1301 |
|
| 1302 |
/***** FORM DATA
|
| 1303 |
+
****************************************************************************************************/
|
| 1304 |
+
public function yks_resetPluginSettings() {
|
| 1305 |
+
// reset the plugin settings back to defaults
|
| 1306 |
+
$this->optionVal['api-key'] = '';
|
| 1307 |
+
$this->optionVal['flavor'] = '1';
|
| 1308 |
+
$this->optionVal['debug'] = '0';
|
| 1309 |
+
$this->optionVal['optin'] = 'true';
|
| 1310 |
+
$this->optionVal['single-optin-message'] = __('Thank You for subscribing!', 'yikes-inc-easy-mailchimp-extender');
|
| 1311 |
+
$this->optionVal['double-optin-message'] = __('Thank You for subscribing! Check your email for the confirmation message.', 'yikes-inc-easy-mailchimp-extender');
|
| 1312 |
+
$this->optionVal['interest-group-label'] = '';
|
| 1313 |
+
$this->optionVal['yks-mailchimp-optIn-checkbox'] = 'hide';
|
| 1314 |
+
$this->optionVal['yks-mailchimp-optIn-default-list'] = array();
|
| 1315 |
+
$this->optionVal['yks-mailchimp-optin-checkbox-text'] = 'SIGN ME UP!';
|
| 1316 |
+
update_option('api_validation' , 'invalid_api_key');
|
| 1317 |
+
return update_option(YKSEME_OPTION, $this->optionVal);
|
| 1318 |
+
|
| 1319 |
+
}
|
| 1320 |
|
| 1321 |
+
// Make a call to MailChimp API to validate the provided API key
|
| 1322 |
+
// calls the helper/ping method, and returns true or false
|
| 1323 |
public function validateAPIkeySettings()
|
| 1324 |
{
|
| 1325 |
+
// Create and store our variables to pass to MailChimp
|
| 1326 |
+
$apiKey = $_POST['api_key']; // api key
|
| 1327 |
+
$dataCenter = $_POST['data_center']; // data center (ie: us3)
|
| 1328 |
$api = new wpyksMCAPI($apiKey);
|
| 1329 |
+
// try the call, catch any errors that may be thrown
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1330 |
try {
|
|
|
|
| 1331 |
$resp = $api->call('helper/ping', array('apikey' => $apiKey));
|
| 1332 |
echo $resp['msg'];
|
| 1333 |
+
$this->getOptionsLists();
|
| 1334 |
} catch( Exception $e ) {
|
| 1335 |
$errorMessage = str_replace('API call to helper/ping failed:', '', $e->getMessage());
|
| 1336 |
+
_e($errorMessage,'yikes-inc-easy-mailchimp-extender');
|
| 1337 |
update_option('api_validation', 'invalid_api_key');
|
| 1338 |
}
|
| 1339 |
+
// always die or it will always return 1
|
|
|
|
| 1340 |
wp_die();
|
| 1341 |
}
|
| 1342 |
|
| 1343 |
+
// Make a call to MailChimp API to add a new subscriber to a specified list
|
| 1344 |
+
// Runs when a user fills out the form on the frontend of the site
|
| 1345 |
public function addUserToMailchimp($p)
|
| 1346 |
{
|
| 1347 |
if(!empty($p['form_data']))
|
| 1349 |
parse_str($p['form_data'], $fd);
|
| 1350 |
if(!empty($fd['yks-mailchimp-list-id']))
|
| 1351 |
{
|
| 1352 |
+
// Create and store the variables needed to add a new subscriber
|
| 1353 |
$email = false;
|
| 1354 |
+
$lid = $fd['yks-mailchimp-list-id'];
|
| 1355 |
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 1356 |
$mv = array();
|
| 1357 |
+
$optin = $this->optionVal['optin'];
|
| 1358 |
+
|
|
|
|
| 1359 |
foreach($this->optionVal['lists'][$lid]['fields'] as $field) : if($field['active'] == '1') :
|
| 1360 |
+
|
| 1361 |
// Check to see if the field is in the post
|
| 1362 |
if(isset($fd[$field['name']])) :
|
| 1363 |
|
| 1371 |
default:
|
| 1372 |
$mv[$field['merge']] = $fd[$field['name']];
|
| 1373 |
break;
|
| 1374 |
+
|
| 1375 |
case 'address':
|
| 1376 |
$mv[$field['merge']] = array(
|
| 1377 |
'addr1' => $fd[$field['name']],
|
| 1382 |
'country' => 'US'
|
| 1383 |
);
|
| 1384 |
break;
|
| 1385 |
+
|
| 1386 |
}
|
| 1387 |
+
|
| 1388 |
endif;
|
| 1389 |
endif; endforeach;
|
| 1390 |
|
| 1391 |
+
// Interest group loop to build the GROUPINGS array
|
| 1392 |
+
// The GROUPINGS array passes our interest group, and values back to the specific form
|
| 1393 |
+
$interest_group_option = json_decode($fd['interest-group-data'], true);
|
| 1394 |
+
|
| 1395 |
+
// if interest groups exist, continue and form an array
|
| 1396 |
+
if ( $interest_group_option ) {
|
| 1397 |
+
|
| 1398 |
+
// print_r($interest_group_option);
|
| 1399 |
+
$mv['GROUPINGS'] = array();
|
| 1400 |
+
|
| 1401 |
+
// loop over each interest group
|
| 1402 |
+
foreach ($interest_group_option as $group ) :
|
| 1403 |
+
|
| 1404 |
+
switch($group['form_field'])
|
| 1405 |
+
{
|
| 1406 |
+
case 'radio':
|
| 1407 |
+
case 'dropdown':
|
| 1408 |
+
array_push($mv['GROUPINGS'], array(
|
| 1409 |
+
'id' => $group['id'],
|
| 1410 |
+
// 'groups' => array($fd['interest-group'])
|
| 1411 |
+
'groups' => array(isset($fd[$group['form_field'].'-'.$group['id']]) ? $fd[$group['form_field'].'-'.$group['id']] : '')
|
| 1412 |
+
)
|
| 1413 |
+
);
|
| 1414 |
+
break;
|
| 1415 |
+
|
| 1416 |
+
case 'checkboxes':
|
| 1417 |
+
array_push($mv['GROUPINGS'], array(
|
| 1418 |
+
'id' => $group['id'],
|
| 1419 |
+
// 'groups' => array($fd['interest-group'])
|
| 1420 |
+
'groups' => (isset($fd[$group['form_field'].'-'.$group['id']]) ? $fd[$group['form_field'].'-'.$group['id']] : '')
|
| 1421 |
+
// $fd[$group['form_field'].'-'.$group['id']]
|
| 1422 |
+
|
| 1423 |
+
)
|
| 1424 |
+
);
|
| 1425 |
+
break;
|
| 1426 |
+
}
|
| 1427 |
+
endforeach; // end loop
|
| 1428 |
+
|
| 1429 |
+
}
|
| 1430 |
+
|
| 1431 |
+
// If no email provided, fail
|
| 1432 |
$noemail = "The email address is blank";
|
| 1433 |
if($email === false) return $noemail;
|
| 1434 |
+
|
| 1435 |
+
// Add custom filter here, to capture user submitted
|
| 1436 |
+
// data before it's sent off to MailChimp
|
| 1437 |
+
$form_data = apply_filters( 'yikes_mc_get_form_data', $lid, $mv );
|
| 1438 |
+
$specific_form_data = apply_filters( 'yikes_mc_get_form_data_'.$lid, $lid, $mv );
|
| 1439 |
+
|
| 1440 |
+
|
| 1441 |
+
// try adding subscriber, catch any error thrown
|
| 1442 |
+
try {
|
| 1443 |
+
$retval = $api->call('lists/subscribe', array(
|
| 1444 |
+
'id' => $lid, // form id
|
| 1445 |
+
'email' => array( 'email' => $email ), // user email
|
| 1446 |
+
'merge_vars' => $mv, // merge variables (ie: fields and interest groups)
|
| 1447 |
+
'double_optin' => $optin // double optin value (retreived from the settings page)
|
| 1448 |
+
));
|
| 1449 |
+
return "done";
|
| 1450 |
+
} catch( Exception $e ) { // catch any errors returned from MailChimp
|
| 1451 |
+
$errorCode = $e->getCode();
|
| 1452 |
+
if ( $errorCode = '214' ) {
|
| 1453 |
+
$errorMessage = str_replace('Click here to update your profile.', '', $e->getMessage());
|
| 1454 |
+
$error_catch = explode('to list', $errorMessage);
|
| 1455 |
+
echo $error_catch[0].'.';
|
| 1456 |
+
die();
|
| 1457 |
+
} else {
|
| 1458 |
+
echo $e->getMessage();
|
| 1459 |
+
die();
|
| 1460 |
+
}
|
| 1461 |
}
|
| 1462 |
+
|
| 1463 |
}
|
| 1464 |
}
|
| 1465 |
+
return __('One or more fields are empty','yikes-inc-easy-mailchimp-extender'); // return an error if your leaving any necessary fields empty
|
| 1466 |
}
|
| 1467 |
|
| 1468 |
+
|
| 1469 |
+
// get our merge variables associated with a sepcific list
|
| 1470 |
+
// may not need any more
|
| 1471 |
+
// maybe remove
|
| 1472 |
+
/*
|
| 1473 |
private function getFieldMergeVar($fn, $lid)
|
| 1474 |
{
|
| 1475 |
$mk = '_YKS_UNKNOWN';
|
| 1494 |
}
|
| 1495 |
return $mk;
|
| 1496 |
}
|
| 1497 |
+
*/
|
| 1498 |
|
| 1499 |
+
// Generate the lists containers on the lists page
|
| 1500 |
+
// This function gets any imported lists, and builds up the lists page
|
| 1501 |
public function generateListContainers($listArr=false)
|
| 1502 |
{
|
| 1503 |
$listArr = ($listArr == false ? $this->optionVal['lists'] : $listArr);
|
| 1504 |
$thelistdata = $this->getListsData(); //Get list names from API
|
| 1505 |
+
// if there are any imported lists in the array
|
| 1506 |
if(count($listArr) > 0)
|
| 1507 |
{
|
|
|
|
| 1508 |
ob_start();
|
| 1509 |
+
// loop over each lists and build the page
|
| 1510 |
foreach($listArr as $list)
|
| 1511 |
{
|
| 1512 |
+
|
| 1513 |
+
$get_list_data = $this->getListsData();
|
| 1514 |
?>
|
| 1515 |
<div class="yks-list-container" id="yks-list-container_<?php echo $list['id']; ?>">
|
| 1516 |
<div class="yks-status" id="yks-status" style="display: none;">
|
| 1517 |
+
<div class="yks-success" style="padding:.25em;"><p> <?php _e('Your List Was Successfully Saved!','yikes-inc-easy-mailchimp-extender'); ?></p></div>
|
| 1518 |
</div>
|
| 1519 |
+
<div class="yks-status-error" id="yks-status-error" style="display: none;">
|
| 1520 |
+
<div class="yks-error" style="padding:.25em;"><p> <?php _e('Your settings were not saved (or you did not change them).','yikes-inc-easy-mailchimp-extender'); ?></p></div>
|
| 1521 |
+
</div>
|
| 1522 |
+
<span class="yikes-lists-error" style="display:none;"><?php _e('I\'m sorry there was an error with your request.','yikes-inc-easy-mailchimp-extender'); ?></span>
|
| 1523 |
<form method="post" name="yks-mailchimp-form" id="yks-mailchimp-form_<?php echo $list['id']; ?>" rel="<?php echo $list['id']; ?>">
|
| 1524 |
<input type="hidden" name="yks-mailchimp-unique-id" id="yks-mailchimp-unique-id_<?php echo $list['id']; ?>" value="<?php echo $list['id']; ?>" />
|
| 1525 |
<table class="form-table yks-admin-form">
|
| 1526 |
<tbody>
|
| 1527 |
<tr valign="top">
|
| 1528 |
+
<th scope="row"><label for="yks-mailchimp-api-key"><?php _e('MailChimp List name','yikes-inc-easy-mailchimp-extender'); ?></label></th>
|
| 1529 |
<td class="yks-mailchimp-listname"><?php
|
| 1530 |
if ($list['name'])
|
| 1531 |
{
|
| 1532 |
$thename = $list['name'];
|
| 1533 |
+
//echo $thename;
|
| 1534 |
+
printf( __( '%1$s', 'yikes-inc-easy-mailchimp-extender' ), $thename );
|
| 1535 |
}
|
| 1536 |
else
|
| 1537 |
{
|
| 1540 |
if ($lkey == $list['id'])
|
| 1541 |
{
|
| 1542 |
$thename = $lval;
|
| 1543 |
+
//echo $thename;
|
| 1544 |
+
printf( __( '%1$s', 'yikes-inc-easy-mailchimp-extender' ), $thename );
|
| 1545 |
}
|
| 1546 |
}
|
| 1547 |
}
|
| 1548 |
?></td>
|
| 1549 |
+
</tr>
|
| 1550 |
+
<!-- display the specific MailChimp list ID back to the user -->
|
| 1551 |
<tr valign="top">
|
| 1552 |
+
<th scope="row"><label for="yks-mailchimp-api-key"><?php _e('MailChimp List ID','yikes-inc-easy-mailchimp-extender'); ?></label></th>
|
| 1553 |
<td><?php echo $list['list-id']; ?>
|
| 1554 |
</td>
|
| 1555 |
</tr>
|
| 1556 |
+
<!-- display the shortcode with the specific list ID -->
|
| 1557 |
+
<tr valign="top">
|
| 1558 |
+
<th scope="row"><label for="yks-mailchimp-api-key"><?php _e('Shortcode','yikes-inc-easy-mailchimp-extender'); ?></label></th>
|
| 1559 |
+
<td>
|
| 1560 |
+
[yks-mailchimp-list id="<?php echo $list['id']; ?>" submit_text="Submit"]
|
| 1561 |
+
<span class="description yks-margin-left"><?php _e('Paste this shortcode into whatever page or post you want to add this form to','yikes-inc-easy-mailchimp-extender'); ?></span>
|
| 1562 |
+
</td>
|
| 1563 |
+
</tr>
|
| 1564 |
+
<!-- display the PHP snippet with the specific list ID -->
|
| 1565 |
<tr valign="top">
|
| 1566 |
+
<th scope="row"><label for="yks-mailchimp-api-key"><?php _e('PHP Snippet','yikes-inc-easy-mailchimp-extender'); ?></label></th>
|
| 1567 |
<td>
|
| 1568 |
+
<?php echo htmlentities('<?php echo yksemeProcessSnippet(\''.$list['id'].'\', \'Submit\'); ?>'); ?>
|
| 1569 |
+
<span class="description yks-margin-left"><?php _e('Use this code to add this form to a template file','yikes-inc-easy-mailchimp-extender'); ?></span>
|
| 1570 |
</td>
|
| 1571 |
</tr>
|
| 1572 |
+
<!-- display subscriber count here -->
|
| 1573 |
<tr valign="top">
|
| 1574 |
+
<th scope="row"><label for="yks-mailchimp-api-key"><?php _e('Number of Subscribers','yikes-inc-easy-mailchimp-extender'); ?></label></th>
|
| 1575 |
<td>
|
| 1576 |
+
<!-- rel contains list id that we pass along to our function to ajax retreive all subscribers -->
|
| 1577 |
+
<span class="number-of-subscribers-<?php echo $list['id']; ?>"><?php echo $get_list_data['subscriber-count']['subscriber-count-'.$list['id']]; ?> </span><a href="#TB_inline?width=600&height=550&inlineId=yikes-mailchimp-subscribers-box" class="thickbox displayListSubscribers" rel="<?php echo $list['id']; ?>">View</a>
|
| 1578 |
</td>
|
| 1579 |
</tr>
|
| 1580 |
+
<!-- display the forms fields, with options to customize -->
|
| 1581 |
<tr valign="top">
|
| 1582 |
<td scope="row">
|
| 1583 |
+
<label for="api-key"><strong><?php _e('Form Fields','yikes-inc-easy-mailchimp-extender'); ?></strong></label>
|
| 1584 |
<p class="description">
|
| 1585 |
+
<?php _e('Check the fields you want included in your form (Email Address is required).','yikes-inc-easy-mailchimp-extender'); ?>
|
| 1586 |
</p>
|
| 1587 |
<p class="description">
|
| 1588 |
+
<?php _e('Use the green arrows to drag-and-drop the fields and rearrange their order.','yikes-inc-easy-mailchimp-extender'); ?>
|
| 1589 |
<span class="yks-mailchimp-sorthandle-img"></span>
|
| 1590 |
</p>
|
| 1591 |
</th>
|
| 1592 |
<td class="yks-mailchimp-fields-td" id="yks-mailchimp-fields-td_<?php echo $list['id']; ?>">
|
| 1593 |
<fieldset class="yks-mailchimp-fields-container" id="yks-mailchimp-fields-container_<?php echo $list['id']; ?>">
|
| 1594 |
+
<legend class="screen-reader-text"><span><?php _e('Active Fields','yikes-inc-easy-mailchimp-extender'); ?></span></legend>
|
| 1595 |
<div class="yks-mailchimp-fields-list" id="yks-mailchimp-fields-list_<?php echo $list['id']; ?>" rel="<?php echo $list['id']; ?>">
|
| 1596 |
|
| 1597 |
<!-- create sortable rows populated with mailchimp data -->
|
| 1598 |
+
<?php
|
| 1599 |
+
$num = 1;
|
| 1600 |
+
foreach($list['fields'] as $field) { ?>
|
| 1601 |
<div class="yks-mailchimp-fields-list-row">
|
| 1602 |
<label title="<?php echo $field['name']; ?>" rel="<?php echo $field['id']; ?>">
|
| 1603 |
+
<span class="yks-mailchimp-sorthandle"><?php _e('Drag','yikes-inc-easy-mailchimp-extender'); ?> & <?php _e('drop','yikes-inc-easy-mailchimp-extender'); ?></span>
|
| 1604 |
<input type="checkbox" name="<?php echo $field['name']; ?>" id="<?php echo $field['id']; ?>" value="1" <?php echo ($field['active'] == 1 ? 'checked="checked"' : ''); ?><?php echo ($field['require'] == 1 ? 'disabled="disabled"' : ''); ?> />
|
| 1605 |
|
| 1606 |
<div class="yks-mailchimp-field-name"><?php echo $field['label']; ?></div>
|
| 1607 |
</label>
|
| 1608 |
+
<span class="yks-mailchimp-field-merge"><span class="description"><?php _e('Merge field','yikes-inc-easy-mailchimp-extender'); ?>:</span> *|<input type="text" name="<?php echo $field['name']; ?>-merge" id="<?php echo $field['id']; ?>-merge" value="<?php echo $field['merge']; ?>"<?php echo (($field['locked'] == 1 || $field['merge'] == false) ? ' disabled="disabled"' : ''); ?> />|*</span>
|
| 1609 |
+
<span class="yks-mailchimp-field-placeholder"><span class="description"><?php _e('Placeholder','yikes-inc-easy-mailchimp-extender'); ?>:</span> *|<input type="text" name="placeholder-<?php echo $list['id'].'-'.$num; ?>" id="<?php echo $field['id']; ?>-placeholder" placeholder="<?php echo $field['label']; ?>" value="<?php if(isset($field['placeholder-'.$list['id'].'-'.$num])) { echo $field['placeholder-'.$list['id'].'-'.$num]; } ?>" />|*</span>
|
| 1610 |
</div>
|
| 1611 |
+
<?php
|
| 1612 |
+
$num++;
|
| 1613 |
+
} ?>
|
| 1614 |
</div>
|
| 1615 |
+
<!-- display redirect checkbox here -->
|
| 1616 |
+
<tr valign="top">
|
| 1617 |
+
<th scope="row"><label for="yks-mailchimp-url-redirect"><?php _e('Redirect User On Submission','yikes-inc-easy-mailchimp-extender'); ?></label></th>
|
| 1618 |
+
<td>
|
| 1619 |
+
<span class="yks-mailchimp-redirect-checkbox-holder">
|
| 1620 |
+
<input type="checkbox" name="yks_mailchimp_redirect_<?php echo $list['id']; ?>" class="yks_mailchimp_redirect" id="yks-mailchimp-redirect-<?php echo $list['id']; ?>" value="1" <?php if(isset($field['yks_mailchimp_redirect_'.$list['id']])) { echo ($field['yks_mailchimp_redirect_'.$list['id']] == 1 ? 'checked="checked"' : ''); } ?> />
|
| 1621 |
+
<span class="description yks-margin-left"><?php _e('choose a page to redirect the user to after they submit the form.', 'yikes-inc-easy-mailchimp-extender'); ?></span>
|
| 1622 |
+
<!-- drop down of registered posts/pages -->
|
| 1623 |
+
<li id="pages" class="yks_mc_pages_dropdown_<?php echo $list['id']; ?>" <?php if(!isset($field['yks_mailchimp_redirect_'.$list['id']])) { echo 'style="list-style:none;display:none;"'; } else { echo 'style="list-style:none;"'; } ?> >
|
| 1624 |
+
<h3><?php _e('Select A Post/Page', 'yikes-inc-easy-mailchimp-extender'); ?></h3>
|
| 1625 |
+
<form action="<? bloginfo('url'); ?>" method="get">
|
| 1626 |
+
<select id="page_id" name="page_id_<?php echo $list['id']; ?>" >
|
| 1627 |
+
<?php
|
| 1628 |
+
// set up variables for the queries
|
| 1629 |
+
global $post;
|
| 1630 |
+
global $page;
|
| 1631 |
+
$args_posts = array( 'numberposts' => -1);
|
| 1632 |
+
$args_pages = array(
|
| 1633 |
+
'sort_order' => 'ASC',
|
| 1634 |
+
'sort_column' => 'post_title',
|
| 1635 |
+
'hierarchical' => 1,
|
| 1636 |
+
'exclude' => '',
|
| 1637 |
+
'include' => '',
|
| 1638 |
+
'meta_key' => '',
|
| 1639 |
+
'meta_value' => '',
|
| 1640 |
+
'authors' => '',
|
| 1641 |
+
'child_of' => 0,
|
| 1642 |
+
'parent' => -1,
|
| 1643 |
+
'exclude_tree' => '',
|
| 1644 |
+
'number' => '',
|
| 1645 |
+
'offset' => 0,
|
| 1646 |
+
'post_type' => 'page',
|
| 1647 |
+
'post_status' => 'publish'
|
| 1648 |
+
);
|
| 1649 |
+
$pages = get_pages($args_pages);
|
| 1650 |
+
// print_r($pages);
|
| 1651 |
+
|
| 1652 |
+
$posts = get_posts($args_posts);
|
| 1653 |
+
// print_r($posts);
|
| 1654 |
+
?>
|
| 1655 |
+
<optgroup label="Posts"><?php
|
| 1656 |
+
|
| 1657 |
+
// throwing error -> must resolve
|
| 1658 |
+
foreach( $posts as $post ) : setup_postdata($post); ?>
|
| 1659 |
+
<option <?php if(isset($field['page_id_'.$list['id']])) { selected( $field['page_id_'.$list['id']], $post->ID ); } ?> value="<?php echo $post->ID; ?>"><?php the_title(); ?></option>
|
| 1660 |
+
<?php endforeach; ?>
|
| 1661 |
+
|
| 1662 |
+
</optgroup>
|
| 1663 |
+
<optgroup label="Pages">
|
| 1664 |
+
<?php
|
| 1665 |
+
foreach( $pages as $page ) : ?>
|
| 1666 |
+
<option <?php if(isset($field['page_id_'.$list['id']])) { selected( $field['page_id_'.$list['id']], $page->ID ); } ?> value="<?php echo $page->ID; ?>"><?php echo $page->post_title; ?></option>
|
| 1667 |
+
<?php endforeach; ?>
|
| 1668 |
+
</optgroup>
|
| 1669 |
+
</select>
|
| 1670 |
+
</form>
|
| 1671 |
+
</li>
|
| 1672 |
+
</span>
|
| 1673 |
+
</td>
|
| 1674 |
+
</tr>
|
| 1675 |
</fieldset>
|
| 1676 |
</td>
|
| 1677 |
</tr>
|
| 1678 |
<tr>
|
| 1679 |
<td></td>
|
| 1680 |
<td>
|
| 1681 |
+
<input type="submit" name="submit" class="yks-mailchimp-list-update button-primary" value="<?php _e('Save Form Settings', 'yikes-inc-easy-mailchimp-extender'); ?>" rel="<?php echo $list['id']; ?>" />
|
| 1682 |
+
<input type="button" name="delete" class="yks-mailchimp-delete button-primary" value="<?php _e('Delete Form', 'yikes-inc-easy-mailchimp-extender'); ?>" rel="<?php echo $list['id']; ?>" data-title="<?php echo $thename; ?>" />
|
| 1683 |
+
<input type="button" name="import" class="yks-mailchimp-import button-primary" value="<?php _e('Re-Import Form Fields from MailChimp', 'yikes-inc-easy-mailchimp-extender'); ?>" rel="<?php echo $list['id']; ?>" />
|
| 1684 |
</td>
|
| 1685 |
</tr>
|
| 1686 |
</tbody>
|
| 1687 |
</table>
|
| 1688 |
+
|
|
|
|
| 1689 |
</form>
|
| 1690 |
+
|
| 1691 |
+
<!-- run loop to display content here -->
|
| 1692 |
+
<!-- thickbox for our hidden content, we will display subscribed peoples here based on which link is clicked -->
|
| 1693 |
+
<?php add_thickbox(); ?>
|
| 1694 |
+
<div id="yikes-mailchimp-subscribers-box" style="display:none;">
|
| 1695 |
+
<img class="mailChimp_get_subscribers_preloader" src="<?php echo admin_url().'/images/wpspin_light.gif'; ?>" alt="preloader" >
|
| 1696 |
+
<div class="yks_mc_subscribers">
|
| 1697 |
+
</div>
|
| 1698 |
+
</div>
|
| 1699 |
+
|
| 1700 |
</div>
|
| 1701 |
<?php
|
| 1702 |
}
|
| 1705 |
ob_end_clean();
|
| 1706 |
return $output;
|
| 1707 |
}
|
| 1708 |
+
// Generate our front end JavaScript , used to submit forms
|
| 1709 |
public function getFrontendFormJavascript($list='')
|
| 1710 |
{
|
| 1711 |
if($list === '') return false;
|
|
|
|
| 1712 |
$js = false;
|
| 1713 |
foreach($list['fields'] as $field) : if($field['active'] == 1) :
|
| 1714 |
+
// Setup JavaScript
|
| 1715 |
if($field['require'] == '1') :
|
| 1716 |
+
$prefix = "ymce";
|
| 1717 |
$js .= "\n";
|
| 1718 |
switch($field['type'])
|
| 1719 |
{
|
| 1720 |
+
// default
|
| 1721 |
default:
|
| 1722 |
$prefixa = "ymce";
|
| 1723 |
+
$js .= "if ($".$prefixa."('#".$field['id']."').val() == '')";
|
| 1724 |
+
$js .= "{
|
| 1725 |
+
msg += '<li>".$field['label']."'+'\\n</li>';
|
| 1726 |
+
err++;
|
| 1727 |
+
$".$prefixa."('#".$field['id']."').addClass('yks_error_field_required shake animated').delay(1200).queue(function(next){
|
| 1728 |
+
$".$prefixa."(this).removeClass('shake animated');
|
| 1729 |
+
next();
|
| 1730 |
+
});
|
| 1731 |
+
} else {
|
| 1732 |
+
$".$prefixa."('#".$field['id']."').removeClass('yks_error_field_required');
|
| 1733 |
+
}";
|
| 1734 |
break;
|
| 1735 |
+
// address
|
| 1736 |
+
case 'address':
|
| 1737 |
+
$js .= "if($".$prefix."('#".$field['id']."').val() == '')
|
| 1738 |
+
{
|
| 1739 |
+
msg += '<li>Street Address'+'\\n</li>';
|
| 1740 |
+
err++;
|
| 1741 |
+
$".$prefixa."('#".$field['id']."').addClass('yks_error_field_required shake animated').delay(800).queue(function(next){
|
| 1742 |
+
$".$prefixa."(this).removeClass('shake animated');
|
| 1743 |
+
next();
|
| 1744 |
+
});
|
| 1745 |
+
} else {
|
| 1746 |
+
$".$prefixa."('#".$field['id']."').removeClass('yks_error_field_required')
|
| 1747 |
+
}
|
| 1748 |
+
if($".$prefix."('#".$field['id']."-city').val() == '')
|
| 1749 |
+
{
|
| 1750 |
+
msg += '<li>City'+'\\n</li>';
|
| 1751 |
+
err++;
|
| 1752 |
+
$".$prefixa."('#".$field['id']."-city').addClass('yks_error_field_required shake animated').delay(800).queue(function(next){
|
| 1753 |
+
$".$prefixa."(this).removeClass('shake animated');
|
| 1754 |
+
next();
|
| 1755 |
+
});
|
| 1756 |
+
} else {
|
| 1757 |
+
$".$prefixa."('#".$field['id']."-city').removeClass('yks_error_field_required')
|
| 1758 |
+
}
|
| 1759 |
+
if($".$prefix."('#".$field['id']."-state').val() == '')
|
| 1760 |
+
{
|
| 1761 |
+
msg += '<li>State'+'\\n</li>';
|
| 1762 |
+
err++;
|
| 1763 |
+
$".$prefixa."('#".$field['id']."-state').addClass('yks_error_field_required shake animated').delay(800).queue(function(next){
|
| 1764 |
+
$".$prefixa."(this).removeClass('shake animated');
|
| 1765 |
+
next();
|
| 1766 |
+
});
|
| 1767 |
+
} else {
|
| 1768 |
+
$".$prefixa."('#".$field['id']."-state').removeClass('yks_error_field_required')
|
| 1769 |
+
}
|
| 1770 |
+
if($".$prefix."('#".$field['id']."-zip').val() == '')
|
| 1771 |
+
{
|
| 1772 |
+
msg += '<li>Zip Code'+'\\n</li>';
|
| 1773 |
+
err++;
|
| 1774 |
+
$".$prefixa."('#".$field['id']."-zip').addClass('yks_error_field_required shake animated').delay(800).queue(function(next){
|
| 1775 |
+
$".$prefixa."(this).removeClass('shake animated');
|
| 1776 |
+
next();
|
| 1777 |
+
});
|
| 1778 |
+
} else {
|
| 1779 |
+
$".$prefixa."('#".$field['id']."-zip').removeClass('yks_error_field_required')
|
| 1780 |
+
}";
|
| 1781 |
break;
|
| 1782 |
+
// radio
|
| 1783 |
case 'radio':
|
| 1784 |
+
$js .= "if($".$prefix."('.{".$field['name']."}:checked').length <= 0)
|
| 1785 |
+
{
|
| 1786 |
+
msg += '* {".$field['label']."}'+'\\n';
|
| 1787 |
+
err++;
|
| 1788 |
+
}";
|
|
|
|
|
|
|
| 1789 |
break;
|
| 1790 |
}
|
| 1791 |
$js .= "\n";
|
| 1793 |
endif; endforeach;
|
| 1794 |
return $js;
|
| 1795 |
}
|
| 1796 |
+
// Generate the form on the front end of the site
|
| 1797 |
+
// this is what the user will see, and interact with
|
| 1798 |
+
public function getFrontendFormDisplay($list='', $submit_text)
|
| 1799 |
{
|
| 1800 |
if($list === '') return false;
|
| 1801 |
ob_start();
|
| 1802 |
switch($this->optionVal['flavor'])
|
| 1803 |
{
|
| 1804 |
default:
|
| 1805 |
+
// Display the form inside of a table
|
| 1806 |
+
// if the user has selected table as their flavor on the settings page
|
| 1807 |
+
// make sure this matches exactly with the div flavor below (currently does not)
|
| 1808 |
case '0':
|
| 1809 |
?>
|
| 1810 |
+
<!-- BEGIN TABLE FLAVOR -->
|
| 1811 |
+
<table class="yks-mailchimpFormTable">
|
|
|
|
| 1812 |
<?php
|
| 1813 |
+
$num = 1;
|
| 1814 |
+
foreach($list['fields'] as $field) : if($field['active'] == 1) :
|
| 1815 |
+
// get field placeholders
|
| 1816 |
+
$form_id = explode( '-', $field['id']);
|
| 1817 |
+
$field_placeholder_ = (isset($field['placeholder-'.$form_id[1].'-'.$num]) ? $field['placeholder-'.$form_id[1].'-'.$num] : '');
|
| 1818 |
+
echo '<input type="hidden" class="'.$field['name'].'_placeholder_value" value="'.$field_placeholder_.'">';
|
| 1819 |
+
?>
|
| 1820 |
+
<!-- javascript to populate the correct form fields, with the specified place-holder value, on the lists page -->
|
| 1821 |
+
<script>
|
| 1822 |
+
jQuery(document).ready(function() {
|
| 1823 |
+
var hiddenInputClass = '<?php echo $field['name']; ?>';
|
| 1824 |
+
// alert('<?php echo $num; ?>');
|
| 1825 |
+
var hiddenInputClassValue = jQuery('.'+hiddenInputClass+'_placeholder_value').val();
|
| 1826 |
+
jQuery('input[name="'+hiddenInputClass+'"]').attr("placeholder", hiddenInputClassValue);
|
| 1827 |
+
});
|
| 1828 |
+
</script>
|
| 1829 |
+
<?php
|
| 1830 |
+
if ($field['require'] == 1) // if the field is required (set in MailChimp), display the red required star
|
| 1831 |
+
{
|
| 1832 |
+
$reqindicator = " <span class='yks-required-label'>*</span>";
|
| 1833 |
+
$reqlabel = " yks-mailchimpFormTableRowLabel-required";
|
| 1834 |
+
}
|
| 1835 |
+
else // else don't
|
| 1836 |
+
{
|
| 1837 |
+
$reqindicator = "";
|
| 1838 |
+
$reqlabel = "";
|
| 1839 |
+
}
|
| 1840 |
+
?>
|
| 1841 |
+
<tr class="yks-mailchimpFormTableRow">
|
| 1842 |
+
<td class="prompt yks-mailchimpFormTableRowLabel"><label class="prompt yks-mailchimpFormTableRowLabel<?php echo $reqlabel; ?>" for="<?php echo $field['id']; ?>"><?php echo $field['label']; ?><?php echo $reqindicator; ?></label>
|
| 1843 |
+
<!-- run our function to generate the input fields for the form, passing in the field -->
|
| 1844 |
+
<?php echo $this->getFrontendFormDisplay_field($field); ?>
|
| 1845 |
+
</td>
|
| 1846 |
+
</tr>
|
| 1847 |
+
<?php
|
| 1848 |
+
$num++;
|
| 1849 |
+
endif; endforeach;
|
| 1850 |
?>
|
| 1851 |
<tr class="yks-mailchimpFormTableRow">
|
| 1852 |
+
<!-- run our function to generate the interest group fields for the form, passing in the form id -->
|
| 1853 |
+
<?php echo $this->getInterestGroups($form_id[1]); ?>
|
| 1854 |
+
<td class="yks-mailchimpFormTableSubmit">
|
| 1855 |
+
<input type="submit" class="ykfmc-submit" id="ykfmc-submit_<?php echo $list['id']; ?>" value="<?php if($submit_text != '') { echo $submit_text; } else { echo 'Sign Up'; } ?>" />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1856 |
</td>
|
| 1857 |
</tr>
|
| 1858 |
+
</table>
|
| 1859 |
+
<?php
|
| 1860 |
+
// Create and store our variables for the redirection
|
| 1861 |
+
$form_id = explode('-', $field['id']); // get the form ID
|
| 1862 |
+
$redirect_value = (isset($field['yks_mailchimp_redirect_'.$form_id[1]]) ? $field['yks_mailchimp_redirect_'.$form_id[1]] : ''); // get the redirect value from the lists page redirect checkbox
|
| 1863 |
+
$redirect_page = (isset($field['page_id_'.$form_id[1]]) ? $field['page_id_'.$form_id[1]] : '') ; // get the redirect page that was set in the pages dropdown on the lists page
|
| 1864 |
+
$site_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; // grab and store the current sites URL
|
| 1865 |
+
$redirect_url = get_permalink($redirect_page); // get the permalink of the page we are going to redirect too
|
| 1866 |
+
// if redirection was set up for this form, print out our javascript to complete the redirect
|
| 1867 |
+
if ($redirect_value == 1) { // only redirect if successful form submission <-----
|
| 1868 |
+
?>
|
| 1869 |
+
<script>
|
| 1870 |
+
jQuery(document).ready(function() {
|
| 1871 |
+
// jquery redirect on form submission
|
| 1872 |
+
var formRedirectPage = '<?php echo $redirect_url ?>';
|
| 1873 |
+
var formID = '<?php echo $form_id[1] ?>';
|
| 1874 |
+
jQuery('#yks-mailchimp-form_0-'+formID).submit(function() {
|
| 1875 |
+
var i = 0;
|
| 1876 |
+
setInterval(function(){
|
| 1877 |
+
if ( jQuery('.yks-success').is(':visible') ) {
|
| 1878 |
+
i++;
|
| 1879 |
+
if ( i == 1 ) {
|
| 1880 |
+
window.location.replace(formRedirectPage);
|
| 1881 |
+
}
|
| 1882 |
+
}
|
| 1883 |
+
}, 1000);
|
| 1884 |
+
});
|
| 1885 |
+
});
|
| 1886 |
+
</script>
|
| 1887 |
+
<?php
|
| 1888 |
+
}
|
| 1889 |
+
break;
|
| 1890 |
|
| 1891 |
+
// END TABLE FLAVOR
|
| 1892 |
+
|
| 1893 |
+
// Display the form inside of a div
|
| 1894 |
+
// if the user has selected div as their flavor on the settings page
|
| 1895 |
case '1':
|
| 1896 |
?>
|
| 1897 |
<div class="yks-mailchimpFormDiv">
|
| 1898 |
+
<?php
|
| 1899 |
+
$num = 1;
|
| 1900 |
+
foreach($list['fields'] as $field) : if($field['active'] == 1) :
|
| 1901 |
+
// get field placeholders
|
| 1902 |
+
$form_id = explode( '-', $field['id']);
|
| 1903 |
+
$field_placeholder_ = (isset($field['placeholder-'.$form_id[1].'-'.$num]) ? $field['placeholder-'.$form_id[1].'-'.$num] : '');
|
| 1904 |
+
echo '<input type="hidden" class="'.$field['name'].'_placeholder_value" value="'.$field_placeholder_.'">';
|
| 1905 |
+
?>
|
| 1906 |
+
<!-- javascript to populate the correct form fields, with the specified place-holder value, on the lists page -->
|
| 1907 |
+
<script>
|
| 1908 |
+
jQuery(document).ready(function() {
|
| 1909 |
+
var hiddenInputClass = '<?php echo $field['name']; ?>';
|
| 1910 |
+
// alert('<?php echo $num; ?>');
|
| 1911 |
+
var hiddenInputClassValue = jQuery('.'+hiddenInputClass+'_placeholder_value').val();
|
| 1912 |
+
jQuery('input[name="'+hiddenInputClass+'"]').attr("placeholder", hiddenInputClassValue);
|
| 1913 |
+
});
|
| 1914 |
+
</script>
|
| 1915 |
<?php
|
| 1916 |
+
if ($field['require'] == 1) // if the field is required (set in MailChimp), display the red required star
|
| 1917 |
{
|
| 1918 |
$reqindicator = " <span class='yks-required-label'>*</span>";
|
| 1919 |
$reqlabel = " yks-mailchimpFormDivRowLabel-required";
|
| 1920 |
}
|
| 1921 |
+
else // else don't
|
| 1922 |
{
|
| 1923 |
$reqindicator = "";
|
| 1924 |
$reqlabel = "";
|
| 1927 |
<div class="yks-mailchimpFormDivRow">
|
| 1928 |
<label class="prompt yks-mailchimpFormDivRowLabel<?php echo $reqlabel; ?>" for="<?php echo $field['id']; ?>"><?php echo $field['label']; ?><?php echo $reqindicator; ?></label>
|
| 1929 |
<div class="yks-mailchimpFormDivRowField">
|
| 1930 |
+
<!-- run our function to generate the input fields for the form, passing in the field -->
|
| 1931 |
<?php echo $this->getFrontendFormDisplay_field($field); ?>
|
| 1932 |
</div>
|
| 1933 |
+
</div>
|
| 1934 |
+
<?php
|
| 1935 |
+
$num++;
|
| 1936 |
+
endif; endforeach;
|
| 1937 |
+
?>
|
| 1938 |
<div class="yks-mailchimpFormDivRow">
|
| 1939 |
+
<!-- run our function to generate the interest group fields for the form, passing in the form id -->
|
| 1940 |
+
<?php $this->getInterestGroups($form_id[1]); ?>
|
| 1941 |
<div class="yks-mailchimpFormDivSubmit">
|
| 1942 |
+
<p><input type="submit" class="ykfmc-submit" id="ykfmc-submit_<?php echo $list['id']; ?>" value="<?php if($submit_text != '') { echo $submit_text; } else { echo 'Sign Up'; } ?>" /></p>
|
| 1943 |
</div>
|
| 1944 |
</div>
|
| 1945 |
</div>
|
| 1946 |
+
<?php
|
| 1947 |
+
// Create and store our variables for the redirection
|
| 1948 |
+
$form_id = explode('-', $field['id']); // get the form ID
|
| 1949 |
+
$redirect_value = (isset($field['yks_mailchimp_redirect_'.$form_id[1]]) ? $field['yks_mailchimp_redirect_'.$form_id[1]] : ''); // get the redirect value from the lists page redirect checkbox
|
| 1950 |
+
$redirect_page = (isset($field['page_id_'.$form_id[1]]) ? $field['page_id_'.$form_id[1]] : '') ; // get the redirect page that was set in the pages dropdown on the lists page
|
| 1951 |
+
$site_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; // grab and store the current sites URL
|
| 1952 |
+
$redirect_url = get_permalink($redirect_page); // get the permalink of the page we are going to redirect too
|
| 1953 |
+
// if redirection was set up for this form, print out our javascript to complete the redirect
|
| 1954 |
+
if ($redirect_value == 1) {
|
| 1955 |
+
?>
|
| 1956 |
+
<script>
|
| 1957 |
+
jQuery(document).ready(function() {
|
| 1958 |
+
// jquery redirect on form submission
|
| 1959 |
+
var formRedirectPage = '<?php echo $redirect_url ?>';
|
| 1960 |
+
var formID = '<?php echo $form_id[1] ?>';
|
| 1961 |
+
jQuery('#yks-mailchimp-form_0-'+formID).submit(function() {
|
| 1962 |
+
var i = 0;
|
| 1963 |
+
setInterval(function(){
|
| 1964 |
+
if ( jQuery('.yks-success').is(':visible') ) {
|
| 1965 |
+
i++;
|
| 1966 |
+
if ( i == 1 ) {
|
| 1967 |
+
window.location.replace(formRedirectPage);
|
| 1968 |
+
}
|
| 1969 |
+
}
|
| 1970 |
+
}, 1000);
|
| 1971 |
+
});
|
| 1972 |
+
});
|
| 1973 |
+
</script>
|
| 1974 |
+
<?php
|
| 1975 |
+
}
|
| 1976 |
break;
|
| 1977 |
}
|
| 1978 |
$output = ob_get_contents();
|
| 1980 |
return $output;
|
| 1981 |
}
|
| 1982 |
|
| 1983 |
+
// Generate the input fields for the form on the front end of the site
|
| 1984 |
+
// based on the $field['type'] that is returned from MailChimp
|
| 1985 |
private function getFrontendFormDisplay_field($field=false)
|
| 1986 |
{
|
| 1987 |
if($field === false) return false;
|
| 1988 |
$o = '';
|
| 1989 |
+
$num = 1;
|
| 1990 |
+
$fieldID = $field['id'];
|
| 1991 |
+
|
| 1992 |
switch($field['type'])
|
| 1993 |
{
|
| 1994 |
default:
|
| 1999 |
case 'phone':
|
| 2000 |
case 'website':
|
| 2001 |
case 'imageurl':
|
| 2002 |
+
// custom placeholder value goes here
|
| 2003 |
$o .= '<input type="text" name="'.$field['name'].'" class="'.$field['name'].($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'" value="" />';
|
| 2004 |
+
$num++;
|
| 2005 |
break;
|
| 2006 |
case 'dropdown':
|
| 2007 |
$o .= '<select name="'.$field['name'].'" class="'.$field['name'].($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'">';
|
| 2012 |
break;
|
| 2013 |
case 'address':
|
| 2014 |
|
| 2015 |
+
$o .= '<input type="text" name="'.$field['name'].'" class="'.$field['name'].($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'" value="" /><span class="yks-mailchimp-form-tooltip">Street Address</span>';
|
| 2016 |
+
$o .= '<input type="text" name="'.$field['name'].'-add2" class="'.$field['name'].'-add2'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-add2" value="" /><span class="yks-mailchimp-form-tooltip">Apt/Suite</span>';
|
| 2017 |
+
$o .= '<input type="text" name="'.$field['name'].'-city" class="'.$field['name'].'-city'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-city" value="" /><span class="yks-mailchimp-form-tooltip">City</span>';
|
| 2018 |
+
$o .= '<input type="text" name="'.$field['name'].'-state" class="'.$field['name'].'-state'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-state" value="" /><span class="yks-mailchimp-form-tooltip">State</span>';
|
| 2019 |
$o .= '<input type="text" name="'.$field['name'].'-zip" class="'.$field['name'].'-zip'.($field['require'] == 1 ? ' yks-require' : '').'" id="'.$field['id'].'-zip" value="" /><span class="yks-mailchimp-form-tooltip">Zip</span>';
|
| 2020 |
break;
|
| 2021 |
case 'radio':
|
| 2035 |
}
|
| 2036 |
|
| 2037 |
|
|
|
|
|
|
|
|
|
|
| 2038 |
/***** DROPDOWNS
|
| 2039 |
****************************************************************************************************/
|
| 2040 |
+
// not sure we need these any more
|
| 2041 |
+
// generate some dropdowns (not sure where)
|
| 2042 |
public function generateDropdown($name, $html='', $sel='', $type=false, $zopt=false)
|
| 2043 |
{
|
| 2044 |
switch($type)
|
| 2077 |
}
|
| 2078 |
|
| 2079 |
|
|
|
|
|
|
|
|
|
|
| 2080 |
/***** UPDATES
|
| 2081 |
****************************************************************************************************/
|
| 2082 |
public function runUpdateTasks()
|
| 2193 |
$this->optionVal['version'] = '2.2.1';
|
| 2194 |
return true;
|
| 2195 |
}
|
| 2196 |
+
|
| 2197 |
+
|
| 2198 |
+
//
|
| 2199 |
+
// Adding Opt-In Checkbox to comment forms
|
| 2200 |
+
// To Do : Add setting to show/hide checkbox on frontend
|
| 2201 |
+
//
|
| 2202 |
+
// display a checkbox in the comment form
|
| 2203 |
+
// submit the user to mailchimp on a successful comment submission
|
| 2204 |
+
function ymc_add_meta_settings($comment_id) {
|
| 2205 |
+
add_comment_meta(
|
| 2206 |
+
$comment_id,
|
| 2207 |
+
'mailchimp_subscribe',
|
| 2208 |
+
$_POST['mailchimp_subscribe'],
|
| 2209 |
+
true
|
| 2210 |
+
);
|
| 2211 |
+
}
|
| 2212 |
+
|
| 2213 |
+
function add_after_comment_form($arg) {
|
| 2214 |
+
$custom_text = trim($this->optionVal['yks-mailchimp-optin-checkbox-text']);
|
| 2215 |
+
if ( $custom_text == '' ) {
|
| 2216 |
+
$custom_text = __("Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter", "gettext");
|
| 2217 |
+
} else {
|
| 2218 |
+
$custom_text = $custom_text;
|
| 2219 |
+
}
|
| 2220 |
|
| 2221 |
+
$arg['comment_notes_after'] = '<label for="yikes_mailchimp_comment_subscribe">
|
| 2222 |
+
<input type="checkbox" name="mailchimp_subscribe" id="yikes_mailchimp_comment_subscribe" checked="checked" />
|
| 2223 |
+
'.$custom_text.'
|
| 2224 |
+
</label>';
|
| 2225 |
+
return $arg;
|
| 2226 |
+
}
|
| 2227 |
+
|
| 2228 |
+
// Replacing 'MAILCHIMP-REPLACE-THIS-TEXT' text with sitename
|
| 2229 |
+
function yikes_mc_replace_this_text( $text ) {
|
| 2230 |
+
$newtext = get_bloginfo('name');
|
| 2231 |
+
$text = str_replace( 'MAILCHIMP-REPLACE-THIS-TEXT', $newtext, $text );
|
| 2232 |
+
return $text;
|
| 2233 |
+
}
|
| 2234 |
+
|
| 2235 |
|
| 2236 |
+
function ymc_subscription_add( $cid, $comment='' ) {
|
| 2237 |
+
$cid = (int) $cid;
|
| 2238 |
+
$yikes_api_key = $this->optionVal['api-key'];
|
| 2239 |
+
$exploded_api_key = explode('-',$yikes_api_key);
|
| 2240 |
+
$yikes_data_center = $exploded_api_key[1];
|
| 2241 |
+
|
| 2242 |
+
if ( !is_object($comment) )
|
| 2243 |
+
$comment = get_comment($cid);
|
| 2244 |
+
|
| 2245 |
+
if ( $comment->comment_karma == 0 ) {
|
| 2246 |
+
$subscribe = get_comment_meta($cid, 'mailchimp_subscribe', true);
|
| 2247 |
+
if ( $subscribe == 'on' ) {
|
| 2248 |
+
global $current_user;
|
| 2249 |
+
get_currentuserinfo();
|
| 2250 |
+
$commenter_first_name = trim($current_user->user_firstname);
|
| 2251 |
+
$commenter_last_name = trim($current_user->user_lastname);
|
| 2252 |
+
|
| 2253 |
+
if( isset( $commenter_first_name ) && $commenter_first_name != '' ) {
|
| 2254 |
+
$commenter_first_name = $commenter_first_name; // use the users first name set in the profile
|
| 2255 |
+
} else {
|
| 2256 |
+
$commenter_first_name = $comment->comment_author; // if no first name is set in the user profile, we will use the account name
|
| 2257 |
+
}
|
| 2258 |
+
|
| 2259 |
+
if( isset( $commenter_last_name ) && $commenter_last_name != '' ) {
|
| 2260 |
+
$commenter_last_name = $commenter_last_name; // use the users last name set in the profile
|
| 2261 |
+
} else {
|
| 2262 |
+
$commenter_last_name = 'n/a'; // if the user has not set a last name in their profile, we set it to n/a
|
| 2263 |
+
}
|
| 2264 |
+
|
| 2265 |
+
// store our API key
|
| 2266 |
+
// on the settings page, if they have chosen to display the checkbox
|
| 2267 |
+
$api = new wpyksMCAPI($this->optionVal['api-key']);
|
| 2268 |
+
|
| 2269 |
+
$apikey = $yikes_api_key;
|
| 2270 |
+
$listid = $this->optionVal['yks-mailchimp-optIn-default-list']; // Need to set up a default list to subscribe all users to
|
| 2271 |
+
$endpoint = 'https://api.mailchimp.com';
|
| 2272 |
+
$optin = $this->optionVal['optin'];
|
| 2273 |
+
|
| 2274 |
+
// try adding subscriber, catch any error thrown
|
| 2275 |
+
try {
|
| 2276 |
+
$retval = $api->call('lists/subscribe', array(
|
| 2277 |
+
'id' => $listid, // form id
|
| 2278 |
+
'email' => array(
|
| 2279 |
+
'email' => $comment->comment_author_email
|
| 2280 |
+
),
|
| 2281 |
+
'merge_vars' => array(
|
| 2282 |
+
'FNAME' => $commenter_first_name,
|
| 2283 |
+
'LNAME' => $commenter_last_name
|
| 2284 |
+
),
|
| 2285 |
+
'double_optin' => $optin, // double optin value (retreived from the settings page)
|
| 2286 |
+
'update_existing' => true // used to avoid the error thrown when user is already subscribed
|
| 2287 |
+
));
|
| 2288 |
+
return "done";
|
| 2289 |
+
} catch( Exception $e ) { // catch any errors returned from MailChimp
|
| 2290 |
+
$error_message = $e->getMessage();
|
| 2291 |
+
if (strpos($error_message,'Click here to update your profile.') !== false) {
|
| 2292 |
+
$errorMessage = str_replace('Click here to update your profile.', '', $e->getMessage());
|
| 2293 |
+
$errorMessage_explode = explode('to list', $errorMessage);
|
| 2294 |
+
echo $errorMessage_explode[0].'.';
|
| 2295 |
+
die();
|
| 2296 |
+
}
|
| 2297 |
+
if (strpos($error_message,'Invalid') !== false) {
|
| 2298 |
+
$display_errorMessage = str_replace('Invalid MailChimp List ID:', "Oops! The Webmaster hasn't set up the default MailChimp list to subscribe you too. Please contact them and let them know of this error. In the meantime, un-check the subscription checkbox in the comment form when submitting comments.", $error_message);
|
| 2299 |
+
echo $display_errorMessage;
|
| 2300 |
+
die();
|
| 2301 |
+
} else {
|
| 2302 |
+
// str_replace('Invalid MailChimp List ID: .', 'The Webmaster hasn\t set up the default MailChimp list to subscribe you too. Please contact them and let them know of this error. In the meantime, un-check the subscription checkbox in the comment form when submitting comments.', $e->getMessage());
|
| 2303 |
+
echo $errorMessage;
|
| 2304 |
+
die();
|
| 2305 |
+
}
|
| 2306 |
+
}
|
| 2307 |
+
|
| 2308 |
+
|
| 2309 |
+
}
|
| 2310 |
+
}
|
| 2311 |
+
}
|
| 2312 |
+
|
| 2313 |
+
// add our actions on initialize
|
| 2314 |
+
// inside of __construct()
|
| 2315 |
+
public function ykes_mc_apply_filters() {
|
| 2316 |
+
// if the optin checkbox setting is set to show
|
| 2317 |
+
// we wiill display the checkbox on the front end
|
| 2318 |
+
if ( $this->optionVal['yks-mailchimp-optIn-checkbox'] == 1 ) {
|
| 2319 |
+
add_action('comment_post', array(&$this, 'ymc_add_meta_settings'), 10, 2);
|
| 2320 |
+
add_action('comment_approved_', array(&$this, 'ymc_subscription_add'), 60, 2);
|
| 2321 |
+
add_action('comment_post', array(&$this, 'ymc_subscription_add'));
|
| 2322 |
+
add_filter('gettext', array(&$this, 'yikes_mc_replace_this_text'));
|
| 2323 |
+
add_filter('comment_form_defaults', array(&$this, 'add_after_comment_form'));
|
| 2324 |
+
}
|
| 2325 |
+
}
|
| 2326 |
+
|
| 2327 |
+
|
| 2328 |
+
// Check if cURL is enabled at the server level
|
| 2329 |
+
// used on the options.php page
|
| 2330 |
+
public function yikes_curl_check() {
|
| 2331 |
+
if (in_array ('curl', get_loaded_extensions())) {
|
| 2332 |
+
return true;
|
| 2333 |
+
}
|
| 2334 |
+
else {
|
| 2335 |
+
return false;
|
| 2336 |
+
}
|
| 2337 |
+
}
|
| 2338 |
+
|
| 2339 |
+
// check if php.ini exists in the site root
|
| 2340 |
+
function yks_check_if_php_ini_exists() {
|
| 2341 |
+
|
| 2342 |
+
// get php ini path from
|
| 2343 |
+
// the actively loaded php ini file
|
| 2344 |
+
$wordpress_site_root = str_replace('php.ini','',php_ini_loaded_file());
|
| 2345 |
+
// file name
|
| 2346 |
+
$filename = '/php.ini';
|
| 2347 |
+
|
| 2348 |
+
$php_ini_location = php_ini_loaded_file();
|
| 2349 |
+
|
| 2350 |
+
if (file_exists($wordpress_site_root.$filename)) {
|
| 2351 |
+
echo "<span class='yks_mc_no_phpini_success'>Good News </span>: We have located your <strong>".str_replace('/','',$filename)."</strong> file inside the directory <strong>".$wordpress_site_root."</strong>";
|
| 2352 |
+
$filename = '/php.ini';
|
| 2353 |
+
} else {
|
| 2354 |
+
echo "<span class='yks_mc_no_phpini_alert'>Alert </span>: No <strong>".str_replace('/','',$filename)."</strong> was located in <strong>".$wordpress_site_root.'/'."</strong>.";
|
| 2355 |
+
$filename = '/php.ini';
|
| 2356 |
+
}
|
| 2357 |
|
| 2358 |
|
| 2359 |
+
}
|
| 2360 |
|
| 2361 |
+
// display the php.ini location to the user
|
| 2362 |
+
function yks_display_php_ini_location() {
|
| 2363 |
+
echo php_ini_loaded_file();
|
| 2364 |
+
}
|
| 2365 |
+
|
| 2366 |
+
|
| 2367 |
+
//
|
| 2368 |
+
// Add TinyMCE Buttons to the TinyMCE Editor
|
| 2369 |
+
// We'll use the button to place form shortcodes!
|
| 2370 |
+
// NOTE: This only runs on 3.9 or greater -> due to tinyMCE 4.0
|
| 2371 |
+
//
|
| 2372 |
+
// Custom TinyMCE Button to insert form shortcodes onto pages and posts
|
| 2373 |
+
function yks_mc_add_tinyMCE() {
|
| 2374 |
+
|
| 2375 |
+
global $typenow;
|
| 2376 |
+
// only on Post Type: post and page
|
| 2377 |
+
if( ! in_array( $typenow, array( 'post', 'page' ) ) )
|
| 2378 |
+
return ;
|
| 2379 |
+
|
| 2380 |
+
}
|
| 2381 |
+
|
| 2382 |
+
// inlcude the js for tinymce
|
| 2383 |
+
function yks_mc_add_tinymce_plugin( $plugin_array ) {
|
| 2384 |
+
|
| 2385 |
+
$plugin_array['yks_mc_tinymce_button'] = plugins_url( '/../js/yks_mc_tinymce_button.js', __FILE__ );
|
| 2386 |
+
// Print all plugin js path
|
| 2387 |
+
// var_dump( $plugin_array );
|
| 2388 |
+
return $plugin_array;
|
| 2389 |
+
|
| 2390 |
+
}
|
| 2391 |
+
|
| 2392 |
+
// Add the button key for address via JS
|
| 2393 |
+
function yks_mc_add_tinymce_button( $buttons ) {
|
| 2394 |
+
|
| 2395 |
+
array_push( $buttons, 'yks_mc_tinymce_button_key' );
|
| 2396 |
+
// Print all buttons
|
| 2397 |
+
// var_dump( $buttons );
|
| 2398 |
+
return $buttons;
|
| 2399 |
+
|
| 2400 |
+
}
|
| 2401 |
+
|
| 2402 |
+
/**
|
| 2403 |
+
* Localize Script
|
| 2404 |
+
* Pass our imported list data, to the JS file
|
| 2405 |
+
* to build the dropdown list in the modal
|
| 2406 |
+
*/
|
| 2407 |
+
function yks_mc_js_admin_head()
|
| 2408 |
+
{
|
| 2409 |
+
|
| 2410 |
+
$yks_mc_imported_list_data = $this->optionVal['lists'];
|
| 2411 |
+
// our list data array, we will pass to the js file
|
| 2412 |
+
$list_value_array = array();
|
| 2413 |
+
$i = 0;
|
| 2414 |
+
// loop over the list data
|
| 2415 |
+
foreach ( $yks_mc_imported_list_data as $single_list ) {
|
| 2416 |
+
// store it temporarily and push it back to our array
|
| 2417 |
+
$list_value_array[$i]['text'] = $single_list['name'];
|
| 2418 |
+
$list_value_array[$i]['value'] = $single_list['id'];
|
| 2419 |
+
$i++;
|
| 2420 |
+
}
|
| 2421 |
+
?>
|
| 2422 |
+
<!-- TinyMCE Shortcode Plugin -->
|
| 2423 |
+
<script type='text/javascript'>
|
| 2424 |
+
var yks_mc_lists_data = {
|
| 2425 |
+
'lists': <?php echo json_encode($list_value_array); ?>
|
| 2426 |
+
};
|
| 2427 |
+
</script>
|
| 2428 |
+
<!-- TinyMCE Shortcode Plugin -->
|
| 2429 |
+
<?php
|
| 2430 |
+
|
| 2431 |
+
}
|
| 2432 |
+
|
| 2433 |
+
|
| 2434 |
+
/* Checking if the user is on localhost */
|
| 2435 |
+
/* If they are we want to display a warning about SSL on localhost */
|
| 2436 |
+
function yks_mc_is_user_localhost() {
|
| 2437 |
+
$whitelist = array( '127.0.0.1', '::1' );
|
| 2438 |
+
if( in_array( $_SERVER['REMOTE_ADDR'], $whitelist) )
|
| 2439 |
+
return true;
|
| 2440 |
+
}
|
| 2441 |
+
|
| 2442 |
+
/*******************************************************/
|
| 2443 |
+
/* Helper Functions */
|
| 2444 |
+
/******************************************************/
|
| 2445 |
+
/*
|
| 2446 |
+
*
|
| 2447 |
+
* Helper function when testing user submitted data
|
| 2448 |
+
* to be used inside of the yikes_mc_get_form_data filter
|
| 2449 |
+
*
|
| 2450 |
+
*/
|
| 2451 |
+
function yks_mc_print_user_data( $form_ID, $merge_variables ) {
|
| 2452 |
+
|
| 2453 |
+
echo '<h3>The Data Returned From This Form</h3>';
|
| 2454 |
+
|
| 2455 |
+
echo '<strong>MailChimp List ID : </strong> '.$form_ID.' <br />';
|
| 2456 |
+
|
| 2457 |
+
echo '<hr />';
|
| 2458 |
+
|
| 2459 |
+
if ( isset( $merge_variables['FNAME'] ) && $merge_variables['FNAME'] != '' ) {
|
| 2460 |
+
echo '<strong>User\'s Name : </strong> '.$merge_variables['FNAME'].' <br />';
|
| 2461 |
+
|
| 2462 |
+
echo '<hr />';
|
| 2463 |
+
|
| 2464 |
+
}
|
| 2465 |
+
|
| 2466 |
+
if ( isset( $merge_variables['LNAME'] ) && $merge_variables['LNAME'] != '' ) {
|
| 2467 |
+
echo '<strong>User\'s Name : </strong> '.$merge_variables['LNAME'].' <br />';
|
| 2468 |
+
|
| 2469 |
+
echo '<hr />';
|
| 2470 |
+
|
| 2471 |
+
}
|
| 2472 |
+
|
| 2473 |
+
echo '<strong>Users Email : </strong>'.$merge_variables['EMAIL'].' <br />';
|
| 2474 |
+
|
| 2475 |
+
if ( isset( $merge_variables['GROUPINGS'] ) ) {
|
| 2476 |
+
|
| 2477 |
+
echo '<hr />';
|
| 2478 |
+
|
| 2479 |
+
echo '<strong>Interest Group Data : </strong><br /><br />';
|
| 2480 |
+
|
| 2481 |
+
foreach ( $merge_variables['GROUPINGS'] as $grouping_variable ) {
|
| 2482 |
+
|
| 2483 |
+
echo '<ol style="list-style:none;">Interest Group : '.$grouping_variable['id'].'</ol>';
|
| 2484 |
+
|
| 2485 |
+
if ( !isset($grouping_variable['groups'][0]) || $grouping_variable['groups'][0] == '' ) {
|
| 2486 |
+
|
| 2487 |
+
echo '<li style="list-style:none;">No interest groups selected</li><br />';
|
| 2488 |
+
|
| 2489 |
+
} else {
|
| 2490 |
+
|
| 2491 |
+
// loop over interest groups to build array
|
| 2492 |
+
$interest_group_array = array();
|
| 2493 |
+
foreach ( $grouping_variable['groups'] as $interest_group ) {
|
| 2494 |
+
array_push( $interest_group_array , $interest_group );
|
| 2495 |
+
}
|
| 2496 |
+
|
| 2497 |
+
if ( count($interest_group_array) > 0 ) {
|
| 2498 |
+
foreach ( $interest_group_array as $interest_group_label ) {
|
| 2499 |
+
echo '<li style="list-style:none;">'.$interest_group_label.'</li>';
|
| 2500 |
+
}
|
| 2501 |
+
echo '<br />';
|
| 2502 |
+
}
|
| 2503 |
+
|
| 2504 |
+
}
|
| 2505 |
+
}
|
| 2506 |
+
|
| 2507 |
+
}
|
| 2508 |
+
|
| 2509 |
+
echo '<em style="color:rgb(238, 93, 93);">Form data has not been sent to MailChimp</em><br />';
|
| 2510 |
+
|
| 2511 |
+
die(); // die to prevent data being sent over to MailChimp
|
| 2512 |
+
|
| 2513 |
+
}
|
| 2514 |
+
/*
|
| 2515 |
+
*
|
| 2516 |
+
* Helper function when testing user submitted data
|
| 2517 |
+
* print_r($merge_variables) is returned
|
| 2518 |
+
*
|
| 2519 |
+
*/
|
| 2520 |
+
function yks_mc_dump_user_data( $form_ID, $merge_variables ) {
|
| 2521 |
+
echo '<strong>Form ID :</strong> '.$form_ID. '<br />';
|
| 2522 |
+
echo '<strong>Merge Variables :</strong><br />';
|
| 2523 |
+
print_r($merge_variables);
|
| 2524 |
+
echo '<br /><em style="color:rgb(238, 93, 93);">Form data has not been sent to MailChimp</em>';
|
| 2525 |
+
die(); // die to prevent data being sent over to MailChimp
|
| 2526 |
+
}
|
| 2527 |
+
|
| 2528 |
}
|
| 2529 |
}
|
| 2530 |
?>
|
classes/set_language.php
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
// create our language variable dependent on what is set in MailChimp
|
| 4 |
+
if(!empty($subscriber_data['language'])) {
|
| 5 |
+
$subscriber_data_language = $subscriber_data['language'];
|
| 6 |
+
if ( $subscriber_data_language == 'en' ) {
|
| 7 |
+
$subscriber_data_language = 'English';
|
| 8 |
+
} elseif ( $subscriber_data_language == 'ar' ) {
|
| 9 |
+
$subscriber_data_language = 'Arabic';
|
| 10 |
+
} elseif ( $subscriber_data_language == 'af' ) {
|
| 11 |
+
$subscriber_data_language = 'Afrikaans';
|
| 12 |
+
} elseif ( $subscriber_data_language == 'be' ) {
|
| 13 |
+
$subscriber_data_language = 'Belarusian';
|
| 14 |
+
} elseif ( $subscriber_data_language == 'bg' ) {
|
| 15 |
+
$subscriber_data_language = 'Bulgarian';
|
| 16 |
+
} elseif ( $subscriber_data_language == 'ca' ) {
|
| 17 |
+
$subscriber_data_language = 'Catalan';
|
| 18 |
+
} elseif ( $subscriber_data_language == 'zh' ) {
|
| 19 |
+
$subscriber_data_language = 'Chinese';
|
| 20 |
+
} elseif ( $subscriber_data_language == 'hr' ) {
|
| 21 |
+
$subscriber_data_language = 'Croatian';
|
| 22 |
+
} elseif ( $subscriber_data_language == 'cs' ) {
|
| 23 |
+
$subscriber_data_language = 'Czech';
|
| 24 |
+
} elseif ( $subscriber_data_language == 'da' ) {
|
| 25 |
+
$subscriber_data_language = 'Danish';
|
| 26 |
+
} elseif ( $subscriber_data_language == 'nl' ) {
|
| 27 |
+
$subscriber_data_language = 'Dutch';
|
| 28 |
+
} elseif ( $subscriber_data_language == 'et' ) {
|
| 29 |
+
$subscriber_data_language = 'Estonian';
|
| 30 |
+
} elseif ( $subscriber_data_language == 'fa' ) {
|
| 31 |
+
$subscriber_data_language = 'Farsi';
|
| 32 |
+
} elseif ( $subscriber_data_language == 'fi' ) {
|
| 33 |
+
$subscriber_data_language = 'Finnish';
|
| 34 |
+
} elseif ( $subscriber_data_language == 'fr' ) {
|
| 35 |
+
$subscriber_data_language = 'French';
|
| 36 |
+
} elseif ( $subscriber_data_language == 'fr_CA' ) {
|
| 37 |
+
$subscriber_data_language = 'French (Canada)';
|
| 38 |
+
} elseif ( $subscriber_data_language == 'de' ) {
|
| 39 |
+
$subscriber_data_language = 'German';
|
| 40 |
+
} elseif ( $subscriber_data_language == 'el' ) {
|
| 41 |
+
$subscriber_data_language = 'Greek';
|
| 42 |
+
} elseif ( $subscriber_data_language == 'he' ) {
|
| 43 |
+
$subscriber_data_language = 'Hebrew';
|
| 44 |
+
} elseif ( $subscriber_data_language == 'hi' ) {
|
| 45 |
+
$subscriber_data_language = 'Hindi';
|
| 46 |
+
} elseif ( $subscriber_data_language == 'hu' ) {
|
| 47 |
+
$subscriber_data_language = 'Hungarian';
|
| 48 |
+
} elseif ( $subscriber_data_language == 'is' ) {
|
| 49 |
+
$subscriber_data_language = 'Icelandic';
|
| 50 |
+
} elseif ( $subscriber_data_language == 'id' ) {
|
| 51 |
+
$subscriber_data_language = 'Indonesian';
|
| 52 |
+
} elseif ( $subscriber_data_language == 'ga' ) {
|
| 53 |
+
$subscriber_data_language = 'Irish';
|
| 54 |
+
} elseif ( $subscriber_data_language == 'it' ) {
|
| 55 |
+
$subscriber_data_language = 'Italian';
|
| 56 |
+
} elseif ( $subscriber_data_language == 'ja' ) {
|
| 57 |
+
$subscriber_data_language = 'Japanese';
|
| 58 |
+
} elseif ( $subscriber_data_language == 'km' ) {
|
| 59 |
+
$subscriber_data_language = 'Khmer';
|
| 60 |
+
} elseif ( $subscriber_data_language == 'ko' ) {
|
| 61 |
+
$subscriber_data_language = 'Korean';
|
| 62 |
+
} elseif ( $subscriber_data_language == 'lv' ) {
|
| 63 |
+
$subscriber_data_language = 'Latvian';
|
| 64 |
+
} elseif ( $subscriber_data_language == 'lt' ) {
|
| 65 |
+
$subscriber_data_language = 'Lithuanian';
|
| 66 |
+
} elseif ( $subscriber_data_language == 'mt' ) {
|
| 67 |
+
$subscriber_data_language = 'Maltese';
|
| 68 |
+
} elseif ( $subscriber_data_language == 'ms' ) {
|
| 69 |
+
$subscriber_data_language = 'Malay';
|
| 70 |
+
} elseif ( $subscriber_data_language == 'mk' ) {
|
| 71 |
+
$subscriber_data_language = 'Macedonian';
|
| 72 |
+
} elseif ( $subscriber_data_language == 'no' ) {
|
| 73 |
+
$subscriber_data_language = 'Norwegian';
|
| 74 |
+
} elseif ( $subscriber_data_language == 'pl' ) {
|
| 75 |
+
$subscriber_data_language = 'Polish';
|
| 76 |
+
} elseif ( $subscriber_data_language == 'pt' ) {
|
| 77 |
+
$subscriber_data_language = 'Portuguese (Brazil)';
|
| 78 |
+
} elseif ( $subscriber_data_language == 'pt_PT' ) {
|
| 79 |
+
$subscriber_data_language = 'Portuguese (Portugal)';
|
| 80 |
+
} elseif ( $subscriber_data_language == 'ro' ) {
|
| 81 |
+
$subscriber_data_language = 'Romanian';
|
| 82 |
+
} elseif ( $subscriber_data_language == 'ru' ) {
|
| 83 |
+
$subscriber_data_language = 'Russian';
|
| 84 |
+
} elseif ( $subscriber_data_language == 'sr' ) {
|
| 85 |
+
$subscriber_data_language = 'Serbian';
|
| 86 |
+
} elseif ( $subscriber_data_language == 'sl' ) {
|
| 87 |
+
$subscriber_data_language = 'Slovak';
|
| 88 |
+
} elseif ( $subscriber_data_language == 'sl' ) {
|
| 89 |
+
$subscriber_data_language = 'Slovenian';
|
| 90 |
+
} elseif ( $subscriber_data_language == 'es' ) {
|
| 91 |
+
$subscriber_data_language = 'Spanish (Mexico)';
|
| 92 |
+
} elseif ( $subscriber_data_language == 'es_ES' ) {
|
| 93 |
+
$subscriber_data_language = 'Spanish (Spain)';
|
| 94 |
+
} elseif ( $subscriber_data_language == 'sw' ) {
|
| 95 |
+
$subscriber_data_language = 'Swahili';
|
| 96 |
+
} elseif ( $subscriber_data_language == 'sv' ) {
|
| 97 |
+
$subscriber_data_language = 'Swedish';
|
| 98 |
+
} elseif ( $subscriber_data_language == 'ta' ) {
|
| 99 |
+
$subscriber_data_language = 'Tamil';
|
| 100 |
+
} elseif ( $subscriber_data_language == 'th' ) {
|
| 101 |
+
$subscriber_data_language = 'Thai';
|
| 102 |
+
} elseif ( $subscriber_data_language == 'tr' ) {
|
| 103 |
+
$subscriber_data_language = 'Turkish';
|
| 104 |
+
} elseif ( $subscriber_data_language == 'uk' ) {
|
| 105 |
+
$subscriber_data_language = 'Ukrainian';
|
| 106 |
+
} elseif ( $subscriber_data_language == 'vi' ) {
|
| 107 |
+
$subscriber_data_language = 'Vietnamese';
|
| 108 |
+
}
|
| 109 |
+
} else {
|
| 110 |
+
$subscriber_data_language = 'Not Set.';
|
| 111 |
+
}
|
css/animate.css
ADDED
|
@@ -0,0 +1,3303 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
@charset "UTF-8";
|
| 2 |
+
|
| 3 |
+
/*!
|
| 4 |
+
Animate.css - http://daneden.me/animate
|
| 5 |
+
Licensed under the MIT license
|
| 6 |
+
|
| 7 |
+
Copyright (c) 2013 Daniel Eden
|
| 8 |
+
|
| 9 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
| 10 |
+
|
| 11 |
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
| 12 |
+
|
| 13 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
| 14 |
+
*/
|
| 15 |
+
|
| 16 |
+
.animated {
|
| 17 |
+
-webkit-animation-duration: 1s;
|
| 18 |
+
animation-duration: 1s;
|
| 19 |
+
-webkit-animation-fill-mode: both;
|
| 20 |
+
animation-fill-mode: both;
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
.animated.infinite {
|
| 24 |
+
-webkit-animation-iteration-count: infinite;
|
| 25 |
+
animation-iteration-count: infinite;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
.animated.hinge {
|
| 29 |
+
-webkit-animation-duration: 2s;
|
| 30 |
+
animation-duration: 2s;
|
| 31 |
+
}
|
| 32 |
+
|
| 33 |
+
@-webkit-keyframes bounce {
|
| 34 |
+
0%, 20%, 50%, 80%, 100% {
|
| 35 |
+
-webkit-transform: translateY(0);
|
| 36 |
+
transform: translateY(0);
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
40% {
|
| 40 |
+
-webkit-transform: translateY(-30px);
|
| 41 |
+
transform: translateY(-30px);
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
60% {
|
| 45 |
+
-webkit-transform: translateY(-15px);
|
| 46 |
+
transform: translateY(-15px);
|
| 47 |
+
}
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
@keyframes bounce {
|
| 51 |
+
0%, 20%, 50%, 80%, 100% {
|
| 52 |
+
-webkit-transform: translateY(0);
|
| 53 |
+
-ms-transform: translateY(0);
|
| 54 |
+
transform: translateY(0);
|
| 55 |
+
}
|
| 56 |
+
|
| 57 |
+
40% {
|
| 58 |
+
-webkit-transform: translateY(-30px);
|
| 59 |
+
-ms-transform: translateY(-30px);
|
| 60 |
+
transform: translateY(-30px);
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
60% {
|
| 64 |
+
-webkit-transform: translateY(-15px);
|
| 65 |
+
-ms-transform: translateY(-15px);
|
| 66 |
+
transform: translateY(-15px);
|
| 67 |
+
}
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
.bounce {
|
| 71 |
+
-webkit-animation-name: bounce;
|
| 72 |
+
animation-name: bounce;
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
@-webkit-keyframes flash {
|
| 76 |
+
0%, 50%, 100% {
|
| 77 |
+
opacity: 1;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
25%, 75% {
|
| 81 |
+
opacity: 0;
|
| 82 |
+
}
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
@keyframes flash {
|
| 86 |
+
0%, 50%, 100% {
|
| 87 |
+
opacity: 1;
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
25%, 75% {
|
| 91 |
+
opacity: 0;
|
| 92 |
+
}
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
.flash {
|
| 96 |
+
-webkit-animation-name: flash;
|
| 97 |
+
animation-name: flash;
|
| 98 |
+
}
|
| 99 |
+
|
| 100 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
| 101 |
+
|
| 102 |
+
@-webkit-keyframes pulse {
|
| 103 |
+
0% {
|
| 104 |
+
-webkit-transform: scale(1);
|
| 105 |
+
transform: scale(1);
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
50% {
|
| 109 |
+
-webkit-transform: scale(1.1);
|
| 110 |
+
transform: scale(1.1);
|
| 111 |
+
}
|
| 112 |
+
|
| 113 |
+
100% {
|
| 114 |
+
-webkit-transform: scale(1);
|
| 115 |
+
transform: scale(1);
|
| 116 |
+
}
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
@keyframes pulse {
|
| 120 |
+
0% {
|
| 121 |
+
-webkit-transform: scale(1);
|
| 122 |
+
-ms-transform: scale(1);
|
| 123 |
+
transform: scale(1);
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
50% {
|
| 127 |
+
-webkit-transform: scale(1.1);
|
| 128 |
+
-ms-transform: scale(1.1);
|
| 129 |
+
transform: scale(1.1);
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
100% {
|
| 133 |
+
-webkit-transform: scale(1);
|
| 134 |
+
-ms-transform: scale(1);
|
| 135 |
+
transform: scale(1);
|
| 136 |
+
}
|
| 137 |
+
}
|
| 138 |
+
|
| 139 |
+
.pulse {
|
| 140 |
+
-webkit-animation-name: pulse;
|
| 141 |
+
animation-name: pulse;
|
| 142 |
+
}
|
| 143 |
+
|
| 144 |
+
@-webkit-keyframes rubberBand {
|
| 145 |
+
0% {
|
| 146 |
+
-webkit-transform: scale(1);
|
| 147 |
+
transform: scale(1);
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
30% {
|
| 151 |
+
-webkit-transform: scaleX(1.25) scaleY(0.75);
|
| 152 |
+
transform: scaleX(1.25) scaleY(0.75);
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
40% {
|
| 156 |
+
-webkit-transform: scaleX(0.75) scaleY(1.25);
|
| 157 |
+
transform: scaleX(0.75) scaleY(1.25);
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
60% {
|
| 161 |
+
-webkit-transform: scaleX(1.15) scaleY(0.85);
|
| 162 |
+
transform: scaleX(1.15) scaleY(0.85);
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
100% {
|
| 166 |
+
-webkit-transform: scale(1);
|
| 167 |
+
transform: scale(1);
|
| 168 |
+
}
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
@keyframes rubberBand {
|
| 172 |
+
0% {
|
| 173 |
+
-webkit-transform: scale(1);
|
| 174 |
+
-ms-transform: scale(1);
|
| 175 |
+
transform: scale(1);
|
| 176 |
+
}
|
| 177 |
+
|
| 178 |
+
30% {
|
| 179 |
+
-webkit-transform: scaleX(1.25) scaleY(0.75);
|
| 180 |
+
-ms-transform: scaleX(1.25) scaleY(0.75);
|
| 181 |
+
transform: scaleX(1.25) scaleY(0.75);
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
40% {
|
| 185 |
+
-webkit-transform: scaleX(0.75) scaleY(1.25);
|
| 186 |
+
-ms-transform: scaleX(0.75) scaleY(1.25);
|
| 187 |
+
transform: scaleX(0.75) scaleY(1.25);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
60% {
|
| 191 |
+
-webkit-transform: scaleX(1.15) scaleY(0.85);
|
| 192 |
+
-ms-transform: scaleX(1.15) scaleY(0.85);
|
| 193 |
+
transform: scaleX(1.15) scaleY(0.85);
|
| 194 |
+
}
|
| 195 |
+
|
| 196 |
+
100% {
|
| 197 |
+
-webkit-transform: scale(1);
|
| 198 |
+
-ms-transform: scale(1);
|
| 199 |
+
transform: scale(1);
|
| 200 |
+
}
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
.rubberBand {
|
| 204 |
+
-webkit-animation-name: rubberBand;
|
| 205 |
+
animation-name: rubberBand;
|
| 206 |
+
}
|
| 207 |
+
|
| 208 |
+
@-webkit-keyframes shake {
|
| 209 |
+
0%, 100% {
|
| 210 |
+
-webkit-transform: translateX(0);
|
| 211 |
+
transform: translateX(0);
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
10%, 30%, 50%, 70%, 90% {
|
| 215 |
+
-webkit-transform: translateX(-10px);
|
| 216 |
+
transform: translateX(-10px);
|
| 217 |
+
}
|
| 218 |
+
|
| 219 |
+
20%, 40%, 60%, 80% {
|
| 220 |
+
-webkit-transform: translateX(10px);
|
| 221 |
+
transform: translateX(10px);
|
| 222 |
+
}
|
| 223 |
+
}
|
| 224 |
+
|
| 225 |
+
@keyframes shake {
|
| 226 |
+
0%, 100% {
|
| 227 |
+
-webkit-transform: translateX(0);
|
| 228 |
+
-ms-transform: translateX(0);
|
| 229 |
+
transform: translateX(0);
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
10%, 30%, 50%, 70%, 90% {
|
| 233 |
+
-webkit-transform: translateX(-10px);
|
| 234 |
+
-ms-transform: translateX(-10px);
|
| 235 |
+
transform: translateX(-10px);
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
20%, 40%, 60%, 80% {
|
| 239 |
+
-webkit-transform: translateX(10px);
|
| 240 |
+
-ms-transform: translateX(10px);
|
| 241 |
+
transform: translateX(10px);
|
| 242 |
+
}
|
| 243 |
+
}
|
| 244 |
+
|
| 245 |
+
.shake {
|
| 246 |
+
-webkit-animation-name: shake;
|
| 247 |
+
animation-name: shake;
|
| 248 |
+
}
|
| 249 |
+
|
| 250 |
+
@-webkit-keyframes swing {
|
| 251 |
+
20% {
|
| 252 |
+
-webkit-transform: rotate(15deg);
|
| 253 |
+
transform: rotate(15deg);
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
40% {
|
| 257 |
+
-webkit-transform: rotate(-10deg);
|
| 258 |
+
transform: rotate(-10deg);
|
| 259 |
+
}
|
| 260 |
+
|
| 261 |
+
60% {
|
| 262 |
+
-webkit-transform: rotate(5deg);
|
| 263 |
+
transform: rotate(5deg);
|
| 264 |
+
}
|
| 265 |
+
|
| 266 |
+
80% {
|
| 267 |
+
-webkit-transform: rotate(-5deg);
|
| 268 |
+
transform: rotate(-5deg);
|
| 269 |
+
}
|
| 270 |
+
|
| 271 |
+
100% {
|
| 272 |
+
-webkit-transform: rotate(0deg);
|
| 273 |
+
transform: rotate(0deg);
|
| 274 |
+
}
|
| 275 |
+
}
|
| 276 |
+
|
| 277 |
+
@keyframes swing {
|
| 278 |
+
20% {
|
| 279 |
+
-webkit-transform: rotate(15deg);
|
| 280 |
+
-ms-transform: rotate(15deg);
|
| 281 |
+
transform: rotate(15deg);
|
| 282 |
+
}
|
| 283 |
+
|
| 284 |
+
40% {
|
| 285 |
+
-webkit-transform: rotate(-10deg);
|
| 286 |
+
-ms-transform: rotate(-10deg);
|
| 287 |
+
transform: rotate(-10deg);
|
| 288 |
+
}
|
| 289 |
+
|
| 290 |
+
60% {
|
| 291 |
+
-webkit-transform: rotate(5deg);
|
| 292 |
+
-ms-transform: rotate(5deg);
|
| 293 |
+
transform: rotate(5deg);
|
| 294 |
+
}
|
| 295 |
+
|
| 296 |
+
80% {
|
| 297 |
+
-webkit-transform: rotate(-5deg);
|
| 298 |
+
-ms-transform: rotate(-5deg);
|
| 299 |
+
transform: rotate(-5deg);
|
| 300 |
+
}
|
| 301 |
+
|
| 302 |
+
100% {
|
| 303 |
+
-webkit-transform: rotate(0deg);
|
| 304 |
+
-ms-transform: rotate(0deg);
|
| 305 |
+
transform: rotate(0deg);
|
| 306 |
+
}
|
| 307 |
+
}
|
| 308 |
+
|
| 309 |
+
.swing {
|
| 310 |
+
-webkit-transform-origin: top center;
|
| 311 |
+
-ms-transform-origin: top center;
|
| 312 |
+
transform-origin: top center;
|
| 313 |
+
-webkit-animation-name: swing;
|
| 314 |
+
animation-name: swing;
|
| 315 |
+
}
|
| 316 |
+
|
| 317 |
+
@-webkit-keyframes tada {
|
| 318 |
+
0% {
|
| 319 |
+
-webkit-transform: scale(1);
|
| 320 |
+
transform: scale(1);
|
| 321 |
+
}
|
| 322 |
+
|
| 323 |
+
10%, 20% {
|
| 324 |
+
-webkit-transform: scale(0.9) rotate(-3deg);
|
| 325 |
+
transform: scale(0.9) rotate(-3deg);
|
| 326 |
+
}
|
| 327 |
+
|
| 328 |
+
30%, 50%, 70%, 90% {
|
| 329 |
+
-webkit-transform: scale(1.1) rotate(3deg);
|
| 330 |
+
transform: scale(1.1) rotate(3deg);
|
| 331 |
+
}
|
| 332 |
+
|
| 333 |
+
40%, 60%, 80% {
|
| 334 |
+
-webkit-transform: scale(1.1) rotate(-3deg);
|
| 335 |
+
transform: scale(1.1) rotate(-3deg);
|
| 336 |
+
}
|
| 337 |
+
|
| 338 |
+
100% {
|
| 339 |
+
-webkit-transform: scale(1) rotate(0);
|
| 340 |
+
transform: scale(1) rotate(0);
|
| 341 |
+
}
|
| 342 |
+
}
|
| 343 |
+
|
| 344 |
+
@keyframes tada {
|
| 345 |
+
0% {
|
| 346 |
+
-webkit-transform: scale(1);
|
| 347 |
+
-ms-transform: scale(1);
|
| 348 |
+
transform: scale(1);
|
| 349 |
+
}
|
| 350 |
+
|
| 351 |
+
10%, 20% {
|
| 352 |
+
-webkit-transform: scale(0.9) rotate(-3deg);
|
| 353 |
+
-ms-transform: scale(0.9) rotate(-3deg);
|
| 354 |
+
transform: scale(0.9) rotate(-3deg);
|
| 355 |
+
}
|
| 356 |
+
|
| 357 |
+
30%, 50%, 70%, 90% {
|
| 358 |
+
-webkit-transform: scale(1.1) rotate(3deg);
|
| 359 |
+
-ms-transform: scale(1.1) rotate(3deg);
|
| 360 |
+
transform: scale(1.1) rotate(3deg);
|
| 361 |
+
}
|
| 362 |
+
|
| 363 |
+
40%, 60%, 80% {
|
| 364 |
+
-webkit-transform: scale(1.1) rotate(-3deg);
|
| 365 |
+
-ms-transform: scale(1.1) rotate(-3deg);
|
| 366 |
+
transform: scale(1.1) rotate(-3deg);
|
| 367 |
+
}
|
| 368 |
+
|
| 369 |
+
100% {
|
| 370 |
+
-webkit-transform: scale(1) rotate(0);
|
| 371 |
+
-ms-transform: scale(1) rotate(0);
|
| 372 |
+
transform: scale(1) rotate(0);
|
| 373 |
+
}
|
| 374 |
+
}
|
| 375 |
+
|
| 376 |
+
.tada {
|
| 377 |
+
-webkit-animation-name: tada;
|
| 378 |
+
animation-name: tada;
|
| 379 |
+
}
|
| 380 |
+
|
| 381 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
| 382 |
+
|
| 383 |
+
@-webkit-keyframes wobble {
|
| 384 |
+
0% {
|
| 385 |
+
-webkit-transform: translateX(0%);
|
| 386 |
+
transform: translateX(0%);
|
| 387 |
+
}
|
| 388 |
+
|
| 389 |
+
15% {
|
| 390 |
+
-webkit-transform: translateX(-25%) rotate(-5deg);
|
| 391 |
+
transform: translateX(-25%) rotate(-5deg);
|
| 392 |
+
}
|
| 393 |
+
|
| 394 |
+
30% {
|
| 395 |
+
-webkit-transform: translateX(20%) rotate(3deg);
|
| 396 |
+
transform: translateX(20%) rotate(3deg);
|
| 397 |
+
}
|
| 398 |
+
|
| 399 |
+
45% {
|
| 400 |
+
-webkit-transform: translateX(-15%) rotate(-3deg);
|
| 401 |
+
transform: translateX(-15%) rotate(-3deg);
|
| 402 |
+
}
|
| 403 |
+
|
| 404 |
+
60% {
|
| 405 |
+
-webkit-transform: translateX(10%) rotate(2deg);
|
| 406 |
+
transform: translateX(10%) rotate(2deg);
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
75% {
|
| 410 |
+
-webkit-transform: translateX(-5%) rotate(-1deg);
|
| 411 |
+
transform: translateX(-5%) rotate(-1deg);
|
| 412 |
+
}
|
| 413 |
+
|
| 414 |
+
100% {
|
| 415 |
+
-webkit-transform: translateX(0%);
|
| 416 |
+
transform: translateX(0%);
|
| 417 |
+
}
|
| 418 |
+
}
|
| 419 |
+
|
| 420 |
+
@keyframes wobble {
|
| 421 |
+
0% {
|
| 422 |
+
-webkit-transform: translateX(0%);
|
| 423 |
+
-ms-transform: translateX(0%);
|
| 424 |
+
transform: translateX(0%);
|
| 425 |
+
}
|
| 426 |
+
|
| 427 |
+
15% {
|
| 428 |
+
-webkit-transform: translateX(-25%) rotate(-5deg);
|
| 429 |
+
-ms-transform: translateX(-25%) rotate(-5deg);
|
| 430 |
+
transform: translateX(-25%) rotate(-5deg);
|
| 431 |
+
}
|
| 432 |
+
|
| 433 |
+
30% {
|
| 434 |
+
-webkit-transform: translateX(20%) rotate(3deg);
|
| 435 |
+
-ms-transform: translateX(20%) rotate(3deg);
|
| 436 |
+
transform: translateX(20%) rotate(3deg);
|
| 437 |
+
}
|
| 438 |
+
|
| 439 |
+
45% {
|
| 440 |
+
-webkit-transform: translateX(-15%) rotate(-3deg);
|
| 441 |
+
-ms-transform: translateX(-15%) rotate(-3deg);
|
| 442 |
+
transform: translateX(-15%) rotate(-3deg);
|
| 443 |
+
}
|
| 444 |
+
|
| 445 |
+
60% {
|
| 446 |
+
-webkit-transform: translateX(10%) rotate(2deg);
|
| 447 |
+
-ms-transform: translateX(10%) rotate(2deg);
|
| 448 |
+
transform: translateX(10%) rotate(2deg);
|
| 449 |
+
}
|
| 450 |
+
|
| 451 |
+
75% {
|
| 452 |
+
-webkit-transform: translateX(-5%) rotate(-1deg);
|
| 453 |
+
-ms-transform: translateX(-5%) rotate(-1deg);
|
| 454 |
+
transform: translateX(-5%) rotate(-1deg);
|
| 455 |
+
}
|
| 456 |
+
|
| 457 |
+
100% {
|
| 458 |
+
-webkit-transform: translateX(0%);
|
| 459 |
+
-ms-transform: translateX(0%);
|
| 460 |
+
transform: translateX(0%);
|
| 461 |
+
}
|
| 462 |
+
}
|
| 463 |
+
|
| 464 |
+
.wobble {
|
| 465 |
+
-webkit-animation-name: wobble;
|
| 466 |
+
animation-name: wobble;
|
| 467 |
+
}
|
| 468 |
+
|
| 469 |
+
@-webkit-keyframes bounceIn {
|
| 470 |
+
0% {
|
| 471 |
+
opacity: 0;
|
| 472 |
+
-webkit-transform: scale(.3);
|
| 473 |
+
transform: scale(.3);
|
| 474 |
+
}
|
| 475 |
+
|
| 476 |
+
50% {
|
| 477 |
+
opacity: 1;
|
| 478 |
+
-webkit-transform: scale(1.05);
|
| 479 |
+
transform: scale(1.05);
|
| 480 |
+
}
|
| 481 |
+
|
| 482 |
+
70% {
|
| 483 |
+
-webkit-transform: scale(.9);
|
| 484 |
+
transform: scale(.9);
|
| 485 |
+
}
|
| 486 |
+
|
| 487 |
+
100% {
|
| 488 |
+
opacity: 1;
|
| 489 |
+
-webkit-transform: scale(1);
|
| 490 |
+
transform: scale(1);
|
| 491 |
+
}
|
| 492 |
+
}
|
| 493 |
+
|
| 494 |
+
@keyframes bounceIn {
|
| 495 |
+
0% {
|
| 496 |
+
opacity: 0;
|
| 497 |
+
-webkit-transform: scale(.3);
|
| 498 |
+
-ms-transform: scale(.3);
|
| 499 |
+
transform: scale(.3);
|
| 500 |
+
}
|
| 501 |
+
|
| 502 |
+
50% {
|
| 503 |
+
opacity: 1;
|
| 504 |
+
-webkit-transform: scale(1.05);
|
| 505 |
+
-ms-transform: scale(1.05);
|
| 506 |
+
transform: scale(1.05);
|
| 507 |
+
}
|
| 508 |
+
|
| 509 |
+
70% {
|
| 510 |
+
-webkit-transform: scale(.9);
|
| 511 |
+
-ms-transform: scale(.9);
|
| 512 |
+
transform: scale(.9);
|
| 513 |
+
}
|
| 514 |
+
|
| 515 |
+
100% {
|
| 516 |
+
opacity: 1;
|
| 517 |
+
-webkit-transform: scale(1);
|
| 518 |
+
-ms-transform: scale(1);
|
| 519 |
+
transform: scale(1);
|
| 520 |
+
}
|
| 521 |
+
}
|
| 522 |
+
|
| 523 |
+
.bounceIn {
|
| 524 |
+
-webkit-animation-name: bounceIn;
|
| 525 |
+
animation-name: bounceIn;
|
| 526 |
+
}
|
| 527 |
+
|
| 528 |
+
@-webkit-keyframes bounceInDown {
|
| 529 |
+
0% {
|
| 530 |
+
opacity: 0;
|
| 531 |
+
-webkit-transform: translateY(-2000px);
|
| 532 |
+
transform: translateY(-2000px);
|
| 533 |
+
}
|
| 534 |
+
|
| 535 |
+
60% {
|
| 536 |
+
opacity: 1;
|
| 537 |
+
-webkit-transform: translateY(30px);
|
| 538 |
+
transform: translateY(30px);
|
| 539 |
+
}
|
| 540 |
+
|
| 541 |
+
80% {
|
| 542 |
+
-webkit-transform: translateY(-10px);
|
| 543 |
+
transform: translateY(-10px);
|
| 544 |
+
}
|
| 545 |
+
|
| 546 |
+
100% {
|
| 547 |
+
-webkit-transform: translateY(0);
|
| 548 |
+
transform: translateY(0);
|
| 549 |
+
}
|
| 550 |
+
}
|
| 551 |
+
|
| 552 |
+
@keyframes bounceInDown {
|
| 553 |
+
0% {
|
| 554 |
+
opacity: 0;
|
| 555 |
+
-webkit-transform: translateY(-2000px);
|
| 556 |
+
-ms-transform: translateY(-2000px);
|
| 557 |
+
transform: translateY(-2000px);
|
| 558 |
+
}
|
| 559 |
+
|
| 560 |
+
60% {
|
| 561 |
+
opacity: 1;
|
| 562 |
+
-webkit-transform: translateY(30px);
|
| 563 |
+
-ms-transform: translateY(30px);
|
| 564 |
+
transform: translateY(30px);
|
| 565 |
+
}
|
| 566 |
+
|
| 567 |
+
80% {
|
| 568 |
+
-webkit-transform: translateY(-10px);
|
| 569 |
+
-ms-transform: translateY(-10px);
|
| 570 |
+
transform: translateY(-10px);
|
| 571 |
+
}
|
| 572 |
+
|
| 573 |
+
100% {
|
| 574 |
+
-webkit-transform: translateY(0);
|
| 575 |
+
-ms-transform: translateY(0);
|
| 576 |
+
transform: translateY(0);
|
| 577 |
+
}
|
| 578 |
+
}
|
| 579 |
+
|
| 580 |
+
.bounceInDown {
|
| 581 |
+
-webkit-animation-name: bounceInDown;
|
| 582 |
+
animation-name: bounceInDown;
|
| 583 |
+
}
|
| 584 |
+
|
| 585 |
+
@-webkit-keyframes bounceInLeft {
|
| 586 |
+
0% {
|
| 587 |
+
opacity: 0;
|
| 588 |
+
-webkit-transform: translateX(-2000px);
|
| 589 |
+
transform: translateX(-2000px);
|
| 590 |
+
}
|
| 591 |
+
|
| 592 |
+
60% {
|
| 593 |
+
opacity: 1;
|
| 594 |
+
-webkit-transform: translateX(30px);
|
| 595 |
+
transform: translateX(30px);
|
| 596 |
+
}
|
| 597 |
+
|
| 598 |
+
80% {
|
| 599 |
+
-webkit-transform: translateX(-10px);
|
| 600 |
+
transform: translateX(-10px);
|
| 601 |
+
}
|
| 602 |
+
|
| 603 |
+
100% {
|
| 604 |
+
-webkit-transform: translateX(0);
|
| 605 |
+
transform: translateX(0);
|
| 606 |
+
}
|
| 607 |
+
}
|
| 608 |
+
|
| 609 |
+
@keyframes bounceInLeft {
|
| 610 |
+
0% {
|
| 611 |
+
opacity: 0;
|
| 612 |
+
-webkit-transform: translateX(-2000px);
|
| 613 |
+
-ms-transform: translateX(-2000px);
|
| 614 |
+
transform: translateX(-2000px);
|
| 615 |
+
}
|
| 616 |
+
|
| 617 |
+
60% {
|
| 618 |
+
opacity: 1;
|
| 619 |
+
-webkit-transform: translateX(30px);
|
| 620 |
+
-ms-transform: translateX(30px);
|
| 621 |
+
transform: translateX(30px);
|
| 622 |
+
}
|
| 623 |
+
|
| 624 |
+
80% {
|
| 625 |
+
-webkit-transform: translateX(-10px);
|
| 626 |
+
-ms-transform: translateX(-10px);
|
| 627 |
+
transform: translateX(-10px);
|
| 628 |
+
}
|
| 629 |
+
|
| 630 |
+
100% {
|
| 631 |
+
-webkit-transform: translateX(0);
|
| 632 |
+
-ms-transform: translateX(0);
|
| 633 |
+
transform: translateX(0);
|
| 634 |
+
}
|
| 635 |
+
}
|
| 636 |
+
|
| 637 |
+
.bounceInLeft {
|
| 638 |
+
-webkit-animation-name: bounceInLeft;
|
| 639 |
+
animation-name: bounceInLeft;
|
| 640 |
+
}
|
| 641 |
+
|
| 642 |
+
@-webkit-keyframes bounceInRight {
|
| 643 |
+
0% {
|
| 644 |
+
opacity: 0;
|
| 645 |
+
-webkit-transform: translateX(2000px);
|
| 646 |
+
transform: translateX(2000px);
|
| 647 |
+
}
|
| 648 |
+
|
| 649 |
+
60% {
|
| 650 |
+
opacity: 1;
|
| 651 |
+
-webkit-transform: translateX(-30px);
|
| 652 |
+
transform: translateX(-30px);
|
| 653 |
+
}
|
| 654 |
+
|
| 655 |
+
80% {
|
| 656 |
+
-webkit-transform: translateX(10px);
|
| 657 |
+
transform: translateX(10px);
|
| 658 |
+
}
|
| 659 |
+
|
| 660 |
+
100% {
|
| 661 |
+
-webkit-transform: translateX(0);
|
| 662 |
+
transform: translateX(0);
|
| 663 |
+
}
|
| 664 |
+
}
|
| 665 |
+
|
| 666 |
+
@keyframes bounceInRight {
|
| 667 |
+
0% {
|
| 668 |
+
opacity: 0;
|
| 669 |
+
-webkit-transform: translateX(2000px);
|
| 670 |
+
-ms-transform: translateX(2000px);
|
| 671 |
+
transform: translateX(2000px);
|
| 672 |
+
}
|
| 673 |
+
|
| 674 |
+
60% {
|
| 675 |
+
opacity: 1;
|
| 676 |
+
-webkit-transform: translateX(-30px);
|
| 677 |
+
-ms-transform: translateX(-30px);
|
| 678 |
+
transform: translateX(-30px);
|
| 679 |
+
}
|
| 680 |
+
|
| 681 |
+
80% {
|
| 682 |
+
-webkit-transform: translateX(10px);
|
| 683 |
+
-ms-transform: translateX(10px);
|
| 684 |
+
transform: translateX(10px);
|
| 685 |
+
}
|
| 686 |
+
|
| 687 |
+
100% {
|
| 688 |
+
-webkit-transform: translateX(0);
|
| 689 |
+
-ms-transform: translateX(0);
|
| 690 |
+
transform: translateX(0);
|
| 691 |
+
}
|
| 692 |
+
}
|
| 693 |
+
|
| 694 |
+
.bounceInRight {
|
| 695 |
+
-webkit-animation-name: bounceInRight;
|
| 696 |
+
animation-name: bounceInRight;
|
| 697 |
+
}
|
| 698 |
+
|
| 699 |
+
@-webkit-keyframes bounceInUp {
|
| 700 |
+
0% {
|
| 701 |
+
opacity: 0;
|
| 702 |
+
-webkit-transform: translateY(2000px);
|
| 703 |
+
transform: translateY(2000px);
|
| 704 |
+
}
|
| 705 |
+
|
| 706 |
+
60% {
|
| 707 |
+
opacity: 1;
|
| 708 |
+
-webkit-transform: translateY(-30px);
|
| 709 |
+
transform: translateY(-30px);
|
| 710 |
+
}
|
| 711 |
+
|
| 712 |
+
80% {
|
| 713 |
+
-webkit-transform: translateY(10px);
|
| 714 |
+
transform: translateY(10px);
|
| 715 |
+
}
|
| 716 |
+
|
| 717 |
+
100% {
|
| 718 |
+
-webkit-transform: translateY(0);
|
| 719 |
+
transform: translateY(0);
|
| 720 |
+
}
|
| 721 |
+
}
|
| 722 |
+
|
| 723 |
+
@keyframes bounceInUp {
|
| 724 |
+
0% {
|
| 725 |
+
opacity: 0;
|
| 726 |
+
-webkit-transform: translateY(2000px);
|
| 727 |
+
-ms-transform: translateY(2000px);
|
| 728 |
+
transform: translateY(2000px);
|
| 729 |
+
}
|
| 730 |
+
|
| 731 |
+
60% {
|
| 732 |
+
opacity: 1;
|
| 733 |
+
-webkit-transform: translateY(-30px);
|
| 734 |
+
-ms-transform: translateY(-30px);
|
| 735 |
+
transform: translateY(-30px);
|
| 736 |
+
}
|
| 737 |
+
|
| 738 |
+
80% {
|
| 739 |
+
-webkit-transform: translateY(10px);
|
| 740 |
+
-ms-transform: translateY(10px);
|
| 741 |
+
transform: translateY(10px);
|
| 742 |
+
}
|
| 743 |
+
|
| 744 |
+
100% {
|
| 745 |
+
-webkit-transform: translateY(0);
|
| 746 |
+
-ms-transform: translateY(0);
|
| 747 |
+
transform: translateY(0);
|
| 748 |
+
}
|
| 749 |
+
}
|
| 750 |
+
|
| 751 |
+
.bounceInUp {
|
| 752 |
+
-webkit-animation-name: bounceInUp;
|
| 753 |
+
animation-name: bounceInUp;
|
| 754 |
+
}
|
| 755 |
+
|
| 756 |
+
@-webkit-keyframes bounceOut {
|
| 757 |
+
0% {
|
| 758 |
+
-webkit-transform: scale(1);
|
| 759 |
+
transform: scale(1);
|
| 760 |
+
}
|
| 761 |
+
|
| 762 |
+
25% {
|
| 763 |
+
-webkit-transform: scale(.95);
|
| 764 |
+
transform: scale(.95);
|
| 765 |
+
}
|
| 766 |
+
|
| 767 |
+
50% {
|
| 768 |
+
opacity: 1;
|
| 769 |
+
-webkit-transform: scale(1.1);
|
| 770 |
+
transform: scale(1.1);
|
| 771 |
+
}
|
| 772 |
+
|
| 773 |
+
100% {
|
| 774 |
+
opacity: 0;
|
| 775 |
+
-webkit-transform: scale(.3);
|
| 776 |
+
transform: scale(.3);
|
| 777 |
+
}
|
| 778 |
+
}
|
| 779 |
+
|
| 780 |
+
@keyframes bounceOut {
|
| 781 |
+
0% {
|
| 782 |
+
-webkit-transform: scale(1);
|
| 783 |
+
-ms-transform: scale(1);
|
| 784 |
+
transform: scale(1);
|
| 785 |
+
}
|
| 786 |
+
|
| 787 |
+
25% {
|
| 788 |
+
-webkit-transform: scale(.95);
|
| 789 |
+
-ms-transform: scale(.95);
|
| 790 |
+
transform: scale(.95);
|
| 791 |
+
}
|
| 792 |
+
|
| 793 |
+
50% {
|
| 794 |
+
opacity: 1;
|
| 795 |
+
-webkit-transform: scale(1.1);
|
| 796 |
+
-ms-transform: scale(1.1);
|
| 797 |
+
transform: scale(1.1);
|
| 798 |
+
}
|
| 799 |
+
|
| 800 |
+
100% {
|
| 801 |
+
opacity: 0;
|
| 802 |
+
-webkit-transform: scale(.3);
|
| 803 |
+
-ms-transform: scale(.3);
|
| 804 |
+
transform: scale(.3);
|
| 805 |
+
}
|
| 806 |
+
}
|
| 807 |
+
|
| 808 |
+
.bounceOut {
|
| 809 |
+
-webkit-animation-name: bounceOut;
|
| 810 |
+
animation-name: bounceOut;
|
| 811 |
+
}
|
| 812 |
+
|
| 813 |
+
@-webkit-keyframes bounceOutDown {
|
| 814 |
+
0% {
|
| 815 |
+
-webkit-transform: translateY(0);
|
| 816 |
+
transform: translateY(0);
|
| 817 |
+
}
|
| 818 |
+
|
| 819 |
+
20% {
|
| 820 |
+
opacity: 1;
|
| 821 |
+
-webkit-transform: translateY(-20px);
|
| 822 |
+
transform: translateY(-20px);
|
| 823 |
+
}
|
| 824 |
+
|
| 825 |
+
100% {
|
| 826 |
+
opacity: 0;
|
| 827 |
+
-webkit-transform: translateY(2000px);
|
| 828 |
+
transform: translateY(2000px);
|
| 829 |
+
}
|
| 830 |
+
}
|
| 831 |
+
|
| 832 |
+
@keyframes bounceOutDown {
|
| 833 |
+
0% {
|
| 834 |
+
-webkit-transform: translateY(0);
|
| 835 |
+
-ms-transform: translateY(0);
|
| 836 |
+
transform: translateY(0);
|
| 837 |
+
}
|
| 838 |
+
|
| 839 |
+
20% {
|
| 840 |
+
opacity: 1;
|
| 841 |
+
-webkit-transform: translateY(-20px);
|
| 842 |
+
-ms-transform: translateY(-20px);
|
| 843 |
+
transform: translateY(-20px);
|
| 844 |
+
}
|
| 845 |
+
|
| 846 |
+
100% {
|
| 847 |
+
opacity: 0;
|
| 848 |
+
-webkit-transform: translateY(2000px);
|
| 849 |
+
-ms-transform: translateY(2000px);
|
| 850 |
+
transform: translateY(2000px);
|
| 851 |
+
}
|
| 852 |
+
}
|
| 853 |
+
|
| 854 |
+
.bounceOutDown {
|
| 855 |
+
-webkit-animation-name: bounceOutDown;
|
| 856 |
+
animation-name: bounceOutDown;
|
| 857 |
+
}
|
| 858 |
+
|
| 859 |
+
@-webkit-keyframes bounceOutLeft {
|
| 860 |
+
0% {
|
| 861 |
+
-webkit-transform: translateX(0);
|
| 862 |
+
transform: translateX(0);
|
| 863 |
+
}
|
| 864 |
+
|
| 865 |
+
20% {
|
| 866 |
+
opacity: 1;
|
| 867 |
+
-webkit-transform: translateX(20px);
|
| 868 |
+
transform: translateX(20px);
|
| 869 |
+
}
|
| 870 |
+
|
| 871 |
+
100% {
|
| 872 |
+
opacity: 0;
|
| 873 |
+
-webkit-transform: translateX(-2000px);
|
| 874 |
+
transform: translateX(-2000px);
|
| 875 |
+
}
|
| 876 |
+
}
|
| 877 |
+
|
| 878 |
+
@keyframes bounceOutLeft {
|
| 879 |
+
0% {
|
| 880 |
+
-webkit-transform: translateX(0);
|
| 881 |
+
-ms-transform: translateX(0);
|
| 882 |
+
transform: translateX(0);
|
| 883 |
+
}
|
| 884 |
+
|
| 885 |
+
20% {
|
| 886 |
+
opacity: 1;
|
| 887 |
+
-webkit-transform: translateX(20px);
|
| 888 |
+
-ms-transform: translateX(20px);
|
| 889 |
+
transform: translateX(20px);
|
| 890 |
+
}
|
| 891 |
+
|
| 892 |
+
100% {
|
| 893 |
+
opacity: 0;
|
| 894 |
+
-webkit-transform: translateX(-2000px);
|
| 895 |
+
-ms-transform: translateX(-2000px);
|
| 896 |
+
transform: translateX(-2000px);
|
| 897 |
+
}
|
| 898 |
+
}
|
| 899 |
+
|
| 900 |
+
.bounceOutLeft {
|
| 901 |
+
-webkit-animation-name: bounceOutLeft;
|
| 902 |
+
animation-name: bounceOutLeft;
|
| 903 |
+
}
|
| 904 |
+
|
| 905 |
+
@-webkit-keyframes bounceOutRight {
|
| 906 |
+
0% {
|
| 907 |
+
-webkit-transform: translateX(0);
|
| 908 |
+
transform: translateX(0);
|
| 909 |
+
}
|
| 910 |
+
|
| 911 |
+
20% {
|
| 912 |
+
opacity: 1;
|
| 913 |
+
-webkit-transform: translateX(-20px);
|
| 914 |
+
transform: translateX(-20px);
|
| 915 |
+
}
|
| 916 |
+
|
| 917 |
+
100% {
|
| 918 |
+
opacity: 0;
|
| 919 |
+
-webkit-transform: translateX(2000px);
|
| 920 |
+
transform: translateX(2000px);
|
| 921 |
+
}
|
| 922 |
+
}
|
| 923 |
+
|
| 924 |
+
@keyframes bounceOutRight {
|
| 925 |
+
0% {
|
| 926 |
+
-webkit-transform: translateX(0);
|
| 927 |
+
-ms-transform: translateX(0);
|
| 928 |
+
transform: translateX(0);
|
| 929 |
+
}
|
| 930 |
+
|
| 931 |
+
20% {
|
| 932 |
+
opacity: 1;
|
| 933 |
+
-webkit-transform: translateX(-20px);
|
| 934 |
+
-ms-transform: translateX(-20px);
|
| 935 |
+
transform: translateX(-20px);
|
| 936 |
+
}
|
| 937 |
+
|
| 938 |
+
100% {
|
| 939 |
+
opacity: 0;
|
| 940 |
+
-webkit-transform: translateX(2000px);
|
| 941 |
+
-ms-transform: translateX(2000px);
|
| 942 |
+
transform: translateX(2000px);
|
| 943 |
+
}
|
| 944 |
+
}
|
| 945 |
+
|
| 946 |
+
.bounceOutRight {
|
| 947 |
+
-webkit-animation-name: bounceOutRight;
|
| 948 |
+
animation-name: bounceOutRight;
|
| 949 |
+
}
|
| 950 |
+
|
| 951 |
+
@-webkit-keyframes bounceOutUp {
|
| 952 |
+
0% {
|
| 953 |
+
-webkit-transform: translateY(0);
|
| 954 |
+
transform: translateY(0);
|
| 955 |
+
}
|
| 956 |
+
|
| 957 |
+
20% {
|
| 958 |
+
opacity: 1;
|
| 959 |
+
-webkit-transform: translateY(20px);
|
| 960 |
+
transform: translateY(20px);
|
| 961 |
+
}
|
| 962 |
+
|
| 963 |
+
100% {
|
| 964 |
+
opacity: 0;
|
| 965 |
+
-webkit-transform: translateY(-2000px);
|
| 966 |
+
transform: translateY(-2000px);
|
| 967 |
+
}
|
| 968 |
+
}
|
| 969 |
+
|
| 970 |
+
@keyframes bounceOutUp {
|
| 971 |
+
0% {
|
| 972 |
+
-webkit-transform: translateY(0);
|
| 973 |
+
-ms-transform: translateY(0);
|
| 974 |
+
transform: translateY(0);
|
| 975 |
+
}
|
| 976 |
+
|
| 977 |
+
20% {
|
| 978 |
+
opacity: 1;
|
| 979 |
+
-webkit-transform: translateY(20px);
|
| 980 |
+
-ms-transform: translateY(20px);
|
| 981 |
+
transform: translateY(20px);
|
| 982 |
+
}
|
| 983 |
+
|
| 984 |
+
100% {
|
| 985 |
+
opacity: 0;
|
| 986 |
+
-webkit-transform: translateY(-2000px);
|
| 987 |
+
-ms-transform: translateY(-2000px);
|
| 988 |
+
transform: translateY(-2000px);
|
| 989 |
+
}
|
| 990 |
+
}
|
| 991 |
+
|
| 992 |
+
.bounceOutUp {
|
| 993 |
+
-webkit-animation-name: bounceOutUp;
|
| 994 |
+
animation-name: bounceOutUp;
|
| 995 |
+
}
|
| 996 |
+
|
| 997 |
+
@-webkit-keyframes fadeIn {
|
| 998 |
+
0% {
|
| 999 |
+
opacity: 0;
|
| 1000 |
+
}
|
| 1001 |
+
|
| 1002 |
+
100% {
|
| 1003 |
+
opacity: 1;
|
| 1004 |
+
}
|
| 1005 |
+
}
|
| 1006 |
+
|
| 1007 |
+
@keyframes fadeIn {
|
| 1008 |
+
0% {
|
| 1009 |
+
opacity: 0;
|
| 1010 |
+
}
|
| 1011 |
+
|
| 1012 |
+
100% {
|
| 1013 |
+
opacity: 1;
|
| 1014 |
+
}
|
| 1015 |
+
}
|
| 1016 |
+
|
| 1017 |
+
.fadeIn {
|
| 1018 |
+
-webkit-animation-name: fadeIn;
|
| 1019 |
+
animation-name: fadeIn;
|
| 1020 |
+
}
|
| 1021 |
+
|
| 1022 |
+
@-webkit-keyframes fadeInDown {
|
| 1023 |
+
0% {
|
| 1024 |
+
opacity: 0;
|
| 1025 |
+
-webkit-transform: translateY(-20px);
|
| 1026 |
+
transform: translateY(-20px);
|
| 1027 |
+
}
|
| 1028 |
+
|
| 1029 |
+
100% {
|
| 1030 |
+
opacity: 1;
|
| 1031 |
+
-webkit-transform: translateY(0);
|
| 1032 |
+
transform: translateY(0);
|
| 1033 |
+
}
|
| 1034 |
+
}
|
| 1035 |
+
|
| 1036 |
+
@keyframes fadeInDown {
|
| 1037 |
+
0% {
|
| 1038 |
+
opacity: 0;
|
| 1039 |
+
-webkit-transform: translateY(-20px);
|
| 1040 |
+
-ms-transform: translateY(-20px);
|
| 1041 |
+
transform: translateY(-20px);
|
| 1042 |
+
}
|
| 1043 |
+
|
| 1044 |
+
100% {
|
| 1045 |
+
opacity: 1;
|
| 1046 |
+
-webkit-transform: translateY(0);
|
| 1047 |
+
-ms-transform: translateY(0);
|
| 1048 |
+
transform: translateY(0);
|
| 1049 |
+
}
|
| 1050 |
+
}
|
| 1051 |
+
|
| 1052 |
+
.fadeInDown {
|
| 1053 |
+
-webkit-animation-name: fadeInDown;
|
| 1054 |
+
animation-name: fadeInDown;
|
| 1055 |
+
}
|
| 1056 |
+
|
| 1057 |
+
@-webkit-keyframes fadeInDownBig {
|
| 1058 |
+
0% {
|
| 1059 |
+
opacity: 0;
|
| 1060 |
+
-webkit-transform: translateY(-2000px);
|
| 1061 |
+
transform: translateY(-2000px);
|
| 1062 |
+
}
|
| 1063 |
+
|
| 1064 |
+
100% {
|
| 1065 |
+
opacity: 1;
|
| 1066 |
+
-webkit-transform: translateY(0);
|
| 1067 |
+
transform: translateY(0);
|
| 1068 |
+
}
|
| 1069 |
+
}
|
| 1070 |
+
|
| 1071 |
+
@keyframes fadeInDownBig {
|
| 1072 |
+
0% {
|
| 1073 |
+
opacity: 0;
|
| 1074 |
+
-webkit-transform: translateY(-2000px);
|
| 1075 |
+
-ms-transform: translateY(-2000px);
|
| 1076 |
+
transform: translateY(-2000px);
|
| 1077 |
+
}
|
| 1078 |
+
|
| 1079 |
+
100% {
|
| 1080 |
+
opacity: 1;
|
| 1081 |
+
-webkit-transform: translateY(0);
|
| 1082 |
+
-ms-transform: translateY(0);
|
| 1083 |
+
transform: translateY(0);
|
| 1084 |
+
}
|
| 1085 |
+
}
|
| 1086 |
+
|
| 1087 |
+
.fadeInDownBig {
|
| 1088 |
+
-webkit-animation-name: fadeInDownBig;
|
| 1089 |
+
animation-name: fadeInDownBig;
|
| 1090 |
+
}
|
| 1091 |
+
|
| 1092 |
+
@-webkit-keyframes fadeInLeft {
|
| 1093 |
+
0% {
|
| 1094 |
+
opacity: 0;
|
| 1095 |
+
-webkit-transform: translateX(-20px);
|
| 1096 |
+
transform: translateX(-20px);
|
| 1097 |
+
}
|
| 1098 |
+
|
| 1099 |
+
100% {
|
| 1100 |
+
opacity: 1;
|
| 1101 |
+
-webkit-transform: translateX(0);
|
| 1102 |
+
transform: translateX(0);
|
| 1103 |
+
}
|
| 1104 |
+
}
|
| 1105 |
+
|
| 1106 |
+
@keyframes fadeInLeft {
|
| 1107 |
+
0% {
|
| 1108 |
+
opacity: 0;
|
| 1109 |
+
-webkit-transform: translateX(-20px);
|
| 1110 |
+
-ms-transform: translateX(-20px);
|
| 1111 |
+
transform: translateX(-20px);
|
| 1112 |
+
}
|
| 1113 |
+
|
| 1114 |
+
100% {
|
| 1115 |
+
opacity: 1;
|
| 1116 |
+
-webkit-transform: translateX(0);
|
| 1117 |
+
-ms-transform: translateX(0);
|
| 1118 |
+
transform: translateX(0);
|
| 1119 |
+
}
|
| 1120 |
+
}
|
| 1121 |
+
|
| 1122 |
+
.fadeInLeft {
|
| 1123 |
+
-webkit-animation-name: fadeInLeft;
|
| 1124 |
+
animation-name: fadeInLeft;
|
| 1125 |
+
}
|
| 1126 |
+
|
| 1127 |
+
@-webkit-keyframes fadeInLeftBig {
|
| 1128 |
+
0% {
|
| 1129 |
+
opacity: 0;
|
| 1130 |
+
-webkit-transform: translateX(-2000px);
|
| 1131 |
+
transform: translateX(-2000px);
|
| 1132 |
+
}
|
| 1133 |
+
|
| 1134 |
+
100% {
|
| 1135 |
+
opacity: 1;
|
| 1136 |
+
-webkit-transform: translateX(0);
|
| 1137 |
+
transform: translateX(0);
|
| 1138 |
+
}
|
| 1139 |
+
}
|
| 1140 |
+
|
| 1141 |
+
@keyframes fadeInLeftBig {
|
| 1142 |
+
0% {
|
| 1143 |
+
opacity: 0;
|
| 1144 |
+
-webkit-transform: translateX(-2000px);
|
| 1145 |
+
-ms-transform: translateX(-2000px);
|
| 1146 |
+
transform: translateX(-2000px);
|
| 1147 |
+
}
|
| 1148 |
+
|
| 1149 |
+
100% {
|
| 1150 |
+
opacity: 1;
|
| 1151 |
+
-webkit-transform: translateX(0);
|
| 1152 |
+
-ms-transform: translateX(0);
|
| 1153 |
+
transform: translateX(0);
|
| 1154 |
+
}
|
| 1155 |
+
}
|
| 1156 |
+
|
| 1157 |
+
.fadeInLeftBig {
|
| 1158 |
+
-webkit-animation-name: fadeInLeftBig;
|
| 1159 |
+
animation-name: fadeInLeftBig;
|
| 1160 |
+
}
|
| 1161 |
+
|
| 1162 |
+
@-webkit-keyframes fadeInRight {
|
| 1163 |
+
0% {
|
| 1164 |
+
opacity: 0;
|
| 1165 |
+
-webkit-transform: translateX(20px);
|
| 1166 |
+
transform: translateX(20px);
|
| 1167 |
+
}
|
| 1168 |
+
|
| 1169 |
+
100% {
|
| 1170 |
+
opacity: 1;
|
| 1171 |
+
-webkit-transform: translateX(0);
|
| 1172 |
+
transform: translateX(0);
|
| 1173 |
+
}
|
| 1174 |
+
}
|
| 1175 |
+
|
| 1176 |
+
@keyframes fadeInRight {
|
| 1177 |
+
0% {
|
| 1178 |
+
opacity: 0;
|
| 1179 |
+
-webkit-transform: translateX(20px);
|
| 1180 |
+
-ms-transform: translateX(20px);
|
| 1181 |
+
transform: translateX(20px);
|
| 1182 |
+
}
|
| 1183 |
+
|
| 1184 |
+
100% {
|
| 1185 |
+
opacity: 1;
|
| 1186 |
+
-webkit-transform: translateX(0);
|
| 1187 |
+
-ms-transform: translateX(0);
|
| 1188 |
+
transform: translateX(0);
|
| 1189 |
+
}
|
| 1190 |
+
}
|
| 1191 |
+
|
| 1192 |
+
.fadeInRight {
|
| 1193 |
+
-webkit-animation-name: fadeInRight;
|
| 1194 |
+
animation-name: fadeInRight;
|
| 1195 |
+
}
|
| 1196 |
+
|
| 1197 |
+
@-webkit-keyframes fadeInRightBig {
|
| 1198 |
+
0% {
|
| 1199 |
+
opacity: 0;
|
| 1200 |
+
-webkit-transform: translateX(2000px);
|
| 1201 |
+
transform: translateX(2000px);
|
| 1202 |
+
}
|
| 1203 |
+
|
| 1204 |
+
100% {
|
| 1205 |
+
opacity: 1;
|
| 1206 |
+
-webkit-transform: translateX(0);
|
| 1207 |
+
transform: translateX(0);
|
| 1208 |
+
}
|
| 1209 |
+
}
|
| 1210 |
+
|
| 1211 |
+
@keyframes fadeInRightBig {
|
| 1212 |
+
0% {
|
| 1213 |
+
opacity: 0;
|
| 1214 |
+
-webkit-transform: translateX(2000px);
|
| 1215 |
+
-ms-transform: translateX(2000px);
|
| 1216 |
+
transform: translateX(2000px);
|
| 1217 |
+
}
|
| 1218 |
+
|
| 1219 |
+
100% {
|
| 1220 |
+
opacity: 1;
|
| 1221 |
+
-webkit-transform: translateX(0);
|
| 1222 |
+
-ms-transform: translateX(0);
|
| 1223 |
+
transform: translateX(0);
|
| 1224 |
+
}
|
| 1225 |
+
}
|
| 1226 |
+
|
| 1227 |
+
.fadeInRightBig {
|
| 1228 |
+
-webkit-animation-name: fadeInRightBig;
|
| 1229 |
+
animation-name: fadeInRightBig;
|
| 1230 |
+
}
|
| 1231 |
+
|
| 1232 |
+
@-webkit-keyframes fadeInUp {
|
| 1233 |
+
0% {
|
| 1234 |
+
opacity: 0;
|
| 1235 |
+
-webkit-transform: translateY(20px);
|
| 1236 |
+
transform: translateY(20px);
|
| 1237 |
+
}
|
| 1238 |
+
|
| 1239 |
+
100% {
|
| 1240 |
+
opacity: 1;
|
| 1241 |
+
-webkit-transform: translateY(0);
|
| 1242 |
+
transform: translateY(0);
|
| 1243 |
+
}
|
| 1244 |
+
}
|
| 1245 |
+
|
| 1246 |
+
@keyframes fadeInUp {
|
| 1247 |
+
0% {
|
| 1248 |
+
opacity: 0;
|
| 1249 |
+
-webkit-transform: translateY(20px);
|
| 1250 |
+
-ms-transform: translateY(20px);
|
| 1251 |
+
transform: translateY(20px);
|
| 1252 |
+
}
|
| 1253 |
+
|
| 1254 |
+
100% {
|
| 1255 |
+
opacity: 1;
|
| 1256 |
+
-webkit-transform: translateY(0);
|
| 1257 |
+
-ms-transform: translateY(0);
|
| 1258 |
+
transform: translateY(0);
|
| 1259 |
+
}
|
| 1260 |
+
}
|
| 1261 |
+
|
| 1262 |
+
.fadeInUp {
|
| 1263 |
+
-webkit-animation-name: fadeInUp;
|
| 1264 |
+
animation-name: fadeInUp;
|
| 1265 |
+
}
|
| 1266 |
+
|
| 1267 |
+
@-webkit-keyframes fadeInUpBig {
|
| 1268 |
+
0% {
|
| 1269 |
+
opacity: 0;
|
| 1270 |
+
-webkit-transform: translateY(2000px);
|
| 1271 |
+
transform: translateY(2000px);
|
| 1272 |
+
}
|
| 1273 |
+
|
| 1274 |
+
100% {
|
| 1275 |
+
opacity: 1;
|
| 1276 |
+
-webkit-transform: translateY(0);
|
| 1277 |
+
transform: translateY(0);
|
| 1278 |
+
}
|
| 1279 |
+
}
|
| 1280 |
+
|
| 1281 |
+
@keyframes fadeInUpBig {
|
| 1282 |
+
0% {
|
| 1283 |
+
opacity: 0;
|
| 1284 |
+
-webkit-transform: translateY(2000px);
|
| 1285 |
+
-ms-transform: translateY(2000px);
|
| 1286 |
+
transform: translateY(2000px);
|
| 1287 |
+
}
|
| 1288 |
+
|
| 1289 |
+
100% {
|
| 1290 |
+
opacity: 1;
|
| 1291 |
+
-webkit-transform: translateY(0);
|
| 1292 |
+
-ms-transform: translateY(0);
|
| 1293 |
+
transform: translateY(0);
|
| 1294 |
+
}
|
| 1295 |
+
}
|
| 1296 |
+
|
| 1297 |
+
.fadeInUpBig {
|
| 1298 |
+
-webkit-animation-name: fadeInUpBig;
|
| 1299 |
+
animation-name: fadeInUpBig;
|
| 1300 |
+
}
|
| 1301 |
+
|
| 1302 |
+
@-webkit-keyframes fadeOut {
|
| 1303 |
+
0% {
|
| 1304 |
+
opacity: 1;
|
| 1305 |
+
}
|
| 1306 |
+
|
| 1307 |
+
100% {
|
| 1308 |
+
opacity: 0;
|
| 1309 |
+
}
|
| 1310 |
+
}
|
| 1311 |
+
|
| 1312 |
+
@keyframes fadeOut {
|
| 1313 |
+
0% {
|
| 1314 |
+
opacity: 1;
|
| 1315 |
+
}
|
| 1316 |
+
|
| 1317 |
+
100% {
|
| 1318 |
+
opacity: 0;
|
| 1319 |
+
}
|
| 1320 |
+
}
|
| 1321 |
+
|
| 1322 |
+
.fadeOut {
|
| 1323 |
+
-webkit-animation-name: fadeOut;
|
| 1324 |
+
animation-name: fadeOut;
|
| 1325 |
+
}
|
| 1326 |
+
|
| 1327 |
+
@-webkit-keyframes fadeOutDown {
|
| 1328 |
+
0% {
|
| 1329 |
+
opacity: 1;
|
| 1330 |
+
-webkit-transform: translateY(0);
|
| 1331 |
+
transform: translateY(0);
|
| 1332 |
+
}
|
| 1333 |
+
|
| 1334 |
+
100% {
|
| 1335 |
+
opacity: 0;
|
| 1336 |
+
-webkit-transform: translateY(20px);
|
| 1337 |
+
transform: translateY(20px);
|
| 1338 |
+
}
|
| 1339 |
+
}
|
| 1340 |
+
|
| 1341 |
+
@keyframes fadeOutDown {
|
| 1342 |
+
0% {
|
| 1343 |
+
opacity: 1;
|
| 1344 |
+
-webkit-transform: translateY(0);
|
| 1345 |
+
-ms-transform: translateY(0);
|
| 1346 |
+
transform: translateY(0);
|
| 1347 |
+
}
|
| 1348 |
+
|
| 1349 |
+
100% {
|
| 1350 |
+
opacity: 0;
|
| 1351 |
+
-webkit-transform: translateY(20px);
|
| 1352 |
+
-ms-transform: translateY(20px);
|
| 1353 |
+
transform: translateY(20px);
|
| 1354 |
+
}
|
| 1355 |
+
}
|
| 1356 |
+
|
| 1357 |
+
.fadeOutDown {
|
| 1358 |
+
-webkit-animation-name: fadeOutDown;
|
| 1359 |
+
animation-name: fadeOutDown;
|
| 1360 |
+
}
|
| 1361 |
+
|
| 1362 |
+
@-webkit-keyframes fadeOutDownBig {
|
| 1363 |
+
0% {
|
| 1364 |
+
opacity: 1;
|
| 1365 |
+
-webkit-transform: translateY(0);
|
| 1366 |
+
transform: translateY(0);
|
| 1367 |
+
}
|
| 1368 |
+
|
| 1369 |
+
100% {
|
| 1370 |
+
opacity: 0;
|
| 1371 |
+
-webkit-transform: translateY(2000px);
|
| 1372 |
+
transform: translateY(2000px);
|
| 1373 |
+
}
|
| 1374 |
+
}
|
| 1375 |
+
|
| 1376 |
+
@keyframes fadeOutDownBig {
|
| 1377 |
+
0% {
|
| 1378 |
+
opacity: 1;
|
| 1379 |
+
-webkit-transform: translateY(0);
|
| 1380 |
+
-ms-transform: translateY(0);
|
| 1381 |
+
transform: translateY(0);
|
| 1382 |
+
}
|
| 1383 |
+
|
| 1384 |
+
100% {
|
| 1385 |
+
opacity: 0;
|
| 1386 |
+
-webkit-transform: translateY(2000px);
|
| 1387 |
+
-ms-transform: translateY(2000px);
|
| 1388 |
+
transform: translateY(2000px);
|
| 1389 |
+
}
|
| 1390 |
+
}
|
| 1391 |
+
|
| 1392 |
+
.fadeOutDownBig {
|
| 1393 |
+
-webkit-animation-name: fadeOutDownBig;
|
| 1394 |
+
animation-name: fadeOutDownBig;
|
| 1395 |
+
}
|
| 1396 |
+
|
| 1397 |
+
@-webkit-keyframes fadeOutLeft {
|
| 1398 |
+
0% {
|
| 1399 |
+
opacity: 1;
|
| 1400 |
+
-webkit-transform: translateX(0);
|
| 1401 |
+
transform: translateX(0);
|
| 1402 |
+
}
|
| 1403 |
+
|
| 1404 |
+
100% {
|
| 1405 |
+
opacity: 0;
|
| 1406 |
+
-webkit-transform: translateX(-20px);
|
| 1407 |
+
transform: translateX(-20px);
|
| 1408 |
+
}
|
| 1409 |
+
}
|
| 1410 |
+
|
| 1411 |
+
@keyframes fadeOutLeft {
|
| 1412 |
+
0% {
|
| 1413 |
+
opacity: 1;
|
| 1414 |
+
-webkit-transform: translateX(0);
|
| 1415 |
+
-ms-transform: translateX(0);
|
| 1416 |
+
transform: translateX(0);
|
| 1417 |
+
}
|
| 1418 |
+
|
| 1419 |
+
100% {
|
| 1420 |
+
opacity: 0;
|
| 1421 |
+
-webkit-transform: translateX(-20px);
|
| 1422 |
+
-ms-transform: translateX(-20px);
|
| 1423 |
+
transform: translateX(-20px);
|
| 1424 |
+
}
|
| 1425 |
+
}
|
| 1426 |
+
|
| 1427 |
+
.fadeOutLeft {
|
| 1428 |
+
-webkit-animation-name: fadeOutLeft;
|
| 1429 |
+
animation-name: fadeOutLeft;
|
| 1430 |
+
}
|
| 1431 |
+
|
| 1432 |
+
@-webkit-keyframes fadeOutLeftBig {
|
| 1433 |
+
0% {
|
| 1434 |
+
opacity: 1;
|
| 1435 |
+
-webkit-transform: translateX(0);
|
| 1436 |
+
transform: translateX(0);
|
| 1437 |
+
}
|
| 1438 |
+
|
| 1439 |
+
100% {
|
| 1440 |
+
opacity: 0;
|
| 1441 |
+
-webkit-transform: translateX(-2000px);
|
| 1442 |
+
transform: translateX(-2000px);
|
| 1443 |
+
}
|
| 1444 |
+
}
|
| 1445 |
+
|
| 1446 |
+
@keyframes fadeOutLeftBig {
|
| 1447 |
+
0% {
|
| 1448 |
+
opacity: 1;
|
| 1449 |
+
-webkit-transform: translateX(0);
|
| 1450 |
+
-ms-transform: translateX(0);
|
| 1451 |
+
transform: translateX(0);
|
| 1452 |
+
}
|
| 1453 |
+
|
| 1454 |
+
100% {
|
| 1455 |
+
opacity: 0;
|
| 1456 |
+
-webkit-transform: translateX(-2000px);
|
| 1457 |
+
-ms-transform: translateX(-2000px);
|
| 1458 |
+
transform: translateX(-2000px);
|
| 1459 |
+
}
|
| 1460 |
+
}
|
| 1461 |
+
|
| 1462 |
+
.fadeOutLeftBig {
|
| 1463 |
+
-webkit-animation-name: fadeOutLeftBig;
|
| 1464 |
+
animation-name: fadeOutLeftBig;
|
| 1465 |
+
}
|
| 1466 |
+
|
| 1467 |
+
@-webkit-keyframes fadeOutRight {
|
| 1468 |
+
0% {
|
| 1469 |
+
opacity: 1;
|
| 1470 |
+
-webkit-transform: translateX(0);
|
| 1471 |
+
transform: translateX(0);
|
| 1472 |
+
}
|
| 1473 |
+
|
| 1474 |
+
100% {
|
| 1475 |
+
opacity: 0;
|
| 1476 |
+
-webkit-transform: translateX(20px);
|
| 1477 |
+
transform: translateX(20px);
|
| 1478 |
+
}
|
| 1479 |
+
}
|
| 1480 |
+
|
| 1481 |
+
@keyframes fadeOutRight {
|
| 1482 |
+
0% {
|
| 1483 |
+
opacity: 1;
|
| 1484 |
+
-webkit-transform: translateX(0);
|
| 1485 |
+
-ms-transform: translateX(0);
|
| 1486 |
+
transform: translateX(0);
|
| 1487 |
+
}
|
| 1488 |
+
|
| 1489 |
+
100% {
|
| 1490 |
+
opacity: 0;
|
| 1491 |
+
-webkit-transform: translateX(20px);
|
| 1492 |
+
-ms-transform: translateX(20px);
|
| 1493 |
+
transform: translateX(20px);
|
| 1494 |
+
}
|
| 1495 |
+
}
|
| 1496 |
+
|
| 1497 |
+
.fadeOutRight {
|
| 1498 |
+
-webkit-animation-name: fadeOutRight;
|
| 1499 |
+
animation-name: fadeOutRight;
|
| 1500 |
+
}
|
| 1501 |
+
|
| 1502 |
+
@-webkit-keyframes fadeOutRightBig {
|
| 1503 |
+
0% {
|
| 1504 |
+
opacity: 1;
|
| 1505 |
+
-webkit-transform: translateX(0);
|
| 1506 |
+
transform: translateX(0);
|
| 1507 |
+
}
|
| 1508 |
+
|
| 1509 |
+
100% {
|
| 1510 |
+
opacity: 0;
|
| 1511 |
+
-webkit-transform: translateX(2000px);
|
| 1512 |
+
transform: translateX(2000px);
|
| 1513 |
+
}
|
| 1514 |
+
}
|
| 1515 |
+
|
| 1516 |
+
@keyframes fadeOutRightBig {
|
| 1517 |
+
0% {
|
| 1518 |
+
opacity: 1;
|
| 1519 |
+
-webkit-transform: translateX(0);
|
| 1520 |
+
-ms-transform: translateX(0);
|
| 1521 |
+
transform: translateX(0);
|
| 1522 |
+
}
|
| 1523 |
+
|
| 1524 |
+
100% {
|
| 1525 |
+
opacity: 0;
|
| 1526 |
+
-webkit-transform: translateX(2000px);
|
| 1527 |
+
-ms-transform: translateX(2000px);
|
| 1528 |
+
transform: translateX(2000px);
|
| 1529 |
+
}
|
| 1530 |
+
}
|
| 1531 |
+
|
| 1532 |
+
.fadeOutRightBig {
|
| 1533 |
+
-webkit-animation-name: fadeOutRightBig;
|
| 1534 |
+
animation-name: fadeOutRightBig;
|
| 1535 |
+
}
|
| 1536 |
+
|
| 1537 |
+
@-webkit-keyframes fadeOutUp {
|
| 1538 |
+
0% {
|
| 1539 |
+
opacity: 1;
|
| 1540 |
+
-webkit-transform: translateY(0);
|
| 1541 |
+
transform: translateY(0);
|
| 1542 |
+
}
|
| 1543 |
+
|
| 1544 |
+
100% {
|
| 1545 |
+
opacity: 0;
|
| 1546 |
+
-webkit-transform: translateY(-20px);
|
| 1547 |
+
transform: translateY(-20px);
|
| 1548 |
+
}
|
| 1549 |
+
}
|
| 1550 |
+
|
| 1551 |
+
@keyframes fadeOutUp {
|
| 1552 |
+
0% {
|
| 1553 |
+
opacity: 1;
|
| 1554 |
+
-webkit-transform: translateY(0);
|
| 1555 |
+
-ms-transform: translateY(0);
|
| 1556 |
+
transform: translateY(0);
|
| 1557 |
+
}
|
| 1558 |
+
|
| 1559 |
+
100% {
|
| 1560 |
+
opacity: 0;
|
| 1561 |
+
-webkit-transform: translateY(-20px);
|
| 1562 |
+
-ms-transform: translateY(-20px);
|
| 1563 |
+
transform: translateY(-20px);
|
| 1564 |
+
}
|
| 1565 |
+
}
|
| 1566 |
+
|
| 1567 |
+
.fadeOutUp {
|
| 1568 |
+
-webkit-animation-name: fadeOutUp;
|
| 1569 |
+
animation-name: fadeOutUp;
|
| 1570 |
+
}
|
| 1571 |
+
|
| 1572 |
+
@-webkit-keyframes fadeOutUpBig {
|
| 1573 |
+
0% {
|
| 1574 |
+
opacity: 1;
|
| 1575 |
+
-webkit-transform: translateY(0);
|
| 1576 |
+
transform: translateY(0);
|
| 1577 |
+
}
|
| 1578 |
+
|
| 1579 |
+
100% {
|
| 1580 |
+
opacity: 0;
|
| 1581 |
+
-webkit-transform: translateY(-2000px);
|
| 1582 |
+
transform: translateY(-2000px);
|
| 1583 |
+
}
|
| 1584 |
+
}
|
| 1585 |
+
|
| 1586 |
+
@keyframes fadeOutUpBig {
|
| 1587 |
+
0% {
|
| 1588 |
+
opacity: 1;
|
| 1589 |
+
-webkit-transform: translateY(0);
|
| 1590 |
+
-ms-transform: translateY(0);
|
| 1591 |
+
transform: translateY(0);
|
| 1592 |
+
}
|
| 1593 |
+
|
| 1594 |
+
100% {
|
| 1595 |
+
opacity: 0;
|
| 1596 |
+
-webkit-transform: translateY(-2000px);
|
| 1597 |
+
-ms-transform: translateY(-2000px);
|
| 1598 |
+
transform: translateY(-2000px);
|
| 1599 |
+
}
|
| 1600 |
+
}
|
| 1601 |
+
|
| 1602 |
+
.fadeOutUpBig {
|
| 1603 |
+
-webkit-animation-name: fadeOutUpBig;
|
| 1604 |
+
animation-name: fadeOutUpBig;
|
| 1605 |
+
}
|
| 1606 |
+
|
| 1607 |
+
@-webkit-keyframes flip {
|
| 1608 |
+
0% {
|
| 1609 |
+
-webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
|
| 1610 |
+
transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
|
| 1611 |
+
-webkit-animation-timing-function: ease-out;
|
| 1612 |
+
animation-timing-function: ease-out;
|
| 1613 |
+
}
|
| 1614 |
+
|
| 1615 |
+
40% {
|
| 1616 |
+
-webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
|
| 1617 |
+
transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
|
| 1618 |
+
-webkit-animation-timing-function: ease-out;
|
| 1619 |
+
animation-timing-function: ease-out;
|
| 1620 |
+
}
|
| 1621 |
+
|
| 1622 |
+
50% {
|
| 1623 |
+
-webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
|
| 1624 |
+
transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
|
| 1625 |
+
-webkit-animation-timing-function: ease-in;
|
| 1626 |
+
animation-timing-function: ease-in;
|
| 1627 |
+
}
|
| 1628 |
+
|
| 1629 |
+
80% {
|
| 1630 |
+
-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
|
| 1631 |
+
transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
|
| 1632 |
+
-webkit-animation-timing-function: ease-in;
|
| 1633 |
+
animation-timing-function: ease-in;
|
| 1634 |
+
}
|
| 1635 |
+
|
| 1636 |
+
100% {
|
| 1637 |
+
-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
|
| 1638 |
+
transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
|
| 1639 |
+
-webkit-animation-timing-function: ease-in;
|
| 1640 |
+
animation-timing-function: ease-in;
|
| 1641 |
+
}
|
| 1642 |
+
}
|
| 1643 |
+
|
| 1644 |
+
@keyframes flip {
|
| 1645 |
+
0% {
|
| 1646 |
+
-webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
|
| 1647 |
+
-ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
|
| 1648 |
+
transform: perspective(400px) translateZ(0) rotateY(0) scale(1);
|
| 1649 |
+
-webkit-animation-timing-function: ease-out;
|
| 1650 |
+
animation-timing-function: ease-out;
|
| 1651 |
+
}
|
| 1652 |
+
|
| 1653 |
+
40% {
|
| 1654 |
+
-webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
|
| 1655 |
+
-ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
|
| 1656 |
+
transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1);
|
| 1657 |
+
-webkit-animation-timing-function: ease-out;
|
| 1658 |
+
animation-timing-function: ease-out;
|
| 1659 |
+
}
|
| 1660 |
+
|
| 1661 |
+
50% {
|
| 1662 |
+
-webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
|
| 1663 |
+
-ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
|
| 1664 |
+
transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1);
|
| 1665 |
+
-webkit-animation-timing-function: ease-in;
|
| 1666 |
+
animation-timing-function: ease-in;
|
| 1667 |
+
}
|
| 1668 |
+
|
| 1669 |
+
80% {
|
| 1670 |
+
-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
|
| 1671 |
+
-ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
|
| 1672 |
+
transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95);
|
| 1673 |
+
-webkit-animation-timing-function: ease-in;
|
| 1674 |
+
animation-timing-function: ease-in;
|
| 1675 |
+
}
|
| 1676 |
+
|
| 1677 |
+
100% {
|
| 1678 |
+
-webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
|
| 1679 |
+
-ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
|
| 1680 |
+
transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1);
|
| 1681 |
+
-webkit-animation-timing-function: ease-in;
|
| 1682 |
+
animation-timing-function: ease-in;
|
| 1683 |
+
}
|
| 1684 |
+
}
|
| 1685 |
+
|
| 1686 |
+
.animated.flip {
|
| 1687 |
+
-webkit-backface-visibility: visible;
|
| 1688 |
+
-ms-backface-visibility: visible;
|
| 1689 |
+
backface-visibility: visible;
|
| 1690 |
+
-webkit-animation-name: flip;
|
| 1691 |
+
animation-name: flip;
|
| 1692 |
+
}
|
| 1693 |
+
|
| 1694 |
+
@-webkit-keyframes flipInX {
|
| 1695 |
+
0% {
|
| 1696 |
+
-webkit-transform: perspective(400px) rotateX(90deg);
|
| 1697 |
+
transform: perspective(400px) rotateX(90deg);
|
| 1698 |
+
opacity: 0;
|
| 1699 |
+
}
|
| 1700 |
+
|
| 1701 |
+
40% {
|
| 1702 |
+
-webkit-transform: perspective(400px) rotateX(-10deg);
|
| 1703 |
+
transform: perspective(400px) rotateX(-10deg);
|
| 1704 |
+
}
|
| 1705 |
+
|
| 1706 |
+
70% {
|
| 1707 |
+
-webkit-transform: perspective(400px) rotateX(10deg);
|
| 1708 |
+
transform: perspective(400px) rotateX(10deg);
|
| 1709 |
+
}
|
| 1710 |
+
|
| 1711 |
+
100% {
|
| 1712 |
+
-webkit-transform: perspective(400px) rotateX(0deg);
|
| 1713 |
+
transform: perspective(400px) rotateX(0deg);
|
| 1714 |
+
opacity: 1;
|
| 1715 |
+
}
|
| 1716 |
+
}
|
| 1717 |
+
|
| 1718 |
+
@keyframes flipInX {
|
| 1719 |
+
0% {
|
| 1720 |
+
-webkit-transform: perspective(400px) rotateX(90deg);
|
| 1721 |
+
-ms-transform: perspective(400px) rotateX(90deg);
|
| 1722 |
+
transform: perspective(400px) rotateX(90deg);
|
| 1723 |
+
opacity: 0;
|
| 1724 |
+
}
|
| 1725 |
+
|
| 1726 |
+
40% {
|
| 1727 |
+
-webkit-transform: perspective(400px) rotateX(-10deg);
|
| 1728 |
+
-ms-transform: perspective(400px) rotateX(-10deg);
|
| 1729 |
+
transform: perspective(400px) rotateX(-10deg);
|
| 1730 |
+
}
|
| 1731 |
+
|
| 1732 |
+
70% {
|
| 1733 |
+
-webkit-transform: perspective(400px) rotateX(10deg);
|
| 1734 |
+
-ms-transform: perspective(400px) rotateX(10deg);
|
| 1735 |
+
transform: perspective(400px) rotateX(10deg);
|
| 1736 |
+
}
|
| 1737 |
+
|
| 1738 |
+
100% {
|
| 1739 |
+
-webkit-transform: perspective(400px) rotateX(0deg);
|
| 1740 |
+
-ms-transform: perspective(400px) rotateX(0deg);
|
| 1741 |
+
transform: perspective(400px) rotateX(0deg);
|
| 1742 |
+
opacity: 1;
|
| 1743 |
+
}
|
| 1744 |
+
}
|
| 1745 |
+
|
| 1746 |
+
.flipInX {
|
| 1747 |
+
-webkit-backface-visibility: visible !important;
|
| 1748 |
+
-ms-backface-visibility: visible !important;
|
| 1749 |
+
backface-visibility: visible !important;
|
| 1750 |
+
-webkit-animation-name: flipInX;
|
| 1751 |
+
animation-name: flipInX;
|
| 1752 |
+
}
|
| 1753 |
+
|
| 1754 |
+
@-webkit-keyframes flipInY {
|
| 1755 |
+
0% {
|
| 1756 |
+
-webkit-transform: perspective(400px) rotateY(90deg);
|
| 1757 |
+
transform: perspective(400px) rotateY(90deg);
|
| 1758 |
+
opacity: 0;
|
| 1759 |
+
}
|
| 1760 |
+
|
| 1761 |
+
40% {
|
| 1762 |
+
-webkit-transform: perspective(400px) rotateY(-10deg);
|
| 1763 |
+
transform: perspective(400px) rotateY(-10deg);
|
| 1764 |
+
}
|
| 1765 |
+
|
| 1766 |
+
70% {
|
| 1767 |
+
-webkit-transform: perspective(400px) rotateY(10deg);
|
| 1768 |
+
transform: perspective(400px) rotateY(10deg);
|
| 1769 |
+
}
|
| 1770 |
+
|
| 1771 |
+
100% {
|
| 1772 |
+
-webkit-transform: perspective(400px) rotateY(0deg);
|
| 1773 |
+
transform: perspective(400px) rotateY(0deg);
|
| 1774 |
+
opacity: 1;
|
| 1775 |
+
}
|
| 1776 |
+
}
|
| 1777 |
+
|
| 1778 |
+
@keyframes flipInY {
|
| 1779 |
+
0% {
|
| 1780 |
+
-webkit-transform: perspective(400px) rotateY(90deg);
|
| 1781 |
+
-ms-transform: perspective(400px) rotateY(90deg);
|
| 1782 |
+
transform: perspective(400px) rotateY(90deg);
|
| 1783 |
+
opacity: 0;
|
| 1784 |
+
}
|
| 1785 |
+
|
| 1786 |
+
40% {
|
| 1787 |
+
-webkit-transform: perspective(400px) rotateY(-10deg);
|
| 1788 |
+
-ms-transform: perspective(400px) rotateY(-10deg);
|
| 1789 |
+
transform: perspective(400px) rotateY(-10deg);
|
| 1790 |
+
}
|
| 1791 |
+
|
| 1792 |
+
70% {
|
| 1793 |
+
-webkit-transform: perspective(400px) rotateY(10deg);
|
| 1794 |
+
-ms-transform: perspective(400px) rotateY(10deg);
|
| 1795 |
+
transform: perspective(400px) rotateY(10deg);
|
| 1796 |
+
}
|
| 1797 |
+
|
| 1798 |
+
100% {
|
| 1799 |
+
-webkit-transform: perspective(400px) rotateY(0deg);
|
| 1800 |
+
-ms-transform: perspective(400px) rotateY(0deg);
|
| 1801 |
+
transform: perspective(400px) rotateY(0deg);
|
| 1802 |
+
opacity: 1;
|
| 1803 |
+
}
|
| 1804 |
+
}
|
| 1805 |
+
|
| 1806 |
+
.flipInY {
|
| 1807 |
+
-webkit-backface-visibility: visible !important;
|
| 1808 |
+
-ms-backface-visibility: visible !important;
|
| 1809 |
+
backface-visibility: visible !important;
|
| 1810 |
+
-webkit-animation-name: flipInY;
|
| 1811 |
+
animation-name: flipInY;
|
| 1812 |
+
}
|
| 1813 |
+
|
| 1814 |
+
@-webkit-keyframes flipOutX {
|
| 1815 |
+
0% {
|
| 1816 |
+
-webkit-transform: perspective(400px) rotateX(0deg);
|
| 1817 |
+
transform: perspective(400px) rotateX(0deg);
|
| 1818 |
+
opacity: 1;
|
| 1819 |
+
}
|
| 1820 |
+
|
| 1821 |
+
100% {
|
| 1822 |
+
-webkit-transform: perspective(400px) rotateX(90deg);
|
| 1823 |
+
transform: perspective(400px) rotateX(90deg);
|
| 1824 |
+
opacity: 0;
|
| 1825 |
+
}
|
| 1826 |
+
}
|
| 1827 |
+
|
| 1828 |
+
@keyframes flipOutX {
|
| 1829 |
+
0% {
|
| 1830 |
+
-webkit-transform: perspective(400px) rotateX(0deg);
|
| 1831 |
+
-ms-transform: perspective(400px) rotateX(0deg);
|
| 1832 |
+
transform: perspective(400px) rotateX(0deg);
|
| 1833 |
+
opacity: 1;
|
| 1834 |
+
}
|
| 1835 |
+
|
| 1836 |
+
100% {
|
| 1837 |
+
-webkit-transform: perspective(400px) rotateX(90deg);
|
| 1838 |
+
-ms-transform: perspective(400px) rotateX(90deg);
|
| 1839 |
+
transform: perspective(400px) rotateX(90deg);
|
| 1840 |
+
opacity: 0;
|
| 1841 |
+
}
|
| 1842 |
+
}
|
| 1843 |
+
|
| 1844 |
+
.flipOutX {
|
| 1845 |
+
-webkit-animation-name: flipOutX;
|
| 1846 |
+
animation-name: flipOutX;
|
| 1847 |
+
-webkit-backface-visibility: visible !important;
|
| 1848 |
+
-ms-backface-visibility: visible !important;
|
| 1849 |
+
backface-visibility: visible !important;
|
| 1850 |
+
}
|
| 1851 |
+
|
| 1852 |
+
@-webkit-keyframes flipOutY {
|
| 1853 |
+
0% {
|
| 1854 |
+
-webkit-transform: perspective(400px) rotateY(0deg);
|
| 1855 |
+
transform: perspective(400px) rotateY(0deg);
|
| 1856 |
+
opacity: 1;
|
| 1857 |
+
}
|
| 1858 |
+
|
| 1859 |
+
100% {
|
| 1860 |
+
-webkit-transform: perspective(400px) rotateY(90deg);
|
| 1861 |
+
transform: perspective(400px) rotateY(90deg);
|
| 1862 |
+
opacity: 0;
|
| 1863 |
+
}
|
| 1864 |
+
}
|
| 1865 |
+
|
| 1866 |
+
@keyframes flipOutY {
|
| 1867 |
+
0% {
|
| 1868 |
+
-webkit-transform: perspective(400px) rotateY(0deg);
|
| 1869 |
+
-ms-transform: perspective(400px) rotateY(0deg);
|
| 1870 |
+
transform: perspective(400px) rotateY(0deg);
|
| 1871 |
+
opacity: 1;
|
| 1872 |
+
}
|
| 1873 |
+
|
| 1874 |
+
100% {
|
| 1875 |
+
-webkit-transform: perspective(400px) rotateY(90deg);
|
| 1876 |
+
-ms-transform: perspective(400px) rotateY(90deg);
|
| 1877 |
+
transform: perspective(400px) rotateY(90deg);
|
| 1878 |
+
opacity: 0;
|
| 1879 |
+
}
|
| 1880 |
+
}
|
| 1881 |
+
|
| 1882 |
+
.flipOutY {
|
| 1883 |
+
-webkit-backface-visibility: visible !important;
|
| 1884 |
+
-ms-backface-visibility: visible !important;
|
| 1885 |
+
backface-visibility: visible !important;
|
| 1886 |
+
-webkit-animation-name: flipOutY;
|
| 1887 |
+
animation-name: flipOutY;
|
| 1888 |
+
}
|
| 1889 |
+
|
| 1890 |
+
@-webkit-keyframes lightSpeedIn {
|
| 1891 |
+
0% {
|
| 1892 |
+
-webkit-transform: translateX(100%) skewX(-30deg);
|
| 1893 |
+
transform: translateX(100%) skewX(-30deg);
|
| 1894 |
+
opacity: 0;
|
| 1895 |
+
}
|
| 1896 |
+
|
| 1897 |
+
60% {
|
| 1898 |
+
-webkit-transform: translateX(-20%) skewX(30deg);
|
| 1899 |
+
transform: translateX(-20%) skewX(30deg);
|
| 1900 |
+
opacity: 1;
|
| 1901 |
+
}
|
| 1902 |
+
|
| 1903 |
+
80% {
|
| 1904 |
+
-webkit-transform: translateX(0%) skewX(-15deg);
|
| 1905 |
+
transform: translateX(0%) skewX(-15deg);
|
| 1906 |
+
opacity: 1;
|
| 1907 |
+
}
|
| 1908 |
+
|
| 1909 |
+
100% {
|
| 1910 |
+
-webkit-transform: translateX(0%) skewX(0deg);
|
| 1911 |
+
transform: translateX(0%) skewX(0deg);
|
| 1912 |
+
opacity: 1;
|
| 1913 |
+
}
|
| 1914 |
+
}
|
| 1915 |
+
|
| 1916 |
+
@keyframes lightSpeedIn {
|
| 1917 |
+
0% {
|
| 1918 |
+
-webkit-transform: translateX(100%) skewX(-30deg);
|
| 1919 |
+
-ms-transform: translateX(100%) skewX(-30deg);
|
| 1920 |
+
transform: translateX(100%) skewX(-30deg);
|
| 1921 |
+
opacity: 0;
|
| 1922 |
+
}
|
| 1923 |
+
|
| 1924 |
+
60% {
|
| 1925 |
+
-webkit-transform: translateX(-20%) skewX(30deg);
|
| 1926 |
+
-ms-transform: translateX(-20%) skewX(30deg);
|
| 1927 |
+
transform: translateX(-20%) skewX(30deg);
|
| 1928 |
+
opacity: 1;
|
| 1929 |
+
}
|
| 1930 |
+
|
| 1931 |
+
80% {
|
| 1932 |
+
-webkit-transform: translateX(0%) skewX(-15deg);
|
| 1933 |
+
-ms-transform: translateX(0%) skewX(-15deg);
|
| 1934 |
+
transform: translateX(0%) skewX(-15deg);
|
| 1935 |
+
opacity: 1;
|
| 1936 |
+
}
|
| 1937 |
+
|
| 1938 |
+
100% {
|
| 1939 |
+
-webkit-transform: translateX(0%) skewX(0deg);
|
| 1940 |
+
-ms-transform: translateX(0%) skewX(0deg);
|
| 1941 |
+
transform: translateX(0%) skewX(0deg);
|
| 1942 |
+
opacity: 1;
|
| 1943 |
+
}
|
| 1944 |
+
}
|
| 1945 |
+
|
| 1946 |
+
.lightSpeedIn {
|
| 1947 |
+
-webkit-animation-name: lightSpeedIn;
|
| 1948 |
+
animation-name: lightSpeedIn;
|
| 1949 |
+
-webkit-animation-timing-function: ease-out;
|
| 1950 |
+
animation-timing-function: ease-out;
|
| 1951 |
+
}
|
| 1952 |
+
|
| 1953 |
+
@-webkit-keyframes lightSpeedOut {
|
| 1954 |
+
0% {
|
| 1955 |
+
-webkit-transform: translateX(0%) skewX(0deg);
|
| 1956 |
+
transform: translateX(0%) skewX(0deg);
|
| 1957 |
+
opacity: 1;
|
| 1958 |
+
}
|
| 1959 |
+
|
| 1960 |
+
100% {
|
| 1961 |
+
-webkit-transform: translateX(100%) skewX(-30deg);
|
| 1962 |
+
transform: translateX(100%) skewX(-30deg);
|
| 1963 |
+
opacity: 0;
|
| 1964 |
+
}
|
| 1965 |
+
}
|
| 1966 |
+
|
| 1967 |
+
@keyframes lightSpeedOut {
|
| 1968 |
+
0% {
|
| 1969 |
+
-webkit-transform: translateX(0%) skewX(0deg);
|
| 1970 |
+
-ms-transform: translateX(0%) skewX(0deg);
|
| 1971 |
+
transform: translateX(0%) skewX(0deg);
|
| 1972 |
+
opacity: 1;
|
| 1973 |
+
}
|
| 1974 |
+
|
| 1975 |
+
100% {
|
| 1976 |
+
-webkit-transform: translateX(100%) skewX(-30deg);
|
| 1977 |
+
-ms-transform: translateX(100%) skewX(-30deg);
|
| 1978 |
+
transform: translateX(100%) skewX(-30deg);
|
| 1979 |
+
opacity: 0;
|
| 1980 |
+
}
|
| 1981 |
+
}
|
| 1982 |
+
|
| 1983 |
+
.lightSpeedOut {
|
| 1984 |
+
-webkit-animation-name: lightSpeedOut;
|
| 1985 |
+
animation-name: lightSpeedOut;
|
| 1986 |
+
-webkit-animation-timing-function: ease-in;
|
| 1987 |
+
animation-timing-function: ease-in;
|
| 1988 |
+
}
|
| 1989 |
+
|
| 1990 |
+
@-webkit-keyframes rotateIn {
|
| 1991 |
+
0% {
|
| 1992 |
+
-webkit-transform-origin: center center;
|
| 1993 |
+
transform-origin: center center;
|
| 1994 |
+
-webkit-transform: rotate(-200deg);
|
| 1995 |
+
transform: rotate(-200deg);
|
| 1996 |
+
opacity: 0;
|
| 1997 |
+
}
|
| 1998 |
+
|
| 1999 |
+
100% {
|
| 2000 |
+
-webkit-transform-origin: center center;
|
| 2001 |
+
transform-origin: center center;
|
| 2002 |
+
-webkit-transform: rotate(0);
|
| 2003 |
+
transform: rotate(0);
|
| 2004 |
+
opacity: 1;
|
| 2005 |
+
}
|
| 2006 |
+
}
|
| 2007 |
+
|
| 2008 |
+
@keyframes rotateIn {
|
| 2009 |
+
0% {
|
| 2010 |
+
-webkit-transform-origin: center center;
|
| 2011 |
+
-ms-transform-origin: center center;
|
| 2012 |
+
transform-origin: center center;
|
| 2013 |
+
-webkit-transform: rotate(-200deg);
|
| 2014 |
+
-ms-transform: rotate(-200deg);
|
| 2015 |
+
transform: rotate(-200deg);
|
| 2016 |
+
opacity: 0;
|
| 2017 |
+
}
|
| 2018 |
+
|
| 2019 |
+
100% {
|
| 2020 |
+
-webkit-transform-origin: center center;
|
| 2021 |
+
-ms-transform-origin: center center;
|
| 2022 |
+
transform-origin: center center;
|
| 2023 |
+
-webkit-transform: rotate(0);
|
| 2024 |
+
-ms-transform: rotate(0);
|
| 2025 |
+
transform: rotate(0);
|
| 2026 |
+
opacity: 1;
|
| 2027 |
+
}
|
| 2028 |
+
}
|
| 2029 |
+
|
| 2030 |
+
.rotateIn {
|
| 2031 |
+
-webkit-animation-name: rotateIn;
|
| 2032 |
+
animation-name: rotateIn;
|
| 2033 |
+
}
|
| 2034 |
+
|
| 2035 |
+
@-webkit-keyframes rotateInDownLeft {
|
| 2036 |
+
0% {
|
| 2037 |
+
-webkit-transform-origin: left bottom;
|
| 2038 |
+
transform-origin: left bottom;
|
| 2039 |
+
-webkit-transform: rotate(-90deg);
|
| 2040 |
+
transform: rotate(-90deg);
|
| 2041 |
+
opacity: 0;
|
| 2042 |
+
}
|
| 2043 |
+
|
| 2044 |
+
100% {
|
| 2045 |
+
-webkit-transform-origin: left bottom;
|
| 2046 |
+
transform-origin: left bottom;
|
| 2047 |
+
-webkit-transform: rotate(0);
|
| 2048 |
+
transform: rotate(0);
|
| 2049 |
+
opacity: 1;
|
| 2050 |
+
}
|
| 2051 |
+
}
|
| 2052 |
+
|
| 2053 |
+
@keyframes rotateInDownLeft {
|
| 2054 |
+
0% {
|
| 2055 |
+
-webkit-transform-origin: left bottom;
|
| 2056 |
+
-ms-transform-origin: left bottom;
|
| 2057 |
+
transform-origin: left bottom;
|
| 2058 |
+
-webkit-transform: rotate(-90deg);
|
| 2059 |
+
-ms-transform: rotate(-90deg);
|
| 2060 |
+
transform: rotate(-90deg);
|
| 2061 |
+
opacity: 0;
|
| 2062 |
+
}
|
| 2063 |
+
|
| 2064 |
+
100% {
|
| 2065 |
+
-webkit-transform-origin: left bottom;
|
| 2066 |
+
-ms-transform-origin: left bottom;
|
| 2067 |
+
transform-origin: left bottom;
|
| 2068 |
+
-webkit-transform: rotate(0);
|
| 2069 |
+
-ms-transform: rotate(0);
|
| 2070 |
+
transform: rotate(0);
|
| 2071 |
+
opacity: 1;
|
| 2072 |
+
}
|
| 2073 |
+
}
|
| 2074 |
+
|
| 2075 |
+
.rotateInDownLeft {
|
| 2076 |
+
-webkit-animation-name: rotateInDownLeft;
|
| 2077 |
+
animation-name: rotateInDownLeft;
|
| 2078 |
+
}
|
| 2079 |
+
|
| 2080 |
+
@-webkit-keyframes rotateInDownRight {
|
| 2081 |
+
0% {
|
| 2082 |
+
-webkit-transform-origin: right bottom;
|
| 2083 |
+
transform-origin: right bottom;
|
| 2084 |
+
-webkit-transform: rotate(90deg);
|
| 2085 |
+
transform: rotate(90deg);
|
| 2086 |
+
opacity: 0;
|
| 2087 |
+
}
|
| 2088 |
+
|
| 2089 |
+
100% {
|
| 2090 |
+
-webkit-transform-origin: right bottom;
|
| 2091 |
+
transform-origin: right bottom;
|
| 2092 |
+
-webkit-transform: rotate(0);
|
| 2093 |
+
transform: rotate(0);
|
| 2094 |
+
opacity: 1;
|
| 2095 |
+
}
|
| 2096 |
+
}
|
| 2097 |
+
|
| 2098 |
+
@keyframes rotateInDownRight {
|
| 2099 |
+
0% {
|
| 2100 |
+
-webkit-transform-origin: right bottom;
|
| 2101 |
+
-ms-transform-origin: right bottom;
|
| 2102 |
+
transform-origin: right bottom;
|
| 2103 |
+
-webkit-transform: rotate(90deg);
|
| 2104 |
+
-ms-transform: rotate(90deg);
|
| 2105 |
+
transform: rotate(90deg);
|
| 2106 |
+
opacity: 0;
|
| 2107 |
+
}
|
| 2108 |
+
|
| 2109 |
+
100% {
|
| 2110 |
+
-webkit-transform-origin: right bottom;
|
| 2111 |
+
-ms-transform-origin: right bottom;
|
| 2112 |
+
transform-origin: right bottom;
|
| 2113 |
+
-webkit-transform: rotate(0);
|
| 2114 |
+
-ms-transform: rotate(0);
|
| 2115 |
+
transform: rotate(0);
|
| 2116 |
+
opacity: 1;
|
| 2117 |
+
}
|
| 2118 |
+
}
|
| 2119 |
+
|
| 2120 |
+
.rotateInDownRight {
|
| 2121 |
+
-webkit-animation-name: rotateInDownRight;
|
| 2122 |
+
animation-name: rotateInDownRight;
|
| 2123 |
+
}
|
| 2124 |
+
|
| 2125 |
+
@-webkit-keyframes rotateInUpLeft {
|
| 2126 |
+
0% {
|
| 2127 |
+
-webkit-transform-origin: left bottom;
|
| 2128 |
+
transform-origin: left bottom;
|
| 2129 |
+
-webkit-transform: rotate(90deg);
|
| 2130 |
+
transform: rotate(90deg);
|
| 2131 |
+
opacity: 0;
|
| 2132 |
+
}
|
| 2133 |
+
|
| 2134 |
+
100% {
|
| 2135 |
+
-webkit-transform-origin: left bottom;
|
| 2136 |
+
transform-origin: left bottom;
|
| 2137 |
+
-webkit-transform: rotate(0);
|
| 2138 |
+
transform: rotate(0);
|
| 2139 |
+
opacity: 1;
|
| 2140 |
+
}
|
| 2141 |
+
}
|
| 2142 |
+
|
| 2143 |
+
@keyframes rotateInUpLeft {
|
| 2144 |
+
0% {
|
| 2145 |
+
-webkit-transform-origin: left bottom;
|
| 2146 |
+
-ms-transform-origin: left bottom;
|
| 2147 |
+
transform-origin: left bottom;
|
| 2148 |
+
-webkit-transform: rotate(90deg);
|
| 2149 |
+
-ms-transform: rotate(90deg);
|
| 2150 |
+
transform: rotate(90deg);
|
| 2151 |
+
opacity: 0;
|
| 2152 |
+
}
|
| 2153 |
+
|
| 2154 |
+
100% {
|
| 2155 |
+
-webkit-transform-origin: left bottom;
|
| 2156 |
+
-ms-transform-origin: left bottom;
|
| 2157 |
+
transform-origin: left bottom;
|
| 2158 |
+
-webkit-transform: rotate(0);
|
| 2159 |
+
-ms-transform: rotate(0);
|
| 2160 |
+
transform: rotate(0);
|
| 2161 |
+
opacity: 1;
|
| 2162 |
+
}
|
| 2163 |
+
}
|
| 2164 |
+
|
| 2165 |
+
.rotateInUpLeft {
|
| 2166 |
+
-webkit-animation-name: rotateInUpLeft;
|
| 2167 |
+
animation-name: rotateInUpLeft;
|
| 2168 |
+
}
|
| 2169 |
+
|
| 2170 |
+
@-webkit-keyframes rotateInUpRight {
|
| 2171 |
+
0% {
|
| 2172 |
+
-webkit-transform-origin: right bottom;
|
| 2173 |
+
transform-origin: right bottom;
|
| 2174 |
+
-webkit-transform: rotate(-90deg);
|
| 2175 |
+
transform: rotate(-90deg);
|
| 2176 |
+
opacity: 0;
|
| 2177 |
+
}
|
| 2178 |
+
|
| 2179 |
+
100% {
|
| 2180 |
+
-webkit-transform-origin: right bottom;
|
| 2181 |
+
transform-origin: right bottom;
|
| 2182 |
+
-webkit-transform: rotate(0);
|
| 2183 |
+
transform: rotate(0);
|
| 2184 |
+
opacity: 1;
|
| 2185 |
+
}
|
| 2186 |
+
}
|
| 2187 |
+
|
| 2188 |
+
@keyframes rotateInUpRight {
|
| 2189 |
+
0% {
|
| 2190 |
+
-webkit-transform-origin: right bottom;
|
| 2191 |
+
-ms-transform-origin: right bottom;
|
| 2192 |
+
transform-origin: right bottom;
|
| 2193 |
+
-webkit-transform: rotate(-90deg);
|
| 2194 |
+
-ms-transform: rotate(-90deg);
|
| 2195 |
+
transform: rotate(-90deg);
|
| 2196 |
+
opacity: 0;
|
| 2197 |
+
}
|
| 2198 |
+
|
| 2199 |
+
100% {
|
| 2200 |
+
-webkit-transform-origin: right bottom;
|
| 2201 |
+
-ms-transform-origin: right bottom;
|
| 2202 |
+
transform-origin: right bottom;
|
| 2203 |
+
-webkit-transform: rotate(0);
|
| 2204 |
+
-ms-transform: rotate(0);
|
| 2205 |
+
transform: rotate(0);
|
| 2206 |
+
opacity: 1;
|
| 2207 |
+
}
|
| 2208 |
+
}
|
| 2209 |
+
|
| 2210 |
+
.rotateInUpRight {
|
| 2211 |
+
-webkit-animation-name: rotateInUpRight;
|
| 2212 |
+
animation-name: rotateInUpRight;
|
| 2213 |
+
}
|
| 2214 |
+
|
| 2215 |
+
@-webkit-keyframes rotateOut {
|
| 2216 |
+
0% {
|
| 2217 |
+
-webkit-transform-origin: center center;
|
| 2218 |
+
transform-origin: center center;
|
| 2219 |
+
-webkit-transform: rotate(0);
|
| 2220 |
+
transform: rotate(0);
|
| 2221 |
+
opacity: 1;
|
| 2222 |
+
}
|
| 2223 |
+
|
| 2224 |
+
100% {
|
| 2225 |
+
-webkit-transform-origin: center center;
|
| 2226 |
+
transform-origin: center center;
|
| 2227 |
+
-webkit-transform: rotate(200deg);
|
| 2228 |
+
transform: rotate(200deg);
|
| 2229 |
+
opacity: 0;
|
| 2230 |
+
}
|
| 2231 |
+
}
|
| 2232 |
+
|
| 2233 |
+
@keyframes rotateOut {
|
| 2234 |
+
0% {
|
| 2235 |
+
-webkit-transform-origin: center center;
|
| 2236 |
+
-ms-transform-origin: center center;
|
| 2237 |
+
transform-origin: center center;
|
| 2238 |
+
-webkit-transform: rotate(0);
|
| 2239 |
+
-ms-transform: rotate(0);
|
| 2240 |
+
transform: rotate(0);
|
| 2241 |
+
opacity: 1;
|
| 2242 |
+
}
|
| 2243 |
+
|
| 2244 |
+
100% {
|
| 2245 |
+
-webkit-transform-origin: center center;
|
| 2246 |
+
-ms-transform-origin: center center;
|
| 2247 |
+
transform-origin: center center;
|
| 2248 |
+
-webkit-transform: rotate(200deg);
|
| 2249 |
+
-ms-transform: rotate(200deg);
|
| 2250 |
+
transform: rotate(200deg);
|
| 2251 |
+
opacity: 0;
|
| 2252 |
+
}
|
| 2253 |
+
}
|
| 2254 |
+
|
| 2255 |
+
.rotateOut {
|
| 2256 |
+
-webkit-animation-name: rotateOut;
|
| 2257 |
+
animation-name: rotateOut;
|
| 2258 |
+
}
|
| 2259 |
+
|
| 2260 |
+
@-webkit-keyframes rotateOutDownLeft {
|
| 2261 |
+
0% {
|
| 2262 |
+
-webkit-transform-origin: left bottom;
|
| 2263 |
+
transform-origin: left bottom;
|
| 2264 |
+
-webkit-transform: rotate(0);
|
| 2265 |
+
transform: rotate(0);
|
| 2266 |
+
opacity: 1;
|
| 2267 |
+
}
|
| 2268 |
+
|
| 2269 |
+
100% {
|
| 2270 |
+
-webkit-transform-origin: left bottom;
|
| 2271 |
+
transform-origin: left bottom;
|
| 2272 |
+
-webkit-transform: rotate(90deg);
|
| 2273 |
+
transform: rotate(90deg);
|
| 2274 |
+
opacity: 0;
|
| 2275 |
+
}
|
| 2276 |
+
}
|
| 2277 |
+
|
| 2278 |
+
@keyframes rotateOutDownLeft {
|
| 2279 |
+
0% {
|
| 2280 |
+
-webkit-transform-origin: left bottom;
|
| 2281 |
+
-ms-transform-origin: left bottom;
|
| 2282 |
+
transform-origin: left bottom;
|
| 2283 |
+
-webkit-transform: rotate(0);
|
| 2284 |
+
-ms-transform: rotate(0);
|
| 2285 |
+
transform: rotate(0);
|
| 2286 |
+
opacity: 1;
|
| 2287 |
+
}
|
| 2288 |
+
|
| 2289 |
+
100% {
|
| 2290 |
+
-webkit-transform-origin: left bottom;
|
| 2291 |
+
-ms-transform-origin: left bottom;
|
| 2292 |
+
transform-origin: left bottom;
|
| 2293 |
+
-webkit-transform: rotate(90deg);
|
| 2294 |
+
-ms-transform: rotate(90deg);
|
| 2295 |
+
transform: rotate(90deg);
|
| 2296 |
+
opacity: 0;
|
| 2297 |
+
}
|
| 2298 |
+
}
|
| 2299 |
+
|
| 2300 |
+
.rotateOutDownLeft {
|
| 2301 |
+
-webkit-animation-name: rotateOutDownLeft;
|
| 2302 |
+
animation-name: rotateOutDownLeft;
|
| 2303 |
+
}
|
| 2304 |
+
|
| 2305 |
+
@-webkit-keyframes rotateOutDownRight {
|
| 2306 |
+
0% {
|
| 2307 |
+
-webkit-transform-origin: right bottom;
|
| 2308 |
+
transform-origin: right bottom;
|
| 2309 |
+
-webkit-transform: rotate(0);
|
| 2310 |
+
transform: rotate(0);
|
| 2311 |
+
opacity: 1;
|
| 2312 |
+
}
|
| 2313 |
+
|
| 2314 |
+
100% {
|
| 2315 |
+
-webkit-transform-origin: right bottom;
|
| 2316 |
+
transform-origin: right bottom;
|
| 2317 |
+
-webkit-transform: rotate(-90deg);
|
| 2318 |
+
transform: rotate(-90deg);
|
| 2319 |
+
opacity: 0;
|
| 2320 |
+
}
|
| 2321 |
+
}
|
| 2322 |
+
|
| 2323 |
+
@keyframes rotateOutDownRight {
|
| 2324 |
+
0% {
|
| 2325 |
+
-webkit-transform-origin: right bottom;
|
| 2326 |
+
-ms-transform-origin: right bottom;
|
| 2327 |
+
transform-origin: right bottom;
|
| 2328 |
+
-webkit-transform: rotate(0);
|
| 2329 |
+
-ms-transform: rotate(0);
|
| 2330 |
+
transform: rotate(0);
|
| 2331 |
+
opacity: 1;
|
| 2332 |
+
}
|
| 2333 |
+
|
| 2334 |
+
100% {
|
| 2335 |
+
-webkit-transform-origin: right bottom;
|
| 2336 |
+
-ms-transform-origin: right bottom;
|
| 2337 |
+
transform-origin: right bottom;
|
| 2338 |
+
-webkit-transform: rotate(-90deg);
|
| 2339 |
+
-ms-transform: rotate(-90deg);
|
| 2340 |
+
transform: rotate(-90deg);
|
| 2341 |
+
opacity: 0;
|
| 2342 |
+
}
|
| 2343 |
+
}
|
| 2344 |
+
|
| 2345 |
+
.rotateOutDownRight {
|
| 2346 |
+
-webkit-animation-name: rotateOutDownRight;
|
| 2347 |
+
animation-name: rotateOutDownRight;
|
| 2348 |
+
}
|
| 2349 |
+
|
| 2350 |
+
@-webkit-keyframes rotateOutUpLeft {
|
| 2351 |
+
0% {
|
| 2352 |
+
-webkit-transform-origin: left bottom;
|
| 2353 |
+
transform-origin: left bottom;
|
| 2354 |
+
-webkit-transform: rotate(0);
|
| 2355 |
+
transform: rotate(0);
|
| 2356 |
+
opacity: 1;
|
| 2357 |
+
}
|
| 2358 |
+
|
| 2359 |
+
100% {
|
| 2360 |
+
-webkit-transform-origin: left bottom;
|
| 2361 |
+
transform-origin: left bottom;
|
| 2362 |
+
-webkit-transform: rotate(-90deg);
|
| 2363 |
+
transform: rotate(-90deg);
|
| 2364 |
+
opacity: 0;
|
| 2365 |
+
}
|
| 2366 |
+
}
|
| 2367 |
+
|
| 2368 |
+
@keyframes rotateOutUpLeft {
|
| 2369 |
+
0% {
|
| 2370 |
+
-webkit-transform-origin: left bottom;
|
| 2371 |
+
-ms-transform-origin: left bottom;
|
| 2372 |
+
transform-origin: left bottom;
|
| 2373 |
+
-webkit-transform: rotate(0);
|
| 2374 |
+
-ms-transform: rotate(0);
|
| 2375 |
+
transform: rotate(0);
|
| 2376 |
+
opacity: 1;
|
| 2377 |
+
}
|
| 2378 |
+
|
| 2379 |
+
100% {
|
| 2380 |
+
-webkit-transform-origin: left bottom;
|
| 2381 |
+
-ms-transform-origin: left bottom;
|
| 2382 |
+
transform-origin: left bottom;
|
| 2383 |
+
-webkit-transform: rotate(-90deg);
|
| 2384 |
+
-ms-transform: rotate(-90deg);
|
| 2385 |
+
transform: rotate(-90deg);
|
| 2386 |
+
opacity: 0;
|
| 2387 |
+
}
|
| 2388 |
+
}
|
| 2389 |
+
|
| 2390 |
+
.rotateOutUpLeft {
|
| 2391 |
+
-webkit-animation-name: rotateOutUpLeft;
|
| 2392 |
+
animation-name: rotateOutUpLeft;
|
| 2393 |
+
}
|
| 2394 |
+
|
| 2395 |
+
@-webkit-keyframes rotateOutUpRight {
|
| 2396 |
+
0% {
|
| 2397 |
+
-webkit-transform-origin: right bottom;
|
| 2398 |
+
transform-origin: right bottom;
|
| 2399 |
+
-webkit-transform: rotate(0);
|
| 2400 |
+
transform: rotate(0);
|
| 2401 |
+
opacity: 1;
|
| 2402 |
+
}
|
| 2403 |
+
|
| 2404 |
+
100% {
|
| 2405 |
+
-webkit-transform-origin: right bottom;
|
| 2406 |
+
transform-origin: right bottom;
|
| 2407 |
+
-webkit-transform: rotate(90deg);
|
| 2408 |
+
transform: rotate(90deg);
|
| 2409 |
+
opacity: 0;
|
| 2410 |
+
}
|
| 2411 |
+
}
|
| 2412 |
+
|
| 2413 |
+
@keyframes rotateOutUpRight {
|
| 2414 |
+
0% {
|
| 2415 |
+
-webkit-transform-origin: right bottom;
|
| 2416 |
+
-ms-transform-origin: right bottom;
|
| 2417 |
+
transform-origin: right bottom;
|
| 2418 |
+
-webkit-transform: rotate(0);
|
| 2419 |
+
-ms-transform: rotate(0);
|
| 2420 |
+
transform: rotate(0);
|
| 2421 |
+
opacity: 1;
|
| 2422 |
+
}
|
| 2423 |
+
|
| 2424 |
+
100% {
|
| 2425 |
+
-webkit-transform-origin: right bottom;
|
| 2426 |
+
-ms-transform-origin: right bottom;
|
| 2427 |
+
transform-origin: right bottom;
|
| 2428 |
+
-webkit-transform: rotate(90deg);
|
| 2429 |
+
-ms-transform: rotate(90deg);
|
| 2430 |
+
transform: rotate(90deg);
|
| 2431 |
+
opacity: 0;
|
| 2432 |
+
}
|
| 2433 |
+
}
|
| 2434 |
+
|
| 2435 |
+
.rotateOutUpRight {
|
| 2436 |
+
-webkit-animation-name: rotateOutUpRight;
|
| 2437 |
+
animation-name: rotateOutUpRight;
|
| 2438 |
+
}
|
| 2439 |
+
|
| 2440 |
+
@-webkit-keyframes slideInDown {
|
| 2441 |
+
0% {
|
| 2442 |
+
opacity: 0;
|
| 2443 |
+
-webkit-transform: translateY(-2000px);
|
| 2444 |
+
transform: translateY(-2000px);
|
| 2445 |
+
}
|
| 2446 |
+
|
| 2447 |
+
100% {
|
| 2448 |
+
-webkit-transform: translateY(0);
|
| 2449 |
+
transform: translateY(0);
|
| 2450 |
+
}
|
| 2451 |
+
}
|
| 2452 |
+
|
| 2453 |
+
@keyframes slideInDown {
|
| 2454 |
+
0% {
|
| 2455 |
+
opacity: 0;
|
| 2456 |
+
-webkit-transform: translateY(-2000px);
|
| 2457 |
+
-ms-transform: translateY(-2000px);
|
| 2458 |
+
transform: translateY(-2000px);
|
| 2459 |
+
}
|
| 2460 |
+
|
| 2461 |
+
100% {
|
| 2462 |
+
-webkit-transform: translateY(0);
|
| 2463 |
+
-ms-transform: translateY(0);
|
| 2464 |
+
transform: translateY(0);
|
| 2465 |
+
}
|
| 2466 |
+
}
|
| 2467 |
+
|
| 2468 |
+
.slideInDown {
|
| 2469 |
+
-webkit-animation-name: slideInDown;
|
| 2470 |
+
animation-name: slideInDown;
|
| 2471 |
+
}
|
| 2472 |
+
|
| 2473 |
+
@-webkit-keyframes slideInLeft {
|
| 2474 |
+
0% {
|
| 2475 |
+
opacity: 0;
|
| 2476 |
+
-webkit-transform: translateX(-2000px);
|
| 2477 |
+
transform: translateX(-2000px);
|
| 2478 |
+
}
|
| 2479 |
+
|
| 2480 |
+
100% {
|
| 2481 |
+
-webkit-transform: translateX(0);
|
| 2482 |
+
transform: translateX(0);
|
| 2483 |
+
}
|
| 2484 |
+
}
|
| 2485 |
+
|
| 2486 |
+
@keyframes slideInLeft {
|
| 2487 |
+
0% {
|
| 2488 |
+
opacity: 0;
|
| 2489 |
+
-webkit-transform: translateX(-2000px);
|
| 2490 |
+
-ms-transform: translateX(-2000px);
|
| 2491 |
+
transform: translateX(-2000px);
|
| 2492 |
+
}
|
| 2493 |
+
|
| 2494 |
+
100% {
|
| 2495 |
+
-webkit-transform: translateX(0);
|
| 2496 |
+
-ms-transform: translateX(0);
|
| 2497 |
+
transform: translateX(0);
|
| 2498 |
+
}
|
| 2499 |
+
}
|
| 2500 |
+
|
| 2501 |
+
.slideInLeft {
|
| 2502 |
+
-webkit-animation-name: slideInLeft;
|
| 2503 |
+
animation-name: slideInLeft;
|
| 2504 |
+
}
|
| 2505 |
+
|
| 2506 |
+
@-webkit-keyframes slideInRight {
|
| 2507 |
+
0% {
|
| 2508 |
+
opacity: 0;
|
| 2509 |
+
-webkit-transform: translateX(2000px);
|
| 2510 |
+
transform: translateX(2000px);
|
| 2511 |
+
}
|
| 2512 |
+
|
| 2513 |
+
100% {
|
| 2514 |
+
-webkit-transform: translateX(0);
|
| 2515 |
+
transform: translateX(0);
|
| 2516 |
+
}
|
| 2517 |
+
}
|
| 2518 |
+
|
| 2519 |
+
@keyframes slideInRight {
|
| 2520 |
+
0% {
|
| 2521 |
+
opacity: 0;
|
| 2522 |
+
-webkit-transform: translateX(2000px);
|
| 2523 |
+
-ms-transform: translateX(2000px);
|
| 2524 |
+
transform: translateX(2000px);
|
| 2525 |
+
}
|
| 2526 |
+
|
| 2527 |
+
100% {
|
| 2528 |
+
-webkit-transform: translateX(0);
|
| 2529 |
+
-ms-transform: translateX(0);
|
| 2530 |
+
transform: translateX(0);
|
| 2531 |
+
}
|
| 2532 |
+
}
|
| 2533 |
+
|
| 2534 |
+
.slideInRight {
|
| 2535 |
+
-webkit-animation-name: slideInRight;
|
| 2536 |
+
animation-name: slideInRight;
|
| 2537 |
+
}
|
| 2538 |
+
|
| 2539 |
+
@-webkit-keyframes slideOutLeft {
|
| 2540 |
+
0% {
|
| 2541 |
+
-webkit-transform: translateX(0);
|
| 2542 |
+
transform: translateX(0);
|
| 2543 |
+
}
|
| 2544 |
+
|
| 2545 |
+
100% {
|
| 2546 |
+
opacity: 0;
|
| 2547 |
+
-webkit-transform: translateX(-2000px);
|
| 2548 |
+
transform: translateX(-2000px);
|
| 2549 |
+
}
|
| 2550 |
+
}
|
| 2551 |
+
|
| 2552 |
+
@keyframes slideOutLeft {
|
| 2553 |
+
0% {
|
| 2554 |
+
-webkit-transform: translateX(0);
|
| 2555 |
+
-ms-transform: translateX(0);
|
| 2556 |
+
transform: translateX(0);
|
| 2557 |
+
}
|
| 2558 |
+
|
| 2559 |
+
100% {
|
| 2560 |
+
opacity: 0;
|
| 2561 |
+
-webkit-transform: translateX(-2000px);
|
| 2562 |
+
-ms-transform: translateX(-2000px);
|
| 2563 |
+
transform: translateX(-2000px);
|
| 2564 |
+
}
|
| 2565 |
+
}
|
| 2566 |
+
|
| 2567 |
+
.slideOutLeft {
|
| 2568 |
+
-webkit-animation-name: slideOutLeft;
|
| 2569 |
+
animation-name: slideOutLeft;
|
| 2570 |
+
}
|
| 2571 |
+
|
| 2572 |
+
@-webkit-keyframes slideOutRight {
|
| 2573 |
+
0% {
|
| 2574 |
+
-webkit-transform: translateX(0);
|
| 2575 |
+
transform: translateX(0);
|
| 2576 |
+
}
|
| 2577 |
+
|
| 2578 |
+
100% {
|
| 2579 |
+
opacity: 0;
|
| 2580 |
+
-webkit-transform: translateX(2000px);
|
| 2581 |
+
transform: translateX(2000px);
|
| 2582 |
+
}
|
| 2583 |
+
}
|
| 2584 |
+
|
| 2585 |
+
@keyframes slideOutRight {
|
| 2586 |
+
0% {
|
| 2587 |
+
-webkit-transform: translateX(0);
|
| 2588 |
+
-ms-transform: translateX(0);
|
| 2589 |
+
transform: translateX(0);
|
| 2590 |
+
}
|
| 2591 |
+
|
| 2592 |
+
100% {
|
| 2593 |
+
opacity: 0;
|
| 2594 |
+
-webkit-transform: translateX(2000px);
|
| 2595 |
+
-ms-transform: translateX(2000px);
|
| 2596 |
+
transform: translateX(2000px);
|
| 2597 |
+
}
|
| 2598 |
+
}
|
| 2599 |
+
|
| 2600 |
+
.slideOutRight {
|
| 2601 |
+
-webkit-animation-name: slideOutRight;
|
| 2602 |
+
animation-name: slideOutRight;
|
| 2603 |
+
}
|
| 2604 |
+
|
| 2605 |
+
@-webkit-keyframes slideOutUp {
|
| 2606 |
+
0% {
|
| 2607 |
+
-webkit-transform: translateY(0);
|
| 2608 |
+
transform: translateY(0);
|
| 2609 |
+
}
|
| 2610 |
+
|
| 2611 |
+
100% {
|
| 2612 |
+
opacity: 0;
|
| 2613 |
+
-webkit-transform: translateY(-2000px);
|
| 2614 |
+
transform: translateY(-2000px);
|
| 2615 |
+
}
|
| 2616 |
+
}
|
| 2617 |
+
|
| 2618 |
+
@keyframes slideOutUp {
|
| 2619 |
+
0% {
|
| 2620 |
+
-webkit-transform: translateY(0);
|
| 2621 |
+
-ms-transform: translateY(0);
|
| 2622 |
+
transform: translateY(0);
|
| 2623 |
+
}
|
| 2624 |
+
|
| 2625 |
+
100% {
|
| 2626 |
+
opacity: 0;
|
| 2627 |
+
-webkit-transform: translateY(-2000px);
|
| 2628 |
+
-ms-transform: translateY(-2000px);
|
| 2629 |
+
transform: translateY(-2000px);
|
| 2630 |
+
}
|
| 2631 |
+
}
|
| 2632 |
+
|
| 2633 |
+
.slideOutUp {
|
| 2634 |
+
-webkit-animation-name: slideOutUp;
|
| 2635 |
+
animation-name: slideOutUp;
|
| 2636 |
+
}
|
| 2637 |
+
|
| 2638 |
+
@-webkit-keyframes slideInUp {
|
| 2639 |
+
0% {
|
| 2640 |
+
opacity: 0;
|
| 2641 |
+
-webkit-transform: translateY(2000px);
|
| 2642 |
+
transform: translateY(2000px);
|
| 2643 |
+
}
|
| 2644 |
+
|
| 2645 |
+
100% {
|
| 2646 |
+
opacity: 1;
|
| 2647 |
+
-webkit-transform: translateY(0);
|
| 2648 |
+
transform: translateY(0);
|
| 2649 |
+
}
|
| 2650 |
+
}
|
| 2651 |
+
|
| 2652 |
+
@keyframes slideInUp {
|
| 2653 |
+
0% {
|
| 2654 |
+
opacity: 0;
|
| 2655 |
+
-webkit-transform: translateY(2000px);
|
| 2656 |
+
-ms-transform: translateY(2000px);
|
| 2657 |
+
transform: translateY(2000px);
|
| 2658 |
+
}
|
| 2659 |
+
|
| 2660 |
+
100% {
|
| 2661 |
+
opacity: 1;
|
| 2662 |
+
-webkit-transform: translateY(0);
|
| 2663 |
+
-ms-transform: translateY(0);
|
| 2664 |
+
transform: translateY(0);
|
| 2665 |
+
}
|
| 2666 |
+
}
|
| 2667 |
+
|
| 2668 |
+
.slideInUp {
|
| 2669 |
+
-webkit-animation-name: slideInUp;
|
| 2670 |
+
animation-name: slideInUp;
|
| 2671 |
+
}
|
| 2672 |
+
|
| 2673 |
+
@-webkit-keyframes slideOutDown {
|
| 2674 |
+
0% {
|
| 2675 |
+
-webkit-transform: translateY(0);
|
| 2676 |
+
transform: translateY(0);
|
| 2677 |
+
}
|
| 2678 |
+
|
| 2679 |
+
100% {
|
| 2680 |
+
opacity: 0;
|
| 2681 |
+
-webkit-transform: translateY(2000px);
|
| 2682 |
+
transform: translateY(2000px);
|
| 2683 |
+
}
|
| 2684 |
+
}
|
| 2685 |
+
|
| 2686 |
+
@keyframes slideOutDown {
|
| 2687 |
+
0% {
|
| 2688 |
+
-webkit-transform: translateY(0);
|
| 2689 |
+
-ms-transform: translateY(0);
|
| 2690 |
+
transform: translateY(0);
|
| 2691 |
+
}
|
| 2692 |
+
|
| 2693 |
+
100% {
|
| 2694 |
+
opacity: 0;
|
| 2695 |
+
-webkit-transform: translateY(2000px);
|
| 2696 |
+
-ms-transform: translateY(2000px);
|
| 2697 |
+
transform: translateY(2000px);
|
| 2698 |
+
}
|
| 2699 |
+
}
|
| 2700 |
+
|
| 2701 |
+
.slideOutDown {
|
| 2702 |
+
-webkit-animation-name: slideOutDown;
|
| 2703 |
+
animation-name: slideOutDown;
|
| 2704 |
+
}
|
| 2705 |
+
|
| 2706 |
+
@-webkit-keyframes hinge {
|
| 2707 |
+
0% {
|
| 2708 |
+
-webkit-transform: rotate(0);
|
| 2709 |
+
transform: rotate(0);
|
| 2710 |
+
-webkit-transform-origin: top left;
|
| 2711 |
+
transform-origin: top left;
|
| 2712 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2713 |
+
animation-timing-function: ease-in-out;
|
| 2714 |
+
}
|
| 2715 |
+
|
| 2716 |
+
20%, 60% {
|
| 2717 |
+
-webkit-transform: rotate(80deg);
|
| 2718 |
+
transform: rotate(80deg);
|
| 2719 |
+
-webkit-transform-origin: top left;
|
| 2720 |
+
transform-origin: top left;
|
| 2721 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2722 |
+
animation-timing-function: ease-in-out;
|
| 2723 |
+
}
|
| 2724 |
+
|
| 2725 |
+
40% {
|
| 2726 |
+
-webkit-transform: rotate(60deg);
|
| 2727 |
+
transform: rotate(60deg);
|
| 2728 |
+
-webkit-transform-origin: top left;
|
| 2729 |
+
transform-origin: top left;
|
| 2730 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2731 |
+
animation-timing-function: ease-in-out;
|
| 2732 |
+
}
|
| 2733 |
+
|
| 2734 |
+
80% {
|
| 2735 |
+
-webkit-transform: rotate(60deg) translateY(0);
|
| 2736 |
+
transform: rotate(60deg) translateY(0);
|
| 2737 |
+
-webkit-transform-origin: top left;
|
| 2738 |
+
transform-origin: top left;
|
| 2739 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2740 |
+
animation-timing-function: ease-in-out;
|
| 2741 |
+
opacity: 1;
|
| 2742 |
+
}
|
| 2743 |
+
|
| 2744 |
+
100% {
|
| 2745 |
+
-webkit-transform: translateY(700px);
|
| 2746 |
+
transform: translateY(700px);
|
| 2747 |
+
opacity: 0;
|
| 2748 |
+
}
|
| 2749 |
+
}
|
| 2750 |
+
|
| 2751 |
+
@keyframes hinge {
|
| 2752 |
+
0% {
|
| 2753 |
+
-webkit-transform: rotate(0);
|
| 2754 |
+
-ms-transform: rotate(0);
|
| 2755 |
+
transform: rotate(0);
|
| 2756 |
+
-webkit-transform-origin: top left;
|
| 2757 |
+
-ms-transform-origin: top left;
|
| 2758 |
+
transform-origin: top left;
|
| 2759 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2760 |
+
animation-timing-function: ease-in-out;
|
| 2761 |
+
}
|
| 2762 |
+
|
| 2763 |
+
20%, 60% {
|
| 2764 |
+
-webkit-transform: rotate(80deg);
|
| 2765 |
+
-ms-transform: rotate(80deg);
|
| 2766 |
+
transform: rotate(80deg);
|
| 2767 |
+
-webkit-transform-origin: top left;
|
| 2768 |
+
-ms-transform-origin: top left;
|
| 2769 |
+
transform-origin: top left;
|
| 2770 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2771 |
+
animation-timing-function: ease-in-out;
|
| 2772 |
+
}
|
| 2773 |
+
|
| 2774 |
+
40% {
|
| 2775 |
+
-webkit-transform: rotate(60deg);
|
| 2776 |
+
-ms-transform: rotate(60deg);
|
| 2777 |
+
transform: rotate(60deg);
|
| 2778 |
+
-webkit-transform-origin: top left;
|
| 2779 |
+
-ms-transform-origin: top left;
|
| 2780 |
+
transform-origin: top left;
|
| 2781 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2782 |
+
animation-timing-function: ease-in-out;
|
| 2783 |
+
}
|
| 2784 |
+
|
| 2785 |
+
80% {
|
| 2786 |
+
-webkit-transform: rotate(60deg) translateY(0);
|
| 2787 |
+
-ms-transform: rotate(60deg) translateY(0);
|
| 2788 |
+
transform: rotate(60deg) translateY(0);
|
| 2789 |
+
-webkit-transform-origin: top left;
|
| 2790 |
+
-ms-transform-origin: top left;
|
| 2791 |
+
transform-origin: top left;
|
| 2792 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2793 |
+
animation-timing-function: ease-in-out;
|
| 2794 |
+
opacity: 1;
|
| 2795 |
+
}
|
| 2796 |
+
|
| 2797 |
+
100% {
|
| 2798 |
+
-webkit-transform: translateY(700px);
|
| 2799 |
+
-ms-transform: translateY(700px);
|
| 2800 |
+
transform: translateY(700px);
|
| 2801 |
+
opacity: 0;
|
| 2802 |
+
}
|
| 2803 |
+
}
|
| 2804 |
+
|
| 2805 |
+
.hinge {
|
| 2806 |
+
-webkit-animation-name: hinge;
|
| 2807 |
+
animation-name: hinge;
|
| 2808 |
+
}
|
| 2809 |
+
|
| 2810 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
| 2811 |
+
|
| 2812 |
+
@-webkit-keyframes rollIn {
|
| 2813 |
+
0% {
|
| 2814 |
+
opacity: 0;
|
| 2815 |
+
-webkit-transform: translateX(-100%) rotate(-120deg);
|
| 2816 |
+
transform: translateX(-100%) rotate(-120deg);
|
| 2817 |
+
}
|
| 2818 |
+
|
| 2819 |
+
100% {
|
| 2820 |
+
opacity: 1;
|
| 2821 |
+
-webkit-transform: translateX(0px) rotate(0deg);
|
| 2822 |
+
transform: translateX(0px) rotate(0deg);
|
| 2823 |
+
}
|
| 2824 |
+
}
|
| 2825 |
+
|
| 2826 |
+
@keyframes rollIn {
|
| 2827 |
+
0% {
|
| 2828 |
+
opacity: 0;
|
| 2829 |
+
-webkit-transform: translateX(-100%) rotate(-120deg);
|
| 2830 |
+
-ms-transform: translateX(-100%) rotate(-120deg);
|
| 2831 |
+
transform: translateX(-100%) rotate(-120deg);
|
| 2832 |
+
}
|
| 2833 |
+
|
| 2834 |
+
100% {
|
| 2835 |
+
opacity: 1;
|
| 2836 |
+
-webkit-transform: translateX(0px) rotate(0deg);
|
| 2837 |
+
-ms-transform: translateX(0px) rotate(0deg);
|
| 2838 |
+
transform: translateX(0px) rotate(0deg);
|
| 2839 |
+
}
|
| 2840 |
+
}
|
| 2841 |
+
|
| 2842 |
+
.rollIn {
|
| 2843 |
+
-webkit-animation-name: rollIn;
|
| 2844 |
+
animation-name: rollIn;
|
| 2845 |
+
}
|
| 2846 |
+
|
| 2847 |
+
/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
|
| 2848 |
+
|
| 2849 |
+
@-webkit-keyframes rollOut {
|
| 2850 |
+
0% {
|
| 2851 |
+
opacity: 1;
|
| 2852 |
+
-webkit-transform: translateX(0px) rotate(0deg);
|
| 2853 |
+
transform: translateX(0px) rotate(0deg);
|
| 2854 |
+
}
|
| 2855 |
+
|
| 2856 |
+
100% {
|
| 2857 |
+
opacity: 0;
|
| 2858 |
+
-webkit-transform: translateX(100%) rotate(120deg);
|
| 2859 |
+
transform: translateX(100%) rotate(120deg);
|
| 2860 |
+
}
|
| 2861 |
+
}
|
| 2862 |
+
|
| 2863 |
+
@keyframes rollOut {
|
| 2864 |
+
0% {
|
| 2865 |
+
opacity: 1;
|
| 2866 |
+
-webkit-transform: translateX(0px) rotate(0deg);
|
| 2867 |
+
-ms-transform: translateX(0px) rotate(0deg);
|
| 2868 |
+
transform: translateX(0px) rotate(0deg);
|
| 2869 |
+
}
|
| 2870 |
+
|
| 2871 |
+
100% {
|
| 2872 |
+
opacity: 0;
|
| 2873 |
+
-webkit-transform: translateX(100%) rotate(120deg);
|
| 2874 |
+
-ms-transform: translateX(100%) rotate(120deg);
|
| 2875 |
+
transform: translateX(100%) rotate(120deg);
|
| 2876 |
+
}
|
| 2877 |
+
}
|
| 2878 |
+
|
| 2879 |
+
.rollOut {
|
| 2880 |
+
-webkit-animation-name: rollOut;
|
| 2881 |
+
animation-name: rollOut;
|
| 2882 |
+
}
|
| 2883 |
+
|
| 2884 |
+
@-webkit-keyframes zoomIn {
|
| 2885 |
+
0% {
|
| 2886 |
+
opacity: 0;
|
| 2887 |
+
-webkit-transform: scale(.3);
|
| 2888 |
+
transform: scale(.3);
|
| 2889 |
+
}
|
| 2890 |
+
|
| 2891 |
+
50% {
|
| 2892 |
+
opacity: 1;
|
| 2893 |
+
}
|
| 2894 |
+
}
|
| 2895 |
+
|
| 2896 |
+
@keyframes zoomIn {
|
| 2897 |
+
0% {
|
| 2898 |
+
opacity: 0;
|
| 2899 |
+
-webkit-transform: scale(.3);
|
| 2900 |
+
-ms-transform: scale(.3);
|
| 2901 |
+
transform: scale(.3);
|
| 2902 |
+
}
|
| 2903 |
+
|
| 2904 |
+
50% {
|
| 2905 |
+
opacity: 1;
|
| 2906 |
+
}
|
| 2907 |
+
}
|
| 2908 |
+
|
| 2909 |
+
.zoomIn {
|
| 2910 |
+
-webkit-animation-name: zoomIn;
|
| 2911 |
+
animation-name: zoomIn;
|
| 2912 |
+
}
|
| 2913 |
+
|
| 2914 |
+
@-webkit-keyframes zoomInDown {
|
| 2915 |
+
0% {
|
| 2916 |
+
opacity: 0;
|
| 2917 |
+
-webkit-transform: scale(.1) translateY(-2000px);
|
| 2918 |
+
transform: scale(.1) translateY(-2000px);
|
| 2919 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2920 |
+
animation-timing-function: ease-in-out;
|
| 2921 |
+
}
|
| 2922 |
+
|
| 2923 |
+
60% {
|
| 2924 |
+
opacity: 1;
|
| 2925 |
+
-webkit-transform: scale(.475) translateY(60px);
|
| 2926 |
+
transform: scale(.475) translateY(60px);
|
| 2927 |
+
-webkit-animation-timing-function: ease-out;
|
| 2928 |
+
animation-timing-function: ease-out;
|
| 2929 |
+
}
|
| 2930 |
+
}
|
| 2931 |
+
|
| 2932 |
+
@keyframes zoomInDown {
|
| 2933 |
+
0% {
|
| 2934 |
+
opacity: 0;
|
| 2935 |
+
-webkit-transform: scale(.1) translateY(-2000px);
|
| 2936 |
+
-ms-transform: scale(.1) translateY(-2000px);
|
| 2937 |
+
transform: scale(.1) translateY(-2000px);
|
| 2938 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2939 |
+
animation-timing-function: ease-in-out;
|
| 2940 |
+
}
|
| 2941 |
+
|
| 2942 |
+
60% {
|
| 2943 |
+
opacity: 1;
|
| 2944 |
+
-webkit-transform: scale(.475) translateY(60px);
|
| 2945 |
+
-ms-transform: scale(.475) translateY(60px);
|
| 2946 |
+
transform: scale(.475) translateY(60px);
|
| 2947 |
+
-webkit-animation-timing-function: ease-out;
|
| 2948 |
+
animation-timing-function: ease-out;
|
| 2949 |
+
}
|
| 2950 |
+
}
|
| 2951 |
+
|
| 2952 |
+
.zoomInDown {
|
| 2953 |
+
-webkit-animation-name: zoomInDown;
|
| 2954 |
+
animation-name: zoomInDown;
|
| 2955 |
+
}
|
| 2956 |
+
|
| 2957 |
+
@-webkit-keyframes zoomInLeft {
|
| 2958 |
+
0% {
|
| 2959 |
+
opacity: 0;
|
| 2960 |
+
-webkit-transform: scale(.1) translateX(-2000px);
|
| 2961 |
+
transform: scale(.1) translateX(-2000px);
|
| 2962 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2963 |
+
animation-timing-function: ease-in-out;
|
| 2964 |
+
}
|
| 2965 |
+
|
| 2966 |
+
60% {
|
| 2967 |
+
opacity: 1;
|
| 2968 |
+
-webkit-transform: scale(.475) translateX(48px);
|
| 2969 |
+
transform: scale(.475) translateX(48px);
|
| 2970 |
+
-webkit-animation-timing-function: ease-out;
|
| 2971 |
+
animation-timing-function: ease-out;
|
| 2972 |
+
}
|
| 2973 |
+
}
|
| 2974 |
+
|
| 2975 |
+
@keyframes zoomInLeft {
|
| 2976 |
+
0% {
|
| 2977 |
+
opacity: 0;
|
| 2978 |
+
-webkit-transform: scale(.1) translateX(-2000px);
|
| 2979 |
+
-ms-transform: scale(.1) translateX(-2000px);
|
| 2980 |
+
transform: scale(.1) translateX(-2000px);
|
| 2981 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 2982 |
+
animation-timing-function: ease-in-out;
|
| 2983 |
+
}
|
| 2984 |
+
|
| 2985 |
+
60% {
|
| 2986 |
+
opacity: 1;
|
| 2987 |
+
-webkit-transform: scale(.475) translateX(48px);
|
| 2988 |
+
-ms-transform: scale(.475) translateX(48px);
|
| 2989 |
+
transform: scale(.475) translateX(48px);
|
| 2990 |
+
-webkit-animation-timing-function: ease-out;
|
| 2991 |
+
animation-timing-function: ease-out;
|
| 2992 |
+
}
|
| 2993 |
+
}
|
| 2994 |
+
|
| 2995 |
+
.zoomInLeft {
|
| 2996 |
+
-webkit-animation-name: zoomInLeft;
|
| 2997 |
+
animation-name: zoomInLeft;
|
| 2998 |
+
}
|
| 2999 |
+
|
| 3000 |
+
@-webkit-keyframes zoomInRight {
|
| 3001 |
+
0% {
|
| 3002 |
+
opacity: 0;
|
| 3003 |
+
-webkit-transform: scale(.1) translateX(2000px);
|
| 3004 |
+
transform: scale(.1) translateX(2000px);
|
| 3005 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 3006 |
+
animation-timing-function: ease-in-out;
|
| 3007 |
+
}
|
| 3008 |
+
|
| 3009 |
+
60% {
|
| 3010 |
+
opacity: 1;
|
| 3011 |
+
-webkit-transform: scale(.475) translateX(-48px);
|
| 3012 |
+
transform: scale(.475) translateX(-48px);
|
| 3013 |
+
-webkit-animation-timing-function: ease-out;
|
| 3014 |
+
animation-timing-function: ease-out;
|
| 3015 |
+
}
|
| 3016 |
+
}
|
| 3017 |
+
|
| 3018 |
+
@keyframes zoomInRight {
|
| 3019 |
+
0% {
|
| 3020 |
+
opacity: 0;
|
| 3021 |
+
-webkit-transform: scale(.1) translateX(2000px);
|
| 3022 |
+
-ms-transform: scale(.1) translateX(2000px);
|
| 3023 |
+
transform: scale(.1) translateX(2000px);
|
| 3024 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 3025 |
+
animation-timing-function: ease-in-out;
|
| 3026 |
+
}
|
| 3027 |
+
|
| 3028 |
+
60% {
|
| 3029 |
+
opacity: 1;
|
| 3030 |
+
-webkit-transform: scale(.475) translateX(-48px);
|
| 3031 |
+
-ms-transform: scale(.475) translateX(-48px);
|
| 3032 |
+
transform: scale(.475) translateX(-48px);
|
| 3033 |
+
-webkit-animation-timing-function: ease-out;
|
| 3034 |
+
animation-timing-function: ease-out;
|
| 3035 |
+
}
|
| 3036 |
+
}
|
| 3037 |
+
|
| 3038 |
+
.zoomInRight {
|
| 3039 |
+
-webkit-animation-name: zoomInRight;
|
| 3040 |
+
animation-name: zoomInRight;
|
| 3041 |
+
}
|
| 3042 |
+
|
| 3043 |
+
@-webkit-keyframes zoomInUp {
|
| 3044 |
+
0% {
|
| 3045 |
+
opacity: 0;
|
| 3046 |
+
-webkit-transform: scale(.1) translateY(2000px);
|
| 3047 |
+
transform: scale(.1) translateY(2000px);
|
| 3048 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 3049 |
+
animation-timing-function: ease-in-out;
|
| 3050 |
+
}
|
| 3051 |
+
|
| 3052 |
+
60% {
|
| 3053 |
+
opacity: 1;
|
| 3054 |
+
-webkit-transform: scale(.475) translateY(-60px);
|
| 3055 |
+
transform: scale(.475) translateY(-60px);
|
| 3056 |
+
-webkit-animation-timing-function: ease-out;
|
| 3057 |
+
animation-timing-function: ease-out;
|
| 3058 |
+
}
|
| 3059 |
+
}
|
| 3060 |
+
|
| 3061 |
+
@keyframes zoomInUp {
|
| 3062 |
+
0% {
|
| 3063 |
+
opacity: 0;
|
| 3064 |
+
-webkit-transform: scale(.1) translateY(2000px);
|
| 3065 |
+
-ms-transform: scale(.1) translateY(2000px);
|
| 3066 |
+
transform: scale(.1) translateY(2000px);
|
| 3067 |
+
-webkit-animation-timing-function: ease-in-out;
|
| 3068 |
+
animation-timing-function: ease-in-out;
|
| 3069 |
+
}
|
| 3070 |
+
|
| 3071 |
+
60% {
|
| 3072 |
+
opacity: 1;
|
| 3073 |
+
-webkit-transform: scale(.475) translateY(-60px);
|
| 3074 |
+
-ms-transform: scale(.475) translateY(-60px);
|
| 3075 |
+
transform: scale(.475) translateY(-60px);
|
| 3076 |
+
-webkit-animation-timing-function: ease-out;
|
| 3077 |
+
animation-timing-function: ease-out;
|
| 3078 |
+
}
|
| 3079 |
+
}
|
| 3080 |
+
|
| 3081 |
+
.zoomInUp {
|
| 3082 |
+
-webkit-animation-name: zoomInUp;
|
| 3083 |
+
animation-name: zoomInUp;
|
| 3084 |
+
}
|
| 3085 |
+
|
| 3086 |
+
@-webkit-keyframes zoomOut {
|
| 3087 |
+
0% {
|
| 3088 |
+
opacity: 1;
|
| 3089 |
+
-webkit-transform: scale(1);
|
| 3090 |
+
transform: scale(1);
|
| 3091 |
+
}
|
| 3092 |
+
|
| 3093 |
+
50% {
|
| 3094 |
+
opacity: 0;
|
| 3095 |
+
-webkit-transform: scale(.3);
|
| 3096 |
+
transform: scale(.3);
|
| 3097 |
+
}
|
| 3098 |
+
|
| 3099 |
+
100% {
|
| 3100 |
+
opacity: 0;
|
| 3101 |
+
}
|
| 3102 |
+
}
|
| 3103 |
+
|
| 3104 |
+
@keyframes zoomOut {
|
| 3105 |
+
0% {
|
| 3106 |
+
opacity: 1;
|
| 3107 |
+
-webkit-transform: scale(1);
|
| 3108 |
+
-ms-transform: scale(1);
|
| 3109 |
+
transform: scale(1);
|
| 3110 |
+
}
|
| 3111 |
+
|
| 3112 |
+
50% {
|
| 3113 |
+
opacity: 0;
|
| 3114 |
+
-webkit-transform: scale(.3);
|
| 3115 |
+
-ms-transform: scale(.3);
|
| 3116 |
+
transform: scale(.3);
|
| 3117 |
+
}
|
| 3118 |
+
|
| 3119 |
+
100% {
|
| 3120 |
+
opacity: 0;
|
| 3121 |
+
}
|
| 3122 |
+
}
|
| 3123 |
+
|
| 3124 |
+
.zoomOut {
|
| 3125 |
+
-webkit-animation-name: zoomOut;
|
| 3126 |
+
animation-name: zoomOut;
|
| 3127 |
+
}
|
| 3128 |
+
|
| 3129 |
+
@-webkit-keyframes zoomOutDown {
|
| 3130 |
+
40% {
|
| 3131 |
+
opacity: 1;
|
| 3132 |
+
-webkit-transform: scale(.475) translateY(-60px);
|
| 3133 |
+
transform: scale(.475) translateY(-60px);
|
| 3134 |
+
-webkit-animation-timing-function: linear;
|
| 3135 |
+
animation-timing-function: linear;
|
| 3136 |
+
}
|
| 3137 |
+
|
| 3138 |
+
100% {
|
| 3139 |
+
opacity: 0;
|
| 3140 |
+
-webkit-transform: scale(.1) translateY(2000px);
|
| 3141 |
+
transform: scale(.1) translateY(2000px);
|
| 3142 |
+
-webkit-transform-origin: center bottom;
|
| 3143 |
+
transform-origin: center bottom;
|
| 3144 |
+
}
|
| 3145 |
+
}
|
| 3146 |
+
|
| 3147 |
+
@keyframes zoomOutDown {
|
| 3148 |
+
40% {
|
| 3149 |
+
opacity: 1;
|
| 3150 |
+
-webkit-transform: scale(.475) translateY(-60px);
|
| 3151 |
+
-ms-transform: scale(.475) translateY(-60px);
|
| 3152 |
+
transform: scale(.475) translateY(-60px);
|
| 3153 |
+
-webkit-animation-timing-function: linear;
|
| 3154 |
+
animation-timing-function: linear;
|
| 3155 |
+
}
|
| 3156 |
+
|
| 3157 |
+
100% {
|
| 3158 |
+
opacity: 0;
|
| 3159 |
+
-webkit-transform: scale(.1) translateY(2000px);
|
| 3160 |
+
-ms-transform: scale(.1) translateY(2000px);
|
| 3161 |
+
transform: scale(.1) translateY(2000px);
|
| 3162 |
+
-webkit-transform-origin: center bottom;
|
| 3163 |
+
-ms-transform-origin: center bottom;
|
| 3164 |
+
transform-origin: center bottom;
|
| 3165 |
+
}
|
| 3166 |
+
}
|
| 3167 |
+
|
| 3168 |
+
.zoomOutDown {
|
| 3169 |
+
-webkit-animation-name: zoomOutDown;
|
| 3170 |
+
animation-name: zoomOutDown;
|
| 3171 |
+
}
|
| 3172 |
+
|
| 3173 |
+
@-webkit-keyframes zoomOutLeft {
|
| 3174 |
+
40% {
|
| 3175 |
+
opacity: 1;
|
| 3176 |
+
-webkit-transform: scale(.475) translateX(42px);
|
| 3177 |
+
transform: scale(.475) translateX(42px);
|
| 3178 |
+
-webkit-animation-timing-function: linear;
|
| 3179 |
+
animation-timing-function: linear;
|
| 3180 |
+
}
|
| 3181 |
+
|
| 3182 |
+
100% {
|
| 3183 |
+
opacity: 0;
|
| 3184 |
+
-webkit-transform: scale(.1) translateX(-2000px);
|
| 3185 |
+
transform: scale(.1) translateX(-2000px);
|
| 3186 |
+
-webkit-transform-origin: left center;
|
| 3187 |
+
transform-origin: left center;
|
| 3188 |
+
}
|
| 3189 |
+
}
|
| 3190 |
+
|
| 3191 |
+
@keyframes zoomOutLeft {
|
| 3192 |
+
40% {
|
| 3193 |
+
opacity: 1;
|
| 3194 |
+
-webkit-transform: scale(.475) translateX(42px);
|
| 3195 |
+
-ms-transform: scale(.475) translateX(42px);
|
| 3196 |
+
transform: scale(.475) translateX(42px);
|
| 3197 |
+
-webkit-animation-timing-function: linear;
|
| 3198 |
+
animation-timing-function: linear;
|
| 3199 |
+
}
|
| 3200 |
+
|
| 3201 |
+
100% {
|
| 3202 |
+
opacity: 0;
|
| 3203 |
+
-webkit-transform: scale(.1) translateX(-2000px);
|
| 3204 |
+
-ms-transform: scale(.1) translateX(-2000px);
|
| 3205 |
+
transform: scale(.1) translateX(-2000px);
|
| 3206 |
+
-webkit-transform-origin: left center;
|
| 3207 |
+
-ms-transform-origin: left center;
|
| 3208 |
+
transform-origin: left center;
|
| 3209 |
+
}
|
| 3210 |
+
}
|
| 3211 |
+
|
| 3212 |
+
.zoomOutLeft {
|
| 3213 |
+
-webkit-animation-name: zoomOutLeft;
|
| 3214 |
+
animation-name: zoomOutLeft;
|
| 3215 |
+
}
|
| 3216 |
+
|
| 3217 |
+
@-webkit-keyframes zoomOutRight {
|
| 3218 |
+
40% {
|
| 3219 |
+
opacity: 1;
|
| 3220 |
+
-webkit-transform: scale(.475) translateX(-42px);
|
| 3221 |
+
transform: scale(.475) translateX(-42px);
|
| 3222 |
+
-webkit-animation-timing-function: linear;
|
| 3223 |
+
animation-timing-function: linear;
|
| 3224 |
+
}
|
| 3225 |
+
|
| 3226 |
+
100% {
|
| 3227 |
+
opacity: 0;
|
| 3228 |
+
-webkit-transform: scale(.1) translateX(2000px);
|
| 3229 |
+
transform: scale(.1) translateX(2000px);
|
| 3230 |
+
-webkit-transform-origin: right center;
|
| 3231 |
+
transform-origin: right center;
|
| 3232 |
+
}
|
| 3233 |
+
}
|
| 3234 |
+
|
| 3235 |
+
@keyframes zoomOutRight {
|
| 3236 |
+
40% {
|
| 3237 |
+
opacity: 1;
|
| 3238 |
+
-webkit-transform: scale(.475) translateX(-42px);
|
| 3239 |
+
-ms-transform: scale(.475) translateX(-42px);
|
| 3240 |
+
transform: scale(.475) translateX(-42px);
|
| 3241 |
+
-webkit-animation-timing-function: linear;
|
| 3242 |
+
animation-timing-function: linear;
|
| 3243 |
+
}
|
| 3244 |
+
|
| 3245 |
+
100% {
|
| 3246 |
+
opacity: 0;
|
| 3247 |
+
-webkit-transform: scale(.1) translateX(2000px);
|
| 3248 |
+
-ms-transform: scale(.1) translateX(2000px);
|
| 3249 |
+
transform: scale(.1) translateX(2000px);
|
| 3250 |
+
-webkit-transform-origin: right center;
|
| 3251 |
+
-ms-transform-origin: right center;
|
| 3252 |
+
transform-origin: right center;
|
| 3253 |
+
}
|
| 3254 |
+
}
|
| 3255 |
+
|
| 3256 |
+
.zoomOutRight {
|
| 3257 |
+
-webkit-animation-name: zoomOutRight;
|
| 3258 |
+
animation-name: zoomOutRight;
|
| 3259 |
+
}
|
| 3260 |
+
|
| 3261 |
+
@-webkit-keyframes zoomOutUp {
|
| 3262 |
+
40% {
|
| 3263 |
+
opacity: 1;
|
| 3264 |
+
-webkit-transform: scale(.475) translateY(60px);
|
| 3265 |
+
transform: scale(.475) translateY(60px);
|
| 3266 |
+
-webkit-animation-timing-function: linear;
|
| 3267 |
+
animation-timing-function: linear;
|
| 3268 |
+
}
|
| 3269 |
+
|
| 3270 |
+
100% {
|
| 3271 |
+
opacity: 0;
|
| 3272 |
+
-webkit-transform: scale(.1) translateY(-2000px);
|
| 3273 |
+
transform: scale(.1) translateY(-2000px);
|
| 3274 |
+
-webkit-transform-origin: center top;
|
| 3275 |
+
transform-origin: center top;
|
| 3276 |
+
}
|
| 3277 |
+
}
|
| 3278 |
+
|
| 3279 |
+
@keyframes zoomOutUp {
|
| 3280 |
+
40% {
|
| 3281 |
+
opacity: 1;
|
| 3282 |
+
-webkit-transform: scale(.475) translateY(60px);
|
| 3283 |
+
-ms-transform: scale(.475) translateY(60px);
|
| 3284 |
+
transform: scale(.475) translateY(60px);
|
| 3285 |
+
-webkit-animation-timing-function: linear;
|
| 3286 |
+
animation-timing-function: linear;
|
| 3287 |
+
}
|
| 3288 |
+
|
| 3289 |
+
100% {
|
| 3290 |
+
opacity: 0;
|
| 3291 |
+
-webkit-transform: scale(.1) translateY(-2000px);
|
| 3292 |
+
-ms-transform: scale(.1) translateY(-2000px);
|
| 3293 |
+
transform: scale(.1) translateY(-2000px);
|
| 3294 |
+
-webkit-transform-origin: center top;
|
| 3295 |
+
-ms-transform-origin: center top;
|
| 3296 |
+
transform-origin: center top;
|
| 3297 |
+
}
|
| 3298 |
+
}
|
| 3299 |
+
|
| 3300 |
+
.zoomOutUp {
|
| 3301 |
+
-webkit-animation-name: zoomOutUp;
|
| 3302 |
+
animation-name: zoomOutUp;
|
| 3303 |
+
}
|
css/fonts/yks-mc-font.eot
ADDED
|
Binary file
|
css/fonts/yks-mc-font.svg
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0" standalone="no"?>
|
| 2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
| 3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
| 4 |
+
<metadata>Generated by IcoMoon</metadata>
|
| 5 |
+
<defs>
|
| 6 |
+
<font id="yks-mc-font" horiz-adv-x="512">
|
| 7 |
+
<font-face units-per-em="512" ascent="480" descent="-32" />
|
| 8 |
+
<missing-glyph horiz-adv-x="512" />
|
| 9 |
+
<glyph unicode=" " d="" horiz-adv-x="256" />
|
| 10 |
+
<glyph unicode="" d="M0 265.739v-214.261h136.348l0.279-32.556c0.279-18.087 0.279-35.618 0.279-38.957-0.279-3.618 0.279-6.4 0.835-6.4 0.556 0 19.756 17.531 42.296 38.957l40.905 38.957h207.582v428.522h-428.522v-214.261zM258.226 359.791c1.948-1.948 3.339-5.008 3.339-6.957 0-3.618-66.782-165.287-74.017-179.478-6.4-12.243-23.374-9.183-23.374 4.174 0 4.731 36.174 94.052 64.556 160 10.018 23.096 11.965 25.6 18.643 25.6 4.174 0 8.905-1.392 10.852-3.339zM144.696 331.409c0-18.365-0.556-20.87-5.565-22.539-3.061-0.835-16.974-7.792-30.887-15.026l-25.322-13.635 30.887-16.139 30.887-16.417v-20.313c0-11.408-1.113-20.035-2.226-19.479-1.113 0.557-25.6 13.356-54.261 28.382l-52.035 27.826v32.279l13.356 7.235c57.044 31.165 88.765 47.861 91.826 48.139 2.226 0.279 3.339-5.565 3.339-20.313zM336.418 324.174l50.365-26.435v-34.505l-35.339-18.644c-19.757-10.296-43.409-22.817-52.87-28.105l-17.531-9.461v41.739l22.261 11.687c12.8 6.678 21.426 12.8 20.313 14.469-0.835 1.67-0.279 1.948 1.392 0.835 1.67-1.113 6.4-0.279 10.017 1.67 6.678 3.618 5.844 4.174-23.652 18.921l-30.331 15.305v20.313c0 11.409 1.113 20.035 2.505 19.478 1.392-0.279 25.043-12.8 52.87-27.269z" horiz-adv-x="429" />
|
| 11 |
+
<glyph unicode="" d="M248 432c-119.296 0-216-96.704-216-216s96.704-216 216-216 216 96.704 216 216-96.704 216-216 216zM248 48c-92.784 0-168 75.216-168 168s75.216 168 168 168 168-75.216 168-168-75.216-168-168-168zM248 320c-13.248 0-24-10.736-24-24v-80.992c0-13.248 10.752-24 24-24s24 10.752 24 24v80.992c0 13.264-10.752 24-24 24zM248 160c-13.248 0-24-10.752-24-24s10.752-24 24-24 24 10.752 24 24-10.752 24-24 24z" />
|
| 12 |
+
<glyph unicode="" d="M478.464 167.142l-44.211 39.424c-12.8 11.418-12.8 30.054 0 41.472l44.211 39.398c12.8 11.417 9.37 22.041-7.603 23.654l-58.599 5.555c-16.973 1.613-26.112 16.205-20.275 32.435l31.104 86.579c5.837 16.231-1.305 22.144-15.846 13.133l-69.145-42.752c-14.541-9.011-33.331-4.096-41.754 10.931l-25.063 44.697c-8.397 15.027-22.323 15.104-30.899 0.179l-23.27-40.499c-8.576-14.925-28.288-21.299-43.802-14.157l-40.96 18.816c-15.539 7.117-27.469-1.127-26.547-18.381l2.227-41.344c0.921-17.229-11.802-34.995-28.263-39.424l-39.552-10.624c-16.461-4.454-19.482-17.408-6.681-28.825l44.211-39.399c12.8-11.392 12.8-30.055 0-41.447l-44.211-39.373c-12.8-11.443-9.421-22.451 7.501-24.499l53.632-6.502c16.922-2.099 26.368-17.203 20.966-33.562l-27.52-83.405c-5.401-16.409 2.304-22.81 17.101-14.208l63.053 36.454c14.822 8.601 34.714 3.84 44.237-10.445l26.189-39.347c9.498-14.361 23.808-13.543 31.719 1.741l23.014 44.339c7.962 15.309 26.957 21.555 42.214 13.901l44.391-22.195c15.309-7.654 27.059 0.205 26.137 17.459l-2.227 41.344c-0.921 17.255 11.801 34.995 28.262 39.45l39.526 10.599c16.512 4.48 19.533 17.433 6.733 28.825zM281.6 119.808h-51.2v53.76h51.2v-53.76zM281.6 201.702h-51.2v133.12h51.2v-133.12z" />
|
| 13 |
+
</font></defs></svg>
|
css/fonts/yks-mc-font.ttf
ADDED
|
Binary file
|
css/fonts/yks-mc-font.woff
ADDED
|
Binary file
|
css/jquery-ui-1.10.4.smoothness.css
CHANGED
|
@@ -4,4 +4,1175 @@
|
|
| 4 |
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
| 5 |
* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
|
| 6 |
|
| 7 |
-
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
|
| 5 |
* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
|
| 6 |
|
| 7 |
+
/* Layout helpers
|
| 8 |
+
----------------------------------*/
|
| 9 |
+
.ui-helper-hidden {
|
| 10 |
+
display: none;
|
| 11 |
+
}
|
| 12 |
+
.ui-helper-hidden-accessible {
|
| 13 |
+
border: 0;
|
| 14 |
+
clip: rect(0 0 0 0);
|
| 15 |
+
height: 1px;
|
| 16 |
+
margin: -1px;
|
| 17 |
+
overflow: hidden;
|
| 18 |
+
padding: 0;
|
| 19 |
+
position: absolute;
|
| 20 |
+
width: 1px;
|
| 21 |
+
}
|
| 22 |
+
.ui-helper-reset {
|
| 23 |
+
margin: 0;
|
| 24 |
+
padding: 0;
|
| 25 |
+
border: 0;
|
| 26 |
+
outline: 0;
|
| 27 |
+
line-height: 1.3;
|
| 28 |
+
text-decoration: none;
|
| 29 |
+
font-size: 100%;
|
| 30 |
+
list-style: none;
|
| 31 |
+
}
|
| 32 |
+
.ui-helper-clearfix:before,
|
| 33 |
+
.ui-helper-clearfix:after {
|
| 34 |
+
content: "";
|
| 35 |
+
display: table;
|
| 36 |
+
border-collapse: collapse;
|
| 37 |
+
}
|
| 38 |
+
.ui-helper-clearfix:after {
|
| 39 |
+
clear: both;
|
| 40 |
+
}
|
| 41 |
+
.ui-helper-clearfix {
|
| 42 |
+
min-height: 0; /* support: IE7 */
|
| 43 |
+
}
|
| 44 |
+
.ui-helper-zfix {
|
| 45 |
+
width: 100%;
|
| 46 |
+
height: 100%;
|
| 47 |
+
top: 0;
|
| 48 |
+
left: 0;
|
| 49 |
+
position: absolute;
|
| 50 |
+
opacity: 0;
|
| 51 |
+
filter:Alpha(Opacity=0);
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
.ui-front {
|
| 55 |
+
z-index: 100;
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
/* Interaction Cues
|
| 60 |
+
----------------------------------*/
|
| 61 |
+
.ui-state-disabled {
|
| 62 |
+
cursor: default !important;
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
|
| 66 |
+
/* Icons
|
| 67 |
+
----------------------------------*/
|
| 68 |
+
|
| 69 |
+
/* states and images */
|
| 70 |
+
.ui-icon {
|
| 71 |
+
display: block;
|
| 72 |
+
text-indent: -99999px;
|
| 73 |
+
overflow: hidden;
|
| 74 |
+
background-repeat: no-repeat;
|
| 75 |
+
}
|
| 76 |
+
|
| 77 |
+
|
| 78 |
+
/* Misc visuals
|
| 79 |
+
----------------------------------*/
|
| 80 |
+
|
| 81 |
+
/* Overlays */
|
| 82 |
+
.ui-widget-overlay {
|
| 83 |
+
position: fixed;
|
| 84 |
+
top: 0;
|
| 85 |
+
left: 0;
|
| 86 |
+
width: 100%;
|
| 87 |
+
height: 100%;
|
| 88 |
+
}
|
| 89 |
+
.ui-accordion .ui-accordion-header {
|
| 90 |
+
display: block;
|
| 91 |
+
cursor: pointer;
|
| 92 |
+
position: relative;
|
| 93 |
+
margin-top: 2px;
|
| 94 |
+
padding: .5em .5em .5em .7em;
|
| 95 |
+
min-height: 0; /* support: IE7 */
|
| 96 |
+
}
|
| 97 |
+
.ui-accordion .ui-accordion-icons {
|
| 98 |
+
padding-left: 2.2em;
|
| 99 |
+
}
|
| 100 |
+
.ui-accordion .ui-accordion-noicons {
|
| 101 |
+
padding-left: .7em;
|
| 102 |
+
}
|
| 103 |
+
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
|
| 104 |
+
padding-left: 2.2em;
|
| 105 |
+
}
|
| 106 |
+
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
|
| 107 |
+
position: absolute;
|
| 108 |
+
left: .5em;
|
| 109 |
+
top: 50%;
|
| 110 |
+
margin-top: -8px;
|
| 111 |
+
}
|
| 112 |
+
.ui-accordion .ui-accordion-content {
|
| 113 |
+
padding: 1em 2.2em;
|
| 114 |
+
border-top: 0;
|
| 115 |
+
overflow: auto;
|
| 116 |
+
}
|
| 117 |
+
.ui-autocomplete {
|
| 118 |
+
position: absolute;
|
| 119 |
+
top: 0;
|
| 120 |
+
left: 0;
|
| 121 |
+
cursor: default;
|
| 122 |
+
}
|
| 123 |
+
.ui-button {
|
| 124 |
+
display: inline-block;
|
| 125 |
+
position: relative;
|
| 126 |
+
padding: 0;
|
| 127 |
+
line-height: normal;
|
| 128 |
+
margin-right: .1em;
|
| 129 |
+
cursor: pointer;
|
| 130 |
+
vertical-align: middle;
|
| 131 |
+
text-align: center;
|
| 132 |
+
overflow: visible; /* removes extra width in IE */
|
| 133 |
+
}
|
| 134 |
+
.ui-button,
|
| 135 |
+
.ui-button:link,
|
| 136 |
+
.ui-button:visited,
|
| 137 |
+
.ui-button:hover,
|
| 138 |
+
.ui-button:active {
|
| 139 |
+
text-decoration: none;
|
| 140 |
+
}
|
| 141 |
+
/* to make room for the icon, a width needs to be set here */
|
| 142 |
+
.ui-button-icon-only {
|
| 143 |
+
width: 2.2em;
|
| 144 |
+
}
|
| 145 |
+
/* button elements seem to need a little more width */
|
| 146 |
+
button.ui-button-icon-only {
|
| 147 |
+
width: 2.4em;
|
| 148 |
+
}
|
| 149 |
+
.ui-button-icons-only {
|
| 150 |
+
width: 3.4em;
|
| 151 |
+
}
|
| 152 |
+
button.ui-button-icons-only {
|
| 153 |
+
width: 3.7em;
|
| 154 |
+
}
|
| 155 |
+
|
| 156 |
+
/* button text element */
|
| 157 |
+
.ui-button .ui-button-text {
|
| 158 |
+
display: block;
|
| 159 |
+
line-height: normal;
|
| 160 |
+
}
|
| 161 |
+
.ui-button-text-only .ui-button-text {
|
| 162 |
+
padding: .4em 1em;
|
| 163 |
+
}
|
| 164 |
+
.ui-button-icon-only .ui-button-text,
|
| 165 |
+
.ui-button-icons-only .ui-button-text {
|
| 166 |
+
padding: .4em;
|
| 167 |
+
text-indent: -9999999px;
|
| 168 |
+
}
|
| 169 |
+
.ui-button-text-icon-primary .ui-button-text,
|
| 170 |
+
.ui-button-text-icons .ui-button-text {
|
| 171 |
+
padding: .4em 1em .4em 2.1em;
|
| 172 |
+
}
|
| 173 |
+
.ui-button-text-icon-secondary .ui-button-text,
|
| 174 |
+
.ui-button-text-icons .ui-button-text {
|
| 175 |
+
padding: .4em 2.1em .4em 1em;
|
| 176 |
+
}
|
| 177 |
+
.ui-button-text-icons .ui-button-text {
|
| 178 |
+
padding-left: 2.1em;
|
| 179 |
+
padding-right: 2.1em;
|
| 180 |
+
}
|
| 181 |
+
/* no icon support for input elements, provide padding by default */
|
| 182 |
+
input.ui-button {
|
| 183 |
+
padding: .4em 1em;
|
| 184 |
+
}
|
| 185 |
+
|
| 186 |
+
/* button icon element(s) */
|
| 187 |
+
.ui-button-icon-only .ui-icon,
|
| 188 |
+
.ui-button-text-icon-primary .ui-icon,
|
| 189 |
+
.ui-button-text-icon-secondary .ui-icon,
|
| 190 |
+
.ui-button-text-icons .ui-icon,
|
| 191 |
+
.ui-button-icons-only .ui-icon {
|
| 192 |
+
position: absolute;
|
| 193 |
+
top: 50%;
|
| 194 |
+
margin-top: -8px;
|
| 195 |
+
}
|
| 196 |
+
.ui-button-icon-only .ui-icon {
|
| 197 |
+
left: 50%;
|
| 198 |
+
margin-left: -8px;
|
| 199 |
+
}
|
| 200 |
+
.ui-button-text-icon-primary .ui-button-icon-primary,
|
| 201 |
+
.ui-button-text-icons .ui-button-icon-primary,
|
| 202 |
+
.ui-button-icons-only .ui-button-icon-primary {
|
| 203 |
+
left: .5em;
|
| 204 |
+
}
|
| 205 |
+
.ui-button-text-icon-secondary .ui-button-icon-secondary,
|
| 206 |
+
.ui-button-text-icons .ui-button-icon-secondary,
|
| 207 |
+
.ui-button-icons-only .ui-button-icon-secondary {
|
| 208 |
+
right: .5em;
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
/* button sets */
|
| 212 |
+
.ui-buttonset {
|
| 213 |
+
margin-right: 7px;
|
| 214 |
+
}
|
| 215 |
+
.ui-buttonset .ui-button {
|
| 216 |
+
margin-left: 0;
|
| 217 |
+
margin-right: -.3em;
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
/* workarounds */
|
| 221 |
+
/* reset extra padding in Firefox, see h5bp.com/l */
|
| 222 |
+
input.ui-button::-moz-focus-inner,
|
| 223 |
+
button.ui-button::-moz-focus-inner {
|
| 224 |
+
border: 0;
|
| 225 |
+
padding: 0;
|
| 226 |
+
}
|
| 227 |
+
.ui-datepicker {
|
| 228 |
+
width: 17em;
|
| 229 |
+
padding: .2em .2em 0;
|
| 230 |
+
display: none;
|
| 231 |
+
}
|
| 232 |
+
.ui-datepicker .ui-datepicker-header {
|
| 233 |
+
position: relative;
|
| 234 |
+
padding: .2em 0;
|
| 235 |
+
}
|
| 236 |
+
.ui-datepicker .ui-datepicker-prev,
|
| 237 |
+
.ui-datepicker .ui-datepicker-next {
|
| 238 |
+
position: absolute;
|
| 239 |
+
top: 2px;
|
| 240 |
+
width: 1.8em;
|
| 241 |
+
height: 1.8em;
|
| 242 |
+
}
|
| 243 |
+
.ui-datepicker .ui-datepicker-prev-hover,
|
| 244 |
+
.ui-datepicker .ui-datepicker-next-hover {
|
| 245 |
+
top: 1px;
|
| 246 |
+
}
|
| 247 |
+
.ui-datepicker .ui-datepicker-prev {
|
| 248 |
+
left: 2px;
|
| 249 |
+
}
|
| 250 |
+
.ui-datepicker .ui-datepicker-next {
|
| 251 |
+
right: 2px;
|
| 252 |
+
}
|
| 253 |
+
.ui-datepicker .ui-datepicker-prev-hover {
|
| 254 |
+
left: 1px;
|
| 255 |
+
}
|
| 256 |
+
.ui-datepicker .ui-datepicker-next-hover {
|
| 257 |
+
right: 1px;
|
| 258 |
+
}
|
| 259 |
+
.ui-datepicker .ui-datepicker-prev span,
|
| 260 |
+
.ui-datepicker .ui-datepicker-next span {
|
| 261 |
+
display: block;
|
| 262 |
+
position: absolute;
|
| 263 |
+
left: 50%;
|
| 264 |
+
margin-left: -8px;
|
| 265 |
+
top: 50%;
|
| 266 |
+
margin-top: -8px;
|
| 267 |
+
}
|
| 268 |
+
.ui-datepicker .ui-datepicker-title {
|
| 269 |
+
margin: 0 2.3em;
|
| 270 |
+
line-height: 1.8em;
|
| 271 |
+
text-align: center;
|
| 272 |
+
}
|
| 273 |
+
.ui-datepicker .ui-datepicker-title select {
|
| 274 |
+
font-size: 1em;
|
| 275 |
+
margin: 1px 0;
|
| 276 |
+
}
|
| 277 |
+
.ui-datepicker select.ui-datepicker-month,
|
| 278 |
+
.ui-datepicker select.ui-datepicker-year {
|
| 279 |
+
width: 49%;
|
| 280 |
+
}
|
| 281 |
+
.ui-datepicker table {
|
| 282 |
+
width: 100%;
|
| 283 |
+
font-size: .9em;
|
| 284 |
+
border-collapse: collapse;
|
| 285 |
+
margin: 0 0 .4em;
|
| 286 |
+
}
|
| 287 |
+
.ui-datepicker th {
|
| 288 |
+
padding: .7em .3em;
|
| 289 |
+
text-align: center;
|
| 290 |
+
font-weight: bold;
|
| 291 |
+
border: 0;
|
| 292 |
+
}
|
| 293 |
+
.ui-datepicker td {
|
| 294 |
+
border: 0;
|
| 295 |
+
padding: 1px;
|
| 296 |
+
}
|
| 297 |
+
.ui-datepicker td span,
|
| 298 |
+
.ui-datepicker td a {
|
| 299 |
+
display: block;
|
| 300 |
+
padding: .2em;
|
| 301 |
+
text-align: right;
|
| 302 |
+
text-decoration: none;
|
| 303 |
+
}
|
| 304 |
+
.ui-datepicker .ui-datepicker-buttonpane {
|
| 305 |
+
background-image: none;
|
| 306 |
+
margin: .7em 0 0 0;
|
| 307 |
+
padding: 0 .2em;
|
| 308 |
+
border-left: 0;
|
| 309 |
+
border-right: 0;
|
| 310 |
+
border-bottom: 0;
|
| 311 |
+
}
|
| 312 |
+
.ui-datepicker .ui-datepicker-buttonpane button {
|
| 313 |
+
float: right;
|
| 314 |
+
margin: .5em .2em .4em;
|
| 315 |
+
cursor: pointer;
|
| 316 |
+
padding: .2em .6em .3em .6em;
|
| 317 |
+
width: auto;
|
| 318 |
+
overflow: visible;
|
| 319 |
+
}
|
| 320 |
+
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
|
| 321 |
+
float: left;
|
| 322 |
+
}
|
| 323 |
+
|
| 324 |
+
/* with multiple calendars */
|
| 325 |
+
.ui-datepicker.ui-datepicker-multi {
|
| 326 |
+
width: auto;
|
| 327 |
+
}
|
| 328 |
+
.ui-datepicker-multi .ui-datepicker-group {
|
| 329 |
+
float: left;
|
| 330 |
+
}
|
| 331 |
+
.ui-datepicker-multi .ui-datepicker-group table {
|
| 332 |
+
width: 95%;
|
| 333 |
+
margin: 0 auto .4em;
|
| 334 |
+
}
|
| 335 |
+
.ui-datepicker-multi-2 .ui-datepicker-group {
|
| 336 |
+
width: 50%;
|
| 337 |
+
}
|
| 338 |
+
.ui-datepicker-multi-3 .ui-datepicker-group {
|
| 339 |
+
width: 33.3%;
|
| 340 |
+
}
|
| 341 |
+
.ui-datepicker-multi-4 .ui-datepicker-group {
|
| 342 |
+
width: 25%;
|
| 343 |
+
}
|
| 344 |
+
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
|
| 345 |
+
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
|
| 346 |
+
border-left-width: 0;
|
| 347 |
+
}
|
| 348 |
+
.ui-datepicker-multi .ui-datepicker-buttonpane {
|
| 349 |
+
clear: left;
|
| 350 |
+
}
|
| 351 |
+
.ui-datepicker-row-break {
|
| 352 |
+
clear: both;
|
| 353 |
+
width: 100%;
|
| 354 |
+
font-size: 0;
|
| 355 |
+
}
|
| 356 |
+
|
| 357 |
+
/* RTL support */
|
| 358 |
+
.ui-datepicker-rtl {
|
| 359 |
+
direction: rtl;
|
| 360 |
+
}
|
| 361 |
+
.ui-datepicker-rtl .ui-datepicker-prev {
|
| 362 |
+
right: 2px;
|
| 363 |
+
left: auto;
|
| 364 |
+
}
|
| 365 |
+
.ui-datepicker-rtl .ui-datepicker-next {
|
| 366 |
+
left: 2px;
|
| 367 |
+
right: auto;
|
| 368 |
+
}
|
| 369 |
+
.ui-datepicker-rtl .ui-datepicker-prev:hover {
|
| 370 |
+
right: 1px;
|
| 371 |
+
left: auto;
|
| 372 |
+
}
|
| 373 |
+
.ui-datepicker-rtl .ui-datepicker-next:hover {
|
| 374 |
+
left: 1px;
|
| 375 |
+
right: auto;
|
| 376 |
+
}
|
| 377 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane {
|
| 378 |
+
clear: right;
|
| 379 |
+
}
|
| 380 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
|
| 381 |
+
float: left;
|
| 382 |
+
}
|
| 383 |
+
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
|
| 384 |
+
.ui-datepicker-rtl .ui-datepicker-group {
|
| 385 |
+
float: right;
|
| 386 |
+
}
|
| 387 |
+
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
|
| 388 |
+
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
|
| 389 |
+
border-right-width: 0;
|
| 390 |
+
border-left-width: 1px;
|
| 391 |
+
}
|
| 392 |
+
.ui-dialog {
|
| 393 |
+
overflow: hidden;
|
| 394 |
+
position: absolute;
|
| 395 |
+
top: 0;
|
| 396 |
+
left: 0;
|
| 397 |
+
padding: .2em;
|
| 398 |
+
outline: 0;
|
| 399 |
+
}
|
| 400 |
+
.ui-dialog .ui-dialog-titlebar {
|
| 401 |
+
padding: .4em 1em;
|
| 402 |
+
position: relative;
|
| 403 |
+
}
|
| 404 |
+
.ui-dialog .ui-dialog-title {
|
| 405 |
+
float: left;
|
| 406 |
+
margin: .1em 0;
|
| 407 |
+
white-space: nowrap;
|
| 408 |
+
width: 90%;
|
| 409 |
+
overflow: hidden;
|
| 410 |
+
text-overflow: ellipsis;
|
| 411 |
+
}
|
| 412 |
+
.ui-dialog .ui-dialog-titlebar-close {
|
| 413 |
+
position: absolute;
|
| 414 |
+
right: .3em;
|
| 415 |
+
top: 50%;
|
| 416 |
+
width: 20px;
|
| 417 |
+
margin: -10px 0 0 0;
|
| 418 |
+
padding: 1px;
|
| 419 |
+
height: 20px;
|
| 420 |
+
}
|
| 421 |
+
.ui-dialog .ui-dialog-content {
|
| 422 |
+
position: relative;
|
| 423 |
+
border: 0;
|
| 424 |
+
padding: .5em 1em;
|
| 425 |
+
background: none;
|
| 426 |
+
overflow: auto;
|
| 427 |
+
}
|
| 428 |
+
.ui-dialog .ui-dialog-buttonpane {
|
| 429 |
+
text-align: left;
|
| 430 |
+
border-width: 1px 0 0 0;
|
| 431 |
+
background-image: none;
|
| 432 |
+
margin-top: .5em;
|
| 433 |
+
padding: .3em 1em .5em .4em;
|
| 434 |
+
}
|
| 435 |
+
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
|
| 436 |
+
float: right;
|
| 437 |
+
}
|
| 438 |
+
.ui-dialog .ui-dialog-buttonpane button {
|
| 439 |
+
margin: .5em .4em .5em 0;
|
| 440 |
+
cursor: pointer;
|
| 441 |
+
}
|
| 442 |
+
.ui-dialog .ui-resizable-se {
|
| 443 |
+
width: 12px;
|
| 444 |
+
height: 12px;
|
| 445 |
+
right: -5px;
|
| 446 |
+
bottom: -5px;
|
| 447 |
+
background-position: 16px 16px;
|
| 448 |
+
}
|
| 449 |
+
.ui-draggable .ui-dialog-titlebar {
|
| 450 |
+
cursor: move;
|
| 451 |
+
}
|
| 452 |
+
.ui-menu {
|
| 453 |
+
list-style: none;
|
| 454 |
+
padding: 2px;
|
| 455 |
+
margin: 0;
|
| 456 |
+
display: block;
|
| 457 |
+
outline: none;
|
| 458 |
+
}
|
| 459 |
+
.ui-menu .ui-menu {
|
| 460 |
+
margin-top: -3px;
|
| 461 |
+
position: absolute;
|
| 462 |
+
}
|
| 463 |
+
.ui-menu .ui-menu-item {
|
| 464 |
+
margin: 0;
|
| 465 |
+
padding: 0;
|
| 466 |
+
width: 100%;
|
| 467 |
+
/* support: IE10, see #8844 */
|
| 468 |
+
list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
|
| 469 |
+
}
|
| 470 |
+
.ui-menu .ui-menu-divider {
|
| 471 |
+
margin: 5px -2px 5px -2px;
|
| 472 |
+
height: 0;
|
| 473 |
+
font-size: 0;
|
| 474 |
+
line-height: 0;
|
| 475 |
+
border-width: 1px 0 0 0;
|
| 476 |
+
}
|
| 477 |
+
.ui-menu .ui-menu-item a {
|
| 478 |
+
text-decoration: none;
|
| 479 |
+
display: block;
|
| 480 |
+
padding: 2px .4em;
|
| 481 |
+
line-height: 1.5;
|
| 482 |
+
min-height: 0; /* support: IE7 */
|
| 483 |
+
font-weight: normal;
|
| 484 |
+
}
|
| 485 |
+
.ui-menu .ui-menu-item a.ui-state-focus,
|
| 486 |
+
.ui-menu .ui-menu-item a.ui-state-active {
|
| 487 |
+
font-weight: normal;
|
| 488 |
+
margin: -1px;
|
| 489 |
+
}
|
| 490 |
+
|
| 491 |
+
.ui-menu .ui-state-disabled {
|
| 492 |
+
font-weight: normal;
|
| 493 |
+
margin: .4em 0 .2em;
|
| 494 |
+
line-height: 1.5;
|
| 495 |
+
}
|
| 496 |
+
.ui-menu .ui-state-disabled a {
|
| 497 |
+
cursor: default;
|
| 498 |
+
}
|
| 499 |
+
|
| 500 |
+
/* icon support */
|
| 501 |
+
.ui-menu-icons {
|
| 502 |
+
position: relative;
|
| 503 |
+
}
|
| 504 |
+
.ui-menu-icons .ui-menu-item a {
|
| 505 |
+
position: relative;
|
| 506 |
+
padding-left: 2em;
|
| 507 |
+
}
|
| 508 |
+
|
| 509 |
+
/* left-aligned */
|
| 510 |
+
.ui-menu .ui-icon {
|
| 511 |
+
position: absolute;
|
| 512 |
+
top: .2em;
|
| 513 |
+
left: .2em;
|
| 514 |
+
}
|
| 515 |
+
|
| 516 |
+
/* right-aligned */
|
| 517 |
+
.ui-menu .ui-menu-icon {
|
| 518 |
+
position: static;
|
| 519 |
+
float: right;
|
| 520 |
+
}
|
| 521 |
+
.ui-progressbar {
|
| 522 |
+
height: 2em;
|
| 523 |
+
text-align: left;
|
| 524 |
+
overflow: hidden;
|
| 525 |
+
}
|
| 526 |
+
.ui-progressbar .ui-progressbar-value {
|
| 527 |
+
margin: -1px;
|
| 528 |
+
height: 100%;
|
| 529 |
+
}
|
| 530 |
+
.ui-progressbar .ui-progressbar-overlay {
|
| 531 |
+
background: url("images/animated-overlay.gif");
|
| 532 |
+
height: 100%;
|
| 533 |
+
filter: alpha(opacity=25);
|
| 534 |
+
opacity: 0.25;
|
| 535 |
+
}
|
| 536 |
+
.ui-progressbar-indeterminate .ui-progressbar-value {
|
| 537 |
+
background-image: none;
|
| 538 |
+
}
|
| 539 |
+
.ui-resizable {
|
| 540 |
+
position: relative;
|
| 541 |
+
}
|
| 542 |
+
.ui-resizable-handle {
|
| 543 |
+
position: absolute;
|
| 544 |
+
font-size: 0.1px;
|
| 545 |
+
display: block;
|
| 546 |
+
}
|
| 547 |
+
.ui-resizable-disabled .ui-resizable-handle,
|
| 548 |
+
.ui-resizable-autohide .ui-resizable-handle {
|
| 549 |
+
display: none;
|
| 550 |
+
}
|
| 551 |
+
.ui-resizable-n {
|
| 552 |
+
cursor: n-resize;
|
| 553 |
+
height: 7px;
|
| 554 |
+
width: 100%;
|
| 555 |
+
top: -5px;
|
| 556 |
+
left: 0;
|
| 557 |
+
}
|
| 558 |
+
.ui-resizable-s {
|
| 559 |
+
cursor: s-resize;
|
| 560 |
+
height: 7px;
|
| 561 |
+
width: 100%;
|
| 562 |
+
bottom: -5px;
|
| 563 |
+
left: 0;
|
| 564 |
+
}
|
| 565 |
+
.ui-resizable-e {
|
| 566 |
+
cursor: e-resize;
|
| 567 |
+
width: 7px;
|
| 568 |
+
right: -5px;
|
| 569 |
+
top: 0;
|
| 570 |
+
height: 100%;
|
| 571 |
+
}
|
| 572 |
+
.ui-resizable-w {
|
| 573 |
+
cursor: w-resize;
|
| 574 |
+
width: 7px;
|
| 575 |
+
left: -5px;
|
| 576 |
+
top: 0;
|
| 577 |
+
height: 100%;
|
| 578 |
+
}
|
| 579 |
+
.ui-resizable-se {
|
| 580 |
+
cursor: se-resize;
|
| 581 |
+
width: 12px;
|
| 582 |
+
height: 12px;
|
| 583 |
+
right: 1px;
|
| 584 |
+
bottom: 1px;
|
| 585 |
+
}
|
| 586 |
+
.ui-resizable-sw {
|
| 587 |
+
cursor: sw-resize;
|
| 588 |
+
width: 9px;
|
| 589 |
+
height: 9px;
|
| 590 |
+
left: -5px;
|
| 591 |
+
bottom: -5px;
|
| 592 |
+
}
|
| 593 |
+
.ui-resizable-nw {
|
| 594 |
+
cursor: nw-resize;
|
| 595 |
+
width: 9px;
|
| 596 |
+
height: 9px;
|
| 597 |
+
left: -5px;
|
| 598 |
+
top: -5px;
|
| 599 |
+
}
|
| 600 |
+
.ui-resizable-ne {
|
| 601 |
+
cursor: ne-resize;
|
| 602 |
+
width: 9px;
|
| 603 |
+
height: 9px;
|
| 604 |
+
right: -5px;
|
| 605 |
+
top: -5px;
|
| 606 |
+
}
|
| 607 |
+
.ui-selectable-helper {
|
| 608 |
+
position: absolute;
|
| 609 |
+
z-index: 100;
|
| 610 |
+
border: 1px dotted black;
|
| 611 |
+
}
|
| 612 |
+
.ui-slider {
|
| 613 |
+
position: relative;
|
| 614 |
+
text-align: left;
|
| 615 |
+
}
|
| 616 |
+
.ui-slider .ui-slider-handle {
|
| 617 |
+
position: absolute;
|
| 618 |
+
z-index: 2;
|
| 619 |
+
width: 1.2em;
|
| 620 |
+
height: 1.2em;
|
| 621 |
+
cursor: default;
|
| 622 |
+
}
|
| 623 |
+
.ui-slider .ui-slider-range {
|
| 624 |
+
position: absolute;
|
| 625 |
+
z-index: 1;
|
| 626 |
+
font-size: .7em;
|
| 627 |
+
display: block;
|
| 628 |
+
border: 0;
|
| 629 |
+
background-position: 0 0;
|
| 630 |
+
}
|
| 631 |
+
|
| 632 |
+
/* For IE8 - See #6727 */
|
| 633 |
+
.ui-slider.ui-state-disabled .ui-slider-handle,
|
| 634 |
+
.ui-slider.ui-state-disabled .ui-slider-range {
|
| 635 |
+
filter: inherit;
|
| 636 |
+
}
|
| 637 |
+
|
| 638 |
+
.ui-slider-horizontal {
|
| 639 |
+
height: .8em;
|
| 640 |
+
}
|
| 641 |
+
.ui-slider-horizontal .ui-slider-handle {
|
| 642 |
+
top: -.3em;
|
| 643 |
+
margin-left: -.6em;
|
| 644 |
+
}
|
| 645 |
+
.ui-slider-horizontal .ui-slider-range {
|
| 646 |
+
top: 0;
|
| 647 |
+
height: 100%;
|
| 648 |
+
}
|
| 649 |
+
.ui-slider-horizontal .ui-slider-range-min {
|
| 650 |
+
left: 0;
|
| 651 |
+
}
|
| 652 |
+
.ui-slider-horizontal .ui-slider-range-max {
|
| 653 |
+
right: 0;
|
| 654 |
+
}
|
| 655 |
+
|
| 656 |
+
.ui-slider-vertical {
|
| 657 |
+
width: .8em;
|
| 658 |
+
height: 100px;
|
| 659 |
+
}
|
| 660 |
+
.ui-slider-vertical .ui-slider-handle {
|
| 661 |
+
left: -.3em;
|
| 662 |
+
margin-left: 0;
|
| 663 |
+
margin-bottom: -.6em;
|
| 664 |
+
}
|
| 665 |
+
.ui-slider-vertical .ui-slider-range {
|
| 666 |
+
left: 0;
|
| 667 |
+
width: 100%;
|
| 668 |
+
}
|
| 669 |
+
.ui-slider-vertical .ui-slider-range-min {
|
| 670 |
+
bottom: 0;
|
| 671 |
+
}
|
| 672 |
+
.ui-slider-vertical .ui-slider-range-max {
|
| 673 |
+
top: 0;
|
| 674 |
+
}
|
| 675 |
+
.ui-spinner {
|
| 676 |
+
position: relative;
|
| 677 |
+
display: inline-block;
|
| 678 |
+
overflow: hidden;
|
| 679 |
+
padding: 0;
|
| 680 |
+
vertical-align: middle;
|
| 681 |
+
}
|
| 682 |
+
.ui-spinner-input {
|
| 683 |
+
border: none;
|
| 684 |
+
background: none;
|
| 685 |
+
color: inherit;
|
| 686 |
+
padding: 0;
|
| 687 |
+
margin: .2em 0;
|
| 688 |
+
vertical-align: middle;
|
| 689 |
+
margin-left: .4em;
|
| 690 |
+
margin-right: 22px;
|
| 691 |
+
}
|
| 692 |
+
.ui-spinner-button {
|
| 693 |
+
width: 16px;
|
| 694 |
+
height: 50%;
|
| 695 |
+
font-size: .5em;
|
| 696 |
+
padding: 0;
|
| 697 |
+
margin: 0;
|
| 698 |
+
text-align: center;
|
| 699 |
+
position: absolute;
|
| 700 |
+
cursor: default;
|
| 701 |
+
display: block;
|
| 702 |
+
overflow: hidden;
|
| 703 |
+
right: 0;
|
| 704 |
+
}
|
| 705 |
+
/* more specificity required here to override default borders */
|
| 706 |
+
.ui-spinner a.ui-spinner-button {
|
| 707 |
+
border-top: none;
|
| 708 |
+
border-bottom: none;
|
| 709 |
+
border-right: none;
|
| 710 |
+
}
|
| 711 |
+
/* vertically center icon */
|
| 712 |
+
.ui-spinner .ui-icon {
|
| 713 |
+
position: absolute;
|
| 714 |
+
margin-top: -8px;
|
| 715 |
+
top: 50%;
|
| 716 |
+
left: 0;
|
| 717 |
+
}
|
| 718 |
+
.ui-spinner-up {
|
| 719 |
+
top: 0;
|
| 720 |
+
}
|
| 721 |
+
.ui-spinner-down {
|
| 722 |
+
bottom: 0;
|
| 723 |
+
}
|
| 724 |
+
|
| 725 |
+
/* TR overrides */
|
| 726 |
+
.ui-spinner .ui-icon-triangle-1-s {
|
| 727 |
+
/* need to fix icons sprite */
|
| 728 |
+
background-position: -65px -16px;
|
| 729 |
+
}
|
| 730 |
+
.ui-tabs {
|
| 731 |
+
position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
|
| 732 |
+
padding: .2em;
|
| 733 |
+
}
|
| 734 |
+
.ui-tabs .ui-tabs-nav {
|
| 735 |
+
margin: 0;
|
| 736 |
+
padding: .2em .2em 0;
|
| 737 |
+
}
|
| 738 |
+
.ui-tabs .ui-tabs-nav li {
|
| 739 |
+
list-style: none;
|
| 740 |
+
float: left;
|
| 741 |
+
position: relative;
|
| 742 |
+
top: 0;
|
| 743 |
+
margin: 1px .2em 0 0;
|
| 744 |
+
border-bottom-width: 0;
|
| 745 |
+
padding: 0;
|
| 746 |
+
white-space: nowrap;
|
| 747 |
+
}
|
| 748 |
+
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
|
| 749 |
+
float: left;
|
| 750 |
+
padding: .5em 1em;
|
| 751 |
+
text-decoration: none;
|
| 752 |
+
}
|
| 753 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
|
| 754 |
+
margin-bottom: -1px;
|
| 755 |
+
padding-bottom: 1px;
|
| 756 |
+
}
|
| 757 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
|
| 758 |
+
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
|
| 759 |
+
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
|
| 760 |
+
cursor: text;
|
| 761 |
+
}
|
| 762 |
+
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
|
| 763 |
+
cursor: pointer;
|
| 764 |
+
}
|
| 765 |
+
.ui-tabs .ui-tabs-panel {
|
| 766 |
+
display: block;
|
| 767 |
+
border-width: 0;
|
| 768 |
+
padding: 1em 1.4em;
|
| 769 |
+
background: none;
|
| 770 |
+
}
|
| 771 |
+
.ui-tooltip {
|
| 772 |
+
padding: 8px;
|
| 773 |
+
position: absolute;
|
| 774 |
+
z-index: 9999;
|
| 775 |
+
max-width: 300px;
|
| 776 |
+
-webkit-box-shadow: 0 0 5px #aaa;
|
| 777 |
+
box-shadow: 0 0 5px #aaa;
|
| 778 |
+
}
|
| 779 |
+
body .ui-tooltip {
|
| 780 |
+
border-width: 2px;
|
| 781 |
+
}
|
| 782 |
+
|
| 783 |
+
/* Component containers
|
| 784 |
+
----------------------------------*/
|
| 785 |
+
.ui-widget {
|
| 786 |
+
font-family: Verdana,Arial,sans-serif;
|
| 787 |
+
font-size: 1.1em;
|
| 788 |
+
}
|
| 789 |
+
.ui-widget .ui-widget {
|
| 790 |
+
font-size: 1em;
|
| 791 |
+
}
|
| 792 |
+
.ui-widget input,
|
| 793 |
+
.ui-widget select,
|
| 794 |
+
.ui-widget textarea,
|
| 795 |
+
.ui-widget button {
|
| 796 |
+
font-family: Verdana,Arial,sans-serif;
|
| 797 |
+
font-size: 1em;
|
| 798 |
+
}
|
| 799 |
+
.ui-widget-content {
|
| 800 |
+
border: 1px solid #aaaaaa;
|
| 801 |
+
background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
|
| 802 |
+
color: #222222;
|
| 803 |
+
}
|
| 804 |
+
.ui-widget-content a {
|
| 805 |
+
color: #222222;
|
| 806 |
+
}
|
| 807 |
+
.ui-widget-header {
|
| 808 |
+
border: 1px solid #aaaaaa;
|
| 809 |
+
background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
|
| 810 |
+
color: #222222;
|
| 811 |
+
font-weight: bold;
|
| 812 |
+
}
|
| 813 |
+
.ui-widget-header a {
|
| 814 |
+
color: #222222;
|
| 815 |
+
}
|
| 816 |
+
|
| 817 |
+
/* Interaction states
|
| 818 |
+
----------------------------------*/
|
| 819 |
+
.ui-state-default,
|
| 820 |
+
.ui-widget-content .ui-state-default,
|
| 821 |
+
.ui-widget-header .ui-state-default {
|
| 822 |
+
border: 1px solid #d3d3d3;
|
| 823 |
+
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
|
| 824 |
+
font-weight: normal;
|
| 825 |
+
color: #555555;
|
| 826 |
+
}
|
| 827 |
+
.ui-state-default a,
|
| 828 |
+
.ui-state-default a:link,
|
| 829 |
+
.ui-state-default a:visited {
|
| 830 |
+
color: #555555;
|
| 831 |
+
text-decoration: none;
|
| 832 |
+
}
|
| 833 |
+
.ui-state-hover,
|
| 834 |
+
.ui-widget-content .ui-state-hover,
|
| 835 |
+
.ui-widget-header .ui-state-hover,
|
| 836 |
+
.ui-state-focus,
|
| 837 |
+
.ui-widget-content .ui-state-focus,
|
| 838 |
+
.ui-widget-header .ui-state-focus {
|
| 839 |
+
border: 1px solid #999999;
|
| 840 |
+
background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
|
| 841 |
+
font-weight: normal;
|
| 842 |
+
color: #212121;
|
| 843 |
+
}
|
| 844 |
+
.ui-state-hover a,
|
| 845 |
+
.ui-state-hover a:hover,
|
| 846 |
+
.ui-state-hover a:link,
|
| 847 |
+
.ui-state-hover a:visited,
|
| 848 |
+
.ui-state-focus a,
|
| 849 |
+
.ui-state-focus a:hover,
|
| 850 |
+
.ui-state-focus a:link,
|
| 851 |
+
.ui-state-focus a:visited {
|
| 852 |
+
color: #212121;
|
| 853 |
+
text-decoration: none;
|
| 854 |
+
}
|
| 855 |
+
.ui-state-active,
|
| 856 |
+
.ui-widget-content .ui-state-active,
|
| 857 |
+
.ui-widget-header .ui-state-active {
|
| 858 |
+
border: 1px solid #aaaaaa;
|
| 859 |
+
background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
|
| 860 |
+
font-weight: normal;
|
| 861 |
+
color: #212121;
|
| 862 |
+
}
|
| 863 |
+
.ui-state-active a,
|
| 864 |
+
.ui-state-active a:link,
|
| 865 |
+
.ui-state-active a:visited {
|
| 866 |
+
color: #212121;
|
| 867 |
+
text-decoration: none;
|
| 868 |
+
}
|
| 869 |
+
|
| 870 |
+
/* Interaction Cues
|
| 871 |
+
----------------------------------*/
|
| 872 |
+
.ui-state-highlight,
|
| 873 |
+
.ui-widget-content .ui-state-highlight,
|
| 874 |
+
.ui-widget-header .ui-state-highlight {
|
| 875 |
+
border: 1px solid #fcefa1;
|
| 876 |
+
background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
|
| 877 |
+
color: #363636;
|
| 878 |
+
}
|
| 879 |
+
.ui-state-highlight a,
|
| 880 |
+
.ui-widget-content .ui-state-highlight a,
|
| 881 |
+
.ui-widget-header .ui-state-highlight a {
|
| 882 |
+
color: #363636;
|
| 883 |
+
}
|
| 884 |
+
.ui-state-error,
|
| 885 |
+
.ui-widget-content .ui-state-error,
|
| 886 |
+
.ui-widget-header .ui-state-error {
|
| 887 |
+
border: 1px solid #cd0a0a;
|
| 888 |
+
background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
|
| 889 |
+
color: #cd0a0a;
|
| 890 |
+
}
|
| 891 |
+
.ui-state-error a,
|
| 892 |
+
.ui-widget-content .ui-state-error a,
|
| 893 |
+
.ui-widget-header .ui-state-error a {
|
| 894 |
+
color: #cd0a0a;
|
| 895 |
+
}
|
| 896 |
+
.ui-state-error-text,
|
| 897 |
+
.ui-widget-content .ui-state-error-text,
|
| 898 |
+
.ui-widget-header .ui-state-error-text {
|
| 899 |
+
color: #cd0a0a;
|
| 900 |
+
}
|
| 901 |
+
.ui-priority-primary,
|
| 902 |
+
.ui-widget-content .ui-priority-primary,
|
| 903 |
+
.ui-widget-header .ui-priority-primary {
|
| 904 |
+
font-weight: bold;
|
| 905 |
+
}
|
| 906 |
+
.ui-priority-secondary,
|
| 907 |
+
.ui-widget-content .ui-priority-secondary,
|
| 908 |
+
.ui-widget-header .ui-priority-secondary {
|
| 909 |
+
opacity: .7;
|
| 910 |
+
filter:Alpha(Opacity=70);
|
| 911 |
+
font-weight: normal;
|
| 912 |
+
}
|
| 913 |
+
.ui-state-disabled,
|
| 914 |
+
.ui-widget-content .ui-state-disabled,
|
| 915 |
+
.ui-widget-header .ui-state-disabled {
|
| 916 |
+
opacity: .35;
|
| 917 |
+
filter:Alpha(Opacity=35);
|
| 918 |
+
background-image: none;
|
| 919 |
+
}
|
| 920 |
+
.ui-state-disabled .ui-icon {
|
| 921 |
+
filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
|
| 922 |
+
}
|
| 923 |
+
|
| 924 |
+
/* Icons
|
| 925 |
+
----------------------------------*/
|
| 926 |
+
|
| 927 |
+
/* states and images */
|
| 928 |
+
.ui-icon {
|
| 929 |
+
width: 16px;
|
| 930 |
+
height: 16px;
|
| 931 |
+
}
|
| 932 |
+
.ui-icon,
|
| 933 |
+
.ui-widget-content .ui-icon {
|
| 934 |
+
background-image: url(images/ui-icons_222222_256x240.png);
|
| 935 |
+
}
|
| 936 |
+
.ui-widget-header .ui-icon {
|
| 937 |
+
background-image: url(images/ui-icons_222222_256x240.png);
|
| 938 |
+
}
|
| 939 |
+
.ui-state-default .ui-icon {
|
| 940 |
+
background-image: url(images/ui-icons_888888_256x240.png);
|
| 941 |
+
}
|
| 942 |
+
.ui-state-hover .ui-icon,
|
| 943 |
+
.ui-state-focus .ui-icon {
|
| 944 |
+
background-image: url(images/ui-icons_454545_256x240.png);
|
| 945 |
+
}
|
| 946 |
+
.ui-state-active .ui-icon {
|
| 947 |
+
background-image: url(images/ui-icons_454545_256x240.png);
|
| 948 |
+
}
|
| 949 |
+
.ui-state-highlight .ui-icon {
|
| 950 |
+
background-image: url(images/ui-icons_2e83ff_256x240.png);
|
| 951 |
+
}
|
| 952 |
+
.ui-state-error .ui-icon,
|
| 953 |
+
.ui-state-error-text .ui-icon {
|
| 954 |
+
background-image: url(images/ui-icons_cd0a0a_256x240.png);
|
| 955 |
+
}
|
| 956 |
+
|
| 957 |
+
/* positioning */
|
| 958 |
+
.ui-icon-blank { background-position: 16px 16px; }
|
| 959 |
+
.ui-icon-carat-1-n { background-position: 0 0; }
|
| 960 |
+
.ui-icon-carat-1-ne { background-position: -16px 0; }
|
| 961 |
+
.ui-icon-carat-1-e { background-position: -32px 0; }
|
| 962 |
+
.ui-icon-carat-1-se { background-position: -48px 0; }
|
| 963 |
+
.ui-icon-carat-1-s { background-position: -64px 0; }
|
| 964 |
+
.ui-icon-carat-1-sw { background-position: -80px 0; }
|
| 965 |
+
.ui-icon-carat-1-w { background-position: -96px 0; }
|
| 966 |
+
.ui-icon-carat-1-nw { background-position: -112px 0; }
|
| 967 |
+
.ui-icon-carat-2-n-s { background-position: -128px 0; }
|
| 968 |
+
.ui-icon-carat-2-e-w { background-position: -144px 0; }
|
| 969 |
+
.ui-icon-triangle-1-n { background-position: 0 -16px; }
|
| 970 |
+
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
|
| 971 |
+
.ui-icon-triangle-1-e { background-position: -32px -16px; }
|
| 972 |
+
.ui-icon-triangle-1-se { background-position: -48px -16px; }
|
| 973 |
+
.ui-icon-triangle-1-s { background-position: -64px -16px; }
|
| 974 |
+
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
|
| 975 |
+
.ui-icon-triangle-1-w { background-position: -96px -16px; }
|
| 976 |
+
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
|
| 977 |
+
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
|
| 978 |
+
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
|
| 979 |
+
.ui-icon-arrow-1-n { background-position: 0 -32px; }
|
| 980 |
+
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
|
| 981 |
+
.ui-icon-arrow-1-e { background-position: -32px -32px; }
|
| 982 |
+
.ui-icon-arrow-1-se { background-position: -48px -32px; }
|
| 983 |
+
.ui-icon-arrow-1-s { background-position: -64px -32px; }
|
| 984 |
+
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
|
| 985 |
+
.ui-icon-arrow-1-w { background-position: -96px -32px; }
|
| 986 |
+
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
|
| 987 |
+
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
|
| 988 |
+
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
| 989 |
+
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
|
| 990 |
+
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
|
| 991 |
+
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
|
| 992 |
+
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
|
| 993 |
+
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
|
| 994 |
+
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
|
| 995 |
+
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
|
| 996 |
+
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
|
| 997 |
+
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
|
| 998 |
+
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
|
| 999 |
+
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
|
| 1000 |
+
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
|
| 1001 |
+
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
|
| 1002 |
+
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
|
| 1003 |
+
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
| 1004 |
+
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
| 1005 |
+
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
| 1006 |
+
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
| 1007 |
+
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
| 1008 |
+
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
| 1009 |
+
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
| 1010 |
+
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
| 1011 |
+
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
| 1012 |
+
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
| 1013 |
+
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
| 1014 |
+
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
| 1015 |
+
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
|
| 1016 |
+
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
|
| 1017 |
+
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
|
| 1018 |
+
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
|
| 1019 |
+
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
| 1020 |
+
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
| 1021 |
+
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
| 1022 |
+
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
| 1023 |
+
.ui-icon-arrow-4 { background-position: 0 -80px; }
|
| 1024 |
+
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
|
| 1025 |
+
.ui-icon-extlink { background-position: -32px -80px; }
|
| 1026 |
+
.ui-icon-newwin { background-position: -48px -80px; }
|
| 1027 |
+
.ui-icon-refresh { background-position: -64px -80px; }
|
| 1028 |
+
.ui-icon-shuffle { background-position: -80px -80px; }
|
| 1029 |
+
.ui-icon-transfer-e-w { background-position: -96px -80px; }
|
| 1030 |
+
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
|
| 1031 |
+
.ui-icon-folder-collapsed { background-position: 0 -96px; }
|
| 1032 |
+
.ui-icon-folder-open { background-position: -16px -96px; }
|
| 1033 |
+
.ui-icon-document { background-position: -32px -96px; }
|
| 1034 |
+
.ui-icon-document-b { background-position: -48px -96px; }
|
| 1035 |
+
.ui-icon-note { background-position: -64px -96px; }
|
| 1036 |
+
.ui-icon-mail-closed { background-position: -80px -96px; }
|
| 1037 |
+
.ui-icon-mail-open { background-position: -96px -96px; }
|
| 1038 |
+
.ui-icon-suitcase { background-position: -112px -96px; }
|
| 1039 |
+
.ui-icon-comment { background-position: -128px -96px; }
|
| 1040 |
+
.ui-icon-person { background-position: -144px -96px; }
|
| 1041 |
+
.ui-icon-print { background-position: -160px -96px; }
|
| 1042 |
+
.ui-icon-trash { background-position: -176px -96px; }
|
| 1043 |
+
.ui-icon-locked { background-position: -192px -96px; }
|
| 1044 |
+
.ui-icon-unlocked { background-position: -208px -96px; }
|
| 1045 |
+
.ui-icon-bookmark { background-position: -224px -96px; }
|
| 1046 |
+
.ui-icon-tag { background-position: -240px -96px; }
|
| 1047 |
+
.ui-icon-home { background-position: 0 -112px; }
|
| 1048 |
+
.ui-icon-flag { background-position: -16px -112px; }
|
| 1049 |
+
.ui-icon-calendar { background-position: -32px -112px; }
|
| 1050 |
+
.ui-icon-cart { background-position: -48px -112px; }
|
| 1051 |
+
.ui-icon-pencil { background-position: -64px -112px; }
|
| 1052 |
+
.ui-icon-clock { background-position: -80px -112px; }
|
| 1053 |
+
.ui-icon-disk { background-position: -96px -112px; }
|
| 1054 |
+
.ui-icon-calculator { background-position: -112px -112px; }
|
| 1055 |
+
.ui-icon-zoomin { background-position: -128px -112px; }
|
| 1056 |
+
.ui-icon-zoomout { background-position: -144px -112px; }
|
| 1057 |
+
.ui-icon-search { background-position: -160px -112px; }
|
| 1058 |
+
.ui-icon-wrench { background-position: -176px -112px; }
|
| 1059 |
+
.ui-icon-gear { background-position: -192px -112px; }
|
| 1060 |
+
.ui-icon-heart { background-position: -208px -112px; }
|
| 1061 |
+
.ui-icon-star { background-position: -224px -112px; }
|
| 1062 |
+
.ui-icon-link { background-position: -240px -112px; }
|
| 1063 |
+
.ui-icon-cancel { background-position: 0 -128px; }
|
| 1064 |
+
.ui-icon-plus { background-position: -16px -128px; }
|
| 1065 |
+
.ui-icon-plusthick { background-position: -32px -128px; }
|
| 1066 |
+
.ui-icon-minus { background-position: -48px -128px; }
|
| 1067 |
+
.ui-icon-minusthick { background-position: -64px -128px; }
|
| 1068 |
+
.ui-icon-close { background-position: -80px -128px; }
|
| 1069 |
+
.ui-icon-closethick { background-position: -96px -128px; }
|
| 1070 |
+
.ui-icon-key { background-position: -112px -128px; }
|
| 1071 |
+
.ui-icon-lightbulb { background-position: -128px -128px; }
|
| 1072 |
+
.ui-icon-scissors { background-position: -144px -128px; }
|
| 1073 |
+
.ui-icon-clipboard { background-position: -160px -128px; }
|
| 1074 |
+
.ui-icon-copy { background-position: -176px -128px; }
|
| 1075 |
+
.ui-icon-contact { background-position: -192px -128px; }
|
| 1076 |
+
.ui-icon-image { background-position: -208px -128px; }
|
| 1077 |
+
.ui-icon-video { background-position: -224px -128px; }
|
| 1078 |
+
.ui-icon-script { background-position: -240px -128px; }
|
| 1079 |
+
.ui-icon-alert { background-position: 0 -144px; }
|
| 1080 |
+
.ui-icon-info { background-position: -16px -144px; }
|
| 1081 |
+
.ui-icon-notice { background-position: -32px -144px; }
|
| 1082 |
+
.ui-icon-help { background-position: -48px -144px; }
|
| 1083 |
+
.ui-icon-check { background-position: -64px -144px; }
|
| 1084 |
+
.ui-icon-bullet { background-position: -80px -144px; }
|
| 1085 |
+
.ui-icon-radio-on { background-position: -96px -144px; }
|
| 1086 |
+
.ui-icon-radio-off { background-position: -112px -144px; }
|
| 1087 |
+
.ui-icon-pin-w { background-position: -128px -144px; }
|
| 1088 |
+
.ui-icon-pin-s { background-position: -144px -144px; }
|
| 1089 |
+
.ui-icon-play { background-position: 0 -160px; }
|
| 1090 |
+
.ui-icon-pause { background-position: -16px -160px; }
|
| 1091 |
+
.ui-icon-seek-next { background-position: -32px -160px; }
|
| 1092 |
+
.ui-icon-seek-prev { background-position: -48px -160px; }
|
| 1093 |
+
.ui-icon-seek-end { background-position: -64px -160px; }
|
| 1094 |
+
.ui-icon-seek-start { background-position: -80px -160px; }
|
| 1095 |
+
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
|
| 1096 |
+
.ui-icon-seek-first { background-position: -80px -160px; }
|
| 1097 |
+
.ui-icon-stop { background-position: -96px -160px; }
|
| 1098 |
+
.ui-icon-eject { background-position: -112px -160px; }
|
| 1099 |
+
.ui-icon-volume-off { background-position: -128px -160px; }
|
| 1100 |
+
.ui-icon-volume-on { background-position: -144px -160px; }
|
| 1101 |
+
.ui-icon-power { background-position: 0 -176px; }
|
| 1102 |
+
.ui-icon-signal-diag { background-position: -16px -176px; }
|
| 1103 |
+
.ui-icon-signal { background-position: -32px -176px; }
|
| 1104 |
+
.ui-icon-battery-0 { background-position: -48px -176px; }
|
| 1105 |
+
.ui-icon-battery-1 { background-position: -64px -176px; }
|
| 1106 |
+
.ui-icon-battery-2 { background-position: -80px -176px; }
|
| 1107 |
+
.ui-icon-battery-3 { background-position: -96px -176px; }
|
| 1108 |
+
.ui-icon-circle-plus { background-position: 0 -192px; }
|
| 1109 |
+
.ui-icon-circle-minus { background-position: -16px -192px; }
|
| 1110 |
+
.ui-icon-circle-close { background-position: -32px -192px; }
|
| 1111 |
+
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
|
| 1112 |
+
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
|
| 1113 |
+
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
|
| 1114 |
+
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
|
| 1115 |
+
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
|
| 1116 |
+
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
|
| 1117 |
+
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
|
| 1118 |
+
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
|
| 1119 |
+
.ui-icon-circle-zoomin { background-position: -176px -192px; }
|
| 1120 |
+
.ui-icon-circle-zoomout { background-position: -192px -192px; }
|
| 1121 |
+
.ui-icon-circle-check { background-position: -208px -192px; }
|
| 1122 |
+
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
|
| 1123 |
+
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
|
| 1124 |
+
.ui-icon-circlesmall-close { background-position: -32px -208px; }
|
| 1125 |
+
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
|
| 1126 |
+
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
|
| 1127 |
+
.ui-icon-squaresmall-close { background-position: -80px -208px; }
|
| 1128 |
+
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
|
| 1129 |
+
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
| 1130 |
+
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
|
| 1131 |
+
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
|
| 1132 |
+
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
| 1133 |
+
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
|
| 1134 |
+
|
| 1135 |
+
|
| 1136 |
+
/* Misc visuals
|
| 1137 |
+
----------------------------------*/
|
| 1138 |
+
|
| 1139 |
+
/* Corner radius */
|
| 1140 |
+
.ui-corner-all,
|
| 1141 |
+
.ui-corner-top,
|
| 1142 |
+
.ui-corner-left,
|
| 1143 |
+
.ui-corner-tl {
|
| 1144 |
+
border-top-left-radius: 4px;
|
| 1145 |
+
}
|
| 1146 |
+
.ui-corner-all,
|
| 1147 |
+
.ui-corner-top,
|
| 1148 |
+
.ui-corner-right,
|
| 1149 |
+
.ui-corner-tr {
|
| 1150 |
+
border-top-right-radius: 4px;
|
| 1151 |
+
}
|
| 1152 |
+
.ui-corner-all,
|
| 1153 |
+
.ui-corner-bottom,
|
| 1154 |
+
.ui-corner-left,
|
| 1155 |
+
.ui-corner-bl {
|
| 1156 |
+
border-bottom-left-radius: 4px;
|
| 1157 |
+
}
|
| 1158 |
+
.ui-corner-all,
|
| 1159 |
+
.ui-corner-bottom,
|
| 1160 |
+
.ui-corner-right,
|
| 1161 |
+
.ui-corner-br {
|
| 1162 |
+
border-bottom-right-radius: 4px;
|
| 1163 |
+
}
|
| 1164 |
+
|
| 1165 |
+
/* Overlays */
|
| 1166 |
+
.ui-widget-overlay {
|
| 1167 |
+
background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
|
| 1168 |
+
opacity: .3;
|
| 1169 |
+
filter: Alpha(Opacity=30);
|
| 1170 |
+
}
|
| 1171 |
+
.ui-widget-shadow {
|
| 1172 |
+
margin: -8px 0 0 -8px;
|
| 1173 |
+
padding: 8px;
|
| 1174 |
+
background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
|
| 1175 |
+
opacity: .3;
|
| 1176 |
+
filter: Alpha(Opacity=30);
|
| 1177 |
+
border-radius: 8px;
|
| 1178 |
+
}
|
css/jquery.dataTables.css
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*
|
| 2 |
+
* Table
|
| 3 |
+
*/
|
| 4 |
+
table.dataTable {
|
| 5 |
+
margin: 0 auto;
|
| 6 |
+
clear: both;
|
| 7 |
+
width: 100%;
|
| 8 |
+
margin-bottom: .5em;
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
table.dataTable thead th {
|
| 12 |
+
padding: 3px 18px 3px 10px;
|
| 13 |
+
border-bottom: 1px solid lightgrey;
|
| 14 |
+
font-weight: bold;
|
| 15 |
+
cursor: pointer;
|
| 16 |
+
*cursor: hand;
|
| 17 |
+
}
|
| 18 |
+
|
| 19 |
+
table.dataTable tfoot th {
|
| 20 |
+
padding: 3px 18px 3px 10px;
|
| 21 |
+
border-top: 1px solid black;
|
| 22 |
+
font-weight: bold;
|
| 23 |
+
}
|
| 24 |
+
|
| 25 |
+
table.dataTable td {
|
| 26 |
+
padding: 3px 10px;
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
table.dataTable td.center,
|
| 30 |
+
table.dataTable td.dataTables_empty {
|
| 31 |
+
text-align: center;
|
| 32 |
+
}
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
/*
|
| 36 |
+
* Table wrapper
|
| 37 |
+
*/
|
| 38 |
+
.dataTables_wrapper {
|
| 39 |
+
position: relative;
|
| 40 |
+
clear: both;
|
| 41 |
+
*zoom: 1;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
|
| 45 |
+
/*
|
| 46 |
+
* Page length menu
|
| 47 |
+
*/
|
| 48 |
+
.dataTables_length {
|
| 49 |
+
float: left;
|
| 50 |
+
margin-bottom: .75em;
|
| 51 |
+
}
|
| 52 |
+
|
| 53 |
+
|
| 54 |
+
/*
|
| 55 |
+
* Filter
|
| 56 |
+
*/
|
| 57 |
+
.dataTables_filter {
|
| 58 |
+
float: right;
|
| 59 |
+
text-align: right;
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
/*
|
| 64 |
+
* Table information
|
| 65 |
+
*/
|
| 66 |
+
.dataTables_info {
|
| 67 |
+
clear: both;
|
| 68 |
+
float: left;
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
|
| 72 |
+
/*
|
| 73 |
+
* Pagination
|
| 74 |
+
*/
|
| 75 |
+
.dataTables_paginate {
|
| 76 |
+
float: right;
|
| 77 |
+
text-align: right;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
/* Two button pagination - previous / next */
|
| 81 |
+
.paginate_disabled_previous,
|
| 82 |
+
.paginate_enabled_previous,
|
| 83 |
+
.paginate_disabled_next,
|
| 84 |
+
.paginate_enabled_next {
|
| 85 |
+
height: 19px;
|
| 86 |
+
float: left;
|
| 87 |
+
cursor: pointer;
|
| 88 |
+
*cursor: hand;
|
| 89 |
+
color: #111 !important;
|
| 90 |
+
}
|
| 91 |
+
.paginate_disabled_previous:hover,
|
| 92 |
+
.paginate_enabled_previous:hover,
|
| 93 |
+
.paginate_disabled_next:hover,
|
| 94 |
+
.paginate_enabled_next:hover {
|
| 95 |
+
text-decoration: none !important;
|
| 96 |
+
}
|
| 97 |
+
.paginate_disabled_previous:active,
|
| 98 |
+
.paginate_enabled_previous:active,
|
| 99 |
+
.paginate_disabled_next:active,
|
| 100 |
+
.paginate_enabled_next:active {
|
| 101 |
+
outline: none;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
.paginate_disabled_previous,
|
| 105 |
+
.paginate_disabled_next {
|
| 106 |
+
color: #666 !important;
|
| 107 |
+
}
|
| 108 |
+
.paginate_disabled_previous,
|
| 109 |
+
.paginate_enabled_previous {
|
| 110 |
+
padding-left: 23px;
|
| 111 |
+
}
|
| 112 |
+
.paginate_disabled_next,
|
| 113 |
+
.paginate_enabled_next {
|
| 114 |
+
padding-right: 23px;
|
| 115 |
+
margin-left: 10px;
|
| 116 |
+
}
|
| 117 |
+
|
| 118 |
+
.paginate_enabled_previous { background: url('../images/pagination/back_enabled.png') no-repeat top left; }
|
| 119 |
+
.paginate_enabled_previous:hover { background: url('../images/pagination/back_enabled_hover.png') no-repeat top left; }
|
| 120 |
+
.paginate_disabled_previous { background: url('../images/pagination/back_disabled.png') no-repeat top left; }
|
| 121 |
+
|
| 122 |
+
.paginate_enabled_next { background: url('../images/pagination/forward_enabled.png') no-repeat top right; }
|
| 123 |
+
.paginate_enabled_next:hover { background: url('../images/pagination/forward_enabled_hover.png') no-repeat top right; }
|
| 124 |
+
.paginate_disabled_next { background: url('../images/pagination/forward_disabled.png') no-repeat top right; }
|
| 125 |
+
|
| 126 |
+
/* Full number pagination */
|
| 127 |
+
.paging_full_numbers {
|
| 128 |
+
height: 22px;
|
| 129 |
+
line-height: 22px;
|
| 130 |
+
}
|
| 131 |
+
.paging_full_numbers a:active {
|
| 132 |
+
outline: none
|
| 133 |
+
}
|
| 134 |
+
.paging_full_numbers a:hover {
|
| 135 |
+
text-decoration: none;
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
.paging_full_numbers a.paginate_button,
|
| 139 |
+
.paging_full_numbers a.paginate_active {
|
| 140 |
+
border: 1px solid #aaa;
|
| 141 |
+
-webkit-border-radius: 5px;
|
| 142 |
+
-moz-border-radius: 5px;
|
| 143 |
+
border-radius: 5px;
|
| 144 |
+
padding: 2px 5px;
|
| 145 |
+
margin: 0 3px;
|
| 146 |
+
cursor: pointer;
|
| 147 |
+
*cursor: hand;
|
| 148 |
+
color: #333 !important;
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
.paging_full_numbers a.paginate_button {
|
| 152 |
+
background-color: #ddd;
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
.paging_full_numbers a.paginate_button:hover {
|
| 156 |
+
background-color: #ccc;
|
| 157 |
+
text-decoration: none !important;
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
.paging_full_numbers a.paginate_active {
|
| 161 |
+
background-color: #99B3FF;
|
| 162 |
+
}
|
| 163 |
+
|
| 164 |
+
|
| 165 |
+
/*
|
| 166 |
+
* Processing indicator
|
| 167 |
+
*/
|
| 168 |
+
.dataTables_processing {
|
| 169 |
+
position: absolute;
|
| 170 |
+
top: 50%;
|
| 171 |
+
left: 50%;
|
| 172 |
+
width: 250px;
|
| 173 |
+
height: 30px;
|
| 174 |
+
margin-left: -125px;
|
| 175 |
+
margin-top: -15px;
|
| 176 |
+
padding: 14px 0 2px 0;
|
| 177 |
+
border: 1px solid #ddd;
|
| 178 |
+
text-align: center;
|
| 179 |
+
color: #999;
|
| 180 |
+
font-size: 14px;
|
| 181 |
+
background-color: white;
|
| 182 |
+
}
|
| 183 |
+
|
| 184 |
+
|
| 185 |
+
/*
|
| 186 |
+
* Sorting
|
| 187 |
+
*/
|
| 188 |
+
.sorting { background: url('../images/pagination/sort_both.png') no-repeat center right; }
|
| 189 |
+
.sorting_asc { background: url('../images/pagination/sort_asc.png') no-repeat center right; }
|
| 190 |
+
.sorting_desc { background: url('../images/pagination/sort_desc.png') no-repeat center right; }
|
| 191 |
+
|
| 192 |
+
.sorting_asc_disabled { background: url('../images/pagination/sort_asc_disabled.png') no-repeat center right; }
|
| 193 |
+
.sorting_desc_disabled { background: url('../images/pagination/sort_desc_disabled.png') no-repeat center right; }
|
| 194 |
+
|
| 195 |
+
table.dataTable thead th:active,
|
| 196 |
+
table.dataTable thead td:active {
|
| 197 |
+
outline: none;
|
| 198 |
+
}
|
| 199 |
+
|
| 200 |
+
|
| 201 |
+
/*
|
| 202 |
+
* Scrolling
|
| 203 |
+
*/
|
| 204 |
+
.dataTables_scroll {
|
| 205 |
+
clear: both;
|
| 206 |
+
}
|
| 207 |
+
|
| 208 |
+
.dataTables_scrollBody {
|
| 209 |
+
*margin-top: -1px;
|
| 210 |
+
-webkit-overflow-scrolling: touch;
|
| 211 |
+
}
|
| 212 |
+
|
css/style.ykseme.css
CHANGED
|
@@ -12,20 +12,298 @@
|
|
| 12 |
.yks-margin-left {margin-left: 2em;}
|
| 13 |
|
| 14 |
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
/* general */
|
| 18 |
|
| 19 |
#ykseme-icon {
|
| 20 |
background: transparent url('../images/ykseme_32px_color.png') no-repeat 0 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 21 |
}
|
| 22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
.yks-status {
|
| 24 |
display: none;
|
| 25 |
width: 100%;
|
| 26 |
clear: both;
|
| 27 |
}
|
|
|
|
| 28 |
.yks-status .yks-success {
|
|
|
|
| 29 |
color: #000;
|
| 30 |
width: 80%;
|
| 31 |
height: auto;
|
|
@@ -34,8 +312,19 @@
|
|
| 34 |
clear: both;
|
| 35 |
margin: 15px auto 15px auto;
|
| 36 |
text-align: center;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 37 |
}
|
| 38 |
-
|
|
|
|
|
|
|
| 39 |
color: #000;
|
| 40 |
width: 80%;
|
| 41 |
height: auto;
|
|
@@ -44,6 +333,15 @@
|
|
| 44 |
clear: both;
|
| 45 |
margin: 15px auto 15px auto;
|
| 46 |
text-align: center;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
}
|
| 48 |
.yks-status .yks-error p, .yks-status .yks-success p {
|
| 49 |
margin: .4em 0;
|
|
@@ -79,7 +377,7 @@
|
|
| 79 |
.yks-status .yks-notice p {
|
| 80 |
padding: 5px;
|
| 81 |
}
|
| 82 |
-
|
| 83 |
/* Plugin settings page*/
|
| 84 |
|
| 85 |
.yks-admin-form {
|
|
@@ -95,6 +393,15 @@
|
|
| 95 |
color: #666;
|
| 96 |
}
|
| 97 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
/* Configure Lists page*/
|
| 100 |
|
|
@@ -187,6 +494,78 @@
|
|
| 187 |
font-weight: 600;
|
| 188 |
}
|
| 189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 190 |
/* About page */
|
| 191 |
|
| 192 |
.yksme-page-about {
|
|
@@ -217,6 +596,7 @@
|
|
| 217 |
.yks-mailchimp-fields-td {
|
| 218 |
display: block;
|
| 219 |
padding: 15px 0 15px 0;
|
|
|
|
| 220 |
}
|
| 221 |
|
| 222 |
.yks-mailchimp-fields-container label {
|
|
@@ -248,11 +628,15 @@
|
|
| 248 |
.yks-mailchimpFormTableRow, .yks-mailchimpFormDivRow {
|
| 249 |
width: 100%;
|
| 250 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 251 |
.yks-mailchimpFormTableRowLabel, .yks-mailchimpFormTableRowField,
|
| 252 |
.yks-mailchimpFormDivRowLabel, .yks-mailchimpFormDivRowField {
|
| 253 |
vertical-align: top !important;
|
| 254 |
}
|
| 255 |
-
.yks-mailchimpFormDivRowLabel
|
| 256 |
display: inline-block;
|
| 257 |
width: 50%;
|
| 258 |
}
|
|
@@ -264,9 +648,9 @@
|
|
| 264 |
|
| 265 |
.yks-mailchimp-form-tooltip {
|
| 266 |
color: #CCC !important;
|
| 267 |
-
font-size:
|
| 268 |
-
|
| 269 |
-
|
| 270 |
}
|
| 271 |
|
| 272 |
#yks-mailchimp-debug-info, #yks-mailchimp-debug-info table,
|
|
@@ -298,4 +682,215 @@
|
|
| 298 |
.yikes-api-key-error {
|
| 299 |
display:none;
|
| 300 |
color:red;
|
| 301 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
.yks-margin-left {margin-left: 2em;}
|
| 13 |
|
| 14 |
|
| 15 |
+
/*******************************************/
|
| 16 |
+
/**** Include Our Custom Web Font ****/
|
| 17 |
+
@font-face {
|
| 18 |
+
font-family: 'yks-mc-font';
|
| 19 |
+
src:url('fonts/yks-mc-font.eot?-e5ggdf');
|
| 20 |
+
src:url('fonts/yks-mc-font.eot?#iefix-e5ggdf') format('embedded-opentype'),
|
| 21 |
+
url('fonts/yks-mc-font.woff?-e5ggdf') format('woff'),
|
| 22 |
+
url('fonts/yks-mc-font.ttf?-e5ggdf') format('truetype'),
|
| 23 |
+
url('fonts/yks-mc-font.svg?-e5ggdf#yks-mc-font') format('svg');
|
| 24 |
+
font-weight: normal;
|
| 25 |
+
font-style: normal;
|
| 26 |
+
}
|
| 27 |
+
|
| 28 |
+
.yks_mc_error_x {
|
| 29 |
+
color:#DD3D36;
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
/* TinyMCE Button Class */
|
| 33 |
+
/* Icon Fonts */
|
| 34 |
+
.mce-i-yks-mc-icon-yikes-button-image:before {
|
| 35 |
+
content: "\e600" !important;
|
| 36 |
+
font-family: 'yks-mc-font' !important;
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
.toplevel_page_yks-mailchimp-form .update-nag {
|
| 40 |
+
padding-top:0;
|
| 41 |
+
margin-top:0;
|
| 42 |
+
width:95%;
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
.yks-mc-icon-notice {
|
| 46 |
+
display:block;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
.update-nag .yks-mc-icon-notice:before {
|
| 50 |
+
content: "\e601" !important;
|
| 51 |
+
font-family: 'yks-mc-font' !important;
|
| 52 |
+
float:left;
|
| 53 |
+
font-size:1.5em;
|
| 54 |
+
color: #FFBA00;
|
| 55 |
+
display:block;
|
| 56 |
+
margin-right: .25em;
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
/* Reset Plugin Modal and Icons */
|
| 60 |
+
.yks-mc-icon-yks-mc-warning:before {
|
| 61 |
+
content: "\e602";
|
| 62 |
+
font-family: 'yks-mc-font' !important;
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
.yks-mc-reset-warning-icon {
|
| 66 |
+
font-size: 3.25em;
|
| 67 |
+
color: rgb(255, 76, 76);
|
| 68 |
+
text-align:center;
|
| 69 |
+
float:left;
|
| 70 |
+
margin-right:.25em;
|
| 71 |
+
margin-top:.75em;
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
.yks_mc_about_icon {
|
| 75 |
+
display:block;
|
| 76 |
+
float:left;
|
| 77 |
+
margin-top:2em;
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
.yks-mc-delete-form-warning-icon {
|
| 81 |
+
font-size: 3.25em;
|
| 82 |
+
color: rgb(255, 76, 76);
|
| 83 |
+
text-align:center;
|
| 84 |
+
float:left;
|
| 85 |
+
margin-right:.25em;
|
| 86 |
+
margin-top:.55em;
|
| 87 |
+
}
|
| 88 |
+
|
| 89 |
+
.yks-mc-success-icon {
|
| 90 |
+
font-size: 3.25em;
|
| 91 |
+
color: rgb(126, 207, 110);
|
| 92 |
+
text-align:center;
|
| 93 |
+
margin-top: .25em;
|
| 94 |
+
margin-right: .75em;
|
| 95 |
+
float:left;
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
.yks-mc-reset-plugin-settings-preloader {
|
| 99 |
+
width: 15px;
|
| 100 |
+
text-align:center;
|
| 101 |
+
display:block;
|
| 102 |
+
margin:0 auto;
|
| 103 |
+
}
|
| 104 |
+
|
| 105 |
+
.yks-mc-reset-plugin-settings-preloader-container {
|
| 106 |
+
width:100%;
|
| 107 |
+
text-align:center;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
#yks_mc_reset_plugin_settings p {
|
| 111 |
+
float:left;
|
| 112 |
+
width:80%;
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
/* Widget Icon !! */
|
| 116 |
+
/* including an image in the widget box */
|
| 117 |
+
*[id*="_yikes_mc_widget"] > div.widget-top > div.widget-title > h4:before {
|
| 118 |
+
content: url('../images/yikes_logo_widget_icon.png');
|
| 119 |
+
width:33px;
|
| 120 |
+
float:left;
|
| 121 |
+
height:8px;
|
| 122 |
+
margin: -5px 8px 0 -5px;
|
| 123 |
+
}
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
/* Red Button Style */
|
| 127 |
+
.wp-core-ui .yikes-mc-button-red {
|
| 128 |
+
background-color: #9B2124;
|
| 129 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#C5292E), to(#9B2124));
|
| 130 |
+
background-image: -webkit-linear-gradient(top, #C5292E, #9B2124);
|
| 131 |
+
background-image: -moz-linear-gradient(top, #C5292E, #9B2124);
|
| 132 |
+
background-image: -ms-linear-gradient(top, #C5292E, #9B2124);
|
| 133 |
+
background-image: -o-linear-gradient(top, #C5292E, #9B2124);
|
| 134 |
+
background-image: linear-gradient(to bottom, #C5292E, #9B2124);
|
| 135 |
+
border-color: #9B2124;
|
| 136 |
+
border-bottom-color: #8D1F21;
|
| 137 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
|
| 138 |
+
box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
|
| 139 |
+
color: #fff;
|
| 140 |
+
text-decoration: none;
|
| 141 |
+
text-shadow: 0 1px 0 rgba(0,0,0,0.1);
|
| 142 |
+
margin-left: 2em;
|
| 143 |
+
width:150px;
|
| 144 |
+
text-align:center;
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
.wp-core-ui .yikes-mc-button-red.hover,
|
| 148 |
+
.wp-core-ui .yikes-mc-button-red:hover,
|
| 149 |
+
.wp-core-ui .yikes-mc-button-red.focus,
|
| 150 |
+
.wp-core-ui .yikes-mc-button-red:focus {
|
| 151 |
+
background-color: #B72629;
|
| 152 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#D22E30), to(#9B2124));
|
| 153 |
+
background-image: -webkit-linear-gradient(top, #D22E30, #9B2124);
|
| 154 |
+
background-image: -moz-linear-gradient(top, #D22E30, #9B2124);
|
| 155 |
+
background-image: -ms-linear-gradient(top, #D22E30, #9B2124);
|
| 156 |
+
background-image: -o-linear-gradient(top, #D22E30, #9B2124);
|
| 157 |
+
background-image: linear-gradient(to bottom, #D22E30, #9B2124);
|
| 158 |
+
border-color: #7F1C1F;
|
| 159 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
|
| 160 |
+
box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
|
| 161 |
+
color: #fff;
|
| 162 |
+
text-shadow: 0 -1px 0 rgba(0,0,0,0.3);
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
.wp-core-ui .yikes-mc-button-red.focus,
|
| 166 |
+
.wp-core-ui .yikes-mc-button-red:focus {
|
| 167 |
+
border-color: #500F0E;
|
| 168 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
|
| 169 |
+
box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
.wp-core-ui .yikes-mc-button-red.active,
|
| 173 |
+
.wp-core-ui .yikes-mc-button-red.active:hover,
|
| 174 |
+
.wp-core-ui .yikes-mc-button-red.active:focus,
|
| 175 |
+
.wp-core-ui .yikes-mc-button-red:active {
|
| 176 |
+
background: #7F1C1F;
|
| 177 |
+
background-image: -webkit-gradient(linear, left top, left bottom, from(#9B2124), to(#B72629));
|
| 178 |
+
background-image: -webkit-linear-gradient(top, #9B2124, #B72629);
|
| 179 |
+
background-image: -moz-linear-gradient(top, #9B2124, #B72629);
|
| 180 |
+
background-image: -ms-linear-gradient(top, #9B2124, #B72629);
|
| 181 |
+
background-image: -o-linear-gradient(top, #9B2124, #B72629);
|
| 182 |
+
background-image: linear-gradient(to bottom, #9B2124, #B72629);
|
| 183 |
+
border-color: #601312 #AE2426 #AE2426 #AE2426;
|
| 184 |
+
color: rgba(255,255,255,0.95);
|
| 185 |
+
-webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
|
| 186 |
+
box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
|
| 187 |
+
text-shadow: 0 1px 0 rgba(0,0,0,0.1);
|
| 188 |
+
}
|
| 189 |
+
|
| 190 |
+
.wp-core-ui .yikes-mc-button-red[disabled],
|
| 191 |
+
.wp-core-ui .yikes-mc-button-red:disabled,
|
| 192 |
+
.wp-core-ui .yikes-mc-button-red-disabled {
|
| 193 |
+
color: #E79496 !important;
|
| 194 |
+
background: #BA292B !important;
|
| 195 |
+
border-color: #7F1C1F !important;
|
| 196 |
+
-webkit-box-shadow: none !important;
|
| 197 |
+
box-shadow: none !important;
|
| 198 |
+
text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
|
| 199 |
+
cursor: default;
|
| 200 |
+
}
|
| 201 |
+
|
| 202 |
+
|
| 203 |
+
/********* User Profile Box And Fields *********/
|
| 204 |
+
#userInformation {
|
| 205 |
+
width:400px;
|
| 206 |
+
height:125px;
|
| 207 |
+
position:absolute;
|
| 208 |
+
right:0;
|
| 209 |
+
top:0;
|
| 210 |
+
margin-top:2em;
|
| 211 |
+
margin-right:2em;
|
| 212 |
+
/* border:1px dashed rgb(206, 206, 206); */
|
| 213 |
+
padding:10px;
|
| 214 |
+
font-size:1.8em;
|
| 215 |
+
}
|
| 216 |
+
#userInformation p, #userInformation span {
|
| 217 |
+
margin:0;
|
| 218 |
+
}
|
| 219 |
+
|
| 220 |
+
#userInformation span {
|
| 221 |
+
text-decoration:underline;
|
| 222 |
+
}
|
| 223 |
+
|
| 224 |
+
#yikes-mailchimp-avatar {
|
| 225 |
+
position:absolute;
|
| 226 |
+
top:0;
|
| 227 |
+
left:0;
|
| 228 |
+
margin-left:10px;
|
| 229 |
+
margin-top:1.8em;
|
| 230 |
+
width:100px;
|
| 231 |
+
}
|
| 232 |
+
|
| 233 |
+
.userProfileInformation {
|
| 234 |
+
margin-left:110px;
|
| 235 |
+
margin-top:5px;
|
| 236 |
+
}
|
| 237 |
+
|
| 238 |
+
.userProfileInformation p {
|
| 239 |
+
margin: 5px 0 5px 0 !important;
|
| 240 |
+
font-size:16px;
|
| 241 |
+
}
|
| 242 |
+
|
| 243 |
+
|
| 244 |
+
/* Widget Styles */
|
| 245 |
+
.yikes_widget_form_description, .yikes_mc_widget_selected_form_dropdown {
|
| 246 |
+
width:100%;
|
| 247 |
+
height:200px;
|
| 248 |
+
resize:none;
|
| 249 |
+
}
|
| 250 |
+
|
| 251 |
+
.widget_yikes_mc_widget p {
|
| 252 |
+
margin-bottom:10px;
|
| 253 |
+
}
|
| 254 |
+
|
| 255 |
+
.widget .yks_mc_interest_group_label {
|
| 256 |
+
text-align:center;
|
| 257 |
+
width:45%;
|
| 258 |
+
float:left;
|
| 259 |
+
word-break: break-word;
|
| 260 |
+
}
|
| 261 |
+
|
| 262 |
+
.widget_yikes_mc_widget input, .widget_yikes_mc_widget .yks-mailchimpFormDivRowField {
|
| 263 |
+
width:100%;
|
| 264 |
+
}
|
| 265 |
+
.yks-mailchimpFormDivRowField input {
|
| 266 |
+
width: 100%;
|
| 267 |
+
}
|
| 268 |
+
|
| 269 |
+
.widget_yikes_mc_widget .yks-require-description {
|
| 270 |
+
padding-top:0;
|
| 271 |
+
}
|
| 272 |
|
| 273 |
/* general */
|
| 274 |
|
| 275 |
#ykseme-icon {
|
| 276 |
background: transparent url('../images/ykseme_32px_color.png') no-repeat 0 0;
|
| 277 |
+
display:block;
|
| 278 |
+
float:left;
|
| 279 |
+
padding: 0 0 0 .5em;
|
| 280 |
+
height: 35px;
|
| 281 |
+
width:35px;
|
| 282 |
+
background-size: contain;
|
| 283 |
}
|
| 284 |
|
| 285 |
+
.wrap #ykseme-page-header {
|
| 286 |
+
padding-top:0;
|
| 287 |
+
margin-bottom:1.5em;
|
| 288 |
+
}
|
| 289 |
+
|
| 290 |
+
body.toplevel_page_yks-mailchimp-form .wrap {
|
| 291 |
+
margin-top:2em;
|
| 292 |
+
}
|
| 293 |
+
|
| 294 |
+
body.mailchimp-forms_page_yks-mailchimp-about-yikes #ykseme-page-header {
|
| 295 |
+
margin-top:1em;
|
| 296 |
+
}
|
| 297 |
+
|
| 298 |
+
|
| 299 |
.yks-status {
|
| 300 |
display: none;
|
| 301 |
width: 100%;
|
| 302 |
clear: both;
|
| 303 |
}
|
| 304 |
+
|
| 305 |
.yks-status .yks-success {
|
| 306 |
+
/*
|
| 307 |
color: #000;
|
| 308 |
width: 80%;
|
| 309 |
height: auto;
|
| 312 |
clear: both;
|
| 313 |
margin: 15px auto 15px auto;
|
| 314 |
text-align: center;
|
| 315 |
+
*/
|
| 316 |
+
border-left: 4px solid #7ad03a;
|
| 317 |
+
padding: 5px 15px;
|
| 318 |
+
background-color:#fff;
|
| 319 |
+
-webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
|
| 320 |
+
box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
|
| 321 |
+
min-height:25px;
|
| 322 |
+
line-height: 1.2;
|
| 323 |
+
margin-top:1em;
|
| 324 |
}
|
| 325 |
+
|
| 326 |
+
.yks-status-error .yks-error {
|
| 327 |
+
/*
|
| 328 |
color: #000;
|
| 329 |
width: 80%;
|
| 330 |
height: auto;
|
| 333 |
clear: both;
|
| 334 |
margin: 15px auto 15px auto;
|
| 335 |
text-align: center;
|
| 336 |
+
*/
|
| 337 |
+
border-left: 4px solid #dd3d36;
|
| 338 |
+
background-color: #fff;
|
| 339 |
+
padding: 1px 12px;
|
| 340 |
+
-webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
|
| 341 |
+
box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
|
| 342 |
+
min-height:25px;
|
| 343 |
+
line-height: 3.2;
|
| 344 |
+
margin-top:1em;
|
| 345 |
}
|
| 346 |
.yks-status .yks-error p, .yks-status .yks-success p {
|
| 347 |
margin: .4em 0;
|
| 377 |
.yks-status .yks-notice p {
|
| 378 |
padding: 5px;
|
| 379 |
}
|
| 380 |
+
|
| 381 |
/* Plugin settings page*/
|
| 382 |
|
| 383 |
.yks-admin-form {
|
| 393 |
color: #666;
|
| 394 |
}
|
| 395 |
|
| 396 |
+
#single-optin-message, #double-optin-message {
|
| 397 |
+
height:150px;
|
| 398 |
+
width:600px;
|
| 399 |
+
resize:none;
|
| 400 |
+
}
|
| 401 |
+
|
| 402 |
+
.yks-mailchimp-interest-group-label {
|
| 403 |
+
width:350px;
|
| 404 |
+
}
|
| 405 |
|
| 406 |
/* Configure Lists page*/
|
| 407 |
|
| 494 |
font-weight: 600;
|
| 495 |
}
|
| 496 |
|
| 497 |
+
.yks-mailchimp-redirect-checkbox-holder {
|
| 498 |
+
display:block;
|
| 499 |
+
margin-top:.5em;
|
| 500 |
+
}
|
| 501 |
+
|
| 502 |
+
/* Subscribers table */
|
| 503 |
+
.yks-mailchimp-subscribers-list-row {
|
| 504 |
+
height: 30px;
|
| 505 |
+
padding-top: 3px;
|
| 506 |
+
font-size:1.2em;
|
| 507 |
+
}
|
| 508 |
+
|
| 509 |
+
.yikes-mailchimp-subscribers-table-head {
|
| 510 |
+
border-bottom:1px solid grey;
|
| 511 |
+
font-size:1.3em;
|
| 512 |
+
}
|
| 513 |
+
|
| 514 |
+
.yks-mailchimp-subscribers-list-row:nth-child(even) {
|
| 515 |
+
background-color: #EEE;
|
| 516 |
+
}
|
| 517 |
+
|
| 518 |
+
.yks-mailchimp-subscribers-list-row:hover {
|
| 519 |
+
cursor:pointer;
|
| 520 |
+
background:rgba(208, 235, 241, 0.58);
|
| 521 |
+
}
|
| 522 |
+
|
| 523 |
+
.subscriber-mail-link {
|
| 524 |
+
text-decoration:none;
|
| 525 |
+
}
|
| 526 |
+
|
| 527 |
+
.displayListSubscribers {
|
| 528 |
+
font-size:10px;
|
| 529 |
+
}
|
| 530 |
+
|
| 531 |
+
.yks-view-subscriber-profile {
|
| 532 |
+
float:right;
|
| 533 |
+
margin-right:.35em;
|
| 534 |
+
margin-top:-.2em;
|
| 535 |
+
opacity:.5;
|
| 536 |
+
color:rgb(24, 138, 56) !important;
|
| 537 |
+
line-height:1.35;
|
| 538 |
+
}
|
| 539 |
+
|
| 540 |
+
.yks-view-subscriber-profile:hover {
|
| 541 |
+
opacity:1;
|
| 542 |
+
}
|
| 543 |
+
|
| 544 |
+
.yks-remove-subscriber {
|
| 545 |
+
float:right;
|
| 546 |
+
margin-right:.5em;
|
| 547 |
+
margin-top:-.2em;
|
| 548 |
+
opacity:.5;
|
| 549 |
+
color:rgb(223, 111, 111);
|
| 550 |
+
line-height:1.35;
|
| 551 |
+
}
|
| 552 |
+
.yks-remove-subscriber:hover {
|
| 553 |
+
opacity:1;
|
| 554 |
+
}
|
| 555 |
+
|
| 556 |
+
.yks-email-subscriber {
|
| 557 |
+
float:right;
|
| 558 |
+
margin-right:.25em;
|
| 559 |
+
margin-top:-.2em;
|
| 560 |
+
opacity:.5;
|
| 561 |
+
color:rgb(60, 143, 175) !important;
|
| 562 |
+
line-height:1.35;
|
| 563 |
+
}
|
| 564 |
+
|
| 565 |
+
.yks-email-subscriber:hover {
|
| 566 |
+
opacity:1;
|
| 567 |
+
}
|
| 568 |
+
|
| 569 |
/* About page */
|
| 570 |
|
| 571 |
.yksme-page-about {
|
| 596 |
.yks-mailchimp-fields-td {
|
| 597 |
display: block;
|
| 598 |
padding: 15px 0 15px 0;
|
| 599 |
+
min-width:880px;
|
| 600 |
}
|
| 601 |
|
| 602 |
.yks-mailchimp-fields-container label {
|
| 628 |
.yks-mailchimpFormTableRow, .yks-mailchimpFormDivRow {
|
| 629 |
width: 100%;
|
| 630 |
}
|
| 631 |
+
.yks-mailchimpFormDivRow {
|
| 632 |
+
margin: .5em 0 .5em 0;
|
| 633 |
+
}
|
| 634 |
+
|
| 635 |
.yks-mailchimpFormTableRowLabel, .yks-mailchimpFormTableRowField,
|
| 636 |
.yks-mailchimpFormDivRowLabel, .yks-mailchimpFormDivRowField {
|
| 637 |
vertical-align: top !important;
|
| 638 |
}
|
| 639 |
+
.yks-mailchimpFormDivRowLabel {
|
| 640 |
display: inline-block;
|
| 641 |
width: 50%;
|
| 642 |
}
|
| 648 |
|
| 649 |
.yks-mailchimp-form-tooltip {
|
| 650 |
color: #CCC !important;
|
| 651 |
+
font-size: 12px;
|
| 652 |
+
display:block;
|
| 653 |
+
margin: 0 0 15px 0;
|
| 654 |
}
|
| 655 |
|
| 656 |
#yks-mailchimp-debug-info, #yks-mailchimp-debug-info table,
|
| 682 |
.yikes-api-key-error {
|
| 683 |
display:none;
|
| 684 |
color:red;
|
| 685 |
+
}
|
| 686 |
+
|
| 687 |
+
/****** Interest Group Stypes ******/
|
| 688 |
+
.yks_mc_interest_group_text:first-child {
|
| 689 |
+
display:block;
|
| 690 |
+
margin-top:1em;
|
| 691 |
+
}
|
| 692 |
+
|
| 693 |
+
.yks_mc_interest_group_holder {
|
| 694 |
+
display:inline-block;
|
| 695 |
+
width:100%;
|
| 696 |
+
text-align:center;
|
| 697 |
+
margin-bottom:.5em;
|
| 698 |
+
}
|
| 699 |
+
|
| 700 |
+
/* Table Interest Group Styles */
|
| 701 |
+
td.yks_mc_table_dropdown_interest_group_holder, td.yks-mailchimpFormTableSubmit {
|
| 702 |
+
border-top:0;
|
| 703 |
+
}
|
| 704 |
+
.yks_table_label {
|
| 705 |
+
display:block;
|
| 706 |
+
margin:.75em 0;
|
| 707 |
+
}
|
| 708 |
+
|
| 709 |
+
.yks_mc_table_interest_group_holder {
|
| 710 |
+
width: 100%;
|
| 711 |
+
margin-bottom: 0;
|
| 712 |
+
display:block;
|
| 713 |
+
}
|
| 714 |
+
.yks_mc_table_dropdown_interest_group_holder {
|
| 715 |
+
display:block;
|
| 716 |
+
}
|
| 717 |
+
|
| 718 |
+
.yks_mc_interest_group_holder select {
|
| 719 |
+
width:100%;
|
| 720 |
+
}
|
| 721 |
+
|
| 722 |
+
.yikes_mc_interest_group_checkbox, .yks_mc_interest_group_label {
|
| 723 |
+
display:inline-block;
|
| 724 |
+
margin: 0 5px;
|
| 725 |
+
}
|
| 726 |
+
|
| 727 |
+
.widget .yks_mc_table_td:last-child {
|
| 728 |
+
border-top:0;
|
| 729 |
+
border-bottom:0;
|
| 730 |
+
}
|
| 731 |
+
|
| 732 |
+
.yikes_mc_interest_group_radio {
|
| 733 |
+
margin-right: .5em;
|
| 734 |
+
}
|
| 735 |
+
|
| 736 |
+
.content .yks_mc_interest_radio_button_holder, .content .yks_mc_table_td {
|
| 737 |
+
display:inline-block;
|
| 738 |
+
width:100%;
|
| 739 |
+
}
|
| 740 |
+
|
| 741 |
+
/*** Subscriber List Styles ***/
|
| 742 |
+
.yks-mc-subscriber-go-back {
|
| 743 |
+
font-size:12px;
|
| 744 |
+
font-weight:bold;
|
| 745 |
+
color: #333;
|
| 746 |
+
opacity: .5;
|
| 747 |
+
width:300px;
|
| 748 |
+
display:block;
|
| 749 |
+
text-align:left;
|
| 750 |
+
margin-top: 1em !important;
|
| 751 |
+
width: auto;
|
| 752 |
+
}
|
| 753 |
+
.yks-mc-subscriber-go-back:hover {
|
| 754 |
+
opacity: 1;
|
| 755 |
+
cursor:pointer;
|
| 756 |
+
}
|
| 757 |
+
|
| 758 |
+
.yks-mc-subscriber-overview {
|
| 759 |
+
display:block;
|
| 760 |
+
float: left;
|
| 761 |
+
width: 100%;
|
| 762 |
+
}
|
| 763 |
+
|
| 764 |
+
.dashicons-arrow-left-alt2:before {
|
| 765 |
+
display:inline-block;
|
| 766 |
+
margin-top:.15em;
|
| 767 |
+
}
|
| 768 |
+
|
| 769 |
+
.dashicons-star-filled {color:#FEBE12;}
|
| 770 |
+
|
| 771 |
+
.yks-mc-subscriber-star-rating {
|
| 772 |
+
margin-top: 0;
|
| 773 |
+
}
|
| 774 |
+
|
| 775 |
+
#yks-subscriber-info-email-address {
|
| 776 |
+
margin-bottom:.5em !important;
|
| 777 |
+
}
|
| 778 |
+
|
| 779 |
+
.yks-mc-overview-title {
|
| 780 |
+
font-size:16px;
|
| 781 |
+
color: #666;
|
| 782 |
+
opacity:.8;
|
| 783 |
+
margin-bottom:0 !important;
|
| 784 |
+
}
|
| 785 |
+
|
| 786 |
+
.yks-mc-overview-info-value {
|
| 787 |
+
font-size:14px;
|
| 788 |
+
color: #222222;
|
| 789 |
+
margin-top:0 !important;
|
| 790 |
+
}
|
| 791 |
+
|
| 792 |
+
.yks-mc-subscriber-firstName, .yks-mc-subscriber-lastName {
|
| 793 |
+
text-transform: capitalize;
|
| 794 |
+
}
|
| 795 |
+
|
| 796 |
+
.yks-subscriber-info-optin-data {
|
| 797 |
+
display:block;
|
| 798 |
+
margin-top:.5em;
|
| 799 |
+
}
|
| 800 |
+
|
| 801 |
+
.yks-mc-subscriber-bottom {
|
| 802 |
+
display:block;
|
| 803 |
+
float:left;
|
| 804 |
+
width:100%;
|
| 805 |
+
}
|
| 806 |
+
|
| 807 |
+
.yks-mc-subscriber-top {
|
| 808 |
+
margin-bottom: 1.5em;
|
| 809 |
+
}
|
| 810 |
+
|
| 811 |
+
.yks-mc-subscriber-header {
|
| 812 |
+
border-bottom:1px dashed grey;
|
| 813 |
+
padding-bottom:.5em;
|
| 814 |
+
}
|
| 815 |
+
|
| 816 |
+
.yks-mc-subscriber-left-container, .yks-mc-subscriber-right-container {
|
| 817 |
+
float:left;
|
| 818 |
+
width:50%;
|
| 819 |
+
}
|
| 820 |
+
label[for="yikes_mailchimp_comment_subscribe"] {
|
| 821 |
+
display:block;
|
| 822 |
+
margin: .5em 0 .5em 0;
|
| 823 |
+
}
|
| 824 |
+
label[for="yikes_mailchimp_comment_subscribe"]:hover {
|
| 825 |
+
cursor:pointer;
|
| 826 |
+
}
|
| 827 |
+
|
| 828 |
+
label[for="single-optin-message"], label[for="double-optin-message"] {
|
| 829 |
+
display:block;
|
| 830 |
+
width:55%;
|
| 831 |
+
}
|
| 832 |
+
|
| 833 |
+
#wp-double_optin_message-wrap, #wp-single_optin_message-wrap {
|
| 834 |
+
display:block;
|
| 835 |
+
margin-top:1.5em;
|
| 836 |
+
}
|
| 837 |
+
|
| 838 |
+
.yikes_widget_logo {
|
| 839 |
+
display:block;
|
| 840 |
+
margin:0 auto;
|
| 841 |
+
width: 80px;
|
| 842 |
+
}
|
| 843 |
+
|
| 844 |
+
.yikes_cURL_instructions_hidden, .yikes_phpinfo_container {
|
| 845 |
+
display:none;
|
| 846 |
+
}
|
| 847 |
+
|
| 848 |
+
.yikes_cURL_help_button {
|
| 849 |
+
margin-bottom: 1em !important;
|
| 850 |
+
}
|
| 851 |
+
|
| 852 |
+
.yks_mc_php_ini_file_location {
|
| 853 |
+
margin: .5em 0 .5em 0;
|
| 854 |
+
font-style:italic;
|
| 855 |
+
}
|
| 856 |
+
|
| 857 |
+
.yks_mc_no_phpini_alert {
|
| 858 |
+
color :#C93232;
|
| 859 |
+
font-weight:bold;
|
| 860 |
+
}
|
| 861 |
+
|
| 862 |
+
.yks_mc_no_phpini_success {
|
| 863 |
+
color :#29CA01;
|
| 864 |
+
font-weight:bold;
|
| 865 |
+
}
|
| 866 |
+
|
| 867 |
+
|
| 868 |
+
/** Date Picker Styles **/
|
| 869 |
+
.yks-mailchimpFormDatepickerContainer .ui-datepicker-prev, .yks-mailchimpFormDatepickerContainer .ui-datepicker-next {
|
| 870 |
+
margin-top:.5em;
|
| 871 |
+
}
|
| 872 |
+
|
| 873 |
+
/* Form Error Classes */
|
| 874 |
+
.yks_error_field_required {
|
| 875 |
+
border: 1px solid rgb(252, 182, 182) !important;
|
| 876 |
+
background: rgb(255, 213, 213) !important;
|
| 877 |
+
}
|
| 878 |
+
|
| 879 |
+
#yks_form_error_message {
|
| 880 |
+
padding:.75em;
|
| 881 |
+
font-size:12px;
|
| 882 |
+
float:left;
|
| 883 |
+
margin-bottom:1em;
|
| 884 |
+
display:none;
|
| 885 |
+
}
|
| 886 |
+
#yks_form_error_message ul {
|
| 887 |
+
list-style-type: square;
|
| 888 |
+
width: 100%;
|
| 889 |
+
float:left;
|
| 890 |
+
margin-top:.5em;
|
| 891 |
+
margin: 0.75em 0 1.25em 1.25em;
|
| 892 |
+
}
|
| 893 |
+
#yks_form_error_message ul li {
|
| 894 |
+
width: 33%;
|
| 895 |
+
float:left;
|
| 896 |
+
}
|
css/yks_easy_mc_wp_3point8.css
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
*
|
| 3 |
+
* Styles to make sure jquery ui modal
|
| 4 |
+
* is compatable with WordPress 3.8 and below
|
| 5 |
+
* - Even tho users should have updated by now!
|
| 6 |
+
**/
|
| 7 |
+
|
| 8 |
+
#yks_mc_reset_plugin_settings p {
|
| 9 |
+
width:77% !important;
|
| 10 |
+
}
|
| 11 |
+
|
| 12 |
+
#yks_mc_reset_plugin_settings .yks-mc-reset-plugin-settings-preloader {
|
| 13 |
+
margin-bottom:1em;
|
| 14 |
+
}
|
| 15 |
+
|
| 16 |
+
/* Dialog Styles */
|
| 17 |
+
/* Should always remain on top */
|
| 18 |
+
.ui-dialog {
|
| 19 |
+
z-index: 999999 !important
|
| 20 |
+
}
|
images/pagination/back_disabled.png
ADDED
|
Binary file
|
images/pagination/back_enabled.png
ADDED
|
Binary file
|
images/pagination/back_enabled_hover.png
ADDED
|
Binary file
|
images/pagination/forward_disabled.png
ADDED
|
Binary file
|
images/pagination/forward_enabled.png
ADDED
|
Binary file
|
images/pagination/forward_enabled_hover.png
ADDED
|
Binary file
|
images/pagination/sort_asc.png
ADDED
|
Binary file
|
images/pagination/sort_asc_disabled.png
ADDED
|
Binary file
|
images/pagination/sort_both.png
ADDED
|
Binary file
|
images/pagination/sort_desc.png
ADDED
|
Binary file
|
images/pagination/sort_desc_disabled.png
ADDED
|
Binary file
|
images/preloader.gif
ADDED
|
Binary file
|
images/smoothness/ui-bg_flat_0_aaaaaa_40x100.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_flat_75_ffffff_40x100.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_glass_55_fbf9ee_1x400.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_glass_65_ffffff_1x400.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_glass_75_dadada_1x400.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_glass_75_e6e6e6_1x400.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_glass_95_fef1ec_1x400.png
CHANGED
|
File without changes
|
images/smoothness/ui-bg_highlight-soft_75_cccccc_1x100.png
CHANGED
|
File without changes
|
images/smoothness/ui-icons_222222_256x240.png
CHANGED
|
File without changes
|
images/smoothness/ui-icons_2e83ff_256x240.png
CHANGED
|
File without changes
|
images/smoothness/ui-icons_454545_256x240.png
CHANGED
|
File without changes
|
images/smoothness/ui-icons_888888_256x240.png
CHANGED
|
File without changes
|
images/smoothness/ui-icons_cd0a0a_256x240.png
CHANGED
|
File without changes
|
images/yikes_logo_widget_icon.png
ADDED
|
Binary file
|
images/yks_mc_lets_get_started.png
ADDED
|
Binary file
|
js/jQuery_1.11.0.min.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
| 2 |
+
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
|
| 3 |
+
}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
|
| 4 |
+
},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
|
js/jquery.dataTables.js
ADDED
|
@@ -0,0 +1,12098 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* @summary DataTables
|
| 3 |
+
* @description Paginate, search and sort HTML tables
|
| 4 |
+
* @version 1.9.4
|
| 5 |
+
* @file jquery.dataTables.js
|
| 6 |
+
* @author Allan Jardine (www.sprymedia.co.uk)
|
| 7 |
+
* @contact www.sprymedia.co.uk/contact
|
| 8 |
+
*
|
| 9 |
+
* @copyright Copyright 2008-2012 Allan Jardine, all rights reserved.
|
| 10 |
+
*
|
| 11 |
+
* This source file is free software, under either the GPL v2 license or a
|
| 12 |
+
* BSD style license, available at:
|
| 13 |
+
* http://datatables.net/license_gpl2
|
| 14 |
+
* http://datatables.net/license_bsd
|
| 15 |
+
*
|
| 16 |
+
* This source file is distributed in the hope that it will be useful, but
|
| 17 |
+
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
| 18 |
+
* or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
|
| 19 |
+
*
|
| 20 |
+
* For details please refer to: http://www.datatables.net
|
| 21 |
+
*/
|
| 22 |
+
|
| 23 |
+
/*jslint evil: true, undef: true, browser: true */
|
| 24 |
+
/*globals $, jQuery,define,_fnExternApiFunc,_fnInitialise,_fnInitComplete,_fnLanguageCompat,_fnAddColumn,_fnColumnOptions,_fnAddData,_fnCreateTr,_fnGatherData,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnServerParams,_fnAddOptionsHtml,_fnFeatureHtmlTable,_fnScrollDraw,_fnAdjustColumnSizing,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnBuildSearchArray,_fnBuildSearchRow,_fnFilterCreateSearch,_fnDataToSearch,_fnSort,_fnSortAttachListener,_fnSortingClasses,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnFeatureHtmlLength,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnNodeToDataIndex,_fnVisbleColumns,_fnCalculateEnd,_fnConvertToWidth,_fnCalculateColumnWidths,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnDetectType,_fnSettingsFromNode,_fnGetDataMaster,_fnGetTrNodes,_fnGetTdNodes,_fnEscapeRegex,_fnDeleteIndex,_fnReOrderIndex,_fnColumnOrdering,_fnLog,_fnClearTable,_fnSaveState,_fnLoadState,_fnCreateCookie,_fnReadCookie,_fnDetectHeader,_fnGetUniqueThs,_fnScrollBarWidth,_fnApplyToChildren,_fnMap,_fnGetRowData,_fnGetCellData,_fnSetCellData,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnApplyColumnDefs,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnJsonString,_fnRender,_fnNodeToColumnIndex,_fnInfoMacros,_fnBrowserDetect,_fnGetColumns*/
|
| 25 |
+
|
| 26 |
+
(/** @lends <global> */function( window, document, undefined ) {
|
| 27 |
+
|
| 28 |
+
(function( factory ) {
|
| 29 |
+
"use strict";
|
| 30 |
+
|
| 31 |
+
// Define as an AMD module if possible
|
| 32 |
+
if ( typeof define === 'function' && define.amd )
|
| 33 |
+
{
|
| 34 |
+
define( ['jquery'], factory );
|
| 35 |
+
}
|
| 36 |
+
/* Define using browser globals otherwise
|
| 37 |
+
* Prevent multiple instantiations if the script is loaded twice
|
| 38 |
+
*/
|
| 39 |
+
else if ( jQuery && !jQuery.fn.dataTable )
|
| 40 |
+
{
|
| 41 |
+
factory( jQuery );
|
| 42 |
+
}
|
| 43 |
+
}
|
| 44 |
+
(/** @lends <global> */function( $ ) {
|
| 45 |
+
"use strict";
|
| 46 |
+
/**
|
| 47 |
+
* DataTables is a plug-in for the jQuery Javascript library. It is a
|
| 48 |
+
* highly flexible tool, based upon the foundations of progressive
|
| 49 |
+
* enhancement, which will add advanced interaction controls to any
|
| 50 |
+
* HTML table. For a full list of features please refer to
|
| 51 |
+
* <a href="http://datatables.net">DataTables.net</a>.
|
| 52 |
+
*
|
| 53 |
+
* Note that the <i>DataTable</i> object is not a global variable but is
|
| 54 |
+
* aliased to <i>jQuery.fn.DataTable</i> and <i>jQuery.fn.dataTable</i> through which
|
| 55 |
+
* it may be accessed.
|
| 56 |
+
*
|
| 57 |
+
* @class
|
| 58 |
+
* @param {object} [oInit={}] Configuration object for DataTables. Options
|
| 59 |
+
* are defined by {@link DataTable.defaults}
|
| 60 |
+
* @requires jQuery 1.3+
|
| 61 |
+
*
|
| 62 |
+
* @example
|
| 63 |
+
* // Basic initialisation
|
| 64 |
+
* $(document).ready( function {
|
| 65 |
+
* $('#example').dataTable();
|
| 66 |
+
* } );
|
| 67 |
+
*
|
| 68 |
+
* @example
|
| 69 |
+
* // Initialisation with configuration options - in this case, disable
|
| 70 |
+
* // pagination and sorting.
|
| 71 |
+
* $(document).ready( function {
|
| 72 |
+
* $('#example').dataTable( {
|
| 73 |
+
* "bPaginate": false,
|
| 74 |
+
* "bSort": false
|
| 75 |
+
* } );
|
| 76 |
+
* } );
|
| 77 |
+
*/
|
| 78 |
+
var DataTable = function( oInit )
|
| 79 |
+
{
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
/**
|
| 83 |
+
* Add a column to the list used for the table with default values
|
| 84 |
+
* @param {object} oSettings dataTables settings object
|
| 85 |
+
* @param {node} nTh The th element for this column
|
| 86 |
+
* @memberof DataTable#oApi
|
| 87 |
+
*/
|
| 88 |
+
function _fnAddColumn( oSettings, nTh )
|
| 89 |
+
{
|
| 90 |
+
var oDefaults = DataTable.defaults.columns;
|
| 91 |
+
var iCol = oSettings.aoColumns.length;
|
| 92 |
+
var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {
|
| 93 |
+
"sSortingClass": oSettings.oClasses.sSortable,
|
| 94 |
+
"sSortingClassJUI": oSettings.oClasses.sSortJUI,
|
| 95 |
+
"nTh": nTh ? nTh : document.createElement('th'),
|
| 96 |
+
"sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '',
|
| 97 |
+
"aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],
|
| 98 |
+
"mData": oDefaults.mData ? oDefaults.oDefaults : iCol
|
| 99 |
+
} );
|
| 100 |
+
oSettings.aoColumns.push( oCol );
|
| 101 |
+
|
| 102 |
+
/* Add a column specific filter */
|
| 103 |
+
if ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null )
|
| 104 |
+
{
|
| 105 |
+
oSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch );
|
| 106 |
+
}
|
| 107 |
+
else
|
| 108 |
+
{
|
| 109 |
+
var oPre = oSettings.aoPreSearchCols[ iCol ];
|
| 110 |
+
|
| 111 |
+
/* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */
|
| 112 |
+
if ( oPre.bRegex === undefined )
|
| 113 |
+
{
|
| 114 |
+
oPre.bRegex = true;
|
| 115 |
+
}
|
| 116 |
+
|
| 117 |
+
if ( oPre.bSmart === undefined )
|
| 118 |
+
{
|
| 119 |
+
oPre.bSmart = true;
|
| 120 |
+
}
|
| 121 |
+
|
| 122 |
+
if ( oPre.bCaseInsensitive === undefined )
|
| 123 |
+
{
|
| 124 |
+
oPre.bCaseInsensitive = true;
|
| 125 |
+
}
|
| 126 |
+
}
|
| 127 |
+
|
| 128 |
+
/* Use the column options function to initialise classes etc */
|
| 129 |
+
_fnColumnOptions( oSettings, iCol, null );
|
| 130 |
+
}
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
/**
|
| 134 |
+
* Apply options for a column
|
| 135 |
+
* @param {object} oSettings dataTables settings object
|
| 136 |
+
* @param {int} iCol column index to consider
|
| 137 |
+
* @param {object} oOptions object with sType, bVisible and bSearchable etc
|
| 138 |
+
* @memberof DataTable#oApi
|
| 139 |
+
*/
|
| 140 |
+
function _fnColumnOptions( oSettings, iCol, oOptions )
|
| 141 |
+
{
|
| 142 |
+
var oCol = oSettings.aoColumns[ iCol ];
|
| 143 |
+
|
| 144 |
+
/* User specified column options */
|
| 145 |
+
if ( oOptions !== undefined && oOptions !== null )
|
| 146 |
+
{
|
| 147 |
+
/* Backwards compatibility for mDataProp */
|
| 148 |
+
if ( oOptions.mDataProp && !oOptions.mData )
|
| 149 |
+
{
|
| 150 |
+
oOptions.mData = oOptions.mDataProp;
|
| 151 |
+
}
|
| 152 |
+
|
| 153 |
+
if ( oOptions.sType !== undefined )
|
| 154 |
+
{
|
| 155 |
+
oCol.sType = oOptions.sType;
|
| 156 |
+
oCol._bAutoType = false;
|
| 157 |
+
}
|
| 158 |
+
|
| 159 |
+
$.extend( oCol, oOptions );
|
| 160 |
+
_fnMap( oCol, oOptions, "sWidth", "sWidthOrig" );
|
| 161 |
+
|
| 162 |
+
/* iDataSort to be applied (backwards compatibility), but aDataSort will take
|
| 163 |
+
* priority if defined
|
| 164 |
+
*/
|
| 165 |
+
if ( oOptions.iDataSort !== undefined )
|
| 166 |
+
{
|
| 167 |
+
oCol.aDataSort = [ oOptions.iDataSort ];
|
| 168 |
+
}
|
| 169 |
+
_fnMap( oCol, oOptions, "aDataSort" );
|
| 170 |
+
}
|
| 171 |
+
|
| 172 |
+
/* Cache the data get and set functions for speed */
|
| 173 |
+
var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;
|
| 174 |
+
var mData = _fnGetObjectDataFn( oCol.mData );
|
| 175 |
+
|
| 176 |
+
oCol.fnGetData = function (oData, sSpecific) {
|
| 177 |
+
var innerData = mData( oData, sSpecific );
|
| 178 |
+
|
| 179 |
+
if ( oCol.mRender && (sSpecific && sSpecific !== '') )
|
| 180 |
+
{
|
| 181 |
+
return mRender( innerData, sSpecific, oData );
|
| 182 |
+
}
|
| 183 |
+
return innerData;
|
| 184 |
+
};
|
| 185 |
+
oCol.fnSetData = _fnSetObjectDataFn( oCol.mData );
|
| 186 |
+
|
| 187 |
+
/* Feature sorting overrides column specific when off */
|
| 188 |
+
if ( !oSettings.oFeatures.bSort )
|
| 189 |
+
{
|
| 190 |
+
oCol.bSortable = false;
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
/* Check that the class assignment is correct for sorting */
|
| 194 |
+
if ( !oCol.bSortable ||
|
| 195 |
+
($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) )
|
| 196 |
+
{
|
| 197 |
+
oCol.sSortingClass = oSettings.oClasses.sSortableNone;
|
| 198 |
+
oCol.sSortingClassJUI = "";
|
| 199 |
+
}
|
| 200 |
+
else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 )
|
| 201 |
+
{
|
| 202 |
+
oCol.sSortingClass = oSettings.oClasses.sSortable;
|
| 203 |
+
oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI;
|
| 204 |
+
}
|
| 205 |
+
else if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 )
|
| 206 |
+
{
|
| 207 |
+
oCol.sSortingClass = oSettings.oClasses.sSortableAsc;
|
| 208 |
+
oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed;
|
| 209 |
+
}
|
| 210 |
+
else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 )
|
| 211 |
+
{
|
| 212 |
+
oCol.sSortingClass = oSettings.oClasses.sSortableDesc;
|
| 213 |
+
oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed;
|
| 214 |
+
}
|
| 215 |
+
}
|
| 216 |
+
|
| 217 |
+
|
| 218 |
+
/**
|
| 219 |
+
* Adjust the table column widths for new data. Note: you would probably want to
|
| 220 |
+
* do a redraw after calling this function!
|
| 221 |
+
* @param {object} oSettings dataTables settings object
|
| 222 |
+
* @memberof DataTable#oApi
|
| 223 |
+
*/
|
| 224 |
+
function _fnAdjustColumnSizing ( oSettings )
|
| 225 |
+
{
|
| 226 |
+
/* Not interested in doing column width calculation if auto-width is disabled */
|
| 227 |
+
if ( oSettings.oFeatures.bAutoWidth === false )
|
| 228 |
+
{
|
| 229 |
+
return false;
|
| 230 |
+
}
|
| 231 |
+
|
| 232 |
+
_fnCalculateColumnWidths( oSettings );
|
| 233 |
+
for ( var i=0 , iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 234 |
+
{
|
| 235 |
+
oSettings.aoColumns[i].nTh.style.width = oSettings.aoColumns[i].sWidth;
|
| 236 |
+
}
|
| 237 |
+
}
|
| 238 |
+
|
| 239 |
+
|
| 240 |
+
/**
|
| 241 |
+
* Covert the index of a visible column to the index in the data array (take account
|
| 242 |
+
* of hidden columns)
|
| 243 |
+
* @param {object} oSettings dataTables settings object
|
| 244 |
+
* @param {int} iMatch Visible column index to lookup
|
| 245 |
+
* @returns {int} i the data index
|
| 246 |
+
* @memberof DataTable#oApi
|
| 247 |
+
*/
|
| 248 |
+
function _fnVisibleToColumnIndex( oSettings, iMatch )
|
| 249 |
+
{
|
| 250 |
+
var aiVis = _fnGetColumns( oSettings, 'bVisible' );
|
| 251 |
+
|
| 252 |
+
return typeof aiVis[iMatch] === 'number' ?
|
| 253 |
+
aiVis[iMatch] :
|
| 254 |
+
null;
|
| 255 |
+
}
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
/**
|
| 259 |
+
* Covert the index of an index in the data array and convert it to the visible
|
| 260 |
+
* column index (take account of hidden columns)
|
| 261 |
+
* @param {int} iMatch Column index to lookup
|
| 262 |
+
* @param {object} oSettings dataTables settings object
|
| 263 |
+
* @returns {int} i the data index
|
| 264 |
+
* @memberof DataTable#oApi
|
| 265 |
+
*/
|
| 266 |
+
function _fnColumnIndexToVisible( oSettings, iMatch )
|
| 267 |
+
{
|
| 268 |
+
var aiVis = _fnGetColumns( oSettings, 'bVisible' );
|
| 269 |
+
var iPos = $.inArray( iMatch, aiVis );
|
| 270 |
+
|
| 271 |
+
return iPos !== -1 ? iPos : null;
|
| 272 |
+
}
|
| 273 |
+
|
| 274 |
+
|
| 275 |
+
/**
|
| 276 |
+
* Get the number of visible columns
|
| 277 |
+
* @param {object} oSettings dataTables settings object
|
| 278 |
+
* @returns {int} i the number of visible columns
|
| 279 |
+
* @memberof DataTable#oApi
|
| 280 |
+
*/
|
| 281 |
+
function _fnVisbleColumns( oSettings )
|
| 282 |
+
{
|
| 283 |
+
return _fnGetColumns( oSettings, 'bVisible' ).length;
|
| 284 |
+
}
|
| 285 |
+
|
| 286 |
+
|
| 287 |
+
/**
|
| 288 |
+
* Get an array of column indexes that match a given property
|
| 289 |
+
* @param {object} oSettings dataTables settings object
|
| 290 |
+
* @param {string} sParam Parameter in aoColumns to look for - typically
|
| 291 |
+
* bVisible or bSearchable
|
| 292 |
+
* @returns {array} Array of indexes with matched properties
|
| 293 |
+
* @memberof DataTable#oApi
|
| 294 |
+
*/
|
| 295 |
+
function _fnGetColumns( oSettings, sParam )
|
| 296 |
+
{
|
| 297 |
+
var a = [];
|
| 298 |
+
|
| 299 |
+
$.map( oSettings.aoColumns, function(val, i) {
|
| 300 |
+
if ( val[sParam] ) {
|
| 301 |
+
a.push( i );
|
| 302 |
+
}
|
| 303 |
+
} );
|
| 304 |
+
|
| 305 |
+
return a;
|
| 306 |
+
}
|
| 307 |
+
|
| 308 |
+
|
| 309 |
+
/**
|
| 310 |
+
* Get the sort type based on an input string
|
| 311 |
+
* @param {string} sData data we wish to know the type of
|
| 312 |
+
* @returns {string} type (defaults to 'string' if no type can be detected)
|
| 313 |
+
* @memberof DataTable#oApi
|
| 314 |
+
*/
|
| 315 |
+
function _fnDetectType( sData )
|
| 316 |
+
{
|
| 317 |
+
var aTypes = DataTable.ext.aTypes;
|
| 318 |
+
var iLen = aTypes.length;
|
| 319 |
+
|
| 320 |
+
for ( var i=0 ; i<iLen ; i++ )
|
| 321 |
+
{
|
| 322 |
+
var sType = aTypes[i]( sData );
|
| 323 |
+
if ( sType !== null )
|
| 324 |
+
{
|
| 325 |
+
return sType;
|
| 326 |
+
}
|
| 327 |
+
}
|
| 328 |
+
|
| 329 |
+
return 'string';
|
| 330 |
+
}
|
| 331 |
+
|
| 332 |
+
|
| 333 |
+
/**
|
| 334 |
+
* Figure out how to reorder a display list
|
| 335 |
+
* @param {object} oSettings dataTables settings object
|
| 336 |
+
* @returns array {int} aiReturn index list for reordering
|
| 337 |
+
* @memberof DataTable#oApi
|
| 338 |
+
*/
|
| 339 |
+
function _fnReOrderIndex ( oSettings, sColumns )
|
| 340 |
+
{
|
| 341 |
+
var aColumns = sColumns.split(',');
|
| 342 |
+
var aiReturn = [];
|
| 343 |
+
|
| 344 |
+
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 345 |
+
{
|
| 346 |
+
for ( var j=0 ; j<iLen ; j++ )
|
| 347 |
+
{
|
| 348 |
+
if ( oSettings.aoColumns[i].sName == aColumns[j] )
|
| 349 |
+
{
|
| 350 |
+
aiReturn.push( j );
|
| 351 |
+
break;
|
| 352 |
+
}
|
| 353 |
+
}
|
| 354 |
+
}
|
| 355 |
+
|
| 356 |
+
return aiReturn;
|
| 357 |
+
}
|
| 358 |
+
|
| 359 |
+
|
| 360 |
+
/**
|
| 361 |
+
* Get the column ordering that DataTables expects
|
| 362 |
+
* @param {object} oSettings dataTables settings object
|
| 363 |
+
* @returns {string} comma separated list of names
|
| 364 |
+
* @memberof DataTable#oApi
|
| 365 |
+
*/
|
| 366 |
+
function _fnColumnOrdering ( oSettings )
|
| 367 |
+
{
|
| 368 |
+
var sNames = '';
|
| 369 |
+
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 370 |
+
{
|
| 371 |
+
sNames += oSettings.aoColumns[i].sName+',';
|
| 372 |
+
}
|
| 373 |
+
if ( sNames.length == iLen )
|
| 374 |
+
{
|
| 375 |
+
return "";
|
| 376 |
+
}
|
| 377 |
+
return sNames.slice(0, -1);
|
| 378 |
+
}
|
| 379 |
+
|
| 380 |
+
|
| 381 |
+
/**
|
| 382 |
+
* Take the column definitions and static columns arrays and calculate how
|
| 383 |
+
* they relate to column indexes. The callback function will then apply the
|
| 384 |
+
* definition found for a column to a suitable configuration object.
|
| 385 |
+
* @param {object} oSettings dataTables settings object
|
| 386 |
+
* @param {array} aoColDefs The aoColumnDefs array that is to be applied
|
| 387 |
+
* @param {array} aoCols The aoColumns array that defines columns individually
|
| 388 |
+
* @param {function} fn Callback function - takes two parameters, the calculated
|
| 389 |
+
* column index and the definition for that column.
|
| 390 |
+
* @memberof DataTable#oApi
|
| 391 |
+
*/
|
| 392 |
+
function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
|
| 393 |
+
{
|
| 394 |
+
var i, iLen, j, jLen, k, kLen;
|
| 395 |
+
|
| 396 |
+
// Column definitions with aTargets
|
| 397 |
+
if ( aoColDefs )
|
| 398 |
+
{
|
| 399 |
+
/* Loop over the definitions array - loop in reverse so first instance has priority */
|
| 400 |
+
for ( i=aoColDefs.length-1 ; i>=0 ; i-- )
|
| 401 |
+
{
|
| 402 |
+
/* Each definition can target multiple columns, as it is an array */
|
| 403 |
+
var aTargets = aoColDefs[i].aTargets;
|
| 404 |
+
if ( !$.isArray( aTargets ) )
|
| 405 |
+
{
|
| 406 |
+
_fnLog( oSettings, 1, 'aTargets must be an array of targets, not a '+(typeof aTargets) );
|
| 407 |
+
}
|
| 408 |
+
|
| 409 |
+
for ( j=0, jLen=aTargets.length ; j<jLen ; j++ )
|
| 410 |
+
{
|
| 411 |
+
if ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )
|
| 412 |
+
{
|
| 413 |
+
/* Add columns that we don't yet know about */
|
| 414 |
+
while( oSettings.aoColumns.length <= aTargets[j] )
|
| 415 |
+
{
|
| 416 |
+
_fnAddColumn( oSettings );
|
| 417 |
+
}
|
| 418 |
+
|
| 419 |
+
/* Integer, basic index */
|
| 420 |
+
fn( aTargets[j], aoColDefs[i] );
|
| 421 |
+
}
|
| 422 |
+
else if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )
|
| 423 |
+
{
|
| 424 |
+
/* Negative integer, right to left column counting */
|
| 425 |
+
fn( oSettings.aoColumns.length+aTargets[j], aoColDefs[i] );
|
| 426 |
+
}
|
| 427 |
+
else if ( typeof aTargets[j] === 'string' )
|
| 428 |
+
{
|
| 429 |
+
/* Class name matching on TH element */
|
| 430 |
+
for ( k=0, kLen=oSettings.aoColumns.length ; k<kLen ; k++ )
|
| 431 |
+
{
|
| 432 |
+
if ( aTargets[j] == "_all" ||
|
| 433 |
+
$(oSettings.aoColumns[k].nTh).hasClass( aTargets[j] ) )
|
| 434 |
+
{
|
| 435 |
+
fn( k, aoColDefs[i] );
|
| 436 |
+
}
|
| 437 |
+
}
|
| 438 |
+
}
|
| 439 |
+
}
|
| 440 |
+
}
|
| 441 |
+
}
|
| 442 |
+
|
| 443 |
+
// Statically defined columns array
|
| 444 |
+
if ( aoCols )
|
| 445 |
+
{
|
| 446 |
+
for ( i=0, iLen=aoCols.length ; i<iLen ; i++ )
|
| 447 |
+
{
|
| 448 |
+
fn( i, aoCols[i] );
|
| 449 |
+
}
|
| 450 |
+
}
|
| 451 |
+
}
|
| 452 |
+
|
| 453 |
+
/**
|
| 454 |
+
* Add a data array to the table, creating DOM node etc. This is the parallel to
|
| 455 |
+
* _fnGatherData, but for adding rows from a Javascript source, rather than a
|
| 456 |
+
* DOM source.
|
| 457 |
+
* @param {object} oSettings dataTables settings object
|
| 458 |
+
* @param {array} aData data array to be added
|
| 459 |
+
* @returns {int} >=0 if successful (index of new aoData entry), -1 if failed
|
| 460 |
+
* @memberof DataTable#oApi
|
| 461 |
+
*/
|
| 462 |
+
function _fnAddData ( oSettings, aDataSupplied )
|
| 463 |
+
{
|
| 464 |
+
var oCol;
|
| 465 |
+
|
| 466 |
+
/* Take an independent copy of the data source so we can bash it about as we wish */
|
| 467 |
+
var aDataIn = ($.isArray(aDataSupplied)) ?
|
| 468 |
+
aDataSupplied.slice() :
|
| 469 |
+
$.extend( true, {}, aDataSupplied );
|
| 470 |
+
|
| 471 |
+
/* Create the object for storing information about this new row */
|
| 472 |
+
var iRow = oSettings.aoData.length;
|
| 473 |
+
var oData = $.extend( true, {}, DataTable.models.oRow );
|
| 474 |
+
oData._aData = aDataIn;
|
| 475 |
+
oSettings.aoData.push( oData );
|
| 476 |
+
|
| 477 |
+
/* Create the cells */
|
| 478 |
+
var nTd, sThisType;
|
| 479 |
+
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 480 |
+
{
|
| 481 |
+
oCol = oSettings.aoColumns[i];
|
| 482 |
+
|
| 483 |
+
/* Use rendered data for filtering / sorting */
|
| 484 |
+
if ( typeof oCol.fnRender === 'function' && oCol.bUseRendered && oCol.mData !== null )
|
| 485 |
+
{
|
| 486 |
+
_fnSetCellData( oSettings, iRow, i, _fnRender(oSettings, iRow, i) );
|
| 487 |
+
}
|
| 488 |
+
else
|
| 489 |
+
{
|
| 490 |
+
_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );
|
| 491 |
+
}
|
| 492 |
+
|
| 493 |
+
/* See if we should auto-detect the column type */
|
| 494 |
+
if ( oCol._bAutoType && oCol.sType != 'string' )
|
| 495 |
+
{
|
| 496 |
+
/* Attempt to auto detect the type - same as _fnGatherData() */
|
| 497 |
+
var sVarType = _fnGetCellData( oSettings, iRow, i, 'type' );
|
| 498 |
+
if ( sVarType !== null && sVarType !== '' )
|
| 499 |
+
{
|
| 500 |
+
sThisType = _fnDetectType( sVarType );
|
| 501 |
+
if ( oCol.sType === null )
|
| 502 |
+
{
|
| 503 |
+
oCol.sType = sThisType;
|
| 504 |
+
}
|
| 505 |
+
else if ( oCol.sType != sThisType && oCol.sType != "html" )
|
| 506 |
+
{
|
| 507 |
+
/* String is always the 'fallback' option */
|
| 508 |
+
oCol.sType = 'string';
|
| 509 |
+
}
|
| 510 |
+
}
|
| 511 |
+
}
|
| 512 |
+
}
|
| 513 |
+
|
| 514 |
+
/* Add to the display array */
|
| 515 |
+
oSettings.aiDisplayMaster.push( iRow );
|
| 516 |
+
|
| 517 |
+
/* Create the DOM information */
|
| 518 |
+
if ( !oSettings.oFeatures.bDeferRender )
|
| 519 |
+
{
|
| 520 |
+
_fnCreateTr( oSettings, iRow );
|
| 521 |
+
}
|
| 522 |
+
|
| 523 |
+
return iRow;
|
| 524 |
+
}
|
| 525 |
+
|
| 526 |
+
|
| 527 |
+
/**
|
| 528 |
+
* Read in the data from the target table from the DOM
|
| 529 |
+
* @param {object} oSettings dataTables settings object
|
| 530 |
+
* @memberof DataTable#oApi
|
| 531 |
+
*/
|
| 532 |
+
function _fnGatherData( oSettings )
|
| 533 |
+
{
|
| 534 |
+
var iLoop, i, iLen, j, jLen, jInner,
|
| 535 |
+
nTds, nTrs, nTd, nTr, aLocalData, iThisIndex,
|
| 536 |
+
iRow, iRows, iColumn, iColumns, sNodeName,
|
| 537 |
+
oCol, oData;
|
| 538 |
+
|
| 539 |
+
/*
|
| 540 |
+
* Process by row first
|
| 541 |
+
* Add the data object for the whole table - storing the tr node. Note - no point in getting
|
| 542 |
+
* DOM based data if we are going to go and replace it with Ajax source data.
|
| 543 |
+
*/
|
| 544 |
+
if ( oSettings.bDeferLoading || oSettings.sAjaxSource === null )
|
| 545 |
+
{
|
| 546 |
+
nTr = oSettings.nTBody.firstChild;
|
| 547 |
+
while ( nTr )
|
| 548 |
+
{
|
| 549 |
+
if ( nTr.nodeName.toUpperCase() == "TR" )
|
| 550 |
+
{
|
| 551 |
+
iThisIndex = oSettings.aoData.length;
|
| 552 |
+
nTr._DT_RowIndex = iThisIndex;
|
| 553 |
+
oSettings.aoData.push( $.extend( true, {}, DataTable.models.oRow, {
|
| 554 |
+
"nTr": nTr
|
| 555 |
+
} ) );
|
| 556 |
+
|
| 557 |
+
oSettings.aiDisplayMaster.push( iThisIndex );
|
| 558 |
+
nTd = nTr.firstChild;
|
| 559 |
+
jInner = 0;
|
| 560 |
+
while ( nTd )
|
| 561 |
+
{
|
| 562 |
+
sNodeName = nTd.nodeName.toUpperCase();
|
| 563 |
+
if ( sNodeName == "TD" || sNodeName == "TH" )
|
| 564 |
+
{
|
| 565 |
+
_fnSetCellData( oSettings, iThisIndex, jInner, $.trim(nTd.innerHTML) );
|
| 566 |
+
jInner++;
|
| 567 |
+
}
|
| 568 |
+
nTd = nTd.nextSibling;
|
| 569 |
+
}
|
| 570 |
+
}
|
| 571 |
+
nTr = nTr.nextSibling;
|
| 572 |
+
}
|
| 573 |
+
}
|
| 574 |
+
|
| 575 |
+
/* Gather in the TD elements of the Table - note that this is basically the same as
|
| 576 |
+
* fnGetTdNodes, but that function takes account of hidden columns, which we haven't yet
|
| 577 |
+
* setup!
|
| 578 |
+
*/
|
| 579 |
+
nTrs = _fnGetTrNodes( oSettings );
|
| 580 |
+
nTds = [];
|
| 581 |
+
for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
|
| 582 |
+
{
|
| 583 |
+
nTd = nTrs[i].firstChild;
|
| 584 |
+
while ( nTd )
|
| 585 |
+
{
|
| 586 |
+
sNodeName = nTd.nodeName.toUpperCase();
|
| 587 |
+
if ( sNodeName == "TD" || sNodeName == "TH" )
|
| 588 |
+
{
|
| 589 |
+
nTds.push( nTd );
|
| 590 |
+
}
|
| 591 |
+
nTd = nTd.nextSibling;
|
| 592 |
+
}
|
| 593 |
+
}
|
| 594 |
+
|
| 595 |
+
/* Now process by column */
|
| 596 |
+
for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
|
| 597 |
+
{
|
| 598 |
+
oCol = oSettings.aoColumns[iColumn];
|
| 599 |
+
|
| 600 |
+
/* Get the title of the column - unless there is a user set one */
|
| 601 |
+
if ( oCol.sTitle === null )
|
| 602 |
+
{
|
| 603 |
+
oCol.sTitle = oCol.nTh.innerHTML;
|
| 604 |
+
}
|
| 605 |
+
|
| 606 |
+
var
|
| 607 |
+
bAutoType = oCol._bAutoType,
|
| 608 |
+
bRender = typeof oCol.fnRender === 'function',
|
| 609 |
+
bClass = oCol.sClass !== null,
|
| 610 |
+
bVisible = oCol.bVisible,
|
| 611 |
+
nCell, sThisType, sRendered, sValType;
|
| 612 |
+
|
| 613 |
+
/* A single loop to rule them all (and be more efficient) */
|
| 614 |
+
if ( bAutoType || bRender || bClass || !bVisible )
|
| 615 |
+
{
|
| 616 |
+
for ( iRow=0, iRows=oSettings.aoData.length ; iRow<iRows ; iRow++ )
|
| 617 |
+
{
|
| 618 |
+
oData = oSettings.aoData[iRow];
|
| 619 |
+
nCell = nTds[ (iRow*iColumns) + iColumn ];
|
| 620 |
+
|
| 621 |
+
/* Type detection */
|
| 622 |
+
if ( bAutoType && oCol.sType != 'string' )
|
| 623 |
+
{
|
| 624 |
+
sValType = _fnGetCellData( oSettings, iRow, iColumn, 'type' );
|
| 625 |
+
if ( sValType !== '' )
|
| 626 |
+
{
|
| 627 |
+
sThisType = _fnDetectType( sValType );
|
| 628 |
+
if ( oCol.sType === null )
|
| 629 |
+
{
|
| 630 |
+
oCol.sType = sThisType;
|
| 631 |
+
}
|
| 632 |
+
else if ( oCol.sType != sThisType &&
|
| 633 |
+
oCol.sType != "html" )
|
| 634 |
+
{
|
| 635 |
+
/* String is always the 'fallback' option */
|
| 636 |
+
oCol.sType = 'string';
|
| 637 |
+
}
|
| 638 |
+
}
|
| 639 |
+
}
|
| 640 |
+
|
| 641 |
+
if ( oCol.mRender )
|
| 642 |
+
{
|
| 643 |
+
// mRender has been defined, so we need to get the value and set it
|
| 644 |
+
nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
| 645 |
+
}
|
| 646 |
+
else if ( oCol.mData !== iColumn )
|
| 647 |
+
{
|
| 648 |
+
// If mData is not the same as the column number, then we need to
|
| 649 |
+
// get the dev set value. If it is the column, no point in wasting
|
| 650 |
+
// time setting the value that is already there!
|
| 651 |
+
nCell.innerHTML = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
| 652 |
+
}
|
| 653 |
+
|
| 654 |
+
/* Rendering */
|
| 655 |
+
if ( bRender )
|
| 656 |
+
{
|
| 657 |
+
sRendered = _fnRender( oSettings, iRow, iColumn );
|
| 658 |
+
nCell.innerHTML = sRendered;
|
| 659 |
+
if ( oCol.bUseRendered )
|
| 660 |
+
{
|
| 661 |
+
/* Use the rendered data for filtering / sorting */
|
| 662 |
+
_fnSetCellData( oSettings, iRow, iColumn, sRendered );
|
| 663 |
+
}
|
| 664 |
+
}
|
| 665 |
+
|
| 666 |
+
/* Classes */
|
| 667 |
+
if ( bClass )
|
| 668 |
+
{
|
| 669 |
+
nCell.className += ' '+oCol.sClass;
|
| 670 |
+
}
|
| 671 |
+
|
| 672 |
+
/* Column visibility */
|
| 673 |
+
if ( !bVisible )
|
| 674 |
+
{
|
| 675 |
+
oData._anHidden[iColumn] = nCell;
|
| 676 |
+
nCell.parentNode.removeChild( nCell );
|
| 677 |
+
}
|
| 678 |
+
else
|
| 679 |
+
{
|
| 680 |
+
oData._anHidden[iColumn] = null;
|
| 681 |
+
}
|
| 682 |
+
|
| 683 |
+
if ( oCol.fnCreatedCell )
|
| 684 |
+
{
|
| 685 |
+
oCol.fnCreatedCell.call( oSettings.oInstance,
|
| 686 |
+
nCell, _fnGetCellData( oSettings, iRow, iColumn, 'display' ), oData._aData, iRow, iColumn
|
| 687 |
+
);
|
| 688 |
+
}
|
| 689 |
+
}
|
| 690 |
+
}
|
| 691 |
+
}
|
| 692 |
+
|
| 693 |
+
/* Row created callbacks */
|
| 694 |
+
if ( oSettings.aoRowCreatedCallback.length !== 0 )
|
| 695 |
+
{
|
| 696 |
+
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
|
| 697 |
+
{
|
| 698 |
+
oData = oSettings.aoData[i];
|
| 699 |
+
_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, i] );
|
| 700 |
+
}
|
| 701 |
+
}
|
| 702 |
+
}
|
| 703 |
+
|
| 704 |
+
|
| 705 |
+
/**
|
| 706 |
+
* Take a TR element and convert it to an index in aoData
|
| 707 |
+
* @param {object} oSettings dataTables settings object
|
| 708 |
+
* @param {node} n the TR element to find
|
| 709 |
+
* @returns {int} index if the node is found, null if not
|
| 710 |
+
* @memberof DataTable#oApi
|
| 711 |
+
*/
|
| 712 |
+
function _fnNodeToDataIndex( oSettings, n )
|
| 713 |
+
{
|
| 714 |
+
return (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;
|
| 715 |
+
}
|
| 716 |
+
|
| 717 |
+
|
| 718 |
+
/**
|
| 719 |
+
* Take a TD element and convert it into a column data index (not the visible index)
|
| 720 |
+
* @param {object} oSettings dataTables settings object
|
| 721 |
+
* @param {int} iRow The row number the TD/TH can be found in
|
| 722 |
+
* @param {node} n The TD/TH element to find
|
| 723 |
+
* @returns {int} index if the node is found, -1 if not
|
| 724 |
+
* @memberof DataTable#oApi
|
| 725 |
+
*/
|
| 726 |
+
function _fnNodeToColumnIndex( oSettings, iRow, n )
|
| 727 |
+
{
|
| 728 |
+
var anCells = _fnGetTdNodes( oSettings, iRow );
|
| 729 |
+
|
| 730 |
+
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 731 |
+
{
|
| 732 |
+
if ( anCells[i] === n )
|
| 733 |
+
{
|
| 734 |
+
return i;
|
| 735 |
+
}
|
| 736 |
+
}
|
| 737 |
+
return -1;
|
| 738 |
+
}
|
| 739 |
+
|
| 740 |
+
|
| 741 |
+
/**
|
| 742 |
+
* Get an array of data for a given row from the internal data cache
|
| 743 |
+
* @param {object} oSettings dataTables settings object
|
| 744 |
+
* @param {int} iRow aoData row id
|
| 745 |
+
* @param {string} sSpecific data get type ('type' 'filter' 'sort')
|
| 746 |
+
* @param {array} aiColumns Array of column indexes to get data from
|
| 747 |
+
* @returns {array} Data array
|
| 748 |
+
* @memberof DataTable#oApi
|
| 749 |
+
*/
|
| 750 |
+
function _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )
|
| 751 |
+
{
|
| 752 |
+
var out = [];
|
| 753 |
+
for ( var i=0, iLen=aiColumns.length ; i<iLen ; i++ )
|
| 754 |
+
{
|
| 755 |
+
out.push( _fnGetCellData( oSettings, iRow, aiColumns[i], sSpecific ) );
|
| 756 |
+
}
|
| 757 |
+
return out;
|
| 758 |
+
}
|
| 759 |
+
|
| 760 |
+
|
| 761 |
+
/**
|
| 762 |
+
* Get the data for a given cell from the internal cache, taking into account data mapping
|
| 763 |
+
* @param {object} oSettings dataTables settings object
|
| 764 |
+
* @param {int} iRow aoData row id
|
| 765 |
+
* @param {int} iCol Column index
|
| 766 |
+
* @param {string} sSpecific data get type ('display', 'type' 'filter' 'sort')
|
| 767 |
+
* @returns {*} Cell data
|
| 768 |
+
* @memberof DataTable#oApi
|
| 769 |
+
*/
|
| 770 |
+
function _fnGetCellData( oSettings, iRow, iCol, sSpecific )
|
| 771 |
+
{
|
| 772 |
+
var sData;
|
| 773 |
+
var oCol = oSettings.aoColumns[iCol];
|
| 774 |
+
var oData = oSettings.aoData[iRow]._aData;
|
| 775 |
+
|
| 776 |
+
if ( (sData=oCol.fnGetData( oData, sSpecific )) === undefined )
|
| 777 |
+
{
|
| 778 |
+
if ( oSettings.iDrawError != oSettings.iDraw && oCol.sDefaultContent === null )
|
| 779 |
+
{
|
| 780 |
+
_fnLog( oSettings, 0, "Requested unknown parameter "+
|
| 781 |
+
(typeof oCol.mData=='function' ? '{mData function}' : "'"+oCol.mData+"'")+
|
| 782 |
+
" from the data source for row "+iRow );
|
| 783 |
+
oSettings.iDrawError = oSettings.iDraw;
|
| 784 |
+
}
|
| 785 |
+
return oCol.sDefaultContent;
|
| 786 |
+
}
|
| 787 |
+
|
| 788 |
+
/* When the data source is null, we can use default column data */
|
| 789 |
+
if ( sData === null && oCol.sDefaultContent !== null )
|
| 790 |
+
{
|
| 791 |
+
sData = oCol.sDefaultContent;
|
| 792 |
+
}
|
| 793 |
+
else if ( typeof sData === 'function' )
|
| 794 |
+
{
|
| 795 |
+
/* If the data source is a function, then we run it and use the return */
|
| 796 |
+
return sData();
|
| 797 |
+
}
|
| 798 |
+
|
| 799 |
+
if ( sSpecific == 'display' && sData === null )
|
| 800 |
+
{
|
| 801 |
+
return '';
|
| 802 |
+
}
|
| 803 |
+
return sData;
|
| 804 |
+
}
|
| 805 |
+
|
| 806 |
+
|
| 807 |
+
/**
|
| 808 |
+
* Set the value for a specific cell, into the internal data cache
|
| 809 |
+
* @param {object} oSettings dataTables settings object
|
| 810 |
+
* @param {int} iRow aoData row id
|
| 811 |
+
* @param {int} iCol Column index
|
| 812 |
+
* @param {*} val Value to set
|
| 813 |
+
* @memberof DataTable#oApi
|
| 814 |
+
*/
|
| 815 |
+
function _fnSetCellData( oSettings, iRow, iCol, val )
|
| 816 |
+
{
|
| 817 |
+
var oCol = oSettings.aoColumns[iCol];
|
| 818 |
+
var oData = oSettings.aoData[iRow]._aData;
|
| 819 |
+
|
| 820 |
+
oCol.fnSetData( oData, val );
|
| 821 |
+
}
|
| 822 |
+
|
| 823 |
+
|
| 824 |
+
// Private variable that is used to match array syntax in the data property object
|
| 825 |
+
var __reArray = /\[.*?\]$/;
|
| 826 |
+
|
| 827 |
+
/**
|
| 828 |
+
* Return a function that can be used to get data from a source object, taking
|
| 829 |
+
* into account the ability to use nested objects as a source
|
| 830 |
+
* @param {string|int|function} mSource The data source for the object
|
| 831 |
+
* @returns {function} Data get function
|
| 832 |
+
* @memberof DataTable#oApi
|
| 833 |
+
*/
|
| 834 |
+
function _fnGetObjectDataFn( mSource )
|
| 835 |
+
{
|
| 836 |
+
if ( mSource === null )
|
| 837 |
+
{
|
| 838 |
+
/* Give an empty string for rendering / sorting etc */
|
| 839 |
+
return function (data, type) {
|
| 840 |
+
return null;
|
| 841 |
+
};
|
| 842 |
+
}
|
| 843 |
+
else if ( typeof mSource === 'function' )
|
| 844 |
+
{
|
| 845 |
+
return function (data, type, extra) {
|
| 846 |
+
return mSource( data, type, extra );
|
| 847 |
+
};
|
| 848 |
+
}
|
| 849 |
+
else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )
|
| 850 |
+
{
|
| 851 |
+
/* If there is a . in the source string then the data source is in a
|
| 852 |
+
* nested object so we loop over the data for each level to get the next
|
| 853 |
+
* level down. On each loop we test for undefined, and if found immediately
|
| 854 |
+
* return. This allows entire objects to be missing and sDefaultContent to
|
| 855 |
+
* be used if defined, rather than throwing an error
|
| 856 |
+
*/
|
| 857 |
+
var fetchData = function (data, type, src) {
|
| 858 |
+
var a = src.split('.');
|
| 859 |
+
var arrayNotation, out, innerSrc;
|
| 860 |
+
|
| 861 |
+
if ( src !== "" )
|
| 862 |
+
{
|
| 863 |
+
for ( var i=0, iLen=a.length ; i<iLen ; i++ )
|
| 864 |
+
{
|
| 865 |
+
// Check if we are dealing with an array notation request
|
| 866 |
+
arrayNotation = a[i].match(__reArray);
|
| 867 |
+
|
| 868 |
+
if ( arrayNotation ) {
|
| 869 |
+
a[i] = a[i].replace(__reArray, '');
|
| 870 |
+
|
| 871 |
+
// Condition allows simply [] to be passed in
|
| 872 |
+
if ( a[i] !== "" ) {
|
| 873 |
+
data = data[ a[i] ];
|
| 874 |
+
}
|
| 875 |
+
out = [];
|
| 876 |
+
|
| 877 |
+
// Get the remainder of the nested object to get
|
| 878 |
+
a.splice( 0, i+1 );
|
| 879 |
+
innerSrc = a.join('.');
|
| 880 |
+
|
| 881 |
+
// Traverse each entry in the array getting the properties requested
|
| 882 |
+
for ( var j=0, jLen=data.length ; j<jLen ; j++ ) {
|
| 883 |
+
out.push( fetchData( data[j], type, innerSrc ) );
|
| 884 |
+
}
|
| 885 |
+
|
| 886 |
+
// If a string is given in between the array notation indicators, that
|
| 887 |
+
// is used to join the strings together, otherwise an array is returned
|
| 888 |
+
var join = arrayNotation[0].substring(1, arrayNotation[0].length-1);
|
| 889 |
+
data = (join==="") ? out : out.join(join);
|
| 890 |
+
|
| 891 |
+
// The inner call to fetchData has already traversed through the remainder
|
| 892 |
+
// of the source requested, so we exit from the loop
|
| 893 |
+
break;
|
| 894 |
+
}
|
| 895 |
+
|
| 896 |
+
if ( data === null || data[ a[i] ] === undefined )
|
| 897 |
+
{
|
| 898 |
+
return undefined;
|
| 899 |
+
}
|
| 900 |
+
data = data[ a[i] ];
|
| 901 |
+
}
|
| 902 |
+
}
|
| 903 |
+
|
| 904 |
+
return data;
|
| 905 |
+
};
|
| 906 |
+
|
| 907 |
+
return function (data, type) {
|
| 908 |
+
return fetchData( data, type, mSource );
|
| 909 |
+
};
|
| 910 |
+
}
|
| 911 |
+
else
|
| 912 |
+
{
|
| 913 |
+
/* Array or flat object mapping */
|
| 914 |
+
return function (data, type) {
|
| 915 |
+
return data[mSource];
|
| 916 |
+
};
|
| 917 |
+
}
|
| 918 |
+
}
|
| 919 |
+
|
| 920 |
+
|
| 921 |
+
/**
|
| 922 |
+
* Return a function that can be used to set data from a source object, taking
|
| 923 |
+
* into account the ability to use nested objects as a source
|
| 924 |
+
* @param {string|int|function} mSource The data source for the object
|
| 925 |
+
* @returns {function} Data set function
|
| 926 |
+
* @memberof DataTable#oApi
|
| 927 |
+
*/
|
| 928 |
+
function _fnSetObjectDataFn( mSource )
|
| 929 |
+
{
|
| 930 |
+
if ( mSource === null )
|
| 931 |
+
{
|
| 932 |
+
/* Nothing to do when the data source is null */
|
| 933 |
+
return function (data, val) {};
|
| 934 |
+
}
|
| 935 |
+
else if ( typeof mSource === 'function' )
|
| 936 |
+
{
|
| 937 |
+
return function (data, val) {
|
| 938 |
+
mSource( data, 'set', val );
|
| 939 |
+
};
|
| 940 |
+
}
|
| 941 |
+
else if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 || mSource.indexOf('[') !== -1) )
|
| 942 |
+
{
|
| 943 |
+
/* Like the get, we need to get data from a nested object */
|
| 944 |
+
var setData = function (data, val, src) {
|
| 945 |
+
var a = src.split('.'), b;
|
| 946 |
+
var arrayNotation, o, innerSrc;
|
| 947 |
+
|
| 948 |
+
for ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )
|
| 949 |
+
{
|
| 950 |
+
// Check if we are dealing with an array notation request
|
| 951 |
+
arrayNotation = a[i].match(__reArray);
|
| 952 |
+
|
| 953 |
+
if ( arrayNotation )
|
| 954 |
+
{
|
| 955 |
+
a[i] = a[i].replace(__reArray, '');
|
| 956 |
+
data[ a[i] ] = [];
|
| 957 |
+
|
| 958 |
+
// Get the remainder of the nested object to set so we can recurse
|
| 959 |
+
b = a.slice();
|
| 960 |
+
b.splice( 0, i+1 );
|
| 961 |
+
innerSrc = b.join('.');
|
| 962 |
+
|
| 963 |
+
// Traverse each entry in the array setting the properties requested
|
| 964 |
+
for ( var j=0, jLen=val.length ; j<jLen ; j++ )
|
| 965 |
+
{
|
| 966 |
+
o = {};
|
| 967 |
+
setData( o, val[j], innerSrc );
|
| 968 |
+
data[ a[i] ].push( o );
|
| 969 |
+
}
|
| 970 |
+
|
| 971 |
+
// The inner call to setData has already traversed through the remainder
|
| 972 |
+
// of the source and has set the data, thus we can exit here
|
| 973 |
+
return;
|
| 974 |
+
}
|
| 975 |
+
|
| 976 |
+
// If the nested object doesn't currently exist - since we are
|
| 977 |
+
// trying to set the value - create it
|
| 978 |
+
if ( data[ a[i] ] === null || data[ a[i] ] === undefined )
|
| 979 |
+
{
|
| 980 |
+
data[ a[i] ] = {};
|
| 981 |
+
}
|
| 982 |
+
data = data[ a[i] ];
|
| 983 |
+
}
|
| 984 |
+
|
| 985 |
+
// If array notation is used, we just want to strip it and use the property name
|
| 986 |
+
// and assign the value. If it isn't used, then we get the result we want anyway
|
| 987 |
+
data[ a[a.length-1].replace(__reArray, '') ] = val;
|
| 988 |
+
};
|
| 989 |
+
|
| 990 |
+
return function (data, val) {
|
| 991 |
+
return setData( data, val, mSource );
|
| 992 |
+
};
|
| 993 |
+
}
|
| 994 |
+
else
|
| 995 |
+
{
|
| 996 |
+
/* Array or flat object mapping */
|
| 997 |
+
return function (data, val) {
|
| 998 |
+
data[mSource] = val;
|
| 999 |
+
};
|
| 1000 |
+
}
|
| 1001 |
+
}
|
| 1002 |
+
|
| 1003 |
+
|
| 1004 |
+
/**
|
| 1005 |
+
* Return an array with the full table data
|
| 1006 |
+
* @param {object} oSettings dataTables settings object
|
| 1007 |
+
* @returns array {array} aData Master data array
|
| 1008 |
+
* @memberof DataTable#oApi
|
| 1009 |
+
*/
|
| 1010 |
+
function _fnGetDataMaster ( oSettings )
|
| 1011 |
+
{
|
| 1012 |
+
var aData = [];
|
| 1013 |
+
var iLen = oSettings.aoData.length;
|
| 1014 |
+
for ( var i=0 ; i<iLen; i++ )
|
| 1015 |
+
{
|
| 1016 |
+
aData.push( oSettings.aoData[i]._aData );
|
| 1017 |
+
}
|
| 1018 |
+
return aData;
|
| 1019 |
+
}
|
| 1020 |
+
|
| 1021 |
+
|
| 1022 |
+
/**
|
| 1023 |
+
* Nuke the table
|
| 1024 |
+
* @param {object} oSettings dataTables settings object
|
| 1025 |
+
* @memberof DataTable#oApi
|
| 1026 |
+
*/
|
| 1027 |
+
function _fnClearTable( oSettings )
|
| 1028 |
+
{
|
| 1029 |
+
oSettings.aoData.splice( 0, oSettings.aoData.length );
|
| 1030 |
+
oSettings.aiDisplayMaster.splice( 0, oSettings.aiDisplayMaster.length );
|
| 1031 |
+
oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length );
|
| 1032 |
+
_fnCalculateEnd( oSettings );
|
| 1033 |
+
}
|
| 1034 |
+
|
| 1035 |
+
|
| 1036 |
+
/**
|
| 1037 |
+
* Take an array of integers (index array) and remove a target integer (value - not
|
| 1038 |
+
* the key!)
|
| 1039 |
+
* @param {array} a Index array to target
|
| 1040 |
+
* @param {int} iTarget value to find
|
| 1041 |
+
* @memberof DataTable#oApi
|
| 1042 |
+
*/
|
| 1043 |
+
function _fnDeleteIndex( a, iTarget )
|
| 1044 |
+
{
|
| 1045 |
+
var iTargetIndex = -1;
|
| 1046 |
+
|
| 1047 |
+
for ( var i=0, iLen=a.length ; i<iLen ; i++ )
|
| 1048 |
+
{
|
| 1049 |
+
if ( a[i] == iTarget )
|
| 1050 |
+
{
|
| 1051 |
+
iTargetIndex = i;
|
| 1052 |
+
}
|
| 1053 |
+
else if ( a[i] > iTarget )
|
| 1054 |
+
{
|
| 1055 |
+
a[i]--;
|
| 1056 |
+
}
|
| 1057 |
+
}
|
| 1058 |
+
|
| 1059 |
+
if ( iTargetIndex != -1 )
|
| 1060 |
+
{
|
| 1061 |
+
a.splice( iTargetIndex, 1 );
|
| 1062 |
+
}
|
| 1063 |
+
}
|
| 1064 |
+
|
| 1065 |
+
|
| 1066 |
+
/**
|
| 1067 |
+
* Call the developer defined fnRender function for a given cell (row/column) with
|
| 1068 |
+
* the required parameters and return the result.
|
| 1069 |
+
* @param {object} oSettings dataTables settings object
|
| 1070 |
+
* @param {int} iRow aoData index for the row
|
| 1071 |
+
* @param {int} iCol aoColumns index for the column
|
| 1072 |
+
* @returns {*} Return of the developer's fnRender function
|
| 1073 |
+
* @memberof DataTable#oApi
|
| 1074 |
+
*/
|
| 1075 |
+
function _fnRender( oSettings, iRow, iCol )
|
| 1076 |
+
{
|
| 1077 |
+
var oCol = oSettings.aoColumns[iCol];
|
| 1078 |
+
|
| 1079 |
+
return oCol.fnRender( {
|
| 1080 |
+
"iDataRow": iRow,
|
| 1081 |
+
"iDataColumn": iCol,
|
| 1082 |
+
"oSettings": oSettings,
|
| 1083 |
+
"aData": oSettings.aoData[iRow]._aData,
|
| 1084 |
+
"mDataProp": oCol.mData
|
| 1085 |
+
}, _fnGetCellData(oSettings, iRow, iCol, 'display') );
|
| 1086 |
+
}
|
| 1087 |
+
/**
|
| 1088 |
+
* Create a new TR element (and it's TD children) for a row
|
| 1089 |
+
* @param {object} oSettings dataTables settings object
|
| 1090 |
+
* @param {int} iRow Row to consider
|
| 1091 |
+
* @memberof DataTable#oApi
|
| 1092 |
+
*/
|
| 1093 |
+
function _fnCreateTr ( oSettings, iRow )
|
| 1094 |
+
{
|
| 1095 |
+
var oData = oSettings.aoData[iRow];
|
| 1096 |
+
var nTd;
|
| 1097 |
+
|
| 1098 |
+
if ( oData.nTr === null )
|
| 1099 |
+
{
|
| 1100 |
+
oData.nTr = document.createElement('tr');
|
| 1101 |
+
|
| 1102 |
+
/* Use a private property on the node to allow reserve mapping from the node
|
| 1103 |
+
* to the aoData array for fast look up
|
| 1104 |
+
*/
|
| 1105 |
+
oData.nTr._DT_RowIndex = iRow;
|
| 1106 |
+
|
| 1107 |
+
/* Special parameters can be given by the data source to be used on the row */
|
| 1108 |
+
if ( oData._aData.DT_RowId )
|
| 1109 |
+
{
|
| 1110 |
+
oData.nTr.id = oData._aData.DT_RowId;
|
| 1111 |
+
}
|
| 1112 |
+
|
| 1113 |
+
if ( oData._aData.DT_RowClass )
|
| 1114 |
+
{
|
| 1115 |
+
oData.nTr.className = oData._aData.DT_RowClass;
|
| 1116 |
+
}
|
| 1117 |
+
|
| 1118 |
+
/* Process each column */
|
| 1119 |
+
for ( var i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 1120 |
+
{
|
| 1121 |
+
var oCol = oSettings.aoColumns[i];
|
| 1122 |
+
nTd = document.createElement( oCol.sCellType );
|
| 1123 |
+
|
| 1124 |
+
/* Render if needed - if bUseRendered is true then we already have the rendered
|
| 1125 |
+
* value in the data source - so can just use that
|
| 1126 |
+
*/
|
| 1127 |
+
nTd.innerHTML = (typeof oCol.fnRender === 'function' && (!oCol.bUseRendered || oCol.mData === null)) ?
|
| 1128 |
+
_fnRender( oSettings, iRow, i ) :
|
| 1129 |
+
_fnGetCellData( oSettings, iRow, i, 'display' );
|
| 1130 |
+
|
| 1131 |
+
/* Add user defined class */
|
| 1132 |
+
if ( oCol.sClass !== null )
|
| 1133 |
+
{
|
| 1134 |
+
nTd.className = oCol.sClass;
|
| 1135 |
+
}
|
| 1136 |
+
|
| 1137 |
+
if ( oCol.bVisible )
|
| 1138 |
+
{
|
| 1139 |
+
oData.nTr.appendChild( nTd );
|
| 1140 |
+
oData._anHidden[i] = null;
|
| 1141 |
+
}
|
| 1142 |
+
else
|
| 1143 |
+
{
|
| 1144 |
+
oData._anHidden[i] = nTd;
|
| 1145 |
+
}
|
| 1146 |
+
|
| 1147 |
+
if ( oCol.fnCreatedCell )
|
| 1148 |
+
{
|
| 1149 |
+
oCol.fnCreatedCell.call( oSettings.oInstance,
|
| 1150 |
+
nTd, _fnGetCellData( oSettings, iRow, i, 'display' ), oData._aData, iRow, i
|
| 1151 |
+
);
|
| 1152 |
+
}
|
| 1153 |
+
}
|
| 1154 |
+
|
| 1155 |
+
_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [oData.nTr, oData._aData, iRow] );
|
| 1156 |
+
}
|
| 1157 |
+
}
|
| 1158 |
+
|
| 1159 |
+
|
| 1160 |
+
/**
|
| 1161 |
+
* Create the HTML header for the table
|
| 1162 |
+
* @param {object} oSettings dataTables settings object
|
| 1163 |
+
* @memberof DataTable#oApi
|
| 1164 |
+
*/
|
| 1165 |
+
function _fnBuildHead( oSettings )
|
| 1166 |
+
{
|
| 1167 |
+
var i, nTh, iLen, j, jLen;
|
| 1168 |
+
var iThs = $('th, td', oSettings.nTHead).length;
|
| 1169 |
+
var iCorrector = 0;
|
| 1170 |
+
var jqChildren;
|
| 1171 |
+
|
| 1172 |
+
/* If there is a header in place - then use it - otherwise it's going to get nuked... */
|
| 1173 |
+
if ( iThs !== 0 )
|
| 1174 |
+
{
|
| 1175 |
+
/* We've got a thead from the DOM, so remove hidden columns and apply width to vis cols */
|
| 1176 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 1177 |
+
{
|
| 1178 |
+
nTh = oSettings.aoColumns[i].nTh;
|
| 1179 |
+
nTh.setAttribute('role', 'columnheader');
|
| 1180 |
+
if ( oSettings.aoColumns[i].bSortable )
|
| 1181 |
+
{
|
| 1182 |
+
nTh.setAttribute('tabindex', oSettings.iTabIndex);
|
| 1183 |
+
nTh.setAttribute('aria-controls', oSettings.sTableId);
|
| 1184 |
+
}
|
| 1185 |
+
|
| 1186 |
+
if ( oSettings.aoColumns[i].sClass !== null )
|
| 1187 |
+
{
|
| 1188 |
+
$(nTh).addClass( oSettings.aoColumns[i].sClass );
|
| 1189 |
+
}
|
| 1190 |
+
|
| 1191 |
+
/* Set the title of the column if it is user defined (not what was auto detected) */
|
| 1192 |
+
if ( oSettings.aoColumns[i].sTitle != nTh.innerHTML )
|
| 1193 |
+
{
|
| 1194 |
+
nTh.innerHTML = oSettings.aoColumns[i].sTitle;
|
| 1195 |
+
}
|
| 1196 |
+
}
|
| 1197 |
+
}
|
| 1198 |
+
else
|
| 1199 |
+
{
|
| 1200 |
+
/* We don't have a header in the DOM - so we are going to have to create one */
|
| 1201 |
+
var nTr = document.createElement( "tr" );
|
| 1202 |
+
|
| 1203 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 1204 |
+
{
|
| 1205 |
+
nTh = oSettings.aoColumns[i].nTh;
|
| 1206 |
+
nTh.innerHTML = oSettings.aoColumns[i].sTitle;
|
| 1207 |
+
nTh.setAttribute('tabindex', '0');
|
| 1208 |
+
|
| 1209 |
+
if ( oSettings.aoColumns[i].sClass !== null )
|
| 1210 |
+
{
|
| 1211 |
+
$(nTh).addClass( oSettings.aoColumns[i].sClass );
|
| 1212 |
+
}
|
| 1213 |
+
|
| 1214 |
+
nTr.appendChild( nTh );
|
| 1215 |
+
}
|
| 1216 |
+
$(oSettings.nTHead).html( '' )[0].appendChild( nTr );
|
| 1217 |
+
_fnDetectHeader( oSettings.aoHeader, oSettings.nTHead );
|
| 1218 |
+
}
|
| 1219 |
+
|
| 1220 |
+
/* ARIA role for the rows */
|
| 1221 |
+
$(oSettings.nTHead).children('tr').attr('role', 'row');
|
| 1222 |
+
|
| 1223 |
+
/* Add the extra markup needed by jQuery UI's themes */
|
| 1224 |
+
if ( oSettings.bJUI )
|
| 1225 |
+
{
|
| 1226 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 1227 |
+
{
|
| 1228 |
+
nTh = oSettings.aoColumns[i].nTh;
|
| 1229 |
+
|
| 1230 |
+
var nDiv = document.createElement('div');
|
| 1231 |
+
nDiv.className = oSettings.oClasses.sSortJUIWrapper;
|
| 1232 |
+
$(nTh).contents().appendTo(nDiv);
|
| 1233 |
+
|
| 1234 |
+
var nSpan = document.createElement('span');
|
| 1235 |
+
nSpan.className = oSettings.oClasses.sSortIcon;
|
| 1236 |
+
nDiv.appendChild( nSpan );
|
| 1237 |
+
nTh.appendChild( nDiv );
|
| 1238 |
+
}
|
| 1239 |
+
}
|
| 1240 |
+
|
| 1241 |
+
if ( oSettings.oFeatures.bSort )
|
| 1242 |
+
{
|
| 1243 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 1244 |
+
{
|
| 1245 |
+
if ( oSettings.aoColumns[i].bSortable !== false )
|
| 1246 |
+
{
|
| 1247 |
+
_fnSortAttachListener( oSettings, oSettings.aoColumns[i].nTh, i );
|
| 1248 |
+
}
|
| 1249 |
+
else
|
| 1250 |
+
{
|
| 1251 |
+
$(oSettings.aoColumns[i].nTh).addClass( oSettings.oClasses.sSortableNone );
|
| 1252 |
+
}
|
| 1253 |
+
}
|
| 1254 |
+
}
|
| 1255 |
+
|
| 1256 |
+
/* Deal with the footer - add classes if required */
|
| 1257 |
+
if ( oSettings.oClasses.sFooterTH !== "" )
|
| 1258 |
+
{
|
| 1259 |
+
$(oSettings.nTFoot).children('tr').children('th').addClass( oSettings.oClasses.sFooterTH );
|
| 1260 |
+
}
|
| 1261 |
+
|
| 1262 |
+
/* Cache the footer elements */
|
| 1263 |
+
if ( oSettings.nTFoot !== null )
|
| 1264 |
+
{
|
| 1265 |
+
var anCells = _fnGetUniqueThs( oSettings, null, oSettings.aoFooter );
|
| 1266 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 1267 |
+
{
|
| 1268 |
+
if ( anCells[i] )
|
| 1269 |
+
{
|
| 1270 |
+
oSettings.aoColumns[i].nTf = anCells[i];
|
| 1271 |
+
if ( oSettings.aoColumns[i].sClass )
|
| 1272 |
+
{
|
| 1273 |
+
$(anCells[i]).addClass( oSettings.aoColumns[i].sClass );
|
| 1274 |
+
}
|
| 1275 |
+
}
|
| 1276 |
+
}
|
| 1277 |
+
}
|
| 1278 |
+
}
|
| 1279 |
+
|
| 1280 |
+
|
| 1281 |
+
/**
|
| 1282 |
+
* Draw the header (or footer) element based on the column visibility states. The
|
| 1283 |
+
* methodology here is to use the layout array from _fnDetectHeader, modified for
|
| 1284 |
+
* the instantaneous column visibility, to construct the new layout. The grid is
|
| 1285 |
+
* traversed over cell at a time in a rows x columns grid fashion, although each
|
| 1286 |
+
* cell insert can cover multiple elements in the grid - which is tracks using the
|
| 1287 |
+
* aApplied array. Cell inserts in the grid will only occur where there isn't
|
| 1288 |
+
* already a cell in that position.
|
| 1289 |
+
* @param {object} oSettings dataTables settings object
|
| 1290 |
+
* @param array {objects} aoSource Layout array from _fnDetectHeader
|
| 1291 |
+
* @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,
|
| 1292 |
+
* @memberof DataTable#oApi
|
| 1293 |
+
*/
|
| 1294 |
+
function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
|
| 1295 |
+
{
|
| 1296 |
+
var i, iLen, j, jLen, k, kLen, n, nLocalTr;
|
| 1297 |
+
var aoLocal = [];
|
| 1298 |
+
var aApplied = [];
|
| 1299 |
+
var iColumns = oSettings.aoColumns.length;
|
| 1300 |
+
var iRowspan, iColspan;
|
| 1301 |
+
|
| 1302 |
+
if ( bIncludeHidden === undefined )
|
| 1303 |
+
{
|
| 1304 |
+
bIncludeHidden = false;
|
| 1305 |
+
}
|
| 1306 |
+
|
| 1307 |
+
/* Make a copy of the master layout array, but without the visible columns in it */
|
| 1308 |
+
for ( i=0, iLen=aoSource.length ; i<iLen ; i++ )
|
| 1309 |
+
{
|
| 1310 |
+
aoLocal[i] = aoSource[i].slice();
|
| 1311 |
+
aoLocal[i].nTr = aoSource[i].nTr;
|
| 1312 |
+
|
| 1313 |
+
/* Remove any columns which are currently hidden */
|
| 1314 |
+
for ( j=iColumns-1 ; j>=0 ; j-- )
|
| 1315 |
+
{
|
| 1316 |
+
if ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )
|
| 1317 |
+
{
|
| 1318 |
+
aoLocal[i].splice( j, 1 );
|
| 1319 |
+
}
|
| 1320 |
+
}
|
| 1321 |
+
|
| 1322 |
+
/* Prep the applied array - it needs an element for each row */
|
| 1323 |
+
aApplied.push( [] );
|
| 1324 |
+
}
|
| 1325 |
+
|
| 1326 |
+
for ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )
|
| 1327 |
+
{
|
| 1328 |
+
nLocalTr = aoLocal[i].nTr;
|
| 1329 |
+
|
| 1330 |
+
/* All cells are going to be replaced, so empty out the row */
|
| 1331 |
+
if ( nLocalTr )
|
| 1332 |
+
{
|
| 1333 |
+
while( (n = nLocalTr.firstChild) )
|
| 1334 |
+
{
|
| 1335 |
+
nLocalTr.removeChild( n );
|
| 1336 |
+
}
|
| 1337 |
+
}
|
| 1338 |
+
|
| 1339 |
+
for ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )
|
| 1340 |
+
{
|
| 1341 |
+
iRowspan = 1;
|
| 1342 |
+
iColspan = 1;
|
| 1343 |
+
|
| 1344 |
+
/* Check to see if there is already a cell (row/colspan) covering our target
|
| 1345 |
+
* insert point. If there is, then there is nothing to do.
|
| 1346 |
+
*/
|
| 1347 |
+
if ( aApplied[i][j] === undefined )
|
| 1348 |
+
{
|
| 1349 |
+
nLocalTr.appendChild( aoLocal[i][j].cell );
|
| 1350 |
+
aApplied[i][j] = 1;
|
| 1351 |
+
|
| 1352 |
+
/* Expand the cell to cover as many rows as needed */
|
| 1353 |
+
while ( aoLocal[i+iRowspan] !== undefined &&
|
| 1354 |
+
aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )
|
| 1355 |
+
{
|
| 1356 |
+
aApplied[i+iRowspan][j] = 1;
|
| 1357 |
+
iRowspan++;
|
| 1358 |
+
}
|
| 1359 |
+
|
| 1360 |
+
/* Expand the cell to cover as many columns as needed */
|
| 1361 |
+
while ( aoLocal[i][j+iColspan] !== undefined &&
|
| 1362 |
+
aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )
|
| 1363 |
+
{
|
| 1364 |
+
/* Must update the applied array over the rows for the columns */
|
| 1365 |
+
for ( k=0 ; k<iRowspan ; k++ )
|
| 1366 |
+
{
|
| 1367 |
+
aApplied[i+k][j+iColspan] = 1;
|
| 1368 |
+
}
|
| 1369 |
+
iColspan++;
|
| 1370 |
+
}
|
| 1371 |
+
|
| 1372 |
+
/* Do the actual expansion in the DOM */
|
| 1373 |
+
aoLocal[i][j].cell.rowSpan = iRowspan;
|
| 1374 |
+
aoLocal[i][j].cell.colSpan = iColspan;
|
| 1375 |
+
}
|
| 1376 |
+
}
|
| 1377 |
+
}
|
| 1378 |
+
}
|
| 1379 |
+
|
| 1380 |
+
|
| 1381 |
+
/**
|
| 1382 |
+
* Insert the required TR nodes into the table for display
|
| 1383 |
+
* @param {object} oSettings dataTables settings object
|
| 1384 |
+
* @memberof DataTable#oApi
|
| 1385 |
+
*/
|
| 1386 |
+
function _fnDraw( oSettings )
|
| 1387 |
+
{
|
| 1388 |
+
/* Provide a pre-callback function which can be used to cancel the draw is false is returned */
|
| 1389 |
+
var aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );
|
| 1390 |
+
if ( $.inArray( false, aPreDraw ) !== -1 )
|
| 1391 |
+
{
|
| 1392 |
+
_fnProcessingDisplay( oSettings, false );
|
| 1393 |
+
return;
|
| 1394 |
+
}
|
| 1395 |
+
|
| 1396 |
+
var i, iLen, n;
|
| 1397 |
+
var anRows = [];
|
| 1398 |
+
var iRowCount = 0;
|
| 1399 |
+
var iStripes = oSettings.asStripeClasses.length;
|
| 1400 |
+
var iOpenRows = oSettings.aoOpenRows.length;
|
| 1401 |
+
|
| 1402 |
+
oSettings.bDrawing = true;
|
| 1403 |
+
|
| 1404 |
+
/* Check and see if we have an initial draw position from state saving */
|
| 1405 |
+
if ( oSettings.iInitDisplayStart !== undefined && oSettings.iInitDisplayStart != -1 )
|
| 1406 |
+
{
|
| 1407 |
+
if ( oSettings.oFeatures.bServerSide )
|
| 1408 |
+
{
|
| 1409 |
+
oSettings._iDisplayStart = oSettings.iInitDisplayStart;
|
| 1410 |
+
}
|
| 1411 |
+
else
|
| 1412 |
+
{
|
| 1413 |
+
oSettings._iDisplayStart = (oSettings.iInitDisplayStart >= oSettings.fnRecordsDisplay()) ?
|
| 1414 |
+
0 : oSettings.iInitDisplayStart;
|
| 1415 |
+
}
|
| 1416 |
+
oSettings.iInitDisplayStart = -1;
|
| 1417 |
+
_fnCalculateEnd( oSettings );
|
| 1418 |
+
}
|
| 1419 |
+
|
| 1420 |
+
/* Server-side processing draw intercept */
|
| 1421 |
+
if ( oSettings.bDeferLoading )
|
| 1422 |
+
{
|
| 1423 |
+
oSettings.bDeferLoading = false;
|
| 1424 |
+
oSettings.iDraw++;
|
| 1425 |
+
}
|
| 1426 |
+
else if ( !oSettings.oFeatures.bServerSide )
|
| 1427 |
+
{
|
| 1428 |
+
oSettings.iDraw++;
|
| 1429 |
+
}
|
| 1430 |
+
else if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )
|
| 1431 |
+
{
|
| 1432 |
+
return;
|
| 1433 |
+
}
|
| 1434 |
+
|
| 1435 |
+
if ( oSettings.aiDisplay.length !== 0 )
|
| 1436 |
+
{
|
| 1437 |
+
var iStart = oSettings._iDisplayStart;
|
| 1438 |
+
var iEnd = oSettings._iDisplayEnd;
|
| 1439 |
+
|
| 1440 |
+
if ( oSettings.oFeatures.bServerSide )
|
| 1441 |
+
{
|
| 1442 |
+
iStart = 0;
|
| 1443 |
+
iEnd = oSettings.aoData.length;
|
| 1444 |
+
}
|
| 1445 |
+
|
| 1446 |
+
for ( var j=iStart ; j<iEnd ; j++ )
|
| 1447 |
+
{
|
| 1448 |
+
var aoData = oSettings.aoData[ oSettings.aiDisplay[j] ];
|
| 1449 |
+
if ( aoData.nTr === null )
|
| 1450 |
+
{
|
| 1451 |
+
_fnCreateTr( oSettings, oSettings.aiDisplay[j] );
|
| 1452 |
+
}
|
| 1453 |
+
|
| 1454 |
+
var nRow = aoData.nTr;
|
| 1455 |
+
|
| 1456 |
+
/* Remove the old striping classes and then add the new one */
|
| 1457 |
+
if ( iStripes !== 0 )
|
| 1458 |
+
{
|
| 1459 |
+
var sStripe = oSettings.asStripeClasses[ iRowCount % iStripes ];
|
| 1460 |
+
if ( aoData._sRowStripe != sStripe )
|
| 1461 |
+
{
|
| 1462 |
+
$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );
|
| 1463 |
+
aoData._sRowStripe = sStripe;
|
| 1464 |
+
}
|
| 1465 |
+
}
|
| 1466 |
+
|
| 1467 |
+
/* Row callback functions - might want to manipulate the row */
|
| 1468 |
+
_fnCallbackFire( oSettings, 'aoRowCallback', null,
|
| 1469 |
+
[nRow, oSettings.aoData[ oSettings.aiDisplay[j] ]._aData, iRowCount, j] );
|
| 1470 |
+
|
| 1471 |
+
anRows.push( nRow );
|
| 1472 |
+
iRowCount++;
|
| 1473 |
+
|
| 1474 |
+
/* If there is an open row - and it is attached to this parent - attach it on redraw */
|
| 1475 |
+
if ( iOpenRows !== 0 )
|
| 1476 |
+
{
|
| 1477 |
+
for ( var k=0 ; k<iOpenRows ; k++ )
|
| 1478 |
+
{
|
| 1479 |
+
if ( nRow == oSettings.aoOpenRows[k].nParent )
|
| 1480 |
+
{
|
| 1481 |
+
anRows.push( oSettings.aoOpenRows[k].nTr );
|
| 1482 |
+
break;
|
| 1483 |
+
}
|
| 1484 |
+
}
|
| 1485 |
+
}
|
| 1486 |
+
}
|
| 1487 |
+
}
|
| 1488 |
+
else
|
| 1489 |
+
{
|
| 1490 |
+
/* Table is empty - create a row with an empty message in it */
|
| 1491 |
+
anRows[ 0 ] = document.createElement( 'tr' );
|
| 1492 |
+
|
| 1493 |
+
if ( oSettings.asStripeClasses[0] )
|
| 1494 |
+
{
|
| 1495 |
+
anRows[ 0 ].className = oSettings.asStripeClasses[0];
|
| 1496 |
+
}
|
| 1497 |
+
|
| 1498 |
+
var oLang = oSettings.oLanguage;
|
| 1499 |
+
var sZero = oLang.sZeroRecords;
|
| 1500 |
+
if ( oSettings.iDraw == 1 && oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
|
| 1501 |
+
{
|
| 1502 |
+
sZero = oLang.sLoadingRecords;
|
| 1503 |
+
}
|
| 1504 |
+
else if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )
|
| 1505 |
+
{
|
| 1506 |
+
sZero = oLang.sEmptyTable;
|
| 1507 |
+
}
|
| 1508 |
+
|
| 1509 |
+
var nTd = document.createElement( 'td' );
|
| 1510 |
+
nTd.setAttribute( 'valign', "top" );
|
| 1511 |
+
nTd.colSpan = _fnVisbleColumns( oSettings );
|
| 1512 |
+
nTd.className = oSettings.oClasses.sRowEmpty;
|
| 1513 |
+
nTd.innerHTML = _fnInfoMacros( oSettings, sZero );
|
| 1514 |
+
|
| 1515 |
+
anRows[ iRowCount ].appendChild( nTd );
|
| 1516 |
+
}
|
| 1517 |
+
|
| 1518 |
+
/* Header and footer callbacks */
|
| 1519 |
+
_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],
|
| 1520 |
+
_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
|
| 1521 |
+
|
| 1522 |
+
_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],
|
| 1523 |
+
_fnGetDataMaster( oSettings ), oSettings._iDisplayStart, oSettings.fnDisplayEnd(), oSettings.aiDisplay ] );
|
| 1524 |
+
|
| 1525 |
+
/*
|
| 1526 |
+
* Need to remove any old row from the display - note we can't just empty the tbody using
|
| 1527 |
+
* $().html('') since this will unbind the jQuery event handlers (even although the node
|
| 1528 |
+
* still exists!) - equally we can't use innerHTML, since IE throws an exception.
|
| 1529 |
+
*/
|
| 1530 |
+
var
|
| 1531 |
+
nAddFrag = document.createDocumentFragment(),
|
| 1532 |
+
nRemoveFrag = document.createDocumentFragment(),
|
| 1533 |
+
nBodyPar, nTrs;
|
| 1534 |
+
|
| 1535 |
+
if ( oSettings.nTBody )
|
| 1536 |
+
{
|
| 1537 |
+
nBodyPar = oSettings.nTBody.parentNode;
|
| 1538 |
+
nRemoveFrag.appendChild( oSettings.nTBody );
|
| 1539 |
+
|
| 1540 |
+
/* When doing infinite scrolling, only remove child rows when sorting, filtering or start
|
| 1541 |
+
* up. When not infinite scroll, always do it.
|
| 1542 |
+
*/
|
| 1543 |
+
if ( !oSettings.oScroll.bInfinite || !oSettings._bInitComplete ||
|
| 1544 |
+
oSettings.bSorted || oSettings.bFiltered )
|
| 1545 |
+
{
|
| 1546 |
+
while( (n = oSettings.nTBody.firstChild) )
|
| 1547 |
+
{
|
| 1548 |
+
oSettings.nTBody.removeChild( n );
|
| 1549 |
+
}
|
| 1550 |
+
}
|
| 1551 |
+
|
| 1552 |
+
/* Put the draw table into the dom */
|
| 1553 |
+
for ( i=0, iLen=anRows.length ; i<iLen ; i++ )
|
| 1554 |
+
{
|
| 1555 |
+
nAddFrag.appendChild( anRows[i] );
|
| 1556 |
+
}
|
| 1557 |
+
|
| 1558 |
+
oSettings.nTBody.appendChild( nAddFrag );
|
| 1559 |
+
if ( nBodyPar !== null )
|
| 1560 |
+
{
|
| 1561 |
+
nBodyPar.appendChild( oSettings.nTBody );
|
| 1562 |
+
}
|
| 1563 |
+
}
|
| 1564 |
+
|
| 1565 |
+
/* Call all required callback functions for the end of a draw */
|
| 1566 |
+
_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );
|
| 1567 |
+
|
| 1568 |
+
/* Draw is complete, sorting and filtering must be as well */
|
| 1569 |
+
oSettings.bSorted = false;
|
| 1570 |
+
oSettings.bFiltered = false;
|
| 1571 |
+
oSettings.bDrawing = false;
|
| 1572 |
+
|
| 1573 |
+
if ( oSettings.oFeatures.bServerSide )
|
| 1574 |
+
{
|
| 1575 |
+
_fnProcessingDisplay( oSettings, false );
|
| 1576 |
+
if ( !oSettings._bInitComplete )
|
| 1577 |
+
{
|
| 1578 |
+
_fnInitComplete( oSettings );
|
| 1579 |
+
}
|
| 1580 |
+
}
|
| 1581 |
+
}
|
| 1582 |
+
|
| 1583 |
+
|
| 1584 |
+
/**
|
| 1585 |
+
* Redraw the table - taking account of the various features which are enabled
|
| 1586 |
+
* @param {object} oSettings dataTables settings object
|
| 1587 |
+
* @memberof DataTable#oApi
|
| 1588 |
+
*/
|
| 1589 |
+
function _fnReDraw( oSettings )
|
| 1590 |
+
{
|
| 1591 |
+
if ( oSettings.oFeatures.bSort )
|
| 1592 |
+
{
|
| 1593 |
+
/* Sorting will refilter and draw for us */
|
| 1594 |
+
_fnSort( oSettings, oSettings.oPreviousSearch );
|
| 1595 |
+
}
|
| 1596 |
+
else if ( oSettings.oFeatures.bFilter )
|
| 1597 |
+
{
|
| 1598 |
+
/* Filtering will redraw for us */
|
| 1599 |
+
_fnFilterComplete( oSettings, oSettings.oPreviousSearch );
|
| 1600 |
+
}
|
| 1601 |
+
else
|
| 1602 |
+
{
|
| 1603 |
+
_fnCalculateEnd( oSettings );
|
| 1604 |
+
_fnDraw( oSettings );
|
| 1605 |
+
}
|
| 1606 |
+
}
|
| 1607 |
+
|
| 1608 |
+
|
| 1609 |
+
/**
|
| 1610 |
+
* Add the options to the page HTML for the table
|
| 1611 |
+
* @param {object} oSettings dataTables settings object
|
| 1612 |
+
* @memberof DataTable#oApi
|
| 1613 |
+
*/
|
| 1614 |
+
function _fnAddOptionsHtml ( oSettings )
|
| 1615 |
+
{
|
| 1616 |
+
/*
|
| 1617 |
+
* Create a temporary, empty, div which we can later on replace with what we have generated
|
| 1618 |
+
* we do it this way to rendering the 'options' html offline - speed :-)
|
| 1619 |
+
*/
|
| 1620 |
+
var nHolding = $('<div></div>')[0];
|
| 1621 |
+
oSettings.nTable.parentNode.insertBefore( nHolding, oSettings.nTable );
|
| 1622 |
+
|
| 1623 |
+
/*
|
| 1624 |
+
* All DataTables are wrapped in a div
|
| 1625 |
+
*/
|
| 1626 |
+
oSettings.nTableWrapper = $('<div id="'+oSettings.sTableId+'_wrapper" class="'+oSettings.oClasses.sWrapper+'" role="grid"></div>')[0];
|
| 1627 |
+
oSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;
|
| 1628 |
+
|
| 1629 |
+
/* Track where we want to insert the option */
|
| 1630 |
+
var nInsertNode = oSettings.nTableWrapper;
|
| 1631 |
+
|
| 1632 |
+
/* Loop over the user set positioning and place the elements as needed */
|
| 1633 |
+
var aDom = oSettings.sDom.split('');
|
| 1634 |
+
var nTmp, iPushFeature, cOption, nNewNode, cNext, sAttr, j;
|
| 1635 |
+
for ( var i=0 ; i<aDom.length ; i++ )
|
| 1636 |
+
{
|
| 1637 |
+
iPushFeature = 0;
|
| 1638 |
+
cOption = aDom[i];
|
| 1639 |
+
|
| 1640 |
+
if ( cOption == '<' )
|
| 1641 |
+
{
|
| 1642 |
+
/* New container div */
|
| 1643 |
+
nNewNode = $('<div></div>')[0];
|
| 1644 |
+
|
| 1645 |
+
/* Check to see if we should append an id and/or a class name to the container */
|
| 1646 |
+
cNext = aDom[i+1];
|
| 1647 |
+
if ( cNext == "'" || cNext == '"' )
|
| 1648 |
+
{
|
| 1649 |
+
sAttr = "";
|
| 1650 |
+
j = 2;
|
| 1651 |
+
while ( aDom[i+j] != cNext )
|
| 1652 |
+
{
|
| 1653 |
+
sAttr += aDom[i+j];
|
| 1654 |
+
j++;
|
| 1655 |
+
}
|
| 1656 |
+
|
| 1657 |
+
/* Replace jQuery UI constants */
|
| 1658 |
+
if ( sAttr == "H" )
|
| 1659 |
+
{
|
| 1660 |
+
sAttr = oSettings.oClasses.sJUIHeader;
|
| 1661 |
+
}
|
| 1662 |
+
else if ( sAttr == "F" )
|
| 1663 |
+
{
|
| 1664 |
+
sAttr = oSettings.oClasses.sJUIFooter;
|
| 1665 |
+
}
|
| 1666 |
+
|
| 1667 |
+
/* The attribute can be in the format of "#id.class", "#id" or "class" This logic
|
| 1668 |
+
* breaks the string into parts and applies them as needed
|
| 1669 |
+
*/
|
| 1670 |
+
if ( sAttr.indexOf('.') != -1 )
|
| 1671 |
+
{
|
| 1672 |
+
var aSplit = sAttr.split('.');
|
| 1673 |
+
nNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);
|
| 1674 |
+
nNewNode.className = aSplit[1];
|
| 1675 |
+
}
|
| 1676 |
+
else if ( sAttr.charAt(0) == "#" )
|
| 1677 |
+
{
|
| 1678 |
+
nNewNode.id = sAttr.substr(1, sAttr.length-1);
|
| 1679 |
+
}
|
| 1680 |
+
else
|
| 1681 |
+
{
|
| 1682 |
+
nNewNode.className = sAttr;
|
| 1683 |
+
}
|
| 1684 |
+
|
| 1685 |
+
i += j; /* Move along the position array */
|
| 1686 |
+
}
|
| 1687 |
+
|
| 1688 |
+
nInsertNode.appendChild( nNewNode );
|
| 1689 |
+
nInsertNode = nNewNode;
|
| 1690 |
+
}
|
| 1691 |
+
else if ( cOption == '>' )
|
| 1692 |
+
{
|
| 1693 |
+
/* End container div */
|
| 1694 |
+
nInsertNode = nInsertNode.parentNode;
|
| 1695 |
+
}
|
| 1696 |
+
else if ( cOption == 'l' && oSettings.oFeatures.bPaginate && oSettings.oFeatures.bLengthChange )
|
| 1697 |
+
{
|
| 1698 |
+
/* Length */
|
| 1699 |
+
nTmp = _fnFeatureHtmlLength( oSettings );
|
| 1700 |
+
iPushFeature = 1;
|
| 1701 |
+
}
|
| 1702 |
+
else if ( cOption == 'f' && oSettings.oFeatures.bFilter )
|
| 1703 |
+
{
|
| 1704 |
+
/* Filter */
|
| 1705 |
+
nTmp = _fnFeatureHtmlFilter( oSettings );
|
| 1706 |
+
iPushFeature = 1;
|
| 1707 |
+
}
|
| 1708 |
+
else if ( cOption == 'r' && oSettings.oFeatures.bProcessing )
|
| 1709 |
+
{
|
| 1710 |
+
/* pRocessing */
|
| 1711 |
+
nTmp = _fnFeatureHtmlProcessing( oSettings );
|
| 1712 |
+
iPushFeature = 1;
|
| 1713 |
+
}
|
| 1714 |
+
else if ( cOption == 't' )
|
| 1715 |
+
{
|
| 1716 |
+
/* Table */
|
| 1717 |
+
nTmp = _fnFeatureHtmlTable( oSettings );
|
| 1718 |
+
iPushFeature = 1;
|
| 1719 |
+
}
|
| 1720 |
+
else if ( cOption == 'i' && oSettings.oFeatures.bInfo )
|
| 1721 |
+
{
|
| 1722 |
+
/* Info */
|
| 1723 |
+
nTmp = _fnFeatureHtmlInfo( oSettings );
|
| 1724 |
+
iPushFeature = 1;
|
| 1725 |
+
}
|
| 1726 |
+
else if ( cOption == 'p' && oSettings.oFeatures.bPaginate )
|
| 1727 |
+
{
|
| 1728 |
+
/* Pagination */
|
| 1729 |
+
nTmp = _fnFeatureHtmlPaginate( oSettings );
|
| 1730 |
+
iPushFeature = 1;
|
| 1731 |
+
}
|
| 1732 |
+
else if ( DataTable.ext.aoFeatures.length !== 0 )
|
| 1733 |
+
{
|
| 1734 |
+
/* Plug-in features */
|
| 1735 |
+
var aoFeatures = DataTable.ext.aoFeatures;
|
| 1736 |
+
for ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )
|
| 1737 |
+
{
|
| 1738 |
+
if ( cOption == aoFeatures[k].cFeature )
|
| 1739 |
+
{
|
| 1740 |
+
nTmp = aoFeatures[k].fnInit( oSettings );
|
| 1741 |
+
if ( nTmp )
|
| 1742 |
+
{
|
| 1743 |
+
iPushFeature = 1;
|
| 1744 |
+
}
|
| 1745 |
+
break;
|
| 1746 |
+
}
|
| 1747 |
+
}
|
| 1748 |
+
}
|
| 1749 |
+
|
| 1750 |
+
/* Add to the 2D features array */
|
| 1751 |
+
if ( iPushFeature == 1 && nTmp !== null )
|
| 1752 |
+
{
|
| 1753 |
+
if ( typeof oSettings.aanFeatures[cOption] !== 'object' )
|
| 1754 |
+
{
|
| 1755 |
+
oSettings.aanFeatures[cOption] = [];
|
| 1756 |
+
}
|
| 1757 |
+
oSettings.aanFeatures[cOption].push( nTmp );
|
| 1758 |
+
nInsertNode.appendChild( nTmp );
|
| 1759 |
+
}
|
| 1760 |
+
}
|
| 1761 |
+
|
| 1762 |
+
/* Built our DOM structure - replace the holding div with what we want */
|
| 1763 |
+
nHolding.parentNode.replaceChild( oSettings.nTableWrapper, nHolding );
|
| 1764 |
+
}
|
| 1765 |
+
|
| 1766 |
+
|
| 1767 |
+
/**
|
| 1768 |
+
* Use the DOM source to create up an array of header cells. The idea here is to
|
| 1769 |
+
* create a layout grid (array) of rows x columns, which contains a reference
|
| 1770 |
+
* to the cell that that point in the grid (regardless of col/rowspan), such that
|
| 1771 |
+
* any column / row could be removed and the new grid constructed
|
| 1772 |
+
* @param array {object} aLayout Array to store the calculated layout in
|
| 1773 |
+
* @param {node} nThead The header/footer element for the table
|
| 1774 |
+
* @memberof DataTable#oApi
|
| 1775 |
+
*/
|
| 1776 |
+
function _fnDetectHeader ( aLayout, nThead )
|
| 1777 |
+
{
|
| 1778 |
+
var nTrs = $(nThead).children('tr');
|
| 1779 |
+
var nTr, nCell;
|
| 1780 |
+
var i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;
|
| 1781 |
+
var bUnique;
|
| 1782 |
+
var fnShiftCol = function ( a, i, j ) {
|
| 1783 |
+
var k = a[i];
|
| 1784 |
+
while ( k[j] ) {
|
| 1785 |
+
j++;
|
| 1786 |
+
}
|
| 1787 |
+
return j;
|
| 1788 |
+
};
|
| 1789 |
+
|
| 1790 |
+
aLayout.splice( 0, aLayout.length );
|
| 1791 |
+
|
| 1792 |
+
/* We know how many rows there are in the layout - so prep it */
|
| 1793 |
+
for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
|
| 1794 |
+
{
|
| 1795 |
+
aLayout.push( [] );
|
| 1796 |
+
}
|
| 1797 |
+
|
| 1798 |
+
/* Calculate a layout array */
|
| 1799 |
+
for ( i=0, iLen=nTrs.length ; i<iLen ; i++ )
|
| 1800 |
+
{
|
| 1801 |
+
nTr = nTrs[i];
|
| 1802 |
+
iColumn = 0;
|
| 1803 |
+
|
| 1804 |
+
/* For every cell in the row... */
|
| 1805 |
+
nCell = nTr.firstChild;
|
| 1806 |
+
while ( nCell ) {
|
| 1807 |
+
if ( nCell.nodeName.toUpperCase() == "TD" ||
|
| 1808 |
+
nCell.nodeName.toUpperCase() == "TH" )
|
| 1809 |
+
{
|
| 1810 |
+
/* Get the col and rowspan attributes from the DOM and sanitise them */
|
| 1811 |
+
iColspan = nCell.getAttribute('colspan') * 1;
|
| 1812 |
+
iRowspan = nCell.getAttribute('rowspan') * 1;
|
| 1813 |
+
iColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;
|
| 1814 |
+
iRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;
|
| 1815 |
+
|
| 1816 |
+
/* There might be colspan cells already in this row, so shift our target
|
| 1817 |
+
* accordingly
|
| 1818 |
+
*/
|
| 1819 |
+
iColShifted = fnShiftCol( aLayout, i, iColumn );
|
| 1820 |
+
|
| 1821 |
+
/* Cache calculation for unique columns */
|
| 1822 |
+
bUnique = iColspan === 1 ? true : false;
|
| 1823 |
+
|
| 1824 |
+
/* If there is col / rowspan, copy the information into the layout grid */
|
| 1825 |
+
for ( l=0 ; l<iColspan ; l++ )
|
| 1826 |
+
{
|
| 1827 |
+
for ( k=0 ; k<iRowspan ; k++ )
|
| 1828 |
+
{
|
| 1829 |
+
aLayout[i+k][iColShifted+l] = {
|
| 1830 |
+
"cell": nCell,
|
| 1831 |
+
"unique": bUnique
|
| 1832 |
+
};
|
| 1833 |
+
aLayout[i+k].nTr = nTr;
|
| 1834 |
+
}
|
| 1835 |
+
}
|
| 1836 |
+
}
|
| 1837 |
+
nCell = nCell.nextSibling;
|
| 1838 |
+
}
|
| 1839 |
+
}
|
| 1840 |
+
}
|
| 1841 |
+
|
| 1842 |
+
|
| 1843 |
+
/**
|
| 1844 |
+
* Get an array of unique th elements, one for each column
|
| 1845 |
+
* @param {object} oSettings dataTables settings object
|
| 1846 |
+
* @param {node} nHeader automatically detect the layout from this node - optional
|
| 1847 |
+
* @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional
|
| 1848 |
+
* @returns array {node} aReturn list of unique th's
|
| 1849 |
+
* @memberof DataTable#oApi
|
| 1850 |
+
*/
|
| 1851 |
+
function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
|
| 1852 |
+
{
|
| 1853 |
+
var aReturn = [];
|
| 1854 |
+
if ( !aLayout )
|
| 1855 |
+
{
|
| 1856 |
+
aLayout = oSettings.aoHeader;
|
| 1857 |
+
if ( nHeader )
|
| 1858 |
+
{
|
| 1859 |
+
aLayout = [];
|
| 1860 |
+
_fnDetectHeader( aLayout, nHeader );
|
| 1861 |
+
}
|
| 1862 |
+
}
|
| 1863 |
+
|
| 1864 |
+
for ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )
|
| 1865 |
+
{
|
| 1866 |
+
for ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )
|
| 1867 |
+
{
|
| 1868 |
+
if ( aLayout[i][j].unique &&
|
| 1869 |
+
(!aReturn[j] || !oSettings.bSortCellsTop) )
|
| 1870 |
+
{
|
| 1871 |
+
aReturn[j] = aLayout[i][j].cell;
|
| 1872 |
+
}
|
| 1873 |
+
}
|
| 1874 |
+
}
|
| 1875 |
+
|
| 1876 |
+
return aReturn;
|
| 1877 |
+
}
|
| 1878 |
+
|
| 1879 |
+
|
| 1880 |
+
|
| 1881 |
+
/**
|
| 1882 |
+
* Update the table using an Ajax call
|
| 1883 |
+
* @param {object} oSettings dataTables settings object
|
| 1884 |
+
* @returns {boolean} Block the table drawing or not
|
| 1885 |
+
* @memberof DataTable#oApi
|
| 1886 |
+
*/
|
| 1887 |
+
function _fnAjaxUpdate( oSettings )
|
| 1888 |
+
{
|
| 1889 |
+
if ( oSettings.bAjaxDataGet )
|
| 1890 |
+
{
|
| 1891 |
+
oSettings.iDraw++;
|
| 1892 |
+
_fnProcessingDisplay( oSettings, true );
|
| 1893 |
+
var iColumns = oSettings.aoColumns.length;
|
| 1894 |
+
var aoData = _fnAjaxParameters( oSettings );
|
| 1895 |
+
_fnServerParams( oSettings, aoData );
|
| 1896 |
+
|
| 1897 |
+
oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData,
|
| 1898 |
+
function(json) {
|
| 1899 |
+
_fnAjaxUpdateDraw( oSettings, json );
|
| 1900 |
+
}, oSettings );
|
| 1901 |
+
return false;
|
| 1902 |
+
}
|
| 1903 |
+
else
|
| 1904 |
+
{
|
| 1905 |
+
return true;
|
| 1906 |
+
}
|
| 1907 |
+
}
|
| 1908 |
+
|
| 1909 |
+
|
| 1910 |
+
/**
|
| 1911 |
+
* Build up the parameters in an object needed for a server-side processing request
|
| 1912 |
+
* @param {object} oSettings dataTables settings object
|
| 1913 |
+
* @returns {bool} block the table drawing or not
|
| 1914 |
+
* @memberof DataTable#oApi
|
| 1915 |
+
*/
|
| 1916 |
+
function _fnAjaxParameters( oSettings )
|
| 1917 |
+
{
|
| 1918 |
+
var iColumns = oSettings.aoColumns.length;
|
| 1919 |
+
var aoData = [], mDataProp, aaSort, aDataSort;
|
| 1920 |
+
var i, j;
|
| 1921 |
+
|
| 1922 |
+
aoData.push( { "name": "sEcho", "value": oSettings.iDraw } );
|
| 1923 |
+
aoData.push( { "name": "iColumns", "value": iColumns } );
|
| 1924 |
+
aoData.push( { "name": "sColumns", "value": _fnColumnOrdering(oSettings) } );
|
| 1925 |
+
aoData.push( { "name": "iDisplayStart", "value": oSettings._iDisplayStart } );
|
| 1926 |
+
aoData.push( { "name": "iDisplayLength", "value": oSettings.oFeatures.bPaginate !== false ?
|
| 1927 |
+
oSettings._iDisplayLength : -1 } );
|
| 1928 |
+
|
| 1929 |
+
for ( i=0 ; i<iColumns ; i++ )
|
| 1930 |
+
{
|
| 1931 |
+
mDataProp = oSettings.aoColumns[i].mData;
|
| 1932 |
+
aoData.push( { "name": "mDataProp_"+i, "value": typeof(mDataProp)==="function" ? 'function' : mDataProp } );
|
| 1933 |
+
}
|
| 1934 |
+
|
| 1935 |
+
/* Filtering */
|
| 1936 |
+
if ( oSettings.oFeatures.bFilter !== false )
|
| 1937 |
+
{
|
| 1938 |
+
aoData.push( { "name": "sSearch", "value": oSettings.oPreviousSearch.sSearch } );
|
| 1939 |
+
aoData.push( { "name": "bRegex", "value": oSettings.oPreviousSearch.bRegex } );
|
| 1940 |
+
for ( i=0 ; i<iColumns ; i++ )
|
| 1941 |
+
{
|
| 1942 |
+
aoData.push( { "name": "sSearch_"+i, "value": oSettings.aoPreSearchCols[i].sSearch } );
|
| 1943 |
+
aoData.push( { "name": "bRegex_"+i, "value": oSettings.aoPreSearchCols[i].bRegex } );
|
| 1944 |
+
aoData.push( { "name": "bSearchable_"+i, "value": oSettings.aoColumns[i].bSearchable } );
|
| 1945 |
+
}
|
| 1946 |
+
}
|
| 1947 |
+
|
| 1948 |
+
/* Sorting */
|
| 1949 |
+
if ( oSettings.oFeatures.bSort !== false )
|
| 1950 |
+
{
|
| 1951 |
+
var iCounter = 0;
|
| 1952 |
+
|
| 1953 |
+
aaSort = ( oSettings.aaSortingFixed !== null ) ?
|
| 1954 |
+
oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
|
| 1955 |
+
oSettings.aaSorting.slice();
|
| 1956 |
+
|
| 1957 |
+
for ( i=0 ; i<aaSort.length ; i++ )
|
| 1958 |
+
{
|
| 1959 |
+
aDataSort = oSettings.aoColumns[ aaSort[i][0] ].aDataSort;
|
| 1960 |
+
|
| 1961 |
+
for ( j=0 ; j<aDataSort.length ; j++ )
|
| 1962 |
+
{
|
| 1963 |
+
aoData.push( { "name": "iSortCol_"+iCounter, "value": aDataSort[j] } );
|
| 1964 |
+
aoData.push( { "name": "sSortDir_"+iCounter, "value": aaSort[i][1] } );
|
| 1965 |
+
iCounter++;
|
| 1966 |
+
}
|
| 1967 |
+
}
|
| 1968 |
+
aoData.push( { "name": "iSortingCols", "value": iCounter } );
|
| 1969 |
+
|
| 1970 |
+
for ( i=0 ; i<iColumns ; i++ )
|
| 1971 |
+
{
|
| 1972 |
+
aoData.push( { "name": "bSortable_"+i, "value": oSettings.aoColumns[i].bSortable } );
|
| 1973 |
+
}
|
| 1974 |
+
}
|
| 1975 |
+
|
| 1976 |
+
return aoData;
|
| 1977 |
+
}
|
| 1978 |
+
|
| 1979 |
+
|
| 1980 |
+
/**
|
| 1981 |
+
* Add Ajax parameters from plug-ins
|
| 1982 |
+
* @param {object} oSettings dataTables settings object
|
| 1983 |
+
* @param array {objects} aoData name/value pairs to send to the server
|
| 1984 |
+
* @memberof DataTable#oApi
|
| 1985 |
+
*/
|
| 1986 |
+
function _fnServerParams( oSettings, aoData )
|
| 1987 |
+
{
|
| 1988 |
+
_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [aoData] );
|
| 1989 |
+
}
|
| 1990 |
+
|
| 1991 |
+
|
| 1992 |
+
/**
|
| 1993 |
+
* Data the data from the server (nuking the old) and redraw the table
|
| 1994 |
+
* @param {object} oSettings dataTables settings object
|
| 1995 |
+
* @param {object} json json data return from the server.
|
| 1996 |
+
* @param {string} json.sEcho Tracking flag for DataTables to match requests
|
| 1997 |
+
* @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering
|
| 1998 |
+
* @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering
|
| 1999 |
+
* @param {array} json.aaData The data to display on this page
|
| 2000 |
+
* @param {string} [json.sColumns] Column ordering (sName, comma separated)
|
| 2001 |
+
* @memberof DataTable#oApi
|
| 2002 |
+
*/
|
| 2003 |
+
function _fnAjaxUpdateDraw ( oSettings, json )
|
| 2004 |
+
{
|
| 2005 |
+
if ( json.sEcho !== undefined )
|
| 2006 |
+
{
|
| 2007 |
+
/* Protect against old returns over-writing a new one. Possible when you get
|
| 2008 |
+
* very fast interaction, and later queries are completed much faster
|
| 2009 |
+
*/
|
| 2010 |
+
if ( json.sEcho*1 < oSettings.iDraw )
|
| 2011 |
+
{
|
| 2012 |
+
return;
|
| 2013 |
+
}
|
| 2014 |
+
else
|
| 2015 |
+
{
|
| 2016 |
+
oSettings.iDraw = json.sEcho * 1;
|
| 2017 |
+
}
|
| 2018 |
+
}
|
| 2019 |
+
|
| 2020 |
+
if ( !oSettings.oScroll.bInfinite ||
|
| 2021 |
+
(oSettings.oScroll.bInfinite && (oSettings.bSorted || oSettings.bFiltered)) )
|
| 2022 |
+
{
|
| 2023 |
+
_fnClearTable( oSettings );
|
| 2024 |
+
}
|
| 2025 |
+
oSettings._iRecordsTotal = parseInt(json.iTotalRecords, 10);
|
| 2026 |
+
oSettings._iRecordsDisplay = parseInt(json.iTotalDisplayRecords, 10);
|
| 2027 |
+
|
| 2028 |
+
/* Determine if reordering is required */
|
| 2029 |
+
var sOrdering = _fnColumnOrdering(oSettings);
|
| 2030 |
+
var bReOrder = (json.sColumns !== undefined && sOrdering !== "" && json.sColumns != sOrdering );
|
| 2031 |
+
var aiIndex;
|
| 2032 |
+
if ( bReOrder )
|
| 2033 |
+
{
|
| 2034 |
+
aiIndex = _fnReOrderIndex( oSettings, json.sColumns );
|
| 2035 |
+
}
|
| 2036 |
+
|
| 2037 |
+
var aData = _fnGetObjectDataFn( oSettings.sAjaxDataProp )( json );
|
| 2038 |
+
for ( var i=0, iLen=aData.length ; i<iLen ; i++ )
|
| 2039 |
+
{
|
| 2040 |
+
if ( bReOrder )
|
| 2041 |
+
{
|
| 2042 |
+
/* If we need to re-order, then create a new array with the correct order and add it */
|
| 2043 |
+
var aDataSorted = [];
|
| 2044 |
+
for ( var j=0, jLen=oSettings.aoColumns.length ; j<jLen ; j++ )
|
| 2045 |
+
{
|
| 2046 |
+
aDataSorted.push( aData[i][ aiIndex[j] ] );
|
| 2047 |
+
}
|
| 2048 |
+
_fnAddData( oSettings, aDataSorted );
|
| 2049 |
+
}
|
| 2050 |
+
else
|
| 2051 |
+
{
|
| 2052 |
+
/* No re-order required, sever got it "right" - just straight add */
|
| 2053 |
+
_fnAddData( oSettings, aData[i] );
|
| 2054 |
+
}
|
| 2055 |
+
}
|
| 2056 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 2057 |
+
|
| 2058 |
+
oSettings.bAjaxDataGet = false;
|
| 2059 |
+
_fnDraw( oSettings );
|
| 2060 |
+
oSettings.bAjaxDataGet = true;
|
| 2061 |
+
_fnProcessingDisplay( oSettings, false );
|
| 2062 |
+
}
|
| 2063 |
+
|
| 2064 |
+
|
| 2065 |
+
|
| 2066 |
+
/**
|
| 2067 |
+
* Generate the node required for filtering text
|
| 2068 |
+
* @returns {node} Filter control element
|
| 2069 |
+
* @param {object} oSettings dataTables settings object
|
| 2070 |
+
* @memberof DataTable#oApi
|
| 2071 |
+
*/
|
| 2072 |
+
function _fnFeatureHtmlFilter ( oSettings )
|
| 2073 |
+
{
|
| 2074 |
+
var oPreviousSearch = oSettings.oPreviousSearch;
|
| 2075 |
+
|
| 2076 |
+
var sSearchStr = oSettings.oLanguage.sSearch;
|
| 2077 |
+
sSearchStr = (sSearchStr.indexOf('_INPUT_') !== -1) ?
|
| 2078 |
+
sSearchStr.replace('_INPUT_', '<input type="text" />') :
|
| 2079 |
+
sSearchStr==="" ? '<input type="text" />' : sSearchStr+' <input type="text" />';
|
| 2080 |
+
|
| 2081 |
+
var nFilter = document.createElement( 'div' );
|
| 2082 |
+
nFilter.className = oSettings.oClasses.sFilter;
|
| 2083 |
+
nFilter.innerHTML = '<label>'+sSearchStr+'</label>';
|
| 2084 |
+
if ( !oSettings.aanFeatures.f )
|
| 2085 |
+
{
|
| 2086 |
+
nFilter.id = oSettings.sTableId+'_filter';
|
| 2087 |
+
}
|
| 2088 |
+
|
| 2089 |
+
var jqFilter = $('input[type="text"]', nFilter);
|
| 2090 |
+
|
| 2091 |
+
// Store a reference to the input element, so other input elements could be
|
| 2092 |
+
// added to the filter wrapper if needed (submit button for example)
|
| 2093 |
+
nFilter._DT_Input = jqFilter[0];
|
| 2094 |
+
|
| 2095 |
+
jqFilter.val( oPreviousSearch.sSearch.replace('"','"') );
|
| 2096 |
+
jqFilter.bind( 'keyup.DT', function(e) {
|
| 2097 |
+
/* Update all other filter input elements for the new display */
|
| 2098 |
+
var n = oSettings.aanFeatures.f;
|
| 2099 |
+
var val = this.value==="" ? "" : this.value; // mental IE8 fix :-(
|
| 2100 |
+
|
| 2101 |
+
for ( var i=0, iLen=n.length ; i<iLen ; i++ )
|
| 2102 |
+
{
|
| 2103 |
+
if ( n[i] != $(this).parents('div.dataTables_filter')[0] )
|
| 2104 |
+
{
|
| 2105 |
+
$(n[i]._DT_Input).val( val );
|
| 2106 |
+
}
|
| 2107 |
+
}
|
| 2108 |
+
|
| 2109 |
+
/* Now do the filter */
|
| 2110 |
+
if ( val != oPreviousSearch.sSearch )
|
| 2111 |
+
{
|
| 2112 |
+
_fnFilterComplete( oSettings, {
|
| 2113 |
+
"sSearch": val,
|
| 2114 |
+
"bRegex": oPreviousSearch.bRegex,
|
| 2115 |
+
"bSmart": oPreviousSearch.bSmart ,
|
| 2116 |
+
"bCaseInsensitive": oPreviousSearch.bCaseInsensitive
|
| 2117 |
+
} );
|
| 2118 |
+
}
|
| 2119 |
+
} );
|
| 2120 |
+
|
| 2121 |
+
jqFilter
|
| 2122 |
+
.attr('aria-controls', oSettings.sTableId)
|
| 2123 |
+
.bind( 'keypress.DT', function(e) {
|
| 2124 |
+
/* Prevent form submission */
|
| 2125 |
+
if ( e.keyCode == 13 )
|
| 2126 |
+
{
|
| 2127 |
+
return false;
|
| 2128 |
+
}
|
| 2129 |
+
}
|
| 2130 |
+
);
|
| 2131 |
+
|
| 2132 |
+
return nFilter;
|
| 2133 |
+
}
|
| 2134 |
+
|
| 2135 |
+
|
| 2136 |
+
/**
|
| 2137 |
+
* Filter the table using both the global filter and column based filtering
|
| 2138 |
+
* @param {object} oSettings dataTables settings object
|
| 2139 |
+
* @param {object} oSearch search information
|
| 2140 |
+
* @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)
|
| 2141 |
+
* @memberof DataTable#oApi
|
| 2142 |
+
*/
|
| 2143 |
+
function _fnFilterComplete ( oSettings, oInput, iForce )
|
| 2144 |
+
{
|
| 2145 |
+
var oPrevSearch = oSettings.oPreviousSearch;
|
| 2146 |
+
var aoPrevSearch = oSettings.aoPreSearchCols;
|
| 2147 |
+
var fnSaveFilter = function ( oFilter ) {
|
| 2148 |
+
/* Save the filtering values */
|
| 2149 |
+
oPrevSearch.sSearch = oFilter.sSearch;
|
| 2150 |
+
oPrevSearch.bRegex = oFilter.bRegex;
|
| 2151 |
+
oPrevSearch.bSmart = oFilter.bSmart;
|
| 2152 |
+
oPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;
|
| 2153 |
+
};
|
| 2154 |
+
|
| 2155 |
+
/* In server-side processing all filtering is done by the server, so no point hanging around here */
|
| 2156 |
+
if ( !oSettings.oFeatures.bServerSide )
|
| 2157 |
+
{
|
| 2158 |
+
/* Global filter */
|
| 2159 |
+
_fnFilter( oSettings, oInput.sSearch, iForce, oInput.bRegex, oInput.bSmart, oInput.bCaseInsensitive );
|
| 2160 |
+
fnSaveFilter( oInput );
|
| 2161 |
+
|
| 2162 |
+
/* Now do the individual column filter */
|
| 2163 |
+
for ( var i=0 ; i<oSettings.aoPreSearchCols.length ; i++ )
|
| 2164 |
+
{
|
| 2165 |
+
_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, aoPrevSearch[i].bRegex,
|
| 2166 |
+
aoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );
|
| 2167 |
+
}
|
| 2168 |
+
|
| 2169 |
+
/* Custom filtering */
|
| 2170 |
+
_fnFilterCustom( oSettings );
|
| 2171 |
+
}
|
| 2172 |
+
else
|
| 2173 |
+
{
|
| 2174 |
+
fnSaveFilter( oInput );
|
| 2175 |
+
}
|
| 2176 |
+
|
| 2177 |
+
/* Tell the draw function we have been filtering */
|
| 2178 |
+
oSettings.bFiltered = true;
|
| 2179 |
+
$(oSettings.oInstance).trigger('filter', oSettings);
|
| 2180 |
+
|
| 2181 |
+
/* Redraw the table */
|
| 2182 |
+
oSettings._iDisplayStart = 0;
|
| 2183 |
+
_fnCalculateEnd( oSettings );
|
| 2184 |
+
_fnDraw( oSettings );
|
| 2185 |
+
|
| 2186 |
+
/* Rebuild search array 'offline' */
|
| 2187 |
+
_fnBuildSearchArray( oSettings, 0 );
|
| 2188 |
+
}
|
| 2189 |
+
|
| 2190 |
+
|
| 2191 |
+
/**
|
| 2192 |
+
* Apply custom filtering functions
|
| 2193 |
+
* @param {object} oSettings dataTables settings object
|
| 2194 |
+
* @memberof DataTable#oApi
|
| 2195 |
+
*/
|
| 2196 |
+
function _fnFilterCustom( oSettings )
|
| 2197 |
+
{
|
| 2198 |
+
var afnFilters = DataTable.ext.afnFiltering;
|
| 2199 |
+
var aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );
|
| 2200 |
+
|
| 2201 |
+
for ( var i=0, iLen=afnFilters.length ; i<iLen ; i++ )
|
| 2202 |
+
{
|
| 2203 |
+
var iCorrector = 0;
|
| 2204 |
+
for ( var j=0, jLen=oSettings.aiDisplay.length ; j<jLen ; j++ )
|
| 2205 |
+
{
|
| 2206 |
+
var iDisIndex = oSettings.aiDisplay[j-iCorrector];
|
| 2207 |
+
var bTest = afnFilters[i](
|
| 2208 |
+
oSettings,
|
| 2209 |
+
_fnGetRowData( oSettings, iDisIndex, 'filter', aiFilterColumns ),
|
| 2210 |
+
iDisIndex
|
| 2211 |
+
);
|
| 2212 |
+
|
| 2213 |
+
/* Check if we should use this row based on the filtering function */
|
| 2214 |
+
if ( !bTest )
|
| 2215 |
+
{
|
| 2216 |
+
oSettings.aiDisplay.splice( j-iCorrector, 1 );
|
| 2217 |
+
iCorrector++;
|
| 2218 |
+
}
|
| 2219 |
+
}
|
| 2220 |
+
}
|
| 2221 |
+
}
|
| 2222 |
+
|
| 2223 |
+
|
| 2224 |
+
/**
|
| 2225 |
+
* Filter the table on a per-column basis
|
| 2226 |
+
* @param {object} oSettings dataTables settings object
|
| 2227 |
+
* @param {string} sInput string to filter on
|
| 2228 |
+
* @param {int} iColumn column to filter
|
| 2229 |
+
* @param {bool} bRegex treat search string as a regular expression or not
|
| 2230 |
+
* @param {bool} bSmart use smart filtering or not
|
| 2231 |
+
* @param {bool} bCaseInsensitive Do case insenstive matching or not
|
| 2232 |
+
* @memberof DataTable#oApi
|
| 2233 |
+
*/
|
| 2234 |
+
function _fnFilterColumn ( oSettings, sInput, iColumn, bRegex, bSmart, bCaseInsensitive )
|
| 2235 |
+
{
|
| 2236 |
+
if ( sInput === "" )
|
| 2237 |
+
{
|
| 2238 |
+
return;
|
| 2239 |
+
}
|
| 2240 |
+
|
| 2241 |
+
var iIndexCorrector = 0;
|
| 2242 |
+
var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );
|
| 2243 |
+
|
| 2244 |
+
for ( var i=oSettings.aiDisplay.length-1 ; i>=0 ; i-- )
|
| 2245 |
+
{
|
| 2246 |
+
var sData = _fnDataToSearch( _fnGetCellData( oSettings, oSettings.aiDisplay[i], iColumn, 'filter' ),
|
| 2247 |
+
oSettings.aoColumns[iColumn].sType );
|
| 2248 |
+
if ( ! rpSearch.test( sData ) )
|
| 2249 |
+
{
|
| 2250 |
+
oSettings.aiDisplay.splice( i, 1 );
|
| 2251 |
+
iIndexCorrector++;
|
| 2252 |
+
}
|
| 2253 |
+
}
|
| 2254 |
+
}
|
| 2255 |
+
|
| 2256 |
+
|
| 2257 |
+
/**
|
| 2258 |
+
* Filter the data table based on user input and draw the table
|
| 2259 |
+
* @param {object} oSettings dataTables settings object
|
| 2260 |
+
* @param {string} sInput string to filter on
|
| 2261 |
+
* @param {int} iForce optional - force a research of the master array (1) or not (undefined or 0)
|
| 2262 |
+
* @param {bool} bRegex treat as a regular expression or not
|
| 2263 |
+
* @param {bool} bSmart perform smart filtering or not
|
| 2264 |
+
* @param {bool} bCaseInsensitive Do case insenstive matching or not
|
| 2265 |
+
* @memberof DataTable#oApi
|
| 2266 |
+
*/
|
| 2267 |
+
function _fnFilter( oSettings, sInput, iForce, bRegex, bSmart, bCaseInsensitive )
|
| 2268 |
+
{
|
| 2269 |
+
var i;
|
| 2270 |
+
var rpSearch = _fnFilterCreateSearch( sInput, bRegex, bSmart, bCaseInsensitive );
|
| 2271 |
+
var oPrevSearch = oSettings.oPreviousSearch;
|
| 2272 |
+
|
| 2273 |
+
/* Check if we are forcing or not - optional parameter */
|
| 2274 |
+
if ( !iForce )
|
| 2275 |
+
{
|
| 2276 |
+
iForce = 0;
|
| 2277 |
+
}
|
| 2278 |
+
|
| 2279 |
+
/* Need to take account of custom filtering functions - always filter */
|
| 2280 |
+
if ( DataTable.ext.afnFiltering.length !== 0 )
|
| 2281 |
+
{
|
| 2282 |
+
iForce = 1;
|
| 2283 |
+
}
|
| 2284 |
+
|
| 2285 |
+
/*
|
| 2286 |
+
* If the input is blank - we want the full data set
|
| 2287 |
+
*/
|
| 2288 |
+
if ( sInput.length <= 0 )
|
| 2289 |
+
{
|
| 2290 |
+
oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
|
| 2291 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 2292 |
+
}
|
| 2293 |
+
else
|
| 2294 |
+
{
|
| 2295 |
+
/*
|
| 2296 |
+
* We are starting a new search or the new search string is smaller
|
| 2297 |
+
* then the old one (i.e. delete). Search from the master array
|
| 2298 |
+
*/
|
| 2299 |
+
if ( oSettings.aiDisplay.length == oSettings.aiDisplayMaster.length ||
|
| 2300 |
+
oPrevSearch.sSearch.length > sInput.length || iForce == 1 ||
|
| 2301 |
+
sInput.indexOf(oPrevSearch.sSearch) !== 0 )
|
| 2302 |
+
{
|
| 2303 |
+
/* Nuke the old display array - we are going to rebuild it */
|
| 2304 |
+
oSettings.aiDisplay.splice( 0, oSettings.aiDisplay.length);
|
| 2305 |
+
|
| 2306 |
+
/* Force a rebuild of the search array */
|
| 2307 |
+
_fnBuildSearchArray( oSettings, 1 );
|
| 2308 |
+
|
| 2309 |
+
/* Search through all records to populate the search array
|
| 2310 |
+
* The the oSettings.aiDisplayMaster and asDataSearch arrays have 1 to 1
|
| 2311 |
+
* mapping
|
| 2312 |
+
*/
|
| 2313 |
+
for ( i=0 ; i<oSettings.aiDisplayMaster.length ; i++ )
|
| 2314 |
+
{
|
| 2315 |
+
if ( rpSearch.test(oSettings.asDataSearch[i]) )
|
| 2316 |
+
{
|
| 2317 |
+
oSettings.aiDisplay.push( oSettings.aiDisplayMaster[i] );
|
| 2318 |
+
}
|
| 2319 |
+
}
|
| 2320 |
+
}
|
| 2321 |
+
else
|
| 2322 |
+
{
|
| 2323 |
+
/* Using old search array - refine it - do it this way for speed
|
| 2324 |
+
* Don't have to search the whole master array again
|
| 2325 |
+
*/
|
| 2326 |
+
var iIndexCorrector = 0;
|
| 2327 |
+
|
| 2328 |
+
/* Search the current results */
|
| 2329 |
+
for ( i=0 ; i<oSettings.asDataSearch.length ; i++ )
|
| 2330 |
+
{
|
| 2331 |
+
if ( ! rpSearch.test(oSettings.asDataSearch[i]) )
|
| 2332 |
+
{
|
| 2333 |
+
oSettings.aiDisplay.splice( i-iIndexCorrector, 1 );
|
| 2334 |
+
iIndexCorrector++;
|
| 2335 |
+
}
|
| 2336 |
+
}
|
| 2337 |
+
}
|
| 2338 |
+
}
|
| 2339 |
+
}
|
| 2340 |
+
|
| 2341 |
+
|
| 2342 |
+
/**
|
| 2343 |
+
* Create an array which can be quickly search through
|
| 2344 |
+
* @param {object} oSettings dataTables settings object
|
| 2345 |
+
* @param {int} iMaster use the master data array - optional
|
| 2346 |
+
* @memberof DataTable#oApi
|
| 2347 |
+
*/
|
| 2348 |
+
function _fnBuildSearchArray ( oSettings, iMaster )
|
| 2349 |
+
{
|
| 2350 |
+
if ( !oSettings.oFeatures.bServerSide )
|
| 2351 |
+
{
|
| 2352 |
+
/* Clear out the old data */
|
| 2353 |
+
oSettings.asDataSearch = [];
|
| 2354 |
+
|
| 2355 |
+
var aiFilterColumns = _fnGetColumns( oSettings, 'bSearchable' );
|
| 2356 |
+
var aiIndex = (iMaster===1) ?
|
| 2357 |
+
oSettings.aiDisplayMaster :
|
| 2358 |
+
oSettings.aiDisplay;
|
| 2359 |
+
|
| 2360 |
+
for ( var i=0, iLen=aiIndex.length ; i<iLen ; i++ )
|
| 2361 |
+
{
|
| 2362 |
+
oSettings.asDataSearch[i] = _fnBuildSearchRow(
|
| 2363 |
+
oSettings,
|
| 2364 |
+
_fnGetRowData( oSettings, aiIndex[i], 'filter', aiFilterColumns )
|
| 2365 |
+
);
|
| 2366 |
+
}
|
| 2367 |
+
}
|
| 2368 |
+
}
|
| 2369 |
+
|
| 2370 |
+
|
| 2371 |
+
/**
|
| 2372 |
+
* Create a searchable string from a single data row
|
| 2373 |
+
* @param {object} oSettings dataTables settings object
|
| 2374 |
+
* @param {array} aData Row data array to use for the data to search
|
| 2375 |
+
* @memberof DataTable#oApi
|
| 2376 |
+
*/
|
| 2377 |
+
function _fnBuildSearchRow( oSettings, aData )
|
| 2378 |
+
{
|
| 2379 |
+
var sSearch = aData.join(' ');
|
| 2380 |
+
|
| 2381 |
+
/* If it looks like there is an HTML entity in the string, attempt to decode it */
|
| 2382 |
+
if ( sSearch.indexOf('&') !== -1 )
|
| 2383 |
+
{
|
| 2384 |
+
sSearch = $('<div>').html(sSearch).text();
|
| 2385 |
+
}
|
| 2386 |
+
|
| 2387 |
+
// Strip newline characters
|
| 2388 |
+
return sSearch.replace( /[\n\r]/g, " " );
|
| 2389 |
+
}
|
| 2390 |
+
|
| 2391 |
+
/**
|
| 2392 |
+
* Build a regular expression object suitable for searching a table
|
| 2393 |
+
* @param {string} sSearch string to search for
|
| 2394 |
+
* @param {bool} bRegex treat as a regular expression or not
|
| 2395 |
+
* @param {bool} bSmart perform smart filtering or not
|
| 2396 |
+
* @param {bool} bCaseInsensitive Do case insensitive matching or not
|
| 2397 |
+
* @returns {RegExp} constructed object
|
| 2398 |
+
* @memberof DataTable#oApi
|
| 2399 |
+
*/
|
| 2400 |
+
function _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )
|
| 2401 |
+
{
|
| 2402 |
+
var asSearch, sRegExpString;
|
| 2403 |
+
|
| 2404 |
+
if ( bSmart )
|
| 2405 |
+
{
|
| 2406 |
+
/* Generate the regular expression to use. Something along the lines of:
|
| 2407 |
+
* ^(?=.*?\bone\b)(?=.*?\btwo\b)(?=.*?\bthree\b).*$
|
| 2408 |
+
*/
|
| 2409 |
+
asSearch = bRegex ? sSearch.split( ' ' ) : _fnEscapeRegex( sSearch ).split( ' ' );
|
| 2410 |
+
sRegExpString = '^(?=.*?'+asSearch.join( ')(?=.*?' )+').*$';
|
| 2411 |
+
return new RegExp( sRegExpString, bCaseInsensitive ? "i" : "" );
|
| 2412 |
+
}
|
| 2413 |
+
else
|
| 2414 |
+
{
|
| 2415 |
+
sSearch = bRegex ? sSearch : _fnEscapeRegex( sSearch );
|
| 2416 |
+
return new RegExp( sSearch, bCaseInsensitive ? "i" : "" );
|
| 2417 |
+
}
|
| 2418 |
+
}
|
| 2419 |
+
|
| 2420 |
+
|
| 2421 |
+
/**
|
| 2422 |
+
* Convert raw data into something that the user can search on
|
| 2423 |
+
* @param {string} sData data to be modified
|
| 2424 |
+
* @param {string} sType data type
|
| 2425 |
+
* @returns {string} search string
|
| 2426 |
+
* @memberof DataTable#oApi
|
| 2427 |
+
*/
|
| 2428 |
+
function _fnDataToSearch ( sData, sType )
|
| 2429 |
+
{
|
| 2430 |
+
if ( typeof DataTable.ext.ofnSearch[sType] === "function" )
|
| 2431 |
+
{
|
| 2432 |
+
return DataTable.ext.ofnSearch[sType]( sData );
|
| 2433 |
+
}
|
| 2434 |
+
else if ( sData === null )
|
| 2435 |
+
{
|
| 2436 |
+
return '';
|
| 2437 |
+
}
|
| 2438 |
+
else if ( sType == "html" )
|
| 2439 |
+
{
|
| 2440 |
+
return sData.replace(/[\r\n]/g," ").replace( /<.*?>/g, "" );
|
| 2441 |
+
}
|
| 2442 |
+
else if ( typeof sData === "string" )
|
| 2443 |
+
{
|
| 2444 |
+
return sData.replace(/[\r\n]/g," ");
|
| 2445 |
+
}
|
| 2446 |
+
return sData;
|
| 2447 |
+
}
|
| 2448 |
+
|
| 2449 |
+
|
| 2450 |
+
/**
|
| 2451 |
+
* scape a string such that it can be used in a regular expression
|
| 2452 |
+
* @param {string} sVal string to escape
|
| 2453 |
+
* @returns {string} escaped string
|
| 2454 |
+
* @memberof DataTable#oApi
|
| 2455 |
+
*/
|
| 2456 |
+
function _fnEscapeRegex ( sVal )
|
| 2457 |
+
{
|
| 2458 |
+
var acEscape = [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\', '$', '^', '-' ];
|
| 2459 |
+
var reReplace = new RegExp( '(\\' + acEscape.join('|\\') + ')', 'g' );
|
| 2460 |
+
return sVal.replace(reReplace, '\\$1');
|
| 2461 |
+
}
|
| 2462 |
+
|
| 2463 |
+
|
| 2464 |
+
/**
|
| 2465 |
+
* Generate the node required for the info display
|
| 2466 |
+
* @param {object} oSettings dataTables settings object
|
| 2467 |
+
* @returns {node} Information element
|
| 2468 |
+
* @memberof DataTable#oApi
|
| 2469 |
+
*/
|
| 2470 |
+
function _fnFeatureHtmlInfo ( oSettings )
|
| 2471 |
+
{
|
| 2472 |
+
var nInfo = document.createElement( 'div' );
|
| 2473 |
+
nInfo.className = oSettings.oClasses.sInfo;
|
| 2474 |
+
|
| 2475 |
+
/* Actions that are to be taken once only for this feature */
|
| 2476 |
+
if ( !oSettings.aanFeatures.i )
|
| 2477 |
+
{
|
| 2478 |
+
/* Add draw callback */
|
| 2479 |
+
oSettings.aoDrawCallback.push( {
|
| 2480 |
+
"fn": _fnUpdateInfo,
|
| 2481 |
+
"sName": "information"
|
| 2482 |
+
} );
|
| 2483 |
+
|
| 2484 |
+
/* Add id */
|
| 2485 |
+
nInfo.id = oSettings.sTableId+'_info';
|
| 2486 |
+
}
|
| 2487 |
+
oSettings.nTable.setAttribute( 'aria-describedby', oSettings.sTableId+'_info' );
|
| 2488 |
+
|
| 2489 |
+
return nInfo;
|
| 2490 |
+
}
|
| 2491 |
+
|
| 2492 |
+
|
| 2493 |
+
/**
|
| 2494 |
+
* Update the information elements in the display
|
| 2495 |
+
* @param {object} oSettings dataTables settings object
|
| 2496 |
+
* @memberof DataTable#oApi
|
| 2497 |
+
*/
|
| 2498 |
+
function _fnUpdateInfo ( oSettings )
|
| 2499 |
+
{
|
| 2500 |
+
/* Show information about the table */
|
| 2501 |
+
if ( !oSettings.oFeatures.bInfo || oSettings.aanFeatures.i.length === 0 )
|
| 2502 |
+
{
|
| 2503 |
+
return;
|
| 2504 |
+
}
|
| 2505 |
+
|
| 2506 |
+
var
|
| 2507 |
+
oLang = oSettings.oLanguage,
|
| 2508 |
+
iStart = oSettings._iDisplayStart+1,
|
| 2509 |
+
iEnd = oSettings.fnDisplayEnd(),
|
| 2510 |
+
iMax = oSettings.fnRecordsTotal(),
|
| 2511 |
+
iTotal = oSettings.fnRecordsDisplay(),
|
| 2512 |
+
sOut;
|
| 2513 |
+
|
| 2514 |
+
if ( iTotal === 0 )
|
| 2515 |
+
{
|
| 2516 |
+
/* Empty record set */
|
| 2517 |
+
sOut = oLang.sInfoEmpty;
|
| 2518 |
+
}
|
| 2519 |
+
else {
|
| 2520 |
+
/* Normal record set */
|
| 2521 |
+
sOut = oLang.sInfo;
|
| 2522 |
+
}
|
| 2523 |
+
|
| 2524 |
+
if ( iTotal != iMax )
|
| 2525 |
+
{
|
| 2526 |
+
/* Record set after filtering */
|
| 2527 |
+
sOut += ' ' + oLang.sInfoFiltered;
|
| 2528 |
+
}
|
| 2529 |
+
|
| 2530 |
+
// Convert the macros
|
| 2531 |
+
sOut += oLang.sInfoPostFix;
|
| 2532 |
+
sOut = _fnInfoMacros( oSettings, sOut );
|
| 2533 |
+
|
| 2534 |
+
if ( oLang.fnInfoCallback !== null )
|
| 2535 |
+
{
|
| 2536 |
+
sOut = oLang.fnInfoCallback.call( oSettings.oInstance,
|
| 2537 |
+
oSettings, iStart, iEnd, iMax, iTotal, sOut );
|
| 2538 |
+
}
|
| 2539 |
+
|
| 2540 |
+
var n = oSettings.aanFeatures.i;
|
| 2541 |
+
for ( var i=0, iLen=n.length ; i<iLen ; i++ )
|
| 2542 |
+
{
|
| 2543 |
+
$(n[i]).html( sOut );
|
| 2544 |
+
}
|
| 2545 |
+
}
|
| 2546 |
+
|
| 2547 |
+
|
| 2548 |
+
function _fnInfoMacros ( oSettings, str )
|
| 2549 |
+
{
|
| 2550 |
+
var
|
| 2551 |
+
iStart = oSettings._iDisplayStart+1,
|
| 2552 |
+
sStart = oSettings.fnFormatNumber( iStart ),
|
| 2553 |
+
iEnd = oSettings.fnDisplayEnd(),
|
| 2554 |
+
sEnd = oSettings.fnFormatNumber( iEnd ),
|
| 2555 |
+
iTotal = oSettings.fnRecordsDisplay(),
|
| 2556 |
+
sTotal = oSettings.fnFormatNumber( iTotal ),
|
| 2557 |
+
iMax = oSettings.fnRecordsTotal(),
|
| 2558 |
+
sMax = oSettings.fnFormatNumber( iMax );
|
| 2559 |
+
|
| 2560 |
+
// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only
|
| 2561 |
+
// internally
|
| 2562 |
+
if ( oSettings.oScroll.bInfinite )
|
| 2563 |
+
{
|
| 2564 |
+
sStart = oSettings.fnFormatNumber( 1 );
|
| 2565 |
+
}
|
| 2566 |
+
|
| 2567 |
+
return str.
|
| 2568 |
+
replace(/_START_/g, sStart).
|
| 2569 |
+
replace(/_END_/g, sEnd).
|
| 2570 |
+
replace(/_TOTAL_/g, sTotal).
|
| 2571 |
+
replace(/_MAX_/g, sMax);
|
| 2572 |
+
}
|
| 2573 |
+
|
| 2574 |
+
|
| 2575 |
+
|
| 2576 |
+
/**
|
| 2577 |
+
* Draw the table for the first time, adding all required features
|
| 2578 |
+
* @param {object} oSettings dataTables settings object
|
| 2579 |
+
* @memberof DataTable#oApi
|
| 2580 |
+
*/
|
| 2581 |
+
function _fnInitialise ( oSettings )
|
| 2582 |
+
{
|
| 2583 |
+
var i, iLen, iAjaxStart=oSettings.iInitDisplayStart;
|
| 2584 |
+
|
| 2585 |
+
/* Ensure that the table data is fully initialised */
|
| 2586 |
+
if ( oSettings.bInitialised === false )
|
| 2587 |
+
{
|
| 2588 |
+
setTimeout( function(){ _fnInitialise( oSettings ); }, 200 );
|
| 2589 |
+
return;
|
| 2590 |
+
}
|
| 2591 |
+
|
| 2592 |
+
/* Show the display HTML options */
|
| 2593 |
+
_fnAddOptionsHtml( oSettings );
|
| 2594 |
+
|
| 2595 |
+
/* Build and draw the header / footer for the table */
|
| 2596 |
+
_fnBuildHead( oSettings );
|
| 2597 |
+
_fnDrawHead( oSettings, oSettings.aoHeader );
|
| 2598 |
+
if ( oSettings.nTFoot )
|
| 2599 |
+
{
|
| 2600 |
+
_fnDrawHead( oSettings, oSettings.aoFooter );
|
| 2601 |
+
}
|
| 2602 |
+
|
| 2603 |
+
/* Okay to show that something is going on now */
|
| 2604 |
+
_fnProcessingDisplay( oSettings, true );
|
| 2605 |
+
|
| 2606 |
+
/* Calculate sizes for columns */
|
| 2607 |
+
if ( oSettings.oFeatures.bAutoWidth )
|
| 2608 |
+
{
|
| 2609 |
+
_fnCalculateColumnWidths( oSettings );
|
| 2610 |
+
}
|
| 2611 |
+
|
| 2612 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 2613 |
+
{
|
| 2614 |
+
if ( oSettings.aoColumns[i].sWidth !== null )
|
| 2615 |
+
{
|
| 2616 |
+
oSettings.aoColumns[i].nTh.style.width = _fnStringToCss( oSettings.aoColumns[i].sWidth );
|
| 2617 |
+
}
|
| 2618 |
+
}
|
| 2619 |
+
|
| 2620 |
+
/* If there is default sorting required - let's do it. The sort function will do the
|
| 2621 |
+
* drawing for us. Otherwise we draw the table regardless of the Ajax source - this allows
|
| 2622 |
+
* the table to look initialised for Ajax sourcing data (show 'loading' message possibly)
|
| 2623 |
+
*/
|
| 2624 |
+
if ( oSettings.oFeatures.bSort )
|
| 2625 |
+
{
|
| 2626 |
+
_fnSort( oSettings );
|
| 2627 |
+
}
|
| 2628 |
+
else if ( oSettings.oFeatures.bFilter )
|
| 2629 |
+
{
|
| 2630 |
+
_fnFilterComplete( oSettings, oSettings.oPreviousSearch );
|
| 2631 |
+
}
|
| 2632 |
+
else
|
| 2633 |
+
{
|
| 2634 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 2635 |
+
_fnCalculateEnd( oSettings );
|
| 2636 |
+
_fnDraw( oSettings );
|
| 2637 |
+
}
|
| 2638 |
+
|
| 2639 |
+
/* if there is an ajax source load the data */
|
| 2640 |
+
if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide )
|
| 2641 |
+
{
|
| 2642 |
+
var aoData = [];
|
| 2643 |
+
_fnServerParams( oSettings, aoData );
|
| 2644 |
+
oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, aoData, function(json) {
|
| 2645 |
+
var aData = (oSettings.sAjaxDataProp !== "") ?
|
| 2646 |
+
_fnGetObjectDataFn( oSettings.sAjaxDataProp )(json) : json;
|
| 2647 |
+
|
| 2648 |
+
/* Got the data - add it to the table */
|
| 2649 |
+
for ( i=0 ; i<aData.length ; i++ )
|
| 2650 |
+
{
|
| 2651 |
+
_fnAddData( oSettings, aData[i] );
|
| 2652 |
+
}
|
| 2653 |
+
|
| 2654 |
+
/* Reset the init display for cookie saving. We've already done a filter, and
|
| 2655 |
+
* therefore cleared it before. So we need to make it appear 'fresh'
|
| 2656 |
+
*/
|
| 2657 |
+
oSettings.iInitDisplayStart = iAjaxStart;
|
| 2658 |
+
|
| 2659 |
+
if ( oSettings.oFeatures.bSort )
|
| 2660 |
+
{
|
| 2661 |
+
_fnSort( oSettings );
|
| 2662 |
+
}
|
| 2663 |
+
else
|
| 2664 |
+
{
|
| 2665 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 2666 |
+
_fnCalculateEnd( oSettings );
|
| 2667 |
+
_fnDraw( oSettings );
|
| 2668 |
+
}
|
| 2669 |
+
|
| 2670 |
+
_fnProcessingDisplay( oSettings, false );
|
| 2671 |
+
_fnInitComplete( oSettings, json );
|
| 2672 |
+
}, oSettings );
|
| 2673 |
+
return;
|
| 2674 |
+
}
|
| 2675 |
+
|
| 2676 |
+
/* Server-side processing initialisation complete is done at the end of _fnDraw */
|
| 2677 |
+
if ( !oSettings.oFeatures.bServerSide )
|
| 2678 |
+
{
|
| 2679 |
+
_fnProcessingDisplay( oSettings, false );
|
| 2680 |
+
_fnInitComplete( oSettings );
|
| 2681 |
+
}
|
| 2682 |
+
}
|
| 2683 |
+
|
| 2684 |
+
|
| 2685 |
+
/**
|
| 2686 |
+
* Draw the table for the first time, adding all required features
|
| 2687 |
+
* @param {object} oSettings dataTables settings object
|
| 2688 |
+
* @param {object} [json] JSON from the server that completed the table, if using Ajax source
|
| 2689 |
+
* with client-side processing (optional)
|
| 2690 |
+
* @memberof DataTable#oApi
|
| 2691 |
+
*/
|
| 2692 |
+
function _fnInitComplete ( oSettings, json )
|
| 2693 |
+
{
|
| 2694 |
+
oSettings._bInitComplete = true;
|
| 2695 |
+
_fnCallbackFire( oSettings, 'aoInitComplete', 'init', [oSettings, json] );
|
| 2696 |
+
}
|
| 2697 |
+
|
| 2698 |
+
|
| 2699 |
+
/**
|
| 2700 |
+
* Language compatibility - when certain options are given, and others aren't, we
|
| 2701 |
+
* need to duplicate the values over, in order to provide backwards compatibility
|
| 2702 |
+
* with older language files.
|
| 2703 |
+
* @param {object} oSettings dataTables settings object
|
| 2704 |
+
* @memberof DataTable#oApi
|
| 2705 |
+
*/
|
| 2706 |
+
function _fnLanguageCompat( oLanguage )
|
| 2707 |
+
{
|
| 2708 |
+
var oDefaults = DataTable.defaults.oLanguage;
|
| 2709 |
+
|
| 2710 |
+
/* Backwards compatibility - if there is no sEmptyTable given, then use the same as
|
| 2711 |
+
* sZeroRecords - assuming that is given.
|
| 2712 |
+
*/
|
| 2713 |
+
if ( !oLanguage.sEmptyTable && oLanguage.sZeroRecords &&
|
| 2714 |
+
oDefaults.sEmptyTable === "No data available in table" )
|
| 2715 |
+
{
|
| 2716 |
+
_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sEmptyTable' );
|
| 2717 |
+
}
|
| 2718 |
+
|
| 2719 |
+
/* Likewise with loading records */
|
| 2720 |
+
if ( !oLanguage.sLoadingRecords && oLanguage.sZeroRecords &&
|
| 2721 |
+
oDefaults.sLoadingRecords === "Loading..." )
|
| 2722 |
+
{
|
| 2723 |
+
_fnMap( oLanguage, oLanguage, 'sZeroRecords', 'sLoadingRecords' );
|
| 2724 |
+
}
|
| 2725 |
+
}
|
| 2726 |
+
|
| 2727 |
+
|
| 2728 |
+
|
| 2729 |
+
/**
|
| 2730 |
+
* Generate the node required for user display length changing
|
| 2731 |
+
* @param {object} oSettings dataTables settings object
|
| 2732 |
+
* @returns {node} Display length feature node
|
| 2733 |
+
* @memberof DataTable#oApi
|
| 2734 |
+
*/
|
| 2735 |
+
function _fnFeatureHtmlLength ( oSettings )
|
| 2736 |
+
{
|
| 2737 |
+
if ( oSettings.oScroll.bInfinite )
|
| 2738 |
+
{
|
| 2739 |
+
return null;
|
| 2740 |
+
}
|
| 2741 |
+
|
| 2742 |
+
/* This can be overruled by not using the _MENU_ var/macro in the language variable */
|
| 2743 |
+
var sName = 'name="'+oSettings.sTableId+'_length"';
|
| 2744 |
+
var sStdMenu = '<select size="1" '+sName+'>';
|
| 2745 |
+
var i, iLen;
|
| 2746 |
+
var aLengthMenu = oSettings.aLengthMenu;
|
| 2747 |
+
|
| 2748 |
+
if ( aLengthMenu.length == 2 && typeof aLengthMenu[0] === 'object' &&
|
| 2749 |
+
typeof aLengthMenu[1] === 'object' )
|
| 2750 |
+
{
|
| 2751 |
+
for ( i=0, iLen=aLengthMenu[0].length ; i<iLen ; i++ )
|
| 2752 |
+
{
|
| 2753 |
+
sStdMenu += '<option value="'+aLengthMenu[0][i]+'">'+aLengthMenu[1][i]+'</option>';
|
| 2754 |
+
}
|
| 2755 |
+
}
|
| 2756 |
+
else
|
| 2757 |
+
{
|
| 2758 |
+
for ( i=0, iLen=aLengthMenu.length ; i<iLen ; i++ )
|
| 2759 |
+
{
|
| 2760 |
+
sStdMenu += '<option value="'+aLengthMenu[i]+'">'+aLengthMenu[i]+'</option>';
|
| 2761 |
+
}
|
| 2762 |
+
}
|
| 2763 |
+
sStdMenu += '</select>';
|
| 2764 |
+
|
| 2765 |
+
var nLength = document.createElement( 'div' );
|
| 2766 |
+
if ( !oSettings.aanFeatures.l )
|
| 2767 |
+
{
|
| 2768 |
+
nLength.id = oSettings.sTableId+'_length';
|
| 2769 |
+
}
|
| 2770 |
+
nLength.className = oSettings.oClasses.sLength;
|
| 2771 |
+
nLength.innerHTML = '<label>'+oSettings.oLanguage.sLengthMenu.replace( '_MENU_', sStdMenu )+'</label>';
|
| 2772 |
+
/*
|
| 2773 |
+
* Set the length to the current display length - thanks to Andrea Pavlovic for this fix,
|
| 2774 |
+
* and Stefan Skopnik for fixing the fix!
|
| 2775 |
+
*/
|
| 2776 |
+
$('select option[value="'+oSettings._iDisplayLength+'"]', nLength).attr("selected", true);
|
| 2777 |
+
|
| 2778 |
+
$('select', nLength).bind( 'change.DT', function(e) {
|
| 2779 |
+
var iVal = $(this).val();
|
| 2780 |
+
|
| 2781 |
+
/* Update all other length options for the new display */
|
| 2782 |
+
var n = oSettings.aanFeatures.l;
|
| 2783 |
+
for ( i=0, iLen=n.length ; i<iLen ; i++ )
|
| 2784 |
+
{
|
| 2785 |
+
if ( n[i] != this.parentNode )
|
| 2786 |
+
{
|
| 2787 |
+
$('select', n[i]).val( iVal );
|
| 2788 |
+
}
|
| 2789 |
+
}
|
| 2790 |
+
|
| 2791 |
+
/* Redraw the table */
|
| 2792 |
+
oSettings._iDisplayLength = parseInt(iVal, 10);
|
| 2793 |
+
_fnCalculateEnd( oSettings );
|
| 2794 |
+
|
| 2795 |
+
/* If we have space to show extra rows (backing up from the end point - then do so */
|
| 2796 |
+
if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() )
|
| 2797 |
+
{
|
| 2798 |
+
oSettings._iDisplayStart = oSettings.fnDisplayEnd() - oSettings._iDisplayLength;
|
| 2799 |
+
if ( oSettings._iDisplayStart < 0 )
|
| 2800 |
+
{
|
| 2801 |
+
oSettings._iDisplayStart = 0;
|
| 2802 |
+
}
|
| 2803 |
+
}
|
| 2804 |
+
|
| 2805 |
+
if ( oSettings._iDisplayLength == -1 )
|
| 2806 |
+
{
|
| 2807 |
+
oSettings._iDisplayStart = 0;
|
| 2808 |
+
}
|
| 2809 |
+
|
| 2810 |
+
_fnDraw( oSettings );
|
| 2811 |
+
} );
|
| 2812 |
+
|
| 2813 |
+
|
| 2814 |
+
$('select', nLength).attr('aria-controls', oSettings.sTableId);
|
| 2815 |
+
|
| 2816 |
+
return nLength;
|
| 2817 |
+
}
|
| 2818 |
+
|
| 2819 |
+
|
| 2820 |
+
/**
|
| 2821 |
+
* Recalculate the end point based on the start point
|
| 2822 |
+
* @param {object} oSettings dataTables settings object
|
| 2823 |
+
* @memberof DataTable#oApi
|
| 2824 |
+
*/
|
| 2825 |
+
function _fnCalculateEnd( oSettings )
|
| 2826 |
+
{
|
| 2827 |
+
if ( oSettings.oFeatures.bPaginate === false )
|
| 2828 |
+
{
|
| 2829 |
+
oSettings._iDisplayEnd = oSettings.aiDisplay.length;
|
| 2830 |
+
}
|
| 2831 |
+
else
|
| 2832 |
+
{
|
| 2833 |
+
/* Set the end point of the display - based on how many elements there are
|
| 2834 |
+
* still to display
|
| 2835 |
+
*/
|
| 2836 |
+
if ( oSettings._iDisplayStart + oSettings._iDisplayLength > oSettings.aiDisplay.length ||
|
| 2837 |
+
oSettings._iDisplayLength == -1 )
|
| 2838 |
+
{
|
| 2839 |
+
oSettings._iDisplayEnd = oSettings.aiDisplay.length;
|
| 2840 |
+
}
|
| 2841 |
+
else
|
| 2842 |
+
{
|
| 2843 |
+
oSettings._iDisplayEnd = oSettings._iDisplayStart + oSettings._iDisplayLength;
|
| 2844 |
+
}
|
| 2845 |
+
}
|
| 2846 |
+
}
|
| 2847 |
+
|
| 2848 |
+
|
| 2849 |
+
|
| 2850 |
+
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
| 2851 |
+
* Note that most of the paging logic is done in
|
| 2852 |
+
* DataTable.ext.oPagination
|
| 2853 |
+
*/
|
| 2854 |
+
|
| 2855 |
+
/**
|
| 2856 |
+
* Generate the node required for default pagination
|
| 2857 |
+
* @param {object} oSettings dataTables settings object
|
| 2858 |
+
* @returns {node} Pagination feature node
|
| 2859 |
+
* @memberof DataTable#oApi
|
| 2860 |
+
*/
|
| 2861 |
+
function _fnFeatureHtmlPaginate ( oSettings )
|
| 2862 |
+
{
|
| 2863 |
+
if ( oSettings.oScroll.bInfinite )
|
| 2864 |
+
{
|
| 2865 |
+
return null;
|
| 2866 |
+
}
|
| 2867 |
+
|
| 2868 |
+
var nPaginate = document.createElement( 'div' );
|
| 2869 |
+
nPaginate.className = oSettings.oClasses.sPaging+oSettings.sPaginationType;
|
| 2870 |
+
|
| 2871 |
+
DataTable.ext.oPagination[ oSettings.sPaginationType ].fnInit( oSettings, nPaginate,
|
| 2872 |
+
function( oSettings ) {
|
| 2873 |
+
_fnCalculateEnd( oSettings );
|
| 2874 |
+
_fnDraw( oSettings );
|
| 2875 |
+
}
|
| 2876 |
+
);
|
| 2877 |
+
|
| 2878 |
+
/* Add a draw callback for the pagination on first instance, to update the paging display */
|
| 2879 |
+
if ( !oSettings.aanFeatures.p )
|
| 2880 |
+
{
|
| 2881 |
+
oSettings.aoDrawCallback.push( {
|
| 2882 |
+
"fn": function( oSettings ) {
|
| 2883 |
+
DataTable.ext.oPagination[ oSettings.sPaginationType ].fnUpdate( oSettings, function( oSettings ) {
|
| 2884 |
+
_fnCalculateEnd( oSettings );
|
| 2885 |
+
_fnDraw( oSettings );
|
| 2886 |
+
} );
|
| 2887 |
+
},
|
| 2888 |
+
"sName": "pagination"
|
| 2889 |
+
} );
|
| 2890 |
+
}
|
| 2891 |
+
return nPaginate;
|
| 2892 |
+
}
|
| 2893 |
+
|
| 2894 |
+
|
| 2895 |
+
/**
|
| 2896 |
+
* Alter the display settings to change the page
|
| 2897 |
+
* @param {object} oSettings dataTables settings object
|
| 2898 |
+
* @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
|
| 2899 |
+
* or page number to jump to (integer)
|
| 2900 |
+
* @returns {bool} true page has changed, false - no change (no effect) eg 'first' on page 1
|
| 2901 |
+
* @memberof DataTable#oApi
|
| 2902 |
+
*/
|
| 2903 |
+
function _fnPageChange ( oSettings, mAction )
|
| 2904 |
+
{
|
| 2905 |
+
var iOldStart = oSettings._iDisplayStart;
|
| 2906 |
+
|
| 2907 |
+
if ( typeof mAction === "number" )
|
| 2908 |
+
{
|
| 2909 |
+
oSettings._iDisplayStart = mAction * oSettings._iDisplayLength;
|
| 2910 |
+
if ( oSettings._iDisplayStart > oSettings.fnRecordsDisplay() )
|
| 2911 |
+
{
|
| 2912 |
+
oSettings._iDisplayStart = 0;
|
| 2913 |
+
}
|
| 2914 |
+
}
|
| 2915 |
+
else if ( mAction == "first" )
|
| 2916 |
+
{
|
| 2917 |
+
oSettings._iDisplayStart = 0;
|
| 2918 |
+
}
|
| 2919 |
+
else if ( mAction == "previous" )
|
| 2920 |
+
{
|
| 2921 |
+
oSettings._iDisplayStart = oSettings._iDisplayLength>=0 ?
|
| 2922 |
+
oSettings._iDisplayStart - oSettings._iDisplayLength :
|
| 2923 |
+
0;
|
| 2924 |
+
|
| 2925 |
+
/* Correct for under-run */
|
| 2926 |
+
if ( oSettings._iDisplayStart < 0 )
|
| 2927 |
+
{
|
| 2928 |
+
oSettings._iDisplayStart = 0;
|
| 2929 |
+
}
|
| 2930 |
+
}
|
| 2931 |
+
else if ( mAction == "next" )
|
| 2932 |
+
{
|
| 2933 |
+
if ( oSettings._iDisplayLength >= 0 )
|
| 2934 |
+
{
|
| 2935 |
+
/* Make sure we are not over running the display array */
|
| 2936 |
+
if ( oSettings._iDisplayStart + oSettings._iDisplayLength < oSettings.fnRecordsDisplay() )
|
| 2937 |
+
{
|
| 2938 |
+
oSettings._iDisplayStart += oSettings._iDisplayLength;
|
| 2939 |
+
}
|
| 2940 |
+
}
|
| 2941 |
+
else
|
| 2942 |
+
{
|
| 2943 |
+
oSettings._iDisplayStart = 0;
|
| 2944 |
+
}
|
| 2945 |
+
}
|
| 2946 |
+
else if ( mAction == "last" )
|
| 2947 |
+
{
|
| 2948 |
+
if ( oSettings._iDisplayLength >= 0 )
|
| 2949 |
+
{
|
| 2950 |
+
var iPages = parseInt( (oSettings.fnRecordsDisplay()-1) / oSettings._iDisplayLength, 10 ) + 1;
|
| 2951 |
+
oSettings._iDisplayStart = (iPages-1) * oSettings._iDisplayLength;
|
| 2952 |
+
}
|
| 2953 |
+
else
|
| 2954 |
+
{
|
| 2955 |
+
oSettings._iDisplayStart = 0;
|
| 2956 |
+
}
|
| 2957 |
+
}
|
| 2958 |
+
else
|
| 2959 |
+
{
|
| 2960 |
+
_fnLog( oSettings, 0, "Unknown paging action: "+mAction );
|
| 2961 |
+
}
|
| 2962 |
+
$(oSettings.oInstance).trigger('page', oSettings);
|
| 2963 |
+
|
| 2964 |
+
return iOldStart != oSettings._iDisplayStart;
|
| 2965 |
+
}
|
| 2966 |
+
|
| 2967 |
+
|
| 2968 |
+
|
| 2969 |
+
/**
|
| 2970 |
+
* Generate the node required for the processing node
|
| 2971 |
+
* @param {object} oSettings dataTables settings object
|
| 2972 |
+
* @returns {node} Processing element
|
| 2973 |
+
* @memberof DataTable#oApi
|
| 2974 |
+
*/
|
| 2975 |
+
function _fnFeatureHtmlProcessing ( oSettings )
|
| 2976 |
+
{
|
| 2977 |
+
var nProcessing = document.createElement( 'div' );
|
| 2978 |
+
|
| 2979 |
+
if ( !oSettings.aanFeatures.r )
|
| 2980 |
+
{
|
| 2981 |
+
nProcessing.id = oSettings.sTableId+'_processing';
|
| 2982 |
+
}
|
| 2983 |
+
nProcessing.innerHTML = oSettings.oLanguage.sProcessing;
|
| 2984 |
+
nProcessing.className = oSettings.oClasses.sProcessing;
|
| 2985 |
+
oSettings.nTable.parentNode.insertBefore( nProcessing, oSettings.nTable );
|
| 2986 |
+
|
| 2987 |
+
return nProcessing;
|
| 2988 |
+
}
|
| 2989 |
+
|
| 2990 |
+
|
| 2991 |
+
/**
|
| 2992 |
+
* Display or hide the processing indicator
|
| 2993 |
+
* @param {object} oSettings dataTables settings object
|
| 2994 |
+
* @param {bool} bShow Show the processing indicator (true) or not (false)
|
| 2995 |
+
* @memberof DataTable#oApi
|
| 2996 |
+
*/
|
| 2997 |
+
function _fnProcessingDisplay ( oSettings, bShow )
|
| 2998 |
+
{
|
| 2999 |
+
if ( oSettings.oFeatures.bProcessing )
|
| 3000 |
+
{
|
| 3001 |
+
var an = oSettings.aanFeatures.r;
|
| 3002 |
+
for ( var i=0, iLen=an.length ; i<iLen ; i++ )
|
| 3003 |
+
{
|
| 3004 |
+
an[i].style.visibility = bShow ? "visible" : "hidden";
|
| 3005 |
+
}
|
| 3006 |
+
}
|
| 3007 |
+
|
| 3008 |
+
$(oSettings.oInstance).trigger('processing', [oSettings, bShow]);
|
| 3009 |
+
}
|
| 3010 |
+
|
| 3011 |
+
/**
|
| 3012 |
+
* Add any control elements for the table - specifically scrolling
|
| 3013 |
+
* @param {object} oSettings dataTables settings object
|
| 3014 |
+
* @returns {node} Node to add to the DOM
|
| 3015 |
+
* @memberof DataTable#oApi
|
| 3016 |
+
*/
|
| 3017 |
+
function _fnFeatureHtmlTable ( oSettings )
|
| 3018 |
+
{
|
| 3019 |
+
/* Check if scrolling is enabled or not - if not then leave the DOM unaltered */
|
| 3020 |
+
if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "" )
|
| 3021 |
+
{
|
| 3022 |
+
return oSettings.nTable;
|
| 3023 |
+
}
|
| 3024 |
+
|
| 3025 |
+
/*
|
| 3026 |
+
* The HTML structure that we want to generate in this function is:
|
| 3027 |
+
* div - nScroller
|
| 3028 |
+
* div - nScrollHead
|
| 3029 |
+
* div - nScrollHeadInner
|
| 3030 |
+
* table - nScrollHeadTable
|
| 3031 |
+
* thead - nThead
|
| 3032 |
+
* div - nScrollBody
|
| 3033 |
+
* table - oSettings.nTable
|
| 3034 |
+
* thead - nTheadSize
|
| 3035 |
+
* tbody - nTbody
|
| 3036 |
+
* div - nScrollFoot
|
| 3037 |
+
* div - nScrollFootInner
|
| 3038 |
+
* table - nScrollFootTable
|
| 3039 |
+
* tfoot - nTfoot
|
| 3040 |
+
*/
|
| 3041 |
+
var
|
| 3042 |
+
nScroller = document.createElement('div'),
|
| 3043 |
+
nScrollHead = document.createElement('div'),
|
| 3044 |
+
nScrollHeadInner = document.createElement('div'),
|
| 3045 |
+
nScrollBody = document.createElement('div'),
|
| 3046 |
+
nScrollFoot = document.createElement('div'),
|
| 3047 |
+
nScrollFootInner = document.createElement('div'),
|
| 3048 |
+
nScrollHeadTable = oSettings.nTable.cloneNode(false),
|
| 3049 |
+
nScrollFootTable = oSettings.nTable.cloneNode(false),
|
| 3050 |
+
nThead = oSettings.nTable.getElementsByTagName('thead')[0],
|
| 3051 |
+
nTfoot = oSettings.nTable.getElementsByTagName('tfoot').length === 0 ? null :
|
| 3052 |
+
oSettings.nTable.getElementsByTagName('tfoot')[0],
|
| 3053 |
+
oClasses = oSettings.oClasses;
|
| 3054 |
+
|
| 3055 |
+
nScrollHead.appendChild( nScrollHeadInner );
|
| 3056 |
+
nScrollFoot.appendChild( nScrollFootInner );
|
| 3057 |
+
nScrollBody.appendChild( oSettings.nTable );
|
| 3058 |
+
nScroller.appendChild( nScrollHead );
|
| 3059 |
+
nScroller.appendChild( nScrollBody );
|
| 3060 |
+
nScrollHeadInner.appendChild( nScrollHeadTable );
|
| 3061 |
+
nScrollHeadTable.appendChild( nThead );
|
| 3062 |
+
if ( nTfoot !== null )
|
| 3063 |
+
{
|
| 3064 |
+
nScroller.appendChild( nScrollFoot );
|
| 3065 |
+
nScrollFootInner.appendChild( nScrollFootTable );
|
| 3066 |
+
nScrollFootTable.appendChild( nTfoot );
|
| 3067 |
+
}
|
| 3068 |
+
|
| 3069 |
+
nScroller.className = oClasses.sScrollWrapper;
|
| 3070 |
+
nScrollHead.className = oClasses.sScrollHead;
|
| 3071 |
+
nScrollHeadInner.className = oClasses.sScrollHeadInner;
|
| 3072 |
+
nScrollBody.className = oClasses.sScrollBody;
|
| 3073 |
+
nScrollFoot.className = oClasses.sScrollFoot;
|
| 3074 |
+
nScrollFootInner.className = oClasses.sScrollFootInner;
|
| 3075 |
+
|
| 3076 |
+
if ( oSettings.oScroll.bAutoCss )
|
| 3077 |
+
{
|
| 3078 |
+
nScrollHead.style.overflow = "hidden";
|
| 3079 |
+
nScrollHead.style.position = "relative";
|
| 3080 |
+
nScrollFoot.style.overflow = "hidden";
|
| 3081 |
+
nScrollBody.style.overflow = "auto";
|
| 3082 |
+
}
|
| 3083 |
+
|
| 3084 |
+
nScrollHead.style.border = "0";
|
| 3085 |
+
nScrollHead.style.width = "100%";
|
| 3086 |
+
nScrollFoot.style.border = "0";
|
| 3087 |
+
nScrollHeadInner.style.width = oSettings.oScroll.sXInner !== "" ?
|
| 3088 |
+
oSettings.oScroll.sXInner : "100%"; /* will be overwritten */
|
| 3089 |
+
|
| 3090 |
+
/* Modify attributes to respect the clones */
|
| 3091 |
+
nScrollHeadTable.removeAttribute('id');
|
| 3092 |
+
nScrollHeadTable.style.marginLeft = "0";
|
| 3093 |
+
oSettings.nTable.style.marginLeft = "0";
|
| 3094 |
+
if ( nTfoot !== null )
|
| 3095 |
+
{
|
| 3096 |
+
nScrollFootTable.removeAttribute('id');
|
| 3097 |
+
nScrollFootTable.style.marginLeft = "0";
|
| 3098 |
+
}
|
| 3099 |
+
|
| 3100 |
+
/* Move caption elements from the body to the header, footer or leave where it is
|
| 3101 |
+
* depending on the configuration. Note that the DTD says there can be only one caption */
|
| 3102 |
+
var nCaption = $(oSettings.nTable).children('caption');
|
| 3103 |
+
if ( nCaption.length > 0 )
|
| 3104 |
+
{
|
| 3105 |
+
nCaption = nCaption[0];
|
| 3106 |
+
if ( nCaption._captionSide === "top" )
|
| 3107 |
+
{
|
| 3108 |
+
nScrollHeadTable.appendChild( nCaption );
|
| 3109 |
+
}
|
| 3110 |
+
else if ( nCaption._captionSide === "bottom" && nTfoot )
|
| 3111 |
+
{
|
| 3112 |
+
nScrollFootTable.appendChild( nCaption );
|
| 3113 |
+
}
|
| 3114 |
+
}
|
| 3115 |
+
|
| 3116 |
+
/*
|
| 3117 |
+
* Sizing
|
| 3118 |
+
*/
|
| 3119 |
+
/* When x-scrolling add the width and a scroller to move the header with the body */
|
| 3120 |
+
if ( oSettings.oScroll.sX !== "" )
|
| 3121 |
+
{
|
| 3122 |
+
nScrollHead.style.width = _fnStringToCss( oSettings.oScroll.sX );
|
| 3123 |
+
nScrollBody.style.width = _fnStringToCss( oSettings.oScroll.sX );
|
| 3124 |
+
|
| 3125 |
+
if ( nTfoot !== null )
|
| 3126 |
+
{
|
| 3127 |
+
nScrollFoot.style.width = _fnStringToCss( oSettings.oScroll.sX );
|
| 3128 |
+
}
|
| 3129 |
+
|
| 3130 |
+
/* When the body is scrolled, then we also want to scroll the headers */
|
| 3131 |
+
$(nScrollBody).scroll( function (e) {
|
| 3132 |
+
nScrollHead.scrollLeft = this.scrollLeft;
|
| 3133 |
+
|
| 3134 |
+
if ( nTfoot !== null )
|
| 3135 |
+
{
|
| 3136 |
+
nScrollFoot.scrollLeft = this.scrollLeft;
|
| 3137 |
+
}
|
| 3138 |
+
} );
|
| 3139 |
+
}
|
| 3140 |
+
|
| 3141 |
+
/* When yscrolling, add the height */
|
| 3142 |
+
if ( oSettings.oScroll.sY !== "" )
|
| 3143 |
+
{
|
| 3144 |
+
nScrollBody.style.height = _fnStringToCss( oSettings.oScroll.sY );
|
| 3145 |
+
}
|
| 3146 |
+
|
| 3147 |
+
/* Redraw - align columns across the tables */
|
| 3148 |
+
oSettings.aoDrawCallback.push( {
|
| 3149 |
+
"fn": _fnScrollDraw,
|
| 3150 |
+
"sName": "scrolling"
|
| 3151 |
+
} );
|
| 3152 |
+
|
| 3153 |
+
/* Infinite scrolling event handlers */
|
| 3154 |
+
if ( oSettings.oScroll.bInfinite )
|
| 3155 |
+
{
|
| 3156 |
+
$(nScrollBody).scroll( function() {
|
| 3157 |
+
/* Use a blocker to stop scrolling from loading more data while other data is still loading */
|
| 3158 |
+
if ( !oSettings.bDrawing && $(this).scrollTop() !== 0 )
|
| 3159 |
+
{
|
| 3160 |
+
/* Check if we should load the next data set */
|
| 3161 |
+
if ( $(this).scrollTop() + $(this).height() >
|
| 3162 |
+
$(oSettings.nTable).height() - oSettings.oScroll.iLoadGap )
|
| 3163 |
+
{
|
| 3164 |
+
/* Only do the redraw if we have to - we might be at the end of the data */
|
| 3165 |
+
if ( oSettings.fnDisplayEnd() < oSettings.fnRecordsDisplay() )
|
| 3166 |
+
{
|
| 3167 |
+
_fnPageChange( oSettings, 'next' );
|
| 3168 |
+
_fnCalculateEnd( oSettings );
|
| 3169 |
+
_fnDraw( oSettings );
|
| 3170 |
+
}
|
| 3171 |
+
}
|
| 3172 |
+
}
|
| 3173 |
+
} );
|
| 3174 |
+
}
|
| 3175 |
+
|
| 3176 |
+
oSettings.nScrollHead = nScrollHead;
|
| 3177 |
+
oSettings.nScrollFoot = nScrollFoot;
|
| 3178 |
+
|
| 3179 |
+
return nScroller;
|
| 3180 |
+
}
|
| 3181 |
+
|
| 3182 |
+
|
| 3183 |
+
/**
|
| 3184 |
+
* Update the various tables for resizing. It's a bit of a pig this function, but
|
| 3185 |
+
* basically the idea to:
|
| 3186 |
+
* 1. Re-create the table inside the scrolling div
|
| 3187 |
+
* 2. Take live measurements from the DOM
|
| 3188 |
+
* 3. Apply the measurements
|
| 3189 |
+
* 4. Clean up
|
| 3190 |
+
* @param {object} o dataTables settings object
|
| 3191 |
+
* @returns {node} Node to add to the DOM
|
| 3192 |
+
* @memberof DataTable#oApi
|
| 3193 |
+
*/
|
| 3194 |
+
function _fnScrollDraw ( o )
|
| 3195 |
+
{
|
| 3196 |
+
var
|
| 3197 |
+
nScrollHeadInner = o.nScrollHead.getElementsByTagName('div')[0],
|
| 3198 |
+
nScrollHeadTable = nScrollHeadInner.getElementsByTagName('table')[0],
|
| 3199 |
+
nScrollBody = o.nTable.parentNode,
|
| 3200 |
+
i, iLen, j, jLen, anHeadToSize, anHeadSizers, anFootSizers, anFootToSize, oStyle, iVis,
|
| 3201 |
+
nTheadSize, nTfootSize,
|
| 3202 |
+
iWidth, aApplied=[], aAppliedFooter=[], iSanityWidth,
|
| 3203 |
+
nScrollFootInner = (o.nTFoot !== null) ? o.nScrollFoot.getElementsByTagName('div')[0] : null,
|
| 3204 |
+
nScrollFootTable = (o.nTFoot !== null) ? nScrollFootInner.getElementsByTagName('table')[0] : null,
|
| 3205 |
+
ie67 = o.oBrowser.bScrollOversize,
|
| 3206 |
+
zeroOut = function(nSizer) {
|
| 3207 |
+
oStyle = nSizer.style;
|
| 3208 |
+
oStyle.paddingTop = "0";
|
| 3209 |
+
oStyle.paddingBottom = "0";
|
| 3210 |
+
oStyle.borderTopWidth = "0";
|
| 3211 |
+
oStyle.borderBottomWidth = "0";
|
| 3212 |
+
oStyle.height = 0;
|
| 3213 |
+
};
|
| 3214 |
+
|
| 3215 |
+
/*
|
| 3216 |
+
* 1. Re-create the table inside the scrolling div
|
| 3217 |
+
*/
|
| 3218 |
+
|
| 3219 |
+
/* Remove the old minimised thead and tfoot elements in the inner table */
|
| 3220 |
+
$(o.nTable).children('thead, tfoot').remove();
|
| 3221 |
+
|
| 3222 |
+
/* Clone the current header and footer elements and then place it into the inner table */
|
| 3223 |
+
nTheadSize = $(o.nTHead).clone()[0];
|
| 3224 |
+
o.nTable.insertBefore( nTheadSize, o.nTable.childNodes[0] );
|
| 3225 |
+
anHeadToSize = o.nTHead.getElementsByTagName('tr');
|
| 3226 |
+
anHeadSizers = nTheadSize.getElementsByTagName('tr');
|
| 3227 |
+
|
| 3228 |
+
if ( o.nTFoot !== null )
|
| 3229 |
+
{
|
| 3230 |
+
nTfootSize = $(o.nTFoot).clone()[0];
|
| 3231 |
+
o.nTable.insertBefore( nTfootSize, o.nTable.childNodes[1] );
|
| 3232 |
+
anFootToSize = o.nTFoot.getElementsByTagName('tr');
|
| 3233 |
+
anFootSizers = nTfootSize.getElementsByTagName('tr');
|
| 3234 |
+
}
|
| 3235 |
+
|
| 3236 |
+
/*
|
| 3237 |
+
* 2. Take live measurements from the DOM - do not alter the DOM itself!
|
| 3238 |
+
*/
|
| 3239 |
+
|
| 3240 |
+
/* Remove old sizing and apply the calculated column widths
|
| 3241 |
+
* Get the unique column headers in the newly created (cloned) header. We want to apply the
|
| 3242 |
+
* calculated sizes to this header
|
| 3243 |
+
*/
|
| 3244 |
+
if ( o.oScroll.sX === "" )
|
| 3245 |
+
{
|
| 3246 |
+
nScrollBody.style.width = '100%';
|
| 3247 |
+
nScrollHeadInner.parentNode.style.width = '100%';
|
| 3248 |
+
}
|
| 3249 |
+
|
| 3250 |
+
var nThs = _fnGetUniqueThs( o, nTheadSize );
|
| 3251 |
+
for ( i=0, iLen=nThs.length ; i<iLen ; i++ )
|
| 3252 |
+
{
|
| 3253 |
+
iVis = _fnVisibleToColumnIndex( o, i );
|
| 3254 |
+
nThs[i].style.width = o.aoColumns[iVis].sWidth;
|
| 3255 |
+
}
|
| 3256 |
+
|
| 3257 |
+
if ( o.nTFoot !== null )
|
| 3258 |
+
{
|
| 3259 |
+
_fnApplyToChildren( function(n) {
|
| 3260 |
+
n.style.width = "";
|
| 3261 |
+
}, anFootSizers );
|
| 3262 |
+
}
|
| 3263 |
+
|
| 3264 |
+
// If scroll collapse is enabled, when we put the headers back into the body for sizing, we
|
| 3265 |
+
// will end up forcing the scrollbar to appear, making our measurements wrong for when we
|
| 3266 |
+
// then hide it (end of this function), so add the header height to the body scroller.
|
| 3267 |
+
if ( o.oScroll.bCollapse && o.oScroll.sY !== "" )
|
| 3268 |
+
{
|
| 3269 |
+
nScrollBody.style.height = (nScrollBody.offsetHeight + o.nTHead.offsetHeight)+"px";
|
| 3270 |
+
}
|
| 3271 |
+
|
| 3272 |
+
/* Size the table as a whole */
|
| 3273 |
+
iSanityWidth = $(o.nTable).outerWidth();
|
| 3274 |
+
if ( o.oScroll.sX === "" )
|
| 3275 |
+
{
|
| 3276 |
+
/* No x scrolling */
|
| 3277 |
+
o.nTable.style.width = "100%";
|
| 3278 |
+
|
| 3279 |
+
/* I know this is rubbish - but IE7 will make the width of the table when 100% include
|
| 3280 |
+
* the scrollbar - which is shouldn't. When there is a scrollbar we need to take this
|
| 3281 |
+
* into account.
|
| 3282 |
+
*/
|
| 3283 |
+
if ( ie67 && ($('tbody', nScrollBody).height() > nScrollBody.offsetHeight ||
|
| 3284 |
+
$(nScrollBody).css('overflow-y') == "scroll") )
|
| 3285 |
+
{
|
| 3286 |
+
o.nTable.style.width = _fnStringToCss( $(o.nTable).outerWidth() - o.oScroll.iBarWidth);
|
| 3287 |
+
}
|
| 3288 |
+
}
|
| 3289 |
+
else
|
| 3290 |
+
{
|
| 3291 |
+
if ( o.oScroll.sXInner !== "" )
|
| 3292 |
+
{
|
| 3293 |
+
/* x scroll inner has been given - use it */
|
| 3294 |
+
o.nTable.style.width = _fnStringToCss(o.oScroll.sXInner);
|
| 3295 |
+
}
|
| 3296 |
+
else if ( iSanityWidth == $(nScrollBody).width() &&
|
| 3297 |
+
$(nScrollBody).height() < $(o.nTable).height() )
|
| 3298 |
+
{
|
| 3299 |
+
/* There is y-scrolling - try to take account of the y scroll bar */
|
| 3300 |
+
o.nTable.style.width = _fnStringToCss( iSanityWidth-o.oScroll.iBarWidth );
|
| 3301 |
+
if ( $(o.nTable).outerWidth() > iSanityWidth-o.oScroll.iBarWidth )
|
| 3302 |
+
{
|
| 3303 |
+
/* Not possible to take account of it */
|
| 3304 |
+
o.nTable.style.width = _fnStringToCss( iSanityWidth );
|
| 3305 |
+
}
|
| 3306 |
+
}
|
| 3307 |
+
else
|
| 3308 |
+
{
|
| 3309 |
+
/* All else fails */
|
| 3310 |
+
o.nTable.style.width = _fnStringToCss( iSanityWidth );
|
| 3311 |
+
}
|
| 3312 |
+
}
|
| 3313 |
+
|
| 3314 |
+
/* Recalculate the sanity width - now that we've applied the required width, before it was
|
| 3315 |
+
* a temporary variable. This is required because the column width calculation is done
|
| 3316 |
+
* before this table DOM is created.
|
| 3317 |
+
*/
|
| 3318 |
+
iSanityWidth = $(o.nTable).outerWidth();
|
| 3319 |
+
|
| 3320 |
+
/* We want the hidden header to have zero height, so remove padding and borders. Then
|
| 3321 |
+
* set the width based on the real headers
|
| 3322 |
+
*/
|
| 3323 |
+
|
| 3324 |
+
// Apply all styles in one pass. Invalidates layout only once because we don't read any
|
| 3325 |
+
// DOM properties.
|
| 3326 |
+
_fnApplyToChildren( zeroOut, anHeadSizers );
|
| 3327 |
+
|
| 3328 |
+
// Read all widths in next pass. Forces layout only once because we do not change
|
| 3329 |
+
// any DOM properties.
|
| 3330 |
+
_fnApplyToChildren( function(nSizer) {
|
| 3331 |
+
aApplied.push( _fnStringToCss( $(nSizer).width() ) );
|
| 3332 |
+
}, anHeadSizers );
|
| 3333 |
+
|
| 3334 |
+
// Apply all widths in final pass. Invalidates layout only once because we do not
|
| 3335 |
+
// read any DOM properties.
|
| 3336 |
+
_fnApplyToChildren( function(nToSize, i) {
|
| 3337 |
+
nToSize.style.width = aApplied[i];
|
| 3338 |
+
}, anHeadToSize );
|
| 3339 |
+
|
| 3340 |
+
$(anHeadSizers).height(0);
|
| 3341 |
+
|
| 3342 |
+
/* Same again with the footer if we have one */
|
| 3343 |
+
if ( o.nTFoot !== null )
|
| 3344 |
+
{
|
| 3345 |
+
_fnApplyToChildren( zeroOut, anFootSizers );
|
| 3346 |
+
|
| 3347 |
+
_fnApplyToChildren( function(nSizer) {
|
| 3348 |
+
aAppliedFooter.push( _fnStringToCss( $(nSizer).width() ) );
|
| 3349 |
+
}, anFootSizers );
|
| 3350 |
+
|
| 3351 |
+
_fnApplyToChildren( function(nToSize, i) {
|
| 3352 |
+
nToSize.style.width = aAppliedFooter[i];
|
| 3353 |
+
}, anFootToSize );
|
| 3354 |
+
|
| 3355 |
+
$(anFootSizers).height(0);
|
| 3356 |
+
}
|
| 3357 |
+
|
| 3358 |
+
/*
|
| 3359 |
+
* 3. Apply the measurements
|
| 3360 |
+
*/
|
| 3361 |
+
|
| 3362 |
+
/* "Hide" the header and footer that we used for the sizing. We want to also fix their width
|
| 3363 |
+
* to what they currently are
|
| 3364 |
+
*/
|
| 3365 |
+
_fnApplyToChildren( function(nSizer, i) {
|
| 3366 |
+
nSizer.innerHTML = "";
|
| 3367 |
+
nSizer.style.width = aApplied[i];
|
| 3368 |
+
}, anHeadSizers );
|
| 3369 |
+
|
| 3370 |
+
if ( o.nTFoot !== null )
|
| 3371 |
+
{
|
| 3372 |
+
_fnApplyToChildren( function(nSizer, i) {
|
| 3373 |
+
nSizer.innerHTML = "";
|
| 3374 |
+
nSizer.style.width = aAppliedFooter[i];
|
| 3375 |
+
}, anFootSizers );
|
| 3376 |
+
}
|
| 3377 |
+
|
| 3378 |
+
/* Sanity check that the table is of a sensible width. If not then we are going to get
|
| 3379 |
+
* misalignment - try to prevent this by not allowing the table to shrink below its min width
|
| 3380 |
+
*/
|
| 3381 |
+
if ( $(o.nTable).outerWidth() < iSanityWidth )
|
| 3382 |
+
{
|
| 3383 |
+
/* The min width depends upon if we have a vertical scrollbar visible or not */
|
| 3384 |
+
var iCorrection = ((nScrollBody.scrollHeight > nScrollBody.offsetHeight ||
|
| 3385 |
+
$(nScrollBody).css('overflow-y') == "scroll")) ?
|
| 3386 |
+
iSanityWidth+o.oScroll.iBarWidth : iSanityWidth;
|
| 3387 |
+
|
| 3388 |
+
/* IE6/7 are a law unto themselves... */
|
| 3389 |
+
if ( ie67 && (nScrollBody.scrollHeight >
|
| 3390 |
+
nScrollBody.offsetHeight || $(nScrollBody).css('overflow-y') == "scroll") )
|
| 3391 |
+
{
|
| 3392 |
+
o.nTable.style.width = _fnStringToCss( iCorrection-o.oScroll.iBarWidth );
|
| 3393 |
+
}
|
| 3394 |
+
|
| 3395 |
+
/* Apply the calculated minimum width to the table wrappers */
|
| 3396 |
+
nScrollBody.style.width = _fnStringToCss( iCorrection );
|
| 3397 |
+
o.nScrollHead.style.width = _fnStringToCss( iCorrection );
|
| 3398 |
+
|
| 3399 |
+
if ( o.nTFoot !== null )
|
| 3400 |
+
{
|
| 3401 |
+
o.nScrollFoot.style.width = _fnStringToCss( iCorrection );
|
| 3402 |
+
}
|
| 3403 |
+
|
| 3404 |
+
/* And give the user a warning that we've stopped the table getting too small */
|
| 3405 |
+
if ( o.oScroll.sX === "" )
|
| 3406 |
+
{
|
| 3407 |
+
_fnLog( o, 1, "The table cannot fit into the current element which will cause column"+
|
| 3408 |
+
" misalignment. The table has been drawn at its minimum possible width." );
|
| 3409 |
+
}
|
| 3410 |
+
else if ( o.oScroll.sXInner !== "" )
|
| 3411 |
+
{
|
| 3412 |
+
_fnLog( o, 1, "The table cannot fit into the current element which will cause column"+
|
| 3413 |
+
" misalignment. Increase the sScrollXInner value or remove it to allow automatic"+
|
| 3414 |
+
" calculation" );
|
| 3415 |
+
}
|
| 3416 |
+
}
|
| 3417 |
+
else
|
| 3418 |
+
{
|
| 3419 |
+
nScrollBody.style.width = _fnStringToCss( '100%' );
|
| 3420 |
+
o.nScrollHead.style.width = _fnStringToCss( '100%' );
|
| 3421 |
+
|
| 3422 |
+
if ( o.nTFoot !== null )
|
| 3423 |
+
{
|
| 3424 |
+
o.nScrollFoot.style.width = _fnStringToCss( '100%' );
|
| 3425 |
+
}
|
| 3426 |
+
}
|
| 3427 |
+
|
| 3428 |
+
|
| 3429 |
+
/*
|
| 3430 |
+
* 4. Clean up
|
| 3431 |
+
*/
|
| 3432 |
+
if ( o.oScroll.sY === "" )
|
| 3433 |
+
{
|
| 3434 |
+
/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting
|
| 3435 |
+
* the scrollbar height from the visible display, rather than adding it on. We need to
|
| 3436 |
+
* set the height in order to sort this. Don't want to do it in any other browsers.
|
| 3437 |
+
*/
|
| 3438 |
+
if ( ie67 )
|
| 3439 |
+
{
|
| 3440 |
+
nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+o.oScroll.iBarWidth );
|
| 3441 |
+
}
|
| 3442 |
+
}
|
| 3443 |
+
|
| 3444 |
+
if ( o.oScroll.sY !== "" && o.oScroll.bCollapse )
|
| 3445 |
+
{
|
| 3446 |
+
nScrollBody.style.height = _fnStringToCss( o.oScroll.sY );
|
| 3447 |
+
|
| 3448 |
+
var iExtra = (o.oScroll.sX !== "" && o.nTable.offsetWidth > nScrollBody.offsetWidth) ?
|
| 3449 |
+
o.oScroll.iBarWidth : 0;
|
| 3450 |
+
if ( o.nTable.offsetHeight < nScrollBody.offsetHeight )
|
| 3451 |
+
{
|
| 3452 |
+
nScrollBody.style.height = _fnStringToCss( o.nTable.offsetHeight+iExtra );
|
| 3453 |
+
}
|
| 3454 |
+
}
|
| 3455 |
+
|
| 3456 |
+
/* Finally set the width's of the header and footer tables */
|
| 3457 |
+
var iOuterWidth = $(o.nTable).outerWidth();
|
| 3458 |
+
nScrollHeadTable.style.width = _fnStringToCss( iOuterWidth );
|
| 3459 |
+
nScrollHeadInner.style.width = _fnStringToCss( iOuterWidth );
|
| 3460 |
+
|
| 3461 |
+
// Figure out if there are scrollbar present - if so then we need a the header and footer to
|
| 3462 |
+
// provide a bit more space to allow "overflow" scrolling (i.e. past the scrollbar)
|
| 3463 |
+
var bScrolling = $(o.nTable).height() > nScrollBody.clientHeight || $(nScrollBody).css('overflow-y') == "scroll";
|
| 3464 |
+
nScrollHeadInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px";
|
| 3465 |
+
|
| 3466 |
+
if ( o.nTFoot !== null )
|
| 3467 |
+
{
|
| 3468 |
+
nScrollFootTable.style.width = _fnStringToCss( iOuterWidth );
|
| 3469 |
+
nScrollFootInner.style.width = _fnStringToCss( iOuterWidth );
|
| 3470 |
+
nScrollFootInner.style.paddingRight = bScrolling ? o.oScroll.iBarWidth+"px" : "0px";
|
| 3471 |
+
}
|
| 3472 |
+
|
| 3473 |
+
/* Adjust the position of the header in case we loose the y-scrollbar */
|
| 3474 |
+
$(nScrollBody).scroll();
|
| 3475 |
+
|
| 3476 |
+
/* If sorting or filtering has occurred, jump the scrolling back to the top */
|
| 3477 |
+
if ( o.bSorted || o.bFiltered )
|
| 3478 |
+
{
|
| 3479 |
+
nScrollBody.scrollTop = 0;
|
| 3480 |
+
}
|
| 3481 |
+
}
|
| 3482 |
+
|
| 3483 |
+
|
| 3484 |
+
/**
|
| 3485 |
+
* Apply a given function to the display child nodes of an element array (typically
|
| 3486 |
+
* TD children of TR rows
|
| 3487 |
+
* @param {function} fn Method to apply to the objects
|
| 3488 |
+
* @param array {nodes} an1 List of elements to look through for display children
|
| 3489 |
+
* @param array {nodes} an2 Another list (identical structure to the first) - optional
|
| 3490 |
+
* @memberof DataTable#oApi
|
| 3491 |
+
*/
|
| 3492 |
+
function _fnApplyToChildren( fn, an1, an2 )
|
| 3493 |
+
{
|
| 3494 |
+
var index=0, i=0, iLen=an1.length;
|
| 3495 |
+
var nNode1, nNode2;
|
| 3496 |
+
|
| 3497 |
+
while ( i < iLen )
|
| 3498 |
+
{
|
| 3499 |
+
nNode1 = an1[i].firstChild;
|
| 3500 |
+
nNode2 = an2 ? an2[i].firstChild : null;
|
| 3501 |
+
while ( nNode1 )
|
| 3502 |
+
{
|
| 3503 |
+
if ( nNode1.nodeType === 1 )
|
| 3504 |
+
{
|
| 3505 |
+
if ( an2 )
|
| 3506 |
+
{
|
| 3507 |
+
fn( nNode1, nNode2, index );
|
| 3508 |
+
}
|
| 3509 |
+
else
|
| 3510 |
+
{
|
| 3511 |
+
fn( nNode1, index );
|
| 3512 |
+
}
|
| 3513 |
+
index++;
|
| 3514 |
+
}
|
| 3515 |
+
nNode1 = nNode1.nextSibling;
|
| 3516 |
+
nNode2 = an2 ? nNode2.nextSibling : null;
|
| 3517 |
+
}
|
| 3518 |
+
i++;
|
| 3519 |
+
}
|
| 3520 |
+
}
|
| 3521 |
+
|
| 3522 |
+
/**
|
| 3523 |
+
* Convert a CSS unit width to pixels (e.g. 2em)
|
| 3524 |
+
* @param {string} sWidth width to be converted
|
| 3525 |
+
* @param {node} nParent parent to get the with for (required for relative widths) - optional
|
| 3526 |
+
* @returns {int} iWidth width in pixels
|
| 3527 |
+
* @memberof DataTable#oApi
|
| 3528 |
+
*/
|
| 3529 |
+
function _fnConvertToWidth ( sWidth, nParent )
|
| 3530 |
+
{
|
| 3531 |
+
if ( !sWidth || sWidth === null || sWidth === '' )
|
| 3532 |
+
{
|
| 3533 |
+
return 0;
|
| 3534 |
+
}
|
| 3535 |
+
|
| 3536 |
+
if ( !nParent )
|
| 3537 |
+
{
|
| 3538 |
+
nParent = document.body;
|
| 3539 |
+
}
|
| 3540 |
+
|
| 3541 |
+
var iWidth;
|
| 3542 |
+
var nTmp = document.createElement( "div" );
|
| 3543 |
+
nTmp.style.width = _fnStringToCss( sWidth );
|
| 3544 |
+
|
| 3545 |
+
nParent.appendChild( nTmp );
|
| 3546 |
+
iWidth = nTmp.offsetWidth;
|
| 3547 |
+
nParent.removeChild( nTmp );
|
| 3548 |
+
|
| 3549 |
+
return ( iWidth );
|
| 3550 |
+
}
|
| 3551 |
+
|
| 3552 |
+
|
| 3553 |
+
/**
|
| 3554 |
+
* Calculate the width of columns for the table
|
| 3555 |
+
* @param {object} oSettings dataTables settings object
|
| 3556 |
+
* @memberof DataTable#oApi
|
| 3557 |
+
*/
|
| 3558 |
+
function _fnCalculateColumnWidths ( oSettings )
|
| 3559 |
+
{
|
| 3560 |
+
var iTableWidth = oSettings.nTable.offsetWidth;
|
| 3561 |
+
var iUserInputs = 0;
|
| 3562 |
+
var iTmpWidth;
|
| 3563 |
+
var iVisibleColumns = 0;
|
| 3564 |
+
var iColums = oSettings.aoColumns.length;
|
| 3565 |
+
var i, iIndex, iCorrector, iWidth;
|
| 3566 |
+
var oHeaders = $('th', oSettings.nTHead);
|
| 3567 |
+
var widthAttr = oSettings.nTable.getAttribute('width');
|
| 3568 |
+
var nWrapper = oSettings.nTable.parentNode;
|
| 3569 |
+
|
| 3570 |
+
/* Convert any user input sizes into pixel sizes */
|
| 3571 |
+
for ( i=0 ; i<iColums ; i++ )
|
| 3572 |
+
{
|
| 3573 |
+
if ( oSettings.aoColumns[i].bVisible )
|
| 3574 |
+
{
|
| 3575 |
+
iVisibleColumns++;
|
| 3576 |
+
|
| 3577 |
+
if ( oSettings.aoColumns[i].sWidth !== null )
|
| 3578 |
+
{
|
| 3579 |
+
iTmpWidth = _fnConvertToWidth( oSettings.aoColumns[i].sWidthOrig,
|
| 3580 |
+
nWrapper );
|
| 3581 |
+
if ( iTmpWidth !== null )
|
| 3582 |
+
{
|
| 3583 |
+
oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
|
| 3584 |
+
}
|
| 3585 |
+
|
| 3586 |
+
iUserInputs++;
|
| 3587 |
+
}
|
| 3588 |
+
}
|
| 3589 |
+
}
|
| 3590 |
+
|
| 3591 |
+
/* If the number of columns in the DOM equals the number that we have to process in
|
| 3592 |
+
* DataTables, then we can use the offsets that are created by the web-browser. No custom
|
| 3593 |
+
* sizes can be set in order for this to happen, nor scrolling used
|
| 3594 |
+
*/
|
| 3595 |
+
if ( iColums == oHeaders.length && iUserInputs === 0 && iVisibleColumns == iColums &&
|
| 3596 |
+
oSettings.oScroll.sX === "" && oSettings.oScroll.sY === "" )
|
| 3597 |
+
{
|
| 3598 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 3599 |
+
{
|
| 3600 |
+
iTmpWidth = $(oHeaders[i]).width();
|
| 3601 |
+
if ( iTmpWidth !== null )
|
| 3602 |
+
{
|
| 3603 |
+
oSettings.aoColumns[i].sWidth = _fnStringToCss( iTmpWidth );
|
| 3604 |
+
}
|
| 3605 |
+
}
|
| 3606 |
+
}
|
| 3607 |
+
else
|
| 3608 |
+
{
|
| 3609 |
+
/* Otherwise we are going to have to do some calculations to get the width of each column.
|
| 3610 |
+
* Construct a 1 row table with the widest node in the data, and any user defined widths,
|
| 3611 |
+
* then insert it into the DOM and allow the browser to do all the hard work of
|
| 3612 |
+
* calculating table widths.
|
| 3613 |
+
*/
|
| 3614 |
+
var
|
| 3615 |
+
nCalcTmp = oSettings.nTable.cloneNode( false ),
|
| 3616 |
+
nTheadClone = oSettings.nTHead.cloneNode(true),
|
| 3617 |
+
nBody = document.createElement( 'tbody' ),
|
| 3618 |
+
nTr = document.createElement( 'tr' ),
|
| 3619 |
+
nDivSizing;
|
| 3620 |
+
|
| 3621 |
+
nCalcTmp.removeAttribute( "id" );
|
| 3622 |
+
nCalcTmp.appendChild( nTheadClone );
|
| 3623 |
+
if ( oSettings.nTFoot !== null )
|
| 3624 |
+
{
|
| 3625 |
+
nCalcTmp.appendChild( oSettings.nTFoot.cloneNode(true) );
|
| 3626 |
+
_fnApplyToChildren( function(n) {
|
| 3627 |
+
n.style.width = "";
|
| 3628 |
+
}, nCalcTmp.getElementsByTagName('tr') );
|
| 3629 |
+
}
|
| 3630 |
+
|
| 3631 |
+
nCalcTmp.appendChild( nBody );
|
| 3632 |
+
nBody.appendChild( nTr );
|
| 3633 |
+
|
| 3634 |
+
/* Remove any sizing that was previously applied by the styles */
|
| 3635 |
+
var jqColSizing = $('thead th', nCalcTmp);
|
| 3636 |
+
if ( jqColSizing.length === 0 )
|
| 3637 |
+
{
|
| 3638 |
+
jqColSizing = $('tbody tr:eq(0)>td', nCalcTmp);
|
| 3639 |
+
}
|
| 3640 |
+
|
| 3641 |
+
/* Apply custom sizing to the cloned header */
|
| 3642 |
+
var nThs = _fnGetUniqueThs( oSettings, nTheadClone );
|
| 3643 |
+
iCorrector = 0;
|
| 3644 |
+
for ( i=0 ; i<iColums ; i++ )
|
| 3645 |
+
{
|
| 3646 |
+
var oColumn = oSettings.aoColumns[i];
|
| 3647 |
+
if ( oColumn.bVisible && oColumn.sWidthOrig !== null && oColumn.sWidthOrig !== "" )
|
| 3648 |
+
{
|
| 3649 |
+
nThs[i-iCorrector].style.width = _fnStringToCss( oColumn.sWidthOrig );
|
| 3650 |
+
}
|
| 3651 |
+
else if ( oColumn.bVisible )
|
| 3652 |
+
{
|
| 3653 |
+
nThs[i-iCorrector].style.width = "";
|
| 3654 |
+
}
|
| 3655 |
+
else
|
| 3656 |
+
{
|
| 3657 |
+
iCorrector++;
|
| 3658 |
+
}
|
| 3659 |
+
}
|
| 3660 |
+
|
| 3661 |
+
/* Find the biggest td for each column and put it into the table */
|
| 3662 |
+
for ( i=0 ; i<iColums ; i++ )
|
| 3663 |
+
{
|
| 3664 |
+
if ( oSettings.aoColumns[i].bVisible )
|
| 3665 |
+
{
|
| 3666 |
+
var nTd = _fnGetWidestNode( oSettings, i );
|
| 3667 |
+
if ( nTd !== null )
|
| 3668 |
+
{
|
| 3669 |
+
nTd = nTd.cloneNode(true);
|
| 3670 |
+
if ( oSettings.aoColumns[i].sContentPadding !== "" )
|
| 3671 |
+
{
|
| 3672 |
+
nTd.innerHTML += oSettings.aoColumns[i].sContentPadding;
|
| 3673 |
+
}
|
| 3674 |
+
nTr.appendChild( nTd );
|
| 3675 |
+
}
|
| 3676 |
+
}
|
| 3677 |
+
}
|
| 3678 |
+
|
| 3679 |
+
/* Build the table and 'display' it */
|
| 3680 |
+
nWrapper.appendChild( nCalcTmp );
|
| 3681 |
+
|
| 3682 |
+
/* When scrolling (X or Y) we want to set the width of the table as appropriate. However,
|
| 3683 |
+
* when not scrolling leave the table width as it is. This results in slightly different,
|
| 3684 |
+
* but I think correct behaviour
|
| 3685 |
+
*/
|
| 3686 |
+
if ( oSettings.oScroll.sX !== "" && oSettings.oScroll.sXInner !== "" )
|
| 3687 |
+
{
|
| 3688 |
+
nCalcTmp.style.width = _fnStringToCss(oSettings.oScroll.sXInner);
|
| 3689 |
+
}
|
| 3690 |
+
else if ( oSettings.oScroll.sX !== "" )
|
| 3691 |
+
{
|
| 3692 |
+
nCalcTmp.style.width = "";
|
| 3693 |
+
if ( $(nCalcTmp).width() < nWrapper.offsetWidth )
|
| 3694 |
+
{
|
| 3695 |
+
nCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );
|
| 3696 |
+
}
|
| 3697 |
+
}
|
| 3698 |
+
else if ( oSettings.oScroll.sY !== "" )
|
| 3699 |
+
{
|
| 3700 |
+
nCalcTmp.style.width = _fnStringToCss( nWrapper.offsetWidth );
|
| 3701 |
+
}
|
| 3702 |
+
else if ( widthAttr )
|
| 3703 |
+
{
|
| 3704 |
+
nCalcTmp.style.width = _fnStringToCss( widthAttr );
|
| 3705 |
+
}
|
| 3706 |
+
nCalcTmp.style.visibility = "hidden";
|
| 3707 |
+
|
| 3708 |
+
/* Scrolling considerations */
|
| 3709 |
+
_fnScrollingWidthAdjust( oSettings, nCalcTmp );
|
| 3710 |
+
|
| 3711 |
+
/* Read the width's calculated by the browser and store them for use by the caller. We
|
| 3712 |
+
* first of all try to use the elements in the body, but it is possible that there are
|
| 3713 |
+
* no elements there, under which circumstances we use the header elements
|
| 3714 |
+
*/
|
| 3715 |
+
var oNodes = $("tbody tr:eq(0)", nCalcTmp).children();
|
| 3716 |
+
if ( oNodes.length === 0 )
|
| 3717 |
+
{
|
| 3718 |
+
oNodes = _fnGetUniqueThs( oSettings, $('thead', nCalcTmp)[0] );
|
| 3719 |
+
}
|
| 3720 |
+
|
| 3721 |
+
/* Browsers need a bit of a hand when a width is assigned to any columns when
|
| 3722 |
+
* x-scrolling as they tend to collapse the table to the min-width, even if
|
| 3723 |
+
* we sent the column widths. So we need to keep track of what the table width
|
| 3724 |
+
* should be by summing the user given values, and the automatic values
|
| 3725 |
+
*/
|
| 3726 |
+
if ( oSettings.oScroll.sX !== "" )
|
| 3727 |
+
{
|
| 3728 |
+
var iTotal = 0;
|
| 3729 |
+
iCorrector = 0;
|
| 3730 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 3731 |
+
{
|
| 3732 |
+
if ( oSettings.aoColumns[i].bVisible )
|
| 3733 |
+
{
|
| 3734 |
+
if ( oSettings.aoColumns[i].sWidthOrig === null )
|
| 3735 |
+
{
|
| 3736 |
+
iTotal += $(oNodes[iCorrector]).outerWidth();
|
| 3737 |
+
}
|
| 3738 |
+
else
|
| 3739 |
+
{
|
| 3740 |
+
iTotal += parseInt(oSettings.aoColumns[i].sWidth.replace('px',''), 10) +
|
| 3741 |
+
($(oNodes[iCorrector]).outerWidth() - $(oNodes[iCorrector]).width());
|
| 3742 |
+
}
|
| 3743 |
+
iCorrector++;
|
| 3744 |
+
}
|
| 3745 |
+
}
|
| 3746 |
+
|
| 3747 |
+
nCalcTmp.style.width = _fnStringToCss( iTotal );
|
| 3748 |
+
oSettings.nTable.style.width = _fnStringToCss( iTotal );
|
| 3749 |
+
}
|
| 3750 |
+
|
| 3751 |
+
iCorrector = 0;
|
| 3752 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 3753 |
+
{
|
| 3754 |
+
if ( oSettings.aoColumns[i].bVisible )
|
| 3755 |
+
{
|
| 3756 |
+
iWidth = $(oNodes[iCorrector]).width();
|
| 3757 |
+
if ( iWidth !== null && iWidth > 0 )
|
| 3758 |
+
{
|
| 3759 |
+
oSettings.aoColumns[i].sWidth = _fnStringToCss( iWidth );
|
| 3760 |
+
}
|
| 3761 |
+
iCorrector++;
|
| 3762 |
+
}
|
| 3763 |
+
}
|
| 3764 |
+
|
| 3765 |
+
var cssWidth = $(nCalcTmp).css('width');
|
| 3766 |
+
oSettings.nTable.style.width = (cssWidth.indexOf('%') !== -1) ?
|
| 3767 |
+
cssWidth : _fnStringToCss( $(nCalcTmp).outerWidth() );
|
| 3768 |
+
nCalcTmp.parentNode.removeChild( nCalcTmp );
|
| 3769 |
+
}
|
| 3770 |
+
|
| 3771 |
+
if ( widthAttr )
|
| 3772 |
+
{
|
| 3773 |
+
oSettings.nTable.style.width = _fnStringToCss( widthAttr );
|
| 3774 |
+
}
|
| 3775 |
+
}
|
| 3776 |
+
|
| 3777 |
+
|
| 3778 |
+
/**
|
| 3779 |
+
* Adjust a table's width to take account of scrolling
|
| 3780 |
+
* @param {object} oSettings dataTables settings object
|
| 3781 |
+
* @param {node} n table node
|
| 3782 |
+
* @memberof DataTable#oApi
|
| 3783 |
+
*/
|
| 3784 |
+
function _fnScrollingWidthAdjust ( oSettings, n )
|
| 3785 |
+
{
|
| 3786 |
+
if ( oSettings.oScroll.sX === "" && oSettings.oScroll.sY !== "" )
|
| 3787 |
+
{
|
| 3788 |
+
/* When y-scrolling only, we want to remove the width of the scroll bar so the table
|
| 3789 |
+
* + scroll bar will fit into the area avaialble.
|
| 3790 |
+
*/
|
| 3791 |
+
var iOrigWidth = $(n).width();
|
| 3792 |
+
n.style.width = _fnStringToCss( $(n).outerWidth()-oSettings.oScroll.iBarWidth );
|
| 3793 |
+
}
|
| 3794 |
+
else if ( oSettings.oScroll.sX !== "" )
|
| 3795 |
+
{
|
| 3796 |
+
/* When x-scrolling both ways, fix the table at it's current size, without adjusting */
|
| 3797 |
+
n.style.width = _fnStringToCss( $(n).outerWidth() );
|
| 3798 |
+
}
|
| 3799 |
+
}
|
| 3800 |
+
|
| 3801 |
+
|
| 3802 |
+
/**
|
| 3803 |
+
* Get the widest node
|
| 3804 |
+
* @param {object} oSettings dataTables settings object
|
| 3805 |
+
* @param {int} iCol column of interest
|
| 3806 |
+
* @returns {node} widest table node
|
| 3807 |
+
* @memberof DataTable#oApi
|
| 3808 |
+
*/
|
| 3809 |
+
function _fnGetWidestNode( oSettings, iCol )
|
| 3810 |
+
{
|
| 3811 |
+
var iMaxIndex = _fnGetMaxLenString( oSettings, iCol );
|
| 3812 |
+
if ( iMaxIndex < 0 )
|
| 3813 |
+
{
|
| 3814 |
+
return null;
|
| 3815 |
+
}
|
| 3816 |
+
|
| 3817 |
+
if ( oSettings.aoData[iMaxIndex].nTr === null )
|
| 3818 |
+
{
|
| 3819 |
+
var n = document.createElement('td');
|
| 3820 |
+
n.innerHTML = _fnGetCellData( oSettings, iMaxIndex, iCol, '' );
|
| 3821 |
+
return n;
|
| 3822 |
+
}
|
| 3823 |
+
return _fnGetTdNodes(oSettings, iMaxIndex)[iCol];
|
| 3824 |
+
}
|
| 3825 |
+
|
| 3826 |
+
|
| 3827 |
+
/**
|
| 3828 |
+
* Get the maximum strlen for each data column
|
| 3829 |
+
* @param {object} oSettings dataTables settings object
|
| 3830 |
+
* @param {int} iCol column of interest
|
| 3831 |
+
* @returns {string} max string length for each column
|
| 3832 |
+
* @memberof DataTable#oApi
|
| 3833 |
+
*/
|
| 3834 |
+
function _fnGetMaxLenString( oSettings, iCol )
|
| 3835 |
+
{
|
| 3836 |
+
var iMax = -1;
|
| 3837 |
+
var iMaxIndex = -1;
|
| 3838 |
+
|
| 3839 |
+
for ( var i=0 ; i<oSettings.aoData.length ; i++ )
|
| 3840 |
+
{
|
| 3841 |
+
var s = _fnGetCellData( oSettings, i, iCol, 'display' )+"";
|
| 3842 |
+
s = s.replace( /<.*?>/g, "" );
|
| 3843 |
+
if ( s.length > iMax )
|
| 3844 |
+
{
|
| 3845 |
+
iMax = s.length;
|
| 3846 |
+
iMaxIndex = i;
|
| 3847 |
+
}
|
| 3848 |
+
}
|
| 3849 |
+
|
| 3850 |
+
return iMaxIndex;
|
| 3851 |
+
}
|
| 3852 |
+
|
| 3853 |
+
|
| 3854 |
+
/**
|
| 3855 |
+
* Append a CSS unit (only if required) to a string
|
| 3856 |
+
* @param {array} aArray1 first array
|
| 3857 |
+
* @param {array} aArray2 second array
|
| 3858 |
+
* @returns {int} 0 if match, 1 if length is different, 2 if no match
|
| 3859 |
+
* @memberof DataTable#oApi
|
| 3860 |
+
*/
|
| 3861 |
+
function _fnStringToCss( s )
|
| 3862 |
+
{
|
| 3863 |
+
if ( s === null )
|
| 3864 |
+
{
|
| 3865 |
+
return "0px";
|
| 3866 |
+
}
|
| 3867 |
+
|
| 3868 |
+
if ( typeof s == 'number' )
|
| 3869 |
+
{
|
| 3870 |
+
if ( s < 0 )
|
| 3871 |
+
{
|
| 3872 |
+
return "0px";
|
| 3873 |
+
}
|
| 3874 |
+
return s+"px";
|
| 3875 |
+
}
|
| 3876 |
+
|
| 3877 |
+
/* Check if the last character is not 0-9 */
|
| 3878 |
+
var c = s.charCodeAt( s.length-1 );
|
| 3879 |
+
if (c < 0x30 || c > 0x39)
|
| 3880 |
+
{
|
| 3881 |
+
return s;
|
| 3882 |
+
}
|
| 3883 |
+
return s+"px";
|
| 3884 |
+
}
|
| 3885 |
+
|
| 3886 |
+
|
| 3887 |
+
/**
|
| 3888 |
+
* Get the width of a scroll bar in this browser being used
|
| 3889 |
+
* @returns {int} width in pixels
|
| 3890 |
+
* @memberof DataTable#oApi
|
| 3891 |
+
*/
|
| 3892 |
+
function _fnScrollBarWidth ()
|
| 3893 |
+
{
|
| 3894 |
+
var inner = document.createElement('p');
|
| 3895 |
+
var style = inner.style;
|
| 3896 |
+
style.width = "100%";
|
| 3897 |
+
style.height = "200px";
|
| 3898 |
+
style.padding = "0px";
|
| 3899 |
+
|
| 3900 |
+
var outer = document.createElement('div');
|
| 3901 |
+
style = outer.style;
|
| 3902 |
+
style.position = "absolute";
|
| 3903 |
+
style.top = "0px";
|
| 3904 |
+
style.left = "0px";
|
| 3905 |
+
style.visibility = "hidden";
|
| 3906 |
+
style.width = "200px";
|
| 3907 |
+
style.height = "150px";
|
| 3908 |
+
style.padding = "0px";
|
| 3909 |
+
style.overflow = "hidden";
|
| 3910 |
+
outer.appendChild(inner);
|
| 3911 |
+
|
| 3912 |
+
document.body.appendChild(outer);
|
| 3913 |
+
var w1 = inner.offsetWidth;
|
| 3914 |
+
outer.style.overflow = 'scroll';
|
| 3915 |
+
var w2 = inner.offsetWidth;
|
| 3916 |
+
if ( w1 == w2 )
|
| 3917 |
+
{
|
| 3918 |
+
w2 = outer.clientWidth;
|
| 3919 |
+
}
|
| 3920 |
+
|
| 3921 |
+
document.body.removeChild(outer);
|
| 3922 |
+
return (w1 - w2);
|
| 3923 |
+
}
|
| 3924 |
+
|
| 3925 |
+
/**
|
| 3926 |
+
* Change the order of the table
|
| 3927 |
+
* @param {object} oSettings dataTables settings object
|
| 3928 |
+
* @param {bool} bApplyClasses optional - should we apply classes or not
|
| 3929 |
+
* @memberof DataTable#oApi
|
| 3930 |
+
*/
|
| 3931 |
+
function _fnSort ( oSettings, bApplyClasses )
|
| 3932 |
+
{
|
| 3933 |
+
var
|
| 3934 |
+
i, iLen, j, jLen, k, kLen,
|
| 3935 |
+
sDataType, nTh,
|
| 3936 |
+
aaSort = [],
|
| 3937 |
+
aiOrig = [],
|
| 3938 |
+
oSort = DataTable.ext.oSort,
|
| 3939 |
+
aoData = oSettings.aoData,
|
| 3940 |
+
aoColumns = oSettings.aoColumns,
|
| 3941 |
+
oAria = oSettings.oLanguage.oAria;
|
| 3942 |
+
|
| 3943 |
+
/* No sorting required if server-side or no sorting array */
|
| 3944 |
+
if ( !oSettings.oFeatures.bServerSide &&
|
| 3945 |
+
(oSettings.aaSorting.length !== 0 || oSettings.aaSortingFixed !== null) )
|
| 3946 |
+
{
|
| 3947 |
+
aaSort = ( oSettings.aaSortingFixed !== null ) ?
|
| 3948 |
+
oSettings.aaSortingFixed.concat( oSettings.aaSorting ) :
|
| 3949 |
+
oSettings.aaSorting.slice();
|
| 3950 |
+
|
| 3951 |
+
/* If there is a sorting data type, and a function belonging to it, then we need to
|
| 3952 |
+
* get the data from the developer's function and apply it for this column
|
| 3953 |
+
*/
|
| 3954 |
+
for ( i=0 ; i<aaSort.length ; i++ )
|
| 3955 |
+
{
|
| 3956 |
+
var iColumn = aaSort[i][0];
|
| 3957 |
+
var iVisColumn = _fnColumnIndexToVisible( oSettings, iColumn );
|
| 3958 |
+
sDataType = oSettings.aoColumns[ iColumn ].sSortDataType;
|
| 3959 |
+
if ( DataTable.ext.afnSortData[sDataType] )
|
| 3960 |
+
{
|
| 3961 |
+
var aData = DataTable.ext.afnSortData[sDataType].call(
|
| 3962 |
+
oSettings.oInstance, oSettings, iColumn, iVisColumn
|
| 3963 |
+
);
|
| 3964 |
+
if ( aData.length === aoData.length )
|
| 3965 |
+
{
|
| 3966 |
+
for ( j=0, jLen=aoData.length ; j<jLen ; j++ )
|
| 3967 |
+
{
|
| 3968 |
+
_fnSetCellData( oSettings, j, iColumn, aData[j] );
|
| 3969 |
+
}
|
| 3970 |
+
}
|
| 3971 |
+
else
|
| 3972 |
+
{
|
| 3973 |
+
_fnLog( oSettings, 0, "Returned data sort array (col "+iColumn+") is the wrong length" );
|
| 3974 |
+
}
|
| 3975 |
+
}
|
| 3976 |
+
}
|
| 3977 |
+
|
| 3978 |
+
/* Create a value - key array of the current row positions such that we can use their
|
| 3979 |
+
* current position during the sort, if values match, in order to perform stable sorting
|
| 3980 |
+
*/
|
| 3981 |
+
for ( i=0, iLen=oSettings.aiDisplayMaster.length ; i<iLen ; i++ )
|
| 3982 |
+
{
|
| 3983 |
+
aiOrig[ oSettings.aiDisplayMaster[i] ] = i;
|
| 3984 |
+
}
|
| 3985 |
+
|
| 3986 |
+
/* Build an internal data array which is specific to the sort, so we can get and prep
|
| 3987 |
+
* the data to be sorted only once, rather than needing to do it every time the sorting
|
| 3988 |
+
* function runs. This make the sorting function a very simple comparison
|
| 3989 |
+
*/
|
| 3990 |
+
var iSortLen = aaSort.length;
|
| 3991 |
+
var fnSortFormat, aDataSort;
|
| 3992 |
+
for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
|
| 3993 |
+
{
|
| 3994 |
+
for ( j=0 ; j<iSortLen ; j++ )
|
| 3995 |
+
{
|
| 3996 |
+
aDataSort = aoColumns[ aaSort[j][0] ].aDataSort;
|
| 3997 |
+
|
| 3998 |
+
for ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )
|
| 3999 |
+
{
|
| 4000 |
+
sDataType = aoColumns[ aDataSort[k] ].sType;
|
| 4001 |
+
fnSortFormat = oSort[ (sDataType ? sDataType : 'string')+"-pre" ];
|
| 4002 |
+
|
| 4003 |
+
aoData[i]._aSortData[ aDataSort[k] ] = fnSortFormat ?
|
| 4004 |
+
fnSortFormat( _fnGetCellData( oSettings, i, aDataSort[k], 'sort' ) ) :
|
| 4005 |
+
_fnGetCellData( oSettings, i, aDataSort[k], 'sort' );
|
| 4006 |
+
}
|
| 4007 |
+
}
|
| 4008 |
+
}
|
| 4009 |
+
|
| 4010 |
+
/* Do the sort - here we want multi-column sorting based on a given data source (column)
|
| 4011 |
+
* and sorting function (from oSort) in a certain direction. It's reasonably complex to
|
| 4012 |
+
* follow on it's own, but this is what we want (example two column sorting):
|
| 4013 |
+
* fnLocalSorting = function(a,b){
|
| 4014 |
+
* var iTest;
|
| 4015 |
+
* iTest = oSort['string-asc']('data11', 'data12');
|
| 4016 |
+
* if (iTest !== 0)
|
| 4017 |
+
* return iTest;
|
| 4018 |
+
* iTest = oSort['numeric-desc']('data21', 'data22');
|
| 4019 |
+
* if (iTest !== 0)
|
| 4020 |
+
* return iTest;
|
| 4021 |
+
* return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
|
| 4022 |
+
* }
|
| 4023 |
+
* Basically we have a test for each sorting column, if the data in that column is equal,
|
| 4024 |
+
* test the next column. If all columns match, then we use a numeric sort on the row
|
| 4025 |
+
* positions in the original data array to provide a stable sort.
|
| 4026 |
+
*/
|
| 4027 |
+
oSettings.aiDisplayMaster.sort( function ( a, b ) {
|
| 4028 |
+
var k, l, lLen, iTest, aDataSort, sDataType;
|
| 4029 |
+
for ( k=0 ; k<iSortLen ; k++ )
|
| 4030 |
+
{
|
| 4031 |
+
aDataSort = aoColumns[ aaSort[k][0] ].aDataSort;
|
| 4032 |
+
|
| 4033 |
+
for ( l=0, lLen=aDataSort.length ; l<lLen ; l++ )
|
| 4034 |
+
{
|
| 4035 |
+
sDataType = aoColumns[ aDataSort[l] ].sType;
|
| 4036 |
+
|
| 4037 |
+
iTest = oSort[ (sDataType ? sDataType : 'string')+"-"+aaSort[k][1] ](
|
| 4038 |
+
aoData[a]._aSortData[ aDataSort[l] ],
|
| 4039 |
+
aoData[b]._aSortData[ aDataSort[l] ]
|
| 4040 |
+
);
|
| 4041 |
+
|
| 4042 |
+
if ( iTest !== 0 )
|
| 4043 |
+
{
|
| 4044 |
+
return iTest;
|
| 4045 |
+
}
|
| 4046 |
+
}
|
| 4047 |
+
}
|
| 4048 |
+
|
| 4049 |
+
return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );
|
| 4050 |
+
} );
|
| 4051 |
+
}
|
| 4052 |
+
|
| 4053 |
+
/* Alter the sorting classes to take account of the changes */
|
| 4054 |
+
if ( (bApplyClasses === undefined || bApplyClasses) && !oSettings.oFeatures.bDeferRender )
|
| 4055 |
+
{
|
| 4056 |
+
_fnSortingClasses( oSettings );
|
| 4057 |
+
}
|
| 4058 |
+
|
| 4059 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 4060 |
+
{
|
| 4061 |
+
var sTitle = aoColumns[i].sTitle.replace( /<.*?>/g, "" );
|
| 4062 |
+
nTh = aoColumns[i].nTh;
|
| 4063 |
+
nTh.removeAttribute('aria-sort');
|
| 4064 |
+
nTh.removeAttribute('aria-label');
|
| 4065 |
+
|
| 4066 |
+
/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */
|
| 4067 |
+
if ( aoColumns[i].bSortable )
|
| 4068 |
+
{
|
| 4069 |
+
if ( aaSort.length > 0 && aaSort[0][0] == i )
|
| 4070 |
+
{
|
| 4071 |
+
nTh.setAttribute('aria-sort', aaSort[0][1]=="asc" ? "ascending" : "descending" );
|
| 4072 |
+
|
| 4073 |
+
var nextSort = (aoColumns[i].asSorting[ aaSort[0][2]+1 ]) ?
|
| 4074 |
+
aoColumns[i].asSorting[ aaSort[0][2]+1 ] : aoColumns[i].asSorting[0];
|
| 4075 |
+
nTh.setAttribute('aria-label', sTitle+
|
| 4076 |
+
(nextSort=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
|
| 4077 |
+
}
|
| 4078 |
+
else
|
| 4079 |
+
{
|
| 4080 |
+
nTh.setAttribute('aria-label', sTitle+
|
| 4081 |
+
(aoColumns[i].asSorting[0]=="asc" ? oAria.sSortAscending : oAria.sSortDescending) );
|
| 4082 |
+
}
|
| 4083 |
+
}
|
| 4084 |
+
else
|
| 4085 |
+
{
|
| 4086 |
+
nTh.setAttribute('aria-label', sTitle);
|
| 4087 |
+
}
|
| 4088 |
+
}
|
| 4089 |
+
|
| 4090 |
+
/* Tell the draw function that we have sorted the data */
|
| 4091 |
+
oSettings.bSorted = true;
|
| 4092 |
+
$(oSettings.oInstance).trigger('sort', oSettings);
|
| 4093 |
+
|
| 4094 |
+
/* Copy the master data into the draw array and re-draw */
|
| 4095 |
+
if ( oSettings.oFeatures.bFilter )
|
| 4096 |
+
{
|
| 4097 |
+
/* _fnFilter() will redraw the table for us */
|
| 4098 |
+
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
|
| 4099 |
+
}
|
| 4100 |
+
else
|
| 4101 |
+
{
|
| 4102 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 4103 |
+
oSettings._iDisplayStart = 0; /* reset display back to page 0 */
|
| 4104 |
+
_fnCalculateEnd( oSettings );
|
| 4105 |
+
_fnDraw( oSettings );
|
| 4106 |
+
}
|
| 4107 |
+
}
|
| 4108 |
+
|
| 4109 |
+
|
| 4110 |
+
/**
|
| 4111 |
+
* Attach a sort handler (click) to a node
|
| 4112 |
+
* @param {object} oSettings dataTables settings object
|
| 4113 |
+
* @param {node} nNode node to attach the handler to
|
| 4114 |
+
* @param {int} iDataIndex column sorting index
|
| 4115 |
+
* @param {function} [fnCallback] callback function
|
| 4116 |
+
* @memberof DataTable#oApi
|
| 4117 |
+
*/
|
| 4118 |
+
function _fnSortAttachListener ( oSettings, nNode, iDataIndex, fnCallback )
|
| 4119 |
+
{
|
| 4120 |
+
_fnBindAction( nNode, {}, function (e) {
|
| 4121 |
+
/* If the column is not sortable - don't to anything */
|
| 4122 |
+
if ( oSettings.aoColumns[iDataIndex].bSortable === false )
|
| 4123 |
+
{
|
| 4124 |
+
return;
|
| 4125 |
+
}
|
| 4126 |
+
|
| 4127 |
+
/*
|
| 4128 |
+
* This is a little bit odd I admit... I declare a temporary function inside the scope of
|
| 4129 |
+
* _fnBuildHead and the click handler in order that the code presented here can be used
|
| 4130 |
+
* twice - once for when bProcessing is enabled, and another time for when it is
|
| 4131 |
+
* disabled, as we need to perform slightly different actions.
|
| 4132 |
+
* Basically the issue here is that the Javascript engine in modern browsers don't
|
| 4133 |
+
* appear to allow the rendering engine to update the display while it is still executing
|
| 4134 |
+
* it's thread (well - it does but only after long intervals). This means that the
|
| 4135 |
+
* 'processing' display doesn't appear for a table sort. To break the js thread up a bit
|
| 4136 |
+
* I force an execution break by using setTimeout - but this breaks the expected
|
| 4137 |
+
* thread continuation for the end-developer's point of view (their code would execute
|
| 4138 |
+
* too early), so we only do it when we absolutely have to.
|
| 4139 |
+
*/
|
| 4140 |
+
var fnInnerSorting = function () {
|
| 4141 |
+
var iColumn, iNextSort;
|
| 4142 |
+
|
| 4143 |
+
/* If the shift key is pressed then we are multiple column sorting */
|
| 4144 |
+
if ( e.shiftKey )
|
| 4145 |
+
{
|
| 4146 |
+
/* Are we already doing some kind of sort on this column? */
|
| 4147 |
+
var bFound = false;
|
| 4148 |
+
for ( var i=0 ; i<oSettings.aaSorting.length ; i++ )
|
| 4149 |
+
{
|
| 4150 |
+
if ( oSettings.aaSorting[i][0] == iDataIndex )
|
| 4151 |
+
{
|
| 4152 |
+
bFound = true;
|
| 4153 |
+
iColumn = oSettings.aaSorting[i][0];
|
| 4154 |
+
iNextSort = oSettings.aaSorting[i][2]+1;
|
| 4155 |
+
|
| 4156 |
+
if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
|
| 4157 |
+
{
|
| 4158 |
+
/* Reached the end of the sorting options, remove from multi-col sort */
|
| 4159 |
+
oSettings.aaSorting.splice( i, 1 );
|
| 4160 |
+
}
|
| 4161 |
+
else
|
| 4162 |
+
{
|
| 4163 |
+
/* Move onto next sorting direction */
|
| 4164 |
+
oSettings.aaSorting[i][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
|
| 4165 |
+
oSettings.aaSorting[i][2] = iNextSort;
|
| 4166 |
+
}
|
| 4167 |
+
break;
|
| 4168 |
+
}
|
| 4169 |
+
}
|
| 4170 |
+
|
| 4171 |
+
/* No sort yet - add it in */
|
| 4172 |
+
if ( bFound === false )
|
| 4173 |
+
{
|
| 4174 |
+
oSettings.aaSorting.push( [ iDataIndex,
|
| 4175 |
+
oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
|
| 4176 |
+
}
|
| 4177 |
+
}
|
| 4178 |
+
else
|
| 4179 |
+
{
|
| 4180 |
+
/* If no shift key then single column sort */
|
| 4181 |
+
if ( oSettings.aaSorting.length == 1 && oSettings.aaSorting[0][0] == iDataIndex )
|
| 4182 |
+
{
|
| 4183 |
+
iColumn = oSettings.aaSorting[0][0];
|
| 4184 |
+
iNextSort = oSettings.aaSorting[0][2]+1;
|
| 4185 |
+
if ( !oSettings.aoColumns[iColumn].asSorting[iNextSort] )
|
| 4186 |
+
{
|
| 4187 |
+
iNextSort = 0;
|
| 4188 |
+
}
|
| 4189 |
+
oSettings.aaSorting[0][1] = oSettings.aoColumns[iColumn].asSorting[iNextSort];
|
| 4190 |
+
oSettings.aaSorting[0][2] = iNextSort;
|
| 4191 |
+
}
|
| 4192 |
+
else
|
| 4193 |
+
{
|
| 4194 |
+
oSettings.aaSorting.splice( 0, oSettings.aaSorting.length );
|
| 4195 |
+
oSettings.aaSorting.push( [ iDataIndex,
|
| 4196 |
+
oSettings.aoColumns[iDataIndex].asSorting[0], 0 ] );
|
| 4197 |
+
}
|
| 4198 |
+
}
|
| 4199 |
+
|
| 4200 |
+
/* Run the sort */
|
| 4201 |
+
_fnSort( oSettings );
|
| 4202 |
+
}; /* /fnInnerSorting */
|
| 4203 |
+
|
| 4204 |
+
if ( !oSettings.oFeatures.bProcessing )
|
| 4205 |
+
{
|
| 4206 |
+
fnInnerSorting();
|
| 4207 |
+
}
|
| 4208 |
+
else
|
| 4209 |
+
{
|
| 4210 |
+
_fnProcessingDisplay( oSettings, true );
|
| 4211 |
+
setTimeout( function() {
|
| 4212 |
+
fnInnerSorting();
|
| 4213 |
+
if ( !oSettings.oFeatures.bServerSide )
|
| 4214 |
+
{
|
| 4215 |
+
_fnProcessingDisplay( oSettings, false );
|
| 4216 |
+
}
|
| 4217 |
+
}, 0 );
|
| 4218 |
+
}
|
| 4219 |
+
|
| 4220 |
+
/* Call the user specified callback function - used for async user interaction */
|
| 4221 |
+
if ( typeof fnCallback == 'function' )
|
| 4222 |
+
{
|
| 4223 |
+
fnCallback( oSettings );
|
| 4224 |
+
}
|
| 4225 |
+
} );
|
| 4226 |
+
}
|
| 4227 |
+
|
| 4228 |
+
|
| 4229 |
+
/**
|
| 4230 |
+
* Set the sorting classes on the header, Note: it is safe to call this function
|
| 4231 |
+
* when bSort and bSortClasses are false
|
| 4232 |
+
* @param {object} oSettings dataTables settings object
|
| 4233 |
+
* @memberof DataTable#oApi
|
| 4234 |
+
*/
|
| 4235 |
+
function _fnSortingClasses( oSettings )
|
| 4236 |
+
{
|
| 4237 |
+
var i, iLen, j, jLen, iFound;
|
| 4238 |
+
var aaSort, sClass;
|
| 4239 |
+
var iColumns = oSettings.aoColumns.length;
|
| 4240 |
+
var oClasses = oSettings.oClasses;
|
| 4241 |
+
|
| 4242 |
+
for ( i=0 ; i<iColumns ; i++ )
|
| 4243 |
+
{
|
| 4244 |
+
if ( oSettings.aoColumns[i].bSortable )
|
| 4245 |
+
{
|
| 4246 |
+
$(oSettings.aoColumns[i].nTh).removeClass( oClasses.sSortAsc +" "+ oClasses.sSortDesc +
|
| 4247 |
+
" "+ oSettings.aoColumns[i].sSortingClass );
|
| 4248 |
+
}
|
| 4249 |
+
}
|
| 4250 |
+
|
| 4251 |
+
if ( oSettings.aaSortingFixed !== null )
|
| 4252 |
+
{
|
| 4253 |
+
aaSort = oSettings.aaSortingFixed.concat( oSettings.aaSorting );
|
| 4254 |
+
}
|
| 4255 |
+
else
|
| 4256 |
+
{
|
| 4257 |
+
aaSort = oSettings.aaSorting.slice();
|
| 4258 |
+
}
|
| 4259 |
+
|
| 4260 |
+
/* Apply the required classes to the header */
|
| 4261 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 4262 |
+
{
|
| 4263 |
+
if ( oSettings.aoColumns[i].bSortable )
|
| 4264 |
+
{
|
| 4265 |
+
sClass = oSettings.aoColumns[i].sSortingClass;
|
| 4266 |
+
iFound = -1;
|
| 4267 |
+
for ( j=0 ; j<aaSort.length ; j++ )
|
| 4268 |
+
{
|
| 4269 |
+
if ( aaSort[j][0] == i )
|
| 4270 |
+
{
|
| 4271 |
+
sClass = ( aaSort[j][1] == "asc" ) ?
|
| 4272 |
+
oClasses.sSortAsc : oClasses.sSortDesc;
|
| 4273 |
+
iFound = j;
|
| 4274 |
+
break;
|
| 4275 |
+
}
|
| 4276 |
+
}
|
| 4277 |
+
$(oSettings.aoColumns[i].nTh).addClass( sClass );
|
| 4278 |
+
|
| 4279 |
+
if ( oSettings.bJUI )
|
| 4280 |
+
{
|
| 4281 |
+
/* jQuery UI uses extra markup */
|
| 4282 |
+
var jqSpan = $("span."+oClasses.sSortIcon, oSettings.aoColumns[i].nTh);
|
| 4283 |
+
jqSpan.removeClass(oClasses.sSortJUIAsc +" "+ oClasses.sSortJUIDesc +" "+
|
| 4284 |
+
oClasses.sSortJUI +" "+ oClasses.sSortJUIAscAllowed +" "+ oClasses.sSortJUIDescAllowed );
|
| 4285 |
+
|
| 4286 |
+
var sSpanClass;
|
| 4287 |
+
if ( iFound == -1 )
|
| 4288 |
+
{
|
| 4289 |
+
sSpanClass = oSettings.aoColumns[i].sSortingClassJUI;
|
| 4290 |
+
}
|
| 4291 |
+
else if ( aaSort[iFound][1] == "asc" )
|
| 4292 |
+
{
|
| 4293 |
+
sSpanClass = oClasses.sSortJUIAsc;
|
| 4294 |
+
}
|
| 4295 |
+
else
|
| 4296 |
+
{
|
| 4297 |
+
sSpanClass = oClasses.sSortJUIDesc;
|
| 4298 |
+
}
|
| 4299 |
+
|
| 4300 |
+
jqSpan.addClass( sSpanClass );
|
| 4301 |
+
}
|
| 4302 |
+
}
|
| 4303 |
+
else
|
| 4304 |
+
{
|
| 4305 |
+
/* No sorting on this column, so add the base class. This will have been assigned by
|
| 4306 |
+
* _fnAddColumn
|
| 4307 |
+
*/
|
| 4308 |
+
$(oSettings.aoColumns[i].nTh).addClass( oSettings.aoColumns[i].sSortingClass );
|
| 4309 |
+
}
|
| 4310 |
+
}
|
| 4311 |
+
|
| 4312 |
+
/*
|
| 4313 |
+
* Apply the required classes to the table body
|
| 4314 |
+
* Note that this is given as a feature switch since it can significantly slow down a sort
|
| 4315 |
+
* on large data sets (adding and removing of classes is always slow at the best of times..)
|
| 4316 |
+
* Further to this, note that this code is admittedly fairly ugly. It could be made a lot
|
| 4317 |
+
* simpler using jQuery selectors and add/removeClass, but that is significantly slower
|
| 4318 |
+
* (on the order of 5 times slower) - hence the direct DOM manipulation here.
|
| 4319 |
+
* Note that for deferred drawing we do use jQuery - the reason being that taking the first
|
| 4320 |
+
* row found to see if the whole column needs processed can miss classes since the first
|
| 4321 |
+
* column might be new.
|
| 4322 |
+
*/
|
| 4323 |
+
sClass = oClasses.sSortColumn;
|
| 4324 |
+
|
| 4325 |
+
if ( oSettings.oFeatures.bSort && oSettings.oFeatures.bSortClasses )
|
| 4326 |
+
{
|
| 4327 |
+
var nTds = _fnGetTdNodes( oSettings );
|
| 4328 |
+
|
| 4329 |
+
/* Determine what the sorting class for each column should be */
|
| 4330 |
+
var iClass, iTargetCol;
|
| 4331 |
+
var asClasses = [];
|
| 4332 |
+
for (i = 0; i < iColumns; i++)
|
| 4333 |
+
{
|
| 4334 |
+
asClasses.push("");
|
| 4335 |
+
}
|
| 4336 |
+
for (i = 0, iClass = 1; i < aaSort.length; i++)
|
| 4337 |
+
{
|
| 4338 |
+
iTargetCol = parseInt( aaSort[i][0], 10 );
|
| 4339 |
+
asClasses[iTargetCol] = sClass + iClass;
|
| 4340 |
+
|
| 4341 |
+
if ( iClass < 3 )
|
| 4342 |
+
{
|
| 4343 |
+
iClass++;
|
| 4344 |
+
}
|
| 4345 |
+
}
|
| 4346 |
+
|
| 4347 |
+
/* Make changes to the classes for each cell as needed */
|
| 4348 |
+
var reClass = new RegExp(sClass + "[123]");
|
| 4349 |
+
var sTmpClass, sCurrentClass, sNewClass;
|
| 4350 |
+
for ( i=0, iLen=nTds.length; i<iLen; i++ )
|
| 4351 |
+
{
|
| 4352 |
+
/* Determine which column we're looking at */
|
| 4353 |
+
iTargetCol = i % iColumns;
|
| 4354 |
+
|
| 4355 |
+
/* What is the full list of classes now */
|
| 4356 |
+
sCurrentClass = nTds[i].className;
|
| 4357 |
+
/* What sorting class should be applied? */
|
| 4358 |
+
sNewClass = asClasses[iTargetCol];
|
| 4359 |
+
/* What would the new full list be if we did a replacement? */
|
| 4360 |
+
sTmpClass = sCurrentClass.replace(reClass, sNewClass);
|
| 4361 |
+
|
| 4362 |
+
if ( sTmpClass != sCurrentClass )
|
| 4363 |
+
{
|
| 4364 |
+
/* We changed something */
|
| 4365 |
+
nTds[i].className = $.trim( sTmpClass );
|
| 4366 |
+
}
|
| 4367 |
+
else if ( sNewClass.length > 0 && sCurrentClass.indexOf(sNewClass) == -1 )
|
| 4368 |
+
{
|
| 4369 |
+
/* We need to add a class */
|
| 4370 |
+
nTds[i].className = sCurrentClass + " " + sNewClass;
|
| 4371 |
+
}
|
| 4372 |
+
}
|
| 4373 |
+
}
|
| 4374 |
+
}
|
| 4375 |
+
|
| 4376 |
+
|
| 4377 |
+
|
| 4378 |
+
/**
|
| 4379 |
+
* Save the state of a table in a cookie such that the page can be reloaded
|
| 4380 |
+
* @param {object} oSettings dataTables settings object
|
| 4381 |
+
* @memberof DataTable#oApi
|
| 4382 |
+
*/
|
| 4383 |
+
function _fnSaveState ( oSettings )
|
| 4384 |
+
{
|
| 4385 |
+
if ( !oSettings.oFeatures.bStateSave || oSettings.bDestroying )
|
| 4386 |
+
{
|
| 4387 |
+
return;
|
| 4388 |
+
}
|
| 4389 |
+
|
| 4390 |
+
/* Store the interesting variables */
|
| 4391 |
+
var i, iLen, bInfinite=oSettings.oScroll.bInfinite;
|
| 4392 |
+
var oState = {
|
| 4393 |
+
"iCreate": new Date().getTime(),
|
| 4394 |
+
"iStart": (bInfinite ? 0 : oSettings._iDisplayStart),
|
| 4395 |
+
"iEnd": (bInfinite ? oSettings._iDisplayLength : oSettings._iDisplayEnd),
|
| 4396 |
+
"iLength": oSettings._iDisplayLength,
|
| 4397 |
+
"aaSorting": $.extend( true, [], oSettings.aaSorting ),
|
| 4398 |
+
"oSearch": $.extend( true, {}, oSettings.oPreviousSearch ),
|
| 4399 |
+
"aoSearchCols": $.extend( true, [], oSettings.aoPreSearchCols ),
|
| 4400 |
+
"abVisCols": []
|
| 4401 |
+
};
|
| 4402 |
+
|
| 4403 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 4404 |
+
{
|
| 4405 |
+
oState.abVisCols.push( oSettings.aoColumns[i].bVisible );
|
| 4406 |
+
}
|
| 4407 |
+
|
| 4408 |
+
_fnCallbackFire( oSettings, "aoStateSaveParams", 'stateSaveParams', [oSettings, oState] );
|
| 4409 |
+
|
| 4410 |
+
oSettings.fnStateSave.call( oSettings.oInstance, oSettings, oState );
|
| 4411 |
+
}
|
| 4412 |
+
|
| 4413 |
+
|
| 4414 |
+
/**
|
| 4415 |
+
* Attempt to load a saved table state from a cookie
|
| 4416 |
+
* @param {object} oSettings dataTables settings object
|
| 4417 |
+
* @param {object} oInit DataTables init object so we can override settings
|
| 4418 |
+
* @memberof DataTable#oApi
|
| 4419 |
+
*/
|
| 4420 |
+
function _fnLoadState ( oSettings, oInit )
|
| 4421 |
+
{
|
| 4422 |
+
if ( !oSettings.oFeatures.bStateSave )
|
| 4423 |
+
{
|
| 4424 |
+
return;
|
| 4425 |
+
}
|
| 4426 |
+
|
| 4427 |
+
var oData = oSettings.fnStateLoad.call( oSettings.oInstance, oSettings );
|
| 4428 |
+
if ( !oData )
|
| 4429 |
+
{
|
| 4430 |
+
return;
|
| 4431 |
+
}
|
| 4432 |
+
|
| 4433 |
+
/* Allow custom and plug-in manipulation functions to alter the saved data set and
|
| 4434 |
+
* cancelling of loading by returning false
|
| 4435 |
+
*/
|
| 4436 |
+
var abStateLoad = _fnCallbackFire( oSettings, 'aoStateLoadParams', 'stateLoadParams', [oSettings, oData] );
|
| 4437 |
+
if ( $.inArray( false, abStateLoad ) !== -1 )
|
| 4438 |
+
{
|
| 4439 |
+
return;
|
| 4440 |
+
}
|
| 4441 |
+
|
| 4442 |
+
/* Store the saved state so it might be accessed at any time */
|
| 4443 |
+
oSettings.oLoadedState = $.extend( true, {}, oData );
|
| 4444 |
+
|
| 4445 |
+
/* Restore key features */
|
| 4446 |
+
oSettings._iDisplayStart = oData.iStart;
|
| 4447 |
+
oSettings.iInitDisplayStart = oData.iStart;
|
| 4448 |
+
oSettings._iDisplayEnd = oData.iEnd;
|
| 4449 |
+
oSettings._iDisplayLength = oData.iLength;
|
| 4450 |
+
oSettings.aaSorting = oData.aaSorting.slice();
|
| 4451 |
+
oSettings.saved_aaSorting = oData.aaSorting.slice();
|
| 4452 |
+
|
| 4453 |
+
/* Search filtering */
|
| 4454 |
+
$.extend( oSettings.oPreviousSearch, oData.oSearch );
|
| 4455 |
+
$.extend( true, oSettings.aoPreSearchCols, oData.aoSearchCols );
|
| 4456 |
+
|
| 4457 |
+
/* Column visibility state
|
| 4458 |
+
* Pass back visibility settings to the init handler, but to do not here override
|
| 4459 |
+
* the init object that the user might have passed in
|
| 4460 |
+
*/
|
| 4461 |
+
oInit.saved_aoColumns = [];
|
| 4462 |
+
for ( var i=0 ; i<oData.abVisCols.length ; i++ )
|
| 4463 |
+
{
|
| 4464 |
+
oInit.saved_aoColumns[i] = {};
|
| 4465 |
+
oInit.saved_aoColumns[i].bVisible = oData.abVisCols[i];
|
| 4466 |
+
}
|
| 4467 |
+
|
| 4468 |
+
_fnCallbackFire( oSettings, 'aoStateLoaded', 'stateLoaded', [oSettings, oData] );
|
| 4469 |
+
}
|
| 4470 |
+
|
| 4471 |
+
|
| 4472 |
+
/**
|
| 4473 |
+
* Create a new cookie with a value to store the state of a table
|
| 4474 |
+
* @param {string} sName name of the cookie to create
|
| 4475 |
+
* @param {string} sValue the value the cookie should take
|
| 4476 |
+
* @param {int} iSecs duration of the cookie
|
| 4477 |
+
* @param {string} sBaseName sName is made up of the base + file name - this is the base
|
| 4478 |
+
* @param {function} fnCallback User definable function to modify the cookie
|
| 4479 |
+
* @memberof DataTable#oApi
|
| 4480 |
+
*/
|
| 4481 |
+
function _fnCreateCookie ( sName, sValue, iSecs, sBaseName, fnCallback )
|
| 4482 |
+
{
|
| 4483 |
+
var date = new Date();
|
| 4484 |
+
date.setTime( date.getTime()+(iSecs*1000) );
|
| 4485 |
+
|
| 4486 |
+
/*
|
| 4487 |
+
* Shocking but true - it would appear IE has major issues with having the path not having
|
| 4488 |
+
* a trailing slash on it. We need the cookie to be available based on the path, so we
|
| 4489 |
+
* have to append the file name to the cookie name. Appalling. Thanks to vex for adding the
|
| 4490 |
+
* patch to use at least some of the path
|
| 4491 |
+
*/
|
| 4492 |
+
var aParts = window.location.pathname.split('/');
|
| 4493 |
+
var sNameFile = sName + '_' + aParts.pop().replace(/[\/:]/g,"").toLowerCase();
|
| 4494 |
+
var sFullCookie, oData;
|
| 4495 |
+
|
| 4496 |
+
if ( fnCallback !== null )
|
| 4497 |
+
{
|
| 4498 |
+
oData = (typeof $.parseJSON === 'function') ?
|
| 4499 |
+
$.parseJSON( sValue ) : eval( '('+sValue+')' );
|
| 4500 |
+
sFullCookie = fnCallback( sNameFile, oData, date.toGMTString(),
|
| 4501 |
+
aParts.join('/')+"/" );
|
| 4502 |
+
}
|
| 4503 |
+
else
|
| 4504 |
+
{
|
| 4505 |
+
sFullCookie = sNameFile + "=" + encodeURIComponent(sValue) +
|
| 4506 |
+
"; expires=" + date.toGMTString() +"; path=" + aParts.join('/')+"/";
|
| 4507 |
+
}
|
| 4508 |
+
|
| 4509 |
+
/* Are we going to go over the cookie limit of 4KiB? If so, try to delete a cookies
|
| 4510 |
+
* belonging to DataTables.
|
| 4511 |
+
*/
|
| 4512 |
+
var
|
| 4513 |
+
aCookies =document.cookie.split(';'),
|
| 4514 |
+
iNewCookieLen = sFullCookie.split(';')[0].length,
|
| 4515 |
+
aOldCookies = [];
|
| 4516 |
+
|
| 4517 |
+
if ( iNewCookieLen+document.cookie.length+10 > 4096 ) /* Magic 10 for padding */
|
| 4518 |
+
{
|
| 4519 |
+
for ( var i=0, iLen=aCookies.length ; i<iLen ; i++ )
|
| 4520 |
+
{
|
| 4521 |
+
if ( aCookies[i].indexOf( sBaseName ) != -1 )
|
| 4522 |
+
{
|
| 4523 |
+
/* It's a DataTables cookie, so eval it and check the time stamp */
|
| 4524 |
+
var aSplitCookie = aCookies[i].split('=');
|
| 4525 |
+
try {
|
| 4526 |
+
oData = eval( '('+decodeURIComponent(aSplitCookie[1])+')' );
|
| 4527 |
+
|
| 4528 |
+
if ( oData && oData.iCreate )
|
| 4529 |
+
{
|
| 4530 |
+
aOldCookies.push( {
|
| 4531 |
+
"name": aSplitCookie[0],
|
| 4532 |
+
"time": oData.iCreate
|
| 4533 |
+
} );
|
| 4534 |
+
}
|
| 4535 |
+
}
|
| 4536 |
+
catch( e ) {}
|
| 4537 |
+
}
|
| 4538 |
+
}
|
| 4539 |
+
|
| 4540 |
+
// Make sure we delete the oldest ones first
|
| 4541 |
+
aOldCookies.sort( function (a, b) {
|
| 4542 |
+
return b.time - a.time;
|
| 4543 |
+
} );
|
| 4544 |
+
|
| 4545 |
+
// Eliminate as many old DataTables cookies as we need to
|
| 4546 |
+
while ( iNewCookieLen + document.cookie.length + 10 > 4096 ) {
|
| 4547 |
+
if ( aOldCookies.length === 0 ) {
|
| 4548 |
+
// Deleted all DT cookies and still not enough space. Can't state save
|
| 4549 |
+
return;
|
| 4550 |
+
}
|
| 4551 |
+
|
| 4552 |
+
var old = aOldCookies.pop();
|
| 4553 |
+
document.cookie = old.name+"=; expires=Thu, 01-Jan-1970 00:00:01 GMT; path="+
|
| 4554 |
+
aParts.join('/') + "/";
|
| 4555 |
+
}
|
| 4556 |
+
}
|
| 4557 |
+
|
| 4558 |
+
document.cookie = sFullCookie;
|
| 4559 |
+
}
|
| 4560 |
+
|
| 4561 |
+
|
| 4562 |
+
/**
|
| 4563 |
+
* Read an old cookie to get a cookie with an old table state
|
| 4564 |
+
* @param {string} sName name of the cookie to read
|
| 4565 |
+
* @returns {string} contents of the cookie - or null if no cookie with that name found
|
| 4566 |
+
* @memberof DataTable#oApi
|
| 4567 |
+
*/
|
| 4568 |
+
function _fnReadCookie ( sName )
|
| 4569 |
+
{
|
| 4570 |
+
var
|
| 4571 |
+
aParts = window.location.pathname.split('/'),
|
| 4572 |
+
sNameEQ = sName + '_' + aParts[aParts.length-1].replace(/[\/:]/g,"").toLowerCase() + '=',
|
| 4573 |
+
sCookieContents = document.cookie.split(';');
|
| 4574 |
+
|
| 4575 |
+
for( var i=0 ; i<sCookieContents.length ; i++ )
|
| 4576 |
+
{
|
| 4577 |
+
var c = sCookieContents[i];
|
| 4578 |
+
|
| 4579 |
+
while (c.charAt(0)==' ')
|
| 4580 |
+
{
|
| 4581 |
+
c = c.substring(1,c.length);
|
| 4582 |
+
}
|
| 4583 |
+
|
| 4584 |
+
if (c.indexOf(sNameEQ) === 0)
|
| 4585 |
+
{
|
| 4586 |
+
return decodeURIComponent( c.substring(sNameEQ.length,c.length) );
|
| 4587 |
+
}
|
| 4588 |
+
}
|
| 4589 |
+
return null;
|
| 4590 |
+
}
|
| 4591 |
+
|
| 4592 |
+
|
| 4593 |
+
/**
|
| 4594 |
+
* Return the settings object for a particular table
|
| 4595 |
+
* @param {node} nTable table we are using as a dataTable
|
| 4596 |
+
* @returns {object} Settings object - or null if not found
|
| 4597 |
+
* @memberof DataTable#oApi
|
| 4598 |
+
*/
|
| 4599 |
+
function _fnSettingsFromNode ( nTable )
|
| 4600 |
+
{
|
| 4601 |
+
for ( var i=0 ; i<DataTable.settings.length ; i++ )
|
| 4602 |
+
{
|
| 4603 |
+
if ( DataTable.settings[i].nTable === nTable )
|
| 4604 |
+
{
|
| 4605 |
+
return DataTable.settings[i];
|
| 4606 |
+
}
|
| 4607 |
+
}
|
| 4608 |
+
|
| 4609 |
+
return null;
|
| 4610 |
+
}
|
| 4611 |
+
|
| 4612 |
+
|
| 4613 |
+
/**
|
| 4614 |
+
* Return an array with the TR nodes for the table
|
| 4615 |
+
* @param {object} oSettings dataTables settings object
|
| 4616 |
+
* @returns {array} TR array
|
| 4617 |
+
* @memberof DataTable#oApi
|
| 4618 |
+
*/
|
| 4619 |
+
function _fnGetTrNodes ( oSettings )
|
| 4620 |
+
{
|
| 4621 |
+
var aNodes = [];
|
| 4622 |
+
var aoData = oSettings.aoData;
|
| 4623 |
+
for ( var i=0, iLen=aoData.length ; i<iLen ; i++ )
|
| 4624 |
+
{
|
| 4625 |
+
if ( aoData[i].nTr !== null )
|
| 4626 |
+
{
|
| 4627 |
+
aNodes.push( aoData[i].nTr );
|
| 4628 |
+
}
|
| 4629 |
+
}
|
| 4630 |
+
return aNodes;
|
| 4631 |
+
}
|
| 4632 |
+
|
| 4633 |
+
|
| 4634 |
+
/**
|
| 4635 |
+
* Return an flat array with all TD nodes for the table, or row
|
| 4636 |
+
* @param {object} oSettings dataTables settings object
|
| 4637 |
+
* @param {int} [iIndividualRow] aoData index to get the nodes for - optional
|
| 4638 |
+
* if not given then the return array will contain all nodes for the table
|
| 4639 |
+
* @returns {array} TD array
|
| 4640 |
+
* @memberof DataTable#oApi
|
| 4641 |
+
*/
|
| 4642 |
+
function _fnGetTdNodes ( oSettings, iIndividualRow )
|
| 4643 |
+
{
|
| 4644 |
+
var anReturn = [];
|
| 4645 |
+
var iCorrector;
|
| 4646 |
+
var anTds, nTd;
|
| 4647 |
+
var iRow, iRows=oSettings.aoData.length,
|
| 4648 |
+
iColumn, iColumns, oData, sNodeName, iStart=0, iEnd=iRows;
|
| 4649 |
+
|
| 4650 |
+
/* Allow the collection to be limited to just one row */
|
| 4651 |
+
if ( iIndividualRow !== undefined )
|
| 4652 |
+
{
|
| 4653 |
+
iStart = iIndividualRow;
|
| 4654 |
+
iEnd = iIndividualRow+1;
|
| 4655 |
+
}
|
| 4656 |
+
|
| 4657 |
+
for ( iRow=iStart ; iRow<iEnd ; iRow++ )
|
| 4658 |
+
{
|
| 4659 |
+
oData = oSettings.aoData[iRow];
|
| 4660 |
+
if ( oData.nTr !== null )
|
| 4661 |
+
{
|
| 4662 |
+
/* get the TD child nodes - taking into account text etc nodes */
|
| 4663 |
+
anTds = [];
|
| 4664 |
+
nTd = oData.nTr.firstChild;
|
| 4665 |
+
while ( nTd )
|
| 4666 |
+
{
|
| 4667 |
+
sNodeName = nTd.nodeName.toLowerCase();
|
| 4668 |
+
if ( sNodeName == 'td' || sNodeName == 'th' )
|
| 4669 |
+
{
|
| 4670 |
+
anTds.push( nTd );
|
| 4671 |
+
}
|
| 4672 |
+
nTd = nTd.nextSibling;
|
| 4673 |
+
}
|
| 4674 |
+
|
| 4675 |
+
iCorrector = 0;
|
| 4676 |
+
for ( iColumn=0, iColumns=oSettings.aoColumns.length ; iColumn<iColumns ; iColumn++ )
|
| 4677 |
+
{
|
| 4678 |
+
if ( oSettings.aoColumns[iColumn].bVisible )
|
| 4679 |
+
{
|
| 4680 |
+
anReturn.push( anTds[iColumn-iCorrector] );
|
| 4681 |
+
}
|
| 4682 |
+
else
|
| 4683 |
+
{
|
| 4684 |
+
anReturn.push( oData._anHidden[iColumn] );
|
| 4685 |
+
iCorrector++;
|
| 4686 |
+
}
|
| 4687 |
+
}
|
| 4688 |
+
}
|
| 4689 |
+
}
|
| 4690 |
+
|
| 4691 |
+
return anReturn;
|
| 4692 |
+
}
|
| 4693 |
+
|
| 4694 |
+
|
| 4695 |
+
/**
|
| 4696 |
+
* Log an error message
|
| 4697 |
+
* @param {object} oSettings dataTables settings object
|
| 4698 |
+
* @param {int} iLevel log error messages, or display them to the user
|
| 4699 |
+
* @param {string} sMesg error message
|
| 4700 |
+
* @memberof DataTable#oApi
|
| 4701 |
+
*/
|
| 4702 |
+
function _fnLog( oSettings, iLevel, sMesg )
|
| 4703 |
+
{
|
| 4704 |
+
var sAlert = (oSettings===null) ?
|
| 4705 |
+
"DataTables warning: "+sMesg :
|
| 4706 |
+
"DataTables warning (table id = '"+oSettings.sTableId+"'): "+sMesg;
|
| 4707 |
+
|
| 4708 |
+
if ( iLevel === 0 )
|
| 4709 |
+
{
|
| 4710 |
+
if ( DataTable.ext.sErrMode == 'alert' )
|
| 4711 |
+
{
|
| 4712 |
+
alert( sAlert );
|
| 4713 |
+
}
|
| 4714 |
+
else
|
| 4715 |
+
{
|
| 4716 |
+
throw new Error(sAlert);
|
| 4717 |
+
}
|
| 4718 |
+
return;
|
| 4719 |
+
}
|
| 4720 |
+
else if ( window.console && console.log )
|
| 4721 |
+
{
|
| 4722 |
+
console.log( sAlert );
|
| 4723 |
+
}
|
| 4724 |
+
}
|
| 4725 |
+
|
| 4726 |
+
|
| 4727 |
+
/**
|
| 4728 |
+
* See if a property is defined on one object, if so assign it to the other object
|
| 4729 |
+
* @param {object} oRet target object
|
| 4730 |
+
* @param {object} oSrc source object
|
| 4731 |
+
* @param {string} sName property
|
| 4732 |
+
* @param {string} [sMappedName] name to map too - optional, sName used if not given
|
| 4733 |
+
* @memberof DataTable#oApi
|
| 4734 |
+
*/
|
| 4735 |
+
function _fnMap( oRet, oSrc, sName, sMappedName )
|
| 4736 |
+
{
|
| 4737 |
+
if ( sMappedName === undefined )
|
| 4738 |
+
{
|
| 4739 |
+
sMappedName = sName;
|
| 4740 |
+
}
|
| 4741 |
+
if ( oSrc[sName] !== undefined )
|
| 4742 |
+
{
|
| 4743 |
+
oRet[sMappedName] = oSrc[sName];
|
| 4744 |
+
}
|
| 4745 |
+
}
|
| 4746 |
+
|
| 4747 |
+
|
| 4748 |
+
/**
|
| 4749 |
+
* Extend objects - very similar to jQuery.extend, but deep copy objects, and shallow
|
| 4750 |
+
* copy arrays. The reason we need to do this, is that we don't want to deep copy array
|
| 4751 |
+
* init values (such as aaSorting) since the dev wouldn't be able to override them, but
|
| 4752 |
+
* we do want to deep copy arrays.
|
| 4753 |
+
* @param {object} oOut Object to extend
|
| 4754 |
+
* @param {object} oExtender Object from which the properties will be applied to oOut
|
| 4755 |
+
* @returns {object} oOut Reference, just for convenience - oOut === the return.
|
| 4756 |
+
* @memberof DataTable#oApi
|
| 4757 |
+
* @todo This doesn't take account of arrays inside the deep copied objects.
|
| 4758 |
+
*/
|
| 4759 |
+
function _fnExtend( oOut, oExtender )
|
| 4760 |
+
{
|
| 4761 |
+
var val;
|
| 4762 |
+
|
| 4763 |
+
for ( var prop in oExtender )
|
| 4764 |
+
{
|
| 4765 |
+
if ( oExtender.hasOwnProperty(prop) )
|
| 4766 |
+
{
|
| 4767 |
+
val = oExtender[prop];
|
| 4768 |
+
|
| 4769 |
+
if ( typeof oInit[prop] === 'object' && val !== null && $.isArray(val) === false )
|
| 4770 |
+
{
|
| 4771 |
+
$.extend( true, oOut[prop], val );
|
| 4772 |
+
}
|
| 4773 |
+
else
|
| 4774 |
+
{
|
| 4775 |
+
oOut[prop] = val;
|
| 4776 |
+
}
|
| 4777 |
+
}
|
| 4778 |
+
}
|
| 4779 |
+
|
| 4780 |
+
return oOut;
|
| 4781 |
+
}
|
| 4782 |
+
|
| 4783 |
+
|
| 4784 |
+
/**
|
| 4785 |
+
* Bind an event handers to allow a click or return key to activate the callback.
|
| 4786 |
+
* This is good for accessibility since a return on the keyboard will have the
|
| 4787 |
+
* same effect as a click, if the element has focus.
|
| 4788 |
+
* @param {element} n Element to bind the action to
|
| 4789 |
+
* @param {object} oData Data object to pass to the triggered function
|
| 4790 |
+
* @param {function} fn Callback function for when the event is triggered
|
| 4791 |
+
* @memberof DataTable#oApi
|
| 4792 |
+
*/
|
| 4793 |
+
function _fnBindAction( n, oData, fn )
|
| 4794 |
+
{
|
| 4795 |
+
$(n)
|
| 4796 |
+
.bind( 'click.DT', oData, function (e) {
|
| 4797 |
+
n.blur(); // Remove focus outline for mouse users
|
| 4798 |
+
fn(e);
|
| 4799 |
+
} )
|
| 4800 |
+
.bind( 'keypress.DT', oData, function (e){
|
| 4801 |
+
if ( e.which === 13 ) {
|
| 4802 |
+
fn(e);
|
| 4803 |
+
} } )
|
| 4804 |
+
.bind( 'selectstart.DT', function () {
|
| 4805 |
+
/* Take the brutal approach to cancelling text selection */
|
| 4806 |
+
return false;
|
| 4807 |
+
} );
|
| 4808 |
+
}
|
| 4809 |
+
|
| 4810 |
+
|
| 4811 |
+
/**
|
| 4812 |
+
* Register a callback function. Easily allows a callback function to be added to
|
| 4813 |
+
* an array store of callback functions that can then all be called together.
|
| 4814 |
+
* @param {object} oSettings dataTables settings object
|
| 4815 |
+
* @param {string} sStore Name of the array storage for the callbacks in oSettings
|
| 4816 |
+
* @param {function} fn Function to be called back
|
| 4817 |
+
* @param {string} sName Identifying name for the callback (i.e. a label)
|
| 4818 |
+
* @memberof DataTable#oApi
|
| 4819 |
+
*/
|
| 4820 |
+
function _fnCallbackReg( oSettings, sStore, fn, sName )
|
| 4821 |
+
{
|
| 4822 |
+
if ( fn )
|
| 4823 |
+
{
|
| 4824 |
+
oSettings[sStore].push( {
|
| 4825 |
+
"fn": fn,
|
| 4826 |
+
"sName": sName
|
| 4827 |
+
} );
|
| 4828 |
+
}
|
| 4829 |
+
}
|
| 4830 |
+
|
| 4831 |
+
|
| 4832 |
+
/**
|
| 4833 |
+
* Fire callback functions and trigger events. Note that the loop over the callback
|
| 4834 |
+
* array store is done backwards! Further note that you do not want to fire off triggers
|
| 4835 |
+
* in time sensitive applications (for example cell creation) as its slow.
|
| 4836 |
+
* @param {object} oSettings dataTables settings object
|
| 4837 |
+
* @param {string} sStore Name of the array storage for the callbacks in oSettings
|
| 4838 |
+
* @param {string} sTrigger Name of the jQuery custom event to trigger. If null no trigger
|
| 4839 |
+
* is fired
|
| 4840 |
+
* @param {array} aArgs Array of arguments to pass to the callback function / trigger
|
| 4841 |
+
* @memberof DataTable#oApi
|
| 4842 |
+
*/
|
| 4843 |
+
function _fnCallbackFire( oSettings, sStore, sTrigger, aArgs )
|
| 4844 |
+
{
|
| 4845 |
+
var aoStore = oSettings[sStore];
|
| 4846 |
+
var aRet =[];
|
| 4847 |
+
|
| 4848 |
+
for ( var i=aoStore.length-1 ; i>=0 ; i-- )
|
| 4849 |
+
{
|
| 4850 |
+
aRet.push( aoStore[i].fn.apply( oSettings.oInstance, aArgs ) );
|
| 4851 |
+
}
|
| 4852 |
+
|
| 4853 |
+
if ( sTrigger !== null )
|
| 4854 |
+
{
|
| 4855 |
+
$(oSettings.oInstance).trigger(sTrigger, aArgs);
|
| 4856 |
+
}
|
| 4857 |
+
|
| 4858 |
+
return aRet;
|
| 4859 |
+
}
|
| 4860 |
+
|
| 4861 |
+
|
| 4862 |
+
/**
|
| 4863 |
+
* JSON stringify. If JSON.stringify it provided by the browser, json2.js or any other
|
| 4864 |
+
* library, then we use that as it is fast, safe and accurate. If the function isn't
|
| 4865 |
+
* available then we need to built it ourselves - the inspiration for this function comes
|
| 4866 |
+
* from Craig Buckler ( http://www.sitepoint.com/javascript-json-serialization/ ). It is
|
| 4867 |
+
* not perfect and absolutely should not be used as a replacement to json2.js - but it does
|
| 4868 |
+
* do what we need, without requiring a dependency for DataTables.
|
| 4869 |
+
* @param {object} o JSON object to be converted
|
| 4870 |
+
* @returns {string} JSON string
|
| 4871 |
+
* @memberof DataTable#oApi
|
| 4872 |
+
*/
|
| 4873 |
+
var _fnJsonString = (window.JSON) ? JSON.stringify : function( o )
|
| 4874 |
+
{
|
| 4875 |
+
/* Not an object or array */
|
| 4876 |
+
var sType = typeof o;
|
| 4877 |
+
if (sType !== "object" || o === null)
|
| 4878 |
+
{
|
| 4879 |
+
// simple data type
|
| 4880 |
+
if (sType === "string")
|
| 4881 |
+
{
|
| 4882 |
+
o = '"'+o+'"';
|
| 4883 |
+
}
|
| 4884 |
+
return o+"";
|
| 4885 |
+
}
|
| 4886 |
+
|
| 4887 |
+
/* If object or array, need to recurse over it */
|
| 4888 |
+
var
|
| 4889 |
+
sProp, mValue,
|
| 4890 |
+
json = [],
|
| 4891 |
+
bArr = $.isArray(o);
|
| 4892 |
+
|
| 4893 |
+
for (sProp in o)
|
| 4894 |
+
{
|
| 4895 |
+
mValue = o[sProp];
|
| 4896 |
+
sType = typeof mValue;
|
| 4897 |
+
|
| 4898 |
+
if (sType === "string")
|
| 4899 |
+
{
|
| 4900 |
+
mValue = '"'+mValue+'"';
|
| 4901 |
+
}
|
| 4902 |
+
else if (sType === "object" && mValue !== null)
|
| 4903 |
+
{
|
| 4904 |
+
mValue = _fnJsonString(mValue);
|
| 4905 |
+
}
|
| 4906 |
+
|
| 4907 |
+
json.push((bArr ? "" : '"'+sProp+'":') + mValue);
|
| 4908 |
+
}
|
| 4909 |
+
|
| 4910 |
+
return (bArr ? "[" : "{") + json + (bArr ? "]" : "}");
|
| 4911 |
+
};
|
| 4912 |
+
|
| 4913 |
+
|
| 4914 |
+
/**
|
| 4915 |
+
* From some browsers (specifically IE6/7) we need special handling to work around browser
|
| 4916 |
+
* bugs - this function is used to detect when these workarounds are needed.
|
| 4917 |
+
* @param {object} oSettings dataTables settings object
|
| 4918 |
+
* @memberof DataTable#oApi
|
| 4919 |
+
*/
|
| 4920 |
+
function _fnBrowserDetect( oSettings )
|
| 4921 |
+
{
|
| 4922 |
+
/* IE6/7 will oversize a width 100% element inside a scrolling element, to include the
|
| 4923 |
+
* width of the scrollbar, while other browsers ensure the inner element is contained
|
| 4924 |
+
* without forcing scrolling
|
| 4925 |
+
*/
|
| 4926 |
+
var n = $(
|
| 4927 |
+
'<div style="position:absolute; top:0; left:0; height:1px; width:1px; overflow:hidden">'+
|
| 4928 |
+
'<div style="position:absolute; top:1px; left:1px; width:100px; overflow:scroll;">'+
|
| 4929 |
+
'<div id="DT_BrowserTest" style="width:100%; height:10px;"></div>'+
|
| 4930 |
+
'</div>'+
|
| 4931 |
+
'</div>')[0];
|
| 4932 |
+
|
| 4933 |
+
document.body.appendChild( n );
|
| 4934 |
+
oSettings.oBrowser.bScrollOversize = $('#DT_BrowserTest', n)[0].offsetWidth === 100 ? true : false;
|
| 4935 |
+
document.body.removeChild( n );
|
| 4936 |
+
}
|
| 4937 |
+
|
| 4938 |
+
|
| 4939 |
+
/**
|
| 4940 |
+
* Perform a jQuery selector action on the table's TR elements (from the tbody) and
|
| 4941 |
+
* return the resulting jQuery object.
|
| 4942 |
+
* @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
|
| 4943 |
+
* @param {object} [oOpts] Optional parameters for modifying the rows to be included
|
| 4944 |
+
* @param {string} [oOpts.filter=none] Select TR elements that meet the current filter
|
| 4945 |
+
* criterion ("applied") or all TR elements (i.e. no filter).
|
| 4946 |
+
* @param {string} [oOpts.order=current] Order of the TR elements in the processed array.
|
| 4947 |
+
* Can be either 'current', whereby the current sorting of the table is used, or
|
| 4948 |
+
* 'original' whereby the original order the data was read into the table is used.
|
| 4949 |
+
* @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
|
| 4950 |
+
* ("current") or not ("all"). If 'current' is given, then order is assumed to be
|
| 4951 |
+
* 'current' and filter is 'applied', regardless of what they might be given as.
|
| 4952 |
+
* @returns {object} jQuery object, filtered by the given selector.
|
| 4953 |
+
* @dtopt API
|
| 4954 |
+
*
|
| 4955 |
+
* @example
|
| 4956 |
+
* $(document).ready(function() {
|
| 4957 |
+
* var oTable = $('#example').dataTable();
|
| 4958 |
+
*
|
| 4959 |
+
* // Highlight every second row
|
| 4960 |
+
* oTable.$('tr:odd').css('backgroundColor', 'blue');
|
| 4961 |
+
* } );
|
| 4962 |
+
*
|
| 4963 |
+
* @example
|
| 4964 |
+
* $(document).ready(function() {
|
| 4965 |
+
* var oTable = $('#example').dataTable();
|
| 4966 |
+
*
|
| 4967 |
+
* // Filter to rows with 'Webkit' in them, add a background colour and then
|
| 4968 |
+
* // remove the filter, thus highlighting the 'Webkit' rows only.
|
| 4969 |
+
* oTable.fnFilter('Webkit');
|
| 4970 |
+
* oTable.$('tr', {"filter": "applied"}).css('backgroundColor', 'blue');
|
| 4971 |
+
* oTable.fnFilter('');
|
| 4972 |
+
* } );
|
| 4973 |
+
*/
|
| 4974 |
+
this.$ = function ( sSelector, oOpts )
|
| 4975 |
+
{
|
| 4976 |
+
var i, iLen, a = [], tr;
|
| 4977 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 4978 |
+
var aoData = oSettings.aoData;
|
| 4979 |
+
var aiDisplay = oSettings.aiDisplay;
|
| 4980 |
+
var aiDisplayMaster = oSettings.aiDisplayMaster;
|
| 4981 |
+
|
| 4982 |
+
if ( !oOpts )
|
| 4983 |
+
{
|
| 4984 |
+
oOpts = {};
|
| 4985 |
+
}
|
| 4986 |
+
|
| 4987 |
+
oOpts = $.extend( {}, {
|
| 4988 |
+
"filter": "none", // applied
|
| 4989 |
+
"order": "current", // "original"
|
| 4990 |
+
"page": "all" // current
|
| 4991 |
+
}, oOpts );
|
| 4992 |
+
|
| 4993 |
+
// Current page implies that order=current and fitler=applied, since it is fairly
|
| 4994 |
+
// senseless otherwise
|
| 4995 |
+
if ( oOpts.page == 'current' )
|
| 4996 |
+
{
|
| 4997 |
+
for ( i=oSettings._iDisplayStart, iLen=oSettings.fnDisplayEnd() ; i<iLen ; i++ )
|
| 4998 |
+
{
|
| 4999 |
+
tr = aoData[ aiDisplay[i] ].nTr;
|
| 5000 |
+
if ( tr )
|
| 5001 |
+
{
|
| 5002 |
+
a.push( tr );
|
| 5003 |
+
}
|
| 5004 |
+
}
|
| 5005 |
+
}
|
| 5006 |
+
else if ( oOpts.order == "current" && oOpts.filter == "none" )
|
| 5007 |
+
{
|
| 5008 |
+
for ( i=0, iLen=aiDisplayMaster.length ; i<iLen ; i++ )
|
| 5009 |
+
{
|
| 5010 |
+
tr = aoData[ aiDisplayMaster[i] ].nTr;
|
| 5011 |
+
if ( tr )
|
| 5012 |
+
{
|
| 5013 |
+
a.push( tr );
|
| 5014 |
+
}
|
| 5015 |
+
}
|
| 5016 |
+
}
|
| 5017 |
+
else if ( oOpts.order == "current" && oOpts.filter == "applied" )
|
| 5018 |
+
{
|
| 5019 |
+
for ( i=0, iLen=aiDisplay.length ; i<iLen ; i++ )
|
| 5020 |
+
{
|
| 5021 |
+
tr = aoData[ aiDisplay[i] ].nTr;
|
| 5022 |
+
if ( tr )
|
| 5023 |
+
{
|
| 5024 |
+
a.push( tr );
|
| 5025 |
+
}
|
| 5026 |
+
}
|
| 5027 |
+
}
|
| 5028 |
+
else if ( oOpts.order == "original" && oOpts.filter == "none" )
|
| 5029 |
+
{
|
| 5030 |
+
for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
|
| 5031 |
+
{
|
| 5032 |
+
tr = aoData[ i ].nTr ;
|
| 5033 |
+
if ( tr )
|
| 5034 |
+
{
|
| 5035 |
+
a.push( tr );
|
| 5036 |
+
}
|
| 5037 |
+
}
|
| 5038 |
+
}
|
| 5039 |
+
else if ( oOpts.order == "original" && oOpts.filter == "applied" )
|
| 5040 |
+
{
|
| 5041 |
+
for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
|
| 5042 |
+
{
|
| 5043 |
+
tr = aoData[ i ].nTr;
|
| 5044 |
+
if ( $.inArray( i, aiDisplay ) !== -1 && tr )
|
| 5045 |
+
{
|
| 5046 |
+
a.push( tr );
|
| 5047 |
+
}
|
| 5048 |
+
}
|
| 5049 |
+
}
|
| 5050 |
+
else
|
| 5051 |
+
{
|
| 5052 |
+
_fnLog( oSettings, 1, "Unknown selection options" );
|
| 5053 |
+
}
|
| 5054 |
+
|
| 5055 |
+
/* We need to filter on the TR elements and also 'find' in their descendants
|
| 5056 |
+
* to make the selector act like it would in a full table - so we need
|
| 5057 |
+
* to build both results and then combine them together
|
| 5058 |
+
*/
|
| 5059 |
+
var jqA = $(a);
|
| 5060 |
+
var jqTRs = jqA.filter( sSelector );
|
| 5061 |
+
var jqDescendants = jqA.find( sSelector );
|
| 5062 |
+
|
| 5063 |
+
return $( [].concat($.makeArray(jqTRs), $.makeArray(jqDescendants)) );
|
| 5064 |
+
};
|
| 5065 |
+
|
| 5066 |
+
|
| 5067 |
+
/**
|
| 5068 |
+
* Almost identical to $ in operation, but in this case returns the data for the matched
|
| 5069 |
+
* rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes
|
| 5070 |
+
* rather than any descendants, so the data can be obtained for the row/cell. If matching
|
| 5071 |
+
* rows are found, the data returned is the original data array/object that was used to
|
| 5072 |
+
* create the row (or a generated array if from a DOM source).
|
| 5073 |
+
*
|
| 5074 |
+
* This method is often useful in-combination with $ where both functions are given the
|
| 5075 |
+
* same parameters and the array indexes will match identically.
|
| 5076 |
+
* @param {string|node|jQuery} sSelector jQuery selector or node collection to act on
|
| 5077 |
+
* @param {object} [oOpts] Optional parameters for modifying the rows to be included
|
| 5078 |
+
* @param {string} [oOpts.filter=none] Select elements that meet the current filter
|
| 5079 |
+
* criterion ("applied") or all elements (i.e. no filter).
|
| 5080 |
+
* @param {string} [oOpts.order=current] Order of the data in the processed array.
|
| 5081 |
+
* Can be either 'current', whereby the current sorting of the table is used, or
|
| 5082 |
+
* 'original' whereby the original order the data was read into the table is used.
|
| 5083 |
+
* @param {string} [oOpts.page=all] Limit the selection to the currently displayed page
|
| 5084 |
+
* ("current") or not ("all"). If 'current' is given, then order is assumed to be
|
| 5085 |
+
* 'current' and filter is 'applied', regardless of what they might be given as.
|
| 5086 |
+
* @returns {array} Data for the matched elements. If any elements, as a result of the
|
| 5087 |
+
* selector, were not TR, TD or TH elements in the DataTable, they will have a null
|
| 5088 |
+
* entry in the array.
|
| 5089 |
+
* @dtopt API
|
| 5090 |
+
*
|
| 5091 |
+
* @example
|
| 5092 |
+
* $(document).ready(function() {
|
| 5093 |
+
* var oTable = $('#example').dataTable();
|
| 5094 |
+
*
|
| 5095 |
+
* // Get the data from the first row in the table
|
| 5096 |
+
* var data = oTable._('tr:first');
|
| 5097 |
+
*
|
| 5098 |
+
* // Do something useful with the data
|
| 5099 |
+
* alert( "First cell is: "+data[0] );
|
| 5100 |
+
* } );
|
| 5101 |
+
*
|
| 5102 |
+
* @example
|
| 5103 |
+
* $(document).ready(function() {
|
| 5104 |
+
* var oTable = $('#example').dataTable();
|
| 5105 |
+
*
|
| 5106 |
+
* // Filter to 'Webkit' and get all data for
|
| 5107 |
+
* oTable.fnFilter('Webkit');
|
| 5108 |
+
* var data = oTable._('tr', {"filter": "applied"});
|
| 5109 |
+
*
|
| 5110 |
+
* // Do something with the data
|
| 5111 |
+
* alert( data.length+" rows matched the filter" );
|
| 5112 |
+
* } );
|
| 5113 |
+
*/
|
| 5114 |
+
this._ = function ( sSelector, oOpts )
|
| 5115 |
+
{
|
| 5116 |
+
var aOut = [];
|
| 5117 |
+
var i, iLen, iIndex;
|
| 5118 |
+
var aTrs = this.$( sSelector, oOpts );
|
| 5119 |
+
|
| 5120 |
+
for ( i=0, iLen=aTrs.length ; i<iLen ; i++ )
|
| 5121 |
+
{
|
| 5122 |
+
aOut.push( this.fnGetData(aTrs[i]) );
|
| 5123 |
+
}
|
| 5124 |
+
|
| 5125 |
+
return aOut;
|
| 5126 |
+
};
|
| 5127 |
+
|
| 5128 |
+
|
| 5129 |
+
/**
|
| 5130 |
+
* Add a single new row or multiple rows of data to the table. Please note
|
| 5131 |
+
* that this is suitable for client-side processing only - if you are using
|
| 5132 |
+
* server-side processing (i.e. "bServerSide": true), then to add data, you
|
| 5133 |
+
* must add it to the data source, i.e. the server-side, through an Ajax call.
|
| 5134 |
+
* @param {array|object} mData The data to be added to the table. This can be:
|
| 5135 |
+
* <ul>
|
| 5136 |
+
* <li>1D array of data - add a single row with the data provided</li>
|
| 5137 |
+
* <li>2D array of arrays - add multiple rows in a single call</li>
|
| 5138 |
+
* <li>object - data object when using <i>mData</i></li>
|
| 5139 |
+
* <li>array of objects - multiple data objects when using <i>mData</i></li>
|
| 5140 |
+
* </ul>
|
| 5141 |
+
* @param {bool} [bRedraw=true] redraw the table or not
|
| 5142 |
+
* @returns {array} An array of integers, representing the list of indexes in
|
| 5143 |
+
* <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to
|
| 5144 |
+
* the table.
|
| 5145 |
+
* @dtopt API
|
| 5146 |
+
*
|
| 5147 |
+
* @example
|
| 5148 |
+
* // Global var for counter
|
| 5149 |
+
* var giCount = 2;
|
| 5150 |
+
*
|
| 5151 |
+
* $(document).ready(function() {
|
| 5152 |
+
* $('#example').dataTable();
|
| 5153 |
+
* } );
|
| 5154 |
+
*
|
| 5155 |
+
* function fnClickAddRow() {
|
| 5156 |
+
* $('#example').dataTable().fnAddData( [
|
| 5157 |
+
* giCount+".1",
|
| 5158 |
+
* giCount+".2",
|
| 5159 |
+
* giCount+".3",
|
| 5160 |
+
* giCount+".4" ]
|
| 5161 |
+
* );
|
| 5162 |
+
*
|
| 5163 |
+
* giCount++;
|
| 5164 |
+
* }
|
| 5165 |
+
*/
|
| 5166 |
+
this.fnAddData = function( mData, bRedraw )
|
| 5167 |
+
{
|
| 5168 |
+
if ( mData.length === 0 )
|
| 5169 |
+
{
|
| 5170 |
+
return [];
|
| 5171 |
+
}
|
| 5172 |
+
|
| 5173 |
+
var aiReturn = [];
|
| 5174 |
+
var iTest;
|
| 5175 |
+
|
| 5176 |
+
/* Find settings from table node */
|
| 5177 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5178 |
+
|
| 5179 |
+
/* Check if we want to add multiple rows or not */
|
| 5180 |
+
if ( typeof mData[0] === "object" && mData[0] !== null )
|
| 5181 |
+
{
|
| 5182 |
+
for ( var i=0 ; i<mData.length ; i++ )
|
| 5183 |
+
{
|
| 5184 |
+
iTest = _fnAddData( oSettings, mData[i] );
|
| 5185 |
+
if ( iTest == -1 )
|
| 5186 |
+
{
|
| 5187 |
+
return aiReturn;
|
| 5188 |
+
}
|
| 5189 |
+
aiReturn.push( iTest );
|
| 5190 |
+
}
|
| 5191 |
+
}
|
| 5192 |
+
else
|
| 5193 |
+
{
|
| 5194 |
+
iTest = _fnAddData( oSettings, mData );
|
| 5195 |
+
if ( iTest == -1 )
|
| 5196 |
+
{
|
| 5197 |
+
return aiReturn;
|
| 5198 |
+
}
|
| 5199 |
+
aiReturn.push( iTest );
|
| 5200 |
+
}
|
| 5201 |
+
|
| 5202 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 5203 |
+
|
| 5204 |
+
if ( bRedraw === undefined || bRedraw )
|
| 5205 |
+
{
|
| 5206 |
+
_fnReDraw( oSettings );
|
| 5207 |
+
}
|
| 5208 |
+
return aiReturn;
|
| 5209 |
+
};
|
| 5210 |
+
|
| 5211 |
+
|
| 5212 |
+
/**
|
| 5213 |
+
* This function will make DataTables recalculate the column sizes, based on the data
|
| 5214 |
+
* contained in the table and the sizes applied to the columns (in the DOM, CSS or
|
| 5215 |
+
* through the sWidth parameter). This can be useful when the width of the table's
|
| 5216 |
+
* parent element changes (for example a window resize).
|
| 5217 |
+
* @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to
|
| 5218 |
+
* @dtopt API
|
| 5219 |
+
*
|
| 5220 |
+
* @example
|
| 5221 |
+
* $(document).ready(function() {
|
| 5222 |
+
* var oTable = $('#example').dataTable( {
|
| 5223 |
+
* "sScrollY": "200px",
|
| 5224 |
+
* "bPaginate": false
|
| 5225 |
+
* } );
|
| 5226 |
+
*
|
| 5227 |
+
* $(window).bind('resize', function () {
|
| 5228 |
+
* oTable.fnAdjustColumnSizing();
|
| 5229 |
+
* } );
|
| 5230 |
+
* } );
|
| 5231 |
+
*/
|
| 5232 |
+
this.fnAdjustColumnSizing = function ( bRedraw )
|
| 5233 |
+
{
|
| 5234 |
+
var oSettings = _fnSettingsFromNode(this[DataTable.ext.iApiIndex]);
|
| 5235 |
+
_fnAdjustColumnSizing( oSettings );
|
| 5236 |
+
|
| 5237 |
+
if ( bRedraw === undefined || bRedraw )
|
| 5238 |
+
{
|
| 5239 |
+
this.fnDraw( false );
|
| 5240 |
+
}
|
| 5241 |
+
else if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
|
| 5242 |
+
{
|
| 5243 |
+
/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */
|
| 5244 |
+
this.oApi._fnScrollDraw(oSettings);
|
| 5245 |
+
}
|
| 5246 |
+
};
|
| 5247 |
+
|
| 5248 |
+
|
| 5249 |
+
/**
|
| 5250 |
+
* Quickly and simply clear a table
|
| 5251 |
+
* @param {bool} [bRedraw=true] redraw the table or not
|
| 5252 |
+
* @dtopt API
|
| 5253 |
+
*
|
| 5254 |
+
* @example
|
| 5255 |
+
* $(document).ready(function() {
|
| 5256 |
+
* var oTable = $('#example').dataTable();
|
| 5257 |
+
*
|
| 5258 |
+
* // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)
|
| 5259 |
+
* oTable.fnClearTable();
|
| 5260 |
+
* } );
|
| 5261 |
+
*/
|
| 5262 |
+
this.fnClearTable = function( bRedraw )
|
| 5263 |
+
{
|
| 5264 |
+
/* Find settings from table node */
|
| 5265 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5266 |
+
_fnClearTable( oSettings );
|
| 5267 |
+
|
| 5268 |
+
if ( bRedraw === undefined || bRedraw )
|
| 5269 |
+
{
|
| 5270 |
+
_fnDraw( oSettings );
|
| 5271 |
+
}
|
| 5272 |
+
};
|
| 5273 |
+
|
| 5274 |
+
|
| 5275 |
+
/**
|
| 5276 |
+
* The exact opposite of 'opening' a row, this function will close any rows which
|
| 5277 |
+
* are currently 'open'.
|
| 5278 |
+
* @param {node} nTr the table row to 'close'
|
| 5279 |
+
* @returns {int} 0 on success, or 1 if failed (can't find the row)
|
| 5280 |
+
* @dtopt API
|
| 5281 |
+
*
|
| 5282 |
+
* @example
|
| 5283 |
+
* $(document).ready(function() {
|
| 5284 |
+
* var oTable;
|
| 5285 |
+
*
|
| 5286 |
+
* // 'open' an information row when a row is clicked on
|
| 5287 |
+
* $('#example tbody tr').click( function () {
|
| 5288 |
+
* if ( oTable.fnIsOpen(this) ) {
|
| 5289 |
+
* oTable.fnClose( this );
|
| 5290 |
+
* } else {
|
| 5291 |
+
* oTable.fnOpen( this, "Temporary row opened", "info_row" );
|
| 5292 |
+
* }
|
| 5293 |
+
* } );
|
| 5294 |
+
*
|
| 5295 |
+
* oTable = $('#example').dataTable();
|
| 5296 |
+
* } );
|
| 5297 |
+
*/
|
| 5298 |
+
this.fnClose = function( nTr )
|
| 5299 |
+
{
|
| 5300 |
+
/* Find settings from table node */
|
| 5301 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5302 |
+
|
| 5303 |
+
for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
|
| 5304 |
+
{
|
| 5305 |
+
if ( oSettings.aoOpenRows[i].nParent == nTr )
|
| 5306 |
+
{
|
| 5307 |
+
var nTrParent = oSettings.aoOpenRows[i].nTr.parentNode;
|
| 5308 |
+
if ( nTrParent )
|
| 5309 |
+
{
|
| 5310 |
+
/* Remove it if it is currently on display */
|
| 5311 |
+
nTrParent.removeChild( oSettings.aoOpenRows[i].nTr );
|
| 5312 |
+
}
|
| 5313 |
+
oSettings.aoOpenRows.splice( i, 1 );
|
| 5314 |
+
return 0;
|
| 5315 |
+
}
|
| 5316 |
+
}
|
| 5317 |
+
return 1;
|
| 5318 |
+
};
|
| 5319 |
+
|
| 5320 |
+
|
| 5321 |
+
/**
|
| 5322 |
+
* Remove a row for the table
|
| 5323 |
+
* @param {mixed} mTarget The index of the row from aoData to be deleted, or
|
| 5324 |
+
* the TR element you want to delete
|
| 5325 |
+
* @param {function|null} [fnCallBack] Callback function
|
| 5326 |
+
* @param {bool} [bRedraw=true] Redraw the table or not
|
| 5327 |
+
* @returns {array} The row that was deleted
|
| 5328 |
+
* @dtopt API
|
| 5329 |
+
*
|
| 5330 |
+
* @example
|
| 5331 |
+
* $(document).ready(function() {
|
| 5332 |
+
* var oTable = $('#example').dataTable();
|
| 5333 |
+
*
|
| 5334 |
+
* // Immediately remove the first row
|
| 5335 |
+
* oTable.fnDeleteRow( 0 );
|
| 5336 |
+
* } );
|
| 5337 |
+
*/
|
| 5338 |
+
this.fnDeleteRow = function( mTarget, fnCallBack, bRedraw )
|
| 5339 |
+
{
|
| 5340 |
+
/* Find settings from table node */
|
| 5341 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5342 |
+
var i, iLen, iAODataIndex;
|
| 5343 |
+
|
| 5344 |
+
iAODataIndex = (typeof mTarget === 'object') ?
|
| 5345 |
+
_fnNodeToDataIndex(oSettings, mTarget) : mTarget;
|
| 5346 |
+
|
| 5347 |
+
/* Return the data array from this row */
|
| 5348 |
+
var oData = oSettings.aoData.splice( iAODataIndex, 1 );
|
| 5349 |
+
|
| 5350 |
+
/* Update the _DT_RowIndex parameter */
|
| 5351 |
+
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
|
| 5352 |
+
{
|
| 5353 |
+
if ( oSettings.aoData[i].nTr !== null )
|
| 5354 |
+
{
|
| 5355 |
+
oSettings.aoData[i].nTr._DT_RowIndex = i;
|
| 5356 |
+
}
|
| 5357 |
+
}
|
| 5358 |
+
|
| 5359 |
+
/* Remove the target row from the search array */
|
| 5360 |
+
var iDisplayIndex = $.inArray( iAODataIndex, oSettings.aiDisplay );
|
| 5361 |
+
oSettings.asDataSearch.splice( iDisplayIndex, 1 );
|
| 5362 |
+
|
| 5363 |
+
/* Delete from the display arrays */
|
| 5364 |
+
_fnDeleteIndex( oSettings.aiDisplayMaster, iAODataIndex );
|
| 5365 |
+
_fnDeleteIndex( oSettings.aiDisplay, iAODataIndex );
|
| 5366 |
+
|
| 5367 |
+
/* If there is a user callback function - call it */
|
| 5368 |
+
if ( typeof fnCallBack === "function" )
|
| 5369 |
+
{
|
| 5370 |
+
fnCallBack.call( this, oSettings, oData );
|
| 5371 |
+
}
|
| 5372 |
+
|
| 5373 |
+
/* Check for an 'overflow' they case for displaying the table */
|
| 5374 |
+
if ( oSettings._iDisplayStart >= oSettings.fnRecordsDisplay() )
|
| 5375 |
+
{
|
| 5376 |
+
oSettings._iDisplayStart -= oSettings._iDisplayLength;
|
| 5377 |
+
if ( oSettings._iDisplayStart < 0 )
|
| 5378 |
+
{
|
| 5379 |
+
oSettings._iDisplayStart = 0;
|
| 5380 |
+
}
|
| 5381 |
+
}
|
| 5382 |
+
|
| 5383 |
+
if ( bRedraw === undefined || bRedraw )
|
| 5384 |
+
{
|
| 5385 |
+
_fnCalculateEnd( oSettings );
|
| 5386 |
+
_fnDraw( oSettings );
|
| 5387 |
+
}
|
| 5388 |
+
|
| 5389 |
+
return oData;
|
| 5390 |
+
};
|
| 5391 |
+
|
| 5392 |
+
|
| 5393 |
+
/**
|
| 5394 |
+
* Restore the table to it's original state in the DOM by removing all of DataTables
|
| 5395 |
+
* enhancements, alterations to the DOM structure of the table and event listeners.
|
| 5396 |
+
* @param {boolean} [bRemove=false] Completely remove the table from the DOM
|
| 5397 |
+
* @dtopt API
|
| 5398 |
+
*
|
| 5399 |
+
* @example
|
| 5400 |
+
* $(document).ready(function() {
|
| 5401 |
+
* // This example is fairly pointless in reality, but shows how fnDestroy can be used
|
| 5402 |
+
* var oTable = $('#example').dataTable();
|
| 5403 |
+
* oTable.fnDestroy();
|
| 5404 |
+
* } );
|
| 5405 |
+
*/
|
| 5406 |
+
this.fnDestroy = function ( bRemove )
|
| 5407 |
+
{
|
| 5408 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5409 |
+
var nOrig = oSettings.nTableWrapper.parentNode;
|
| 5410 |
+
var nBody = oSettings.nTBody;
|
| 5411 |
+
var i, iLen;
|
| 5412 |
+
|
| 5413 |
+
bRemove = (bRemove===undefined) ? false : bRemove;
|
| 5414 |
+
|
| 5415 |
+
/* Flag to note that the table is currently being destroyed - no action should be taken */
|
| 5416 |
+
oSettings.bDestroying = true;
|
| 5417 |
+
|
| 5418 |
+
/* Fire off the destroy callbacks for plug-ins etc */
|
| 5419 |
+
_fnCallbackFire( oSettings, "aoDestroyCallback", "destroy", [oSettings] );
|
| 5420 |
+
|
| 5421 |
+
/* If the table is not being removed, restore the hidden columns */
|
| 5422 |
+
if ( !bRemove )
|
| 5423 |
+
{
|
| 5424 |
+
for ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )
|
| 5425 |
+
{
|
| 5426 |
+
if ( oSettings.aoColumns[i].bVisible === false )
|
| 5427 |
+
{
|
| 5428 |
+
this.fnSetColumnVis( i, true );
|
| 5429 |
+
}
|
| 5430 |
+
}
|
| 5431 |
+
}
|
| 5432 |
+
|
| 5433 |
+
/* Blitz all DT events */
|
| 5434 |
+
$(oSettings.nTableWrapper).find('*').andSelf().unbind('.DT');
|
| 5435 |
+
|
| 5436 |
+
/* If there is an 'empty' indicator row, remove it */
|
| 5437 |
+
$('tbody>tr>td.'+oSettings.oClasses.sRowEmpty, oSettings.nTable).parent().remove();
|
| 5438 |
+
|
| 5439 |
+
/* When scrolling we had to break the table up - restore it */
|
| 5440 |
+
if ( oSettings.nTable != oSettings.nTHead.parentNode )
|
| 5441 |
+
{
|
| 5442 |
+
$(oSettings.nTable).children('thead').remove();
|
| 5443 |
+
oSettings.nTable.appendChild( oSettings.nTHead );
|
| 5444 |
+
}
|
| 5445 |
+
|
| 5446 |
+
if ( oSettings.nTFoot && oSettings.nTable != oSettings.nTFoot.parentNode )
|
| 5447 |
+
{
|
| 5448 |
+
$(oSettings.nTable).children('tfoot').remove();
|
| 5449 |
+
oSettings.nTable.appendChild( oSettings.nTFoot );
|
| 5450 |
+
}
|
| 5451 |
+
|
| 5452 |
+
/* Remove the DataTables generated nodes, events and classes */
|
| 5453 |
+
oSettings.nTable.parentNode.removeChild( oSettings.nTable );
|
| 5454 |
+
$(oSettings.nTableWrapper).remove();
|
| 5455 |
+
|
| 5456 |
+
oSettings.aaSorting = [];
|
| 5457 |
+
oSettings.aaSortingFixed = [];
|
| 5458 |
+
_fnSortingClasses( oSettings );
|
| 5459 |
+
|
| 5460 |
+
$(_fnGetTrNodes( oSettings )).removeClass( oSettings.asStripeClasses.join(' ') );
|
| 5461 |
+
|
| 5462 |
+
$('th, td', oSettings.nTHead).removeClass( [
|
| 5463 |
+
oSettings.oClasses.sSortable,
|
| 5464 |
+
oSettings.oClasses.sSortableAsc,
|
| 5465 |
+
oSettings.oClasses.sSortableDesc,
|
| 5466 |
+
oSettings.oClasses.sSortableNone ].join(' ')
|
| 5467 |
+
);
|
| 5468 |
+
if ( oSettings.bJUI )
|
| 5469 |
+
{
|
| 5470 |
+
$('th span.'+oSettings.oClasses.sSortIcon
|
| 5471 |
+
+ ', td span.'+oSettings.oClasses.sSortIcon, oSettings.nTHead).remove();
|
| 5472 |
+
|
| 5473 |
+
$('th, td', oSettings.nTHead).each( function () {
|
| 5474 |
+
var jqWrapper = $('div.'+oSettings.oClasses.sSortJUIWrapper, this);
|
| 5475 |
+
var kids = jqWrapper.contents();
|
| 5476 |
+
$(this).append( kids );
|
| 5477 |
+
jqWrapper.remove();
|
| 5478 |
+
} );
|
| 5479 |
+
}
|
| 5480 |
+
|
| 5481 |
+
/* Add the TR elements back into the table in their original order */
|
| 5482 |
+
if ( !bRemove && oSettings.nTableReinsertBefore )
|
| 5483 |
+
{
|
| 5484 |
+
nOrig.insertBefore( oSettings.nTable, oSettings.nTableReinsertBefore );
|
| 5485 |
+
}
|
| 5486 |
+
else if ( !bRemove )
|
| 5487 |
+
{
|
| 5488 |
+
nOrig.appendChild( oSettings.nTable );
|
| 5489 |
+
}
|
| 5490 |
+
|
| 5491 |
+
for ( i=0, iLen=oSettings.aoData.length ; i<iLen ; i++ )
|
| 5492 |
+
{
|
| 5493 |
+
if ( oSettings.aoData[i].nTr !== null )
|
| 5494 |
+
{
|
| 5495 |
+
nBody.appendChild( oSettings.aoData[i].nTr );
|
| 5496 |
+
}
|
| 5497 |
+
}
|
| 5498 |
+
|
| 5499 |
+
/* Restore the width of the original table */
|
| 5500 |
+
if ( oSettings.oFeatures.bAutoWidth === true )
|
| 5501 |
+
{
|
| 5502 |
+
oSettings.nTable.style.width = _fnStringToCss(oSettings.sDestroyWidth);
|
| 5503 |
+
}
|
| 5504 |
+
|
| 5505 |
+
/* If the were originally stripe classes - then we add them back here. Note
|
| 5506 |
+
* this is not fool proof (for example if not all rows had stripe classes - but
|
| 5507 |
+
* it's a good effort without getting carried away
|
| 5508 |
+
*/
|
| 5509 |
+
iLen = oSettings.asDestroyStripes.length;
|
| 5510 |
+
if (iLen)
|
| 5511 |
+
{
|
| 5512 |
+
var anRows = $(nBody).children('tr');
|
| 5513 |
+
for ( i=0 ; i<iLen ; i++ )
|
| 5514 |
+
{
|
| 5515 |
+
anRows.filter(':nth-child(' + iLen + 'n + ' + i + ')').addClass( oSettings.asDestroyStripes[i] );
|
| 5516 |
+
}
|
| 5517 |
+
}
|
| 5518 |
+
|
| 5519 |
+
/* Remove the settings object from the settings array */
|
| 5520 |
+
for ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )
|
| 5521 |
+
{
|
| 5522 |
+
if ( DataTable.settings[i] == oSettings )
|
| 5523 |
+
{
|
| 5524 |
+
DataTable.settings.splice( i, 1 );
|
| 5525 |
+
}
|
| 5526 |
+
}
|
| 5527 |
+
|
| 5528 |
+
/* End it all */
|
| 5529 |
+
oSettings = null;
|
| 5530 |
+
oInit = null;
|
| 5531 |
+
};
|
| 5532 |
+
|
| 5533 |
+
|
| 5534 |
+
/**
|
| 5535 |
+
* Redraw the table
|
| 5536 |
+
* @param {bool} [bComplete=true] Re-filter and resort (if enabled) the table before the draw.
|
| 5537 |
+
* @dtopt API
|
| 5538 |
+
*
|
| 5539 |
+
* @example
|
| 5540 |
+
* $(document).ready(function() {
|
| 5541 |
+
* var oTable = $('#example').dataTable();
|
| 5542 |
+
*
|
| 5543 |
+
* // Re-draw the table - you wouldn't want to do it here, but it's an example :-)
|
| 5544 |
+
* oTable.fnDraw();
|
| 5545 |
+
* } );
|
| 5546 |
+
*/
|
| 5547 |
+
this.fnDraw = function( bComplete )
|
| 5548 |
+
{
|
| 5549 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5550 |
+
if ( bComplete === false )
|
| 5551 |
+
{
|
| 5552 |
+
_fnCalculateEnd( oSettings );
|
| 5553 |
+
_fnDraw( oSettings );
|
| 5554 |
+
}
|
| 5555 |
+
else
|
| 5556 |
+
{
|
| 5557 |
+
_fnReDraw( oSettings );
|
| 5558 |
+
}
|
| 5559 |
+
};
|
| 5560 |
+
|
| 5561 |
+
|
| 5562 |
+
/**
|
| 5563 |
+
* Filter the input based on data
|
| 5564 |
+
* @param {string} sInput String to filter the table on
|
| 5565 |
+
* @param {int|null} [iColumn] Column to limit filtering to
|
| 5566 |
+
* @param {bool} [bRegex=false] Treat as regular expression or not
|
| 5567 |
+
* @param {bool} [bSmart=true] Perform smart filtering or not
|
| 5568 |
+
* @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)
|
| 5569 |
+
* @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)
|
| 5570 |
+
* @dtopt API
|
| 5571 |
+
*
|
| 5572 |
+
* @example
|
| 5573 |
+
* $(document).ready(function() {
|
| 5574 |
+
* var oTable = $('#example').dataTable();
|
| 5575 |
+
*
|
| 5576 |
+
* // Sometime later - filter...
|
| 5577 |
+
* oTable.fnFilter( 'test string' );
|
| 5578 |
+
* } );
|
| 5579 |
+
*/
|
| 5580 |
+
this.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )
|
| 5581 |
+
{
|
| 5582 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5583 |
+
|
| 5584 |
+
if ( !oSettings.oFeatures.bFilter )
|
| 5585 |
+
{
|
| 5586 |
+
return;
|
| 5587 |
+
}
|
| 5588 |
+
|
| 5589 |
+
if ( bRegex === undefined || bRegex === null )
|
| 5590 |
+
{
|
| 5591 |
+
bRegex = false;
|
| 5592 |
+
}
|
| 5593 |
+
|
| 5594 |
+
if ( bSmart === undefined || bSmart === null )
|
| 5595 |
+
{
|
| 5596 |
+
bSmart = true;
|
| 5597 |
+
}
|
| 5598 |
+
|
| 5599 |
+
if ( bShowGlobal === undefined || bShowGlobal === null )
|
| 5600 |
+
{
|
| 5601 |
+
bShowGlobal = true;
|
| 5602 |
+
}
|
| 5603 |
+
|
| 5604 |
+
if ( bCaseInsensitive === undefined || bCaseInsensitive === null )
|
| 5605 |
+
{
|
| 5606 |
+
bCaseInsensitive = true;
|
| 5607 |
+
}
|
| 5608 |
+
|
| 5609 |
+
if ( iColumn === undefined || iColumn === null )
|
| 5610 |
+
{
|
| 5611 |
+
/* Global filter */
|
| 5612 |
+
_fnFilterComplete( oSettings, {
|
| 5613 |
+
"sSearch":sInput+"",
|
| 5614 |
+
"bRegex": bRegex,
|
| 5615 |
+
"bSmart": bSmart,
|
| 5616 |
+
"bCaseInsensitive": bCaseInsensitive
|
| 5617 |
+
}, 1 );
|
| 5618 |
+
|
| 5619 |
+
if ( bShowGlobal && oSettings.aanFeatures.f )
|
| 5620 |
+
{
|
| 5621 |
+
var n = oSettings.aanFeatures.f;
|
| 5622 |
+
for ( var i=0, iLen=n.length ; i<iLen ; i++ )
|
| 5623 |
+
{
|
| 5624 |
+
// IE9 throws an 'unknown error' if document.activeElement is used
|
| 5625 |
+
// inside an iframe or frame...
|
| 5626 |
+
try {
|
| 5627 |
+
if ( n[i]._DT_Input != document.activeElement )
|
| 5628 |
+
{
|
| 5629 |
+
$(n[i]._DT_Input).val( sInput );
|
| 5630 |
+
}
|
| 5631 |
+
}
|
| 5632 |
+
catch ( e ) {
|
| 5633 |
+
$(n[i]._DT_Input).val( sInput );
|
| 5634 |
+
}
|
| 5635 |
+
}
|
| 5636 |
+
}
|
| 5637 |
+
}
|
| 5638 |
+
else
|
| 5639 |
+
{
|
| 5640 |
+
/* Single column filter */
|
| 5641 |
+
$.extend( oSettings.aoPreSearchCols[ iColumn ], {
|
| 5642 |
+
"sSearch": sInput+"",
|
| 5643 |
+
"bRegex": bRegex,
|
| 5644 |
+
"bSmart": bSmart,
|
| 5645 |
+
"bCaseInsensitive": bCaseInsensitive
|
| 5646 |
+
} );
|
| 5647 |
+
_fnFilterComplete( oSettings, oSettings.oPreviousSearch, 1 );
|
| 5648 |
+
}
|
| 5649 |
+
};
|
| 5650 |
+
|
| 5651 |
+
|
| 5652 |
+
/**
|
| 5653 |
+
* Get the data for the whole table, an individual row or an individual cell based on the
|
| 5654 |
+
* provided parameters.
|
| 5655 |
+
* @param {int|node} [mRow] A TR row node, TD/TH cell node or an integer. If given as
|
| 5656 |
+
* a TR node then the data source for the whole row will be returned. If given as a
|
| 5657 |
+
* TD/TH cell node then iCol will be automatically calculated and the data for the
|
| 5658 |
+
* cell returned. If given as an integer, then this is treated as the aoData internal
|
| 5659 |
+
* data index for the row (see fnGetPosition) and the data for that row used.
|
| 5660 |
+
* @param {int} [iCol] Optional column index that you want the data of.
|
| 5661 |
+
* @returns {array|object|string} If mRow is undefined, then the data for all rows is
|
| 5662 |
+
* returned. If mRow is defined, just data for that row, and is iCol is
|
| 5663 |
+
* defined, only data for the designated cell is returned.
|
| 5664 |
+
* @dtopt API
|
| 5665 |
+
*
|
| 5666 |
+
* @example
|
| 5667 |
+
* // Row data
|
| 5668 |
+
* $(document).ready(function() {
|
| 5669 |
+
* oTable = $('#example').dataTable();
|
| 5670 |
+
*
|
| 5671 |
+
* oTable.$('tr').click( function () {
|
| 5672 |
+
* var data = oTable.fnGetData( this );
|
| 5673 |
+
* // ... do something with the array / object of data for the row
|
| 5674 |
+
* } );
|
| 5675 |
+
* } );
|
| 5676 |
+
*
|
| 5677 |
+
* @example
|
| 5678 |
+
* // Individual cell data
|
| 5679 |
+
* $(document).ready(function() {
|
| 5680 |
+
* oTable = $('#example').dataTable();
|
| 5681 |
+
*
|
| 5682 |
+
* oTable.$('td').click( function () {
|
| 5683 |
+
* var sData = oTable.fnGetData( this );
|
| 5684 |
+
* alert( 'The cell clicked on had the value of '+sData );
|
| 5685 |
+
* } );
|
| 5686 |
+
* } );
|
| 5687 |
+
*/
|
| 5688 |
+
this.fnGetData = function( mRow, iCol )
|
| 5689 |
+
{
|
| 5690 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5691 |
+
|
| 5692 |
+
if ( mRow !== undefined )
|
| 5693 |
+
{
|
| 5694 |
+
var iRow = mRow;
|
| 5695 |
+
if ( typeof mRow === 'object' )
|
| 5696 |
+
{
|
| 5697 |
+
var sNode = mRow.nodeName.toLowerCase();
|
| 5698 |
+
if (sNode === "tr" )
|
| 5699 |
+
{
|
| 5700 |
+
iRow = _fnNodeToDataIndex(oSettings, mRow);
|
| 5701 |
+
}
|
| 5702 |
+
else if ( sNode === "td" )
|
| 5703 |
+
{
|
| 5704 |
+
iRow = _fnNodeToDataIndex(oSettings, mRow.parentNode);
|
| 5705 |
+
iCol = _fnNodeToColumnIndex( oSettings, iRow, mRow );
|
| 5706 |
+
}
|
| 5707 |
+
}
|
| 5708 |
+
|
| 5709 |
+
if ( iCol !== undefined )
|
| 5710 |
+
{
|
| 5711 |
+
return _fnGetCellData( oSettings, iRow, iCol, '' );
|
| 5712 |
+
}
|
| 5713 |
+
return (oSettings.aoData[iRow]!==undefined) ?
|
| 5714 |
+
oSettings.aoData[iRow]._aData : null;
|
| 5715 |
+
}
|
| 5716 |
+
return _fnGetDataMaster( oSettings );
|
| 5717 |
+
};
|
| 5718 |
+
|
| 5719 |
+
|
| 5720 |
+
/**
|
| 5721 |
+
* Get an array of the TR nodes that are used in the table's body. Note that you will
|
| 5722 |
+
* typically want to use the '$' API method in preference to this as it is more
|
| 5723 |
+
* flexible.
|
| 5724 |
+
* @param {int} [iRow] Optional row index for the TR element you want
|
| 5725 |
+
* @returns {array|node} If iRow is undefined, returns an array of all TR elements
|
| 5726 |
+
* in the table's body, or iRow is defined, just the TR element requested.
|
| 5727 |
+
* @dtopt API
|
| 5728 |
+
*
|
| 5729 |
+
* @example
|
| 5730 |
+
* $(document).ready(function() {
|
| 5731 |
+
* var oTable = $('#example').dataTable();
|
| 5732 |
+
*
|
| 5733 |
+
* // Get the nodes from the table
|
| 5734 |
+
* var nNodes = oTable.fnGetNodes( );
|
| 5735 |
+
* } );
|
| 5736 |
+
*/
|
| 5737 |
+
this.fnGetNodes = function( iRow )
|
| 5738 |
+
{
|
| 5739 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5740 |
+
|
| 5741 |
+
if ( iRow !== undefined ) {
|
| 5742 |
+
return (oSettings.aoData[iRow]!==undefined) ?
|
| 5743 |
+
oSettings.aoData[iRow].nTr : null;
|
| 5744 |
+
}
|
| 5745 |
+
return _fnGetTrNodes( oSettings );
|
| 5746 |
+
};
|
| 5747 |
+
|
| 5748 |
+
|
| 5749 |
+
/**
|
| 5750 |
+
* Get the array indexes of a particular cell from it's DOM element
|
| 5751 |
+
* and column index including hidden columns
|
| 5752 |
+
* @param {node} nNode this can either be a TR, TD or TH in the table's body
|
| 5753 |
+
* @returns {int} If nNode is given as a TR, then a single index is returned, or
|
| 5754 |
+
* if given as a cell, an array of [row index, column index (visible),
|
| 5755 |
+
* column index (all)] is given.
|
| 5756 |
+
* @dtopt API
|
| 5757 |
+
*
|
| 5758 |
+
* @example
|
| 5759 |
+
* $(document).ready(function() {
|
| 5760 |
+
* $('#example tbody td').click( function () {
|
| 5761 |
+
* // Get the position of the current data from the node
|
| 5762 |
+
* var aPos = oTable.fnGetPosition( this );
|
| 5763 |
+
*
|
| 5764 |
+
* // Get the data array for this row
|
| 5765 |
+
* var aData = oTable.fnGetData( aPos[0] );
|
| 5766 |
+
*
|
| 5767 |
+
* // Update the data array and return the value
|
| 5768 |
+
* aData[ aPos[1] ] = 'clicked';
|
| 5769 |
+
* this.innerHTML = 'clicked';
|
| 5770 |
+
* } );
|
| 5771 |
+
*
|
| 5772 |
+
* // Init DataTables
|
| 5773 |
+
* oTable = $('#example').dataTable();
|
| 5774 |
+
* } );
|
| 5775 |
+
*/
|
| 5776 |
+
this.fnGetPosition = function( nNode )
|
| 5777 |
+
{
|
| 5778 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5779 |
+
var sNodeName = nNode.nodeName.toUpperCase();
|
| 5780 |
+
|
| 5781 |
+
if ( sNodeName == "TR" )
|
| 5782 |
+
{
|
| 5783 |
+
return _fnNodeToDataIndex(oSettings, nNode);
|
| 5784 |
+
}
|
| 5785 |
+
else if ( sNodeName == "TD" || sNodeName == "TH" )
|
| 5786 |
+
{
|
| 5787 |
+
var iDataIndex = _fnNodeToDataIndex( oSettings, nNode.parentNode );
|
| 5788 |
+
var iColumnIndex = _fnNodeToColumnIndex( oSettings, iDataIndex, nNode );
|
| 5789 |
+
return [ iDataIndex, _fnColumnIndexToVisible(oSettings, iColumnIndex ), iColumnIndex ];
|
| 5790 |
+
}
|
| 5791 |
+
return null;
|
| 5792 |
+
};
|
| 5793 |
+
|
| 5794 |
+
|
| 5795 |
+
/**
|
| 5796 |
+
* Check to see if a row is 'open' or not.
|
| 5797 |
+
* @param {node} nTr the table row to check
|
| 5798 |
+
* @returns {boolean} true if the row is currently open, false otherwise
|
| 5799 |
+
* @dtopt API
|
| 5800 |
+
*
|
| 5801 |
+
* @example
|
| 5802 |
+
* $(document).ready(function() {
|
| 5803 |
+
* var oTable;
|
| 5804 |
+
*
|
| 5805 |
+
* // 'open' an information row when a row is clicked on
|
| 5806 |
+
* $('#example tbody tr').click( function () {
|
| 5807 |
+
* if ( oTable.fnIsOpen(this) ) {
|
| 5808 |
+
* oTable.fnClose( this );
|
| 5809 |
+
* } else {
|
| 5810 |
+
* oTable.fnOpen( this, "Temporary row opened", "info_row" );
|
| 5811 |
+
* }
|
| 5812 |
+
* } );
|
| 5813 |
+
*
|
| 5814 |
+
* oTable = $('#example').dataTable();
|
| 5815 |
+
* } );
|
| 5816 |
+
*/
|
| 5817 |
+
this.fnIsOpen = function( nTr )
|
| 5818 |
+
{
|
| 5819 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5820 |
+
var aoOpenRows = oSettings.aoOpenRows;
|
| 5821 |
+
|
| 5822 |
+
for ( var i=0 ; i<oSettings.aoOpenRows.length ; i++ )
|
| 5823 |
+
{
|
| 5824 |
+
if ( oSettings.aoOpenRows[i].nParent == nTr )
|
| 5825 |
+
{
|
| 5826 |
+
return true;
|
| 5827 |
+
}
|
| 5828 |
+
}
|
| 5829 |
+
return false;
|
| 5830 |
+
};
|
| 5831 |
+
|
| 5832 |
+
|
| 5833 |
+
/**
|
| 5834 |
+
* This function will place a new row directly after a row which is currently
|
| 5835 |
+
* on display on the page, with the HTML contents that is passed into the
|
| 5836 |
+
* function. This can be used, for example, to ask for confirmation that a
|
| 5837 |
+
* particular record should be deleted.
|
| 5838 |
+
* @param {node} nTr The table row to 'open'
|
| 5839 |
+
* @param {string|node|jQuery} mHtml The HTML to put into the row
|
| 5840 |
+
* @param {string} sClass Class to give the new TD cell
|
| 5841 |
+
* @returns {node} The row opened. Note that if the table row passed in as the
|
| 5842 |
+
* first parameter, is not found in the table, this method will silently
|
| 5843 |
+
* return.
|
| 5844 |
+
* @dtopt API
|
| 5845 |
+
*
|
| 5846 |
+
* @example
|
| 5847 |
+
* $(document).ready(function() {
|
| 5848 |
+
* var oTable;
|
| 5849 |
+
*
|
| 5850 |
+
* // 'open' an information row when a row is clicked on
|
| 5851 |
+
* $('#example tbody tr').click( function () {
|
| 5852 |
+
* if ( oTable.fnIsOpen(this) ) {
|
| 5853 |
+
* oTable.fnClose( this );
|
| 5854 |
+
* } else {
|
| 5855 |
+
* oTable.fnOpen( this, "Temporary row opened", "info_row" );
|
| 5856 |
+
* }
|
| 5857 |
+
* } );
|
| 5858 |
+
*
|
| 5859 |
+
* oTable = $('#example').dataTable();
|
| 5860 |
+
* } );
|
| 5861 |
+
*/
|
| 5862 |
+
this.fnOpen = function( nTr, mHtml, sClass )
|
| 5863 |
+
{
|
| 5864 |
+
/* Find settings from table node */
|
| 5865 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5866 |
+
|
| 5867 |
+
/* Check that the row given is in the table */
|
| 5868 |
+
var nTableRows = _fnGetTrNodes( oSettings );
|
| 5869 |
+
if ( $.inArray(nTr, nTableRows) === -1 )
|
| 5870 |
+
{
|
| 5871 |
+
return;
|
| 5872 |
+
}
|
| 5873 |
+
|
| 5874 |
+
/* the old open one if there is one */
|
| 5875 |
+
this.fnClose( nTr );
|
| 5876 |
+
|
| 5877 |
+
var nNewRow = document.createElement("tr");
|
| 5878 |
+
var nNewCell = document.createElement("td");
|
| 5879 |
+
nNewRow.appendChild( nNewCell );
|
| 5880 |
+
nNewCell.className = sClass;
|
| 5881 |
+
nNewCell.colSpan = _fnVisbleColumns( oSettings );
|
| 5882 |
+
|
| 5883 |
+
if (typeof mHtml === "string")
|
| 5884 |
+
{
|
| 5885 |
+
nNewCell.innerHTML = mHtml;
|
| 5886 |
+
}
|
| 5887 |
+
else
|
| 5888 |
+
{
|
| 5889 |
+
$(nNewCell).html( mHtml );
|
| 5890 |
+
}
|
| 5891 |
+
|
| 5892 |
+
/* If the nTr isn't on the page at the moment - then we don't insert at the moment */
|
| 5893 |
+
var nTrs = $('tr', oSettings.nTBody);
|
| 5894 |
+
if ( $.inArray(nTr, nTrs) != -1 )
|
| 5895 |
+
{
|
| 5896 |
+
$(nNewRow).insertAfter(nTr);
|
| 5897 |
+
}
|
| 5898 |
+
|
| 5899 |
+
oSettings.aoOpenRows.push( {
|
| 5900 |
+
"nTr": nNewRow,
|
| 5901 |
+
"nParent": nTr
|
| 5902 |
+
} );
|
| 5903 |
+
|
| 5904 |
+
return nNewRow;
|
| 5905 |
+
};
|
| 5906 |
+
|
| 5907 |
+
|
| 5908 |
+
/**
|
| 5909 |
+
* Change the pagination - provides the internal logic for pagination in a simple API
|
| 5910 |
+
* function. With this function you can have a DataTables table go to the next,
|
| 5911 |
+
* previous, first or last pages.
|
| 5912 |
+
* @param {string|int} mAction Paging action to take: "first", "previous", "next" or "last"
|
| 5913 |
+
* or page number to jump to (integer), note that page 0 is the first page.
|
| 5914 |
+
* @param {bool} [bRedraw=true] Redraw the table or not
|
| 5915 |
+
* @dtopt API
|
| 5916 |
+
*
|
| 5917 |
+
* @example
|
| 5918 |
+
* $(document).ready(function() {
|
| 5919 |
+
* var oTable = $('#example').dataTable();
|
| 5920 |
+
* oTable.fnPageChange( 'next' );
|
| 5921 |
+
* } );
|
| 5922 |
+
*/
|
| 5923 |
+
this.fnPageChange = function ( mAction, bRedraw )
|
| 5924 |
+
{
|
| 5925 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5926 |
+
_fnPageChange( oSettings, mAction );
|
| 5927 |
+
_fnCalculateEnd( oSettings );
|
| 5928 |
+
|
| 5929 |
+
if ( bRedraw === undefined || bRedraw )
|
| 5930 |
+
{
|
| 5931 |
+
_fnDraw( oSettings );
|
| 5932 |
+
}
|
| 5933 |
+
};
|
| 5934 |
+
|
| 5935 |
+
|
| 5936 |
+
/**
|
| 5937 |
+
* Show a particular column
|
| 5938 |
+
* @param {int} iCol The column whose display should be changed
|
| 5939 |
+
* @param {bool} bShow Show (true) or hide (false) the column
|
| 5940 |
+
* @param {bool} [bRedraw=true] Redraw the table or not
|
| 5941 |
+
* @dtopt API
|
| 5942 |
+
*
|
| 5943 |
+
* @example
|
| 5944 |
+
* $(document).ready(function() {
|
| 5945 |
+
* var oTable = $('#example').dataTable();
|
| 5946 |
+
*
|
| 5947 |
+
* // Hide the second column after initialisation
|
| 5948 |
+
* oTable.fnSetColumnVis( 1, false );
|
| 5949 |
+
* } );
|
| 5950 |
+
*/
|
| 5951 |
+
this.fnSetColumnVis = function ( iCol, bShow, bRedraw )
|
| 5952 |
+
{
|
| 5953 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 5954 |
+
var i, iLen;
|
| 5955 |
+
var aoColumns = oSettings.aoColumns;
|
| 5956 |
+
var aoData = oSettings.aoData;
|
| 5957 |
+
var nTd, bAppend, iBefore;
|
| 5958 |
+
|
| 5959 |
+
/* No point in doing anything if we are requesting what is already true */
|
| 5960 |
+
if ( aoColumns[iCol].bVisible == bShow )
|
| 5961 |
+
{
|
| 5962 |
+
return;
|
| 5963 |
+
}
|
| 5964 |
+
|
| 5965 |
+
/* Show the column */
|
| 5966 |
+
if ( bShow )
|
| 5967 |
+
{
|
| 5968 |
+
var iInsert = 0;
|
| 5969 |
+
for ( i=0 ; i<iCol ; i++ )
|
| 5970 |
+
{
|
| 5971 |
+
if ( aoColumns[i].bVisible )
|
| 5972 |
+
{
|
| 5973 |
+
iInsert++;
|
| 5974 |
+
}
|
| 5975 |
+
}
|
| 5976 |
+
|
| 5977 |
+
/* Need to decide if we should use appendChild or insertBefore */
|
| 5978 |
+
bAppend = (iInsert >= _fnVisbleColumns( oSettings ));
|
| 5979 |
+
|
| 5980 |
+
/* Which coloumn should we be inserting before? */
|
| 5981 |
+
if ( !bAppend )
|
| 5982 |
+
{
|
| 5983 |
+
for ( i=iCol ; i<aoColumns.length ; i++ )
|
| 5984 |
+
{
|
| 5985 |
+
if ( aoColumns[i].bVisible )
|
| 5986 |
+
{
|
| 5987 |
+
iBefore = i;
|
| 5988 |
+
break;
|
| 5989 |
+
}
|
| 5990 |
+
}
|
| 5991 |
+
}
|
| 5992 |
+
|
| 5993 |
+
for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
|
| 5994 |
+
{
|
| 5995 |
+
if ( aoData[i].nTr !== null )
|
| 5996 |
+
{
|
| 5997 |
+
if ( bAppend )
|
| 5998 |
+
{
|
| 5999 |
+
aoData[i].nTr.appendChild(
|
| 6000 |
+
aoData[i]._anHidden[iCol]
|
| 6001 |
+
);
|
| 6002 |
+
}
|
| 6003 |
+
else
|
| 6004 |
+
{
|
| 6005 |
+
aoData[i].nTr.insertBefore(
|
| 6006 |
+
aoData[i]._anHidden[iCol],
|
| 6007 |
+
_fnGetTdNodes( oSettings, i )[iBefore] );
|
| 6008 |
+
}
|
| 6009 |
+
}
|
| 6010 |
+
}
|
| 6011 |
+
}
|
| 6012 |
+
else
|
| 6013 |
+
{
|
| 6014 |
+
/* Remove a column from display */
|
| 6015 |
+
for ( i=0, iLen=aoData.length ; i<iLen ; i++ )
|
| 6016 |
+
{
|
| 6017 |
+
if ( aoData[i].nTr !== null )
|
| 6018 |
+
{
|
| 6019 |
+
nTd = _fnGetTdNodes( oSettings, i )[iCol];
|
| 6020 |
+
aoData[i]._anHidden[iCol] = nTd;
|
| 6021 |
+
nTd.parentNode.removeChild( nTd );
|
| 6022 |
+
}
|
| 6023 |
+
}
|
| 6024 |
+
}
|
| 6025 |
+
|
| 6026 |
+
/* Clear to set the visible flag */
|
| 6027 |
+
aoColumns[iCol].bVisible = bShow;
|
| 6028 |
+
|
| 6029 |
+
/* Redraw the header and footer based on the new column visibility */
|
| 6030 |
+
_fnDrawHead( oSettings, oSettings.aoHeader );
|
| 6031 |
+
if ( oSettings.nTFoot )
|
| 6032 |
+
{
|
| 6033 |
+
_fnDrawHead( oSettings, oSettings.aoFooter );
|
| 6034 |
+
}
|
| 6035 |
+
|
| 6036 |
+
/* If there are any 'open' rows, then we need to alter the colspan for this col change */
|
| 6037 |
+
for ( i=0, iLen=oSettings.aoOpenRows.length ; i<iLen ; i++ )
|
| 6038 |
+
{
|
| 6039 |
+
oSettings.aoOpenRows[i].nTr.colSpan = _fnVisbleColumns( oSettings );
|
| 6040 |
+
}
|
| 6041 |
+
|
| 6042 |
+
/* Do a redraw incase anything depending on the table columns needs it
|
| 6043 |
+
* (built-in: scrolling)
|
| 6044 |
+
*/
|
| 6045 |
+
if ( bRedraw === undefined || bRedraw )
|
| 6046 |
+
{
|
| 6047 |
+
_fnAdjustColumnSizing( oSettings );
|
| 6048 |
+
_fnDraw( oSettings );
|
| 6049 |
+
}
|
| 6050 |
+
|
| 6051 |
+
_fnSaveState( oSettings );
|
| 6052 |
+
};
|
| 6053 |
+
|
| 6054 |
+
|
| 6055 |
+
/**
|
| 6056 |
+
* Get the settings for a particular table for external manipulation
|
| 6057 |
+
* @returns {object} DataTables settings object. See
|
| 6058 |
+
* {@link DataTable.models.oSettings}
|
| 6059 |
+
* @dtopt API
|
| 6060 |
+
*
|
| 6061 |
+
* @example
|
| 6062 |
+
* $(document).ready(function() {
|
| 6063 |
+
* var oTable = $('#example').dataTable();
|
| 6064 |
+
* var oSettings = oTable.fnSettings();
|
| 6065 |
+
*
|
| 6066 |
+
* // Show an example parameter from the settings
|
| 6067 |
+
* alert( oSettings._iDisplayStart );
|
| 6068 |
+
* } );
|
| 6069 |
+
*/
|
| 6070 |
+
this.fnSettings = function()
|
| 6071 |
+
{
|
| 6072 |
+
return _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 6073 |
+
};
|
| 6074 |
+
|
| 6075 |
+
|
| 6076 |
+
/**
|
| 6077 |
+
* Sort the table by a particular column
|
| 6078 |
+
* @param {int} iCol the data index to sort on. Note that this will not match the
|
| 6079 |
+
* 'display index' if you have hidden data entries
|
| 6080 |
+
* @dtopt API
|
| 6081 |
+
*
|
| 6082 |
+
* @example
|
| 6083 |
+
* $(document).ready(function() {
|
| 6084 |
+
* var oTable = $('#example').dataTable();
|
| 6085 |
+
*
|
| 6086 |
+
* // Sort immediately with columns 0 and 1
|
| 6087 |
+
* oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );
|
| 6088 |
+
* } );
|
| 6089 |
+
*/
|
| 6090 |
+
this.fnSort = function( aaSort )
|
| 6091 |
+
{
|
| 6092 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 6093 |
+
oSettings.aaSorting = aaSort;
|
| 6094 |
+
_fnSort( oSettings );
|
| 6095 |
+
};
|
| 6096 |
+
|
| 6097 |
+
|
| 6098 |
+
/**
|
| 6099 |
+
* Attach a sort listener to an element for a given column
|
| 6100 |
+
* @param {node} nNode the element to attach the sort listener to
|
| 6101 |
+
* @param {int} iColumn the column that a click on this node will sort on
|
| 6102 |
+
* @param {function} [fnCallback] callback function when sort is run
|
| 6103 |
+
* @dtopt API
|
| 6104 |
+
*
|
| 6105 |
+
* @example
|
| 6106 |
+
* $(document).ready(function() {
|
| 6107 |
+
* var oTable = $('#example').dataTable();
|
| 6108 |
+
*
|
| 6109 |
+
* // Sort on column 1, when 'sorter' is clicked on
|
| 6110 |
+
* oTable.fnSortListener( document.getElementById('sorter'), 1 );
|
| 6111 |
+
* } );
|
| 6112 |
+
*/
|
| 6113 |
+
this.fnSortListener = function( nNode, iColumn, fnCallback )
|
| 6114 |
+
{
|
| 6115 |
+
_fnSortAttachListener( _fnSettingsFromNode( this[DataTable.ext.iApiIndex] ), nNode, iColumn,
|
| 6116 |
+
fnCallback );
|
| 6117 |
+
};
|
| 6118 |
+
|
| 6119 |
+
|
| 6120 |
+
/**
|
| 6121 |
+
* Update a table cell or row - this method will accept either a single value to
|
| 6122 |
+
* update the cell with, an array of values with one element for each column or
|
| 6123 |
+
* an object in the same format as the original data source. The function is
|
| 6124 |
+
* self-referencing in order to make the multi column updates easier.
|
| 6125 |
+
* @param {object|array|string} mData Data to update the cell/row with
|
| 6126 |
+
* @param {node|int} mRow TR element you want to update or the aoData index
|
| 6127 |
+
* @param {int} [iColumn] The column to update (not used of mData is an array or object)
|
| 6128 |
+
* @param {bool} [bRedraw=true] Redraw the table or not
|
| 6129 |
+
* @param {bool} [bAction=true] Perform pre-draw actions or not
|
| 6130 |
+
* @returns {int} 0 on success, 1 on error
|
| 6131 |
+
* @dtopt API
|
| 6132 |
+
*
|
| 6133 |
+
* @example
|
| 6134 |
+
* $(document).ready(function() {
|
| 6135 |
+
* var oTable = $('#example').dataTable();
|
| 6136 |
+
* oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell
|
| 6137 |
+
* oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], 1, 0 ); // Row
|
| 6138 |
+
* } );
|
| 6139 |
+
*/
|
| 6140 |
+
this.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )
|
| 6141 |
+
{
|
| 6142 |
+
var oSettings = _fnSettingsFromNode( this[DataTable.ext.iApiIndex] );
|
| 6143 |
+
var i, iLen, sDisplay;
|
| 6144 |
+
var iRow = (typeof mRow === 'object') ?
|
| 6145 |
+
_fnNodeToDataIndex(oSettings, mRow) : mRow;
|
| 6146 |
+
|
| 6147 |
+
if ( $.isArray(mData) && iColumn === undefined )
|
| 6148 |
+
{
|
| 6149 |
+
/* Array update - update the whole row */
|
| 6150 |
+
oSettings.aoData[iRow]._aData = mData.slice();
|
| 6151 |
+
|
| 6152 |
+
/* Flag to the function that we are recursing */
|
| 6153 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 6154 |
+
{
|
| 6155 |
+
this.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );
|
| 6156 |
+
}
|
| 6157 |
+
}
|
| 6158 |
+
else if ( $.isPlainObject(mData) && iColumn === undefined )
|
| 6159 |
+
{
|
| 6160 |
+
/* Object update - update the whole row - assume the developer gets the object right */
|
| 6161 |
+
oSettings.aoData[iRow]._aData = $.extend( true, {}, mData );
|
| 6162 |
+
|
| 6163 |
+
for ( i=0 ; i<oSettings.aoColumns.length ; i++ )
|
| 6164 |
+
{
|
| 6165 |
+
this.fnUpdate( _fnGetCellData( oSettings, iRow, i ), iRow, i, false, false );
|
| 6166 |
+
}
|
| 6167 |
+
}
|
| 6168 |
+
else
|
| 6169 |
+
{
|
| 6170 |
+
/* Individual cell update */
|
| 6171 |
+
_fnSetCellData( oSettings, iRow, iColumn, mData );
|
| 6172 |
+
sDisplay = _fnGetCellData( oSettings, iRow, iColumn, 'display' );
|
| 6173 |
+
|
| 6174 |
+
var oCol = oSettings.aoColumns[iColumn];
|
| 6175 |
+
if ( oCol.fnRender !== null )
|
| 6176 |
+
{
|
| 6177 |
+
sDisplay = _fnRender( oSettings, iRow, iColumn );
|
| 6178 |
+
if ( oCol.bUseRendered )
|
| 6179 |
+
{
|
| 6180 |
+
_fnSetCellData( oSettings, iRow, iColumn, sDisplay );
|
| 6181 |
+
}
|
| 6182 |
+
}
|
| 6183 |
+
|
| 6184 |
+
if ( oSettings.aoData[iRow].nTr !== null )
|
| 6185 |
+
{
|
| 6186 |
+
/* Do the actual HTML update */
|
| 6187 |
+
_fnGetTdNodes( oSettings, iRow )[iColumn].innerHTML = sDisplay;
|
| 6188 |
+
}
|
| 6189 |
+
}
|
| 6190 |
+
|
| 6191 |
+
/* Modify the search index for this row (strictly this is likely not needed, since fnReDraw
|
| 6192 |
+
* will rebuild the search array - however, the redraw might be disabled by the user)
|
| 6193 |
+
*/
|
| 6194 |
+
var iDisplayIndex = $.inArray( iRow, oSettings.aiDisplay );
|
| 6195 |
+
oSettings.asDataSearch[iDisplayIndex] = _fnBuildSearchRow(
|
| 6196 |
+
oSettings,
|
| 6197 |
+
_fnGetRowData( oSettings, iRow, 'filter', _fnGetColumns( oSettings, 'bSearchable' ) )
|
| 6198 |
+
);
|
| 6199 |
+
|
| 6200 |
+
/* Perform pre-draw actions */
|
| 6201 |
+
if ( bAction === undefined || bAction )
|
| 6202 |
+
{
|
| 6203 |
+
_fnAdjustColumnSizing( oSettings );
|
| 6204 |
+
}
|
| 6205 |
+
|
| 6206 |
+
/* Redraw the table */
|
| 6207 |
+
if ( bRedraw === undefined || bRedraw )
|
| 6208 |
+
{
|
| 6209 |
+
_fnReDraw( oSettings );
|
| 6210 |
+
}
|
| 6211 |
+
return 0;
|
| 6212 |
+
};
|
| 6213 |
+
|
| 6214 |
+
|
| 6215 |
+
/**
|
| 6216 |
+
* Provide a common method for plug-ins to check the version of DataTables being used, in order
|
| 6217 |
+
* to ensure compatibility.
|
| 6218 |
+
* @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
|
| 6219 |
+
* formats "X" and "X.Y" are also acceptable.
|
| 6220 |
+
* @returns {boolean} true if this version of DataTables is greater or equal to the required
|
| 6221 |
+
* version, or false if this version of DataTales is not suitable
|
| 6222 |
+
* @method
|
| 6223 |
+
* @dtopt API
|
| 6224 |
+
*
|
| 6225 |
+
* @example
|
| 6226 |
+
* $(document).ready(function() {
|
| 6227 |
+
* var oTable = $('#example').dataTable();
|
| 6228 |
+
* alert( oTable.fnVersionCheck( '1.9.0' ) );
|
| 6229 |
+
* } );
|
| 6230 |
+
*/
|
| 6231 |
+
this.fnVersionCheck = DataTable.ext.fnVersionCheck;
|
| 6232 |
+
|
| 6233 |
+
|
| 6234 |
+
/*
|
| 6235 |
+
* This is really a good bit rubbish this method of exposing the internal methods
|
| 6236 |
+
* publicly... - To be fixed in 2.0 using methods on the prototype
|
| 6237 |
+
*/
|
| 6238 |
+
|
| 6239 |
+
|
| 6240 |
+
/**
|
| 6241 |
+
* Create a wrapper function for exporting an internal functions to an external API.
|
| 6242 |
+
* @param {string} sFunc API function name
|
| 6243 |
+
* @returns {function} wrapped function
|
| 6244 |
+
* @memberof DataTable#oApi
|
| 6245 |
+
*/
|
| 6246 |
+
function _fnExternApiFunc (sFunc)
|
| 6247 |
+
{
|
| 6248 |
+
return function() {
|
| 6249 |
+
var aArgs = [_fnSettingsFromNode(this[DataTable.ext.iApiIndex])].concat(
|
| 6250 |
+
Array.prototype.slice.call(arguments) );
|
| 6251 |
+
return DataTable.ext.oApi[sFunc].apply( this, aArgs );
|
| 6252 |
+
};
|
| 6253 |
+
}
|
| 6254 |
+
|
| 6255 |
+
|
| 6256 |
+
/**
|
| 6257 |
+
* Reference to internal functions for use by plug-in developers. Note that these
|
| 6258 |
+
* methods are references to internal functions and are considered to be private.
|
| 6259 |
+
* If you use these methods, be aware that they are liable to change between versions
|
| 6260 |
+
* (check the upgrade notes).
|
| 6261 |
+
* @namespace
|
| 6262 |
+
*/
|
| 6263 |
+
this.oApi = {
|
| 6264 |
+
"_fnExternApiFunc": _fnExternApiFunc,
|
| 6265 |
+
"_fnInitialise": _fnInitialise,
|
| 6266 |
+
"_fnInitComplete": _fnInitComplete,
|
| 6267 |
+
"_fnLanguageCompat": _fnLanguageCompat,
|
| 6268 |
+
"_fnAddColumn": _fnAddColumn,
|
| 6269 |
+
"_fnColumnOptions": _fnColumnOptions,
|
| 6270 |
+
"_fnAddData": _fnAddData,
|
| 6271 |
+
"_fnCreateTr": _fnCreateTr,
|
| 6272 |
+
"_fnGatherData": _fnGatherData,
|
| 6273 |
+
"_fnBuildHead": _fnBuildHead,
|
| 6274 |
+
"_fnDrawHead": _fnDrawHead,
|
| 6275 |
+
"_fnDraw": _fnDraw,
|
| 6276 |
+
"_fnReDraw": _fnReDraw,
|
| 6277 |
+
"_fnAjaxUpdate": _fnAjaxUpdate,
|
| 6278 |
+
"_fnAjaxParameters": _fnAjaxParameters,
|
| 6279 |
+
"_fnAjaxUpdateDraw": _fnAjaxUpdateDraw,
|
| 6280 |
+
"_fnServerParams": _fnServerParams,
|
| 6281 |
+
"_fnAddOptionsHtml": _fnAddOptionsHtml,
|
| 6282 |
+
"_fnFeatureHtmlTable": _fnFeatureHtmlTable,
|
| 6283 |
+
"_fnScrollDraw": _fnScrollDraw,
|
| 6284 |
+
"_fnAdjustColumnSizing": _fnAdjustColumnSizing,
|
| 6285 |
+
"_fnFeatureHtmlFilter": _fnFeatureHtmlFilter,
|
| 6286 |
+
"_fnFilterComplete": _fnFilterComplete,
|
| 6287 |
+
"_fnFilterCustom": _fnFilterCustom,
|
| 6288 |
+
"_fnFilterColumn": _fnFilterColumn,
|
| 6289 |
+
"_fnFilter": _fnFilter,
|
| 6290 |
+
"_fnBuildSearchArray": _fnBuildSearchArray,
|
| 6291 |
+
"_fnBuildSearchRow": _fnBuildSearchRow,
|
| 6292 |
+
"_fnFilterCreateSearch": _fnFilterCreateSearch,
|
| 6293 |
+
"_fnDataToSearch": _fnDataToSearch,
|
| 6294 |
+
"_fnSort": _fnSort,
|
| 6295 |
+
"_fnSortAttachListener": _fnSortAttachListener,
|
| 6296 |
+
"_fnSortingClasses": _fnSortingClasses,
|
| 6297 |
+
"_fnFeatureHtmlPaginate": _fnFeatureHtmlPaginate,
|
| 6298 |
+
"_fnPageChange": _fnPageChange,
|
| 6299 |
+
"_fnFeatureHtmlInfo": _fnFeatureHtmlInfo,
|
| 6300 |
+
"_fnUpdateInfo": _fnUpdateInfo,
|
| 6301 |
+
"_fnFeatureHtmlLength": _fnFeatureHtmlLength,
|
| 6302 |
+
"_fnFeatureHtmlProcessing": _fnFeatureHtmlProcessing,
|
| 6303 |
+
"_fnProcessingDisplay": _fnProcessingDisplay,
|
| 6304 |
+
"_fnVisibleToColumnIndex": _fnVisibleToColumnIndex,
|
| 6305 |
+
"_fnColumnIndexToVisible": _fnColumnIndexToVisible,
|
| 6306 |
+
"_fnNodeToDataIndex": _fnNodeToDataIndex,
|
| 6307 |
+
"_fnVisbleColumns": _fnVisbleColumns,
|
| 6308 |
+
"_fnCalculateEnd": _fnCalculateEnd,
|
| 6309 |
+
"_fnConvertToWidth": _fnConvertToWidth,
|
| 6310 |
+
"_fnCalculateColumnWidths": _fnCalculateColumnWidths,
|
| 6311 |
+
"_fnScrollingWidthAdjust": _fnScrollingWidthAdjust,
|
| 6312 |
+
"_fnGetWidestNode": _fnGetWidestNode,
|
| 6313 |
+
"_fnGetMaxLenString": _fnGetMaxLenString,
|
| 6314 |
+
"_fnStringToCss": _fnStringToCss,
|
| 6315 |
+
"_fnDetectType": _fnDetectType,
|
| 6316 |
+
"_fnSettingsFromNode": _fnSettingsFromNode,
|
| 6317 |
+
"_fnGetDataMaster": _fnGetDataMaster,
|
| 6318 |
+
"_fnGetTrNodes": _fnGetTrNodes,
|
| 6319 |
+
"_fnGetTdNodes": _fnGetTdNodes,
|
| 6320 |
+
"_fnEscapeRegex": _fnEscapeRegex,
|
| 6321 |
+
"_fnDeleteIndex": _fnDeleteIndex,
|
| 6322 |
+
"_fnReOrderIndex": _fnReOrderIndex,
|
| 6323 |
+
"_fnColumnOrdering": _fnColumnOrdering,
|
| 6324 |
+
"_fnLog": _fnLog,
|
| 6325 |
+
"_fnClearTable": _fnClearTable,
|
| 6326 |
+
"_fnSaveState": _fnSaveState,
|
| 6327 |
+
"_fnLoadState": _fnLoadState,
|
| 6328 |
+
"_fnCreateCookie": _fnCreateCookie,
|
| 6329 |
+
"_fnReadCookie": _fnReadCookie,
|
| 6330 |
+
"_fnDetectHeader": _fnDetectHeader,
|
| 6331 |
+
"_fnGetUniqueThs": _fnGetUniqueThs,
|
| 6332 |
+
"_fnScrollBarWidth": _fnScrollBarWidth,
|
| 6333 |
+
"_fnApplyToChildren": _fnApplyToChildren,
|
| 6334 |
+
"_fnMap": _fnMap,
|
| 6335 |
+
"_fnGetRowData": _fnGetRowData,
|
| 6336 |
+
"_fnGetCellData": _fnGetCellData,
|
| 6337 |
+
"_fnSetCellData": _fnSetCellData,
|
| 6338 |
+
"_fnGetObjectDataFn": _fnGetObjectDataFn,
|
| 6339 |
+
"_fnSetObjectDataFn": _fnSetObjectDataFn,
|
| 6340 |
+
"_fnApplyColumnDefs": _fnApplyColumnDefs,
|
| 6341 |
+
"_fnBindAction": _fnBindAction,
|
| 6342 |
+
"_fnExtend": _fnExtend,
|
| 6343 |
+
"_fnCallbackReg": _fnCallbackReg,
|
| 6344 |
+
"_fnCallbackFire": _fnCallbackFire,
|
| 6345 |
+
"_fnJsonString": _fnJsonString,
|
| 6346 |
+
"_fnRender": _fnRender,
|
| 6347 |
+
"_fnNodeToColumnIndex": _fnNodeToColumnIndex,
|
| 6348 |
+
"_fnInfoMacros": _fnInfoMacros,
|
| 6349 |
+
"_fnBrowserDetect": _fnBrowserDetect,
|
| 6350 |
+
"_fnGetColumns": _fnGetColumns
|
| 6351 |
+
};
|
| 6352 |
+
|
| 6353 |
+
$.extend( DataTable.ext.oApi, this.oApi );
|
| 6354 |
+
|
| 6355 |
+
for ( var sFunc in DataTable.ext.oApi )
|
| 6356 |
+
{
|
| 6357 |
+
if ( sFunc )
|
| 6358 |
+
{
|
| 6359 |
+
this[sFunc] = _fnExternApiFunc(sFunc);
|
| 6360 |
+
}
|
| 6361 |
+
}
|
| 6362 |
+
|
| 6363 |
+
|
| 6364 |
+
var _that = this;
|
| 6365 |
+
this.each(function() {
|
| 6366 |
+
var i=0, iLen, j, jLen, k, kLen;
|
| 6367 |
+
var sId = this.getAttribute( 'id' );
|
| 6368 |
+
var bInitHandedOff = false;
|
| 6369 |
+
var bUsePassedData = false;
|
| 6370 |
+
|
| 6371 |
+
|
| 6372 |
+
/* Sanity check */
|
| 6373 |
+
if ( this.nodeName.toLowerCase() != 'table' )
|
| 6374 |
+
{
|
| 6375 |
+
_fnLog( null, 0, "Attempted to initialise DataTables on a node which is not a "+
|
| 6376 |
+
"table: "+this.nodeName );
|
| 6377 |
+
return;
|
| 6378 |
+
}
|
| 6379 |
+
|
| 6380 |
+
/* Check to see if we are re-initialising a table */
|
| 6381 |
+
for ( i=0, iLen=DataTable.settings.length ; i<iLen ; i++ )
|
| 6382 |
+
{
|
| 6383 |
+
/* Base check on table node */
|
| 6384 |
+
if ( DataTable.settings[i].nTable == this )
|
| 6385 |
+
{
|
| 6386 |
+
if ( oInit === undefined || oInit.bRetrieve )
|
| 6387 |
+
{
|
| 6388 |
+
return DataTable.settings[i].oInstance;
|
| 6389 |
+
}
|
| 6390 |
+
else if ( oInit.bDestroy )
|
| 6391 |
+
{
|
| 6392 |
+
DataTable.settings[i].oInstance.fnDestroy();
|
| 6393 |
+
break;
|
| 6394 |
+
}
|
| 6395 |
+
else
|
| 6396 |
+
{
|
| 6397 |
+
_fnLog( DataTable.settings[i], 0, "Cannot reinitialise DataTable.\n\n"+
|
| 6398 |
+
"To retrieve the DataTables object for this table, pass no arguments or see "+
|
| 6399 |
+
"the docs for bRetrieve and bDestroy" );
|
| 6400 |
+
return;
|
| 6401 |
+
}
|
| 6402 |
+
}
|
| 6403 |
+
|
| 6404 |
+
/* If the element we are initialising has the same ID as a table which was previously
|
| 6405 |
+
* initialised, but the table nodes don't match (from before) then we destroy the old
|
| 6406 |
+
* instance by simply deleting it. This is under the assumption that the table has been
|
| 6407 |
+
* destroyed by other methods. Anyone using non-id selectors will need to do this manually
|
| 6408 |
+
*/
|
| 6409 |
+
if ( DataTable.settings[i].sTableId == this.id )
|
| 6410 |
+
{
|
| 6411 |
+
DataTable.settings.splice( i, 1 );
|
| 6412 |
+
break;
|
| 6413 |
+
}
|
| 6414 |
+
}
|
| 6415 |
+
|
| 6416 |
+
/* Ensure the table has an ID - required for accessibility */
|
| 6417 |
+
if ( sId === null || sId === "" )
|
| 6418 |
+
{
|
| 6419 |
+
sId = "DataTables_Table_"+(DataTable.ext._oExternConfig.iNextUnique++);
|
| 6420 |
+
this.id = sId;
|
| 6421 |
+
}
|
| 6422 |
+
|
| 6423 |
+
/* Create the settings object for this table and set some of the default parameters */
|
| 6424 |
+
var oSettings = $.extend( true, {}, DataTable.models.oSettings, {
|
| 6425 |
+
"nTable": this,
|
| 6426 |
+
"oApi": _that.oApi,
|
| 6427 |
+
"oInit": oInit,
|
| 6428 |
+
"sDestroyWidth": $(this).width(),
|
| 6429 |
+
"sInstance": sId,
|
| 6430 |
+
"sTableId": sId
|
| 6431 |
+
} );
|
| 6432 |
+
DataTable.settings.push( oSettings );
|
| 6433 |
+
|
| 6434 |
+
// Need to add the instance after the instance after the settings object has been added
|
| 6435 |
+
// to the settings array, so we can self reference the table instance if more than one
|
| 6436 |
+
oSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();
|
| 6437 |
+
|
| 6438 |
+
/* Setting up the initialisation object */
|
| 6439 |
+
if ( !oInit )
|
| 6440 |
+
{
|
| 6441 |
+
oInit = {};
|
| 6442 |
+
}
|
| 6443 |
+
|
| 6444 |
+
// Backwards compatibility, before we apply all the defaults
|
| 6445 |
+
if ( oInit.oLanguage )
|
| 6446 |
+
{
|
| 6447 |
+
_fnLanguageCompat( oInit.oLanguage );
|
| 6448 |
+
}
|
| 6449 |
+
|
| 6450 |
+
oInit = _fnExtend( $.extend(true, {}, DataTable.defaults), oInit );
|
| 6451 |
+
|
| 6452 |
+
// Map the initialisation options onto the settings object
|
| 6453 |
+
_fnMap( oSettings.oFeatures, oInit, "bPaginate" );
|
| 6454 |
+
_fnMap( oSettings.oFeatures, oInit, "bLengthChange" );
|
| 6455 |
+
_fnMap( oSettings.oFeatures, oInit, "bFilter" );
|
| 6456 |
+
_fnMap( oSettings.oFeatures, oInit, "bSort" );
|
| 6457 |
+
_fnMap( oSettings.oFeatures, oInit, "bInfo" );
|
| 6458 |
+
_fnMap( oSettings.oFeatures, oInit, "bProcessing" );
|
| 6459 |
+
_fnMap( oSettings.oFeatures, oInit, "bAutoWidth" );
|
| 6460 |
+
_fnMap( oSettings.oFeatures, oInit, "bSortClasses" );
|
| 6461 |
+
_fnMap( oSettings.oFeatures, oInit, "bServerSide" );
|
| 6462 |
+
_fnMap( oSettings.oFeatures, oInit, "bDeferRender" );
|
| 6463 |
+
_fnMap( oSettings.oScroll, oInit, "sScrollX", "sX" );
|
| 6464 |
+
_fnMap( oSettings.oScroll, oInit, "sScrollXInner", "sXInner" );
|
| 6465 |
+
_fnMap( oSettings.oScroll, oInit, "sScrollY", "sY" );
|
| 6466 |
+
_fnMap( oSettings.oScroll, oInit, "bScrollCollapse", "bCollapse" );
|
| 6467 |
+
_fnMap( oSettings.oScroll, oInit, "bScrollInfinite", "bInfinite" );
|
| 6468 |
+
_fnMap( oSettings.oScroll, oInit, "iScrollLoadGap", "iLoadGap" );
|
| 6469 |
+
_fnMap( oSettings.oScroll, oInit, "bScrollAutoCss", "bAutoCss" );
|
| 6470 |
+
_fnMap( oSettings, oInit, "asStripeClasses" );
|
| 6471 |
+
_fnMap( oSettings, oInit, "asStripClasses", "asStripeClasses" ); // legacy
|
| 6472 |
+
_fnMap( oSettings, oInit, "fnServerData" );
|
| 6473 |
+
_fnMap( oSettings, oInit, "fnFormatNumber" );
|
| 6474 |
+
_fnMap( oSettings, oInit, "sServerMethod" );
|
| 6475 |
+
_fnMap( oSettings, oInit, "aaSorting" );
|
| 6476 |
+
_fnMap( oSettings, oInit, "aaSortingFixed" );
|
| 6477 |
+
_fnMap( oSettings, oInit, "aLengthMenu" );
|
| 6478 |
+
_fnMap( oSettings, oInit, "sPaginationType" );
|
| 6479 |
+
_fnMap( oSettings, oInit, "sAjaxSource" );
|
| 6480 |
+
_fnMap( oSettings, oInit, "sAjaxDataProp" );
|
| 6481 |
+
_fnMap( oSettings, oInit, "iCookieDuration" );
|
| 6482 |
+
_fnMap( oSettings, oInit, "sCookiePrefix" );
|
| 6483 |
+
_fnMap( oSettings, oInit, "sDom" );
|
| 6484 |
+
_fnMap( oSettings, oInit, "bSortCellsTop" );
|
| 6485 |
+
_fnMap( oSettings, oInit, "iTabIndex" );
|
| 6486 |
+
_fnMap( oSettings, oInit, "oSearch", "oPreviousSearch" );
|
| 6487 |
+
_fnMap( oSettings, oInit, "aoSearchCols", "aoPreSearchCols" );
|
| 6488 |
+
_fnMap( oSettings, oInit, "iDisplayLength", "_iDisplayLength" );
|
| 6489 |
+
_fnMap( oSettings, oInit, "bJQueryUI", "bJUI" );
|
| 6490 |
+
_fnMap( oSettings, oInit, "fnCookieCallback" );
|
| 6491 |
+
_fnMap( oSettings, oInit, "fnStateLoad" );
|
| 6492 |
+
_fnMap( oSettings, oInit, "fnStateSave" );
|
| 6493 |
+
_fnMap( oSettings.oLanguage, oInit, "fnInfoCallback" );
|
| 6494 |
+
|
| 6495 |
+
/* Callback functions which are array driven */
|
| 6496 |
+
_fnCallbackReg( oSettings, 'aoDrawCallback', oInit.fnDrawCallback, 'user' );
|
| 6497 |
+
_fnCallbackReg( oSettings, 'aoServerParams', oInit.fnServerParams, 'user' );
|
| 6498 |
+
_fnCallbackReg( oSettings, 'aoStateSaveParams', oInit.fnStateSaveParams, 'user' );
|
| 6499 |
+
_fnCallbackReg( oSettings, 'aoStateLoadParams', oInit.fnStateLoadParams, 'user' );
|
| 6500 |
+
_fnCallbackReg( oSettings, 'aoStateLoaded', oInit.fnStateLoaded, 'user' );
|
| 6501 |
+
_fnCallbackReg( oSettings, 'aoRowCallback', oInit.fnRowCallback, 'user' );
|
| 6502 |
+
_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow, 'user' );
|
| 6503 |
+
_fnCallbackReg( oSettings, 'aoHeaderCallback', oInit.fnHeaderCallback, 'user' );
|
| 6504 |
+
_fnCallbackReg( oSettings, 'aoFooterCallback', oInit.fnFooterCallback, 'user' );
|
| 6505 |
+
_fnCallbackReg( oSettings, 'aoInitComplete', oInit.fnInitComplete, 'user' );
|
| 6506 |
+
_fnCallbackReg( oSettings, 'aoPreDrawCallback', oInit.fnPreDrawCallback, 'user' );
|
| 6507 |
+
|
| 6508 |
+
if ( oSettings.oFeatures.bServerSide && oSettings.oFeatures.bSort &&
|
| 6509 |
+
oSettings.oFeatures.bSortClasses )
|
| 6510 |
+
{
|
| 6511 |
+
/* Enable sort classes for server-side processing. Safe to do it here, since server-side
|
| 6512 |
+
* processing must be enabled by the developer
|
| 6513 |
+
*/
|
| 6514 |
+
_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'server_side_sort_classes' );
|
| 6515 |
+
}
|
| 6516 |
+
else if ( oSettings.oFeatures.bDeferRender )
|
| 6517 |
+
{
|
| 6518 |
+
_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSortingClasses, 'defer_sort_classes' );
|
| 6519 |
+
}
|
| 6520 |
+
|
| 6521 |
+
if ( oInit.bJQueryUI )
|
| 6522 |
+
{
|
| 6523 |
+
/* Use the JUI classes object for display. You could clone the oStdClasses object if
|
| 6524 |
+
* you want to have multiple tables with multiple independent classes
|
| 6525 |
+
*/
|
| 6526 |
+
$.extend( oSettings.oClasses, DataTable.ext.oJUIClasses );
|
| 6527 |
+
|
| 6528 |
+
if ( oInit.sDom === DataTable.defaults.sDom && DataTable.defaults.sDom === "lfrtip" )
|
| 6529 |
+
{
|
| 6530 |
+
/* Set the DOM to use a layout suitable for jQuery UI's theming */
|
| 6531 |
+
oSettings.sDom = '<"H"lfr>t<"F"ip>';
|
| 6532 |
+
}
|
| 6533 |
+
}
|
| 6534 |
+
else
|
| 6535 |
+
{
|
| 6536 |
+
$.extend( oSettings.oClasses, DataTable.ext.oStdClasses );
|
| 6537 |
+
}
|
| 6538 |
+
$(this).addClass( oSettings.oClasses.sTable );
|
| 6539 |
+
|
| 6540 |
+
/* Calculate the scroll bar width and cache it for use later on */
|
| 6541 |
+
if ( oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "" )
|
| 6542 |
+
{
|
| 6543 |
+
oSettings.oScroll.iBarWidth = _fnScrollBarWidth();
|
| 6544 |
+
}
|
| 6545 |
+
|
| 6546 |
+
if ( oSettings.iInitDisplayStart === undefined )
|
| 6547 |
+
{
|
| 6548 |
+
/* Display start point, taking into account the save saving */
|
| 6549 |
+
oSettings.iInitDisplayStart = oInit.iDisplayStart;
|
| 6550 |
+
oSettings._iDisplayStart = oInit.iDisplayStart;
|
| 6551 |
+
}
|
| 6552 |
+
|
| 6553 |
+
/* Must be done after everything which can be overridden by a cookie! */
|
| 6554 |
+
if ( oInit.bStateSave )
|
| 6555 |
+
{
|
| 6556 |
+
oSettings.oFeatures.bStateSave = true;
|
| 6557 |
+
_fnLoadState( oSettings, oInit );
|
| 6558 |
+
_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );
|
| 6559 |
+
}
|
| 6560 |
+
|
| 6561 |
+
if ( oInit.iDeferLoading !== null )
|
| 6562 |
+
{
|
| 6563 |
+
oSettings.bDeferLoading = true;
|
| 6564 |
+
var tmp = $.isArray( oInit.iDeferLoading );
|
| 6565 |
+
oSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;
|
| 6566 |
+
oSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;
|
| 6567 |
+
}
|
| 6568 |
+
|
| 6569 |
+
if ( oInit.aaData !== null )
|
| 6570 |
+
{
|
| 6571 |
+
bUsePassedData = true;
|
| 6572 |
+
}
|
| 6573 |
+
|
| 6574 |
+
/* Language definitions */
|
| 6575 |
+
if ( oInit.oLanguage.sUrl !== "" )
|
| 6576 |
+
{
|
| 6577 |
+
/* Get the language definitions from a file - because this Ajax call makes the language
|
| 6578 |
+
* get async to the remainder of this function we use bInitHandedOff to indicate that
|
| 6579 |
+
* _fnInitialise will be fired by the returned Ajax handler, rather than the constructor
|
| 6580 |
+
*/
|
| 6581 |
+
oSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;
|
| 6582 |
+
$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {
|
| 6583 |
+
_fnLanguageCompat( json );
|
| 6584 |
+
$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );
|
| 6585 |
+
_fnInitialise( oSettings );
|
| 6586 |
+
} );
|
| 6587 |
+
bInitHandedOff = true;
|
| 6588 |
+
}
|
| 6589 |
+
else
|
| 6590 |
+
{
|
| 6591 |
+
$.extend( true, oSettings.oLanguage, oInit.oLanguage );
|
| 6592 |
+
}
|
| 6593 |
+
|
| 6594 |
+
|
| 6595 |
+
/*
|
| 6596 |
+
* Stripes
|
| 6597 |
+
*/
|
| 6598 |
+
if ( oInit.asStripeClasses === null )
|
| 6599 |
+
{
|
| 6600 |
+
oSettings.asStripeClasses =[
|
| 6601 |
+
oSettings.oClasses.sStripeOdd,
|
| 6602 |
+
oSettings.oClasses.sStripeEven
|
| 6603 |
+
];
|
| 6604 |
+
}
|
| 6605 |
+
|
| 6606 |
+
/* Remove row stripe classes if they are already on the table row */
|
| 6607 |
+
iLen=oSettings.asStripeClasses.length;
|
| 6608 |
+
oSettings.asDestroyStripes = [];
|
| 6609 |
+
if (iLen)
|
| 6610 |
+
{
|
| 6611 |
+
var bStripeRemove = false;
|
| 6612 |
+
var anRows = $(this).children('tbody').children('tr:lt(' + iLen + ')');
|
| 6613 |
+
for ( i=0 ; i<iLen ; i++ )
|
| 6614 |
+
{
|
| 6615 |
+
if ( anRows.hasClass( oSettings.asStripeClasses[i] ) )
|
| 6616 |
+
{
|
| 6617 |
+
bStripeRemove = true;
|
| 6618 |
+
|
| 6619 |
+
/* Store the classes which we are about to remove so they can be re-added on destroy */
|
| 6620 |
+
oSettings.asDestroyStripes.push( oSettings.asStripeClasses[i] );
|
| 6621 |
+
}
|
| 6622 |
+
}
|
| 6623 |
+
|
| 6624 |
+
if ( bStripeRemove )
|
| 6625 |
+
{
|
| 6626 |
+
anRows.removeClass( oSettings.asStripeClasses.join(' ') );
|
| 6627 |
+
}
|
| 6628 |
+
}
|
| 6629 |
+
|
| 6630 |
+
/*
|
| 6631 |
+
* Columns
|
| 6632 |
+
* See if we should load columns automatically or use defined ones
|
| 6633 |
+
*/
|
| 6634 |
+
var anThs = [];
|
| 6635 |
+
var aoColumnsInit;
|
| 6636 |
+
var nThead = this.getElementsByTagName('thead');
|
| 6637 |
+
if ( nThead.length !== 0 )
|
| 6638 |
+
{
|
| 6639 |
+
_fnDetectHeader( oSettings.aoHeader, nThead[0] );
|
| 6640 |
+
anThs = _fnGetUniqueThs( oSettings );
|
| 6641 |
+
}
|
| 6642 |
+
|
| 6643 |
+
/* If not given a column array, generate one with nulls */
|
| 6644 |
+
if ( oInit.aoColumns === null )
|
| 6645 |
+
{
|
| 6646 |
+
aoColumnsInit = [];
|
| 6647 |
+
for ( i=0, iLen=anThs.length ; i<iLen ; i++ )
|
| 6648 |
+
{
|
| 6649 |
+
aoColumnsInit.push( null );
|
| 6650 |
+
}
|
| 6651 |
+
}
|
| 6652 |
+
else
|
| 6653 |
+
{
|
| 6654 |
+
aoColumnsInit = oInit.aoColumns;
|
| 6655 |
+
}
|
| 6656 |
+
|
| 6657 |
+
/* Add the columns */
|
| 6658 |
+
for ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )
|
| 6659 |
+
{
|
| 6660 |
+
/* Short cut - use the loop to check if we have column visibility state to restore */
|
| 6661 |
+
if ( oInit.saved_aoColumns !== undefined && oInit.saved_aoColumns.length == iLen )
|
| 6662 |
+
{
|
| 6663 |
+
if ( aoColumnsInit[i] === null )
|
| 6664 |
+
{
|
| 6665 |
+
aoColumnsInit[i] = {};
|
| 6666 |
+
}
|
| 6667 |
+
aoColumnsInit[i].bVisible = oInit.saved_aoColumns[i].bVisible;
|
| 6668 |
+
}
|
| 6669 |
+
|
| 6670 |
+
_fnAddColumn( oSettings, anThs ? anThs[i] : null );
|
| 6671 |
+
}
|
| 6672 |
+
|
| 6673 |
+
/* Apply the column definitions */
|
| 6674 |
+
_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {
|
| 6675 |
+
_fnColumnOptions( oSettings, iCol, oDef );
|
| 6676 |
+
} );
|
| 6677 |
+
|
| 6678 |
+
|
| 6679 |
+
/*
|
| 6680 |
+
* Sorting
|
| 6681 |
+
* Check the aaSorting array
|
| 6682 |
+
*/
|
| 6683 |
+
for ( i=0, iLen=oSettings.aaSorting.length ; i<iLen ; i++ )
|
| 6684 |
+
{
|
| 6685 |
+
if ( oSettings.aaSorting[i][0] >= oSettings.aoColumns.length )
|
| 6686 |
+
{
|
| 6687 |
+
oSettings.aaSorting[i][0] = 0;
|
| 6688 |
+
}
|
| 6689 |
+
var oColumn = oSettings.aoColumns[ oSettings.aaSorting[i][0] ];
|
| 6690 |
+
|
| 6691 |
+
/* Add a default sorting index */
|
| 6692 |
+
if ( oSettings.aaSorting[i][2] === undefined )
|
| 6693 |
+
{
|
| 6694 |
+
oSettings.aaSorting[i][2] = 0;
|
| 6695 |
+
}
|
| 6696 |
+
|
| 6697 |
+
/* If aaSorting is not defined, then we use the first indicator in asSorting */
|
| 6698 |
+
if ( oInit.aaSorting === undefined && oSettings.saved_aaSorting === undefined )
|
| 6699 |
+
{
|
| 6700 |
+
oSettings.aaSorting[i][1] = oColumn.asSorting[0];
|
| 6701 |
+
}
|
| 6702 |
+
|
| 6703 |
+
/* Set the current sorting index based on aoColumns.asSorting */
|
| 6704 |
+
for ( j=0, jLen=oColumn.asSorting.length ; j<jLen ; j++ )
|
| 6705 |
+
{
|
| 6706 |
+
if ( oSettings.aaSorting[i][1] == oColumn.asSorting[j] )
|
| 6707 |
+
{
|
| 6708 |
+
oSettings.aaSorting[i][2] = j;
|
| 6709 |
+
break;
|
| 6710 |
+
}
|
| 6711 |
+
}
|
| 6712 |
+
}
|
| 6713 |
+
|
| 6714 |
+
/* Do a first pass on the sorting classes (allows any size changes to be taken into
|
| 6715 |
+
* account, and also will apply sorting disabled classes if disabled
|
| 6716 |
+
*/
|
| 6717 |
+
_fnSortingClasses( oSettings );
|
| 6718 |
+
|
| 6719 |
+
|
| 6720 |
+
/*
|
| 6721 |
+
* Final init
|
| 6722 |
+
* Cache the header, body and footer as required, creating them if needed
|
| 6723 |
+
*/
|
| 6724 |
+
|
| 6725 |
+
/* Browser support detection */
|
| 6726 |
+
_fnBrowserDetect( oSettings );
|
| 6727 |
+
|
| 6728 |
+
// Work around for Webkit bug 83867 - store the caption-side before removing from doc
|
| 6729 |
+
var captions = $(this).children('caption').each( function () {
|
| 6730 |
+
this._captionSide = $(this).css('caption-side');
|
| 6731 |
+
} );
|
| 6732 |
+
|
| 6733 |
+
var thead = $(this).children('thead');
|
| 6734 |
+
if ( thead.length === 0 )
|
| 6735 |
+
{
|
| 6736 |
+
thead = [ document.createElement( 'thead' ) ];
|
| 6737 |
+
this.appendChild( thead[0] );
|
| 6738 |
+
}
|
| 6739 |
+
oSettings.nTHead = thead[0];
|
| 6740 |
+
|
| 6741 |
+
var tbody = $(this).children('tbody');
|
| 6742 |
+
if ( tbody.length === 0 )
|
| 6743 |
+
{
|
| 6744 |
+
tbody = [ document.createElement( 'tbody' ) ];
|
| 6745 |
+
this.appendChild( tbody[0] );
|
| 6746 |
+
}
|
| 6747 |
+
oSettings.nTBody = tbody[0];
|
| 6748 |
+
oSettings.nTBody.setAttribute( "role", "alert" );
|
| 6749 |
+
oSettings.nTBody.setAttribute( "aria-live", "polite" );
|
| 6750 |
+
oSettings.nTBody.setAttribute( "aria-relevant", "all" );
|
| 6751 |
+
|
| 6752 |
+
var tfoot = $(this).children('tfoot');
|
| 6753 |
+
if ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== "" || oSettings.oScroll.sY !== "") )
|
| 6754 |
+
{
|
| 6755 |
+
// If we are a scrolling table, and no footer has been given, then we need to create
|
| 6756 |
+
// a tfoot element for the caption element to be appended to
|
| 6757 |
+
tfoot = [ document.createElement( 'tfoot' ) ];
|
| 6758 |
+
this.appendChild( tfoot[0] );
|
| 6759 |
+
}
|
| 6760 |
+
|
| 6761 |
+
if ( tfoot.length > 0 )
|
| 6762 |
+
{
|
| 6763 |
+
oSettings.nTFoot = tfoot[0];
|
| 6764 |
+
_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );
|
| 6765 |
+
}
|
| 6766 |
+
|
| 6767 |
+
/* Check if there is data passing into the constructor */
|
| 6768 |
+
if ( bUsePassedData )
|
| 6769 |
+
{
|
| 6770 |
+
for ( i=0 ; i<oInit.aaData.length ; i++ )
|
| 6771 |
+
{
|
| 6772 |
+
_fnAddData( oSettings, oInit.aaData[ i ] );
|
| 6773 |
+
}
|
| 6774 |
+
}
|
| 6775 |
+
else
|
| 6776 |
+
{
|
| 6777 |
+
/* Grab the data from the page */
|
| 6778 |
+
_fnGatherData( oSettings );
|
| 6779 |
+
}
|
| 6780 |
+
|
| 6781 |
+
/* Copy the data index array */
|
| 6782 |
+
oSettings.aiDisplay = oSettings.aiDisplayMaster.slice();
|
| 6783 |
+
|
| 6784 |
+
/* Initialisation complete - table can be drawn */
|
| 6785 |
+
oSettings.bInitialised = true;
|
| 6786 |
+
|
| 6787 |
+
/* Check if we need to initialise the table (it might not have been handed off to the
|
| 6788 |
+
* language processor)
|
| 6789 |
+
*/
|
| 6790 |
+
if ( bInitHandedOff === false )
|
| 6791 |
+
{
|
| 6792 |
+
_fnInitialise( oSettings );
|
| 6793 |
+
}
|
| 6794 |
+
} );
|
| 6795 |
+
_that = null;
|
| 6796 |
+
return this;
|
| 6797 |
+
};
|
| 6798 |
+
|
| 6799 |
+
|
| 6800 |
+
|
| 6801 |
+
/**
|
| 6802 |
+
* Provide a common method for plug-ins to check the version of DataTables being used, in order
|
| 6803 |
+
* to ensure compatibility.
|
| 6804 |
+
* @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note that the
|
| 6805 |
+
* formats "X" and "X.Y" are also acceptable.
|
| 6806 |
+
* @returns {boolean} true if this version of DataTables is greater or equal to the required
|
| 6807 |
+
* version, or false if this version of DataTales is not suitable
|
| 6808 |
+
* @static
|
| 6809 |
+
* @dtopt API-Static
|
| 6810 |
+
*
|
| 6811 |
+
* @example
|
| 6812 |
+
* alert( $.fn.dataTable.fnVersionCheck( '1.9.0' ) );
|
| 6813 |
+
*/
|
| 6814 |
+
DataTable.fnVersionCheck = function( sVersion )
|
| 6815 |
+
{
|
| 6816 |
+
/* This is cheap, but effective */
|
| 6817 |
+
var fnZPad = function (Zpad, count)
|
| 6818 |
+
{
|
| 6819 |
+
while(Zpad.length < count) {
|
| 6820 |
+
Zpad += '0';
|
| 6821 |
+
}
|
| 6822 |
+
return Zpad;
|
| 6823 |
+
};
|
| 6824 |
+
var aThis = DataTable.ext.sVersion.split('.');
|
| 6825 |
+
var aThat = sVersion.split('.');
|
| 6826 |
+
var sThis = '', sThat = '';
|
| 6827 |
+
|
| 6828 |
+
for ( var i=0, iLen=aThat.length ; i<iLen ; i++ )
|
| 6829 |
+
{
|
| 6830 |
+
sThis += fnZPad( aThis[i], 3 );
|
| 6831 |
+
sThat += fnZPad( aThat[i], 3 );
|
| 6832 |
+
}
|
| 6833 |
+
|
| 6834 |
+
return parseInt(sThis, 10) >= parseInt(sThat, 10);
|
| 6835 |
+
};
|
| 6836 |
+
|
| 6837 |
+
|
| 6838 |
+
/**
|
| 6839 |
+
* Check if a TABLE node is a DataTable table already or not.
|
| 6840 |
+
* @param {node} nTable The TABLE node to check if it is a DataTable or not (note that other
|
| 6841 |
+
* node types can be passed in, but will always return false).
|
| 6842 |
+
* @returns {boolean} true the table given is a DataTable, or false otherwise
|
| 6843 |
+
* @static
|
| 6844 |
+
* @dtopt API-Static
|
| 6845 |
+
*
|
| 6846 |
+
* @example
|
| 6847 |
+
* var ex = document.getElementById('example');
|
| 6848 |
+
* if ( ! $.fn.DataTable.fnIsDataTable( ex ) ) {
|
| 6849 |
+
* $(ex).dataTable();
|
| 6850 |
+
* }
|
| 6851 |
+
*/
|
| 6852 |
+
DataTable.fnIsDataTable = function ( nTable )
|
| 6853 |
+
{
|
| 6854 |
+
var o = DataTable.settings;
|
| 6855 |
+
|
| 6856 |
+
for ( var i=0 ; i<o.length ; i++ )
|
| 6857 |
+
{
|
| 6858 |
+
if ( o[i].nTable === nTable || o[i].nScrollHead === nTable || o[i].nScrollFoot === nTable )
|
| 6859 |
+
{
|
| 6860 |
+
return true;
|
| 6861 |
+
}
|
| 6862 |
+
}
|
| 6863 |
+
|
| 6864 |
+
return false;
|
| 6865 |
+
};
|
| 6866 |
+
|
| 6867 |
+
|
| 6868 |
+
/**
|
| 6869 |
+
* Get all DataTable tables that have been initialised - optionally you can select to
|
| 6870 |
+
* get only currently visible tables.
|
| 6871 |
+
* @param {boolean} [bVisible=false] Flag to indicate if you want all (default) or
|
| 6872 |
+
* visible tables only.
|
| 6873 |
+
* @returns {array} Array of TABLE nodes (not DataTable instances) which are DataTables
|
| 6874 |
+
* @static
|
| 6875 |
+
* @dtopt API-Static
|
| 6876 |
+
*
|
| 6877 |
+
* @example
|
| 6878 |
+
* var table = $.fn.dataTable.fnTables(true);
|
| 6879 |
+
* if ( table.length > 0 ) {
|
| 6880 |
+
* $(table).dataTable().fnAdjustColumnSizing();
|
| 6881 |
+
* }
|
| 6882 |
+
*/
|
| 6883 |
+
DataTable.fnTables = function ( bVisible )
|
| 6884 |
+
{
|
| 6885 |
+
var out = [];
|
| 6886 |
+
|
| 6887 |
+
jQuery.each( DataTable.settings, function (i, o) {
|
| 6888 |
+
if ( !bVisible || (bVisible === true && $(o.nTable).is(':visible')) )
|
| 6889 |
+
{
|
| 6890 |
+
out.push( o.nTable );
|
| 6891 |
+
}
|
| 6892 |
+
} );
|
| 6893 |
+
|
| 6894 |
+
return out;
|
| 6895 |
+
};
|
| 6896 |
+
|
| 6897 |
+
|
| 6898 |
+
/**
|
| 6899 |
+
* Version string for plug-ins to check compatibility. Allowed format is
|
| 6900 |
+
* a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
|
| 6901 |
+
* e are optional
|
| 6902 |
+
* @member
|
| 6903 |
+
* @type string
|
| 6904 |
+
* @default Version number
|
| 6905 |
+
*/
|
| 6906 |
+
DataTable.version = "1.9.4";
|
| 6907 |
+
|
| 6908 |
+
/**
|
| 6909 |
+
* Private data store, containing all of the settings objects that are created for the
|
| 6910 |
+
* tables on a given page.
|
| 6911 |
+
*
|
| 6912 |
+
* Note that the <i>DataTable.settings</i> object is aliased to <i>jQuery.fn.dataTableExt</i>
|
| 6913 |
+
* through which it may be accessed and manipulated, or <i>jQuery.fn.dataTable.settings</i>.
|
| 6914 |
+
* @member
|
| 6915 |
+
* @type array
|
| 6916 |
+
* @default []
|
| 6917 |
+
* @private
|
| 6918 |
+
*/
|
| 6919 |
+
DataTable.settings = [];
|
| 6920 |
+
|
| 6921 |
+
/**
|
| 6922 |
+
* Object models container, for the various models that DataTables has available
|
| 6923 |
+
* to it. These models define the objects that are used to hold the active state
|
| 6924 |
+
* and configuration of the table.
|
| 6925 |
+
* @namespace
|
| 6926 |
+
*/
|
| 6927 |
+
DataTable.models = {};
|
| 6928 |
+
|
| 6929 |
+
|
| 6930 |
+
/**
|
| 6931 |
+
* DataTables extension options and plug-ins. This namespace acts as a collection "area"
|
| 6932 |
+
* for plug-ins that can be used to extend the default DataTables behaviour - indeed many
|
| 6933 |
+
* of the build in methods use this method to provide their own capabilities (sorting methods
|
| 6934 |
+
* for example).
|
| 6935 |
+
*
|
| 6936 |
+
* Note that this namespace is aliased to jQuery.fn.dataTableExt so it can be readily accessed
|
| 6937 |
+
* and modified by plug-ins.
|
| 6938 |
+
* @namespace
|
| 6939 |
+
*/
|
| 6940 |
+
DataTable.models.ext = {
|
| 6941 |
+
/**
|
| 6942 |
+
* Plug-in filtering functions - this method of filtering is complimentary to the default
|
| 6943 |
+
* type based filtering, and a lot more comprehensive as it allows you complete control
|
| 6944 |
+
* over the filtering logic. Each element in this array is a function (parameters
|
| 6945 |
+
* described below) that is called for every row in the table, and your logic decides if
|
| 6946 |
+
* it should be included in the filtered data set or not.
|
| 6947 |
+
* <ul>
|
| 6948 |
+
* <li>
|
| 6949 |
+
* Function input parameters:
|
| 6950 |
+
* <ul>
|
| 6951 |
+
* <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
|
| 6952 |
+
* <li>{array|object} Data for the row to be processed (same as the original format
|
| 6953 |
+
* that was passed in as the data source, or an array from a DOM data source</li>
|
| 6954 |
+
* <li>{int} Row index in aoData ({@link DataTable.models.oSettings.aoData}), which can
|
| 6955 |
+
* be useful to retrieve the TR element if you need DOM interaction.</li>
|
| 6956 |
+
* </ul>
|
| 6957 |
+
* </li>
|
| 6958 |
+
* <li>
|
| 6959 |
+
* Function return:
|
| 6960 |
+
* <ul>
|
| 6961 |
+
* <li>{boolean} Include the row in the filtered result set (true) or not (false)</li>
|
| 6962 |
+
* </ul>
|
| 6963 |
+
* </il>
|
| 6964 |
+
* </ul>
|
| 6965 |
+
* @type array
|
| 6966 |
+
* @default []
|
| 6967 |
+
*
|
| 6968 |
+
* @example
|
| 6969 |
+
* // The following example shows custom filtering being applied to the fourth column (i.e.
|
| 6970 |
+
* // the aData[3] index) based on two input values from the end-user, matching the data in
|
| 6971 |
+
* // a certain range.
|
| 6972 |
+
* $.fn.dataTableExt.afnFiltering.push(
|
| 6973 |
+
* function( oSettings, aData, iDataIndex ) {
|
| 6974 |
+
* var iMin = document.getElementById('min').value * 1;
|
| 6975 |
+
* var iMax = document.getElementById('max').value * 1;
|
| 6976 |
+
* var iVersion = aData[3] == "-" ? 0 : aData[3]*1;
|
| 6977 |
+
* if ( iMin == "" && iMax == "" ) {
|
| 6978 |
+
* return true;
|
| 6979 |
+
* }
|
| 6980 |
+
* else if ( iMin == "" && iVersion < iMax ) {
|
| 6981 |
+
* return true;
|
| 6982 |
+
* }
|
| 6983 |
+
* else if ( iMin < iVersion && "" == iMax ) {
|
| 6984 |
+
* return true;
|
| 6985 |
+
* }
|
| 6986 |
+
* else if ( iMin < iVersion && iVersion < iMax ) {
|
| 6987 |
+
* return true;
|
| 6988 |
+
* }
|
| 6989 |
+
* return false;
|
| 6990 |
+
* }
|
| 6991 |
+
* );
|
| 6992 |
+
*/
|
| 6993 |
+
"afnFiltering": [],
|
| 6994 |
+
|
| 6995 |
+
|
| 6996 |
+
/**
|
| 6997 |
+
* Plug-in sorting functions - this method of sorting is complimentary to the default type
|
| 6998 |
+
* based sorting that DataTables does automatically, allowing much greater control over the
|
| 6999 |
+
* the data that is being used to sort a column. This is useful if you want to do sorting
|
| 7000 |
+
* based on live data (for example the contents of an 'input' element) rather than just the
|
| 7001 |
+
* static string that DataTables knows of. The way these plug-ins work is that you create
|
| 7002 |
+
* an array of the values you wish to be sorted for the column in question and then return
|
| 7003 |
+
* that array. Which pre-sorting function is run here depends on the sSortDataType parameter
|
| 7004 |
+
* that is used for the column (if any). This is the corollary of <i>ofnSearch</i> for sort
|
| 7005 |
+
* data.
|
| 7006 |
+
* <ul>
|
| 7007 |
+
* <li>
|
| 7008 |
+
* Function input parameters:
|
| 7009 |
+
* <ul>
|
| 7010 |
+
* <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
|
| 7011 |
+
* <li>{int} Target column index</li>
|
| 7012 |
+
* </ul>
|
| 7013 |
+
* </li>
|
| 7014 |
+
* <li>
|
| 7015 |
+
* Function return:
|
| 7016 |
+
* <ul>
|
| 7017 |
+
* <li>{array} Data for the column to be sorted upon</li>
|
| 7018 |
+
* </ul>
|
| 7019 |
+
* </il>
|
| 7020 |
+
* </ul>
|
| 7021 |
+
*
|
| 7022 |
+
* Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
|
| 7023 |
+
* the different uses that DataTables can put the data to. Specifically <i>mData</i> when
|
| 7024 |
+
* used as a function will give you a 'type' (sorting, filtering etc) that you can use to
|
| 7025 |
+
* prepare the data as required for the different types. As such, this method is deprecated.
|
| 7026 |
+
* @type array
|
| 7027 |
+
* @default []
|
| 7028 |
+
* @deprecated
|
| 7029 |
+
*
|
| 7030 |
+
* @example
|
| 7031 |
+
* // Updating the cached sorting information with user entered values in HTML input elements
|
| 7032 |
+
* jQuery.fn.dataTableExt.afnSortData['dom-text'] = function ( oSettings, iColumn )
|
| 7033 |
+
* {
|
| 7034 |
+
* var aData = [];
|
| 7035 |
+
* $( 'td:eq('+iColumn+') input', oSettings.oApi._fnGetTrNodes(oSettings) ).each( function () {
|
| 7036 |
+
* aData.push( this.value );
|
| 7037 |
+
* } );
|
| 7038 |
+
* return aData;
|
| 7039 |
+
* }
|
| 7040 |
+
*/
|
| 7041 |
+
"afnSortData": [],
|
| 7042 |
+
|
| 7043 |
+
|
| 7044 |
+
/**
|
| 7045 |
+
* Feature plug-ins - This is an array of objects which describe the feature plug-ins that are
|
| 7046 |
+
* available to DataTables. These feature plug-ins are accessible through the sDom initialisation
|
| 7047 |
+
* option. As such, each feature plug-in must describe a function that is used to initialise
|
| 7048 |
+
* itself (fnInit), a character so the feature can be enabled by sDom (cFeature) and the name
|
| 7049 |
+
* of the feature (sFeature). Thus the objects attached to this method must provide:
|
| 7050 |
+
* <ul>
|
| 7051 |
+
* <li>{function} fnInit Initialisation of the plug-in
|
| 7052 |
+
* <ul>
|
| 7053 |
+
* <li>
|
| 7054 |
+
* Function input parameters:
|
| 7055 |
+
* <ul>
|
| 7056 |
+
* <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
|
| 7057 |
+
* </ul>
|
| 7058 |
+
* </li>
|
| 7059 |
+
* <li>
|
| 7060 |
+
* Function return:
|
| 7061 |
+
* <ul>
|
| 7062 |
+
* <li>{node|null} The element which contains your feature. Note that the return
|
| 7063 |
+
* may also be void if your plug-in does not require to inject any DOM elements
|
| 7064 |
+
* into DataTables control (sDom) - for example this might be useful when
|
| 7065 |
+
* developing a plug-in which allows table control via keyboard entry.</li>
|
| 7066 |
+
* </ul>
|
| 7067 |
+
* </il>
|
| 7068 |
+
* </ul>
|
| 7069 |
+
* </li>
|
| 7070 |
+
* <li>{character} cFeature Character that will be matched in sDom - case sensitive</li>
|
| 7071 |
+
* <li>{string} sFeature Feature name</li>
|
| 7072 |
+
* </ul>
|
| 7073 |
+
* @type array
|
| 7074 |
+
* @default []
|
| 7075 |
+
*
|
| 7076 |
+
* @example
|
| 7077 |
+
* // How TableTools initialises itself.
|
| 7078 |
+
* $.fn.dataTableExt.aoFeatures.push( {
|
| 7079 |
+
* "fnInit": function( oSettings ) {
|
| 7080 |
+
* return new TableTools( { "oDTSettings": oSettings } );
|
| 7081 |
+
* },
|
| 7082 |
+
* "cFeature": "T",
|
| 7083 |
+
* "sFeature": "TableTools"
|
| 7084 |
+
* } );
|
| 7085 |
+
*/
|
| 7086 |
+
"aoFeatures": [],
|
| 7087 |
+
|
| 7088 |
+
|
| 7089 |
+
/**
|
| 7090 |
+
* Type detection plug-in functions - DataTables utilises types to define how sorting and
|
| 7091 |
+
* filtering behave, and types can be either be defined by the developer (sType for the
|
| 7092 |
+
* column) or they can be automatically detected by the methods in this array. The functions
|
| 7093 |
+
* defined in the array are quite simple, taking a single parameter (the data to analyse)
|
| 7094 |
+
* and returning the type if it is a known type, or null otherwise.
|
| 7095 |
+
* <ul>
|
| 7096 |
+
* <li>
|
| 7097 |
+
* Function input parameters:
|
| 7098 |
+
* <ul>
|
| 7099 |
+
* <li>{*} Data from the column cell to be analysed</li>
|
| 7100 |
+
* </ul>
|
| 7101 |
+
* </li>
|
| 7102 |
+
* <li>
|
| 7103 |
+
* Function return:
|
| 7104 |
+
* <ul>
|
| 7105 |
+
* <li>{string|null} Data type detected, or null if unknown (and thus pass it
|
| 7106 |
+
* on to the other type detection functions.</li>
|
| 7107 |
+
* </ul>
|
| 7108 |
+
* </il>
|
| 7109 |
+
* </ul>
|
| 7110 |
+
* @type array
|
| 7111 |
+
* @default []
|
| 7112 |
+
*
|
| 7113 |
+
* @example
|
| 7114 |
+
* // Currency type detection plug-in:
|
| 7115 |
+
* jQuery.fn.dataTableExt.aTypes.push(
|
| 7116 |
+
* function ( sData ) {
|
| 7117 |
+
* var sValidChars = "0123456789.-";
|
| 7118 |
+
* var Char;
|
| 7119 |
+
*
|
| 7120 |
+
* // Check the numeric part
|
| 7121 |
+
* for ( i=1 ; i<sData.length ; i++ ) {
|
| 7122 |
+
* Char = sData.charAt(i);
|
| 7123 |
+
* if (sValidChars.indexOf(Char) == -1) {
|
| 7124 |
+
* return null;
|
| 7125 |
+
* }
|
| 7126 |
+
* }
|
| 7127 |
+
*
|
| 7128 |
+
* // Check prefixed by currency
|
| 7129 |
+
* if ( sData.charAt(0) == '$' || sData.charAt(0) == '£' ) {
|
| 7130 |
+
* return 'currency';
|
| 7131 |
+
* }
|
| 7132 |
+
* return null;
|
| 7133 |
+
* }
|
| 7134 |
+
* );
|
| 7135 |
+
*/
|
| 7136 |
+
"aTypes": [],
|
| 7137 |
+
|
| 7138 |
+
|
| 7139 |
+
/**
|
| 7140 |
+
* Provide a common method for plug-ins to check the version of DataTables being used,
|
| 7141 |
+
* in order to ensure compatibility.
|
| 7142 |
+
* @type function
|
| 7143 |
+
* @param {string} sVersion Version string to check for, in the format "X.Y.Z". Note
|
| 7144 |
+
* that the formats "X" and "X.Y" are also acceptable.
|
| 7145 |
+
* @returns {boolean} true if this version of DataTables is greater or equal to the
|
| 7146 |
+
* required version, or false if this version of DataTales is not suitable
|
| 7147 |
+
*
|
| 7148 |
+
* @example
|
| 7149 |
+
* $(document).ready(function() {
|
| 7150 |
+
* var oTable = $('#example').dataTable();
|
| 7151 |
+
* alert( oTable.fnVersionCheck( '1.9.0' ) );
|
| 7152 |
+
* } );
|
| 7153 |
+
*/
|
| 7154 |
+
"fnVersionCheck": DataTable.fnVersionCheck,
|
| 7155 |
+
|
| 7156 |
+
|
| 7157 |
+
/**
|
| 7158 |
+
* Index for what 'this' index API functions should use
|
| 7159 |
+
* @type int
|
| 7160 |
+
* @default 0
|
| 7161 |
+
*/
|
| 7162 |
+
"iApiIndex": 0,
|
| 7163 |
+
|
| 7164 |
+
|
| 7165 |
+
/**
|
| 7166 |
+
* Pre-processing of filtering data plug-ins - When you assign the sType for a column
|
| 7167 |
+
* (or have it automatically detected for you by DataTables or a type detection plug-in),
|
| 7168 |
+
* you will typically be using this for custom sorting, but it can also be used to provide
|
| 7169 |
+
* custom filtering by allowing you to pre-processing the data and returning the data in
|
| 7170 |
+
* the format that should be filtered upon. This is done by adding functions this object
|
| 7171 |
+
* with a parameter name which matches the sType for that target column. This is the
|
| 7172 |
+
* corollary of <i>afnSortData</i> for filtering data.
|
| 7173 |
+
* <ul>
|
| 7174 |
+
* <li>
|
| 7175 |
+
* Function input parameters:
|
| 7176 |
+
* <ul>
|
| 7177 |
+
* <li>{*} Data from the column cell to be prepared for filtering</li>
|
| 7178 |
+
* </ul>
|
| 7179 |
+
* </li>
|
| 7180 |
+
* <li>
|
| 7181 |
+
* Function return:
|
| 7182 |
+
* <ul>
|
| 7183 |
+
* <li>{string|null} Formatted string that will be used for the filtering.</li>
|
| 7184 |
+
* </ul>
|
| 7185 |
+
* </il>
|
| 7186 |
+
* </ul>
|
| 7187 |
+
*
|
| 7188 |
+
* Note that as of v1.9, it is typically preferable to use <i>mData</i> to prepare data for
|
| 7189 |
+
* the different uses that DataTables can put the data to. Specifically <i>mData</i> when
|
| 7190 |
+
* used as a function will give you a 'type' (sorting, filtering etc) that you can use to
|
| 7191 |
+
* prepare the data as required for the different types. As such, this method is deprecated.
|
| 7192 |
+
* @type object
|
| 7193 |
+
* @default {}
|
| 7194 |
+
* @deprecated
|
| 7195 |
+
*
|
| 7196 |
+
* @example
|
| 7197 |
+
* $.fn.dataTableExt.ofnSearch['title-numeric'] = function ( sData ) {
|
| 7198 |
+
* return sData.replace(/\n/g," ").replace( /<.*?>/g, "" );
|
| 7199 |
+
* }
|
| 7200 |
+
*/
|
| 7201 |
+
"ofnSearch": {},
|
| 7202 |
+
|
| 7203 |
+
|
| 7204 |
+
/**
|
| 7205 |
+
* Container for all private functions in DataTables so they can be exposed externally
|
| 7206 |
+
* @type object
|
| 7207 |
+
* @default {}
|
| 7208 |
+
*/
|
| 7209 |
+
"oApi": {},
|
| 7210 |
+
|
| 7211 |
+
|
| 7212 |
+
/**
|
| 7213 |
+
* Storage for the various classes that DataTables uses
|
| 7214 |
+
* @type object
|
| 7215 |
+
* @default {}
|
| 7216 |
+
*/
|
| 7217 |
+
"oStdClasses": {},
|
| 7218 |
+
|
| 7219 |
+
|
| 7220 |
+
/**
|
| 7221 |
+
* Storage for the various classes that DataTables uses - jQuery UI suitable
|
| 7222 |
+
* @type object
|
| 7223 |
+
* @default {}
|
| 7224 |
+
*/
|
| 7225 |
+
"oJUIClasses": {},
|
| 7226 |
+
|
| 7227 |
+
|
| 7228 |
+
/**
|
| 7229 |
+
* Pagination plug-in methods - The style and controls of the pagination can significantly
|
| 7230 |
+
* impact on how the end user interacts with the data in your table, and DataTables allows
|
| 7231 |
+
* the addition of pagination controls by extending this object, which can then be enabled
|
| 7232 |
+
* through the <i>sPaginationType</i> initialisation parameter. Each pagination type that
|
| 7233 |
+
* is added is an object (the property name of which is what <i>sPaginationType</i> refers
|
| 7234 |
+
* to) that has two properties, both methods that are used by DataTables to update the
|
| 7235 |
+
* control's state.
|
| 7236 |
+
* <ul>
|
| 7237 |
+
* <li>
|
| 7238 |
+
* fnInit - Initialisation of the paging controls. Called only during initialisation
|
| 7239 |
+
* of the table. It is expected that this function will add the required DOM elements
|
| 7240 |
+
* to the page for the paging controls to work. The element pointer
|
| 7241 |
+
* 'oSettings.aanFeatures.p' array is provided by DataTables to contain the paging
|
| 7242 |
+
* controls (note that this is a 2D array to allow for multiple instances of each
|
| 7243 |
+
* DataTables DOM element). It is suggested that you add the controls to this element
|
| 7244 |
+
* as children
|
| 7245 |
+
* <ul>
|
| 7246 |
+
* <li>
|
| 7247 |
+
* Function input parameters:
|
| 7248 |
+
* <ul>
|
| 7249 |
+
* <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
|
| 7250 |
+
* <li>{node} Container into which the pagination controls must be inserted</li>
|
| 7251 |
+
* <li>{function} Draw callback function - whenever the controls cause a page
|
| 7252 |
+
* change, this method must be called to redraw the table.</li>
|
| 7253 |
+
* </ul>
|
| 7254 |
+
* </li>
|
| 7255 |
+
* <li>
|
| 7256 |
+
* Function return:
|
| 7257 |
+
* <ul>
|
| 7258 |
+
* <li>No return required</li>
|
| 7259 |
+
* </ul>
|
| 7260 |
+
* </il>
|
| 7261 |
+
* </ul>
|
| 7262 |
+
* </il>
|
| 7263 |
+
* <li>
|
| 7264 |
+
* fnInit - This function is called whenever the paging status of the table changes and is
|
| 7265 |
+
* typically used to update classes and/or text of the paging controls to reflex the new
|
| 7266 |
+
* status.
|
| 7267 |
+
* <ul>
|
| 7268 |
+
* <li>
|
| 7269 |
+
* Function input parameters:
|
| 7270 |
+
* <ul>
|
| 7271 |
+
* <li>{object} DataTables settings object: see {@link DataTable.models.oSettings}.</li>
|
| 7272 |
+
* <li>{function} Draw callback function - in case you need to redraw the table again
|
| 7273 |
+
* or attach new event listeners</li>
|
| 7274 |
+
* </ul>
|
| 7275 |
+
* </li>
|
| 7276 |
+
* <li>
|
| 7277 |
+
* Function return:
|
| 7278 |
+
* <ul>
|
| 7279 |
+
* <li>No return required</li>
|
| 7280 |
+
* </ul>
|
| 7281 |
+
* </il>
|
| 7282 |
+
* </ul>
|
| 7283 |
+
* </il>
|
| 7284 |
+
* </ul>
|
| 7285 |
+
* @type object
|
| 7286 |
+
* @default {}
|
| 7287 |
+
*
|
| 7288 |
+
* @example
|
| 7289 |
+
* $.fn.dataTableExt.oPagination.four_button = {
|
| 7290 |
+
* "fnInit": function ( oSettings, nPaging, fnCallbackDraw ) {
|
| 7291 |
+
* nFirst = document.createElement( 'span' );
|
| 7292 |
+
* nPrevious = document.createElement( 'span' );
|
| 7293 |
+
* nNext = document.createElement( 'span' );
|
| 7294 |
+
* nLast = document.createElement( 'span' );
|
| 7295 |
+
*
|
| 7296 |
+
* nFirst.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sFirst ) );
|
| 7297 |
+
* nPrevious.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sPrevious ) );
|
| 7298 |
+
* nNext.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sNext ) );
|
| 7299 |
+
* nLast.appendChild( document.createTextNode( oSettings.oLanguage.oPaginate.sLast ) );
|
| 7300 |
+
*
|
| 7301 |
+
* nFirst.className = "paginate_button first";
|
| 7302 |
+
* nPrevious.className = "paginate_button previous";
|
| 7303 |
+
* nNext.className="paginate_button next";
|
| 7304 |
+
* nLast.className = "paginate_button last";
|
| 7305 |
+
*
|
| 7306 |
+
* nPaging.appendChild( nFirst );
|
| 7307 |
+
* nPaging.appendChild( nPrevious );
|
| 7308 |
+
* nPaging.appendChild( nNext );
|
| 7309 |
+
* nPaging.appendChild( nLast );
|
| 7310 |
+
*
|
| 7311 |
+
* $(nFirst).click( function () {
|
| 7312 |
+
* oSettings.oApi._fnPageChange( oSettings, "first" );
|
| 7313 |
+
* fnCallbackDraw( oSettings );
|
| 7314 |
+
* } );
|
| 7315 |
+
*
|
| 7316 |
+
* $(nPrevious).click( function() {
|
| 7317 |
+
* oSettings.oApi._fnPageChange( oSettings, "previous" );
|
| 7318 |
+
* fnCallbackDraw( oSettings );
|
| 7319 |
+
* } );
|
| 7320 |
+
*
|
| 7321 |
+
* $(nNext).click( function() {
|
| 7322 |
+
* oSettings.oApi._fnPageChange( oSettings, "next" );
|
| 7323 |
+
* fnCallbackDraw( oSettings );
|
| 7324 |
+
* } );
|
| 7325 |
+
*
|
| 7326 |
+
* $(nLast).click( function() {
|
| 7327 |
+
* oSettings.oApi._fnPageChange( oSettings, "last" );
|
| 7328 |
+
* fnCallbackDraw( oSettings );
|
| 7329 |
+
* } );
|
| 7330 |
+
*
|
| 7331 |
+
* $(nFirst).bind( 'selectstart', function () { return false; } );
|
| 7332 |
+
* $(nPrevious).bind( 'selectstart', function () { return false; } );
|
| 7333 |
+
* $(nNext).bind( 'selectstart', function () { return false; } );
|
| 7334 |
+
* $(nLast).bind( 'selectstart', function () { return false; } );
|
| 7335 |
+
* },
|
| 7336 |
+
*
|
| 7337 |
+
* "fnUpdate": function ( oSettings, fnCallbackDraw ) {
|
| 7338 |
+
* if ( !oSettings.aanFeatures.p ) {
|
| 7339 |
+
* return;
|
| 7340 |
+
* }
|
| 7341 |
+
*
|
| 7342 |
+
* // Loop over each instance of the pager
|
| 7343 |
+
* var an = oSettings.aanFeatures.p;
|
| 7344 |
+
* for ( var i=0, iLen=an.length ; i<iLen ; i++ ) {
|
| 7345 |
+
* var buttons = an[i].getElementsByTagName('span');
|
| 7346 |
+
* if ( oSettings._iDisplayStart === 0 ) {
|
| 7347 |
+
* buttons[0].className = "paginate_disabled_previous";
|
| 7348 |
+
* buttons[1].className = "paginate_disabled_previous";
|
| 7349 |
+
* }
|
| 7350 |
+
* else {
|
| 7351 |
+
* buttons[0].className = "paginate_enabled_previous";
|
| 7352 |
+
* buttons[1].className = "paginate_enabled_previous";
|
| 7353 |
+
* }
|
| 7354 |
+
*
|
| 7355 |
+
* if ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) {
|
| 7356 |
+
* buttons[2].className = "paginate_disabled_next";
|
| 7357 |
+
* buttons[3].className = "paginate_disabled_next";
|
| 7358 |
+
* }
|
| 7359 |
+
* else {
|
| 7360 |
+
* buttons[2].className = "paginate_enabled_next";
|
| 7361 |
+
* buttons[3].className = "paginate_enabled_next";
|
| 7362 |
+
* }
|
| 7363 |
+
* }
|
| 7364 |
+
* }
|
| 7365 |
+
* };
|
| 7366 |
+
*/
|
| 7367 |
+
"oPagination": {},
|
| 7368 |
+
|
| 7369 |
+
|
| 7370 |
+
/**
|
| 7371 |
+
* Sorting plug-in methods - Sorting in DataTables is based on the detected type of the
|
| 7372 |
+
* data column (you can add your own type detection functions, or override automatic
|
| 7373 |
+
* detection using sType). With this specific type given to the column, DataTables will
|
| 7374 |
+
* apply the required sort from the functions in the object. Each sort type must provide
|
| 7375 |
+
* two mandatory methods, one each for ascending and descending sorting, and can optionally
|
| 7376 |
+
* provide a pre-formatting method that will help speed up sorting by allowing DataTables
|
| 7377 |
+
* to pre-format the sort data only once (rather than every time the actual sort functions
|
| 7378 |
+
* are run). The two sorting functions are typical Javascript sort methods:
|
| 7379 |
+
* <ul>
|
| 7380 |
+
* <li>
|
| 7381 |
+
* Function input parameters:
|
| 7382 |
+
* <ul>
|
| 7383 |
+
* <li>{*} Data to compare to the second parameter</li>
|
| 7384 |
+
* <li>{*} Data to compare to the first parameter</li>
|
| 7385 |
+
* </ul>
|
| 7386 |
+
* </li>
|
| 7387 |
+
* <li>
|
| 7388 |
+
* Function return:
|
| 7389 |
+
* <ul>
|
| 7390 |
+
* <li>{int} Sorting match: <0 if first parameter should be sorted lower than
|
| 7391 |
+
* the second parameter, ===0 if the two parameters are equal and >0 if
|
| 7392 |
+
* the first parameter should be sorted height than the second parameter.</li>
|
| 7393 |
+
* </ul>
|
| 7394 |
+
* </il>
|
| 7395 |
+
* </ul>
|
| 7396 |
+
* @type object
|
| 7397 |
+
* @default {}
|
| 7398 |
+
*
|
| 7399 |
+
* @example
|
| 7400 |
+
* // Case-sensitive string sorting, with no pre-formatting method
|
| 7401 |
+
* $.extend( $.fn.dataTableExt.oSort, {
|
| 7402 |
+
* "string-case-asc": function(x,y) {
|
| 7403 |
+
* return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
| 7404 |
+
* },
|
| 7405 |
+
* "string-case-desc": function(x,y) {
|
| 7406 |
+
* return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
| 7407 |
+
* }
|
| 7408 |
+
* } );
|
| 7409 |
+
*
|
| 7410 |
+
* @example
|
| 7411 |
+
* // Case-insensitive string sorting, with pre-formatting
|
| 7412 |
+
* $.extend( $.fn.dataTableExt.oSort, {
|
| 7413 |
+
* "string-pre": function(x) {
|
| 7414 |
+
* return x.toLowerCase();
|
| 7415 |
+
* },
|
| 7416 |
+
* "string-asc": function(x,y) {
|
| 7417 |
+
* return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
| 7418 |
+
* },
|
| 7419 |
+
* "string-desc": function(x,y) {
|
| 7420 |
+
* return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
| 7421 |
+
* }
|
| 7422 |
+
* } );
|
| 7423 |
+
*/
|
| 7424 |
+
"oSort": {},
|
| 7425 |
+
|
| 7426 |
+
|
| 7427 |
+
/**
|
| 7428 |
+
* Version string for plug-ins to check compatibility. Allowed format is
|
| 7429 |
+
* a.b.c.d.e where: a:int, b:int, c:int, d:string(dev|beta), e:int. d and
|
| 7430 |
+
* e are optional
|
| 7431 |
+
* @type string
|
| 7432 |
+
* @default Version number
|
| 7433 |
+
*/
|
| 7434 |
+
"sVersion": DataTable.version,
|
| 7435 |
+
|
| 7436 |
+
|
| 7437 |
+
/**
|
| 7438 |
+
* How should DataTables report an error. Can take the value 'alert' or 'throw'
|
| 7439 |
+
* @type string
|
| 7440 |
+
* @default alert
|
| 7441 |
+
*/
|
| 7442 |
+
"sErrMode": "alert",
|
| 7443 |
+
|
| 7444 |
+
|
| 7445 |
+
/**
|
| 7446 |
+
* Store information for DataTables to access globally about other instances
|
| 7447 |
+
* @namespace
|
| 7448 |
+
* @private
|
| 7449 |
+
*/
|
| 7450 |
+
"_oExternConfig": {
|
| 7451 |
+
/* int:iNextUnique - next unique number for an instance */
|
| 7452 |
+
"iNextUnique": 0
|
| 7453 |
+
}
|
| 7454 |
+
};
|
| 7455 |
+
|
| 7456 |
+
|
| 7457 |
+
|
| 7458 |
+
|
| 7459 |
+
/**
|
| 7460 |
+
* Template object for the way in which DataTables holds information about
|
| 7461 |
+
* search information for the global filter and individual column filters.
|
| 7462 |
+
* @namespace
|
| 7463 |
+
*/
|
| 7464 |
+
DataTable.models.oSearch = {
|
| 7465 |
+
/**
|
| 7466 |
+
* Flag to indicate if the filtering should be case insensitive or not
|
| 7467 |
+
* @type boolean
|
| 7468 |
+
* @default true
|
| 7469 |
+
*/
|
| 7470 |
+
"bCaseInsensitive": true,
|
| 7471 |
+
|
| 7472 |
+
/**
|
| 7473 |
+
* Applied search term
|
| 7474 |
+
* @type string
|
| 7475 |
+
* @default <i>Empty string</i>
|
| 7476 |
+
*/
|
| 7477 |
+
"sSearch": "",
|
| 7478 |
+
|
| 7479 |
+
/**
|
| 7480 |
+
* Flag to indicate if the search term should be interpreted as a
|
| 7481 |
+
* regular expression (true) or not (false) and therefore and special
|
| 7482 |
+
* regex characters escaped.
|
| 7483 |
+
* @type boolean
|
| 7484 |
+
* @default false
|
| 7485 |
+
*/
|
| 7486 |
+
"bRegex": false,
|
| 7487 |
+
|
| 7488 |
+
/**
|
| 7489 |
+
* Flag to indicate if DataTables is to use its smart filtering or not.
|
| 7490 |
+
* @type boolean
|
| 7491 |
+
* @default true
|
| 7492 |
+
*/
|
| 7493 |
+
"bSmart": true
|
| 7494 |
+
};
|
| 7495 |
+
|
| 7496 |
+
|
| 7497 |
+
|
| 7498 |
+
|
| 7499 |
+
/**
|
| 7500 |
+
* Template object for the way in which DataTables holds information about
|
| 7501 |
+
* each individual row. This is the object format used for the settings
|
| 7502 |
+
* aoData array.
|
| 7503 |
+
* @namespace
|
| 7504 |
+
*/
|
| 7505 |
+
DataTable.models.oRow = {
|
| 7506 |
+
/**
|
| 7507 |
+
* TR element for the row
|
| 7508 |
+
* @type node
|
| 7509 |
+
* @default null
|
| 7510 |
+
*/
|
| 7511 |
+
"nTr": null,
|
| 7512 |
+
|
| 7513 |
+
/**
|
| 7514 |
+
* Data object from the original data source for the row. This is either
|
| 7515 |
+
* an array if using the traditional form of DataTables, or an object if
|
| 7516 |
+
* using mData options. The exact type will depend on the passed in
|
| 7517 |
+
* data from the data source, or will be an array if using DOM a data
|
| 7518 |
+
* source.
|
| 7519 |
+
* @type array|object
|
| 7520 |
+
* @default []
|
| 7521 |
+
*/
|
| 7522 |
+
"_aData": [],
|
| 7523 |
+
|
| 7524 |
+
/**
|
| 7525 |
+
* Sorting data cache - this array is ostensibly the same length as the
|
| 7526 |
+
* number of columns (although each index is generated only as it is
|
| 7527 |
+
* needed), and holds the data that is used for sorting each column in the
|
| 7528 |
+
* row. We do this cache generation at the start of the sort in order that
|
| 7529 |
+
* the formatting of the sort data need be done only once for each cell
|
| 7530 |
+
* per sort. This array should not be read from or written to by anything
|
| 7531 |
+
* other than the master sorting methods.
|
| 7532 |
+
* @type array
|
| 7533 |
+
* @default []
|
| 7534 |
+
* @private
|
| 7535 |
+
*/
|
| 7536 |
+
"_aSortData": [],
|
| 7537 |
+
|
| 7538 |
+
/**
|
| 7539 |
+
* Array of TD elements that are cached for hidden rows, so they can be
|
| 7540 |
+
* reinserted into the table if a column is made visible again (or to act
|
| 7541 |
+
* as a store if a column is made hidden). Only hidden columns have a
|
| 7542 |
+
* reference in the array. For non-hidden columns the value is either
|
| 7543 |
+
* undefined or null.
|
| 7544 |
+
* @type array nodes
|
| 7545 |
+
* @default []
|
| 7546 |
+
* @private
|
| 7547 |
+
*/
|
| 7548 |
+
"_anHidden": [],
|
| 7549 |
+
|
| 7550 |
+
/**
|
| 7551 |
+
* Cache of the class name that DataTables has applied to the row, so we
|
| 7552 |
+
* can quickly look at this variable rather than needing to do a DOM check
|
| 7553 |
+
* on className for the nTr property.
|
| 7554 |
+
* @type string
|
| 7555 |
+
* @default <i>Empty string</i>
|
| 7556 |
+
* @private
|
| 7557 |
+
*/
|
| 7558 |
+
"_sRowStripe": ""
|
| 7559 |
+
};
|
| 7560 |
+
|
| 7561 |
+
|
| 7562 |
+
|
| 7563 |
+
/**
|
| 7564 |
+
* Template object for the column information object in DataTables. This object
|
| 7565 |
+
* is held in the settings aoColumns array and contains all the information that
|
| 7566 |
+
* DataTables needs about each individual column.
|
| 7567 |
+
*
|
| 7568 |
+
* Note that this object is related to {@link DataTable.defaults.columns}
|
| 7569 |
+
* but this one is the internal data store for DataTables's cache of columns.
|
| 7570 |
+
* It should NOT be manipulated outside of DataTables. Any configuration should
|
| 7571 |
+
* be done through the initialisation options.
|
| 7572 |
+
* @namespace
|
| 7573 |
+
*/
|
| 7574 |
+
DataTable.models.oColumn = {
|
| 7575 |
+
/**
|
| 7576 |
+
* A list of the columns that sorting should occur on when this column
|
| 7577 |
+
* is sorted. That this property is an array allows multi-column sorting
|
| 7578 |
+
* to be defined for a column (for example first name / last name columns
|
| 7579 |
+
* would benefit from this). The values are integers pointing to the
|
| 7580 |
+
* columns to be sorted on (typically it will be a single integer pointing
|
| 7581 |
+
* at itself, but that doesn't need to be the case).
|
| 7582 |
+
* @type array
|
| 7583 |
+
*/
|
| 7584 |
+
"aDataSort": null,
|
| 7585 |
+
|
| 7586 |
+
/**
|
| 7587 |
+
* Define the sorting directions that are applied to the column, in sequence
|
| 7588 |
+
* as the column is repeatedly sorted upon - i.e. the first value is used
|
| 7589 |
+
* as the sorting direction when the column if first sorted (clicked on).
|
| 7590 |
+
* Sort it again (click again) and it will move on to the next index.
|
| 7591 |
+
* Repeat until loop.
|
| 7592 |
+
* @type array
|
| 7593 |
+
*/
|
| 7594 |
+
"asSorting": null,
|
| 7595 |
+
|
| 7596 |
+
/**
|
| 7597 |
+
* Flag to indicate if the column is searchable, and thus should be included
|
| 7598 |
+
* in the filtering or not.
|
| 7599 |
+
* @type boolean
|
| 7600 |
+
*/
|
| 7601 |
+
"bSearchable": null,
|
| 7602 |
+
|
| 7603 |
+
/**
|
| 7604 |
+
* Flag to indicate if the column is sortable or not.
|
| 7605 |
+
* @type boolean
|
| 7606 |
+
*/
|
| 7607 |
+
"bSortable": null,
|
| 7608 |
+
|
| 7609 |
+
/**
|
| 7610 |
+
* <code>Deprecated</code> When using fnRender, you have two options for what
|
| 7611 |
+
* to do with the data, and this property serves as the switch. Firstly, you
|
| 7612 |
+
* can have the sorting and filtering use the rendered value (true - default),
|
| 7613 |
+
* or you can have the sorting and filtering us the original value (false).
|
| 7614 |
+
*
|
| 7615 |
+
* Please note that this option has now been deprecated and will be removed
|
| 7616 |
+
* in the next version of DataTables. Please use mRender / mData rather than
|
| 7617 |
+
* fnRender.
|
| 7618 |
+
* @type boolean
|
| 7619 |
+
* @deprecated
|
| 7620 |
+
*/
|
| 7621 |
+
"bUseRendered": null,
|
| 7622 |
+
|
| 7623 |
+
/**
|
| 7624 |
+
* Flag to indicate if the column is currently visible in the table or not
|
| 7625 |
+
* @type boolean
|
| 7626 |
+
*/
|
| 7627 |
+
"bVisible": null,
|
| 7628 |
+
|
| 7629 |
+
/**
|
| 7630 |
+
* Flag to indicate to the type detection method if the automatic type
|
| 7631 |
+
* detection should be used, or if a column type (sType) has been specified
|
| 7632 |
+
* @type boolean
|
| 7633 |
+
* @default true
|
| 7634 |
+
* @private
|
| 7635 |
+
*/
|
| 7636 |
+
"_bAutoType": true,
|
| 7637 |
+
|
| 7638 |
+
/**
|
| 7639 |
+
* Developer definable function that is called whenever a cell is created (Ajax source,
|
| 7640 |
+
* etc) or processed for input (DOM source). This can be used as a compliment to mRender
|
| 7641 |
+
* allowing you to modify the DOM element (add background colour for example) when the
|
| 7642 |
+
* element is available.
|
| 7643 |
+
* @type function
|
| 7644 |
+
* @param {element} nTd The TD node that has been created
|
| 7645 |
+
* @param {*} sData The Data for the cell
|
| 7646 |
+
* @param {array|object} oData The data for the whole row
|
| 7647 |
+
* @param {int} iRow The row index for the aoData data store
|
| 7648 |
+
* @default null
|
| 7649 |
+
*/
|
| 7650 |
+
"fnCreatedCell": null,
|
| 7651 |
+
|
| 7652 |
+
/**
|
| 7653 |
+
* Function to get data from a cell in a column. You should <b>never</b>
|
| 7654 |
+
* access data directly through _aData internally in DataTables - always use
|
| 7655 |
+
* the method attached to this property. It allows mData to function as
|
| 7656 |
+
* required. This function is automatically assigned by the column
|
| 7657 |
+
* initialisation method
|
| 7658 |
+
* @type function
|
| 7659 |
+
* @param {array|object} oData The data array/object for the array
|
| 7660 |
+
* (i.e. aoData[]._aData)
|
| 7661 |
+
* @param {string} sSpecific The specific data type you want to get -
|
| 7662 |
+
* 'display', 'type' 'filter' 'sort'
|
| 7663 |
+
* @returns {*} The data for the cell from the given row's data
|
| 7664 |
+
* @default null
|
| 7665 |
+
*/
|
| 7666 |
+
"fnGetData": null,
|
| 7667 |
+
|
| 7668 |
+
/**
|
| 7669 |
+
* <code>Deprecated</code> Custom display function that will be called for the
|
| 7670 |
+
* display of each cell in this column.
|
| 7671 |
+
*
|
| 7672 |
+
* Please note that this option has now been deprecated and will be removed
|
| 7673 |
+
* in the next version of DataTables. Please use mRender / mData rather than
|
| 7674 |
+
* fnRender.
|
| 7675 |
+
* @type function
|
| 7676 |
+
* @param {object} o Object with the following parameters:
|
| 7677 |
+
* @param {int} o.iDataRow The row in aoData
|
| 7678 |
+
* @param {int} o.iDataColumn The column in question
|
| 7679 |
+
* @param {array} o.aData The data for the row in question
|
| 7680 |
+
* @param {object} o.oSettings The settings object for this DataTables instance
|
| 7681 |
+
* @returns {string} The string you which to use in the display
|
| 7682 |
+
* @default null
|
| 7683 |
+
* @deprecated
|
| 7684 |
+
*/
|
| 7685 |
+
"fnRender": null,
|
| 7686 |
+
|
| 7687 |
+
/**
|
| 7688 |
+
* Function to set data for a cell in the column. You should <b>never</b>
|
| 7689 |
+
* set the data directly to _aData internally in DataTables - always use
|
| 7690 |
+
* this method. It allows mData to function as required. This function
|
| 7691 |
+
* is automatically assigned by the column initialisation method
|
| 7692 |
+
* @type function
|
| 7693 |
+
* @param {array|object} oData The data array/object for the array
|
| 7694 |
+
* (i.e. aoData[]._aData)
|
| 7695 |
+
* @param {*} sValue Value to set
|
| 7696 |
+
* @default null
|
| 7697 |
+
*/
|
| 7698 |
+
"fnSetData": null,
|
| 7699 |
+
|
| 7700 |
+
/**
|
| 7701 |
+
* Property to read the value for the cells in the column from the data
|
| 7702 |
+
* source array / object. If null, then the default content is used, if a
|
| 7703 |
+
* function is given then the return from the function is used.
|
| 7704 |
+
* @type function|int|string|null
|
| 7705 |
+
* @default null
|
| 7706 |
+
*/
|
| 7707 |
+
"mData": null,
|
| 7708 |
+
|
| 7709 |
+
/**
|
| 7710 |
+
* Partner property to mData which is used (only when defined) to get
|
| 7711 |
+
* the data - i.e. it is basically the same as mData, but without the
|
| 7712 |
+
* 'set' option, and also the data fed to it is the result from mData.
|
| 7713 |
+
* This is the rendering method to match the data method of mData.
|
| 7714 |
+
* @type function|int|string|null
|
| 7715 |
+
* @default null
|
| 7716 |
+
*/
|
| 7717 |
+
"mRender": null,
|
| 7718 |
+
|
| 7719 |
+
/**
|
| 7720 |
+
* Unique header TH/TD element for this column - this is what the sorting
|
| 7721 |
+
* listener is attached to (if sorting is enabled.)
|
| 7722 |
+
* @type node
|
| 7723 |
+
* @default null
|
| 7724 |
+
*/
|
| 7725 |
+
"nTh": null,
|
| 7726 |
+
|
| 7727 |
+
/**
|
| 7728 |
+
* Unique footer TH/TD element for this column (if there is one). Not used
|
| 7729 |
+
* in DataTables as such, but can be used for plug-ins to reference the
|
| 7730 |
+
* footer for each column.
|
| 7731 |
+
* @type node
|
| 7732 |
+
* @default null
|
| 7733 |
+
*/
|
| 7734 |
+
"nTf": null,
|
| 7735 |
+
|
| 7736 |
+
/**
|
| 7737 |
+
* The class to apply to all TD elements in the table's TBODY for the column
|
| 7738 |
+
* @type string
|
| 7739 |
+
* @default null
|
| 7740 |
+
*/
|
| 7741 |
+
"sClass": null,
|
| 7742 |
+
|
| 7743 |
+
/**
|
| 7744 |
+
* When DataTables calculates the column widths to assign to each column,
|
| 7745 |
+
* it finds the longest string in each column and then constructs a
|
| 7746 |
+
* temporary table and reads the widths from that. The problem with this
|
| 7747 |
+
* is that "mmm" is much wider then "iiii", but the latter is a longer
|
| 7748 |
+
* string - thus the calculation can go wrong (doing it properly and putting
|
| 7749 |
+
* it into an DOM object and measuring that is horribly(!) slow). Thus as
|
| 7750 |
+
* a "work around" we provide this option. It will append its value to the
|
| 7751 |
+
* text that is found to be the longest string for the column - i.e. padding.
|
| 7752 |
+
* @type string
|
| 7753 |
+
*/
|
| 7754 |
+
"sContentPadding": null,
|
| 7755 |
+
|
| 7756 |
+
/**
|
| 7757 |
+
* Allows a default value to be given for a column's data, and will be used
|
| 7758 |
+
* whenever a null data source is encountered (this can be because mData
|
| 7759 |
+
* is set to null, or because the data source itself is null).
|
| 7760 |
+
* @type string
|
| 7761 |
+
* @default null
|
| 7762 |
+
*/
|
| 7763 |
+
"sDefaultContent": null,
|
| 7764 |
+
|
| 7765 |
+
/**
|
| 7766 |
+
* Name for the column, allowing reference to the column by name as well as
|
| 7767 |
+
* by index (needs a lookup to work by name).
|
| 7768 |
+
* @type string
|
| 7769 |
+
*/
|
| 7770 |
+
"sName": null,
|
| 7771 |
+
|
| 7772 |
+
/**
|
| 7773 |
+
* Custom sorting data type - defines which of the available plug-ins in
|
| 7774 |
+
* afnSortData the custom sorting will use - if any is defined.
|
| 7775 |
+
* @type string
|
| 7776 |
+
* @default std
|
| 7777 |
+
*/
|
| 7778 |
+
"sSortDataType": 'std',
|
| 7779 |
+
|
| 7780 |
+
/**
|
| 7781 |
+
* Class to be applied to the header element when sorting on this column
|
| 7782 |
+
* @type string
|
| 7783 |
+
* @default null
|
| 7784 |
+
*/
|
| 7785 |
+
"sSortingClass": null,
|
| 7786 |
+
|
| 7787 |
+
/**
|
| 7788 |
+
* Class to be applied to the header element when sorting on this column -
|
| 7789 |
+
* when jQuery UI theming is used.
|
| 7790 |
+
* @type string
|
| 7791 |
+
* @default null
|
| 7792 |
+
*/
|
| 7793 |
+
"sSortingClassJUI": null,
|
| 7794 |
+
|
| 7795 |
+
/**
|
| 7796 |
+
* Title of the column - what is seen in the TH element (nTh).
|
| 7797 |
+
* @type string
|
| 7798 |
+
*/
|
| 7799 |
+
"sTitle": null,
|
| 7800 |
+
|
| 7801 |
+
/**
|
| 7802 |
+
* Column sorting and filtering type
|
| 7803 |
+
* @type string
|
| 7804 |
+
* @default null
|
| 7805 |
+
*/
|
| 7806 |
+
"sType": null,
|
| 7807 |
+
|
| 7808 |
+
/**
|
| 7809 |
+
* Width of the column
|
| 7810 |
+
* @type string
|
| 7811 |
+
* @default null
|
| 7812 |
+
*/
|
| 7813 |
+
"sWidth": null,
|
| 7814 |
+
|
| 7815 |
+
/**
|
| 7816 |
+
* Width of the column when it was first "encountered"
|
| 7817 |
+
* @type string
|
| 7818 |
+
* @default null
|
| 7819 |
+
*/
|
| 7820 |
+
"sWidthOrig": null
|
| 7821 |
+
};
|
| 7822 |
+
|
| 7823 |
+
|
| 7824 |
+
|
| 7825 |
+
/**
|
| 7826 |
+
* Initialisation options that can be given to DataTables at initialisation
|
| 7827 |
+
* time.
|
| 7828 |
+
* @namespace
|
| 7829 |
+
*/
|
| 7830 |
+
DataTable.defaults = {
|
| 7831 |
+
/**
|
| 7832 |
+
* An array of data to use for the table, passed in at initialisation which
|
| 7833 |
+
* will be used in preference to any data which is already in the DOM. This is
|
| 7834 |
+
* particularly useful for constructing tables purely in Javascript, for
|
| 7835 |
+
* example with a custom Ajax call.
|
| 7836 |
+
* @type array
|
| 7837 |
+
* @default null
|
| 7838 |
+
* @dtopt Option
|
| 7839 |
+
*
|
| 7840 |
+
* @example
|
| 7841 |
+
* // Using a 2D array data source
|
| 7842 |
+
* $(document).ready( function () {
|
| 7843 |
+
* $('#example').dataTable( {
|
| 7844 |
+
* "aaData": [
|
| 7845 |
+
* ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],
|
| 7846 |
+
* ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],
|
| 7847 |
+
* ],
|
| 7848 |
+
* "aoColumns": [
|
| 7849 |
+
* { "sTitle": "Engine" },
|
| 7850 |
+
* { "sTitle": "Browser" },
|
| 7851 |
+
* { "sTitle": "Platform" },
|
| 7852 |
+
* { "sTitle": "Version" },
|
| 7853 |
+
* { "sTitle": "Grade" }
|
| 7854 |
+
* ]
|
| 7855 |
+
* } );
|
| 7856 |
+
* } );
|
| 7857 |
+
*
|
| 7858 |
+
* @example
|
| 7859 |
+
* // Using an array of objects as a data source (mData)
|
| 7860 |
+
* $(document).ready( function () {
|
| 7861 |
+
* $('#example').dataTable( {
|
| 7862 |
+
* "aaData": [
|
| 7863 |
+
* {
|
| 7864 |
+
* "engine": "Trident",
|
| 7865 |
+
* "browser": "Internet Explorer 4.0",
|
| 7866 |
+
* "platform": "Win 95+",
|
| 7867 |
+
* "version": 4,
|
| 7868 |
+
* "grade": "X"
|
| 7869 |
+
* },
|
| 7870 |
+
* {
|
| 7871 |
+
* "engine": "Trident",
|
| 7872 |
+
* "browser": "Internet Explorer 5.0",
|
| 7873 |
+
* "platform": "Win 95+",
|
| 7874 |
+
* "version": 5,
|
| 7875 |
+
* "grade": "C"
|
| 7876 |
+
* }
|
| 7877 |
+
* ],
|
| 7878 |
+
* "aoColumns": [
|
| 7879 |
+
* { "sTitle": "Engine", "mData": "engine" },
|
| 7880 |
+
* { "sTitle": "Browser", "mData": "browser" },
|
| 7881 |
+
* { "sTitle": "Platform", "mData": "platform" },
|
| 7882 |
+
* { "sTitle": "Version", "mData": "version" },
|
| 7883 |
+
* { "sTitle": "Grade", "mData": "grade" }
|
| 7884 |
+
* ]
|
| 7885 |
+
* } );
|
| 7886 |
+
* } );
|
| 7887 |
+
*/
|
| 7888 |
+
"aaData": null,
|
| 7889 |
+
|
| 7890 |
+
|
| 7891 |
+
/**
|
| 7892 |
+
* If sorting is enabled, then DataTables will perform a first pass sort on
|
| 7893 |
+
* initialisation. You can define which column(s) the sort is performed upon,
|
| 7894 |
+
* and the sorting direction, with this variable. The aaSorting array should
|
| 7895 |
+
* contain an array for each column to be sorted initially containing the
|
| 7896 |
+
* column's index and a direction string ('asc' or 'desc').
|
| 7897 |
+
* @type array
|
| 7898 |
+
* @default [[0,'asc']]
|
| 7899 |
+
* @dtopt Option
|
| 7900 |
+
*
|
| 7901 |
+
* @example
|
| 7902 |
+
* // Sort by 3rd column first, and then 4th column
|
| 7903 |
+
* $(document).ready( function() {
|
| 7904 |
+
* $('#example').dataTable( {
|
| 7905 |
+
* "aaSorting": [[2,'asc'], [3,'desc']]
|
| 7906 |
+
* } );
|
| 7907 |
+
* } );
|
| 7908 |
+
*
|
| 7909 |
+
* // No initial sorting
|
| 7910 |
+
* $(document).ready( function() {
|
| 7911 |
+
* $('#example').dataTable( {
|
| 7912 |
+
* "aaSorting": []
|
| 7913 |
+
* } );
|
| 7914 |
+
* } );
|
| 7915 |
+
*/
|
| 7916 |
+
"aaSorting": [[0,'asc']],
|
| 7917 |
+
|
| 7918 |
+
|
| 7919 |
+
/**
|
| 7920 |
+
* This parameter is basically identical to the aaSorting parameter, but
|
| 7921 |
+
* cannot be overridden by user interaction with the table. What this means
|
| 7922 |
+
* is that you could have a column (visible or hidden) which the sorting will
|
| 7923 |
+
* always be forced on first - any sorting after that (from the user) will
|
| 7924 |
+
* then be performed as required. This can be useful for grouping rows
|
| 7925 |
+
* together.
|
| 7926 |
+
* @type array
|
| 7927 |
+
* @default null
|
| 7928 |
+
* @dtopt Option
|
| 7929 |
+
*
|
| 7930 |
+
* @example
|
| 7931 |
+
* $(document).ready( function() {
|
| 7932 |
+
* $('#example').dataTable( {
|
| 7933 |
+
* "aaSortingFixed": [[0,'asc']]
|
| 7934 |
+
* } );
|
| 7935 |
+
* } )
|
| 7936 |
+
*/
|
| 7937 |
+
"aaSortingFixed": null,
|
| 7938 |
+
|
| 7939 |
+
|
| 7940 |
+
/**
|
| 7941 |
+
* This parameter allows you to readily specify the entries in the length drop
|
| 7942 |
+
* down menu that DataTables shows when pagination is enabled. It can be
|
| 7943 |
+
* either a 1D array of options which will be used for both the displayed
|
| 7944 |
+
* option and the value, or a 2D array which will use the array in the first
|
| 7945 |
+
* position as the value, and the array in the second position as the
|
| 7946 |
+
* displayed options (useful for language strings such as 'All').
|
| 7947 |
+
* @type array
|
| 7948 |
+
* @default [ 10, 25, 50, 100 ]
|
| 7949 |
+
* @dtopt Option
|
| 7950 |
+
*
|
| 7951 |
+
* @example
|
| 7952 |
+
* $(document).ready( function() {
|
| 7953 |
+
* $('#example').dataTable( {
|
| 7954 |
+
* "aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
|
| 7955 |
+
* } );
|
| 7956 |
+
* } );
|
| 7957 |
+
*
|
| 7958 |
+
* @example
|
| 7959 |
+
* // Setting the default display length as well as length menu
|
| 7960 |
+
* // This is likely to be wanted if you remove the '10' option which
|
| 7961 |
+
* // is the iDisplayLength default.
|
| 7962 |
+
* $(document).ready( function() {
|
| 7963 |
+
* $('#example').dataTable( {
|
| 7964 |
+
* "iDisplayLength": 25,
|
| 7965 |
+
* "aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]]
|
| 7966 |
+
* } );
|
| 7967 |
+
* } );
|
| 7968 |
+
*/
|
| 7969 |
+
"aLengthMenu": [ 10, 25, 50, 100 ],
|
| 7970 |
+
|
| 7971 |
+
|
| 7972 |
+
/**
|
| 7973 |
+
* The aoColumns option in the initialisation parameter allows you to define
|
| 7974 |
+
* details about the way individual columns behave. For a full list of
|
| 7975 |
+
* column options that can be set, please see
|
| 7976 |
+
* {@link DataTable.defaults.columns}. Note that if you use aoColumns to
|
| 7977 |
+
* define your columns, you must have an entry in the array for every single
|
| 7978 |
+
* column that you have in your table (these can be null if you don't which
|
| 7979 |
+
* to specify any options).
|
| 7980 |
+
* @member
|
| 7981 |
+
*/
|
| 7982 |
+
"aoColumns": null,
|
| 7983 |
+
|
| 7984 |
+
/**
|
| 7985 |
+
* Very similar to aoColumns, aoColumnDefs allows you to target a specific
|
| 7986 |
+
* column, multiple columns, or all columns, using the aTargets property of
|
| 7987 |
+
* each object in the array. This allows great flexibility when creating
|
| 7988 |
+
* tables, as the aoColumnDefs arrays can be of any length, targeting the
|
| 7989 |
+
* columns you specifically want. aoColumnDefs may use any of the column
|
| 7990 |
+
* options available: {@link DataTable.defaults.columns}, but it _must_
|
| 7991 |
+
* have aTargets defined in each object in the array. Values in the aTargets
|
| 7992 |
+
* array may be:
|
| 7993 |
+
* <ul>
|
| 7994 |
+
* <li>a string - class name will be matched on the TH for the column</li>
|
| 7995 |
+
* <li>0 or a positive integer - column index counting from the left</li>
|
| 7996 |
+
* <li>a negative integer - column index counting from the right</li>
|
| 7997 |
+
* <li>the string "_all" - all columns (i.e. assign a default)</li>
|
| 7998 |
+
* </ul>
|
| 7999 |
+
* @member
|
| 8000 |
+
*/
|
| 8001 |
+
"aoColumnDefs": null,
|
| 8002 |
+
|
| 8003 |
+
|
| 8004 |
+
/**
|
| 8005 |
+
* Basically the same as oSearch, this parameter defines the individual column
|
| 8006 |
+
* filtering state at initialisation time. The array must be of the same size
|
| 8007 |
+
* as the number of columns, and each element be an object with the parameters
|
| 8008 |
+
* "sSearch" and "bEscapeRegex" (the latter is optional). 'null' is also
|
| 8009 |
+
* accepted and the default will be used.
|
| 8010 |
+
* @type array
|
| 8011 |
+
* @default []
|
| 8012 |
+
* @dtopt Option
|
| 8013 |
+
*
|
| 8014 |
+
* @example
|
| 8015 |
+
* $(document).ready( function() {
|
| 8016 |
+
* $('#example').dataTable( {
|
| 8017 |
+
* "aoSearchCols": [
|
| 8018 |
+
* null,
|
| 8019 |
+
* { "sSearch": "My filter" },
|
| 8020 |
+
* null,
|
| 8021 |
+
* { "sSearch": "^[0-9]", "bEscapeRegex": false }
|
| 8022 |
+
* ]
|
| 8023 |
+
* } );
|
| 8024 |
+
* } )
|
| 8025 |
+
*/
|
| 8026 |
+
"aoSearchCols": [],
|
| 8027 |
+
|
| 8028 |
+
|
| 8029 |
+
/**
|
| 8030 |
+
* An array of CSS classes that should be applied to displayed rows. This
|
| 8031 |
+
* array may be of any length, and DataTables will apply each class
|
| 8032 |
+
* sequentially, looping when required.
|
| 8033 |
+
* @type array
|
| 8034 |
+
* @default null <i>Will take the values determined by the oClasses.sStripe*
|
| 8035 |
+
* options</i>
|
| 8036 |
+
* @dtopt Option
|
| 8037 |
+
*
|
| 8038 |
+
* @example
|
| 8039 |
+
* $(document).ready( function() {
|
| 8040 |
+
* $('#example').dataTable( {
|
| 8041 |
+
* "asStripeClasses": [ 'strip1', 'strip2', 'strip3' ]
|
| 8042 |
+
* } );
|
| 8043 |
+
* } )
|
| 8044 |
+
*/
|
| 8045 |
+
"asStripeClasses": null,
|
| 8046 |
+
|
| 8047 |
+
|
| 8048 |
+
/**
|
| 8049 |
+
* Enable or disable automatic column width calculation. This can be disabled
|
| 8050 |
+
* as an optimisation (it takes some time to calculate the widths) if the
|
| 8051 |
+
* tables widths are passed in using aoColumns.
|
| 8052 |
+
* @type boolean
|
| 8053 |
+
* @default true
|
| 8054 |
+
* @dtopt Features
|
| 8055 |
+
*
|
| 8056 |
+
* @example
|
| 8057 |
+
* $(document).ready( function () {
|
| 8058 |
+
* $('#example').dataTable( {
|
| 8059 |
+
* "bAutoWidth": false
|
| 8060 |
+
* } );
|
| 8061 |
+
* } );
|
| 8062 |
+
*/
|
| 8063 |
+
"bAutoWidth": true,
|
| 8064 |
+
|
| 8065 |
+
|
| 8066 |
+
/**
|
| 8067 |
+
* Deferred rendering can provide DataTables with a huge speed boost when you
|
| 8068 |
+
* are using an Ajax or JS data source for the table. This option, when set to
|
| 8069 |
+
* true, will cause DataTables to defer the creation of the table elements for
|
| 8070 |
+
* each row until they are needed for a draw - saving a significant amount of
|
| 8071 |
+
* time.
|
| 8072 |
+
* @type boolean
|
| 8073 |
+
* @default false
|
| 8074 |
+
* @dtopt Features
|
| 8075 |
+
*
|
| 8076 |
+
* @example
|
| 8077 |
+
* $(document).ready( function() {
|
| 8078 |
+
* var oTable = $('#example').dataTable( {
|
| 8079 |
+
* "sAjaxSource": "sources/arrays.txt",
|
| 8080 |
+
* "bDeferRender": true
|
| 8081 |
+
* } );
|
| 8082 |
+
* } );
|
| 8083 |
+
*/
|
| 8084 |
+
"bDeferRender": false,
|
| 8085 |
+
|
| 8086 |
+
|
| 8087 |
+
/**
|
| 8088 |
+
* Replace a DataTable which matches the given selector and replace it with
|
| 8089 |
+
* one which has the properties of the new initialisation object passed. If no
|
| 8090 |
+
* table matches the selector, then the new DataTable will be constructed as
|
| 8091 |
+
* per normal.
|
| 8092 |
+
* @type boolean
|
| 8093 |
+
* @default false
|
| 8094 |
+
* @dtopt Options
|
| 8095 |
+
*
|
| 8096 |
+
* @example
|
| 8097 |
+
* $(document).ready( function() {
|
| 8098 |
+
* $('#example').dataTable( {
|
| 8099 |
+
* "sScrollY": "200px",
|
| 8100 |
+
* "bPaginate": false
|
| 8101 |
+
* } );
|
| 8102 |
+
*
|
| 8103 |
+
* // Some time later....
|
| 8104 |
+
* $('#example').dataTable( {
|
| 8105 |
+
* "bFilter": false,
|
| 8106 |
+
* "bDestroy": true
|
| 8107 |
+
* } );
|
| 8108 |
+
* } );
|
| 8109 |
+
*/
|
| 8110 |
+
"bDestroy": false,
|
| 8111 |
+
|
| 8112 |
+
|
| 8113 |
+
/**
|
| 8114 |
+
* Enable or disable filtering of data. Filtering in DataTables is "smart" in
|
| 8115 |
+
* that it allows the end user to input multiple words (space separated) and
|
| 8116 |
+
* will match a row containing those words, even if not in the order that was
|
| 8117 |
+
* specified (this allow matching across multiple columns). Note that if you
|
| 8118 |
+
* wish to use filtering in DataTables this must remain 'true' - to remove the
|
| 8119 |
+
* default filtering input box and retain filtering abilities, please use
|
| 8120 |
+
* {@link DataTable.defaults.sDom}.
|
| 8121 |
+
* @type boolean
|
| 8122 |
+
* @default true
|
| 8123 |
+
* @dtopt Features
|
| 8124 |
+
*
|
| 8125 |
+
* @example
|
| 8126 |
+
* $(document).ready( function () {
|
| 8127 |
+
* $('#example').dataTable( {
|
| 8128 |
+
* "bFilter": false
|
| 8129 |
+
* } );
|
| 8130 |
+
* } );
|
| 8131 |
+
*/
|
| 8132 |
+
"bFilter": true,
|
| 8133 |
+
|
| 8134 |
+
|
| 8135 |
+
/**
|
| 8136 |
+
* Enable or disable the table information display. This shows information
|
| 8137 |
+
* about the data that is currently visible on the page, including information
|
| 8138 |
+
* about filtered data if that action is being performed.
|
| 8139 |
+
* @type boolean
|
| 8140 |
+
* @default true
|
| 8141 |
+
* @dtopt Features
|
| 8142 |
+
*
|
| 8143 |
+
* @example
|
| 8144 |
+
* $(document).ready( function () {
|
| 8145 |
+
* $('#example').dataTable( {
|
| 8146 |
+
* "bInfo": false
|
| 8147 |
+
* } );
|
| 8148 |
+
* } );
|
| 8149 |
+
*/
|
| 8150 |
+
"bInfo": true,
|
| 8151 |
+
|
| 8152 |
+
|
| 8153 |
+
/**
|
| 8154 |
+
* Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some
|
| 8155 |
+
* slightly different and additional mark-up from what DataTables has
|
| 8156 |
+
* traditionally used).
|
| 8157 |
+
* @type boolean
|
| 8158 |
+
* @default false
|
| 8159 |
+
* @dtopt Features
|
| 8160 |
+
*
|
| 8161 |
+
* @example
|
| 8162 |
+
* $(document).ready( function() {
|
| 8163 |
+
* $('#example').dataTable( {
|
| 8164 |
+
* "bJQueryUI": true
|
| 8165 |
+
* } );
|
| 8166 |
+
* } );
|
| 8167 |
+
*/
|
| 8168 |
+
"bJQueryUI": false,
|
| 8169 |
+
|
| 8170 |
+
|
| 8171 |
+
/**
|
| 8172 |
+
* Allows the end user to select the size of a formatted page from a select
|
| 8173 |
+
* menu (sizes are 10, 25, 50 and 100). Requires pagination (bPaginate).
|
| 8174 |
+
* @type boolean
|
| 8175 |
+
* @default true
|
| 8176 |
+
* @dtopt Features
|
| 8177 |
+
*
|
| 8178 |
+
* @example
|
| 8179 |
+
* $(document).ready( function () {
|
| 8180 |
+
* $('#example').dataTable( {
|
| 8181 |
+
* "bLengthChange": false
|
| 8182 |
+
* } );
|
| 8183 |
+
* } );
|
| 8184 |
+
*/
|
| 8185 |
+
"bLengthChange": true,
|
| 8186 |
+
|
| 8187 |
+
|
| 8188 |
+
/**
|
| 8189 |
+
* Enable or disable pagination.
|
| 8190 |
+
* @type boolean
|
| 8191 |
+
* @default true
|
| 8192 |
+
* @dtopt Features
|
| 8193 |
+
*
|
| 8194 |
+
* @example
|
| 8195 |
+
* $(document).ready( function () {
|
| 8196 |
+
* $('#example').dataTable( {
|
| 8197 |
+
* "bPaginate": false
|
| 8198 |
+
* } );
|
| 8199 |
+
* } );
|
| 8200 |
+
*/
|
| 8201 |
+
"bPaginate": true,
|
| 8202 |
+
|
| 8203 |
+
|
| 8204 |
+
/**
|
| 8205 |
+
* Enable or disable the display of a 'processing' indicator when the table is
|
| 8206 |
+
* being processed (e.g. a sort). This is particularly useful for tables with
|
| 8207 |
+
* large amounts of data where it can take a noticeable amount of time to sort
|
| 8208 |
+
* the entries.
|
| 8209 |
+
* @type boolean
|
| 8210 |
+
* @default false
|
| 8211 |
+
* @dtopt Features
|
| 8212 |
+
*
|
| 8213 |
+
* @example
|
| 8214 |
+
* $(document).ready( function () {
|
| 8215 |
+
* $('#example').dataTable( {
|
| 8216 |
+
* "bProcessing": true
|
| 8217 |
+
* } );
|
| 8218 |
+
* } );
|
| 8219 |
+
*/
|
| 8220 |
+
"bProcessing": false,
|
| 8221 |
+
|
| 8222 |
+
|
| 8223 |
+
/**
|
| 8224 |
+
* Retrieve the DataTables object for the given selector. Note that if the
|
| 8225 |
+
* table has already been initialised, this parameter will cause DataTables
|
| 8226 |
+
* to simply return the object that has already been set up - it will not take
|
| 8227 |
+
* account of any changes you might have made to the initialisation object
|
| 8228 |
+
* passed to DataTables (setting this parameter to true is an acknowledgement
|
| 8229 |
+
* that you understand this). bDestroy can be used to reinitialise a table if
|
| 8230 |
+
* you need.
|
| 8231 |
+
* @type boolean
|
| 8232 |
+
* @default false
|
| 8233 |
+
* @dtopt Options
|
| 8234 |
+
*
|
| 8235 |
+
* @example
|
| 8236 |
+
* $(document).ready( function() {
|
| 8237 |
+
* initTable();
|
| 8238 |
+
* tableActions();
|
| 8239 |
+
* } );
|
| 8240 |
+
*
|
| 8241 |
+
* function initTable ()
|
| 8242 |
+
* {
|
| 8243 |
+
* return $('#example').dataTable( {
|
| 8244 |
+
* "sScrollY": "200px",
|
| 8245 |
+
* "bPaginate": false,
|
| 8246 |
+
* "bRetrieve": true
|
| 8247 |
+
* } );
|
| 8248 |
+
* }
|
| 8249 |
+
*
|
| 8250 |
+
* function tableActions ()
|
| 8251 |
+
* {
|
| 8252 |
+
* var oTable = initTable();
|
| 8253 |
+
* // perform API operations with oTable
|
| 8254 |
+
* }
|
| 8255 |
+
*/
|
| 8256 |
+
"bRetrieve": false,
|
| 8257 |
+
|
| 8258 |
+
|
| 8259 |
+
/**
|
| 8260 |
+
* Indicate if DataTables should be allowed to set the padding / margin
|
| 8261 |
+
* etc for the scrolling header elements or not. Typically you will want
|
| 8262 |
+
* this.
|
| 8263 |
+
* @type boolean
|
| 8264 |
+
* @default true
|
| 8265 |
+
* @dtopt Options
|
| 8266 |
+
*
|
| 8267 |
+
* @example
|
| 8268 |
+
* $(document).ready( function() {
|
| 8269 |
+
* $('#example').dataTable( {
|
| 8270 |
+
* "bScrollAutoCss": false,
|
| 8271 |
+
* "sScrollY": "200px"
|
| 8272 |
+
* } );
|
| 8273 |
+
* } );
|
| 8274 |
+
*/
|
| 8275 |
+
"bScrollAutoCss": true,
|
| 8276 |
+
|
| 8277 |
+
|
| 8278 |
+
/**
|
| 8279 |
+
* When vertical (y) scrolling is enabled, DataTables will force the height of
|
| 8280 |
+
* the table's viewport to the given height at all times (useful for layout).
|
| 8281 |
+
* However, this can look odd when filtering data down to a small data set,
|
| 8282 |
+
* and the footer is left "floating" further down. This parameter (when
|
| 8283 |
+
* enabled) will cause DataTables to collapse the table's viewport down when
|
| 8284 |
+
* the result set will fit within the given Y height.
|
| 8285 |
+
* @type boolean
|
| 8286 |
+
* @default false
|
| 8287 |
+
* @dtopt Options
|
| 8288 |
+
*
|
| 8289 |
+
* @example
|
| 8290 |
+
* $(document).ready( function() {
|
| 8291 |
+
* $('#example').dataTable( {
|
| 8292 |
+
* "sScrollY": "200",
|
| 8293 |
+
* "bScrollCollapse": true
|
| 8294 |
+
* } );
|
| 8295 |
+
* } );
|
| 8296 |
+
*/
|
| 8297 |
+
"bScrollCollapse": false,
|
| 8298 |
+
|
| 8299 |
+
|
| 8300 |
+
/**
|
| 8301 |
+
* Enable infinite scrolling for DataTables (to be used in combination with
|
| 8302 |
+
* sScrollY). Infinite scrolling means that DataTables will continually load
|
| 8303 |
+
* data as a user scrolls through a table, which is very useful for large
|
| 8304 |
+
* dataset. This cannot be used with pagination, which is automatically
|
| 8305 |
+
* disabled. Note - the Scroller extra for DataTables is recommended in
|
| 8306 |
+
* in preference to this option.
|
| 8307 |
+
* @type boolean
|
| 8308 |
+
* @default false
|
| 8309 |
+
* @dtopt Features
|
| 8310 |
+
*
|
| 8311 |
+
* @example
|
| 8312 |
+
* $(document).ready( function() {
|
| 8313 |
+
* $('#example').dataTable( {
|
| 8314 |
+
* "bScrollInfinite": true,
|
| 8315 |
+
* "bScrollCollapse": true,
|
| 8316 |
+
* "sScrollY": "200px"
|
| 8317 |
+
* } );
|
| 8318 |
+
* } );
|
| 8319 |
+
*/
|
| 8320 |
+
"bScrollInfinite": false,
|
| 8321 |
+
|
| 8322 |
+
|
| 8323 |
+
/**
|
| 8324 |
+
* Configure DataTables to use server-side processing. Note that the
|
| 8325 |
+
* sAjaxSource parameter must also be given in order to give DataTables a
|
| 8326 |
+
* source to obtain the required data for each draw.
|
| 8327 |
+
* @type boolean
|
| 8328 |
+
* @default false
|
| 8329 |
+
* @dtopt Features
|
| 8330 |
+
* @dtopt Server-side
|
| 8331 |
+
*
|
| 8332 |
+
* @example
|
| 8333 |
+
* $(document).ready( function () {
|
| 8334 |
+
* $('#example').dataTable( {
|
| 8335 |
+
* "bServerSide": true,
|
| 8336 |
+
* "sAjaxSource": "xhr.php"
|
| 8337 |
+
* } );
|
| 8338 |
+
* } );
|
| 8339 |
+
*/
|
| 8340 |
+
"bServerSide": false,
|
| 8341 |
+
|
| 8342 |
+
|
| 8343 |
+
/**
|
| 8344 |
+
* Enable or disable sorting of columns. Sorting of individual columns can be
|
| 8345 |
+
* disabled by the "bSortable" option for each column.
|
| 8346 |
+
* @type boolean
|
| 8347 |
+
* @default true
|
| 8348 |
+
* @dtopt Features
|
| 8349 |
+
*
|
| 8350 |
+
* @example
|
| 8351 |
+
* $(document).ready( function () {
|
| 8352 |
+
* $('#example').dataTable( {
|
| 8353 |
+
* "bSort": false
|
| 8354 |
+
* } );
|
| 8355 |
+
* } );
|
| 8356 |
+
*/
|
| 8357 |
+
"bSort": true,
|
| 8358 |
+
|
| 8359 |
+
|
| 8360 |
+
/**
|
| 8361 |
+
* Allows control over whether DataTables should use the top (true) unique
|
| 8362 |
+
* cell that is found for a single column, or the bottom (false - default).
|
| 8363 |
+
* This is useful when using complex headers.
|
| 8364 |
+
* @type boolean
|
| 8365 |
+
* @default false
|
| 8366 |
+
* @dtopt Options
|
| 8367 |
+
*
|
| 8368 |
+
* @example
|
| 8369 |
+
* $(document).ready( function() {
|
| 8370 |
+
* $('#example').dataTable( {
|
| 8371 |
+
* "bSortCellsTop": true
|
| 8372 |
+
* } );
|
| 8373 |
+
* } );
|
| 8374 |
+
*/
|
| 8375 |
+
"bSortCellsTop": false,
|
| 8376 |
+
|
| 8377 |
+
|
| 8378 |
+
/**
|
| 8379 |
+
* Enable or disable the addition of the classes 'sorting_1', 'sorting_2' and
|
| 8380 |
+
* 'sorting_3' to the columns which are currently being sorted on. This is
|
| 8381 |
+
* presented as a feature switch as it can increase processing time (while
|
| 8382 |
+
* classes are removed and added) so for large data sets you might want to
|
| 8383 |
+
* turn this off.
|
| 8384 |
+
* @type boolean
|
| 8385 |
+
* @default true
|
| 8386 |
+
* @dtopt Features
|
| 8387 |
+
*
|
| 8388 |
+
* @example
|
| 8389 |
+
* $(document).ready( function () {
|
| 8390 |
+
* $('#example').dataTable( {
|
| 8391 |
+
* "bSortClasses": false
|
| 8392 |
+
* } );
|
| 8393 |
+
* } );
|
| 8394 |
+
*/
|
| 8395 |
+
"bSortClasses": true,
|
| 8396 |
+
|
| 8397 |
+
|
| 8398 |
+
/**
|
| 8399 |
+
* Enable or disable state saving. When enabled a cookie will be used to save
|
| 8400 |
+
* table display information such as pagination information, display length,
|
| 8401 |
+
* filtering and sorting. As such when the end user reloads the page the
|
| 8402 |
+
* display display will match what thy had previously set up.
|
| 8403 |
+
* @type boolean
|
| 8404 |
+
* @default false
|
| 8405 |
+
* @dtopt Features
|
| 8406 |
+
*
|
| 8407 |
+
* @example
|
| 8408 |
+
* $(document).ready( function () {
|
| 8409 |
+
* $('#example').dataTable( {
|
| 8410 |
+
* "bStateSave": true
|
| 8411 |
+
* } );
|
| 8412 |
+
* } );
|
| 8413 |
+
*/
|
| 8414 |
+
"bStateSave": false,
|
| 8415 |
+
|
| 8416 |
+
|
| 8417 |
+
/**
|
| 8418 |
+
* Customise the cookie and / or the parameters being stored when using
|
| 8419 |
+
* DataTables with state saving enabled. This function is called whenever
|
| 8420 |
+
* the cookie is modified, and it expects a fully formed cookie string to be
|
| 8421 |
+
* returned. Note that the data object passed in is a Javascript object which
|
| 8422 |
+
* must be converted to a string (JSON.stringify for example).
|
| 8423 |
+
* @type function
|
| 8424 |
+
* @param {string} sName Name of the cookie defined by DataTables
|
| 8425 |
+
* @param {object} oData Data to be stored in the cookie
|
| 8426 |
+
* @param {string} sExpires Cookie expires string
|
| 8427 |
+
* @param {string} sPath Path of the cookie to set
|
| 8428 |
+
* @returns {string} Cookie formatted string (which should be encoded by
|
| 8429 |
+
* using encodeURIComponent())
|
| 8430 |
+
* @dtopt Callbacks
|
| 8431 |
+
*
|
| 8432 |
+
* @example
|
| 8433 |
+
* $(document).ready( function () {
|
| 8434 |
+
* $('#example').dataTable( {
|
| 8435 |
+
* "fnCookieCallback": function (sName, oData, sExpires, sPath) {
|
| 8436 |
+
* // Customise oData or sName or whatever else here
|
| 8437 |
+
* return sName + "="+JSON.stringify(oData)+"; expires=" + sExpires +"; path=" + sPath;
|
| 8438 |
+
* }
|
| 8439 |
+
* } );
|
| 8440 |
+
* } );
|
| 8441 |
+
*/
|
| 8442 |
+
"fnCookieCallback": null,
|
| 8443 |
+
|
| 8444 |
+
|
| 8445 |
+
/**
|
| 8446 |
+
* This function is called when a TR element is created (and all TD child
|
| 8447 |
+
* elements have been inserted), or registered if using a DOM source, allowing
|
| 8448 |
+
* manipulation of the TR element (adding classes etc).
|
| 8449 |
+
* @type function
|
| 8450 |
+
* @param {node} nRow "TR" element for the current row
|
| 8451 |
+
* @param {array} aData Raw data array for this row
|
| 8452 |
+
* @param {int} iDataIndex The index of this row in aoData
|
| 8453 |
+
* @dtopt Callbacks
|
| 8454 |
+
*
|
| 8455 |
+
* @example
|
| 8456 |
+
* $(document).ready( function() {
|
| 8457 |
+
* $('#example').dataTable( {
|
| 8458 |
+
* "fnCreatedRow": function( nRow, aData, iDataIndex ) {
|
| 8459 |
+
* // Bold the grade for all 'A' grade browsers
|
| 8460 |
+
* if ( aData[4] == "A" )
|
| 8461 |
+
* {
|
| 8462 |
+
* $('td:eq(4)', nRow).html( '<b>A</b>' );
|
| 8463 |
+
* }
|
| 8464 |
+
* }
|
| 8465 |
+
* } );
|
| 8466 |
+
* } );
|
| 8467 |
+
*/
|
| 8468 |
+
"fnCreatedRow": null,
|
| 8469 |
+
|
| 8470 |
+
|
| 8471 |
+
/**
|
| 8472 |
+
* This function is called on every 'draw' event, and allows you to
|
| 8473 |
+
* dynamically modify any aspect you want about the created DOM.
|
| 8474 |
+
* @type function
|
| 8475 |
+
* @param {object} oSettings DataTables settings object
|
| 8476 |
+
* @dtopt Callbacks
|
| 8477 |
+
*
|
| 8478 |
+
* @example
|
| 8479 |
+
* $(document).ready( function() {
|
| 8480 |
+
* $('#example').dataTable( {
|
| 8481 |
+
* "fnDrawCallback": function( oSettings ) {
|
| 8482 |
+
* alert( 'DataTables has redrawn the table' );
|
| 8483 |
+
* }
|
| 8484 |
+
* } );
|
| 8485 |
+
* } );
|
| 8486 |
+
*/
|
| 8487 |
+
"fnDrawCallback": null,
|
| 8488 |
+
|
| 8489 |
+
|
| 8490 |
+
/**
|
| 8491 |
+
* Identical to fnHeaderCallback() but for the table footer this function
|
| 8492 |
+
* allows you to modify the table footer on every 'draw' even.
|
| 8493 |
+
* @type function
|
| 8494 |
+
* @param {node} nFoot "TR" element for the footer
|
| 8495 |
+
* @param {array} aData Full table data (as derived from the original HTML)
|
| 8496 |
+
* @param {int} iStart Index for the current display starting point in the
|
| 8497 |
+
* display array
|
| 8498 |
+
* @param {int} iEnd Index for the current display ending point in the
|
| 8499 |
+
* display array
|
| 8500 |
+
* @param {array int} aiDisplay Index array to translate the visual position
|
| 8501 |
+
* to the full data array
|
| 8502 |
+
* @dtopt Callbacks
|
| 8503 |
+
*
|
| 8504 |
+
* @example
|
| 8505 |
+
* $(document).ready( function() {
|
| 8506 |
+
* $('#example').dataTable( {
|
| 8507 |
+
* "fnFooterCallback": function( nFoot, aData, iStart, iEnd, aiDisplay ) {
|
| 8508 |
+
* nFoot.getElementsByTagName('th')[0].innerHTML = "Starting index is "+iStart;
|
| 8509 |
+
* }
|
| 8510 |
+
* } );
|
| 8511 |
+
* } )
|
| 8512 |
+
*/
|
| 8513 |
+
"fnFooterCallback": null,
|
| 8514 |
+
|
| 8515 |
+
|
| 8516 |
+
/**
|
| 8517 |
+
* When rendering large numbers in the information element for the table
|
| 8518 |
+
* (i.e. "Showing 1 to 10 of 57 entries") DataTables will render large numbers
|
| 8519 |
+
* to have a comma separator for the 'thousands' units (e.g. 1 million is
|
| 8520 |
+
* rendered as "1,000,000") to help readability for the end user. This
|
| 8521 |
+
* function will override the default method DataTables uses.
|
| 8522 |
+
* @type function
|
| 8523 |
+
* @member
|
| 8524 |
+
* @param {int} iIn number to be formatted
|
| 8525 |
+
* @returns {string} formatted string for DataTables to show the number
|
| 8526 |
+
* @dtopt Callbacks
|
| 8527 |
+
*
|
| 8528 |
+
* @example
|
| 8529 |
+
* $(document).ready( function() {
|
| 8530 |
+
* $('#example').dataTable( {
|
| 8531 |
+
* "fnFormatNumber": function ( iIn ) {
|
| 8532 |
+
* if ( iIn < 1000 ) {
|
| 8533 |
+
* return iIn;
|
| 8534 |
+
* } else {
|
| 8535 |
+
* var
|
| 8536 |
+
* s=(iIn+""),
|
| 8537 |
+
* a=s.split(""), out="",
|
| 8538 |
+
* iLen=s.length;
|
| 8539 |
+
*
|
| 8540 |
+
* for ( var i=0 ; i<iLen ; i++ ) {
|
| 8541 |
+
* if ( i%3 === 0 && i !== 0 ) {
|
| 8542 |
+
* out = "'"+out;
|
| 8543 |
+
* }
|
| 8544 |
+
* out = a[iLen-i-1]+out;
|
| 8545 |
+
* }
|
| 8546 |
+
* }
|
| 8547 |
+
* return out;
|
| 8548 |
+
* };
|
| 8549 |
+
* } );
|
| 8550 |
+
* } );
|
| 8551 |
+
*/
|
| 8552 |
+
"fnFormatNumber": function ( iIn ) {
|
| 8553 |
+
if ( iIn < 1000 )
|
| 8554 |
+
{
|
| 8555 |
+
// A small optimisation for what is likely to be the majority of use cases
|
| 8556 |
+
return iIn;
|
| 8557 |
+
}
|
| 8558 |
+
|
| 8559 |
+
var s=(iIn+""), a=s.split(""), out="", iLen=s.length;
|
| 8560 |
+
|
| 8561 |
+
for ( var i=0 ; i<iLen ; i++ )
|
| 8562 |
+
{
|
| 8563 |
+
if ( i%3 === 0 && i !== 0 )
|
| 8564 |
+
{
|
| 8565 |
+
out = this.oLanguage.sInfoThousands+out;
|
| 8566 |
+
}
|
| 8567 |
+
out = a[iLen-i-1]+out;
|
| 8568 |
+
}
|
| 8569 |
+
return out;
|
| 8570 |
+
},
|
| 8571 |
+
|
| 8572 |
+
|
| 8573 |
+
/**
|
| 8574 |
+
* This function is called on every 'draw' event, and allows you to
|
| 8575 |
+
* dynamically modify the header row. This can be used to calculate and
|
| 8576 |
+
* display useful information about the table.
|
| 8577 |
+
* @type function
|
| 8578 |
+
* @param {node} nHead "TR" element for the header
|
| 8579 |
+
* @param {array} aData Full table data (as derived from the original HTML)
|
| 8580 |
+
* @param {int} iStart Index for the current display starting point in the
|
| 8581 |
+
* display array
|
| 8582 |
+
* @param {int} iEnd Index for the current display ending point in the
|
| 8583 |
+
* display array
|
| 8584 |
+
* @param {array int} aiDisplay Index array to translate the visual position
|
| 8585 |
+
* to the full data array
|
| 8586 |
+
* @dtopt Callbacks
|
| 8587 |
+
*
|
| 8588 |
+
* @example
|
| 8589 |
+
* $(document).ready( function() {
|
| 8590 |
+
* $('#example').dataTable( {
|
| 8591 |
+
* "fnHeaderCallback": function( nHead, aData, iStart, iEnd, aiDisplay ) {
|
| 8592 |
+
* nHead.getElementsByTagName('th')[0].innerHTML = "Displaying "+(iEnd-iStart)+" records";
|
| 8593 |
+
* }
|
| 8594 |
+
* } );
|
| 8595 |
+
* } )
|
| 8596 |
+
*/
|
| 8597 |
+
"fnHeaderCallback": null,
|
| 8598 |
+
|
| 8599 |
+
|
| 8600 |
+
/**
|
| 8601 |
+
* The information element can be used to convey information about the current
|
| 8602 |
+
* state of the table. Although the internationalisation options presented by
|
| 8603 |
+
* DataTables are quite capable of dealing with most customisations, there may
|
| 8604 |
+
* be times where you wish to customise the string further. This callback
|
| 8605 |
+
* allows you to do exactly that.
|
| 8606 |
+
* @type function
|
| 8607 |
+
* @param {object} oSettings DataTables settings object
|
| 8608 |
+
* @param {int} iStart Starting position in data for the draw
|
| 8609 |
+
* @param {int} iEnd End position in data for the draw
|
| 8610 |
+
* @param {int} iMax Total number of rows in the table (regardless of
|
| 8611 |
+
* filtering)
|
| 8612 |
+
* @param {int} iTotal Total number of rows in the data set, after filtering
|
| 8613 |
+
* @param {string} sPre The string that DataTables has formatted using it's
|
| 8614 |
+
* own rules
|
| 8615 |
+
* @returns {string} The string to be displayed in the information element.
|
| 8616 |
+
* @dtopt Callbacks
|
| 8617 |
+
*
|
| 8618 |
+
* @example
|
| 8619 |
+
* $('#example').dataTable( {
|
| 8620 |
+
* "fnInfoCallback": function( oSettings, iStart, iEnd, iMax, iTotal, sPre ) {
|
| 8621 |
+
* return iStart +" to "+ iEnd;
|
| 8622 |
+
* }
|
| 8623 |
+
* } );
|
| 8624 |
+
*/
|
| 8625 |
+
"fnInfoCallback": null,
|
| 8626 |
+
|
| 8627 |
+
|
| 8628 |
+
/**
|
| 8629 |
+
* Called when the table has been initialised. Normally DataTables will
|
| 8630 |
+
* initialise sequentially and there will be no need for this function,
|
| 8631 |
+
* however, this does not hold true when using external language information
|
| 8632 |
+
* since that is obtained using an async XHR call.
|
| 8633 |
+
* @type function
|
| 8634 |
+
* @param {object} oSettings DataTables settings object
|
| 8635 |
+
* @param {object} json The JSON object request from the server - only
|
| 8636 |
+
* present if client-side Ajax sourced data is used
|
| 8637 |
+
* @dtopt Callbacks
|
| 8638 |
+
*
|
| 8639 |
+
* @example
|
| 8640 |
+
* $(document).ready( function() {
|
| 8641 |
+
* $('#example').dataTable( {
|
| 8642 |
+
* "fnInitComplete": function(oSettings, json) {
|
| 8643 |
+
* alert( 'DataTables has finished its initialisation.' );
|
| 8644 |
+
* }
|
| 8645 |
+
* } );
|
| 8646 |
+
* } )
|
| 8647 |
+
*/
|
| 8648 |
+
"fnInitComplete": null,
|
| 8649 |
+
|
| 8650 |
+
|
| 8651 |
+
/**
|
| 8652 |
+
* Called at the very start of each table draw and can be used to cancel the
|
| 8653 |
+
* draw by returning false, any other return (including undefined) results in
|
| 8654 |
+
* the full draw occurring).
|
| 8655 |
+
* @type function
|
| 8656 |
+
* @param {object} oSettings DataTables settings object
|
| 8657 |
+
* @returns {boolean} False will cancel the draw, anything else (including no
|
| 8658 |
+
* return) will allow it to complete.
|
| 8659 |
+
* @dtopt Callbacks
|
| 8660 |
+
*
|
| 8661 |
+
* @example
|
| 8662 |
+
* $(document).ready( function() {
|
| 8663 |
+
* $('#example').dataTable( {
|
| 8664 |
+
* "fnPreDrawCallback": function( oSettings ) {
|
| 8665 |
+
* if ( $('#test').val() == 1 ) {
|
| 8666 |
+
* return false;
|
| 8667 |
+
* }
|
| 8668 |
+
* }
|
| 8669 |
+
* } );
|
| 8670 |
+
* } );
|
| 8671 |
+
*/
|
| 8672 |
+
"fnPreDrawCallback": null,
|
| 8673 |
+
|
| 8674 |
+
|
| 8675 |
+
/**
|
| 8676 |
+
* This function allows you to 'post process' each row after it have been
|
| 8677 |
+
* generated for each table draw, but before it is rendered on screen. This
|
| 8678 |
+
* function might be used for setting the row class name etc.
|
| 8679 |
+
* @type function
|
| 8680 |
+
* @param {node} nRow "TR" element for the current row
|
| 8681 |
+
* @param {array} aData Raw data array for this row
|
| 8682 |
+
* @param {int} iDisplayIndex The display index for the current table draw
|
| 8683 |
+
* @param {int} iDisplayIndexFull The index of the data in the full list of
|
| 8684 |
+
* rows (after filtering)
|
| 8685 |
+
* @dtopt Callbacks
|
| 8686 |
+
*
|
| 8687 |
+
* @example
|
| 8688 |
+
* $(document).ready( function() {
|
| 8689 |
+
* $('#example').dataTable( {
|
| 8690 |
+
* "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
|
| 8691 |
+
* // Bold the grade for all 'A' grade browsers
|
| 8692 |
+
* if ( aData[4] == "A" )
|
| 8693 |
+
* {
|
| 8694 |
+
* $('td:eq(4)', nRow).html( '<b>A</b>' );
|
| 8695 |
+
* }
|
| 8696 |
+
* }
|
| 8697 |
+
* } );
|
| 8698 |
+
* } );
|
| 8699 |
+
*/
|
| 8700 |
+
"fnRowCallback": null,
|
| 8701 |
+
|
| 8702 |
+
|
| 8703 |
+
/**
|
| 8704 |
+
* This parameter allows you to override the default function which obtains
|
| 8705 |
+
* the data from the server ($.getJSON) so something more suitable for your
|
| 8706 |
+
* application. For example you could use POST data, or pull information from
|
| 8707 |
+
* a Gears or AIR database.
|
| 8708 |
+
* @type function
|
| 8709 |
+
* @member
|
| 8710 |
+
* @param {string} sSource HTTP source to obtain the data from (sAjaxSource)
|
| 8711 |
+
* @param {array} aoData A key/value pair object containing the data to send
|
| 8712 |
+
* to the server
|
| 8713 |
+
* @param {function} fnCallback to be called on completion of the data get
|
| 8714 |
+
* process that will draw the data on the page.
|
| 8715 |
+
* @param {object} oSettings DataTables settings object
|
| 8716 |
+
* @dtopt Callbacks
|
| 8717 |
+
* @dtopt Server-side
|
| 8718 |
+
*
|
| 8719 |
+
* @example
|
| 8720 |
+
* // POST data to server
|
| 8721 |
+
* $(document).ready( function() {
|
| 8722 |
+
* $('#example').dataTable( {
|
| 8723 |
+
* "bProcessing": true,
|
| 8724 |
+
* "bServerSide": true,
|
| 8725 |
+
* "sAjaxSource": "xhr.php",
|
| 8726 |
+
* "fnServerData": function ( sSource, aoData, fnCallback, oSettings ) {
|
| 8727 |
+
* oSettings.jqXHR = $.ajax( {
|
| 8728 |
+
* "dataType": 'json',
|
| 8729 |
+
* "type": "POST",
|
| 8730 |
+
* "url": sSource,
|
| 8731 |
+
* "data": aoData,
|
| 8732 |
+
* "success": fnCallback
|
| 8733 |
+
* } );
|
| 8734 |
+
* }
|
| 8735 |
+
* } );
|
| 8736 |
+
* } );
|
| 8737 |
+
*/
|
| 8738 |
+
"fnServerData": function ( sUrl, aoData, fnCallback, oSettings ) {
|
| 8739 |
+
oSettings.jqXHR = $.ajax( {
|
| 8740 |
+
"url": sUrl,
|
| 8741 |
+
"data": aoData,
|
| 8742 |
+
"success": function (json) {
|
| 8743 |
+
if ( json.sError ) {
|
| 8744 |
+
oSettings.oApi._fnLog( oSettings, 0, json.sError );
|
| 8745 |
+
}
|
| 8746 |
+
|
| 8747 |
+
$(oSettings.oInstance).trigger('xhr', [oSettings, json]);
|
| 8748 |
+
fnCallback( json );
|
| 8749 |
+
},
|
| 8750 |
+
"dataType": "json",
|
| 8751 |
+
"cache": false,
|
| 8752 |
+
"type": oSettings.sServerMethod,
|
| 8753 |
+
"error": function (xhr, error, thrown) {
|
| 8754 |
+
if ( error == "parsererror" ) {
|
| 8755 |
+
oSettings.oApi._fnLog( oSettings, 0, "DataTables warning: JSON data from "+
|
| 8756 |
+
"server could not be parsed. This is caused by a JSON formatting error." );
|
| 8757 |
+
}
|
| 8758 |
+
}
|
| 8759 |
+
} );
|
| 8760 |
+
},
|
| 8761 |
+
|
| 8762 |
+
|
| 8763 |
+
/**
|
| 8764 |
+
* It is often useful to send extra data to the server when making an Ajax
|
| 8765 |
+
* request - for example custom filtering information, and this callback
|
| 8766 |
+
* function makes it trivial to send extra information to the server. The
|
| 8767 |
+
* passed in parameter is the data set that has been constructed by
|
| 8768 |
+
* DataTables, and you can add to this or modify it as you require.
|
| 8769 |
+
* @type function
|
| 8770 |
+
* @param {array} aoData Data array (array of objects which are name/value
|
| 8771 |
+
* pairs) that has been constructed by DataTables and will be sent to the
|
| 8772 |
+
* server. In the case of Ajax sourced data with server-side processing
|
| 8773 |
+
* this will be an empty array, for server-side processing there will be a
|
| 8774 |
+
* significant number of parameters!
|
| 8775 |
+
* @returns {undefined} Ensure that you modify the aoData array passed in,
|
| 8776 |
+
* as this is passed by reference.
|
| 8777 |
+
* @dtopt Callbacks
|
| 8778 |
+
* @dtopt Server-side
|
| 8779 |
+
*
|
| 8780 |
+
* @example
|
| 8781 |
+
* $(document).ready( function() {
|
| 8782 |
+
* $('#example').dataTable( {
|
| 8783 |
+
* "bProcessing": true,
|
| 8784 |
+
* "bServerSide": true,
|
| 8785 |
+
* "sAjaxSource": "scripts/server_processing.php",
|
| 8786 |
+
* "fnServerParams": function ( aoData ) {
|
| 8787 |
+
* aoData.push( { "name": "more_data", "value": "my_value" } );
|
| 8788 |
+
* }
|
| 8789 |
+
* } );
|
| 8790 |
+
* } );
|
| 8791 |
+
*/
|
| 8792 |
+
"fnServerParams": null,
|
| 8793 |
+
|
| 8794 |
+
|
| 8795 |
+
/**
|
| 8796 |
+
* Load the table state. With this function you can define from where, and how, the
|
| 8797 |
+
* state of a table is loaded. By default DataTables will load from its state saving
|
| 8798 |
+
* cookie, but you might wish to use local storage (HTML5) or a server-side database.
|
| 8799 |
+
* @type function
|
| 8800 |
+
* @member
|
| 8801 |
+
* @param {object} oSettings DataTables settings object
|
| 8802 |
+
* @return {object} The DataTables state object to be loaded
|
| 8803 |
+
* @dtopt Callbacks
|
| 8804 |
+
*
|
| 8805 |
+
* @example
|
| 8806 |
+
* $(document).ready( function() {
|
| 8807 |
+
* $('#example').dataTable( {
|
| 8808 |
+
* "bStateSave": true,
|
| 8809 |
+
* "fnStateLoad": function (oSettings) {
|
| 8810 |
+
* var o;
|
| 8811 |
+
*
|
| 8812 |
+
* // Send an Ajax request to the server to get the data. Note that
|
| 8813 |
+
* // this is a synchronous request.
|
| 8814 |
+
* $.ajax( {
|
| 8815 |
+
* "url": "/state_load",
|
| 8816 |
+
* "async": false,
|
| 8817 |
+
* "dataType": "json",
|
| 8818 |
+
* "success": function (json) {
|
| 8819 |
+
* o = json;
|
| 8820 |
+
* }
|
| 8821 |
+
* } );
|
| 8822 |
+
*
|
| 8823 |
+
* return o;
|
| 8824 |
+
* }
|
| 8825 |
+
* } );
|
| 8826 |
+
* } );
|
| 8827 |
+
*/
|
| 8828 |
+
"fnStateLoad": function ( oSettings ) {
|
| 8829 |
+
var sData = this.oApi._fnReadCookie( oSettings.sCookiePrefix+oSettings.sInstance );
|
| 8830 |
+
var oData;
|
| 8831 |
+
|
| 8832 |
+
try {
|
| 8833 |
+
oData = (typeof $.parseJSON === 'function') ?
|
| 8834 |
+
$.parseJSON(sData) : eval( '('+sData+')' );
|
| 8835 |
+
} catch (e) {
|
| 8836 |
+
oData = null;
|
| 8837 |
+
}
|
| 8838 |
+
|
| 8839 |
+
return oData;
|
| 8840 |
+
},
|
| 8841 |
+
|
| 8842 |
+
|
| 8843 |
+
/**
|
| 8844 |
+
* Callback which allows modification of the saved state prior to loading that state.
|
| 8845 |
+
* This callback is called when the table is loading state from the stored data, but
|
| 8846 |
+
* prior to the settings object being modified by the saved state. Note that for
|
| 8847 |
+
* plug-in authors, you should use the 'stateLoadParams' event to load parameters for
|
| 8848 |
+
* a plug-in.
|
| 8849 |
+
* @type function
|
| 8850 |
+
* @param {object} oSettings DataTables settings object
|
| 8851 |
+
* @param {object} oData The state object that is to be loaded
|
| 8852 |
+
* @dtopt Callbacks
|
| 8853 |
+
*
|
| 8854 |
+
* @example
|
| 8855 |
+
* // Remove a saved filter, so filtering is never loaded
|
| 8856 |
+
* $(document).ready( function() {
|
| 8857 |
+
* $('#example').dataTable( {
|
| 8858 |
+
* "bStateSave": true,
|
| 8859 |
+
* "fnStateLoadParams": function (oSettings, oData) {
|
| 8860 |
+
* oData.oSearch.sSearch = "";
|
| 8861 |
+
* }
|
| 8862 |
+
* } );
|
| 8863 |
+
* } );
|
| 8864 |
+
*
|
| 8865 |
+
* @example
|
| 8866 |
+
* // Disallow state loading by returning false
|
| 8867 |
+
* $(document).ready( function() {
|
| 8868 |
+
* $('#example').dataTable( {
|
| 8869 |
+
* "bStateSave": true,
|
| 8870 |
+
* "fnStateLoadParams": function (oSettings, oData) {
|
| 8871 |
+
* return false;
|
| 8872 |
+
* }
|
| 8873 |
+
* } );
|
| 8874 |
+
* } );
|
| 8875 |
+
*/
|
| 8876 |
+
"fnStateLoadParams": null,
|
| 8877 |
+
|
| 8878 |
+
|
| 8879 |
+
/**
|
| 8880 |
+
* Callback that is called when the state has been loaded from the state saving method
|
| 8881 |
+
* and the DataTables settings object has been modified as a result of the loaded state.
|
| 8882 |
+
* @type function
|
| 8883 |
+
* @param {object} oSettings DataTables settings object
|
| 8884 |
+
* @param {object} oData The state object that was loaded
|
| 8885 |
+
* @dtopt Callbacks
|
| 8886 |
+
*
|
| 8887 |
+
* @example
|
| 8888 |
+
* // Show an alert with the filtering value that was saved
|
| 8889 |
+
* $(document).ready( function() {
|
| 8890 |
+
* $('#example').dataTable( {
|
| 8891 |
+
* "bStateSave": true,
|
| 8892 |
+
* "fnStateLoaded": function (oSettings, oData) {
|
| 8893 |
+
* alert( 'Saved filter was: '+oData.oSearch.sSearch );
|
| 8894 |
+
* }
|
| 8895 |
+
* } );
|
| 8896 |
+
* } );
|
| 8897 |
+
*/
|
| 8898 |
+
"fnStateLoaded": null,
|
| 8899 |
+
|
| 8900 |
+
|
| 8901 |
+
/**
|
| 8902 |
+
* Save the table state. This function allows you to define where and how the state
|
| 8903 |
+
* information for the table is stored - by default it will use a cookie, but you
|
| 8904 |
+
* might want to use local storage (HTML5) or a server-side database.
|
| 8905 |
+
* @type function
|
| 8906 |
+
* @member
|
| 8907 |
+
* @param {object} oSettings DataTables settings object
|
| 8908 |
+
* @param {object} oData The state object to be saved
|
| 8909 |
+
* @dtopt Callbacks
|
| 8910 |
+
*
|
| 8911 |
+
* @example
|
| 8912 |
+
* $(document).ready( function() {
|
| 8913 |
+
* $('#example').dataTable( {
|
| 8914 |
+
* "bStateSave": true,
|
| 8915 |
+
* "fnStateSave": function (oSettings, oData) {
|
| 8916 |
+
* // Send an Ajax request to the server with the state object
|
| 8917 |
+
* $.ajax( {
|
| 8918 |
+
* "url": "/state_save",
|
| 8919 |
+
* "data": oData,
|
| 8920 |
+
* "dataType": "json",
|
| 8921 |
+
* "method": "POST"
|
| 8922 |
+
* "success": function () {}
|
| 8923 |
+
* } );
|
| 8924 |
+
* }
|
| 8925 |
+
* } );
|
| 8926 |
+
* } );
|
| 8927 |
+
*/
|
| 8928 |
+
"fnStateSave": function ( oSettings, oData ) {
|
| 8929 |
+
this.oApi._fnCreateCookie(
|
| 8930 |
+
oSettings.sCookiePrefix+oSettings.sInstance,
|
| 8931 |
+
this.oApi._fnJsonString(oData),
|
| 8932 |
+
oSettings.iCookieDuration,
|
| 8933 |
+
oSettings.sCookiePrefix,
|
| 8934 |
+
oSettings.fnCookieCallback
|
| 8935 |
+
);
|
| 8936 |
+
},
|
| 8937 |
+
|
| 8938 |
+
|
| 8939 |
+
/**
|
| 8940 |
+
* Callback which allows modification of the state to be saved. Called when the table
|
| 8941 |
+
* has changed state a new state save is required. This method allows modification of
|
| 8942 |
+
* the state saving object prior to actually doing the save, including addition or
|
| 8943 |
+
* other state properties or modification. Note that for plug-in authors, you should
|
| 8944 |
+
* use the 'stateSaveParams' event to save parameters for a plug-in.
|
| 8945 |
+
* @type function
|
| 8946 |
+
* @param {object} oSettings DataTables settings object
|
| 8947 |
+
* @param {object} oData The state object to be saved
|
| 8948 |
+
* @dtopt Callbacks
|
| 8949 |
+
*
|
| 8950 |
+
* @example
|
| 8951 |
+
* // Remove a saved filter, so filtering is never saved
|
| 8952 |
+
* $(document).ready( function() {
|
| 8953 |
+
* $('#example').dataTable( {
|
| 8954 |
+
* "bStateSave": true,
|
| 8955 |
+
* "fnStateSaveParams": function (oSettings, oData) {
|
| 8956 |
+
* oData.oSearch.sSearch = "";
|
| 8957 |
+
* }
|
| 8958 |
+
* } );
|
| 8959 |
+
* } );
|
| 8960 |
+
*/
|
| 8961 |
+
"fnStateSaveParams": null,
|
| 8962 |
+
|
| 8963 |
+
|
| 8964 |
+
/**
|
| 8965 |
+
* Duration of the cookie which is used for storing session information. This
|
| 8966 |
+
* value is given in seconds.
|
| 8967 |
+
* @type int
|
| 8968 |
+
* @default 7200 <i>(2 hours)</i>
|
| 8969 |
+
* @dtopt Options
|
| 8970 |
+
*
|
| 8971 |
+
* @example
|
| 8972 |
+
* $(document).ready( function() {
|
| 8973 |
+
* $('#example').dataTable( {
|
| 8974 |
+
* "iCookieDuration": 60*60*24; // 1 day
|
| 8975 |
+
* } );
|
| 8976 |
+
* } )
|
| 8977 |
+
*/
|
| 8978 |
+
"iCookieDuration": 7200,
|
| 8979 |
+
|
| 8980 |
+
|
| 8981 |
+
/**
|
| 8982 |
+
* When enabled DataTables will not make a request to the server for the first
|
| 8983 |
+
* page draw - rather it will use the data already on the page (no sorting etc
|
| 8984 |
+
* will be applied to it), thus saving on an XHR at load time. iDeferLoading
|
| 8985 |
+
* is used to indicate that deferred loading is required, but it is also used
|
| 8986 |
+
* to tell DataTables how many records there are in the full table (allowing
|
| 8987 |
+
* the information element and pagination to be displayed correctly). In the case
|
| 8988 |
+
* where a filtering is applied to the table on initial load, this can be
|
| 8989 |
+
* indicated by giving the parameter as an array, where the first element is
|
| 8990 |
+
* the number of records available after filtering and the second element is the
|
| 8991 |
+
* number of records without filtering (allowing the table information element
|
| 8992 |
+
* to be shown correctly).
|
| 8993 |
+
* @type int | array
|
| 8994 |
+
* @default null
|
| 8995 |
+
* @dtopt Options
|
| 8996 |
+
*
|
| 8997 |
+
* @example
|
| 8998 |
+
* // 57 records available in the table, no filtering applied
|
| 8999 |
+
* $(document).ready( function() {
|
| 9000 |
+
* $('#example').dataTable( {
|
| 9001 |
+
* "bServerSide": true,
|
| 9002 |
+
* "sAjaxSource": "scripts/server_processing.php",
|
| 9003 |
+
* "iDeferLoading": 57
|
| 9004 |
+
* } );
|
| 9005 |
+
* } );
|
| 9006 |
+
*
|
| 9007 |
+
* @example
|
| 9008 |
+
* // 57 records after filtering, 100 without filtering (an initial filter applied)
|
| 9009 |
+
* $(document).ready( function() {
|
| 9010 |
+
* $('#example').dataTable( {
|
| 9011 |
+
* "bServerSide": true,
|
| 9012 |
+
* "sAjaxSource": "scripts/server_processing.php",
|
| 9013 |
+
* "iDeferLoading": [ 57, 100 ],
|
| 9014 |
+
* "oSearch": {
|
| 9015 |
+
* "sSearch": "my_filter"
|
| 9016 |
+
* }
|
| 9017 |
+
* } );
|
| 9018 |
+
* } );
|
| 9019 |
+
*/
|
| 9020 |
+
"iDeferLoading": null,
|
| 9021 |
+
|
| 9022 |
+
|
| 9023 |
+
/**
|
| 9024 |
+
* Number of rows to display on a single page when using pagination. If
|
| 9025 |
+
* feature enabled (bLengthChange) then the end user will be able to override
|
| 9026 |
+
* this to a custom setting using a pop-up menu.
|
| 9027 |
+
* @type int
|
| 9028 |
+
* @default 10
|
| 9029 |
+
* @dtopt Options
|
| 9030 |
+
*
|
| 9031 |
+
* @example
|
| 9032 |
+
* $(document).ready( function() {
|
| 9033 |
+
* $('#example').dataTable( {
|
| 9034 |
+
* "iDisplayLength": 50
|
| 9035 |
+
* } );
|
| 9036 |
+
* } )
|
| 9037 |
+
*/
|
| 9038 |
+
"iDisplayLength": 10,
|
| 9039 |
+
|
| 9040 |
+
|
| 9041 |
+
/**
|
| 9042 |
+
* Define the starting point for data display when using DataTables with
|
| 9043 |
+
* pagination. Note that this parameter is the number of records, rather than
|
| 9044 |
+
* the page number, so if you have 10 records per page and want to start on
|
| 9045 |
+
* the third page, it should be "20".
|
| 9046 |
+
* @type int
|
| 9047 |
+
* @default 0
|
| 9048 |
+
* @dtopt Options
|
| 9049 |
+
*
|
| 9050 |
+
* @example
|
| 9051 |
+
* $(document).ready( function() {
|
| 9052 |
+
* $('#example').dataTable( {
|
| 9053 |
+
* "iDisplayStart": 20
|
| 9054 |
+
* } );
|
| 9055 |
+
* } )
|
| 9056 |
+
*/
|
| 9057 |
+
"iDisplayStart": 0,
|
| 9058 |
+
|
| 9059 |
+
|
| 9060 |
+
/**
|
| 9061 |
+
* The scroll gap is the amount of scrolling that is left to go before
|
| 9062 |
+
* DataTables will load the next 'page' of data automatically. You typically
|
| 9063 |
+
* want a gap which is big enough that the scrolling will be smooth for the
|
| 9064 |
+
* user, while not so large that it will load more data than need.
|
| 9065 |
+
* @type int
|
| 9066 |
+
* @default 100
|
| 9067 |
+
* @dtopt Options
|
| 9068 |
+
*
|
| 9069 |
+
* @example
|
| 9070 |
+
* $(document).ready( function() {
|
| 9071 |
+
* $('#example').dataTable( {
|
| 9072 |
+
* "bScrollInfinite": true,
|
| 9073 |
+
* "bScrollCollapse": true,
|
| 9074 |
+
* "sScrollY": "200px",
|
| 9075 |
+
* "iScrollLoadGap": 50
|
| 9076 |
+
* } );
|
| 9077 |
+
* } );
|
| 9078 |
+
*/
|
| 9079 |
+
"iScrollLoadGap": 100,
|
| 9080 |
+
|
| 9081 |
+
|
| 9082 |
+
/**
|
| 9083 |
+
* By default DataTables allows keyboard navigation of the table (sorting, paging,
|
| 9084 |
+
* and filtering) by adding a tabindex attribute to the required elements. This
|
| 9085 |
+
* allows you to tab through the controls and press the enter key to activate them.
|
| 9086 |
+
* The tabindex is default 0, meaning that the tab follows the flow of the document.
|
| 9087 |
+
* You can overrule this using this parameter if you wish. Use a value of -1 to
|
| 9088 |
+
* disable built-in keyboard navigation.
|
| 9089 |
+
* @type int
|
| 9090 |
+
* @default 0
|
| 9091 |
+
* @dtopt Options
|
| 9092 |
+
*
|
| 9093 |
+
* @example
|
| 9094 |
+
* $(document).ready( function() {
|
| 9095 |
+
* $('#example').dataTable( {
|
| 9096 |
+
* "iTabIndex": 1
|
| 9097 |
+
* } );
|
| 9098 |
+
* } );
|
| 9099 |
+
*/
|
| 9100 |
+
"iTabIndex": 0,
|
| 9101 |
+
|
| 9102 |
+
|
| 9103 |
+
/**
|
| 9104 |
+
* All strings that DataTables uses in the user interface that it creates
|
| 9105 |
+
* are defined in this object, allowing you to modified them individually or
|
| 9106 |
+
* completely replace them all as required.
|
| 9107 |
+
* @namespace
|
| 9108 |
+
*/
|
| 9109 |
+
"oLanguage": {
|
| 9110 |
+
/**
|
| 9111 |
+
* Strings that are used for WAI-ARIA labels and controls only (these are not
|
| 9112 |
+
* actually visible on the page, but will be read by screenreaders, and thus
|
| 9113 |
+
* must be internationalised as well).
|
| 9114 |
+
* @namespace
|
| 9115 |
+
*/
|
| 9116 |
+
"oAria": {
|
| 9117 |
+
/**
|
| 9118 |
+
* ARIA label that is added to the table headers when the column may be
|
| 9119 |
+
* sorted ascending by activing the column (click or return when focused).
|
| 9120 |
+
* Note that the column header is prefixed to this string.
|
| 9121 |
+
* @type string
|
| 9122 |
+
* @default : activate to sort column ascending
|
| 9123 |
+
* @dtopt Language
|
| 9124 |
+
*
|
| 9125 |
+
* @example
|
| 9126 |
+
* $(document).ready( function() {
|
| 9127 |
+
* $('#example').dataTable( {
|
| 9128 |
+
* "oLanguage": {
|
| 9129 |
+
* "oAria": {
|
| 9130 |
+
* "sSortAscending": " - click/return to sort ascending"
|
| 9131 |
+
* }
|
| 9132 |
+
* }
|
| 9133 |
+
* } );
|
| 9134 |
+
* } );
|
| 9135 |
+
*/
|
| 9136 |
+
"sSortAscending": ": activate to sort column ascending",
|
| 9137 |
+
|
| 9138 |
+
/**
|
| 9139 |
+
* ARIA label that is added to the table headers when the column may be
|
| 9140 |
+
* sorted descending by activing the column (click or return when focused).
|
| 9141 |
+
* Note that the column header is prefixed to this string.
|
| 9142 |
+
* @type string
|
| 9143 |
+
* @default : activate to sort column ascending
|
| 9144 |
+
* @dtopt Language
|
| 9145 |
+
*
|
| 9146 |
+
* @example
|
| 9147 |
+
* $(document).ready( function() {
|
| 9148 |
+
* $('#example').dataTable( {
|
| 9149 |
+
* "oLanguage": {
|
| 9150 |
+
* "oAria": {
|
| 9151 |
+
* "sSortDescending": " - click/return to sort descending"
|
| 9152 |
+
* }
|
| 9153 |
+
* }
|
| 9154 |
+
* } );
|
| 9155 |
+
* } );
|
| 9156 |
+
*/
|
| 9157 |
+
"sSortDescending": ": activate to sort column descending"
|
| 9158 |
+
},
|
| 9159 |
+
|
| 9160 |
+
/**
|
| 9161 |
+
* Pagination string used by DataTables for the two built-in pagination
|
| 9162 |
+
* control types ("two_button" and "full_numbers")
|
| 9163 |
+
* @namespace
|
| 9164 |
+
*/
|
| 9165 |
+
"oPaginate": {
|
| 9166 |
+
/**
|
| 9167 |
+
* Text to use when using the 'full_numbers' type of pagination for the
|
| 9168 |
+
* button to take the user to the first page.
|
| 9169 |
+
* @type string
|
| 9170 |
+
* @default First
|
| 9171 |
+
* @dtopt Language
|
| 9172 |
+
*
|
| 9173 |
+
* @example
|
| 9174 |
+
* $(document).ready( function() {
|
| 9175 |
+
* $('#example').dataTable( {
|
| 9176 |
+
* "oLanguage": {
|
| 9177 |
+
* "oPaginate": {
|
| 9178 |
+
* "sFirst": "First page"
|
| 9179 |
+
* }
|
| 9180 |
+
* }
|
| 9181 |
+
* } );
|
| 9182 |
+
* } );
|
| 9183 |
+
*/
|
| 9184 |
+
"sFirst": "First",
|
| 9185 |
+
|
| 9186 |
+
|
| 9187 |
+
/**
|
| 9188 |
+
* Text to use when using the 'full_numbers' type of pagination for the
|
| 9189 |
+
* button to take the user to the last page.
|
| 9190 |
+
* @type string
|
| 9191 |
+
* @default Last
|
| 9192 |
+
* @dtopt Language
|
| 9193 |
+
*
|
| 9194 |
+
* @example
|
| 9195 |
+
* $(document).ready( function() {
|
| 9196 |
+
* $('#example').dataTable( {
|
| 9197 |
+
* "oLanguage": {
|
| 9198 |
+
* "oPaginate": {
|
| 9199 |
+
* "sLast": "Last page"
|
| 9200 |
+
* }
|
| 9201 |
+
* }
|
| 9202 |
+
* } );
|
| 9203 |
+
* } );
|
| 9204 |
+
*/
|
| 9205 |
+
"sLast": "Last",
|
| 9206 |
+
|
| 9207 |
+
|
| 9208 |
+
/**
|
| 9209 |
+
* Text to use for the 'next' pagination button (to take the user to the
|
| 9210 |
+
* next page).
|
| 9211 |
+
* @type string
|
| 9212 |
+
* @default Next
|
| 9213 |
+
* @dtopt Language
|
| 9214 |
+
*
|
| 9215 |
+
* @example
|
| 9216 |
+
* $(document).ready( function() {
|
| 9217 |
+
* $('#example').dataTable( {
|
| 9218 |
+
* "oLanguage": {
|
| 9219 |
+
* "oPaginate": {
|
| 9220 |
+
* "sNext": "Next page"
|
| 9221 |
+
* }
|
| 9222 |
+
* }
|
| 9223 |
+
* } );
|
| 9224 |
+
* } );
|
| 9225 |
+
*/
|
| 9226 |
+
"sNext": "Next",
|
| 9227 |
+
|
| 9228 |
+
|
| 9229 |
+
/**
|
| 9230 |
+
* Text to use for the 'previous' pagination button (to take the user to
|
| 9231 |
+
* the previous page).
|
| 9232 |
+
* @type string
|
| 9233 |
+
* @default Previous
|
| 9234 |
+
* @dtopt Language
|
| 9235 |
+
*
|
| 9236 |
+
* @example
|
| 9237 |
+
* $(document).ready( function() {
|
| 9238 |
+
* $('#example').dataTable( {
|
| 9239 |
+
* "oLanguage": {
|
| 9240 |
+
* "oPaginate": {
|
| 9241 |
+
* "sPrevious": "Previous page"
|
| 9242 |
+
* }
|
| 9243 |
+
* }
|
| 9244 |
+
* } );
|
| 9245 |
+
* } );
|
| 9246 |
+
*/
|
| 9247 |
+
"sPrevious": "Previous"
|
| 9248 |
+
},
|
| 9249 |
+
|
| 9250 |
+
/**
|
| 9251 |
+
* This string is shown in preference to sZeroRecords when the table is
|
| 9252 |
+
* empty of data (regardless of filtering). Note that this is an optional
|
| 9253 |
+
* parameter - if it is not given, the value of sZeroRecords will be used
|
| 9254 |
+
* instead (either the default or given value).
|
| 9255 |
+
* @type string
|
| 9256 |
+
* @default No data available in table
|
| 9257 |
+
* @dtopt Language
|
| 9258 |
+
*
|
| 9259 |
+
* @example
|
| 9260 |
+
* $(document).ready( function() {
|
| 9261 |
+
* $('#example').dataTable( {
|
| 9262 |
+
* "oLanguage": {
|
| 9263 |
+
* "sEmptyTable": "No data available in table"
|
| 9264 |
+
* }
|
| 9265 |
+
* } );
|
| 9266 |
+
* } );
|
| 9267 |
+
*/
|
| 9268 |
+
"sEmptyTable": "No data available in table",
|
| 9269 |
+
|
| 9270 |
+
|
| 9271 |
+
/**
|
| 9272 |
+
* This string gives information to the end user about the information that
|
| 9273 |
+
* is current on display on the page. The _START_, _END_ and _TOTAL_
|
| 9274 |
+
* variables are all dynamically replaced as the table display updates, and
|
| 9275 |
+
* can be freely moved or removed as the language requirements change.
|
| 9276 |
+
* @type string
|
| 9277 |
+
* @default Showing _START_ to _END_ of _TOTAL_ entries
|
| 9278 |
+
* @dtopt Language
|
| 9279 |
+
*
|
| 9280 |
+
* @example
|
| 9281 |
+
* $(document).ready( function() {
|
| 9282 |
+
* $('#example').dataTable( {
|
| 9283 |
+
* "oLanguage": {
|
| 9284 |
+
* "sInfo": "Got a total of _TOTAL_ entries to show (_START_ to _END_)"
|
| 9285 |
+
* }
|
| 9286 |
+
* } );
|
| 9287 |
+
* } );
|
| 9288 |
+
*/
|
| 9289 |
+
"sInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
|
| 9290 |
+
|
| 9291 |
+
|
| 9292 |
+
/**
|
| 9293 |
+
* Display information string for when the table is empty. Typically the
|
| 9294 |
+
* format of this string should match sInfo.
|
| 9295 |
+
* @type string
|
| 9296 |
+
* @default Showing 0 to 0 of 0 entries
|
| 9297 |
+
* @dtopt Language
|
| 9298 |
+
*
|
| 9299 |
+
* @example
|
| 9300 |
+
* $(document).ready( function() {
|
| 9301 |
+
* $('#example').dataTable( {
|
| 9302 |
+
* "oLanguage": {
|
| 9303 |
+
* "sInfoEmpty": "No entries to show"
|
| 9304 |
+
* }
|
| 9305 |
+
* } );
|
| 9306 |
+
* } );
|
| 9307 |
+
*/
|
| 9308 |
+
"sInfoEmpty": "Showing 0 to 0 of 0 subscribers",
|
| 9309 |
+
|
| 9310 |
+
|
| 9311 |
+
/**
|
| 9312 |
+
* When a user filters the information in a table, this string is appended
|
| 9313 |
+
* to the information (sInfo) to give an idea of how strong the filtering
|
| 9314 |
+
* is. The variable _MAX_ is dynamically updated.
|
| 9315 |
+
* @type string
|
| 9316 |
+
* @default (filtered from _MAX_ total entries)
|
| 9317 |
+
* @dtopt Language
|
| 9318 |
+
*
|
| 9319 |
+
* @example
|
| 9320 |
+
* $(document).ready( function() {
|
| 9321 |
+
* $('#example').dataTable( {
|
| 9322 |
+
* "oLanguage": {
|
| 9323 |
+
* "sInfoFiltered": " - filtering from _MAX_ records"
|
| 9324 |
+
* }
|
| 9325 |
+
* } );
|
| 9326 |
+
* } );
|
| 9327 |
+
*/
|
| 9328 |
+
"sInfoFiltered": "(filtered from _MAX_ total subscribers)",
|
| 9329 |
+
|
| 9330 |
+
|
| 9331 |
+
/**
|
| 9332 |
+
* If can be useful to append extra information to the info string at times,
|
| 9333 |
+
* and this variable does exactly that. This information will be appended to
|
| 9334 |
+
* the sInfo (sInfoEmpty and sInfoFiltered in whatever combination they are
|
| 9335 |
+
* being used) at all times.
|
| 9336 |
+
* @type string
|
| 9337 |
+
* @default <i>Empty string</i>
|
| 9338 |
+
* @dtopt Language
|
| 9339 |
+
*
|
| 9340 |
+
* @example
|
| 9341 |
+
* $(document).ready( function() {
|
| 9342 |
+
* $('#example').dataTable( {
|
| 9343 |
+
* "oLanguage": {
|
| 9344 |
+
* "sInfoPostFix": "All records shown are derived from real information."
|
| 9345 |
+
* }
|
| 9346 |
+
* } );
|
| 9347 |
+
* } );
|
| 9348 |
+
*/
|
| 9349 |
+
"sInfoPostFix": "",
|
| 9350 |
+
|
| 9351 |
+
|
| 9352 |
+
/**
|
| 9353 |
+
* DataTables has a build in number formatter (fnFormatNumber) which is used
|
| 9354 |
+
* to format large numbers that are used in the table information. By
|
| 9355 |
+
* default a comma is used, but this can be trivially changed to any
|
| 9356 |
+
* character you wish with this parameter.
|
| 9357 |
+
* @type string
|
| 9358 |
+
* @default ,
|
| 9359 |
+
* @dtopt Language
|
| 9360 |
+
*
|
| 9361 |
+
* @example
|
| 9362 |
+
* $(document).ready( function() {
|
| 9363 |
+
* $('#example').dataTable( {
|
| 9364 |
+
* "oLanguage": {
|
| 9365 |
+
* "sInfoThousands": "'"
|
| 9366 |
+
* }
|
| 9367 |
+
* } );
|
| 9368 |
+
* } );
|
| 9369 |
+
*/
|
| 9370 |
+
"sInfoThousands": ",",
|
| 9371 |
+
|
| 9372 |
+
|
| 9373 |
+
/**
|
| 9374 |
+
* Detail the action that will be taken when the drop down menu for the
|
| 9375 |
+
* pagination length option is changed. The '_MENU_' variable is replaced
|
| 9376 |
+
* with a default select list of 10, 25, 50 and 100, and can be replaced
|
| 9377 |
+
* with a custom select box if required.
|
| 9378 |
+
* @type string
|
| 9379 |
+
* @default Show _MENU_ entries
|
| 9380 |
+
* @dtopt Language
|
| 9381 |
+
*
|
| 9382 |
+
* @example
|
| 9383 |
+
* // Language change only
|
| 9384 |
+
* $(document).ready( function() {
|
| 9385 |
+
* $('#example').dataTable( {
|
| 9386 |
+
* "oLanguage": {
|
| 9387 |
+
* "sLengthMenu": "Display _MENU_ records"
|
| 9388 |
+
* }
|
| 9389 |
+
* } );
|
| 9390 |
+
* } );
|
| 9391 |
+
*
|
| 9392 |
+
* @example
|
| 9393 |
+
* // Language and options change
|
| 9394 |
+
* $(document).ready( function() {
|
| 9395 |
+
* $('#example').dataTable( {
|
| 9396 |
+
* "oLanguage": {
|
| 9397 |
+
* "sLengthMenu": 'Display <select>'+
|
| 9398 |
+
* '<option value="10">10</option>'+
|
| 9399 |
+
* '<option value="20">20</option>'+
|
| 9400 |
+
* '<option value="30">30</option>'+
|
| 9401 |
+
* '<option value="40">40</option>'+
|
| 9402 |
+
* '<option value="50">50</option>'+
|
| 9403 |
+
* '<option value="-1">All</option>'+
|
| 9404 |
+
* '</select> records'
|
| 9405 |
+
* }
|
| 9406 |
+
* } );
|
| 9407 |
+
* } );
|
| 9408 |
+
*/
|
| 9409 |
+
"sLengthMenu": "Show _MENU_ entries",
|
| 9410 |
+
|
| 9411 |
+
|
| 9412 |
+
/**
|
| 9413 |
+
* When using Ajax sourced data and during the first draw when DataTables is
|
| 9414 |
+
* gathering the data, this message is shown in an empty row in the table to
|
| 9415 |
+
* indicate to the end user the the data is being loaded. Note that this
|
| 9416 |
+
* parameter is not used when loading data by server-side processing, just
|
| 9417 |
+
* Ajax sourced data with client-side processing.
|
| 9418 |
+
* @type string
|
| 9419 |
+
* @default Loading...
|
| 9420 |
+
* @dtopt Language
|
| 9421 |
+
*
|
| 9422 |
+
* @example
|
| 9423 |
+
* $(document).ready( function() {
|
| 9424 |
+
* $('#example').dataTable( {
|
| 9425 |
+
* "oLanguage": {
|
| 9426 |
+
* "sLoadingRecords": "Please wait - loading..."
|
| 9427 |
+
* }
|
| 9428 |
+
* } );
|
| 9429 |
+
* } );
|
| 9430 |
+
*/
|
| 9431 |
+
"sLoadingRecords": "Loading...",
|
| 9432 |
+
|
| 9433 |
+
|
| 9434 |
+
/**
|
| 9435 |
+
* Text which is displayed when the table is processing a user action
|
| 9436 |
+
* (usually a sort command or similar).
|
| 9437 |
+
* @type string
|
| 9438 |
+
* @default Processing...
|
| 9439 |
+
* @dtopt Language
|
| 9440 |
+
*
|
| 9441 |
+
* @example
|
| 9442 |
+
* $(document).ready( function() {
|
| 9443 |
+
* $('#example').dataTable( {
|
| 9444 |
+
* "oLanguage": {
|
| 9445 |
+
* "sProcessing": "DataTables is currently busy"
|
| 9446 |
+
* }
|
| 9447 |
+
* } );
|
| 9448 |
+
* } );
|
| 9449 |
+
*/
|
| 9450 |
+
"sProcessing": "Processing...",
|
| 9451 |
+
|
| 9452 |
+
|
| 9453 |
+
/**
|
| 9454 |
+
* Details the actions that will be taken when the user types into the
|
| 9455 |
+
* filtering input text box. The variable "_INPUT_", if used in the string,
|
| 9456 |
+
* is replaced with the HTML text box for the filtering input allowing
|
| 9457 |
+
* control over where it appears in the string. If "_INPUT_" is not given
|
| 9458 |
+
* then the input box is appended to the string automatically.
|
| 9459 |
+
* @type string
|
| 9460 |
+
* @default Search:
|
| 9461 |
+
* @dtopt Language
|
| 9462 |
+
*
|
| 9463 |
+
* @example
|
| 9464 |
+
* // Input text box will be appended at the end automatically
|
| 9465 |
+
* $(document).ready( function() {
|
| 9466 |
+
* $('#example').dataTable( {
|
| 9467 |
+
* "oLanguage": {
|
| 9468 |
+
* "sSearch": "Filter records:"
|
| 9469 |
+
* }
|
| 9470 |
+
* } );
|
| 9471 |
+
* } );
|
| 9472 |
+
*
|
| 9473 |
+
* @example
|
| 9474 |
+
* // Specify where the filter should appear
|
| 9475 |
+
* $(document).ready( function() {
|
| 9476 |
+
* $('#example').dataTable( {
|
| 9477 |
+
* "oLanguage": {
|
| 9478 |
+
* "sSearch": "Apply filter _INPUT_ to table"
|
| 9479 |
+
* }
|
| 9480 |
+
* } );
|
| 9481 |
+
* } );
|
| 9482 |
+
*/
|
| 9483 |
+
"sSearch": "Search:",
|
| 9484 |
+
|
| 9485 |
+
|
| 9486 |
+
/**
|
| 9487 |
+
* All of the language information can be stored in a file on the
|
| 9488 |
+
* server-side, which DataTables will look up if this parameter is passed.
|
| 9489 |
+
* It must store the URL of the language file, which is in a JSON format,
|
| 9490 |
+
* and the object has the same properties as the oLanguage object in the
|
| 9491 |
+
* initialiser object (i.e. the above parameters). Please refer to one of
|
| 9492 |
+
* the example language files to see how this works in action.
|
| 9493 |
+
* @type string
|
| 9494 |
+
* @default <i>Empty string - i.e. disabled</i>
|
| 9495 |
+
* @dtopt Language
|
| 9496 |
+
*
|
| 9497 |
+
* @example
|
| 9498 |
+
* $(document).ready( function() {
|
| 9499 |
+
* $('#example').dataTable( {
|
| 9500 |
+
* "oLanguage": {
|
| 9501 |
+
* "sUrl": "http://www.sprymedia.co.uk/dataTables/lang.txt"
|
| 9502 |
+
* }
|
| 9503 |
+
* } );
|
| 9504 |
+
* } );
|
| 9505 |
+
*/
|
| 9506 |
+
"sUrl": "",
|
| 9507 |
+
|
| 9508 |
+
|
| 9509 |
+
/**
|
| 9510 |
+
* Text shown inside the table records when the is no information to be
|
| 9511 |
+
* displayed after filtering. sEmptyTable is shown when there is simply no
|
| 9512 |
+
* information in the table at all (regardless of filtering).
|
| 9513 |
+
* @type string
|
| 9514 |
+
* @default No matching records found
|
| 9515 |
+
* @dtopt Language
|
| 9516 |
+
*
|
| 9517 |
+
* @example
|
| 9518 |
+
* $(document).ready( function() {
|
| 9519 |
+
* $('#example').dataTable( {
|
| 9520 |
+
* "oLanguage": {
|
| 9521 |
+
* "sZeroRecords": "No records to display"
|
| 9522 |
+
* }
|
| 9523 |
+
* } );
|
| 9524 |
+
* } );
|
| 9525 |
+
*/
|
| 9526 |
+
"sZeroRecords": "No matching subscribers found"
|
| 9527 |
+
},
|
| 9528 |
+
|
| 9529 |
+
|
| 9530 |
+
/**
|
| 9531 |
+
* This parameter allows you to have define the global filtering state at
|
| 9532 |
+
* initialisation time. As an object the "sSearch" parameter must be
|
| 9533 |
+
* defined, but all other parameters are optional. When "bRegex" is true,
|
| 9534 |
+
* the search string will be treated as a regular expression, when false
|
| 9535 |
+
* (default) it will be treated as a straight string. When "bSmart"
|
| 9536 |
+
* DataTables will use it's smart filtering methods (to word match at
|
| 9537 |
+
* any point in the data), when false this will not be done.
|
| 9538 |
+
* @namespace
|
| 9539 |
+
* @extends DataTable.models.oSearch
|
| 9540 |
+
* @dtopt Options
|
| 9541 |
+
*
|
| 9542 |
+
* @example
|
| 9543 |
+
* $(document).ready( function() {
|
| 9544 |
+
* $('#example').dataTable( {
|
| 9545 |
+
* "oSearch": {"sSearch": "Initial search"}
|
| 9546 |
+
* } );
|
| 9547 |
+
* } )
|
| 9548 |
+
*/
|
| 9549 |
+
"oSearch": $.extend( {}, DataTable.models.oSearch ),
|
| 9550 |
+
|
| 9551 |
+
|
| 9552 |
+
/**
|
| 9553 |
+
* By default DataTables will look for the property 'aaData' when obtaining
|
| 9554 |
+
* data from an Ajax source or for server-side processing - this parameter
|
| 9555 |
+
* allows that property to be changed. You can use Javascript dotted object
|
| 9556 |
+
* notation to get a data source for multiple levels of nesting.
|
| 9557 |
+
* @type string
|
| 9558 |
+
* @default aaData
|
| 9559 |
+
* @dtopt Options
|
| 9560 |
+
* @dtopt Server-side
|
| 9561 |
+
*
|
| 9562 |
+
* @example
|
| 9563 |
+
* // Get data from { "data": [...] }
|
| 9564 |
+
* $(document).ready( function() {
|
| 9565 |
+
* var oTable = $('#example').dataTable( {
|
| 9566 |
+
* "sAjaxSource": "sources/data.txt",
|
| 9567 |
+
* "sAjaxDataProp": "data"
|
| 9568 |
+
* } );
|
| 9569 |
+
* } );
|
| 9570 |
+
*
|
| 9571 |
+
* @example
|
| 9572 |
+
* // Get data from { "data": { "inner": [...] } }
|
| 9573 |
+
* $(document).ready( function() {
|
| 9574 |
+
* var oTable = $('#example').dataTable( {
|
| 9575 |
+
* "sAjaxSource": "sources/data.txt",
|
| 9576 |
+
* "sAjaxDataProp": "data.inner"
|
| 9577 |
+
* } );
|
| 9578 |
+
* } );
|
| 9579 |
+
*/
|
| 9580 |
+
"sAjaxDataProp": "aaData",
|
| 9581 |
+
|
| 9582 |
+
|
| 9583 |
+
/**
|
| 9584 |
+
* You can instruct DataTables to load data from an external source using this
|
| 9585 |
+
* parameter (use aData if you want to pass data in you already have). Simply
|
| 9586 |
+
* provide a url a JSON object can be obtained from. This object must include
|
| 9587 |
+
* the parameter 'aaData' which is the data source for the table.
|
| 9588 |
+
* @type string
|
| 9589 |
+
* @default null
|
| 9590 |
+
* @dtopt Options
|
| 9591 |
+
* @dtopt Server-side
|
| 9592 |
+
*
|
| 9593 |
+
* @example
|
| 9594 |
+
* $(document).ready( function() {
|
| 9595 |
+
* $('#example').dataTable( {
|
| 9596 |
+
* "sAjaxSource": "http://www.sprymedia.co.uk/dataTables/json.php"
|
| 9597 |
+
* } );
|
| 9598 |
+
* } )
|
| 9599 |
+
*/
|
| 9600 |
+
"sAjaxSource": null,
|
| 9601 |
+
|
| 9602 |
+
|
| 9603 |
+
/**
|
| 9604 |
+
* This parameter can be used to override the default prefix that DataTables
|
| 9605 |
+
* assigns to a cookie when state saving is enabled.
|
| 9606 |
+
* @type string
|
| 9607 |
+
* @default SpryMedia_DataTables_
|
| 9608 |
+
* @dtopt Options
|
| 9609 |
+
*
|
| 9610 |
+
* @example
|
| 9611 |
+
* $(document).ready( function() {
|
| 9612 |
+
* $('#example').dataTable( {
|
| 9613 |
+
* "sCookiePrefix": "my_datatable_",
|
| 9614 |
+
* } );
|
| 9615 |
+
* } );
|
| 9616 |
+
*/
|
| 9617 |
+
"sCookiePrefix": "SpryMedia_DataTables_",
|
| 9618 |
+
|
| 9619 |
+
|
| 9620 |
+
/**
|
| 9621 |
+
* This initialisation variable allows you to specify exactly where in the
|
| 9622 |
+
* DOM you want DataTables to inject the various controls it adds to the page
|
| 9623 |
+
* (for example you might want the pagination controls at the top of the
|
| 9624 |
+
* table). DIV elements (with or without a custom class) can also be added to
|
| 9625 |
+
* aid styling. The follow syntax is used:
|
| 9626 |
+
* <ul>
|
| 9627 |
+
* <li>The following options are allowed:
|
| 9628 |
+
* <ul>
|
| 9629 |
+
* <li>'l' - Length changing</li
|
| 9630 |
+
* <li>'f' - Filtering input</li>
|
| 9631 |
+
* <li>'t' - The table!</li>
|
| 9632 |
+
* <li>'i' - Information</li>
|
| 9633 |
+
* <li>'p' - Pagination</li>
|
| 9634 |
+
* <li>'r' - pRocessing</li>
|
| 9635 |
+
* </ul>
|
| 9636 |
+
* </li>
|
| 9637 |
+
* <li>The following constants are allowed:
|
| 9638 |
+
* <ul>
|
| 9639 |
+
* <li>'H' - jQueryUI theme "header" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>
|
| 9640 |
+
* <li>'F' - jQueryUI theme "footer" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>
|
| 9641 |
+
* </ul>
|
| 9642 |
+
* </li>
|
| 9643 |
+
* <li>The following syntax is expected:
|
| 9644 |
+
* <ul>
|
| 9645 |
+
* <li>'<' and '>' - div elements</li>
|
| 9646 |
+
* <li>'<"class" and '>' - div with a class</li>
|
| 9647 |
+
* <li>'<"#id" and '>' - div with an ID</li>
|
| 9648 |
+
* </ul>
|
| 9649 |
+
* </li>
|
| 9650 |
+
* <li>Examples:
|
| 9651 |
+
* <ul>
|
| 9652 |
+
* <li>'<"wrapper"flipt>'</li>
|
| 9653 |
+
* <li>'<lf<t>ip>'</li>
|
| 9654 |
+
* </ul>
|
| 9655 |
+
* </li>
|
| 9656 |
+
* </ul>
|
| 9657 |
+
* @type string
|
| 9658 |
+
* @default lfrtip <i>(when bJQueryUI is false)</i> <b>or</b>
|
| 9659 |
+
* <"H"lfr>t<"F"ip> <i>(when bJQueryUI is true)</i>
|
| 9660 |
+
* @dtopt Options
|
| 9661 |
+
*
|
| 9662 |
+
* @example
|
| 9663 |
+
* $(document).ready( function() {
|
| 9664 |
+
* $('#example').dataTable( {
|
| 9665 |
+
* "sDom": '<"top"i>rt<"bottom"flp><"clear">'
|
| 9666 |
+
* } );
|
| 9667 |
+
* } );
|
| 9668 |
+
*/
|
| 9669 |
+
"sDom": "lfrtip",
|
| 9670 |
+
|
| 9671 |
+
|
| 9672 |
+
/**
|
| 9673 |
+
* DataTables features two different built-in pagination interaction methods
|
| 9674 |
+
* ('two_button' or 'full_numbers') which present different page controls to
|
| 9675 |
+
* the end user. Further methods can be added using the API (see below).
|
| 9676 |
+
* @type string
|
| 9677 |
+
* @default two_button
|
| 9678 |
+
* @dtopt Options
|
| 9679 |
+
*
|
| 9680 |
+
* @example
|
| 9681 |
+
* $(document).ready( function() {
|
| 9682 |
+
* $('#example').dataTable( {
|
| 9683 |
+
* "sPaginationType": "full_numbers"
|
| 9684 |
+
* } );
|
| 9685 |
+
* } )
|
| 9686 |
+
*/
|
| 9687 |
+
"sPaginationType": "two_button",
|
| 9688 |
+
|
| 9689 |
+
|
| 9690 |
+
/**
|
| 9691 |
+
* Enable horizontal scrolling. When a table is too wide to fit into a certain
|
| 9692 |
+
* layout, or you have a large number of columns in the table, you can enable
|
| 9693 |
+
* x-scrolling to show the table in a viewport, which can be scrolled. This
|
| 9694 |
+
* property can be any CSS unit, or a number (in which case it will be treated
|
| 9695 |
+
* as a pixel measurement).
|
| 9696 |
+
* @type string
|
| 9697 |
+
* @default <i>blank string - i.e. disabled</i>
|
| 9698 |
+
* @dtopt Features
|
| 9699 |
+
*
|
| 9700 |
+
* @example
|
| 9701 |
+
* $(document).ready( function() {
|
| 9702 |
+
* $('#example').dataTable( {
|
| 9703 |
+
* "sScrollX": "100%",
|
| 9704 |
+
* "bScrollCollapse": true
|
| 9705 |
+
* } );
|
| 9706 |
+
* } );
|
| 9707 |
+
*/
|
| 9708 |
+
"sScrollX": "",
|
| 9709 |
+
|
| 9710 |
+
|
| 9711 |
+
/**
|
| 9712 |
+
* This property can be used to force a DataTable to use more width than it
|
| 9713 |
+
* might otherwise do when x-scrolling is enabled. For example if you have a
|
| 9714 |
+
* table which requires to be well spaced, this parameter is useful for
|
| 9715 |
+
* "over-sizing" the table, and thus forcing scrolling. This property can by
|
| 9716 |
+
* any CSS unit, or a number (in which case it will be treated as a pixel
|
| 9717 |
+
* measurement).
|
| 9718 |
+
* @type string
|
| 9719 |
+
* @default <i>blank string - i.e. disabled</i>
|
| 9720 |
+
* @dtopt Options
|
| 9721 |
+
*
|
| 9722 |
+
* @example
|
| 9723 |
+
* $(document).ready( function() {
|
| 9724 |
+
* $('#example').dataTable( {
|
| 9725 |
+
* "sScrollX": "100%",
|
| 9726 |
+
* "sScrollXInner": "110%"
|
| 9727 |
+
* } );
|
| 9728 |
+
* } );
|
| 9729 |
+
*/
|
| 9730 |
+
"sScrollXInner": "",
|
| 9731 |
+
|
| 9732 |
+
|
| 9733 |
+
/**
|
| 9734 |
+
* Enable vertical scrolling. Vertical scrolling will constrain the DataTable
|
| 9735 |
+
* to the given height, and enable scrolling for any data which overflows the
|
| 9736 |
+
* current viewport. This can be used as an alternative to paging to display
|
| 9737 |
+
* a lot of data in a small area (although paging and scrolling can both be
|
| 9738 |
+
* enabled at the same time). This property can be any CSS unit, or a number
|
| 9739 |
+
* (in which case it will be treated as a pixel measurement).
|
| 9740 |
+
* @type string
|
| 9741 |
+
* @default <i>blank string - i.e. disabled</i>
|
| 9742 |
+
* @dtopt Features
|
| 9743 |
+
*
|
| 9744 |
+
* @example
|
| 9745 |
+
* $(document).ready( function() {
|
| 9746 |
+
* $('#example').dataTable( {
|
| 9747 |
+
* "sScrollY": "200px",
|
| 9748 |
+
* "bPaginate": false
|
| 9749 |
+
* } );
|
| 9750 |
+
* } );
|
| 9751 |
+
*/
|
| 9752 |
+
"sScrollY": "",
|
| 9753 |
+
|
| 9754 |
+
|
| 9755 |
+
/**
|
| 9756 |
+
* Set the HTTP method that is used to make the Ajax call for server-side
|
| 9757 |
+
* processing or Ajax sourced data.
|
| 9758 |
+
* @type string
|
| 9759 |
+
* @default GET
|
| 9760 |
+
* @dtopt Options
|
| 9761 |
+
* @dtopt Server-side
|
| 9762 |
+
*
|
| 9763 |
+
* @example
|
| 9764 |
+
* $(document).ready( function() {
|
| 9765 |
+
* $('#example').dataTable( {
|
| 9766 |
+
* "bServerSide": true,
|
| 9767 |
+
* "sAjaxSource": "scripts/post.php",
|
| 9768 |
+
* "sServerMethod": "POST"
|
| 9769 |
+
* } );
|
| 9770 |
+
* } );
|
| 9771 |
+
*/
|
| 9772 |
+
"sServerMethod": "GET"
|
| 9773 |
+
};
|
| 9774 |
+
|
| 9775 |
+
|
| 9776 |
+
|
| 9777 |
+
/**
|
| 9778 |
+
* Column options that can be given to DataTables at initialisation time.
|
| 9779 |
+
* @namespace
|
| 9780 |
+
*/
|
| 9781 |
+
DataTable.defaults.columns = {
|
| 9782 |
+
/**
|
| 9783 |
+
* Allows a column's sorting to take multiple columns into account when
|
| 9784 |
+
* doing a sort. For example first name / last name columns make sense to
|
| 9785 |
+
* do a multi-column sort over the two columns.
|
| 9786 |
+
* @type array
|
| 9787 |
+
* @default null <i>Takes the value of the column index automatically</i>
|
| 9788 |
+
* @dtopt Columns
|
| 9789 |
+
*
|
| 9790 |
+
* @example
|
| 9791 |
+
* // Using aoColumnDefs
|
| 9792 |
+
* $(document).ready( function() {
|
| 9793 |
+
* $('#example').dataTable( {
|
| 9794 |
+
* "aoColumnDefs": [
|
| 9795 |
+
* { "aDataSort": [ 0, 1 ], "aTargets": [ 0 ] },
|
| 9796 |
+
* { "aDataSort": [ 1, 0 ], "aTargets": [ 1 ] },
|
| 9797 |
+
* { "aDataSort": [ 2, 3, 4 ], "aTargets": [ 2 ] }
|
| 9798 |
+
* ]
|
| 9799 |
+
* } );
|
| 9800 |
+
* } );
|
| 9801 |
+
*
|
| 9802 |
+
* @example
|
| 9803 |
+
* // Using aoColumns
|
| 9804 |
+
* $(document).ready( function() {
|
| 9805 |
+
* $('#example').dataTable( {
|
| 9806 |
+
* "aoColumns": [
|
| 9807 |
+
* { "aDataSort": [ 0, 1 ] },
|
| 9808 |
+
* { "aDataSort": [ 1, 0 ] },
|
| 9809 |
+
* { "aDataSort": [ 2, 3, 4 ] },
|
| 9810 |
+
* null,
|
| 9811 |
+
* null
|
| 9812 |
+
* ]
|
| 9813 |
+
* } );
|
| 9814 |
+
* } );
|
| 9815 |
+
*/
|
| 9816 |
+
"aDataSort": null,
|
| 9817 |
+
|
| 9818 |
+
|
| 9819 |
+
/**
|
| 9820 |
+
* You can control the default sorting direction, and even alter the behaviour
|
| 9821 |
+
* of the sort handler (i.e. only allow ascending sorting etc) using this
|
| 9822 |
+
* parameter.
|
| 9823 |
+
* @type array
|
| 9824 |
+
* @default [ 'asc', 'desc' ]
|
| 9825 |
+
* @dtopt Columns
|
| 9826 |
+
*
|
| 9827 |
+
* @example
|
| 9828 |
+
* // Using aoColumnDefs
|
| 9829 |
+
* $(document).ready( function() {
|
| 9830 |
+
* $('#example').dataTable( {
|
| 9831 |
+
* "aoColumnDefs": [
|
| 9832 |
+
* { "asSorting": [ "asc" ], "aTargets": [ 1 ] },
|
| 9833 |
+
* { "asSorting": [ "desc", "asc", "asc" ], "aTargets": [ 2 ] },
|
| 9834 |
+
* { "asSorting": [ "desc" ], "aTargets": [ 3 ] }
|
| 9835 |
+
* ]
|
| 9836 |
+
* } );
|
| 9837 |
+
* } );
|
| 9838 |
+
*
|
| 9839 |
+
* @example
|
| 9840 |
+
* // Using aoColumns
|
| 9841 |
+
* $(document).ready( function() {
|
| 9842 |
+
* $('#example').dataTable( {
|
| 9843 |
+
* "aoColumns": [
|
| 9844 |
+
* null,
|
| 9845 |
+
* { "asSorting": [ "asc" ] },
|
| 9846 |
+
* { "asSorting": [ "desc", "asc", "asc" ] },
|
| 9847 |
+
* { "asSorting": [ "desc" ] },
|
| 9848 |
+
* null
|
| 9849 |
+
* ]
|
| 9850 |
+
* } );
|
| 9851 |
+
* } );
|
| 9852 |
+
*/
|
| 9853 |
+
"asSorting": [ 'asc', 'desc' ],
|
| 9854 |
+
|
| 9855 |
+
|
| 9856 |
+
/**
|
| 9857 |
+
* Enable or disable filtering on the data in this column.
|
| 9858 |
+
* @type boolean
|
| 9859 |
+
* @default true
|
| 9860 |
+
* @dtopt Columns
|
| 9861 |
+
*
|
| 9862 |
+
* @example
|
| 9863 |
+
* // Using aoColumnDefs
|
| 9864 |
+
* $(document).ready( function() {
|
| 9865 |
+
* $('#example').dataTable( {
|
| 9866 |
+
* "aoColumnDefs": [
|
| 9867 |
+
* { "bSearchable": false, "aTargets": [ 0 ] }
|
| 9868 |
+
* ] } );
|
| 9869 |
+
* } );
|
| 9870 |
+
*
|
| 9871 |
+
* @example
|
| 9872 |
+
* // Using aoColumns
|
| 9873 |
+
* $(document).ready( function() {
|
| 9874 |
+
* $('#example').dataTable( {
|
| 9875 |
+
* "aoColumns": [
|
| 9876 |
+
* { "bSearchable": false },
|
| 9877 |
+
* null,
|
| 9878 |
+
* null,
|
| 9879 |
+
* null,
|
| 9880 |
+
* null
|
| 9881 |
+
* ] } );
|
| 9882 |
+
* } );
|
| 9883 |
+
*/
|
| 9884 |
+
"bSearchable": true,
|
| 9885 |
+
|
| 9886 |
+
|
| 9887 |
+
/**
|
| 9888 |
+
* Enable or disable sorting on this column.
|
| 9889 |
+
* @type boolean
|
| 9890 |
+
* @default true
|
| 9891 |
+
* @dtopt Columns
|
| 9892 |
+
*
|
| 9893 |
+
* @example
|
| 9894 |
+
* // Using aoColumnDefs
|
| 9895 |
+
* $(document).ready( function() {
|
| 9896 |
+
* $('#example').dataTable( {
|
| 9897 |
+
* "aoColumnDefs": [
|
| 9898 |
+
* { "bSortable": false, "aTargets": [ 0 ] }
|
| 9899 |
+
* ] } );
|
| 9900 |
+
* } );
|
| 9901 |
+
*
|
| 9902 |
+
* @example
|
| 9903 |
+
* // Using aoColumns
|
| 9904 |
+
* $(document).ready( function() {
|
| 9905 |
+
* $('#example').dataTable( {
|
| 9906 |
+
* "aoColumns": [
|
| 9907 |
+
* { "bSortable": false },
|
| 9908 |
+
* null,
|
| 9909 |
+
* null,
|
| 9910 |
+
* null,
|
| 9911 |
+
* null
|
| 9912 |
+
* ] } );
|
| 9913 |
+
* } );
|
| 9914 |
+
*/
|
| 9915 |
+
"bSortable": true,
|
| 9916 |
+
|
| 9917 |
+
|
| 9918 |
+
/**
|
| 9919 |
+
* <code>Deprecated</code> When using fnRender() for a column, you may wish
|
| 9920 |
+
* to use the original data (before rendering) for sorting and filtering
|
| 9921 |
+
* (the default is to used the rendered data that the user can see). This
|
| 9922 |
+
* may be useful for dates etc.
|
| 9923 |
+
*
|
| 9924 |
+
* Please note that this option has now been deprecated and will be removed
|
| 9925 |
+
* in the next version of DataTables. Please use mRender / mData rather than
|
| 9926 |
+
* fnRender.
|
| 9927 |
+
* @type boolean
|
| 9928 |
+
* @default true
|
| 9929 |
+
* @dtopt Columns
|
| 9930 |
+
* @deprecated
|
| 9931 |
+
*/
|
| 9932 |
+
"bUseRendered": true,
|
| 9933 |
+
|
| 9934 |
+
|
| 9935 |
+
/**
|
| 9936 |
+
* Enable or disable the display of this column.
|
| 9937 |
+
* @type boolean
|
| 9938 |
+
* @default true
|
| 9939 |
+
* @dtopt Columns
|
| 9940 |
+
*
|
| 9941 |
+
* @example
|
| 9942 |
+
* // Using aoColumnDefs
|
| 9943 |
+
* $(document).ready( function() {
|
| 9944 |
+
* $('#example').dataTable( {
|
| 9945 |
+
* "aoColumnDefs": [
|
| 9946 |
+
* { "bVisible": false, "aTargets": [ 0 ] }
|
| 9947 |
+
* ] } );
|
| 9948 |
+
* } );
|
| 9949 |
+
*
|
| 9950 |
+
* @example
|
| 9951 |
+
* // Using aoColumns
|
| 9952 |
+
* $(document).ready( function() {
|
| 9953 |
+
* $('#example').dataTable( {
|
| 9954 |
+
* "aoColumns": [
|
| 9955 |
+
* { "bVisible": false },
|
| 9956 |
+
* null,
|
| 9957 |
+
* null,
|
| 9958 |
+
* null,
|
| 9959 |
+
* null
|
| 9960 |
+
* ] } );
|
| 9961 |
+
* } );
|
| 9962 |
+
*/
|
| 9963 |
+
"bVisible": true,
|
| 9964 |
+
|
| 9965 |
+
|
| 9966 |
+
/**
|
| 9967 |
+
* Developer definable function that is called whenever a cell is created (Ajax source,
|
| 9968 |
+
* etc) or processed for input (DOM source). This can be used as a compliment to mRender
|
| 9969 |
+
* allowing you to modify the DOM element (add background colour for example) when the
|
| 9970 |
+
* element is available.
|
| 9971 |
+
* @type function
|
| 9972 |
+
* @param {element} nTd The TD node that has been created
|
| 9973 |
+
* @param {*} sData The Data for the cell
|
| 9974 |
+
* @param {array|object} oData The data for the whole row
|
| 9975 |
+
* @param {int} iRow The row index for the aoData data store
|
| 9976 |
+
* @param {int} iCol The column index for aoColumns
|
| 9977 |
+
* @dtopt Columns
|
| 9978 |
+
*
|
| 9979 |
+
* @example
|
| 9980 |
+
* $(document).ready( function() {
|
| 9981 |
+
* $('#example').dataTable( {
|
| 9982 |
+
* "aoColumnDefs": [ {
|
| 9983 |
+
* "aTargets": [3],
|
| 9984 |
+
* "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
|
| 9985 |
+
* if ( sData == "1.7" ) {
|
| 9986 |
+
* $(nTd).css('color', 'blue')
|
| 9987 |
+
* }
|
| 9988 |
+
* }
|
| 9989 |
+
* } ]
|
| 9990 |
+
* });
|
| 9991 |
+
* } );
|
| 9992 |
+
*/
|
| 9993 |
+
"fnCreatedCell": null,
|
| 9994 |
+
|
| 9995 |
+
|
| 9996 |
+
/**
|
| 9997 |
+
* <code>Deprecated</code> Custom display function that will be called for the
|
| 9998 |
+
* display of each cell in this column.
|
| 9999 |
+
*
|
| 10000 |
+
* Please note that this option has now been deprecated and will be removed
|
| 10001 |
+
* in the next version of DataTables. Please use mRender / mData rather than
|
| 10002 |
+
* fnRender.
|
| 10003 |
+
* @type function
|
| 10004 |
+
* @param {object} o Object with the following parameters:
|
| 10005 |
+
* @param {int} o.iDataRow The row in aoData
|
| 10006 |
+
* @param {int} o.iDataColumn The column in question
|
| 10007 |
+
* @param {array} o.aData The data for the row in question
|
| 10008 |
+
* @param {object} o.oSettings The settings object for this DataTables instance
|
| 10009 |
+
* @param {object} o.mDataProp The data property used for this column
|
| 10010 |
+
* @param {*} val The current cell value
|
| 10011 |
+
* @returns {string} The string you which to use in the display
|
| 10012 |
+
* @dtopt Columns
|
| 10013 |
+
* @deprecated
|
| 10014 |
+
*/
|
| 10015 |
+
"fnRender": null,
|
| 10016 |
+
|
| 10017 |
+
|
| 10018 |
+
/**
|
| 10019 |
+
* The column index (starting from 0!) that you wish a sort to be performed
|
| 10020 |
+
* upon when this column is selected for sorting. This can be used for sorting
|
| 10021 |
+
* on hidden columns for example.
|
| 10022 |
+
* @type int
|
| 10023 |
+
* @default -1 <i>Use automatically calculated column index</i>
|
| 10024 |
+
* @dtopt Columns
|
| 10025 |
+
*
|
| 10026 |
+
* @example
|
| 10027 |
+
* // Using aoColumnDefs
|
| 10028 |
+
* $(document).ready( function() {
|
| 10029 |
+
* $('#example').dataTable( {
|
| 10030 |
+
* "aoColumnDefs": [
|
| 10031 |
+
* { "iDataSort": 1, "aTargets": [ 0 ] }
|
| 10032 |
+
* ]
|
| 10033 |
+
* } );
|
| 10034 |
+
* } );
|
| 10035 |
+
*
|
| 10036 |
+
* @example
|
| 10037 |
+
* // Using aoColumns
|
| 10038 |
+
* $(document).ready( function() {
|
| 10039 |
+
* $('#example').dataTable( {
|
| 10040 |
+
* "aoColumns": [
|
| 10041 |
+
* { "iDataSort": 1 },
|
| 10042 |
+
* null,
|
| 10043 |
+
* null,
|
| 10044 |
+
* null,
|
| 10045 |
+
* null
|
| 10046 |
+
* ]
|
| 10047 |
+
* } );
|
| 10048 |
+
* } );
|
| 10049 |
+
*/
|
| 10050 |
+
"iDataSort": -1,
|
| 10051 |
+
|
| 10052 |
+
|
| 10053 |
+
/**
|
| 10054 |
+
* This parameter has been replaced by mData in DataTables to ensure naming
|
| 10055 |
+
* consistency. mDataProp can still be used, as there is backwards compatibility
|
| 10056 |
+
* in DataTables for this option, but it is strongly recommended that you use
|
| 10057 |
+
* mData in preference to mDataProp.
|
| 10058 |
+
* @name DataTable.defaults.columns.mDataProp
|
| 10059 |
+
*/
|
| 10060 |
+
|
| 10061 |
+
|
| 10062 |
+
/**
|
| 10063 |
+
* This property can be used to read data from any JSON data source property,
|
| 10064 |
+
* including deeply nested objects / properties. mData can be given in a
|
| 10065 |
+
* number of different ways which effect its behaviour:
|
| 10066 |
+
* <ul>
|
| 10067 |
+
* <li>integer - treated as an array index for the data source. This is the
|
| 10068 |
+
* default that DataTables uses (incrementally increased for each column).</li>
|
| 10069 |
+
* <li>string - read an object property from the data source. Note that you can
|
| 10070 |
+
* use Javascript dotted notation to read deep properties / arrays from the
|
| 10071 |
+
* data source.</li>
|
| 10072 |
+
* <li>null - the sDefaultContent option will be used for the cell (null
|
| 10073 |
+
* by default, so you will need to specify the default content you want -
|
| 10074 |
+
* typically an empty string). This can be useful on generated columns such
|
| 10075 |
+
* as edit / delete action columns.</li>
|
| 10076 |
+
* <li>function - the function given will be executed whenever DataTables
|
| 10077 |
+
* needs to set or get the data for a cell in the column. The function
|
| 10078 |
+
* takes three parameters:
|
| 10079 |
+
* <ul>
|
| 10080 |
+
* <li>{array|object} The data source for the row</li>
|
| 10081 |
+
* <li>{string} The type call data requested - this will be 'set' when
|
| 10082 |
+
* setting data or 'filter', 'display', 'type', 'sort' or undefined when
|
| 10083 |
+
* gathering data. Note that when <i>undefined</i> is given for the type
|
| 10084 |
+
* DataTables expects to get the raw data for the object back</li>
|
| 10085 |
+
* <li>{*} Data to set when the second parameter is 'set'.</li>
|
| 10086 |
+
* </ul>
|
| 10087 |
+
* The return value from the function is not required when 'set' is the type
|
| 10088 |
+
* of call, but otherwise the return is what will be used for the data
|
| 10089 |
+
* requested.</li>
|
| 10090 |
+
* </ul>
|
| 10091 |
+
*
|
| 10092 |
+
* Note that prior to DataTables 1.9.2 mData was called mDataProp. The name change
|
| 10093 |
+
* reflects the flexibility of this property and is consistent with the naming of
|
| 10094 |
+
* mRender. If 'mDataProp' is given, then it will still be used by DataTables, as
|
| 10095 |
+
* it automatically maps the old name to the new if required.
|
| 10096 |
+
* @type string|int|function|null
|
| 10097 |
+
* @default null <i>Use automatically calculated column index</i>
|
| 10098 |
+
* @dtopt Columns
|
| 10099 |
+
*
|
| 10100 |
+
* @example
|
| 10101 |
+
* // Read table data from objects
|
| 10102 |
+
* $(document).ready( function() {
|
| 10103 |
+
* var oTable = $('#example').dataTable( {
|
| 10104 |
+
* "sAjaxSource": "sources/deep.txt",
|
| 10105 |
+
* "aoColumns": [
|
| 10106 |
+
* { "mData": "engine" },
|
| 10107 |
+
* { "mData": "browser" },
|
| 10108 |
+
* { "mData": "platform.inner" },
|
| 10109 |
+
* { "mData": "platform.details.0" },
|
| 10110 |
+
* { "mData": "platform.details.1" }
|
| 10111 |
+
* ]
|
| 10112 |
+
* } );
|
| 10113 |
+
* } );
|
| 10114 |
+
*
|
| 10115 |
+
* @example
|
| 10116 |
+
* // Using mData as a function to provide different information for
|
| 10117 |
+
* // sorting, filtering and display. In this case, currency (price)
|
| 10118 |
+
* $(document).ready( function() {
|
| 10119 |
+
* var oTable = $('#example').dataTable( {
|
| 10120 |
+
* "aoColumnDefs": [ {
|
| 10121 |
+
* "aTargets": [ 0 ],
|
| 10122 |
+
* "mData": function ( source, type, val ) {
|
| 10123 |
+
* if (type === 'set') {
|
| 10124 |
+
* source.price = val;
|
| 10125 |
+
* // Store the computed dislay and filter values for efficiency
|
| 10126 |
+
* source.price_display = val=="" ? "" : "$"+numberFormat(val);
|
| 10127 |
+
* source.price_filter = val=="" ? "" : "$"+numberFormat(val)+" "+val;
|
| 10128 |
+
* return;
|
| 10129 |
+
* }
|
| 10130 |
+
* else if (type === 'display') {
|
| 10131 |
+
* return source.price_display;
|
| 10132 |
+
* }
|
| 10133 |
+
* else if (type === 'filter') {
|
| 10134 |
+
* return source.price_filter;
|
| 10135 |
+
* }
|
| 10136 |
+
* // 'sort', 'type' and undefined all just use the integer
|
| 10137 |
+
* return source.price;
|
| 10138 |
+
* }
|
| 10139 |
+
* } ]
|
| 10140 |
+
* } );
|
| 10141 |
+
* } );
|
| 10142 |
+
*/
|
| 10143 |
+
"mData": null,
|
| 10144 |
+
|
| 10145 |
+
|
| 10146 |
+
/**
|
| 10147 |
+
* This property is the rendering partner to mData and it is suggested that
|
| 10148 |
+
* when you want to manipulate data for display (including filtering, sorting etc)
|
| 10149 |
+
* but not altering the underlying data for the table, use this property. mData
|
| 10150 |
+
* can actually do everything this property can and more, but this parameter is
|
| 10151 |
+
* easier to use since there is no 'set' option. Like mData is can be given
|
| 10152 |
+
* in a number of different ways to effect its behaviour, with the addition of
|
| 10153 |
+
* supporting array syntax for easy outputting of arrays (including arrays of
|
| 10154 |
+
* objects):
|
| 10155 |
+
* <ul>
|
| 10156 |
+
* <li>integer - treated as an array index for the data source. This is the
|
| 10157 |
+
* default that DataTables uses (incrementally increased for each column).</li>
|
| 10158 |
+
* <li>string - read an object property from the data source. Note that you can
|
| 10159 |
+
* use Javascript dotted notation to read deep properties / arrays from the
|
| 10160 |
+
* data source and also array brackets to indicate that the data reader should
|
| 10161 |
+
* loop over the data source array. When characters are given between the array
|
| 10162 |
+
* brackets, these characters are used to join the data source array together.
|
| 10163 |
+
* For example: "accounts[, ].name" would result in a comma separated list with
|
| 10164 |
+
* the 'name' value from the 'accounts' array of objects.</li>
|
| 10165 |
+
* <li>function - the function given will be executed whenever DataTables
|
| 10166 |
+
* needs to set or get the data for a cell in the column. The function
|
| 10167 |
+
* takes three parameters:
|
| 10168 |
+
* <ul>
|
| 10169 |
+
* <li>{array|object} The data source for the row (based on mData)</li>
|
| 10170 |
+
* <li>{string} The type call data requested - this will be 'filter', 'display',
|
| 10171 |
+
* 'type' or 'sort'.</li>
|
| 10172 |
+
* <li>{array|object} The full data source for the row (not based on mData)</li>
|
| 10173 |
+
* </ul>
|
| 10174 |
+
* The return value from the function is what will be used for the data
|
| 10175 |
+
* requested.</li>
|
| 10176 |
+
* </ul>
|
| 10177 |
+
* @type string|int|function|null
|
| 10178 |
+
* @default null <i>Use mData</i>
|
| 10179 |
+
* @dtopt Columns
|
| 10180 |
+
*
|
| 10181 |
+
* @example
|
| 10182 |
+
* // Create a comma separated list from an array of objects
|
| 10183 |
+
* $(document).ready( function() {
|
| 10184 |
+
* var oTable = $('#example').dataTable( {
|
| 10185 |
+
* "sAjaxSource": "sources/deep.txt",
|
| 10186 |
+
* "aoColumns": [
|
| 10187 |
+
* { "mData": "engine" },
|
| 10188 |
+
* { "mData": "browser" },
|
| 10189 |
+
* {
|
| 10190 |
+
* "mData": "platform",
|
| 10191 |
+
* "mRender": "[, ].name"
|
| 10192 |
+
* }
|
| 10193 |
+
* ]
|
| 10194 |
+
* } );
|
| 10195 |
+
* } );
|
| 10196 |
+
*
|
| 10197 |
+
* @example
|
| 10198 |
+
* // Use as a function to create a link from the data source
|
| 10199 |
+
* $(document).ready( function() {
|
| 10200 |
+
* var oTable = $('#example').dataTable( {
|
| 10201 |
+
* "aoColumnDefs": [
|
| 10202 |
+
* {
|
| 10203 |
+
* "aTargets": [ 0 ],
|
| 10204 |
+
* "mData": "download_link",
|
| 10205 |
+
* "mRender": function ( data, type, full ) {
|
| 10206 |
+
* return '<a href="'+data+'">Download</a>';
|
| 10207 |
+
* }
|
| 10208 |
+
* ]
|
| 10209 |
+
* } );
|
| 10210 |
+
* } );
|
| 10211 |
+
*/
|
| 10212 |
+
"mRender": null,
|
| 10213 |
+
|
| 10214 |
+
|
| 10215 |
+
/**
|
| 10216 |
+
* Change the cell type created for the column - either TD cells or TH cells. This
|
| 10217 |
+
* can be useful as TH cells have semantic meaning in the table body, allowing them
|
| 10218 |
+
* to act as a header for a row (you may wish to add scope='row' to the TH elements).
|
| 10219 |
+
* @type string
|
| 10220 |
+
* @default td
|
| 10221 |
+
* @dtopt Columns
|
| 10222 |
+
*
|
| 10223 |
+
* @example
|
| 10224 |
+
* // Make the first column use TH cells
|
| 10225 |
+
* $(document).ready( function() {
|
| 10226 |
+
* var oTable = $('#example').dataTable( {
|
| 10227 |
+
* "aoColumnDefs": [ {
|
| 10228 |
+
* "aTargets": [ 0 ],
|
| 10229 |
+
* "sCellType": "th"
|
| 10230 |
+
* } ]
|
| 10231 |
+
* } );
|
| 10232 |
+
* } );
|
| 10233 |
+
*/
|
| 10234 |
+
"sCellType": "td",
|
| 10235 |
+
|
| 10236 |
+
|
| 10237 |
+
/**
|
| 10238 |
+
* Class to give to each cell in this column.
|
| 10239 |
+
* @type string
|
| 10240 |
+
* @default <i>Empty string</i>
|
| 10241 |
+
* @dtopt Columns
|
| 10242 |
+
*
|
| 10243 |
+
* @example
|
| 10244 |
+
* // Using aoColumnDefs
|
| 10245 |
+
* $(document).ready( function() {
|
| 10246 |
+
* $('#example').dataTable( {
|
| 10247 |
+
* "aoColumnDefs": [
|
| 10248 |
+
* { "sClass": "my_class", "aTargets": [ 0 ] }
|
| 10249 |
+
* ]
|
| 10250 |
+
* } );
|
| 10251 |
+
* } );
|
| 10252 |
+
*
|
| 10253 |
+
* @example
|
| 10254 |
+
* // Using aoColumns
|
| 10255 |
+
* $(document).ready( function() {
|
| 10256 |
+
* $('#example').dataTable( {
|
| 10257 |
+
* "aoColumns": [
|
| 10258 |
+
* { "sClass": "my_class" },
|
| 10259 |
+
* null,
|
| 10260 |
+
* null,
|
| 10261 |
+
* null,
|
| 10262 |
+
* null
|
| 10263 |
+
* ]
|
| 10264 |
+
* } );
|
| 10265 |
+
* } );
|
| 10266 |
+
*/
|
| 10267 |
+
"sClass": "",
|
| 10268 |
+
|
| 10269 |
+
/**
|
| 10270 |
+
* When DataTables calculates the column widths to assign to each column,
|
| 10271 |
+
* it finds the longest string in each column and then constructs a
|
| 10272 |
+
* temporary table and reads the widths from that. The problem with this
|
| 10273 |
+
* is that "mmm" is much wider then "iiii", but the latter is a longer
|
| 10274 |
+
* string - thus the calculation can go wrong (doing it properly and putting
|
| 10275 |
+
* it into an DOM object and measuring that is horribly(!) slow). Thus as
|
| 10276 |
+
* a "work around" we provide this option. It will append its value to the
|
| 10277 |
+
* text that is found to be the longest string for the column - i.e. padding.
|
| 10278 |
+
* Generally you shouldn't need this, and it is not documented on the
|
| 10279 |
+
* general DataTables.net documentation
|
| 10280 |
+
* @type string
|
| 10281 |
+
* @default <i>Empty string<i>
|
| 10282 |
+
* @dtopt Columns
|
| 10283 |
+
*
|
| 10284 |
+
* @example
|
| 10285 |
+
* // Using aoColumns
|
| 10286 |
+
* $(document).ready( function() {
|
| 10287 |
+
* $('#example').dataTable( {
|
| 10288 |
+
* "aoColumns": [
|
| 10289 |
+
* null,
|
| 10290 |
+
* null,
|
| 10291 |
+
* null,
|
| 10292 |
+
* {
|
| 10293 |
+
* "sContentPadding": "mmm"
|
| 10294 |
+
* }
|
| 10295 |
+
* ]
|
| 10296 |
+
* } );
|
| 10297 |
+
* } );
|
| 10298 |
+
*/
|
| 10299 |
+
"sContentPadding": "",
|
| 10300 |
+
|
| 10301 |
+
|
| 10302 |
+
/**
|
| 10303 |
+
* Allows a default value to be given for a column's data, and will be used
|
| 10304 |
+
* whenever a null data source is encountered (this can be because mData
|
| 10305 |
+
* is set to null, or because the data source itself is null).
|
| 10306 |
+
* @type string
|
| 10307 |
+
* @default null
|
| 10308 |
+
* @dtopt Columns
|
| 10309 |
+
*
|
| 10310 |
+
* @example
|
| 10311 |
+
* // Using aoColumnDefs
|
| 10312 |
+
* $(document).ready( function() {
|
| 10313 |
+
* $('#example').dataTable( {
|
| 10314 |
+
* "aoColumnDefs": [
|
| 10315 |
+
* {
|
| 10316 |
+
* "mData": null,
|
| 10317 |
+
* "sDefaultContent": "Edit",
|
| 10318 |
+
* "aTargets": [ -1 ]
|
| 10319 |
+
* }
|
| 10320 |
+
* ]
|
| 10321 |
+
* } );
|
| 10322 |
+
* } );
|
| 10323 |
+
*
|
| 10324 |
+
* @example
|
| 10325 |
+
* // Using aoColumns
|
| 10326 |
+
* $(document).ready( function() {
|
| 10327 |
+
* $('#example').dataTable( {
|
| 10328 |
+
* "aoColumns": [
|
| 10329 |
+
* null,
|
| 10330 |
+
* null,
|
| 10331 |
+
* null,
|
| 10332 |
+
* {
|
| 10333 |
+
* "mData": null,
|
| 10334 |
+
* "sDefaultContent": "Edit"
|
| 10335 |
+
* }
|
| 10336 |
+
* ]
|
| 10337 |
+
* } );
|
| 10338 |
+
* } );
|
| 10339 |
+
*/
|
| 10340 |
+
"sDefaultContent": null,
|
| 10341 |
+
|
| 10342 |
+
|
| 10343 |
+
/**
|
| 10344 |
+
* This parameter is only used in DataTables' server-side processing. It can
|
| 10345 |
+
* be exceptionally useful to know what columns are being displayed on the
|
| 10346 |
+
* client side, and to map these to database fields. When defined, the names
|
| 10347 |
+
* also allow DataTables to reorder information from the server if it comes
|
| 10348 |
+
* back in an unexpected order (i.e. if you switch your columns around on the
|
| 10349 |
+
* client-side, your server-side code does not also need updating).
|
| 10350 |
+
* @type string
|
| 10351 |
+
* @default <i>Empty string</i>
|
| 10352 |
+
* @dtopt Columns
|
| 10353 |
+
*
|
| 10354 |
+
* @example
|
| 10355 |
+
* // Using aoColumnDefs
|
| 10356 |
+
* $(document).ready( function() {
|
| 10357 |
+
* $('#example').dataTable( {
|
| 10358 |
+
* "aoColumnDefs": [
|
| 10359 |
+
* { "sName": "engine", "aTargets": [ 0 ] },
|
| 10360 |
+
* { "sName": "browser", "aTargets": [ 1 ] },
|
| 10361 |
+
* { "sName": "platform", "aTargets": [ 2 ] },
|
| 10362 |
+
* { "sName": "version", "aTargets": [ 3 ] },
|
| 10363 |
+
* { "sName": "grade", "aTargets": [ 4 ] }
|
| 10364 |
+
* ]
|
| 10365 |
+
* } );
|
| 10366 |
+
* } );
|
| 10367 |
+
*
|
| 10368 |
+
* @example
|
| 10369 |
+
* // Using aoColumns
|
| 10370 |
+
* $(document).ready( function() {
|
| 10371 |
+
* $('#example').dataTable( {
|
| 10372 |
+
* "aoColumns": [
|
| 10373 |
+
* { "sName": "engine" },
|
| 10374 |
+
* { "sName": "browser" },
|
| 10375 |
+
* { "sName": "platform" },
|
| 10376 |
+
* { "sName": "version" },
|
| 10377 |
+
* { "sName": "grade" }
|
| 10378 |
+
* ]
|
| 10379 |
+
* } );
|
| 10380 |
+
* } );
|
| 10381 |
+
*/
|
| 10382 |
+
"sName": "",
|
| 10383 |
+
|
| 10384 |
+
|
| 10385 |
+
/**
|
| 10386 |
+
* Defines a data source type for the sorting which can be used to read
|
| 10387 |
+
* real-time information from the table (updating the internally cached
|
| 10388 |
+
* version) prior to sorting. This allows sorting to occur on user editable
|
| 10389 |
+
* elements such as form inputs.
|
| 10390 |
+
* @type string
|
| 10391 |
+
* @default std
|
| 10392 |
+
* @dtopt Columns
|
| 10393 |
+
*
|
| 10394 |
+
* @example
|
| 10395 |
+
* // Using aoColumnDefs
|
| 10396 |
+
* $(document).ready( function() {
|
| 10397 |
+
* $('#example').dataTable( {
|
| 10398 |
+
* "aoColumnDefs": [
|
| 10399 |
+
* { "sSortDataType": "dom-text", "aTargets": [ 2, 3 ] },
|
| 10400 |
+
* { "sType": "numeric", "aTargets": [ 3 ] },
|
| 10401 |
+
* { "sSortDataType": "dom-select", "aTargets": [ 4 ] },
|
| 10402 |
+
* { "sSortDataType": "dom-checkbox", "aTargets": [ 5 ] }
|
| 10403 |
+
* ]
|
| 10404 |
+
* } );
|
| 10405 |
+
* } );
|
| 10406 |
+
*
|
| 10407 |
+
* @example
|
| 10408 |
+
* // Using aoColumns
|
| 10409 |
+
* $(document).ready( function() {
|
| 10410 |
+
* $('#example').dataTable( {
|
| 10411 |
+
* "aoColumns": [
|
| 10412 |
+
* null,
|
| 10413 |
+
* null,
|
| 10414 |
+
* { "sSortDataType": "dom-text" },
|
| 10415 |
+
* { "sSortDataType": "dom-text", "sType": "numeric" },
|
| 10416 |
+
* { "sSortDataType": "dom-select" },
|
| 10417 |
+
* { "sSortDataType": "dom-checkbox" }
|
| 10418 |
+
* ]
|
| 10419 |
+
* } );
|
| 10420 |
+
* } );
|
| 10421 |
+
*/
|
| 10422 |
+
"sSortDataType": "std",
|
| 10423 |
+
|
| 10424 |
+
|
| 10425 |
+
/**
|
| 10426 |
+
* The title of this column.
|
| 10427 |
+
* @type string
|
| 10428 |
+
* @default null <i>Derived from the 'TH' value for this column in the
|
| 10429 |
+
* original HTML table.</i>
|
| 10430 |
+
* @dtopt Columns
|
| 10431 |
+
*
|
| 10432 |
+
* @example
|
| 10433 |
+
* // Using aoColumnDefs
|
| 10434 |
+
* $(document).ready( function() {
|
| 10435 |
+
* $('#example').dataTable( {
|
| 10436 |
+
* "aoColumnDefs": [
|
| 10437 |
+
* { "sTitle": "My column title", "aTargets": [ 0 ] }
|
| 10438 |
+
* ]
|
| 10439 |
+
* } );
|
| 10440 |
+
* } );
|
| 10441 |
+
*
|
| 10442 |
+
* @example
|
| 10443 |
+
* // Using aoColumns
|
| 10444 |
+
* $(document).ready( function() {
|
| 10445 |
+
* $('#example').dataTable( {
|
| 10446 |
+
* "aoColumns": [
|
| 10447 |
+
* { "sTitle": "My column title" },
|
| 10448 |
+
* null,
|
| 10449 |
+
* null,
|
| 10450 |
+
* null,
|
| 10451 |
+
* null
|
| 10452 |
+
* ]
|
| 10453 |
+
* } );
|
| 10454 |
+
* } );
|
| 10455 |
+
*/
|
| 10456 |
+
"sTitle": null,
|
| 10457 |
+
|
| 10458 |
+
|
| 10459 |
+
/**
|
| 10460 |
+
* The type allows you to specify how the data for this column will be sorted.
|
| 10461 |
+
* Four types (string, numeric, date and html (which will strip HTML tags
|
| 10462 |
+
* before sorting)) are currently available. Note that only date formats
|
| 10463 |
+
* understood by Javascript's Date() object will be accepted as type date. For
|
| 10464 |
+
* example: "Mar 26, 2008 5:03 PM". May take the values: 'string', 'numeric',
|
| 10465 |
+
* 'date' or 'html' (by default). Further types can be adding through
|
| 10466 |
+
* plug-ins.
|
| 10467 |
+
* @type string
|
| 10468 |
+
* @default null <i>Auto-detected from raw data</i>
|
| 10469 |
+
* @dtopt Columns
|
| 10470 |
+
*
|
| 10471 |
+
* @example
|
| 10472 |
+
* // Using aoColumnDefs
|
| 10473 |
+
* $(document).ready( function() {
|
| 10474 |
+
* $('#example').dataTable( {
|
| 10475 |
+
* "aoColumnDefs": [
|
| 10476 |
+
* { "sType": "html", "aTargets": [ 0 ] }
|
| 10477 |
+
* ]
|
| 10478 |
+
* } );
|
| 10479 |
+
* } );
|
| 10480 |
+
*
|
| 10481 |
+
* @example
|
| 10482 |
+
* // Using aoColumns
|
| 10483 |
+
* $(document).ready( function() {
|
| 10484 |
+
* $('#example').dataTable( {
|
| 10485 |
+
* "aoColumns": [
|
| 10486 |
+
* { "sType": "html" },
|
| 10487 |
+
* null,
|
| 10488 |
+
* null,
|
| 10489 |
+
* null,
|
| 10490 |
+
* null
|
| 10491 |
+
* ]
|
| 10492 |
+
* } );
|
| 10493 |
+
* } );
|
| 10494 |
+
*/
|
| 10495 |
+
"sType": null,
|
| 10496 |
+
|
| 10497 |
+
|
| 10498 |
+
/**
|
| 10499 |
+
* Defining the width of the column, this parameter may take any CSS value
|
| 10500 |
+
* (3em, 20px etc). DataTables apples 'smart' widths to columns which have not
|
| 10501 |
+
* been given a specific width through this interface ensuring that the table
|
| 10502 |
+
* remains readable.
|
| 10503 |
+
* @type string
|
| 10504 |
+
* @default null <i>Automatic</i>
|
| 10505 |
+
* @dtopt Columns
|
| 10506 |
+
*
|
| 10507 |
+
* @example
|
| 10508 |
+
* // Using aoColumnDefs
|
| 10509 |
+
* $(document).ready( function() {
|
| 10510 |
+
* $('#example').dataTable( {
|
| 10511 |
+
* "aoColumnDefs": [
|
| 10512 |
+
* { "sWidth": "20%", "aTargets": [ 0 ] }
|
| 10513 |
+
* ]
|
| 10514 |
+
* } );
|
| 10515 |
+
* } );
|
| 10516 |
+
*
|
| 10517 |
+
* @example
|
| 10518 |
+
* // Using aoColumns
|
| 10519 |
+
* $(document).ready( function() {
|
| 10520 |
+
* $('#example').dataTable( {
|
| 10521 |
+
* "aoColumns": [
|
| 10522 |
+
* { "sWidth": "20%" },
|
| 10523 |
+
* null,
|
| 10524 |
+
* null,
|
| 10525 |
+
* null,
|
| 10526 |
+
* null
|
| 10527 |
+
* ]
|
| 10528 |
+
* } );
|
| 10529 |
+
* } );
|
| 10530 |
+
*/
|
| 10531 |
+
"sWidth": null
|
| 10532 |
+
};
|
| 10533 |
+
|
| 10534 |
+
|
| 10535 |
+
|
| 10536 |
+
/**
|
| 10537 |
+
* DataTables settings object - this holds all the information needed for a
|
| 10538 |
+
* given table, including configuration, data and current application of the
|
| 10539 |
+
* table options. DataTables does not have a single instance for each DataTable
|
| 10540 |
+
* with the settings attached to that instance, but rather instances of the
|
| 10541 |
+
* DataTable "class" are created on-the-fly as needed (typically by a
|
| 10542 |
+
* $().dataTable() call) and the settings object is then applied to that
|
| 10543 |
+
* instance.
|
| 10544 |
+
*
|
| 10545 |
+
* Note that this object is related to {@link DataTable.defaults} but this
|
| 10546 |
+
* one is the internal data store for DataTables's cache of columns. It should
|
| 10547 |
+
* NOT be manipulated outside of DataTables. Any configuration should be done
|
| 10548 |
+
* through the initialisation options.
|
| 10549 |
+
* @namespace
|
| 10550 |
+
* @todo Really should attach the settings object to individual instances so we
|
| 10551 |
+
* don't need to create new instances on each $().dataTable() call (if the
|
| 10552 |
+
* table already exists). It would also save passing oSettings around and
|
| 10553 |
+
* into every single function. However, this is a very significant
|
| 10554 |
+
* architecture change for DataTables and will almost certainly break
|
| 10555 |
+
* backwards compatibility with older installations. This is something that
|
| 10556 |
+
* will be done in 2.0.
|
| 10557 |
+
*/
|
| 10558 |
+
DataTable.models.oSettings = {
|
| 10559 |
+
/**
|
| 10560 |
+
* Primary features of DataTables and their enablement state.
|
| 10561 |
+
* @namespace
|
| 10562 |
+
*/
|
| 10563 |
+
"oFeatures": {
|
| 10564 |
+
|
| 10565 |
+
/**
|
| 10566 |
+
* Flag to say if DataTables should automatically try to calculate the
|
| 10567 |
+
* optimum table and columns widths (true) or not (false).
|
| 10568 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10569 |
+
* set a default use {@link DataTable.defaults}.
|
| 10570 |
+
* @type boolean
|
| 10571 |
+
*/
|
| 10572 |
+
"bAutoWidth": null,
|
| 10573 |
+
|
| 10574 |
+
/**
|
| 10575 |
+
* Delay the creation of TR and TD elements until they are actually
|
| 10576 |
+
* needed by a driven page draw. This can give a significant speed
|
| 10577 |
+
* increase for Ajax source and Javascript source data, but makes no
|
| 10578 |
+
* difference at all fro DOM and server-side processing tables.
|
| 10579 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10580 |
+
* set a default use {@link DataTable.defaults}.
|
| 10581 |
+
* @type boolean
|
| 10582 |
+
*/
|
| 10583 |
+
"bDeferRender": null,
|
| 10584 |
+
|
| 10585 |
+
/**
|
| 10586 |
+
* Enable filtering on the table or not. Note that if this is disabled
|
| 10587 |
+
* then there is no filtering at all on the table, including fnFilter.
|
| 10588 |
+
* To just remove the filtering input use sDom and remove the 'f' option.
|
| 10589 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10590 |
+
* set a default use {@link DataTable.defaults}.
|
| 10591 |
+
* @type boolean
|
| 10592 |
+
*/
|
| 10593 |
+
"bFilter": null,
|
| 10594 |
+
|
| 10595 |
+
/**
|
| 10596 |
+
* Table information element (the 'Showing x of y records' div) enable
|
| 10597 |
+
* flag.
|
| 10598 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10599 |
+
* set a default use {@link DataTable.defaults}.
|
| 10600 |
+
* @type boolean
|
| 10601 |
+
*/
|
| 10602 |
+
"bInfo": null,
|
| 10603 |
+
|
| 10604 |
+
/**
|
| 10605 |
+
* Present a user control allowing the end user to change the page size
|
| 10606 |
+
* when pagination is enabled.
|
| 10607 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10608 |
+
* set a default use {@link DataTable.defaults}.
|
| 10609 |
+
* @type boolean
|
| 10610 |
+
*/
|
| 10611 |
+
"bLengthChange": null,
|
| 10612 |
+
|
| 10613 |
+
/**
|
| 10614 |
+
* Pagination enabled or not. Note that if this is disabled then length
|
| 10615 |
+
* changing must also be disabled.
|
| 10616 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10617 |
+
* set a default use {@link DataTable.defaults}.
|
| 10618 |
+
* @type boolean
|
| 10619 |
+
*/
|
| 10620 |
+
"bPaginate": null,
|
| 10621 |
+
|
| 10622 |
+
/**
|
| 10623 |
+
* Processing indicator enable flag whenever DataTables is enacting a
|
| 10624 |
+
* user request - typically an Ajax request for server-side processing.
|
| 10625 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10626 |
+
* set a default use {@link DataTable.defaults}.
|
| 10627 |
+
* @type boolean
|
| 10628 |
+
*/
|
| 10629 |
+
"bProcessing": null,
|
| 10630 |
+
|
| 10631 |
+
/**
|
| 10632 |
+
* Server-side processing enabled flag - when enabled DataTables will
|
| 10633 |
+
* get all data from the server for every draw - there is no filtering,
|
| 10634 |
+
* sorting or paging done on the client-side.
|
| 10635 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10636 |
+
* set a default use {@link DataTable.defaults}.
|
| 10637 |
+
* @type boolean
|
| 10638 |
+
*/
|
| 10639 |
+
"bServerSide": null,
|
| 10640 |
+
|
| 10641 |
+
/**
|
| 10642 |
+
* Sorting enablement flag.
|
| 10643 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10644 |
+
* set a default use {@link DataTable.defaults}.
|
| 10645 |
+
* @type boolean
|
| 10646 |
+
*/
|
| 10647 |
+
"bSort": null,
|
| 10648 |
+
|
| 10649 |
+
/**
|
| 10650 |
+
* Apply a class to the columns which are being sorted to provide a
|
| 10651 |
+
* visual highlight or not. This can slow things down when enabled since
|
| 10652 |
+
* there is a lot of DOM interaction.
|
| 10653 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10654 |
+
* set a default use {@link DataTable.defaults}.
|
| 10655 |
+
* @type boolean
|
| 10656 |
+
*/
|
| 10657 |
+
"bSortClasses": null,
|
| 10658 |
+
|
| 10659 |
+
/**
|
| 10660 |
+
* State saving enablement flag.
|
| 10661 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10662 |
+
* set a default use {@link DataTable.defaults}.
|
| 10663 |
+
* @type boolean
|
| 10664 |
+
*/
|
| 10665 |
+
"bStateSave": null
|
| 10666 |
+
},
|
| 10667 |
+
|
| 10668 |
+
|
| 10669 |
+
/**
|
| 10670 |
+
* Scrolling settings for a table.
|
| 10671 |
+
* @namespace
|
| 10672 |
+
*/
|
| 10673 |
+
"oScroll": {
|
| 10674 |
+
/**
|
| 10675 |
+
* Indicate if DataTables should be allowed to set the padding / margin
|
| 10676 |
+
* etc for the scrolling header elements or not. Typically you will want
|
| 10677 |
+
* this.
|
| 10678 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10679 |
+
* set a default use {@link DataTable.defaults}.
|
| 10680 |
+
* @type boolean
|
| 10681 |
+
*/
|
| 10682 |
+
"bAutoCss": null,
|
| 10683 |
+
|
| 10684 |
+
/**
|
| 10685 |
+
* When the table is shorter in height than sScrollY, collapse the
|
| 10686 |
+
* table container down to the height of the table (when true).
|
| 10687 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10688 |
+
* set a default use {@link DataTable.defaults}.
|
| 10689 |
+
* @type boolean
|
| 10690 |
+
*/
|
| 10691 |
+
"bCollapse": null,
|
| 10692 |
+
|
| 10693 |
+
/**
|
| 10694 |
+
* Infinite scrolling enablement flag. Now deprecated in favour of
|
| 10695 |
+
* using the Scroller plug-in.
|
| 10696 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10697 |
+
* set a default use {@link DataTable.defaults}.
|
| 10698 |
+
* @type boolean
|
| 10699 |
+
*/
|
| 10700 |
+
"bInfinite": null,
|
| 10701 |
+
|
| 10702 |
+
/**
|
| 10703 |
+
* Width of the scrollbar for the web-browser's platform. Calculated
|
| 10704 |
+
* during table initialisation.
|
| 10705 |
+
* @type int
|
| 10706 |
+
* @default 0
|
| 10707 |
+
*/
|
| 10708 |
+
"iBarWidth": 0,
|
| 10709 |
+
|
| 10710 |
+
/**
|
| 10711 |
+
* Space (in pixels) between the bottom of the scrolling container and
|
| 10712 |
+
* the bottom of the scrolling viewport before the next page is loaded
|
| 10713 |
+
* when using infinite scrolling.
|
| 10714 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10715 |
+
* set a default use {@link DataTable.defaults}.
|
| 10716 |
+
* @type int
|
| 10717 |
+
*/
|
| 10718 |
+
"iLoadGap": null,
|
| 10719 |
+
|
| 10720 |
+
/**
|
| 10721 |
+
* Viewport width for horizontal scrolling. Horizontal scrolling is
|
| 10722 |
+
* disabled if an empty string.
|
| 10723 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10724 |
+
* set a default use {@link DataTable.defaults}.
|
| 10725 |
+
* @type string
|
| 10726 |
+
*/
|
| 10727 |
+
"sX": null,
|
| 10728 |
+
|
| 10729 |
+
/**
|
| 10730 |
+
* Width to expand the table to when using x-scrolling. Typically you
|
| 10731 |
+
* should not need to use this.
|
| 10732 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10733 |
+
* set a default use {@link DataTable.defaults}.
|
| 10734 |
+
* @type string
|
| 10735 |
+
* @deprecated
|
| 10736 |
+
*/
|
| 10737 |
+
"sXInner": null,
|
| 10738 |
+
|
| 10739 |
+
/**
|
| 10740 |
+
* Viewport height for vertical scrolling. Vertical scrolling is disabled
|
| 10741 |
+
* if an empty string.
|
| 10742 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10743 |
+
* set a default use {@link DataTable.defaults}.
|
| 10744 |
+
* @type string
|
| 10745 |
+
*/
|
| 10746 |
+
"sY": null
|
| 10747 |
+
},
|
| 10748 |
+
|
| 10749 |
+
/**
|
| 10750 |
+
* Language information for the table.
|
| 10751 |
+
* @namespace
|
| 10752 |
+
* @extends DataTable.defaults.oLanguage
|
| 10753 |
+
*/
|
| 10754 |
+
"oLanguage": {
|
| 10755 |
+
/**
|
| 10756 |
+
* Information callback function. See
|
| 10757 |
+
* {@link DataTable.defaults.fnInfoCallback}
|
| 10758 |
+
* @type function
|
| 10759 |
+
* @default null
|
| 10760 |
+
*/
|
| 10761 |
+
"fnInfoCallback": null
|
| 10762 |
+
},
|
| 10763 |
+
|
| 10764 |
+
/**
|
| 10765 |
+
* Browser support parameters
|
| 10766 |
+
* @namespace
|
| 10767 |
+
*/
|
| 10768 |
+
"oBrowser": {
|
| 10769 |
+
/**
|
| 10770 |
+
* Indicate if the browser incorrectly calculates width:100% inside a
|
| 10771 |
+
* scrolling element (IE6/7)
|
| 10772 |
+
* @type boolean
|
| 10773 |
+
* @default false
|
| 10774 |
+
*/
|
| 10775 |
+
"bScrollOversize": false
|
| 10776 |
+
},
|
| 10777 |
+
|
| 10778 |
+
/**
|
| 10779 |
+
* Array referencing the nodes which are used for the features. The
|
| 10780 |
+
* parameters of this object match what is allowed by sDom - i.e.
|
| 10781 |
+
* <ul>
|
| 10782 |
+
* <li>'l' - Length changing</li>
|
| 10783 |
+
* <li>'f' - Filtering input</li>
|
| 10784 |
+
* <li>'t' - The table!</li>
|
| 10785 |
+
* <li>'i' - Information</li>
|
| 10786 |
+
* <li>'p' - Pagination</li>
|
| 10787 |
+
* <li>'r' - pRocessing</li>
|
| 10788 |
+
* </ul>
|
| 10789 |
+
* @type array
|
| 10790 |
+
* @default []
|
| 10791 |
+
*/
|
| 10792 |
+
"aanFeatures": [],
|
| 10793 |
+
|
| 10794 |
+
/**
|
| 10795 |
+
* Store data information - see {@link DataTable.models.oRow} for detailed
|
| 10796 |
+
* information.
|
| 10797 |
+
* @type array
|
| 10798 |
+
* @default []
|
| 10799 |
+
*/
|
| 10800 |
+
"aoData": [],
|
| 10801 |
+
|
| 10802 |
+
/**
|
| 10803 |
+
* Array of indexes which are in the current display (after filtering etc)
|
| 10804 |
+
* @type array
|
| 10805 |
+
* @default []
|
| 10806 |
+
*/
|
| 10807 |
+
"aiDisplay": [],
|
| 10808 |
+
|
| 10809 |
+
/**
|
| 10810 |
+
* Array of indexes for display - no filtering
|
| 10811 |
+
* @type array
|
| 10812 |
+
* @default []
|
| 10813 |
+
*/
|
| 10814 |
+
"aiDisplayMaster": [],
|
| 10815 |
+
|
| 10816 |
+
/**
|
| 10817 |
+
* Store information about each column that is in use
|
| 10818 |
+
* @type array
|
| 10819 |
+
* @default []
|
| 10820 |
+
*/
|
| 10821 |
+
"aoColumns": [],
|
| 10822 |
+
|
| 10823 |
+
/**
|
| 10824 |
+
* Store information about the table's header
|
| 10825 |
+
* @type array
|
| 10826 |
+
* @default []
|
| 10827 |
+
*/
|
| 10828 |
+
"aoHeader": [],
|
| 10829 |
+
|
| 10830 |
+
/**
|
| 10831 |
+
* Store information about the table's footer
|
| 10832 |
+
* @type array
|
| 10833 |
+
* @default []
|
| 10834 |
+
*/
|
| 10835 |
+
"aoFooter": [],
|
| 10836 |
+
|
| 10837 |
+
/**
|
| 10838 |
+
* Search data array for regular expression searching
|
| 10839 |
+
* @type array
|
| 10840 |
+
* @default []
|
| 10841 |
+
*/
|
| 10842 |
+
"asDataSearch": [],
|
| 10843 |
+
|
| 10844 |
+
/**
|
| 10845 |
+
* Store the applied global search information in case we want to force a
|
| 10846 |
+
* research or compare the old search to a new one.
|
| 10847 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10848 |
+
* set a default use {@link DataTable.defaults}.
|
| 10849 |
+
* @namespace
|
| 10850 |
+
* @extends DataTable.models.oSearch
|
| 10851 |
+
*/
|
| 10852 |
+
"oPreviousSearch": {},
|
| 10853 |
+
|
| 10854 |
+
/**
|
| 10855 |
+
* Store the applied search for each column - see
|
| 10856 |
+
* {@link DataTable.models.oSearch} for the format that is used for the
|
| 10857 |
+
* filtering information for each column.
|
| 10858 |
+
* @type array
|
| 10859 |
+
* @default []
|
| 10860 |
+
*/
|
| 10861 |
+
"aoPreSearchCols": [],
|
| 10862 |
+
|
| 10863 |
+
/**
|
| 10864 |
+
* Sorting that is applied to the table. Note that the inner arrays are
|
| 10865 |
+
* used in the following manner:
|
| 10866 |
+
* <ul>
|
| 10867 |
+
* <li>Index 0 - column number</li>
|
| 10868 |
+
* <li>Index 1 - current sorting direction</li>
|
| 10869 |
+
* <li>Index 2 - index of asSorting for this column</li>
|
| 10870 |
+
* </ul>
|
| 10871 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10872 |
+
* set a default use {@link DataTable.defaults}.
|
| 10873 |
+
* @type array
|
| 10874 |
+
* @todo These inner arrays should really be objects
|
| 10875 |
+
*/
|
| 10876 |
+
"aaSorting": null,
|
| 10877 |
+
|
| 10878 |
+
/**
|
| 10879 |
+
* Sorting that is always applied to the table (i.e. prefixed in front of
|
| 10880 |
+
* aaSorting).
|
| 10881 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10882 |
+
* set a default use {@link DataTable.defaults}.
|
| 10883 |
+
* @type array|null
|
| 10884 |
+
* @default null
|
| 10885 |
+
*/
|
| 10886 |
+
"aaSortingFixed": null,
|
| 10887 |
+
|
| 10888 |
+
/**
|
| 10889 |
+
* Classes to use for the striping of a table.
|
| 10890 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 10891 |
+
* set a default use {@link DataTable.defaults}.
|
| 10892 |
+
* @type array
|
| 10893 |
+
* @default []
|
| 10894 |
+
*/
|
| 10895 |
+
"asStripeClasses": null,
|
| 10896 |
+
|
| 10897 |
+
/**
|
| 10898 |
+
* If restoring a table - we should restore its striping classes as well
|
| 10899 |
+
* @type array
|
| 10900 |
+
* @default []
|
| 10901 |
+
*/
|
| 10902 |
+
"asDestroyStripes": [],
|
| 10903 |
+
|
| 10904 |
+
/**
|
| 10905 |
+
* If restoring a table - we should restore its width
|
| 10906 |
+
* @type int
|
| 10907 |
+
* @default 0
|
| 10908 |
+
*/
|
| 10909 |
+
"sDestroyWidth": 0,
|
| 10910 |
+
|
| 10911 |
+
/**
|
| 10912 |
+
* Callback functions array for every time a row is inserted (i.e. on a draw).
|
| 10913 |
+
* @type array
|
| 10914 |
+
* @default []
|
| 10915 |
+
*/
|
| 10916 |
+
"aoRowCallback": [],
|
| 10917 |
+
|
| 10918 |
+
/**
|
| 10919 |
+
* Callback functions for the header on each draw.
|
| 10920 |
+
* @type array
|
| 10921 |
+
* @default []
|
| 10922 |
+
*/
|
| 10923 |
+
"aoHeaderCallback": [],
|
| 10924 |
+
|
| 10925 |
+
/**
|
| 10926 |
+
* Callback function for the footer on each draw.
|
| 10927 |
+
* @type array
|
| 10928 |
+
* @default []
|
| 10929 |
+
*/
|
| 10930 |
+
"aoFooterCallback": [],
|
| 10931 |
+
|
| 10932 |
+
/**
|
| 10933 |
+
* Array of callback functions for draw callback functions
|
| 10934 |
+
* @type array
|
| 10935 |
+
* @default []
|
| 10936 |
+
*/
|
| 10937 |
+
"aoDrawCallback": [],
|
| 10938 |
+
|
| 10939 |
+
/**
|
| 10940 |
+
* Array of callback functions for row created function
|
| 10941 |
+
* @type array
|
| 10942 |
+
* @default []
|
| 10943 |
+
*/
|
| 10944 |
+
"aoRowCreatedCallback": [],
|
| 10945 |
+
|
| 10946 |
+
/**
|
| 10947 |
+
* Callback functions for just before the table is redrawn. A return of
|
| 10948 |
+
* false will be used to cancel the draw.
|
| 10949 |
+
* @type array
|
| 10950 |
+
* @default []
|
| 10951 |
+
*/
|
| 10952 |
+
"aoPreDrawCallback": [],
|
| 10953 |
+
|
| 10954 |
+
/**
|
| 10955 |
+
* Callback functions for when the table has been initialised.
|
| 10956 |
+
* @type array
|
| 10957 |
+
* @default []
|
| 10958 |
+
*/
|
| 10959 |
+
"aoInitComplete": [],
|
| 10960 |
+
|
| 10961 |
+
|
| 10962 |
+
/**
|
| 10963 |
+
* Callbacks for modifying the settings to be stored for state saving, prior to
|
| 10964 |
+
* saving state.
|
| 10965 |
+
* @type array
|
| 10966 |
+
* @default []
|
| 10967 |
+
*/
|
| 10968 |
+
"aoStateSaveParams": [],
|
| 10969 |
+
|
| 10970 |
+
/**
|
| 10971 |
+
* Callbacks for modifying the settings that have been stored for state saving
|
| 10972 |
+
* prior to using the stored values to restore the state.
|
| 10973 |
+
* @type array
|
| 10974 |
+
* @default []
|
| 10975 |
+
*/
|
| 10976 |
+
"aoStateLoadParams": [],
|
| 10977 |
+
|
| 10978 |
+
/**
|
| 10979 |
+
* Callbacks for operating on the settings object once the saved state has been
|
| 10980 |
+
* loaded
|
| 10981 |
+
* @type array
|
| 10982 |
+
* @default []
|
| 10983 |
+
*/
|
| 10984 |
+
"aoStateLoaded": [],
|
| 10985 |
+
|
| 10986 |
+
/**
|
| 10987 |
+
* Cache the table ID for quick access
|
| 10988 |
+
* @type string
|
| 10989 |
+
* @default <i>Empty string</i>
|
| 10990 |
+
*/
|
| 10991 |
+
"sTableId": "",
|
| 10992 |
+
|
| 10993 |
+
/**
|
| 10994 |
+
* The TABLE node for the main table
|
| 10995 |
+
* @type node
|
| 10996 |
+
* @default null
|
| 10997 |
+
*/
|
| 10998 |
+
"nTable": null,
|
| 10999 |
+
|
| 11000 |
+
/**
|
| 11001 |
+
* Permanent ref to the thead element
|
| 11002 |
+
* @type node
|
| 11003 |
+
* @default null
|
| 11004 |
+
*/
|
| 11005 |
+
"nTHead": null,
|
| 11006 |
+
|
| 11007 |
+
/**
|
| 11008 |
+
* Permanent ref to the tfoot element - if it exists
|
| 11009 |
+
* @type node
|
| 11010 |
+
* @default null
|
| 11011 |
+
*/
|
| 11012 |
+
"nTFoot": null,
|
| 11013 |
+
|
| 11014 |
+
/**
|
| 11015 |
+
* Permanent ref to the tbody element
|
| 11016 |
+
* @type node
|
| 11017 |
+
* @default null
|
| 11018 |
+
*/
|
| 11019 |
+
"nTBody": null,
|
| 11020 |
+
|
| 11021 |
+
/**
|
| 11022 |
+
* Cache the wrapper node (contains all DataTables controlled elements)
|
| 11023 |
+
* @type node
|
| 11024 |
+
* @default null
|
| 11025 |
+
*/
|
| 11026 |
+
"nTableWrapper": null,
|
| 11027 |
+
|
| 11028 |
+
/**
|
| 11029 |
+
* Indicate if when using server-side processing the loading of data
|
| 11030 |
+
* should be deferred until the second draw.
|
| 11031 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11032 |
+
* set a default use {@link DataTable.defaults}.
|
| 11033 |
+
* @type boolean
|
| 11034 |
+
* @default false
|
| 11035 |
+
*/
|
| 11036 |
+
"bDeferLoading": false,
|
| 11037 |
+
|
| 11038 |
+
/**
|
| 11039 |
+
* Indicate if all required information has been read in
|
| 11040 |
+
* @type boolean
|
| 11041 |
+
* @default false
|
| 11042 |
+
*/
|
| 11043 |
+
"bInitialised": false,
|
| 11044 |
+
|
| 11045 |
+
/**
|
| 11046 |
+
* Information about open rows. Each object in the array has the parameters
|
| 11047 |
+
* 'nTr' and 'nParent'
|
| 11048 |
+
* @type array
|
| 11049 |
+
* @default []
|
| 11050 |
+
*/
|
| 11051 |
+
"aoOpenRows": [],
|
| 11052 |
+
|
| 11053 |
+
/**
|
| 11054 |
+
* Dictate the positioning of DataTables' control elements - see
|
| 11055 |
+
* {@link DataTable.model.oInit.sDom}.
|
| 11056 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11057 |
+
* set a default use {@link DataTable.defaults}.
|
| 11058 |
+
* @type string
|
| 11059 |
+
* @default null
|
| 11060 |
+
*/
|
| 11061 |
+
"sDom": null,
|
| 11062 |
+
|
| 11063 |
+
/**
|
| 11064 |
+
* Which type of pagination should be used.
|
| 11065 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11066 |
+
* set a default use {@link DataTable.defaults}.
|
| 11067 |
+
* @type string
|
| 11068 |
+
* @default two_button
|
| 11069 |
+
*/
|
| 11070 |
+
"sPaginationType": "two_button",
|
| 11071 |
+
|
| 11072 |
+
/**
|
| 11073 |
+
* The cookie duration (for bStateSave) in seconds.
|
| 11074 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11075 |
+
* set a default use {@link DataTable.defaults}.
|
| 11076 |
+
* @type int
|
| 11077 |
+
* @default 0
|
| 11078 |
+
*/
|
| 11079 |
+
"iCookieDuration": 0,
|
| 11080 |
+
|
| 11081 |
+
/**
|
| 11082 |
+
* The cookie name prefix.
|
| 11083 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11084 |
+
* set a default use {@link DataTable.defaults}.
|
| 11085 |
+
* @type string
|
| 11086 |
+
* @default <i>Empty string</i>
|
| 11087 |
+
*/
|
| 11088 |
+
"sCookiePrefix": "",
|
| 11089 |
+
|
| 11090 |
+
/**
|
| 11091 |
+
* Callback function for cookie creation.
|
| 11092 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11093 |
+
* set a default use {@link DataTable.defaults}.
|
| 11094 |
+
* @type function
|
| 11095 |
+
* @default null
|
| 11096 |
+
*/
|
| 11097 |
+
"fnCookieCallback": null,
|
| 11098 |
+
|
| 11099 |
+
/**
|
| 11100 |
+
* Array of callback functions for state saving. Each array element is an
|
| 11101 |
+
* object with the following parameters:
|
| 11102 |
+
* <ul>
|
| 11103 |
+
* <li>function:fn - function to call. Takes two parameters, oSettings
|
| 11104 |
+
* and the JSON string to save that has been thus far created. Returns
|
| 11105 |
+
* a JSON string to be inserted into a json object
|
| 11106 |
+
* (i.e. '"param": [ 0, 1, 2]')</li>
|
| 11107 |
+
* <li>string:sName - name of callback</li>
|
| 11108 |
+
* </ul>
|
| 11109 |
+
* @type array
|
| 11110 |
+
* @default []
|
| 11111 |
+
*/
|
| 11112 |
+
"aoStateSave": [],
|
| 11113 |
+
|
| 11114 |
+
/**
|
| 11115 |
+
* Array of callback functions for state loading. Each array element is an
|
| 11116 |
+
* object with the following parameters:
|
| 11117 |
+
* <ul>
|
| 11118 |
+
* <li>function:fn - function to call. Takes two parameters, oSettings
|
| 11119 |
+
* and the object stored. May return false to cancel state loading</li>
|
| 11120 |
+
* <li>string:sName - name of callback</li>
|
| 11121 |
+
* </ul>
|
| 11122 |
+
* @type array
|
| 11123 |
+
* @default []
|
| 11124 |
+
*/
|
| 11125 |
+
"aoStateLoad": [],
|
| 11126 |
+
|
| 11127 |
+
/**
|
| 11128 |
+
* State that was loaded from the cookie. Useful for back reference
|
| 11129 |
+
* @type object
|
| 11130 |
+
* @default null
|
| 11131 |
+
*/
|
| 11132 |
+
"oLoadedState": null,
|
| 11133 |
+
|
| 11134 |
+
/**
|
| 11135 |
+
* Source url for AJAX data for the table.
|
| 11136 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11137 |
+
* set a default use {@link DataTable.defaults}.
|
| 11138 |
+
* @type string
|
| 11139 |
+
* @default null
|
| 11140 |
+
*/
|
| 11141 |
+
"sAjaxSource": null,
|
| 11142 |
+
|
| 11143 |
+
/**
|
| 11144 |
+
* Property from a given object from which to read the table data from. This
|
| 11145 |
+
* can be an empty string (when not server-side processing), in which case
|
| 11146 |
+
* it is assumed an an array is given directly.
|
| 11147 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11148 |
+
* set a default use {@link DataTable.defaults}.
|
| 11149 |
+
* @type string
|
| 11150 |
+
*/
|
| 11151 |
+
"sAjaxDataProp": null,
|
| 11152 |
+
|
| 11153 |
+
/**
|
| 11154 |
+
* Note if draw should be blocked while getting data
|
| 11155 |
+
* @type boolean
|
| 11156 |
+
* @default true
|
| 11157 |
+
*/
|
| 11158 |
+
"bAjaxDataGet": true,
|
| 11159 |
+
|
| 11160 |
+
/**
|
| 11161 |
+
* The last jQuery XHR object that was used for server-side data gathering.
|
| 11162 |
+
* This can be used for working with the XHR information in one of the
|
| 11163 |
+
* callbacks
|
| 11164 |
+
* @type object
|
| 11165 |
+
* @default null
|
| 11166 |
+
*/
|
| 11167 |
+
"jqXHR": null,
|
| 11168 |
+
|
| 11169 |
+
/**
|
| 11170 |
+
* Function to get the server-side data.
|
| 11171 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11172 |
+
* set a default use {@link DataTable.defaults}.
|
| 11173 |
+
* @type function
|
| 11174 |
+
*/
|
| 11175 |
+
"fnServerData": null,
|
| 11176 |
+
|
| 11177 |
+
/**
|
| 11178 |
+
* Functions which are called prior to sending an Ajax request so extra
|
| 11179 |
+
* parameters can easily be sent to the server
|
| 11180 |
+
* @type array
|
| 11181 |
+
* @default []
|
| 11182 |
+
*/
|
| 11183 |
+
"aoServerParams": [],
|
| 11184 |
+
|
| 11185 |
+
/**
|
| 11186 |
+
* Send the XHR HTTP method - GET or POST (could be PUT or DELETE if
|
| 11187 |
+
* required).
|
| 11188 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11189 |
+
* set a default use {@link DataTable.defaults}.
|
| 11190 |
+
* @type string
|
| 11191 |
+
*/
|
| 11192 |
+
"sServerMethod": null,
|
| 11193 |
+
|
| 11194 |
+
/**
|
| 11195 |
+
* Format numbers for display.
|
| 11196 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11197 |
+
* set a default use {@link DataTable.defaults}.
|
| 11198 |
+
* @type function
|
| 11199 |
+
*/
|
| 11200 |
+
"fnFormatNumber": null,
|
| 11201 |
+
|
| 11202 |
+
/**
|
| 11203 |
+
* List of options that can be used for the user selectable length menu.
|
| 11204 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11205 |
+
* set a default use {@link DataTable.defaults}.
|
| 11206 |
+
* @type array
|
| 11207 |
+
* @default []
|
| 11208 |
+
*/
|
| 11209 |
+
"aLengthMenu": null,
|
| 11210 |
+
|
| 11211 |
+
/**
|
| 11212 |
+
* Counter for the draws that the table does. Also used as a tracker for
|
| 11213 |
+
* server-side processing
|
| 11214 |
+
* @type int
|
| 11215 |
+
* @default 0
|
| 11216 |
+
*/
|
| 11217 |
+
"iDraw": 0,
|
| 11218 |
+
|
| 11219 |
+
/**
|
| 11220 |
+
* Indicate if a redraw is being done - useful for Ajax
|
| 11221 |
+
* @type boolean
|
| 11222 |
+
* @default false
|
| 11223 |
+
*/
|
| 11224 |
+
"bDrawing": false,
|
| 11225 |
+
|
| 11226 |
+
/**
|
| 11227 |
+
* Draw index (iDraw) of the last error when parsing the returned data
|
| 11228 |
+
* @type int
|
| 11229 |
+
* @default -1
|
| 11230 |
+
*/
|
| 11231 |
+
"iDrawError": -1,
|
| 11232 |
+
|
| 11233 |
+
/**
|
| 11234 |
+
* Paging display length
|
| 11235 |
+
* @type int
|
| 11236 |
+
* @default 10
|
| 11237 |
+
*/
|
| 11238 |
+
"_iDisplayLength": 10,
|
| 11239 |
+
|
| 11240 |
+
/**
|
| 11241 |
+
* Paging start point - aiDisplay index
|
| 11242 |
+
* @type int
|
| 11243 |
+
* @default 0
|
| 11244 |
+
*/
|
| 11245 |
+
"_iDisplayStart": 0,
|
| 11246 |
+
|
| 11247 |
+
/**
|
| 11248 |
+
* Paging end point - aiDisplay index. Use fnDisplayEnd rather than
|
| 11249 |
+
* this property to get the end point
|
| 11250 |
+
* @type int
|
| 11251 |
+
* @default 10
|
| 11252 |
+
* @private
|
| 11253 |
+
*/
|
| 11254 |
+
"_iDisplayEnd": 10,
|
| 11255 |
+
|
| 11256 |
+
/**
|
| 11257 |
+
* Server-side processing - number of records in the result set
|
| 11258 |
+
* (i.e. before filtering), Use fnRecordsTotal rather than
|
| 11259 |
+
* this property to get the value of the number of records, regardless of
|
| 11260 |
+
* the server-side processing setting.
|
| 11261 |
+
* @type int
|
| 11262 |
+
* @default 0
|
| 11263 |
+
* @private
|
| 11264 |
+
*/
|
| 11265 |
+
"_iRecordsTotal": 0,
|
| 11266 |
+
|
| 11267 |
+
/**
|
| 11268 |
+
* Server-side processing - number of records in the current display set
|
| 11269 |
+
* (i.e. after filtering). Use fnRecordsDisplay rather than
|
| 11270 |
+
* this property to get the value of the number of records, regardless of
|
| 11271 |
+
* the server-side processing setting.
|
| 11272 |
+
* @type boolean
|
| 11273 |
+
* @default 0
|
| 11274 |
+
* @private
|
| 11275 |
+
*/
|
| 11276 |
+
"_iRecordsDisplay": 0,
|
| 11277 |
+
|
| 11278 |
+
/**
|
| 11279 |
+
* Flag to indicate if jQuery UI marking and classes should be used.
|
| 11280 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11281 |
+
* set a default use {@link DataTable.defaults}.
|
| 11282 |
+
* @type boolean
|
| 11283 |
+
*/
|
| 11284 |
+
"bJUI": null,
|
| 11285 |
+
|
| 11286 |
+
/**
|
| 11287 |
+
* The classes to use for the table
|
| 11288 |
+
* @type object
|
| 11289 |
+
* @default {}
|
| 11290 |
+
*/
|
| 11291 |
+
"oClasses": {},
|
| 11292 |
+
|
| 11293 |
+
/**
|
| 11294 |
+
* Flag attached to the settings object so you can check in the draw
|
| 11295 |
+
* callback if filtering has been done in the draw. Deprecated in favour of
|
| 11296 |
+
* events.
|
| 11297 |
+
* @type boolean
|
| 11298 |
+
* @default false
|
| 11299 |
+
* @deprecated
|
| 11300 |
+
*/
|
| 11301 |
+
"bFiltered": false,
|
| 11302 |
+
|
| 11303 |
+
/**
|
| 11304 |
+
* Flag attached to the settings object so you can check in the draw
|
| 11305 |
+
* callback if sorting has been done in the draw. Deprecated in favour of
|
| 11306 |
+
* events.
|
| 11307 |
+
* @type boolean
|
| 11308 |
+
* @default false
|
| 11309 |
+
* @deprecated
|
| 11310 |
+
*/
|
| 11311 |
+
"bSorted": false,
|
| 11312 |
+
|
| 11313 |
+
/**
|
| 11314 |
+
* Indicate that if multiple rows are in the header and there is more than
|
| 11315 |
+
* one unique cell per column, if the top one (true) or bottom one (false)
|
| 11316 |
+
* should be used for sorting / title by DataTables.
|
| 11317 |
+
* Note that this parameter will be set by the initialisation routine. To
|
| 11318 |
+
* set a default use {@link DataTable.defaults}.
|
| 11319 |
+
* @type boolean
|
| 11320 |
+
*/
|
| 11321 |
+
"bSortCellsTop": null,
|
| 11322 |
+
|
| 11323 |
+
/**
|
| 11324 |
+
* Initialisation object that is used for the table
|
| 11325 |
+
* @type object
|
| 11326 |
+
* @default null
|
| 11327 |
+
*/
|
| 11328 |
+
"oInit": null,
|
| 11329 |
+
|
| 11330 |
+
/**
|
| 11331 |
+
* Destroy callback functions - for plug-ins to attach themselves to the
|
| 11332 |
+
* destroy so they can clean up markup and events.
|
| 11333 |
+
* @type array
|
| 11334 |
+
* @default []
|
| 11335 |
+
*/
|
| 11336 |
+
"aoDestroyCallback": [],
|
| 11337 |
+
|
| 11338 |
+
|
| 11339 |
+
/**
|
| 11340 |
+
* Get the number of records in the current record set, before filtering
|
| 11341 |
+
* @type function
|
| 11342 |
+
*/
|
| 11343 |
+
"fnRecordsTotal": function ()
|
| 11344 |
+
{
|
| 11345 |
+
if ( this.oFeatures.bServerSide ) {
|
| 11346 |
+
return parseInt(this._iRecordsTotal, 10);
|
| 11347 |
+
} else {
|
| 11348 |
+
return this.aiDisplayMaster.length;
|
| 11349 |
+
}
|
| 11350 |
+
},
|
| 11351 |
+
|
| 11352 |
+
/**
|
| 11353 |
+
* Get the number of records in the current record set, after filtering
|
| 11354 |
+
* @type function
|
| 11355 |
+
*/
|
| 11356 |
+
"fnRecordsDisplay": function ()
|
| 11357 |
+
{
|
| 11358 |
+
if ( this.oFeatures.bServerSide ) {
|
| 11359 |
+
return parseInt(this._iRecordsDisplay, 10);
|
| 11360 |
+
} else {
|
| 11361 |
+
return this.aiDisplay.length;
|
| 11362 |
+
}
|
| 11363 |
+
},
|
| 11364 |
+
|
| 11365 |
+
/**
|
| 11366 |
+
* Set the display end point - aiDisplay index
|
| 11367 |
+
* @type function
|
| 11368 |
+
* @todo Should do away with _iDisplayEnd and calculate it on-the-fly here
|
| 11369 |
+
*/
|
| 11370 |
+
"fnDisplayEnd": function ()
|
| 11371 |
+
{
|
| 11372 |
+
if ( this.oFeatures.bServerSide ) {
|
| 11373 |
+
if ( this.oFeatures.bPaginate === false || this._iDisplayLength == -1 ) {
|
| 11374 |
+
return this._iDisplayStart+this.aiDisplay.length;
|
| 11375 |
+
} else {
|
| 11376 |
+
return Math.min( this._iDisplayStart+this._iDisplayLength,
|
| 11377 |
+
this._iRecordsDisplay );
|
| 11378 |
+
}
|
| 11379 |
+
} else {
|
| 11380 |
+
return this._iDisplayEnd;
|
| 11381 |
+
}
|
| 11382 |
+
},
|
| 11383 |
+
|
| 11384 |
+
/**
|
| 11385 |
+
* The DataTables object for this table
|
| 11386 |
+
* @type object
|
| 11387 |
+
* @default null
|
| 11388 |
+
*/
|
| 11389 |
+
"oInstance": null,
|
| 11390 |
+
|
| 11391 |
+
/**
|
| 11392 |
+
* Unique identifier for each instance of the DataTables object. If there
|
| 11393 |
+
* is an ID on the table node, then it takes that value, otherwise an
|
| 11394 |
+
* incrementing internal counter is used.
|
| 11395 |
+
* @type string
|
| 11396 |
+
* @default null
|
| 11397 |
+
*/
|
| 11398 |
+
"sInstance": null,
|
| 11399 |
+
|
| 11400 |
+
/**
|
| 11401 |
+
* tabindex attribute value that is added to DataTables control elements, allowing
|
| 11402 |
+
* keyboard navigation of the table and its controls.
|
| 11403 |
+
*/
|
| 11404 |
+
"iTabIndex": 0,
|
| 11405 |
+
|
| 11406 |
+
/**
|
| 11407 |
+
* DIV container for the footer scrolling table if scrolling
|
| 11408 |
+
*/
|
| 11409 |
+
"nScrollHead": null,
|
| 11410 |
+
|
| 11411 |
+
/**
|
| 11412 |
+
* DIV container for the footer scrolling table if scrolling
|
| 11413 |
+
*/
|
| 11414 |
+
"nScrollFoot": null
|
| 11415 |
+
};
|
| 11416 |
+
|
| 11417 |
+
/**
|
| 11418 |
+
* Extension object for DataTables that is used to provide all extension options.
|
| 11419 |
+
*
|
| 11420 |
+
* Note that the <i>DataTable.ext</i> object is available through
|
| 11421 |
+
* <i>jQuery.fn.dataTable.ext</i> where it may be accessed and manipulated. It is
|
| 11422 |
+
* also aliased to <i>jQuery.fn.dataTableExt</i> for historic reasons.
|
| 11423 |
+
* @namespace
|
| 11424 |
+
* @extends DataTable.models.ext
|
| 11425 |
+
*/
|
| 11426 |
+
DataTable.ext = $.extend( true, {}, DataTable.models.ext );
|
| 11427 |
+
|
| 11428 |
+
$.extend( DataTable.ext.oStdClasses, {
|
| 11429 |
+
"sTable": "dataTable",
|
| 11430 |
+
|
| 11431 |
+
/* Two buttons buttons */
|
| 11432 |
+
"sPagePrevEnabled": "paginate_enabled_previous",
|
| 11433 |
+
"sPagePrevDisabled": "paginate_disabled_previous",
|
| 11434 |
+
"sPageNextEnabled": "paginate_enabled_next",
|
| 11435 |
+
"sPageNextDisabled": "paginate_disabled_next",
|
| 11436 |
+
"sPageJUINext": "",
|
| 11437 |
+
"sPageJUIPrev": "",
|
| 11438 |
+
|
| 11439 |
+
/* Full numbers paging buttons */
|
| 11440 |
+
"sPageButton": "paginate_button",
|
| 11441 |
+
"sPageButtonActive": "paginate_active",
|
| 11442 |
+
"sPageButtonStaticDisabled": "paginate_button paginate_button_disabled",
|
| 11443 |
+
"sPageFirst": "first",
|
| 11444 |
+
"sPagePrevious": "previous",
|
| 11445 |
+
"sPageNext": "next",
|
| 11446 |
+
"sPageLast": "last",
|
| 11447 |
+
|
| 11448 |
+
/* Striping classes */
|
| 11449 |
+
"sStripeOdd": "odd",
|
| 11450 |
+
"sStripeEven": "even",
|
| 11451 |
+
|
| 11452 |
+
/* Empty row */
|
| 11453 |
+
"sRowEmpty": "dataTables_empty",
|
| 11454 |
+
|
| 11455 |
+
/* Features */
|
| 11456 |
+
"sWrapper": "dataTables_wrapper",
|
| 11457 |
+
"sFilter": "dataTables_filter",
|
| 11458 |
+
"sInfo": "dataTables_info",
|
| 11459 |
+
"sPaging": "dataTables_paginate paging_", /* Note that the type is postfixed */
|
| 11460 |
+
"sLength": "dataTables_length",
|
| 11461 |
+
"sProcessing": "dataTables_processing",
|
| 11462 |
+
|
| 11463 |
+
/* Sorting */
|
| 11464 |
+
"sSortAsc": "sorting_asc",
|
| 11465 |
+
"sSortDesc": "sorting_desc",
|
| 11466 |
+
"sSortable": "sorting", /* Sortable in both directions */
|
| 11467 |
+
"sSortableAsc": "sorting_asc_disabled",
|
| 11468 |
+
"sSortableDesc": "sorting_desc_disabled",
|
| 11469 |
+
"sSortableNone": "sorting_disabled",
|
| 11470 |
+
"sSortColumn": "sorting_", /* Note that an int is postfixed for the sorting order */
|
| 11471 |
+
"sSortJUIAsc": "",
|
| 11472 |
+
"sSortJUIDesc": "",
|
| 11473 |
+
"sSortJUI": "",
|
| 11474 |
+
"sSortJUIAscAllowed": "",
|
| 11475 |
+
"sSortJUIDescAllowed": "",
|
| 11476 |
+
"sSortJUIWrapper": "",
|
| 11477 |
+
"sSortIcon": "",
|
| 11478 |
+
|
| 11479 |
+
/* Scrolling */
|
| 11480 |
+
"sScrollWrapper": "dataTables_scroll",
|
| 11481 |
+
"sScrollHead": "dataTables_scrollHead",
|
| 11482 |
+
"sScrollHeadInner": "dataTables_scrollHeadInner",
|
| 11483 |
+
"sScrollBody": "dataTables_scrollBody",
|
| 11484 |
+
"sScrollFoot": "dataTables_scrollFoot",
|
| 11485 |
+
"sScrollFootInner": "dataTables_scrollFootInner",
|
| 11486 |
+
|
| 11487 |
+
/* Misc */
|
| 11488 |
+
"sFooterTH": "",
|
| 11489 |
+
"sJUIHeader": "",
|
| 11490 |
+
"sJUIFooter": ""
|
| 11491 |
+
} );
|
| 11492 |
+
|
| 11493 |
+
|
| 11494 |
+
$.extend( DataTable.ext.oJUIClasses, DataTable.ext.oStdClasses, {
|
| 11495 |
+
/* Two buttons buttons */
|
| 11496 |
+
"sPagePrevEnabled": "fg-button ui-button ui-state-default ui-corner-left",
|
| 11497 |
+
"sPagePrevDisabled": "fg-button ui-button ui-state-default ui-corner-left ui-state-disabled",
|
| 11498 |
+
"sPageNextEnabled": "fg-button ui-button ui-state-default ui-corner-right",
|
| 11499 |
+
"sPageNextDisabled": "fg-button ui-button ui-state-default ui-corner-right ui-state-disabled",
|
| 11500 |
+
"sPageJUINext": "ui-icon ui-icon-circle-arrow-e",
|
| 11501 |
+
"sPageJUIPrev": "ui-icon ui-icon-circle-arrow-w",
|
| 11502 |
+
|
| 11503 |
+
/* Full numbers paging buttons */
|
| 11504 |
+
"sPageButton": "fg-button ui-button ui-state-default",
|
| 11505 |
+
"sPageButtonActive": "fg-button ui-button ui-state-default ui-state-disabled",
|
| 11506 |
+
"sPageButtonStaticDisabled": "fg-button ui-button ui-state-default ui-state-disabled",
|
| 11507 |
+
"sPageFirst": "first ui-corner-tl ui-corner-bl",
|
| 11508 |
+
"sPageLast": "last ui-corner-tr ui-corner-br",
|
| 11509 |
+
|
| 11510 |
+
/* Features */
|
| 11511 |
+
"sPaging": "dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi "+
|
| 11512 |
+
"ui-buttonset-multi paging_", /* Note that the type is postfixed */
|
| 11513 |
+
|
| 11514 |
+
/* Sorting */
|
| 11515 |
+
"sSortAsc": "ui-state-default",
|
| 11516 |
+
"sSortDesc": "ui-state-default",
|
| 11517 |
+
"sSortable": "ui-state-default",
|
| 11518 |
+
"sSortableAsc": "ui-state-default",
|
| 11519 |
+
"sSortableDesc": "ui-state-default",
|
| 11520 |
+
"sSortableNone": "ui-state-default",
|
| 11521 |
+
"sSortJUIAsc": "css_right ui-icon ui-icon-triangle-1-n",
|
| 11522 |
+
"sSortJUIDesc": "css_right ui-icon ui-icon-triangle-1-s",
|
| 11523 |
+
"sSortJUI": "css_right ui-icon ui-icon-carat-2-n-s",
|
| 11524 |
+
"sSortJUIAscAllowed": "css_right ui-icon ui-icon-carat-1-n",
|
| 11525 |
+
"sSortJUIDescAllowed": "css_right ui-icon ui-icon-carat-1-s",
|
| 11526 |
+
"sSortJUIWrapper": "DataTables_sort_wrapper",
|
| 11527 |
+
"sSortIcon": "DataTables_sort_icon",
|
| 11528 |
+
|
| 11529 |
+
/* Scrolling */
|
| 11530 |
+
"sScrollHead": "dataTables_scrollHead ui-state-default",
|
| 11531 |
+
"sScrollFoot": "dataTables_scrollFoot ui-state-default",
|
| 11532 |
+
|
| 11533 |
+
/* Misc */
|
| 11534 |
+
"sFooterTH": "ui-state-default",
|
| 11535 |
+
"sJUIHeader": "fg-toolbar ui-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix",
|
| 11536 |
+
"sJUIFooter": "fg-toolbar ui-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"
|
| 11537 |
+
} );
|
| 11538 |
+
|
| 11539 |
+
/*
|
| 11540 |
+
* Variable: oPagination
|
| 11541 |
+
* Purpose:
|
| 11542 |
+
* Scope: jQuery.fn.dataTableExt
|
| 11543 |
+
*/
|
| 11544 |
+
$.extend( DataTable.ext.oPagination, {
|
| 11545 |
+
/*
|
| 11546 |
+
* Variable: two_button
|
| 11547 |
+
* Purpose: Standard two button (forward/back) pagination
|
| 11548 |
+
* Scope: jQuery.fn.dataTableExt.oPagination
|
| 11549 |
+
*/
|
| 11550 |
+
"two_button": {
|
| 11551 |
+
/*
|
| 11552 |
+
* Function: oPagination.two_button.fnInit
|
| 11553 |
+
* Purpose: Initialise dom elements required for pagination with forward/back buttons only
|
| 11554 |
+
* Returns: -
|
| 11555 |
+
* Inputs: object:oSettings - dataTables settings object
|
| 11556 |
+
* node:nPaging - the DIV which contains this pagination control
|
| 11557 |
+
* function:fnCallbackDraw - draw function which must be called on update
|
| 11558 |
+
*/
|
| 11559 |
+
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
| 11560 |
+
{
|
| 11561 |
+
var oLang = oSettings.oLanguage.oPaginate;
|
| 11562 |
+
var oClasses = oSettings.oClasses;
|
| 11563 |
+
var fnClickHandler = function ( e ) {
|
| 11564 |
+
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
| 11565 |
+
{
|
| 11566 |
+
fnCallbackDraw( oSettings );
|
| 11567 |
+
}
|
| 11568 |
+
};
|
| 11569 |
+
|
| 11570 |
+
var sAppend = (!oSettings.bJUI) ?
|
| 11571 |
+
'<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sPrevious+'</a>'+
|
| 11572 |
+
'<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button">'+oLang.sNext+'</a>'
|
| 11573 |
+
:
|
| 11574 |
+
'<a class="'+oSettings.oClasses.sPagePrevDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUIPrev+'"></span></a>'+
|
| 11575 |
+
'<a class="'+oSettings.oClasses.sPageNextDisabled+'" tabindex="'+oSettings.iTabIndex+'" role="button"><span class="'+oSettings.oClasses.sPageJUINext+'"></span></a>';
|
| 11576 |
+
$(nPaging).append( sAppend );
|
| 11577 |
+
|
| 11578 |
+
var els = $('a', nPaging);
|
| 11579 |
+
var nPrevious = els[0],
|
| 11580 |
+
nNext = els[1];
|
| 11581 |
+
|
| 11582 |
+
oSettings.oApi._fnBindAction( nPrevious, {action: "previous"}, fnClickHandler );
|
| 11583 |
+
oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
|
| 11584 |
+
|
| 11585 |
+
/* ID the first elements only */
|
| 11586 |
+
if ( !oSettings.aanFeatures.p )
|
| 11587 |
+
{
|
| 11588 |
+
nPaging.id = oSettings.sTableId+'_paginate';
|
| 11589 |
+
nPrevious.id = oSettings.sTableId+'_previous';
|
| 11590 |
+
nNext.id = oSettings.sTableId+'_next';
|
| 11591 |
+
|
| 11592 |
+
nPrevious.setAttribute('aria-controls', oSettings.sTableId);
|
| 11593 |
+
nNext.setAttribute('aria-controls', oSettings.sTableId);
|
| 11594 |
+
}
|
| 11595 |
+
},
|
| 11596 |
+
|
| 11597 |
+
/*
|
| 11598 |
+
* Function: oPagination.two_button.fnUpdate
|
| 11599 |
+
* Purpose: Update the two button pagination at the end of the draw
|
| 11600 |
+
* Returns: -
|
| 11601 |
+
* Inputs: object:oSettings - dataTables settings object
|
| 11602 |
+
* function:fnCallbackDraw - draw function to call on page change
|
| 11603 |
+
*/
|
| 11604 |
+
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
| 11605 |
+
{
|
| 11606 |
+
if ( !oSettings.aanFeatures.p )
|
| 11607 |
+
{
|
| 11608 |
+
return;
|
| 11609 |
+
}
|
| 11610 |
+
|
| 11611 |
+
var oClasses = oSettings.oClasses;
|
| 11612 |
+
var an = oSettings.aanFeatures.p;
|
| 11613 |
+
var nNode;
|
| 11614 |
+
|
| 11615 |
+
/* Loop over each instance of the pager */
|
| 11616 |
+
for ( var i=0, iLen=an.length ; i<iLen ; i++ )
|
| 11617 |
+
{
|
| 11618 |
+
nNode = an[i].firstChild;
|
| 11619 |
+
if ( nNode )
|
| 11620 |
+
{
|
| 11621 |
+
/* Previous page */
|
| 11622 |
+
nNode.className = ( oSettings._iDisplayStart === 0 ) ?
|
| 11623 |
+
oClasses.sPagePrevDisabled : oClasses.sPagePrevEnabled;
|
| 11624 |
+
|
| 11625 |
+
/* Next page */
|
| 11626 |
+
nNode = nNode.nextSibling;
|
| 11627 |
+
nNode.className = ( oSettings.fnDisplayEnd() == oSettings.fnRecordsDisplay() ) ?
|
| 11628 |
+
oClasses.sPageNextDisabled : oClasses.sPageNextEnabled;
|
| 11629 |
+
}
|
| 11630 |
+
}
|
| 11631 |
+
}
|
| 11632 |
+
},
|
| 11633 |
+
|
| 11634 |
+
|
| 11635 |
+
/*
|
| 11636 |
+
* Variable: iFullNumbersShowPages
|
| 11637 |
+
* Purpose: Change the number of pages which can be seen
|
| 11638 |
+
* Scope: jQuery.fn.dataTableExt.oPagination
|
| 11639 |
+
*/
|
| 11640 |
+
"iFullNumbersShowPages": 5,
|
| 11641 |
+
|
| 11642 |
+
/*
|
| 11643 |
+
* Variable: full_numbers
|
| 11644 |
+
* Purpose: Full numbers pagination
|
| 11645 |
+
* Scope: jQuery.fn.dataTableExt.oPagination
|
| 11646 |
+
*/
|
| 11647 |
+
"full_numbers": {
|
| 11648 |
+
/*
|
| 11649 |
+
* Function: oPagination.full_numbers.fnInit
|
| 11650 |
+
* Purpose: Initialise dom elements required for pagination with a list of the pages
|
| 11651 |
+
* Returns: -
|
| 11652 |
+
* Inputs: object:oSettings - dataTables settings object
|
| 11653 |
+
* node:nPaging - the DIV which contains this pagination control
|
| 11654 |
+
* function:fnCallbackDraw - draw function which must be called on update
|
| 11655 |
+
*/
|
| 11656 |
+
"fnInit": function ( oSettings, nPaging, fnCallbackDraw )
|
| 11657 |
+
{
|
| 11658 |
+
var oLang = oSettings.oLanguage.oPaginate;
|
| 11659 |
+
var oClasses = oSettings.oClasses;
|
| 11660 |
+
var fnClickHandler = function ( e ) {
|
| 11661 |
+
if ( oSettings.oApi._fnPageChange( oSettings, e.data.action ) )
|
| 11662 |
+
{
|
| 11663 |
+
fnCallbackDraw( oSettings );
|
| 11664 |
+
}
|
| 11665 |
+
};
|
| 11666 |
+
|
| 11667 |
+
$(nPaging).append(
|
| 11668 |
+
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageFirst+'">'+oLang.sFirst+'</a>'+
|
| 11669 |
+
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPagePrevious+'">'+oLang.sPrevious+'</a>'+
|
| 11670 |
+
'<span></span>'+
|
| 11671 |
+
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageNext+'">'+oLang.sNext+'</a>'+
|
| 11672 |
+
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+" "+oClasses.sPageLast+'">'+oLang.sLast+'</a>'
|
| 11673 |
+
);
|
| 11674 |
+
var els = $('a', nPaging);
|
| 11675 |
+
var nFirst = els[0],
|
| 11676 |
+
nPrev = els[1],
|
| 11677 |
+
nNext = els[2],
|
| 11678 |
+
nLast = els[3];
|
| 11679 |
+
|
| 11680 |
+
oSettings.oApi._fnBindAction( nFirst, {action: "first"}, fnClickHandler );
|
| 11681 |
+
oSettings.oApi._fnBindAction( nPrev, {action: "previous"}, fnClickHandler );
|
| 11682 |
+
oSettings.oApi._fnBindAction( nNext, {action: "next"}, fnClickHandler );
|
| 11683 |
+
oSettings.oApi._fnBindAction( nLast, {action: "last"}, fnClickHandler );
|
| 11684 |
+
|
| 11685 |
+
/* ID the first elements only */
|
| 11686 |
+
if ( !oSettings.aanFeatures.p )
|
| 11687 |
+
{
|
| 11688 |
+
nPaging.id = oSettings.sTableId+'_paginate';
|
| 11689 |
+
nFirst.id =oSettings.sTableId+'_first';
|
| 11690 |
+
nPrev.id =oSettings.sTableId+'_previous';
|
| 11691 |
+
nNext.id =oSettings.sTableId+'_next';
|
| 11692 |
+
nLast.id =oSettings.sTableId+'_last';
|
| 11693 |
+
}
|
| 11694 |
+
},
|
| 11695 |
+
|
| 11696 |
+
/*
|
| 11697 |
+
* Function: oPagination.full_numbers.fnUpdate
|
| 11698 |
+
* Purpose: Update the list of page buttons shows
|
| 11699 |
+
* Returns: -
|
| 11700 |
+
* Inputs: object:oSettings - dataTables settings object
|
| 11701 |
+
* function:fnCallbackDraw - draw function to call on page change
|
| 11702 |
+
*/
|
| 11703 |
+
"fnUpdate": function ( oSettings, fnCallbackDraw )
|
| 11704 |
+
{
|
| 11705 |
+
if ( !oSettings.aanFeatures.p )
|
| 11706 |
+
{
|
| 11707 |
+
return;
|
| 11708 |
+
}
|
| 11709 |
+
|
| 11710 |
+
var iPageCount = DataTable.ext.oPagination.iFullNumbersShowPages;
|
| 11711 |
+
var iPageCountHalf = Math.floor(iPageCount / 2);
|
| 11712 |
+
var iPages = Math.ceil((oSettings.fnRecordsDisplay()) / oSettings._iDisplayLength);
|
| 11713 |
+
var iCurrentPage = Math.ceil(oSettings._iDisplayStart / oSettings._iDisplayLength) + 1;
|
| 11714 |
+
var sList = "";
|
| 11715 |
+
var iStartButton, iEndButton, i, iLen;
|
| 11716 |
+
var oClasses = oSettings.oClasses;
|
| 11717 |
+
var anButtons, anStatic, nPaginateList, nNode;
|
| 11718 |
+
var an = oSettings.aanFeatures.p;
|
| 11719 |
+
var fnBind = function (j) {
|
| 11720 |
+
oSettings.oApi._fnBindAction( this, {"page": j+iStartButton-1}, function(e) {
|
| 11721 |
+
/* Use the information in the element to jump to the required page */
|
| 11722 |
+
oSettings.oApi._fnPageChange( oSettings, e.data.page );
|
| 11723 |
+
fnCallbackDraw( oSettings );
|
| 11724 |
+
e.preventDefault();
|
| 11725 |
+
} );
|
| 11726 |
+
};
|
| 11727 |
+
|
| 11728 |
+
/* Pages calculation */
|
| 11729 |
+
if ( oSettings._iDisplayLength === -1 )
|
| 11730 |
+
{
|
| 11731 |
+
iStartButton = 1;
|
| 11732 |
+
iEndButton = 1;
|
| 11733 |
+
iCurrentPage = 1;
|
| 11734 |
+
}
|
| 11735 |
+
else if (iPages < iPageCount)
|
| 11736 |
+
{
|
| 11737 |
+
iStartButton = 1;
|
| 11738 |
+
iEndButton = iPages;
|
| 11739 |
+
}
|
| 11740 |
+
else if (iCurrentPage <= iPageCountHalf)
|
| 11741 |
+
{
|
| 11742 |
+
iStartButton = 1;
|
| 11743 |
+
iEndButton = iPageCount;
|
| 11744 |
+
}
|
| 11745 |
+
else if (iCurrentPage >= (iPages - iPageCountHalf))
|
| 11746 |
+
{
|
| 11747 |
+
iStartButton = iPages - iPageCount + 1;
|
| 11748 |
+
iEndButton = iPages;
|
| 11749 |
+
}
|
| 11750 |
+
else
|
| 11751 |
+
{
|
| 11752 |
+
iStartButton = iCurrentPage - Math.ceil(iPageCount / 2) + 1;
|
| 11753 |
+
iEndButton = iStartButton + iPageCount - 1;
|
| 11754 |
+
}
|
| 11755 |
+
|
| 11756 |
+
|
| 11757 |
+
/* Build the dynamic list */
|
| 11758 |
+
for ( i=iStartButton ; i<=iEndButton ; i++ )
|
| 11759 |
+
{
|
| 11760 |
+
sList += (iCurrentPage !== i) ?
|
| 11761 |
+
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButton+'">'+oSettings.fnFormatNumber(i)+'</a>' :
|
| 11762 |
+
'<a tabindex="'+oSettings.iTabIndex+'" class="'+oClasses.sPageButtonActive+'">'+oSettings.fnFormatNumber(i)+'</a>';
|
| 11763 |
+
}
|
| 11764 |
+
|
| 11765 |
+
/* Loop over each instance of the pager */
|
| 11766 |
+
for ( i=0, iLen=an.length ; i<iLen ; i++ )
|
| 11767 |
+
{
|
| 11768 |
+
nNode = an[i];
|
| 11769 |
+
if ( !nNode.hasChildNodes() )
|
| 11770 |
+
{
|
| 11771 |
+
continue;
|
| 11772 |
+
}
|
| 11773 |
+
|
| 11774 |
+
/* Build up the dynamic list first - html and listeners */
|
| 11775 |
+
$('span:eq(0)', nNode)
|
| 11776 |
+
.html( sList )
|
| 11777 |
+
.children('a').each( fnBind );
|
| 11778 |
+
|
| 11779 |
+
/* Update the permanent button's classes */
|
| 11780 |
+
anButtons = nNode.getElementsByTagName('a');
|
| 11781 |
+
anStatic = [
|
| 11782 |
+
anButtons[0], anButtons[1],
|
| 11783 |
+
anButtons[anButtons.length-2], anButtons[anButtons.length-1]
|
| 11784 |
+
];
|
| 11785 |
+
|
| 11786 |
+
$(anStatic).removeClass( oClasses.sPageButton+" "+oClasses.sPageButtonActive+" "+oClasses.sPageButtonStaticDisabled );
|
| 11787 |
+
$([anStatic[0], anStatic[1]]).addClass(
|
| 11788 |
+
(iCurrentPage==1) ?
|
| 11789 |
+
oClasses.sPageButtonStaticDisabled :
|
| 11790 |
+
oClasses.sPageButton
|
| 11791 |
+
);
|
| 11792 |
+
$([anStatic[2], anStatic[3]]).addClass(
|
| 11793 |
+
(iPages===0 || iCurrentPage===iPages || oSettings._iDisplayLength===-1) ?
|
| 11794 |
+
oClasses.sPageButtonStaticDisabled :
|
| 11795 |
+
oClasses.sPageButton
|
| 11796 |
+
);
|
| 11797 |
+
}
|
| 11798 |
+
}
|
| 11799 |
+
}
|
| 11800 |
+
} );
|
| 11801 |
+
|
| 11802 |
+
$.extend( DataTable.ext.oSort, {
|
| 11803 |
+
/*
|
| 11804 |
+
* text sorting
|
| 11805 |
+
*/
|
| 11806 |
+
"string-pre": function ( a )
|
| 11807 |
+
{
|
| 11808 |
+
if ( typeof a != 'string' ) {
|
| 11809 |
+
a = (a !== null && a.toString) ? a.toString() : '';
|
| 11810 |
+
}
|
| 11811 |
+
return a.toLowerCase();
|
| 11812 |
+
},
|
| 11813 |
+
|
| 11814 |
+
"string-asc": function ( x, y )
|
| 11815 |
+
{
|
| 11816 |
+
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
| 11817 |
+
},
|
| 11818 |
+
|
| 11819 |
+
"string-desc": function ( x, y )
|
| 11820 |
+
{
|
| 11821 |
+
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
| 11822 |
+
},
|
| 11823 |
+
|
| 11824 |
+
|
| 11825 |
+
/*
|
| 11826 |
+
* html sorting (ignore html tags)
|
| 11827 |
+
*/
|
| 11828 |
+
"html-pre": function ( a )
|
| 11829 |
+
{
|
| 11830 |
+
return a.replace( /<.*?>/g, "" ).toLowerCase();
|
| 11831 |
+
},
|
| 11832 |
+
|
| 11833 |
+
"html-asc": function ( x, y )
|
| 11834 |
+
{
|
| 11835 |
+
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
| 11836 |
+
},
|
| 11837 |
+
|
| 11838 |
+
"html-desc": function ( x, y )
|
| 11839 |
+
{
|
| 11840 |
+
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
|
| 11841 |
+
},
|
| 11842 |
+
|
| 11843 |
+
|
| 11844 |
+
/*
|
| 11845 |
+
* date sorting
|
| 11846 |
+
*/
|
| 11847 |
+
"date-pre": function ( a )
|
| 11848 |
+
{
|
| 11849 |
+
var x = Date.parse( a );
|
| 11850 |
+
|
| 11851 |
+
if ( isNaN(x) || x==="" )
|
| 11852 |
+
{
|
| 11853 |
+
x = Date.parse( "01/01/1970 00:00:00" );
|
| 11854 |
+
}
|
| 11855 |
+
return x;
|
| 11856 |
+
},
|
| 11857 |
+
|
| 11858 |
+
"date-asc": function ( x, y )
|
| 11859 |
+
{
|
| 11860 |
+
return x - y;
|
| 11861 |
+
},
|
| 11862 |
+
|
| 11863 |
+
"date-desc": function ( x, y )
|
| 11864 |
+
{
|
| 11865 |
+
return y - x;
|
| 11866 |
+
},
|
| 11867 |
+
|
| 11868 |
+
|
| 11869 |
+
/*
|
| 11870 |
+
* numerical sorting
|
| 11871 |
+
*/
|
| 11872 |
+
"numeric-pre": function ( a )
|
| 11873 |
+
{
|
| 11874 |
+
return (a=="-" || a==="") ? 0 : a*1;
|
| 11875 |
+
},
|
| 11876 |
+
|
| 11877 |
+
"numeric-asc": function ( x, y )
|
| 11878 |
+
{
|
| 11879 |
+
return x - y;
|
| 11880 |
+
},
|
| 11881 |
+
|
| 11882 |
+
"numeric-desc": function ( x, y )
|
| 11883 |
+
{
|
| 11884 |
+
return y - x;
|
| 11885 |
+
}
|
| 11886 |
+
} );
|
| 11887 |
+
|
| 11888 |
+
|
| 11889 |
+
$.extend( DataTable.ext.aTypes, [
|
| 11890 |
+
/*
|
| 11891 |
+
* Function: -
|
| 11892 |
+
* Purpose: Check to see if a string is numeric
|
| 11893 |
+
* Returns: string:'numeric' or null
|
| 11894 |
+
* Inputs: mixed:sText - string to check
|
| 11895 |
+
*/
|
| 11896 |
+
function ( sData )
|
| 11897 |
+
{
|
| 11898 |
+
/* Allow zero length strings as a number */
|
| 11899 |
+
if ( typeof sData === 'number' )
|
| 11900 |
+
{
|
| 11901 |
+
return 'numeric';
|
| 11902 |
+
}
|
| 11903 |
+
else if ( typeof sData !== 'string' )
|
| 11904 |
+
{
|
| 11905 |
+
return null;
|
| 11906 |
+
}
|
| 11907 |
+
|
| 11908 |
+
var sValidFirstChars = "0123456789-";
|
| 11909 |
+
var sValidChars = "0123456789.";
|
| 11910 |
+
var Char;
|
| 11911 |
+
var bDecimal = false;
|
| 11912 |
+
|
| 11913 |
+
/* Check for a valid first char (no period and allow negatives) */
|
| 11914 |
+
Char = sData.charAt(0);
|
| 11915 |
+
if (sValidFirstChars.indexOf(Char) == -1)
|
| 11916 |
+
{
|
| 11917 |
+
return null;
|
| 11918 |
+
}
|
| 11919 |
+
|
| 11920 |
+
/* Check all the other characters are valid */
|
| 11921 |
+
for ( var i=1 ; i<sData.length ; i++ )
|
| 11922 |
+
{
|
| 11923 |
+
Char = sData.charAt(i);
|
| 11924 |
+
if (sValidChars.indexOf(Char) == -1)
|
| 11925 |
+
{
|
| 11926 |
+
return null;
|
| 11927 |
+
}
|
| 11928 |
+
|
| 11929 |
+
/* Only allowed one decimal place... */
|
| 11930 |
+
if ( Char == "." )
|
| 11931 |
+
{
|
| 11932 |
+
if ( bDecimal )
|
| 11933 |
+
{
|
| 11934 |
+
return null;
|
| 11935 |
+
}
|
| 11936 |
+
bDecimal = true;
|
| 11937 |
+
}
|
| 11938 |
+
}
|
| 11939 |
+
|
| 11940 |
+
return 'numeric';
|
| 11941 |
+
},
|
| 11942 |
+
|
| 11943 |
+
/*
|
| 11944 |
+
* Function: -
|
| 11945 |
+
* Purpose: Check to see if a string is actually a formatted date
|
| 11946 |
+
* Returns: string:'date' or null
|
| 11947 |
+
* Inputs: string:sText - string to check
|
| 11948 |
+
*/
|
| 11949 |
+
function ( sData )
|
| 11950 |
+
{
|
| 11951 |
+
var iParse = Date.parse(sData);
|
| 11952 |
+
if ( (iParse !== null && !isNaN(iParse)) || (typeof sData === 'string' && sData.length === 0) )
|
| 11953 |
+
{
|
| 11954 |
+
return 'date';
|
| 11955 |
+
}
|
| 11956 |
+
return null;
|
| 11957 |
+
},
|
| 11958 |
+
|
| 11959 |
+
/*
|
| 11960 |
+
* Function: -
|
| 11961 |
+
* Purpose: Check to see if a string should be treated as an HTML string
|
| 11962 |
+
* Returns: string:'html' or null
|
| 11963 |
+
* Inputs: string:sText - string to check
|
| 11964 |
+
*/
|
| 11965 |
+
function ( sData )
|
| 11966 |
+
{
|
| 11967 |
+
if ( typeof sData === 'string' && sData.indexOf('<') != -1 && sData.indexOf('>') != -1 )
|
| 11968 |
+
{
|
| 11969 |
+
return 'html';
|
| 11970 |
+
}
|
| 11971 |
+
return null;
|
| 11972 |
+
}
|
| 11973 |
+
] );
|
| 11974 |
+
|
| 11975 |
+
|
| 11976 |
+
// jQuery aliases
|
| 11977 |
+
$.fn.DataTable = DataTable;
|
| 11978 |
+
$.fn.dataTable = DataTable;
|
| 11979 |
+
$.fn.dataTableSettings = DataTable.settings;
|
| 11980 |
+
$.fn.dataTableExt = DataTable.ext;
|
| 11981 |
+
|
| 11982 |
+
|
| 11983 |
+
// Information about events fired by DataTables - for documentation.
|
| 11984 |
+
/**
|
| 11985 |
+
* Draw event, fired whenever the table is redrawn on the page, at the same point as
|
| 11986 |
+
* fnDrawCallback. This may be useful for binding events or performing calculations when
|
| 11987 |
+
* the table is altered at all.
|
| 11988 |
+
* @name DataTable#draw
|
| 11989 |
+
* @event
|
| 11990 |
+
* @param {event} e jQuery event object
|
| 11991 |
+
* @param {object} o DataTables settings object {@link DataTable.models.oSettings}
|
| 11992 |
+
*/
|
| 11993 |
+
|
| 11994 |
+
/**
|
| 11995 |
+
* Filter event, fired when the filtering applied to the table (using the build in global
|
| 11996 |
+
* global filter, or column filters) is altered.
|
| 11997 |
+
* @name DataTable#filter
|
| 11998 |
+
* @event
|
| 11999 |
+
* @param {event} e jQuery event object
|
| 12000 |
+
* @param {object} o DataTables settings object {@link DataTable.models.oSettings}
|
| 12001 |
+
*/
|
| 12002 |
+
|
| 12003 |
+
/**
|
| 12004 |
+
* Page change event, fired when the paging of the table is altered.
|
| 12005 |
+
* @name DataTable#page
|
| 12006 |
+
* @event
|
| 12007 |
+
* @param {event} e jQuery event object
|
| 12008 |
+
* @param {object} o DataTables settings object {@link DataTable.models.oSettings}
|
| 12009 |
+
*/
|
| 12010 |
+
|
| 12011 |
+
/**
|
| 12012 |
+
* Sort event, fired when the sorting applied to the table is altered.
|
| 12013 |
+
* @name DataTable#sort
|
| 12014 |
+
* @event
|
| 12015 |
+
* @param {event} e jQuery event object
|
| 12016 |
+
* @param {object} o DataTables settings object {@link DataTable.models.oSettings}
|
| 12017 |
+
*/
|
| 12018 |
+
|
| 12019 |
+
/**
|
| 12020 |
+
* DataTables initialisation complete event, fired when the table is fully drawn,
|
| 12021 |
+
* including Ajax data loaded, if Ajax data is required.
|
| 12022 |
+
* @name DataTable#init
|
| 12023 |
+
* @event
|
| 12024 |
+
* @param {event} e jQuery event object
|
| 12025 |
+
* @param {object} oSettings DataTables settings object
|
| 12026 |
+
* @param {object} json The JSON object request from the server - only
|
| 12027 |
+
* present if client-side Ajax sourced data is used</li></ol>
|
| 12028 |
+
*/
|
| 12029 |
+
|
| 12030 |
+
/**
|
| 12031 |
+
* State save event, fired when the table has changed state a new state save is required.
|
| 12032 |
+
* This method allows modification of the state saving object prior to actually doing the
|
| 12033 |
+
* save, including addition or other state properties (for plug-ins) or modification
|
| 12034 |
+
* of a DataTables core property.
|
| 12035 |
+
* @name DataTable#stateSaveParams
|
| 12036 |
+
* @event
|
| 12037 |
+
* @param {event} e jQuery event object
|
| 12038 |
+
* @param {object} oSettings DataTables settings object
|
| 12039 |
+
* @param {object} json The state information to be saved
|
| 12040 |
+
*/
|
| 12041 |
+
|
| 12042 |
+
/**
|
| 12043 |
+
* State load event, fired when the table is loading state from the stored data, but
|
| 12044 |
+
* prior to the settings object being modified by the saved state - allowing modification
|
| 12045 |
+
* of the saved state is required or loading of state for a plug-in.
|
| 12046 |
+
* @name DataTable#stateLoadParams
|
| 12047 |
+
* @event
|
| 12048 |
+
* @param {event} e jQuery event object
|
| 12049 |
+
* @param {object} oSettings DataTables settings object
|
| 12050 |
+
* @param {object} json The saved state information
|
| 12051 |
+
*/
|
| 12052 |
+
|
| 12053 |
+
/**
|
| 12054 |
+
* State loaded event, fired when state has been loaded from stored data and the settings
|
| 12055 |
+
* object has been modified by the loaded data.
|
| 12056 |
+
* @name DataTable#stateLoaded
|
| 12057 |
+
* @event
|
| 12058 |
+
* @param {event} e jQuery event object
|
| 12059 |
+
* @param {object} oSettings DataTables settings object
|
| 12060 |
+
* @param {object} json The saved state information
|
| 12061 |
+
*/
|
| 12062 |
+
|
| 12063 |
+
/**
|
| 12064 |
+
* Processing event, fired when DataTables is doing some kind of processing (be it,
|
| 12065 |
+
* sort, filter or anything else). Can be used to indicate to the end user that
|
| 12066 |
+
* there is something happening, or that something has finished.
|
| 12067 |
+
* @name DataTable#processing
|
| 12068 |
+
* @event
|
| 12069 |
+
* @param {event} e jQuery event object
|
| 12070 |
+
* @param {object} oSettings DataTables settings object
|
| 12071 |
+
* @param {boolean} bShow Flag for if DataTables is doing processing or not
|
| 12072 |
+
*/
|
| 12073 |
+
|
| 12074 |
+
/**
|
| 12075 |
+
* Ajax (XHR) event, fired whenever an Ajax request is completed from a request to
|
| 12076 |
+
* made to the server for new data (note that this trigger is called in fnServerData,
|
| 12077 |
+
* if you override fnServerData and which to use this event, you need to trigger it in
|
| 12078 |
+
* you success function).
|
| 12079 |
+
* @name DataTable#xhr
|
| 12080 |
+
* @event
|
| 12081 |
+
* @param {event} e jQuery event object
|
| 12082 |
+
* @param {object} o DataTables settings object {@link DataTable.models.oSettings}
|
| 12083 |
+
* @param {object} json JSON returned from the server
|
| 12084 |
+
*/
|
| 12085 |
+
|
| 12086 |
+
/**
|
| 12087 |
+
* Destroy event, fired when the DataTable is destroyed by calling fnDestroy or passing
|
| 12088 |
+
* the bDestroy:true parameter in the initialisation object. This can be used to remove
|
| 12089 |
+
* bound events, added DOM nodes, etc.
|
| 12090 |
+
* @name DataTable#destroy
|
| 12091 |
+
* @event
|
| 12092 |
+
* @param {event} e jQuery event object
|
| 12093 |
+
* @param {object} o DataTables settings object {@link DataTable.models.oSettings}
|
| 12094 |
+
*/
|
| 12095 |
+
}));
|
| 12096 |
+
|
| 12097 |
+
}(window, document));
|
| 12098 |
+
|
js/yks_mc_tinymce_button.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
( function() {
|
| 2 |
+
|
| 3 |
+
// grabbing our data from class.yksemeBase.php
|
| 4 |
+
var values = [yks_mc_lists_data.lists][0];
|
| 5 |
+
var values_length = values.length;
|
| 6 |
+
|
| 7 |
+
if ( values_length == 0 ) {
|
| 8 |
+
values = [
|
| 9 |
+
{text: "Please Import Some MailChimp Lists", value: "-"}
|
| 10 |
+
];
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
// test data
|
| 14 |
+
/*
|
| 15 |
+
console.log(values);
|
| 16 |
+
console.log('The array is '+values[0].length+' deep');
|
| 17 |
+
|
| 18 |
+
// working value
|
| 19 |
+
var values = [
|
| 20 |
+
{text: "evan herman personal site newsletter", value: "eff28bd985"},
|
| 21 |
+
{text: "test mc 2", value: "0b071c0bd1"},
|
| 22 |
+
{text: "testing list for mailchimp plugin", value: "057fb8cc2e"}
|
| 23 |
+
];
|
| 24 |
+
*/
|
| 25 |
+
|
| 26 |
+
tinymce.PluginManager.add( 'yks_mc_tinymce_button', function( editor, url ) {
|
| 27 |
+
|
| 28 |
+
// Add a button that opens a window
|
| 29 |
+
editor.addButton( 'yks_mc_tinymce_button_key', {
|
| 30 |
+
|
| 31 |
+
icon: 'yks-mc-icon-yikes-button-image',
|
| 32 |
+
title: 'Yikes Easy MailChimp Forms',
|
| 33 |
+
onclick: function() {
|
| 34 |
+
// Open window
|
| 35 |
+
if ( values_length != 0 ) {
|
| 36 |
+
editor.windowManager.open( {
|
| 37 |
+
title: 'Select Your MailChimp Form',
|
| 38 |
+
body: [
|
| 39 |
+
{
|
| 40 |
+
type: 'listbox',
|
| 41 |
+
name: 'list_id',
|
| 42 |
+
label: 'MailChimp List',
|
| 43 |
+
values: values
|
| 44 |
+
},
|
| 45 |
+
{
|
| 46 |
+
type: 'textbox',
|
| 47 |
+
name: 'submit_button_text',
|
| 48 |
+
label: 'Submit Button Text'
|
| 49 |
+
}
|
| 50 |
+
],
|
| 51 |
+
id: 'yks_mc_tinyMCE_modal', // and an ID to the modal, to target it easier
|
| 52 |
+
onsubmit: function( e ) {
|
| 53 |
+
// Insert content when the window form is submitted
|
| 54 |
+
// store the mailchimp list ID
|
| 55 |
+
var mailChimp_form_id = e.data.list_id;
|
| 56 |
+
// store the submit button text
|
| 57 |
+
var submit_button_text = e.data.submit_button_text;
|
| 58 |
+
// check the submit button text
|
| 59 |
+
// if empty, default it to Submit
|
| 60 |
+
// if not empty, use the specified text
|
| 61 |
+
if ( submit_button_text == '' ) {
|
| 62 |
+
var submit_button_text = 'Submit';
|
| 63 |
+
}
|
| 64 |
+
if ( mailChimp_form_id == '-' ) {
|
| 65 |
+
alert("Don't forget to import lists first!");
|
| 66 |
+
return false;
|
| 67 |
+
} else {
|
| 68 |
+
editor.insertContent( '[yks-mailchimp-list id="'+mailChimp_form_id+'" submit_text="'+submit_button_text+'"]' );
|
| 69 |
+
}
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
} );
|
| 73 |
+
// if no lists have been imported
|
| 74 |
+
// lets alert the user
|
| 75 |
+
} else {
|
| 76 |
+
tinyMCE.activeEditor.windowManager.alert("Error: You need to import some MailChimp lists before you can add any! Head over to 'MailChimp Forms > Manage List Forms' to get started.");
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
}
|
| 80 |
+
|
| 81 |
+
} );
|
| 82 |
+
|
| 83 |
+
} );
|
| 84 |
+
|
| 85 |
+
} )();
|
languages/Lanages To Translate To.txt
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Lanaguages Complete
|
| 2 |
+
-------------------
|
| 3 |
+
Viatnemese - vi
|
| 4 |
+
Swedish - sv_SE
|
| 5 |
+
Hindi - hi_IN
|
| 6 |
+
Chinese - zh_CN
|
| 7 |
+
Hong Kong - zh_HK
|
| 8 |
+
Taiwanese - zh_TW
|
| 9 |
+
Greek - el_GR
|
| 10 |
+
Hebrew - he_IL
|
| 11 |
+
Korean - ko_KR
|
| 12 |
+
Persian - fa_IR
|
| 13 |
+
Romanian - ro_RO
|
| 14 |
+
Tamil , Sri Lanka - ta_LK
|
| 15 |
+
Urdu - ur
|
| 16 |
+
English - en_US
|
| 17 |
+
Arabic - ar_AR
|
| 18 |
+
French - fr_FR
|
| 19 |
+
Portugese (European) - pt_PT
|
| 20 |
+
Portugese (Brazilian)- pt_BR
|
| 21 |
+
Russian - ru_RU
|
| 22 |
+
Italian - it_IT
|
| 23 |
+
Japanese - ja
|
| 24 |
+
German - de_DE
|
| 25 |
+
Welsh - cy
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
To Do:
|
| 29 |
+
---------------------------
|
| 30 |
+
If you'd like YIKES Inc. Easy MailChimp Extender translated into another language than the one above, please send a request to evan@yikesinc.com
|
languages/yikes-inc-easy-mailchimp-extender-ar_AR.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-ar_AR.po
ADDED
|
@@ -0,0 +1,753 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:06-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:45-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: ar\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "نشكركم على الطلب"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr "أشكركم على الاشتراك! التحقق من بريدك الالكتروني لرسالة التأكيد."
|
| 28 |
+
|
| 29 |
+
#: .././classes/class.yksemeBase.php:116
|
| 30 |
+
msgid "Select Your Area of Interest"
|
| 31 |
+
msgstr "حدد اهتماماتك"
|
| 32 |
+
|
| 33 |
+
#: .././classes/class.yksemeBase.php:917
|
| 34 |
+
msgid "Click on a subscriber to see further information"
|
| 35 |
+
msgstr "انقر على مشترك لمعرفة مزيد من المعلومات"
|
| 36 |
+
|
| 37 |
+
#: .././classes/class.yksemeBase.php:920
|
| 38 |
+
msgid "E-Mail"
|
| 39 |
+
msgstr "البريد الإلكتروني"
|
| 40 |
+
|
| 41 |
+
#: .././classes/class.yksemeBase.php:921
|
| 42 |
+
msgid "Date Subscribed"
|
| 43 |
+
msgstr "تاريخ المشترك"
|
| 44 |
+
|
| 45 |
+
#: .././classes/class.yksemeBase.php:941
|
| 46 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 47 |
+
msgstr "آسف لم يكن لديك حاليا أي مشترك في هذه القائمة!"
|
| 48 |
+
|
| 49 |
+
#: .././classes/class.yksemeBase.php:998
|
| 50 |
+
msgid "Back to Subscriber List"
|
| 51 |
+
msgstr "العودة إلى قائمة المشترك"
|
| 52 |
+
|
| 53 |
+
#: .././classes/class.yksemeBase.php:999
|
| 54 |
+
msgid "Subscriber Details"
|
| 55 |
+
msgstr "تفاصيل المشترك"
|
| 56 |
+
|
| 57 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 58 |
+
msgid "Overview"
|
| 59 |
+
msgstr "نظرة عامة"
|
| 60 |
+
|
| 61 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 62 |
+
msgid "First Name"
|
| 63 |
+
msgstr "الاسم الأول"
|
| 64 |
+
|
| 65 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 66 |
+
msgid "Last Updated"
|
| 67 |
+
msgstr "آخر تحديث"
|
| 68 |
+
|
| 69 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 70 |
+
msgid "Preferred Email Type"
|
| 71 |
+
msgstr "يفضل نوع البريد الإلكتروني"
|
| 72 |
+
|
| 73 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 74 |
+
msgid "Last Name"
|
| 75 |
+
msgstr "اسم العائلة"
|
| 76 |
+
|
| 77 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 78 |
+
msgid "Language"
|
| 79 |
+
msgstr "لغة"
|
| 80 |
+
|
| 81 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 82 |
+
msgid "Groups Subscribed To"
|
| 83 |
+
msgstr "المجموعات المشترك بها ل"
|
| 84 |
+
|
| 85 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 86 |
+
msgid "Subscriber Notes"
|
| 87 |
+
msgstr "ملاحظات المشتركين"
|
| 88 |
+
|
| 89 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 90 |
+
msgid "Written by"
|
| 91 |
+
msgstr "كتبه"
|
| 92 |
+
|
| 93 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 94 |
+
msgid "Created on"
|
| 95 |
+
msgstr "تم إنشاؤها على"
|
| 96 |
+
|
| 97 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 98 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 99 |
+
msgid "MailChimp Forms"
|
| 100 |
+
msgstr "أشكال MailChimp"
|
| 101 |
+
|
| 102 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 103 |
+
msgid "MailChimp Settings"
|
| 104 |
+
msgstr "إعدادات MailChimp"
|
| 105 |
+
|
| 106 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 107 |
+
msgid "Manage List Forms"
|
| 108 |
+
msgstr "إدارة قائمة أشكال"
|
| 109 |
+
|
| 110 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 111 |
+
msgid "About YIKES, Inc."
|
| 112 |
+
msgstr "حول YIKES Inc."
|
| 113 |
+
|
| 114 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 115 |
+
msgid "One or more fields are empty"
|
| 116 |
+
msgstr "حقل واحد أو أكثر فارغة"
|
| 117 |
+
|
| 118 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 119 |
+
msgid "Your List Was Successfully Saved!"
|
| 120 |
+
msgstr "قائمة تم حفظ بنجاح!"
|
| 121 |
+
|
| 122 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 123 |
+
msgid "I'm sorry there was an error with your request."
|
| 124 |
+
msgstr "أنا آسف كان هناك خطأ مع طلبك."
|
| 125 |
+
|
| 126 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 127 |
+
msgid "MailChimp List name"
|
| 128 |
+
msgstr "اسم قائمة MailChimp"
|
| 129 |
+
|
| 130 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 131 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 132 |
+
#, php-format
|
| 133 |
+
msgid "%1$s"
|
| 134 |
+
msgstr ""
|
| 135 |
+
|
| 136 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 137 |
+
msgid "MailChimp List ID"
|
| 138 |
+
msgstr "قائمة MailChimp ID"
|
| 139 |
+
|
| 140 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 141 |
+
msgid "Shortcode"
|
| 142 |
+
msgstr "رمز قصير"
|
| 143 |
+
|
| 144 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 145 |
+
msgid ""
|
| 146 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 147 |
+
msgstr "لصق هذا الرمز القصير في كل ما الصفحة أو إضافة تريد إضافة هذا النموذج ل"
|
| 148 |
+
|
| 149 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 150 |
+
msgid "PHP Snippet"
|
| 151 |
+
msgstr "مقتطف PHP"
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 154 |
+
msgid "Use this code to add this form to a template file"
|
| 155 |
+
msgstr "استخدام هذا الرمز لإضافة هذا النموذج إلى ملف القالب"
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 158 |
+
msgid "Number of Subscribers"
|
| 159 |
+
msgstr "عدد المشتركين"
|
| 160 |
+
|
| 161 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 162 |
+
msgid "Form Fields"
|
| 163 |
+
msgstr "حقول النموذج"
|
| 164 |
+
|
| 165 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 166 |
+
msgid ""
|
| 167 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 168 |
+
msgstr ""
|
| 169 |
+
"تحقق من الحقول التي تريد تضمينها في النموذج الخاص بك (مطلوب عنوان البريد "
|
| 170 |
+
"الإلكتروني)."
|
| 171 |
+
|
| 172 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 173 |
+
msgid ""
|
| 174 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 175 |
+
msgstr "استخدم الأسهم الخضراء لسحب وإسقاط الحقول وإعادة ترتيب ترتيبها."
|
| 176 |
+
|
| 177 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 178 |
+
msgid "Active Fields"
|
| 179 |
+
msgstr "الحقول نشطة"
|
| 180 |
+
|
| 181 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 182 |
+
msgid "Drag"
|
| 183 |
+
msgstr "سحب المكابح"
|
| 184 |
+
|
| 185 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 186 |
+
msgid "drop"
|
| 187 |
+
msgstr "قطرة"
|
| 188 |
+
|
| 189 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 190 |
+
msgid "Merge field"
|
| 191 |
+
msgstr "حقل دمج"
|
| 192 |
+
|
| 193 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 194 |
+
msgid "Placeholder"
|
| 195 |
+
msgstr "نائب"
|
| 196 |
+
|
| 197 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 198 |
+
msgid "Redirect User On Submission"
|
| 199 |
+
msgstr "إعادة توجيه المستخدم في تقديم"
|
| 200 |
+
|
| 201 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 202 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 203 |
+
msgstr ""
|
| 204 |
+
"اختيار صفحة أو مجموعة URL مخصص لإعادة توجيه المستخدم إلى بعد أن تقدم النموذج."
|
| 205 |
+
|
| 206 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 207 |
+
msgid "Select A Post/Page"
|
| 208 |
+
msgstr "حدد وظيفة / صفحة"
|
| 209 |
+
|
| 210 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 211 |
+
msgid "Save Form Settings"
|
| 212 |
+
msgstr "حفظ إعدادات نموذج"
|
| 213 |
+
|
| 214 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 215 |
+
msgid "Delete Form"
|
| 216 |
+
msgstr "حذف نموذج"
|
| 217 |
+
|
| 218 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 219 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 220 |
+
msgstr "إعادة استيراد نموذج من الحقول MailChimp"
|
| 221 |
+
|
| 222 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 223 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 224 |
+
msgstr "توقيع البيانات في النشرة الإخبارية MAILCHIMP الاستبدال-في هذا النص"
|
| 225 |
+
|
| 226 |
+
#: .././pages/about.php:27
|
| 227 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 228 |
+
msgstr "YIKES inc., تصميم وتطوير المواقع الإلكترونية"
|
| 229 |
+
|
| 230 |
+
#: .././pages/about.php:29
|
| 231 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 232 |
+
msgstr "فعالة، حلول الويب الذكية، والمصممة بشكل جميل"
|
| 233 |
+
|
| 234 |
+
#: .././pages/about.php:32
|
| 235 |
+
msgid ""
|
| 236 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 237 |
+
"custom WordPress themes and plugins every day."
|
| 238 |
+
msgstr ""
|
| 239 |
+
"يقع في حي YIKES فيشتاون فيلادلفيا حيث نبني ورد المواضيع والإضافات مخصصة كل "
|
| 240 |
+
"يوم"
|
| 241 |
+
|
| 242 |
+
#: .././pages/about.php:36
|
| 243 |
+
msgid ""
|
| 244 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 245 |
+
"WordCamps"
|
| 246 |
+
msgstr "في YIKES نحب وورد! شارك في المالك، قدم تريسي يفيسك في WordCamps"
|
| 247 |
+
|
| 248 |
+
#: .././pages/about.php:36
|
| 249 |
+
msgid "and"
|
| 250 |
+
msgstr "و"
|
| 251 |
+
|
| 252 |
+
#: .././pages/about.php:36
|
| 253 |
+
msgid "She also teaches WordPress classes for"
|
| 254 |
+
msgstr "وقالت انها أيضا يعلم الطبقات وورد ل"
|
| 255 |
+
|
| 256 |
+
#: .././pages/about.php:40
|
| 257 |
+
msgid ""
|
| 258 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 259 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 260 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 261 |
+
"financially sustainable local economy. We even have a"
|
| 262 |
+
msgstr ""
|
| 263 |
+
"بالإضافة إلى اتخاذ مواقع وورد كبيرة ملتزمون ونحن أيضا لحركة الأعمال التجارية "
|
| 264 |
+
"المستدامة. نلاحظ خط القاع الثلاثي: الناس، الكوكب، الربح والعمل على المساعدة "
|
| 265 |
+
"في بناء اقتصاد أكثر محلية مستدامة اجتماعيا وبيئيا وماليا. لدينا حتى"
|
| 266 |
+
|
| 267 |
+
#: .././pages/about.php:40
|
| 268 |
+
msgid "LEED Platinum office"
|
| 269 |
+
msgstr "مكتب LEED البلاتينية"
|
| 270 |
+
|
| 271 |
+
#: .././pages/about.php:44
|
| 272 |
+
msgid ""
|
| 273 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 274 |
+
"learn more about us, please visit"
|
| 275 |
+
msgstr ""
|
| 276 |
+
"إذا كنت ترغب في استئجار لنا لتطوير وورد، أو مجرد تريد معرفة المزيد عنا، يرجى "
|
| 277 |
+
"زيارة"
|
| 278 |
+
|
| 279 |
+
#: .././pages/lists.php:8
|
| 280 |
+
msgid "No forms have been added yet."
|
| 281 |
+
msgstr "لم يتم إضافة أي أشكال بعد."
|
| 282 |
+
|
| 283 |
+
#: .././pages/lists.php:39
|
| 284 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 285 |
+
msgstr "عفوا .. معرف القائمة التي دخلت على ما يبدو غير صحيحة."
|
| 286 |
+
|
| 287 |
+
#: .././pages/lists.php:44
|
| 288 |
+
msgid "There was an error!"
|
| 289 |
+
msgstr "آسف، هناك خطأ."
|
| 290 |
+
|
| 291 |
+
#: .././pages/lists.php:135
|
| 292 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 293 |
+
msgstr "تحتاج إلى تحديد قائمة Mailchimp من أجل إنشاء نموذج لذلك"
|
| 294 |
+
|
| 295 |
+
#: .././pages/lists.php:173
|
| 296 |
+
msgid "Are you sure you want to delete this form?"
|
| 297 |
+
msgstr "هل أنت متأكد أنك تريد حذف هذا الشكل؟"
|
| 298 |
+
|
| 299 |
+
#: .././pages/lists.php:206
|
| 300 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 301 |
+
msgstr "هل أنت متأكد من أنك تريد إعادة استيراد حقول الخاص بك من MailChimp؟"
|
| 302 |
+
|
| 303 |
+
#: .././pages/lists.php:228
|
| 304 |
+
msgid "Looks like this form is already up to date!"
|
| 305 |
+
msgstr "يبدو مثل هذا النموذج هو بالفعل حتى الآن!"
|
| 306 |
+
|
| 307 |
+
#: .././pages/lists.php:326
|
| 308 |
+
msgid "Are you sure you want to unsubscribe"
|
| 309 |
+
msgstr "فهل تريد بالتأكيد المواصلة؟"
|
| 310 |
+
|
| 311 |
+
#: .././pages/lists.php:326
|
| 312 |
+
msgid "from this list?"
|
| 313 |
+
msgstr "en esta lista?"
|
| 314 |
+
|
| 315 |
+
#: .././pages/lists.php:342
|
| 316 |
+
msgid "was successfully unsubscribed from this list."
|
| 317 |
+
msgstr "fue darme de baja con éxito de esta lista."
|
| 318 |
+
|
| 319 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 320 |
+
#: .././pages/options.php:416
|
| 321 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 322 |
+
msgstr "أشكال سهلة Mailchimp بواسطة YIKES inc."
|
| 323 |
+
|
| 324 |
+
#: .././pages/lists.php:454
|
| 325 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 326 |
+
msgstr ""
|
| 327 |
+
"قبل أن تتمكن من إضافة أشكال MailChimp إلى موقع الويب الخاص بك، تحتاج إلى"
|
| 328 |
+
|
| 329 |
+
#: .././pages/lists.php:454
|
| 330 |
+
msgid "go to the MailChimp Settings page"
|
| 331 |
+
msgstr "انتقل إلى صفحة إعدادات MailChimp"
|
| 332 |
+
|
| 333 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 334 |
+
msgid "and add your API Key."
|
| 335 |
+
msgstr "وإضافة مفتاح API الخاص بك."
|
| 336 |
+
|
| 337 |
+
#: .././pages/lists.php:462
|
| 338 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 339 |
+
msgstr "يجب عليك إدخال مفتاح API صالحة لاستيراد وإدارة القوائم الخاصة بك."
|
| 340 |
+
|
| 341 |
+
#: .././pages/lists.php:473
|
| 342 |
+
msgid "Your Lists"
|
| 343 |
+
msgstr "قوائم الخاص"
|
| 344 |
+
|
| 345 |
+
#: .././pages/lists.php:483
|
| 346 |
+
msgid "Manage Forms"
|
| 347 |
+
msgstr "إدارة قائمة أشكال"
|
| 348 |
+
|
| 349 |
+
#: .././pages/options.php:41
|
| 350 |
+
msgid "The options were saved successfully!"
|
| 351 |
+
msgstr "تم حفظ الخيارات بنجاح!"
|
| 352 |
+
|
| 353 |
+
#: .././pages/options.php:44
|
| 354 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 355 |
+
msgstr "تعذر حفظ الخيارات (أو أنك لم تغييرها)."
|
| 356 |
+
|
| 357 |
+
#: .././pages/options.php:96
|
| 358 |
+
msgid "Valid API Key"
|
| 359 |
+
msgstr "صالح مفتاح API"
|
| 360 |
+
|
| 361 |
+
#: .././pages/options.php:102
|
| 362 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 363 |
+
msgstr "آسف، وهذا هو مفتاح API MailChimp صالح."
|
| 364 |
+
|
| 365 |
+
#: .././pages/options.php:108
|
| 366 |
+
msgid ""
|
| 367 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 368 |
+
"further information."
|
| 369 |
+
msgstr ""
|
| 370 |
+
"آسف، وهذا هو مفتاح API MailChimp صالح. يرجى مراجعة وحدة التحكم للحصول على "
|
| 371 |
+
"مزيد من المعلومات."
|
| 372 |
+
|
| 373 |
+
#: .././pages/options.php:117
|
| 374 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 375 |
+
msgstr "خطأ: الرجاء إدخال صالحة البريد الشمبانزي API مفتاح."
|
| 376 |
+
|
| 377 |
+
#: .././pages/options.php:199
|
| 378 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 379 |
+
msgstr "إدارة إعدادات أشكال Mailchimp"
|
| 380 |
+
|
| 381 |
+
#: .././pages/options.php:205
|
| 382 |
+
msgid "WordPress Version Number Error"
|
| 383 |
+
msgstr "النسخة ورد"
|
| 384 |
+
|
| 385 |
+
#: .././pages/options.php:206
|
| 386 |
+
msgid ""
|
| 387 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 388 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 389 |
+
"and posts unless you update to 3.9 or later."
|
| 390 |
+
msgstr ""
|
| 391 |
+
"نحن آسفون، ولكن يبدو أن لديك تستخدم نسخة قديمة من وورد. فلن تكون قادرا على "
|
| 392 |
+
"الوصول إلى زر tinyMCE لإدراج أشكال في صفحات والمشاركات إذا لم تقم بتحديث إلى "
|
| 393 |
+
"3.9 أو في وقت لاحق."
|
| 394 |
+
|
| 395 |
+
#: .././pages/options.php:215
|
| 396 |
+
msgid "LocalHost Detected :"
|
| 397 |
+
msgstr ":الكشف عن LocalHost"
|
| 398 |
+
|
| 399 |
+
#: .././pages/options.php:216
|
| 400 |
+
msgid ""
|
| 401 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 402 |
+
msgstr "أشكال سهلة Mailchimp بواسطة YIKES inc."
|
| 403 |
+
|
| 404 |
+
#: .././pages/options.php:217
|
| 405 |
+
msgid ""
|
| 406 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 407 |
+
msgstr ""
|
| 408 |
+
"إذا كنت غير قادر على التحقق من صحة مفتاح API الخاص بك، وتتلقى رسالة الخطأ"
|
| 409 |
+
|
| 410 |
+
#: .././pages/options.php:217
|
| 411 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 412 |
+
msgstr "\"SSL المشكلة الشهادة: غير قادر على الحصول على شهادة المصدر المحلي \""
|
| 413 |
+
|
| 414 |
+
#: .././pages/options.php:217
|
| 415 |
+
msgid "follow the tutorial located "
|
| 416 |
+
msgstr "اتبع البرنامج التعليمي الموجود"
|
| 417 |
+
|
| 418 |
+
#: .././pages/options.php:230
|
| 419 |
+
msgid "Your Mailchimp API Key"
|
| 420 |
+
msgstr "لديك مفتاح API Mailchimp"
|
| 421 |
+
|
| 422 |
+
#: .././pages/options.php:238
|
| 423 |
+
msgid ""
|
| 424 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 425 |
+
"site to communicate with your MailChimp account."
|
| 426 |
+
msgstr ""
|
| 427 |
+
"يرجى إدخال MailChimp API الرئيسية أعلاه. ويسمح مفتاح API موقع وورد الخاص بك "
|
| 428 |
+
"للاتصال مع حساب MailChimp الخاص بك."
|
| 429 |
+
|
| 430 |
+
#: .././pages/options.php:239
|
| 431 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 432 |
+
msgstr "لمزيد من المساعدة، يمكنك زيارة المقالة MailChimp الدعم"
|
| 433 |
+
|
| 434 |
+
#: .././pages/options.php:239
|
| 435 |
+
msgid "Where can I find my API Key?"
|
| 436 |
+
msgstr "أين يمكنني أن أجد بلدي API الرئيسية؟"
|
| 437 |
+
|
| 438 |
+
#: .././pages/options.php:244
|
| 439 |
+
msgid "Preferred Form Layout"
|
| 440 |
+
msgstr "نموذج تخطيط المفضل"
|
| 441 |
+
|
| 442 |
+
#: .././pages/options.php:247
|
| 443 |
+
msgid "table"
|
| 444 |
+
msgstr "جدول"
|
| 445 |
+
|
| 446 |
+
#: .././pages/options.php:248
|
| 447 |
+
msgid "div"
|
| 448 |
+
msgstr "شعبة"
|
| 449 |
+
|
| 450 |
+
#: .././pages/options.php:256
|
| 451 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 452 |
+
msgstr "اختيار ما إذا كنت تريد استخدام أشكال لجدول أو تخطيط شعبة."
|
| 453 |
+
|
| 454 |
+
#: .././pages/options.php:261
|
| 455 |
+
msgid "Advanced Error Messaging"
|
| 456 |
+
msgstr "خطأ المتقدمة التراسل"
|
| 457 |
+
|
| 458 |
+
#: .././pages/options.php:264
|
| 459 |
+
msgid "Disabled"
|
| 460 |
+
msgstr "تعطيل"
|
| 461 |
+
|
| 462 |
+
#: .././pages/options.php:265
|
| 463 |
+
msgid "Enabled"
|
| 464 |
+
msgstr "تم التمكين"
|
| 465 |
+
|
| 466 |
+
#: .././pages/options.php:273
|
| 467 |
+
msgid ""
|
| 468 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 469 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 470 |
+
"MailChimp is returning."
|
| 471 |
+
msgstr ""
|
| 472 |
+
"تمكين إذا كنت تواجه مشاكل مع النماذج إرسال البيانات إلى MailChimp. سوف تمكين "
|
| 473 |
+
"التراسل خطأ المتقدم تظهر لك رموز الخطأ بالضبط MailChimp تعود."
|
| 474 |
+
|
| 475 |
+
#: .././pages/options.php:281
|
| 476 |
+
msgid "Single Opt-In"
|
| 477 |
+
msgstr "واحد التقيد في"
|
| 478 |
+
|
| 479 |
+
#: .././pages/options.php:282
|
| 480 |
+
msgid "Double Opt-In"
|
| 481 |
+
msgstr "ضعف التقيد في"
|
| 482 |
+
|
| 483 |
+
#: .././pages/options.php:290
|
| 484 |
+
msgid ""
|
| 485 |
+
"A single opt-in will add the user to your list without any further "
|
| 486 |
+
"interaction."
|
| 487 |
+
msgstr "A التقيد في واحد سيضيف المستخدم إلى قائمة الخاص بك دون أي تفاعل آخر."
|
| 488 |
+
|
| 489 |
+
#: .././pages/options.php:291
|
| 490 |
+
msgid ""
|
| 491 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 492 |
+
"subscription."
|
| 493 |
+
msgstr ""
|
| 494 |
+
"A التقيد في مضاعفة سيتم إرسال البريد الإلكتروني للمستخدم ويطلب منهم لتأكيد "
|
| 495 |
+
"الاشتراك الخاصة بهم."
|
| 496 |
+
|
| 497 |
+
#: .././pages/options.php:292
|
| 498 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 499 |
+
msgstr "وهذا أيضا تملي الإعدادات التقيد في للناس ترك التعليقات."
|
| 500 |
+
|
| 501 |
+
#: .././pages/options.php:297
|
| 502 |
+
msgid "Custom Opt-In Message"
|
| 503 |
+
msgstr "رسالة مخصصة التقيد في"
|
| 504 |
+
|
| 505 |
+
#: .././pages/options.php:299
|
| 506 |
+
msgid "Double Opt-In Message"
|
| 507 |
+
msgstr " رسالةضعف التقيد في"
|
| 508 |
+
|
| 509 |
+
#: .././pages/options.php:301
|
| 510 |
+
msgid "Single Opt-In Message"
|
| 511 |
+
msgstr "رسالةواحد التقيد في"
|
| 512 |
+
|
| 513 |
+
#: .././pages/options.php:307
|
| 514 |
+
msgid "Interest Group Label"
|
| 515 |
+
msgstr "تسمية المجموعة الفائدة"
|
| 516 |
+
|
| 517 |
+
#: .././pages/options.php:316
|
| 518 |
+
msgid ""
|
| 519 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 520 |
+
"group names."
|
| 521 |
+
msgstr ""
|
| 522 |
+
"النص أعلاه لعرض مجموعات المصالح. يترك فارغا لاستخدام MailChimp أسماء "
|
| 523 |
+
"المجموعات الفائدة."
|
| 524 |
+
|
| 525 |
+
#: .././pages/options.php:321
|
| 526 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 527 |
+
msgstr "عرض التقيد في الاختيار في النماذج تعليق؟"
|
| 528 |
+
|
| 529 |
+
#: .././pages/options.php:324
|
| 530 |
+
msgid "Hide"
|
| 531 |
+
msgstr "كتم"
|
| 532 |
+
|
| 533 |
+
#: .././pages/options.php:325
|
| 534 |
+
msgid "Show"
|
| 535 |
+
msgstr "عرض"
|
| 536 |
+
|
| 537 |
+
#: .././pages/options.php:333
|
| 538 |
+
msgid ""
|
| 539 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 540 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 541 |
+
"mailing list."
|
| 542 |
+
msgstr ""
|
| 543 |
+
"وهذا عرض مربع فقط فوق زر الإرسال على جميع أشكال تعليق. إذا المحدد، سيتم أيضا "
|
| 544 |
+
"إضافة أي مستخدمين ترك التعليقات إلى القائمة البريدية."
|
| 545 |
+
|
| 546 |
+
#: .././pages/options.php:338
|
| 547 |
+
msgid "Custom Comment Checkbox Text"
|
| 548 |
+
msgstr "العرف نص التعليق خانة"
|
| 549 |
+
|
| 550 |
+
#: .././pages/options.php:345
|
| 551 |
+
msgid "Default List"
|
| 552 |
+
msgstr "قائمة الافتراضي"
|
| 553 |
+
|
| 554 |
+
#: .././pages/options.php:360
|
| 555 |
+
msgid ""
|
| 556 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 557 |
+
"comment."
|
| 558 |
+
msgstr ""
|
| 559 |
+
"هذا وسوف يتم الاكتتاب في قائمة المستخدمين الافتراضية إلى عند تقديم تعليق."
|
| 560 |
+
|
| 561 |
+
#: .././pages/options.php:361
|
| 562 |
+
msgid ""
|
| 563 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 564 |
+
"name are required or you may run into issues."
|
| 565 |
+
msgstr ""
|
| 566 |
+
"فمن الأفضل لاختيار النموذج حيث فقط البريد الإلكتروني، الاسم الأول و / أو اسم "
|
| 567 |
+
"العائلة مطلوبة أو كنت قد واجهت مشاكل."
|
| 568 |
+
|
| 569 |
+
#: .././pages/options.php:373
|
| 570 |
+
msgid "Plugin Information"
|
| 571 |
+
msgstr "معلومات البرنامج المساعد"
|
| 572 |
+
|
| 573 |
+
#: .././pages/options.php:376
|
| 574 |
+
msgid "If you experience any issues with our plugin, please"
|
| 575 |
+
msgstr "إذا كنت تواجه أي مشاكل مع لدينا البرنامج المساعد، يرجى"
|
| 576 |
+
|
| 577 |
+
#: .././pages/options.php:376
|
| 578 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 579 |
+
msgstr "يقدم العدد الجديد على موقعنا على المقتفي جيثب العدد"
|
| 580 |
+
|
| 581 |
+
#: .././pages/options.php:376
|
| 582 |
+
msgid ""
|
| 583 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 584 |
+
msgstr "يرجى تضمين المعلومات أدناه لمساعدتنا استكشاف مشكلتك."
|
| 585 |
+
|
| 586 |
+
#: .././pages/options.php:384
|
| 587 |
+
msgid "Plugin Version"
|
| 588 |
+
msgstr "النسخة المساعد"
|
| 589 |
+
|
| 590 |
+
#: .././pages/options.php:388
|
| 591 |
+
msgid "Wordpress Version"
|
| 592 |
+
msgstr "النسخة ورد"
|
| 593 |
+
|
| 594 |
+
#: .././pages/options.php:392
|
| 595 |
+
msgid "Browser Information"
|
| 596 |
+
msgstr "معلومات المتصفح"
|
| 597 |
+
|
| 598 |
+
#: .././pages/options.php:420
|
| 599 |
+
msgid "Error"
|
| 600 |
+
msgstr "خطأ"
|
| 601 |
+
|
| 602 |
+
#: .././pages/options.php:421
|
| 603 |
+
msgid ""
|
| 604 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 605 |
+
"cURL to send and retreive data."
|
| 606 |
+
msgstr ""
|
| 607 |
+
"نحن آسفون، ولكن تم تعطيل الضفيرة على الخادم الخاص بك. ويستخدم API MailChimp "
|
| 608 |
+
"الضفيرة لإرسال وإستعادة البيانات."
|
| 609 |
+
|
| 610 |
+
#: .././pages/options.php:426
|
| 611 |
+
msgid "Help!"
|
| 612 |
+
msgstr "مساعدة!"
|
| 613 |
+
|
| 614 |
+
#: .././pages/options.php:426
|
| 615 |
+
msgid "What is cURL?"
|
| 616 |
+
msgstr "ما هو cURL؟"
|
| 617 |
+
|
| 618 |
+
#: .././pages/options.php:426
|
| 619 |
+
msgid "Check phpinfo()"
|
| 620 |
+
msgstr "تحقق phpinfo()"
|
| 621 |
+
|
| 622 |
+
#: .././pages/options.php:428
|
| 623 |
+
msgid "Steps To Resolve The Issue"
|
| 624 |
+
msgstr "الخطوات لحل المشكلة"
|
| 625 |
+
|
| 626 |
+
#: .././pages/options.php:430
|
| 627 |
+
msgid ""
|
| 628 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 629 |
+
msgstr "يمكنك تمكين الضفيرة عن طريق تشغيل وحدة الضفيرة داخل ملف php.ini الخاص"
|
| 630 |
+
|
| 631 |
+
#: .././pages/options.php:430
|
| 632 |
+
msgid "You should find the php.ini file located here : "
|
| 633 |
+
msgstr "يجب عليك العثور على ملف php.ini الموجود هنا:"
|
| 634 |
+
|
| 635 |
+
#: .././pages/options.php:431
|
| 636 |
+
msgid ""
|
| 637 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 638 |
+
msgstr "مرة واحدة وجدت، وفتح ملف php.ini \"؛ تمديد;extension=php_curl.dll\"."
|
| 639 |
+
|
| 640 |
+
#: .././pages/options.php:432
|
| 641 |
+
msgid ""
|
| 642 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 643 |
+
"active."
|
| 644 |
+
msgstr ""
|
| 645 |
+
"إزالة القولون شبه قبل السطر، لمن الامم المتحدة والتعليق عليه، وجعل وحدة نشطة."
|
| 646 |
+
|
| 647 |
+
#: .././pages/options.php:433
|
| 648 |
+
msgid "Re-save and close the file."
|
| 649 |
+
msgstr "إعادة حفظ وإغلاق الملف."
|
| 650 |
+
|
| 651 |
+
#: .././pages/options.php:434
|
| 652 |
+
msgid "Re-load this page."
|
| 653 |
+
msgstr "إعادة تحميل هذه الصفحة."
|
| 654 |
+
|
| 655 |
+
#: .././templates/shortcode_error.php:1
|
| 656 |
+
msgid "There was an error calling the mailchimp list."
|
| 657 |
+
msgstr "كان هناك خطأ استدعاء قائمة mailchimp."
|
| 658 |
+
|
| 659 |
+
#: .././templates/shortcode_error_data.php:1
|
| 660 |
+
msgid ""
|
| 661 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 662 |
+
"List Forms\" page."
|
| 663 |
+
msgstr ""
|
| 664 |
+
"لا وجود لائحة! تأكد من أن قمت باستيراد قائمة على \"إدارة قائمة أشكال\" "
|
| 665 |
+
"الصفحة."
|
| 666 |
+
|
| 667 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 668 |
+
msgid "This list was already placed on this page!"
|
| 669 |
+
msgstr "وقد وضعت هذه القائمة بالفعل على هذه الصفحة!"
|
| 670 |
+
|
| 671 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 672 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 673 |
+
msgstr "Woops! بدون مفتاح API صالحة وجدت. مزدوجة تحقق من إعداداتك."
|
| 674 |
+
|
| 675 |
+
#: .././templates/shortcode_form.php:11
|
| 676 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 677 |
+
msgstr "عفوا .. لا ننسى لملء في المجالات التالية"
|
| 678 |
+
|
| 679 |
+
#: .././templates/shortcode_form.php:74
|
| 680 |
+
msgid "required field"
|
| 681 |
+
msgstr "حقل مطلوب"
|
| 682 |
+
|
| 683 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 684 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 685 |
+
msgid "MailChimp Signup Form"
|
| 686 |
+
msgstr "MailChimp نموذج الاشتراك"
|
| 687 |
+
|
| 688 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 689 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 690 |
+
msgstr "اختر أي نموذج هل ترغب في العرض:"
|
| 691 |
+
|
| 692 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 693 |
+
msgid "Select a Form to Display"
|
| 694 |
+
msgstr "تحديد نموذج لعرض"
|
| 695 |
+
|
| 696 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 697 |
+
msgid "Please import MailChimp forms"
|
| 698 |
+
msgstr "يرجى استيراد أشكال MailChimp"
|
| 699 |
+
|
| 700 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 701 |
+
msgid "Please import some lists from MailChimp"
|
| 702 |
+
msgstr "يرجى استيراد بعض القوائم من MailChimp"
|
| 703 |
+
|
| 704 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 705 |
+
msgid "Import Lists Now"
|
| 706 |
+
msgstr "استيراد قوائم الآن"
|
| 707 |
+
|
| 708 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 709 |
+
msgid ""
|
| 710 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 711 |
+
"least one list to use the Easy MailChimp widget."
|
| 712 |
+
msgstr ""
|
| 713 |
+
"عفوا! يبدو أنك لم المستوردة أية قوائم حتى الآن. يجب استيراد قائمة واحدة على "
|
| 714 |
+
"الأقل لاستخدام القطعة سهلة MailChimp."
|
| 715 |
+
|
| 716 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 717 |
+
msgid ""
|
| 718 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 719 |
+
"'Appearance > Widgets' and select a form to display."
|
| 720 |
+
msgstr ""
|
| 721 |
+
"عفوا! يبدو أنك نسيت أن تحديد نموذج لعرض هنا. اذهب إلى 'المظهر> القطع' وحدد "
|
| 722 |
+
"نموذج لعرضه."
|
| 723 |
+
|
| 724 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 725 |
+
msgid "Sign Up For Our Newsletter"
|
| 726 |
+
msgstr "اشترك النشرة الإخبارية لدينا"
|
| 727 |
+
|
| 728 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 729 |
+
msgid "Sign Me Up"
|
| 730 |
+
msgstr "توقيع لي حتى"
|
| 731 |
+
|
| 732 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 733 |
+
msgid "Title:"
|
| 734 |
+
msgstr "العنوان"
|
| 735 |
+
|
| 736 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 737 |
+
msgid "Form Text:"
|
| 738 |
+
msgstr "نص النموذج:"
|
| 739 |
+
|
| 740 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 741 |
+
msgid "Submit Button Text:"
|
| 742 |
+
msgstr "يقدم زر النص:"
|
| 743 |
+
|
| 744 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 745 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 746 |
+
msgstr "عفوا! يبدو أنك لم تقم بإضافة مفتاح API الخاص بك! رئيس لأكثر من"
|
| 747 |
+
|
| 748 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 749 |
+
msgid "Settings page"
|
| 750 |
+
msgstr "صفحة إعدادات"
|
| 751 |
+
|
| 752 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 753 |
+
#~ msgstr "بدون مفتاح API أو قائمة رقم موجود!"
|
languages/yikes-inc-easy-mailchimp-extender-cy.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-cy.po
ADDED
|
@@ -0,0 +1,781 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:19-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:46-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: cy\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "Diolch yn fawr am danysgrifio!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
"Diolch yn fawr am danysgrifio! Edrychwch ar eich e-bost ar gyfer y neges "
|
| 29 |
+
"cadarnhau."
|
| 30 |
+
|
| 31 |
+
#: .././classes/class.yksemeBase.php:116
|
| 32 |
+
msgid "Select Your Area of Interest"
|
| 33 |
+
msgstr "Dewiswch Eich Ardal o Ddiddordeb"
|
| 34 |
+
|
| 35 |
+
#: .././classes/class.yksemeBase.php:917
|
| 36 |
+
msgid "Click on a subscriber to see further information"
|
| 37 |
+
msgstr "Cliciwch ar danysgrifiwr i weld rhagor o wybodaeth"
|
| 38 |
+
|
| 39 |
+
#: .././classes/class.yksemeBase.php:920
|
| 40 |
+
msgid "E-Mail"
|
| 41 |
+
msgstr "E-bost"
|
| 42 |
+
|
| 43 |
+
#: .././classes/class.yksemeBase.php:921
|
| 44 |
+
msgid "Date Subscribed"
|
| 45 |
+
msgstr "Dyddiad tanysgrifiedig"
|
| 46 |
+
|
| 47 |
+
#: .././classes/class.yksemeBase.php:941
|
| 48 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 49 |
+
msgstr ""
|
| 50 |
+
"Mae'n ddrwg gennym Nid ydych hyn o bryd unrhyw Tanysgrifwyr Yn y Rhestr!"
|
| 51 |
+
|
| 52 |
+
#: .././classes/class.yksemeBase.php:998
|
| 53 |
+
msgid "Back to Subscriber List"
|
| 54 |
+
msgstr "Yn ôl i'r Rhestr Subscriber"
|
| 55 |
+
|
| 56 |
+
#: .././classes/class.yksemeBase.php:999
|
| 57 |
+
msgid "Subscriber Details"
|
| 58 |
+
msgstr "Manylion tanysgrifiwr"
|
| 59 |
+
|
| 60 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 61 |
+
msgid "Overview"
|
| 62 |
+
msgstr "trosolwg"
|
| 63 |
+
|
| 64 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 65 |
+
msgid "First Name"
|
| 66 |
+
msgstr "Enw Cyntaf"
|
| 67 |
+
|
| 68 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 69 |
+
msgid "Last Updated"
|
| 70 |
+
msgstr "Diweddarwyd ddiwethaf"
|
| 71 |
+
|
| 72 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 73 |
+
msgid "Preferred Email Type"
|
| 74 |
+
msgstr "Ffefrir Math E-bost"
|
| 75 |
+
|
| 76 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 77 |
+
msgid "Last Name"
|
| 78 |
+
msgstr "Cyfenw"
|
| 79 |
+
|
| 80 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 81 |
+
msgid "Language"
|
| 82 |
+
msgstr "iaith"
|
| 83 |
+
|
| 84 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 85 |
+
msgid "Groups Subscribed To"
|
| 86 |
+
msgstr "Grwpiau tanysgrifio i"
|
| 87 |
+
|
| 88 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 89 |
+
msgid "Subscriber Notes"
|
| 90 |
+
msgstr "Nodiadau tanysgrifiwr"
|
| 91 |
+
|
| 92 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 93 |
+
msgid "Written by"
|
| 94 |
+
msgstr "ysgrifennwyd gan"
|
| 95 |
+
|
| 96 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 97 |
+
msgid "Created on"
|
| 98 |
+
msgstr "Crëwyd ar"
|
| 99 |
+
|
| 100 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 101 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 102 |
+
msgid "MailChimp Forms"
|
| 103 |
+
msgstr "Ffurflenni MailChimp"
|
| 104 |
+
|
| 105 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 106 |
+
msgid "MailChimp Settings"
|
| 107 |
+
msgstr "Gosodiadau MailChimp"
|
| 108 |
+
|
| 109 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 110 |
+
msgid "Manage List Forms"
|
| 111 |
+
msgstr "Rheoli Ffurflenni Rhestr"
|
| 112 |
+
|
| 113 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 114 |
+
msgid "About YIKES, Inc."
|
| 115 |
+
msgstr "Amdanom YIKES, Inc"
|
| 116 |
+
|
| 117 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 118 |
+
msgid "One or more fields are empty"
|
| 119 |
+
msgstr "Un neu fwy o feysydd yn wag"
|
| 120 |
+
|
| 121 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 122 |
+
msgid "Your List Was Successfully Saved!"
|
| 123 |
+
msgstr "Eich Rhestr A oedd Cadwyd yn llwyddiannus!"
|
| 124 |
+
|
| 125 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 126 |
+
msgid "I'm sorry there was an error with your request."
|
| 127 |
+
msgstr "Mae'n ddrwg gen i, roedd gwall gyda'ch cais."
|
| 128 |
+
|
| 129 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 130 |
+
msgid "MailChimp List name"
|
| 131 |
+
msgstr "Enw'r Rhestr MailChimp"
|
| 132 |
+
|
| 133 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 134 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 135 |
+
#, php-format
|
| 136 |
+
msgid "%1$s"
|
| 137 |
+
msgstr ""
|
| 138 |
+
|
| 139 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 140 |
+
msgid "MailChimp List ID"
|
| 141 |
+
msgstr "MailChimp Rhestr ID"
|
| 142 |
+
|
| 143 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 144 |
+
msgid "Shortcode"
|
| 145 |
+
msgstr "Shortcode"
|
| 146 |
+
|
| 147 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 148 |
+
msgid ""
|
| 149 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 150 |
+
msgstr ""
|
| 151 |
+
"Pastiwch shortcode hwn i beth bynnag dudalen neu swydd yr ydych eisiau "
|
| 152 |
+
"ychwanegu y ffurflen hon i"
|
| 153 |
+
|
| 154 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 155 |
+
msgid "PHP Snippet"
|
| 156 |
+
msgstr "PHP Snippet"
|
| 157 |
+
|
| 158 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 159 |
+
msgid "Use this code to add this form to a template file"
|
| 160 |
+
msgstr "Defnyddiwch y cod hwn i ychwanegu y ffurflen hon at ffeil dempled"
|
| 161 |
+
|
| 162 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 163 |
+
msgid "Number of Subscribers"
|
| 164 |
+
msgstr "Nifer o Tanysgrifwyr"
|
| 165 |
+
|
| 166 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 167 |
+
msgid "Form Fields"
|
| 168 |
+
msgstr "Meysydd Ffurflen"
|
| 169 |
+
|
| 170 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 171 |
+
msgid ""
|
| 172 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 173 |
+
msgstr ""
|
| 174 |
+
"Gwiriwch y caeau ydych am eu cynnwys yn eich ffurflen (Mae angen Cyfeiriad e-"
|
| 175 |
+
"bost)."
|
| 176 |
+
|
| 177 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 178 |
+
msgid ""
|
| 179 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 180 |
+
msgstr ""
|
| 181 |
+
"Defnyddiwch y saethau gwyrdd i lusgo-a-gollwng y caeau a ad-drefnu eu trefn."
|
| 182 |
+
|
| 183 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 184 |
+
msgid "Active Fields"
|
| 185 |
+
msgstr "Meysydd Actif"
|
| 186 |
+
|
| 187 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 188 |
+
msgid "Drag"
|
| 189 |
+
msgstr "Llusgwch"
|
| 190 |
+
|
| 191 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 192 |
+
msgid "drop"
|
| 193 |
+
msgstr "galw heibio"
|
| 194 |
+
|
| 195 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 196 |
+
msgid "Merge field"
|
| 197 |
+
msgstr "Cyfuno maes"
|
| 198 |
+
|
| 199 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 200 |
+
msgid "Placeholder"
|
| 201 |
+
msgstr "Dalfan"
|
| 202 |
+
|
| 203 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 204 |
+
msgid "Redirect User On Submission"
|
| 205 |
+
msgstr "Ailgyfeirio Defnyddiwr Ar Cyflwyniad"
|
| 206 |
+
|
| 207 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 208 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 209 |
+
msgstr ""
|
| 210 |
+
"dewis dudalen neu osod URL arferiad i ailgyfeirio'r defnyddiwr i ar ôl "
|
| 211 |
+
"iddynt gyflwyno'r ffurflen."
|
| 212 |
+
|
| 213 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 214 |
+
msgid "Select A Post/Page"
|
| 215 |
+
msgstr "Dewiswch A Bost / Page"
|
| 216 |
+
|
| 217 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 218 |
+
msgid "Save Form Settings"
|
| 219 |
+
msgstr "Rheoli Mailchimp Ffurflenni Gosodiadau"
|
| 220 |
+
|
| 221 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 222 |
+
msgid "Delete Form"
|
| 223 |
+
msgstr "Dileu Ffurflen"
|
| 224 |
+
|
| 225 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 226 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 227 |
+
msgstr "Os gwelwch yn dda mewnforio rhai rhestrau o MailChimp"
|
| 228 |
+
|
| 229 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 230 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 231 |
+
msgstr "Cofrestrwch Me Up For Cylchlythyr MAILCHIMP-LLE'R-HWN-TEXT yn"
|
| 232 |
+
|
| 233 |
+
#: .././pages/about.php:27
|
| 234 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 235 |
+
msgstr "YIKES, Inc Dylunio a Datblygu'r We"
|
| 236 |
+
|
| 237 |
+
#: .././pages/about.php:29
|
| 238 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 239 |
+
msgstr ", Atebion Smart, effeithiol a gynlluniwyd hardd ar y we"
|
| 240 |
+
|
| 241 |
+
#: .././pages/about.php:32
|
| 242 |
+
msgid ""
|
| 243 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 244 |
+
"custom WordPress themes and plugins every day."
|
| 245 |
+
msgstr ""
|
| 246 |
+
"YIKES wedi ei leoli yn y gymdogaeth Fishtown Philadelphia lle rydym yn "
|
| 247 |
+
"adeiladu arfer themâu a plugins WordPress bob dydd."
|
| 248 |
+
|
| 249 |
+
#: .././pages/about.php:36
|
| 250 |
+
msgid ""
|
| 251 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 252 |
+
"WordCamps"
|
| 253 |
+
msgstr ""
|
| 254 |
+
"Yn YIKES ein bodd WordPress! Cyd-Perchennog, Tracy LEVESQUE wedi ei gyflwyno "
|
| 255 |
+
"mewn WordCamps"
|
| 256 |
+
|
| 257 |
+
#: .././pages/about.php:36
|
| 258 |
+
msgid "and"
|
| 259 |
+
msgstr "ac"
|
| 260 |
+
|
| 261 |
+
#: .././pages/about.php:36
|
| 262 |
+
msgid "She also teaches WordPress classes for"
|
| 263 |
+
msgstr "Mae hi hefyd yn dysgu dosbarthiadau WordPress ar gyfer"
|
| 264 |
+
|
| 265 |
+
#: .././pages/about.php:40
|
| 266 |
+
msgid ""
|
| 267 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 268 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 269 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 270 |
+
"financially sustainable local economy. We even have a"
|
| 271 |
+
msgstr ""
|
| 272 |
+
"Yn ogystal â gwneud safleoedd WordPress mawr rydym hefyd wedi ymrwymo i "
|
| 273 |
+
"symud busnes cynaliadwy. Rydym yn arsylwi ar y llinell isaf driphlyg: pobl, "
|
| 274 |
+
"planed, elw a gweithio i helpu i adeiladu economi leol gynaliadwy yn "
|
| 275 |
+
"gymdeithasol, yn amgylcheddol ac yn ariannol. Rydym hyd yn oed yn cael"
|
| 276 |
+
|
| 277 |
+
#: .././pages/about.php:40
|
| 278 |
+
msgid "LEED Platinum office"
|
| 279 |
+
msgstr "Swyddfa LEED Platinwm"
|
| 280 |
+
|
| 281 |
+
#: .././pages/about.php:44
|
| 282 |
+
msgid ""
|
| 283 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 284 |
+
"learn more about us, please visit"
|
| 285 |
+
msgstr ""
|
| 286 |
+
"Os oes gennych ddiddordeb mewn llogi ni ar gyfer datblygu WordPress, neu dim "
|
| 287 |
+
"ond eisiau i ddysgu mwy amdanom ni, ewch i"
|
| 288 |
+
|
| 289 |
+
#: .././pages/lists.php:8
|
| 290 |
+
msgid "No forms have been added yet."
|
| 291 |
+
msgstr "Nid oes unrhyw ffurflenni wedi cael eu hychwanegu eto."
|
| 292 |
+
|
| 293 |
+
#: .././pages/lists.php:39
|
| 294 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 295 |
+
msgstr "Wps .. Mae'r ID y rhestr a roesoch yn ymddangos i fod yn anghywir."
|
| 296 |
+
|
| 297 |
+
#: .././pages/lists.php:44
|
| 298 |
+
msgid "There was an error!"
|
| 299 |
+
msgstr "Roedd gwall!"
|
| 300 |
+
|
| 301 |
+
#: .././pages/lists.php:135
|
| 302 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 303 |
+
msgstr "Rhaid i chi ddewis rhestr Mailchimp er mwyn creu ffurflen ar ei gyfer"
|
| 304 |
+
|
| 305 |
+
#: .././pages/lists.php:173
|
| 306 |
+
msgid "Are you sure you want to delete this form?"
|
| 307 |
+
msgstr "Ydych chi'n siŵr eich bod am ddileu'r ffurflen hon?"
|
| 308 |
+
|
| 309 |
+
#: .././pages/lists.php:206
|
| 310 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 311 |
+
msgstr "Ydych chi'n siŵr eich bod am ail-fewnforio eich caeau o MailChimp?"
|
| 312 |
+
|
| 313 |
+
#: .././pages/lists.php:228
|
| 314 |
+
msgid "Looks like this form is already up to date!"
|
| 315 |
+
msgstr "Edrych fel y ffurflen hon eisoes yn gyfoes!"
|
| 316 |
+
|
| 317 |
+
#: .././pages/lists.php:326
|
| 318 |
+
msgid "Are you sure you want to unsubscribe"
|
| 319 |
+
msgstr "Ydych chi'n siŵr eich bod am i ddad-danysgrifio"
|
| 320 |
+
|
| 321 |
+
#: .././pages/lists.php:326
|
| 322 |
+
msgid "from this list?"
|
| 323 |
+
msgstr "o'r rhestr hon?"
|
| 324 |
+
|
| 325 |
+
#: .././pages/lists.php:342
|
| 326 |
+
msgid "was successfully unsubscribed from this list."
|
| 327 |
+
msgstr "ei unsubscribed llwyddiannus o'r rhestr hon."
|
| 328 |
+
|
| 329 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 330 |
+
#: .././pages/options.php:416
|
| 331 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 332 |
+
msgstr "Ffurflenni Hawdd Mailchimp gan YIKES, Inc"
|
| 333 |
+
|
| 334 |
+
#: .././pages/lists.php:454
|
| 335 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 336 |
+
msgstr ""
|
| 337 |
+
"Cyn i chi ychwanegu ffurflenni MailChimp at eich safle, mae angen i chi"
|
| 338 |
+
|
| 339 |
+
#: .././pages/lists.php:454
|
| 340 |
+
msgid "go to the MailChimp Settings page"
|
| 341 |
+
msgstr "ewch i'r dudalen Gosodiadau MailChimp"
|
| 342 |
+
|
| 343 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 344 |
+
msgid "and add your API Key."
|
| 345 |
+
msgstr "ac ychwanegwch eich API Allweddol."
|
| 346 |
+
|
| 347 |
+
#: .././pages/lists.php:462
|
| 348 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 349 |
+
msgstr "Rhaid i chi roi allwedd API dilys i fewnforio a rheoli eich rhestrau."
|
| 350 |
+
|
| 351 |
+
#: .././pages/lists.php:473
|
| 352 |
+
msgid "Your Lists"
|
| 353 |
+
msgstr "Eich Rhestrau"
|
| 354 |
+
|
| 355 |
+
#: .././pages/lists.php:483
|
| 356 |
+
msgid "Manage Forms"
|
| 357 |
+
msgstr "Rheoli Ffurflenni"
|
| 358 |
+
|
| 359 |
+
#: .././pages/options.php:41
|
| 360 |
+
msgid "The options were saved successfully!"
|
| 361 |
+
msgstr "Yr opsiynau harbed yn llwyddiannus!"
|
| 362 |
+
|
| 363 |
+
#: .././pages/options.php:44
|
| 364 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 365 |
+
msgstr "Ni allai'r opsiynau yn cael eu cadw (neu nad oeddech yn eu newid)."
|
| 366 |
+
|
| 367 |
+
#: .././pages/options.php:96
|
| 368 |
+
msgid "Valid API Key"
|
| 369 |
+
msgstr "API Valid Allweddol"
|
| 370 |
+
|
| 371 |
+
#: .././pages/options.php:102
|
| 372 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 373 |
+
msgstr "Mae'n ddrwg gennyf, hynny yw allwedd API MailChimp annilys."
|
| 374 |
+
|
| 375 |
+
#: .././pages/options.php:108
|
| 376 |
+
msgid ""
|
| 377 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 378 |
+
"further information."
|
| 379 |
+
msgstr ""
|
| 380 |
+
"Mae'n ddrwg gennyf, hynny yw allwedd API MailChimp annilys. Os gwelwch yn "
|
| 381 |
+
"dda edrych ar y consol am wybodaeth bellach."
|
| 382 |
+
|
| 383 |
+
#: .././pages/options.php:117
|
| 384 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 385 |
+
msgstr "Gwall: Rhowch dilys Post Chimp API Allweddol."
|
| 386 |
+
|
| 387 |
+
#: .././pages/options.php:199
|
| 388 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 389 |
+
msgstr "Rheoli Mailchimp Ffurflenni Gosodiadau"
|
| 390 |
+
|
| 391 |
+
#: .././pages/options.php:205
|
| 392 |
+
msgid "WordPress Version Number Error"
|
| 393 |
+
msgstr "Fersiwn wordpress"
|
| 394 |
+
|
| 395 |
+
#: .././pages/options.php:206
|
| 396 |
+
msgid ""
|
| 397 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 398 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 399 |
+
"and posts unless you update to 3.9 or later."
|
| 400 |
+
msgstr ""
|
| 401 |
+
"Mae'n ddrwg gennym, ond mae'n edrych fel eich ddefnyddio fersiwn hen ffasiwn "
|
| 402 |
+
"o WordPress. Ni fyddwch yn gallu cael mynediad i'r botwm TinyMCE i osod "
|
| 403 |
+
"ffurflenni i mewn i tudalennau a swyddi oni bai eich bod yn diweddaru i 3.9 "
|
| 404 |
+
"neu'n hwyrach."
|
| 405 |
+
|
| 406 |
+
#: .././pages/options.php:215
|
| 407 |
+
msgid "LocalHost Detected :"
|
| 408 |
+
msgstr "Localhost a ddatryswyd:"
|
| 409 |
+
|
| 410 |
+
#: .././pages/options.php:216
|
| 411 |
+
msgid ""
|
| 412 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 413 |
+
msgstr "Ffurflenni Hawdd Mailchimp gan YIKES, Inc"
|
| 414 |
+
|
| 415 |
+
#: .././pages/options.php:217
|
| 416 |
+
msgid ""
|
| 417 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 418 |
+
msgstr ""
|
| 419 |
+
"Os nad ydych yn gallu i ddilysu eich allwedd API, ac yn derbyn y neges gwall"
|
| 420 |
+
|
| 421 |
+
#: .././pages/options.php:217
|
| 422 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 423 |
+
msgstr "\"Broblem tystysgrif SSL: methu â chael tystysgrif cyhoeddwr lleol\" "
|
| 424 |
+
|
| 425 |
+
#: .././pages/options.php:217
|
| 426 |
+
msgid "follow the tutorial located "
|
| 427 |
+
msgstr "dilynwch y tiwtorial leoli "
|
| 428 |
+
|
| 429 |
+
#: .././pages/options.php:230
|
| 430 |
+
msgid "Your Mailchimp API Key"
|
| 431 |
+
msgstr "Eich Mailchimp API Allweddol"
|
| 432 |
+
|
| 433 |
+
#: .././pages/options.php:238
|
| 434 |
+
msgid ""
|
| 435 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 436 |
+
"site to communicate with your MailChimp account."
|
| 437 |
+
msgstr ""
|
| 438 |
+
"Os gwelwch yn dda rhowch eich Allwedd API MailChimp uchod. Mae'r API "
|
| 439 |
+
"Allweddol yn caniatáu eich safle WordPress i gyfathrebu gyda'ch cyfrif "
|
| 440 |
+
"MailChimp."
|
| 441 |
+
|
| 442 |
+
#: .././pages/options.php:239
|
| 443 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 444 |
+
msgstr "Am fwy o help, ewch i'r erthygl Cymorth MailChimp"
|
| 445 |
+
|
| 446 |
+
#: .././pages/options.php:239
|
| 447 |
+
msgid "Where can I find my API Key?"
|
| 448 |
+
msgstr "Ble y gallaf gael fy API Allweddol?"
|
| 449 |
+
|
| 450 |
+
#: .././pages/options.php:244
|
| 451 |
+
msgid "Preferred Form Layout"
|
| 452 |
+
msgstr "Ffurflen a Ffefrir Layout"
|
| 453 |
+
|
| 454 |
+
#: .././pages/options.php:247
|
| 455 |
+
msgid "table"
|
| 456 |
+
msgstr "tabl"
|
| 457 |
+
|
| 458 |
+
#: .././pages/options.php:248
|
| 459 |
+
msgid "div"
|
| 460 |
+
msgstr "div"
|
| 461 |
+
|
| 462 |
+
#: .././pages/options.php:256
|
| 463 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 464 |
+
msgstr ""
|
| 465 |
+
"Dewiswch a ydych am i'ch ffurflenni i'w defnyddio tabl neu gynllun div."
|
| 466 |
+
|
| 467 |
+
#: .././pages/options.php:261
|
| 468 |
+
msgid "Advanced Error Messaging"
|
| 469 |
+
msgstr "Gwall Uwch Messaging"
|
| 470 |
+
|
| 471 |
+
#: .././pages/options.php:264
|
| 472 |
+
msgid "Disabled"
|
| 473 |
+
msgstr "Anabl"
|
| 474 |
+
|
| 475 |
+
#: .././pages/options.php:265
|
| 476 |
+
msgid "Enabled"
|
| 477 |
+
msgstr "Galluogwyd"
|
| 478 |
+
|
| 479 |
+
#: .././pages/options.php:273
|
| 480 |
+
msgid ""
|
| 481 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 482 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 483 |
+
"MailChimp is returning."
|
| 484 |
+
msgstr ""
|
| 485 |
+
"Galluogi os ydych yn cael problemau gyda'ch ffurflenni anfon data i "
|
| 486 |
+
"MailChimp. Bydd Galluogi Negeseuon Gwall Uwch yn dangos i chi y codau gwall "
|
| 487 |
+
"union MailChimp yn dychwelyd."
|
| 488 |
+
|
| 489 |
+
#: .././pages/options.php:281
|
| 490 |
+
msgid "Single Opt-In"
|
| 491 |
+
msgstr "Sengl Opt-In"
|
| 492 |
+
|
| 493 |
+
#: .././pages/options.php:282
|
| 494 |
+
msgid "Double Opt-In"
|
| 495 |
+
msgstr "Dwbl Opt-In"
|
| 496 |
+
|
| 497 |
+
#: .././pages/options.php:290
|
| 498 |
+
msgid ""
|
| 499 |
+
"A single opt-in will add the user to your list without any further "
|
| 500 |
+
"interaction."
|
| 501 |
+
msgstr ""
|
| 502 |
+
"Bydd un opt-yn ychwanegu'r defnyddiwr at eich rhestr heb unrhyw ryngweithio "
|
| 503 |
+
"pellach."
|
| 504 |
+
|
| 505 |
+
#: .././pages/options.php:291
|
| 506 |
+
msgid ""
|
| 507 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 508 |
+
"subscription."
|
| 509 |
+
msgstr ""
|
| 510 |
+
"Bydd dwbl optio mewn anfon e-bost at y defnyddiwr yn gofyn iddynt gadarnhau "
|
| 511 |
+
"eu tanysgrifiad."
|
| 512 |
+
|
| 513 |
+
#: .././pages/options.php:292
|
| 514 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 515 |
+
msgstr ""
|
| 516 |
+
"Bydd hyn hefyd yn pennu'r lleoliadau optio i mewn ar gyfer pobl sy'n gadael "
|
| 517 |
+
"sylwadau."
|
| 518 |
+
|
| 519 |
+
#: .././pages/options.php:297
|
| 520 |
+
msgid "Custom Opt-In Message"
|
| 521 |
+
msgstr "Custom Opt-In Neges"
|
| 522 |
+
|
| 523 |
+
#: .././pages/options.php:299
|
| 524 |
+
msgid "Double Opt-In Message"
|
| 525 |
+
msgstr "Dwbl Opt-In Neges"
|
| 526 |
+
|
| 527 |
+
#: .././pages/options.php:301
|
| 528 |
+
msgid "Single Opt-In Message"
|
| 529 |
+
msgstr "Neges Opt-In Sengl"
|
| 530 |
+
|
| 531 |
+
#: .././pages/options.php:307
|
| 532 |
+
msgid "Interest Group Label"
|
| 533 |
+
msgstr "Label Grŵp Diddordeb"
|
| 534 |
+
|
| 535 |
+
#: .././pages/options.php:316
|
| 536 |
+
msgid ""
|
| 537 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 538 |
+
"group names."
|
| 539 |
+
msgstr ""
|
| 540 |
+
"Testun i arddangos uchod grwpiau diddordeb. Gadewch yn wag i ddefnyddio "
|
| 541 |
+
"enwau grŵp diddordeb MailChimp."
|
| 542 |
+
|
| 543 |
+
#: .././pages/options.php:321
|
| 544 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 545 |
+
msgstr "Arddangos optio i mewn blwch ar ffurflenni sylwadau?"
|
| 546 |
+
|
| 547 |
+
#: .././pages/options.php:324
|
| 548 |
+
msgid "Hide"
|
| 549 |
+
msgstr "Cuddio"
|
| 550 |
+
|
| 551 |
+
#: .././pages/options.php:325
|
| 552 |
+
msgid "Show"
|
| 553 |
+
msgstr "Dangos"
|
| 554 |
+
|
| 555 |
+
#: .././pages/options.php:333
|
| 556 |
+
msgid ""
|
| 557 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 558 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 559 |
+
"mailing list."
|
| 560 |
+
msgstr ""
|
| 561 |
+
"Bydd hyn yn dangos blwch ticio ychydig uwchben y botwm cyflwyno ar bob "
|
| 562 |
+
"ffurflen sylwadau. Os cewch eich dewis, bydd unrhyw ddefnyddwyr sy'n gadael "
|
| 563 |
+
"sylwadau hefyd yn cael eu hychwanegu at y rhestr bostio."
|
| 564 |
+
|
| 565 |
+
#: .././pages/options.php:338
|
| 566 |
+
msgid "Custom Comment Checkbox Text"
|
| 567 |
+
msgstr "Custom Sylw Blwch ticio Testun"
|
| 568 |
+
|
| 569 |
+
#: .././pages/options.php:345
|
| 570 |
+
msgid "Default List"
|
| 571 |
+
msgstr "Rhestr ddiofyn"
|
| 572 |
+
|
| 573 |
+
#: .././pages/options.php:360
|
| 574 |
+
msgid ""
|
| 575 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 576 |
+
"comment."
|
| 577 |
+
msgstr ""
|
| 578 |
+
"Mae hyn yw y bydd y defnyddwyr rhestr ragosodedig yn cael ei tanysgrifio i "
|
| 579 |
+
"wrth gyflwyno sylw."
|
| 580 |
+
|
| 581 |
+
#: .././pages/options.php:361
|
| 582 |
+
msgid ""
|
| 583 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 584 |
+
"name are required or you may run into issues."
|
| 585 |
+
msgstr ""
|
| 586 |
+
"Mae'n well i ddewis ffurflen lle mai dim ond yr e-bost, enw cyntaf a / neu "
|
| 587 |
+
"enw olaf yn ofynnol neu efallai y byddwch yn rhedeg i mewn i faterion."
|
| 588 |
+
|
| 589 |
+
#: .././pages/options.php:373
|
| 590 |
+
msgid "Plugin Information"
|
| 591 |
+
msgstr "Gwybodaeth Ategyn"
|
| 592 |
+
|
| 593 |
+
#: .././pages/options.php:376
|
| 594 |
+
msgid "If you experience any issues with our plugin, please"
|
| 595 |
+
msgstr "Os ydych yn cael unrhyw broblemau gyda'n ategyn, os gwelwch yn dda"
|
| 596 |
+
|
| 597 |
+
#: .././pages/options.php:376
|
| 598 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 599 |
+
msgstr "cyflwyno Mater newydd ar ein Tracker Github Rhifyn"
|
| 600 |
+
|
| 601 |
+
#: .././pages/options.php:376
|
| 602 |
+
msgid ""
|
| 603 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 604 |
+
msgstr "Cofiwch gynnwys y wybodaeth isod i'n helpu i ddatrys eich problem."
|
| 605 |
+
|
| 606 |
+
#: .././pages/options.php:384
|
| 607 |
+
msgid "Plugin Version"
|
| 608 |
+
msgstr "Fersiwn Ategyn"
|
| 609 |
+
|
| 610 |
+
#: .././pages/options.php:388
|
| 611 |
+
msgid "Wordpress Version"
|
| 612 |
+
msgstr "Fersiwn wordpress"
|
| 613 |
+
|
| 614 |
+
#: .././pages/options.php:392
|
| 615 |
+
msgid "Browser Information"
|
| 616 |
+
msgstr "Gwybodaeth Porydd"
|
| 617 |
+
|
| 618 |
+
#: .././pages/options.php:420
|
| 619 |
+
msgid "Error"
|
| 620 |
+
msgstr "Gwall"
|
| 621 |
+
|
| 622 |
+
#: .././pages/options.php:421
|
| 623 |
+
msgid ""
|
| 624 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 625 |
+
"cURL to send and retreive data."
|
| 626 |
+
msgstr ""
|
| 627 |
+
"Mae'n ddrwg gennym, ond cURL wedi ei analluogi ar eich gweinydd. Mae'r API "
|
| 628 |
+
"MailChimp defnyddio cURL i anfon a retreive data."
|
| 629 |
+
|
| 630 |
+
#: .././pages/options.php:426
|
| 631 |
+
msgid "Help!"
|
| 632 |
+
msgstr "Help!"
|
| 633 |
+
|
| 634 |
+
#: .././pages/options.php:426
|
| 635 |
+
msgid "What is cURL?"
|
| 636 |
+
msgstr "Beth yw cURL?"
|
| 637 |
+
|
| 638 |
+
#: .././pages/options.php:426
|
| 639 |
+
msgid "Check phpinfo()"
|
| 640 |
+
msgstr "Gwiriwch phpinfo ()"
|
| 641 |
+
|
| 642 |
+
#: .././pages/options.php:428
|
| 643 |
+
msgid "Steps To Resolve The Issue"
|
| 644 |
+
msgstr "Camau i ddatrys y mater"
|
| 645 |
+
|
| 646 |
+
#: .././pages/options.php:430
|
| 647 |
+
msgid ""
|
| 648 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 649 |
+
msgstr ""
|
| 650 |
+
"Gallwch alluogi cURL trwy droi ar y modiwl cURL o fewn eich ffeil php.ini"
|
| 651 |
+
|
| 652 |
+
#: .././pages/options.php:430
|
| 653 |
+
msgid "You should find the php.ini file located here : "
|
| 654 |
+
msgstr "Dylech ddod o hyd i'r ffeil php.ini lleoli yma: "
|
| 655 |
+
|
| 656 |
+
#: .././pages/options.php:431
|
| 657 |
+
msgid ""
|
| 658 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 659 |
+
msgstr ""
|
| 660 |
+
"Ar ôl dod o hyd, yn agor i fyny php.ini a lleoli'r llinell \"; estyniad = "
|
| 661 |
+
"php_curl.dll\"."
|
| 662 |
+
|
| 663 |
+
#: .././pages/options.php:432
|
| 664 |
+
msgid ""
|
| 665 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 666 |
+
"active."
|
| 667 |
+
msgstr ""
|
| 668 |
+
"Tynnwch y colon lled cyn i'r llinell, chi ddad-sylwadau ac yn gwneud y "
|
| 669 |
+
"modiwl gweithredol."
|
| 670 |
+
|
| 671 |
+
#: .././pages/options.php:433
|
| 672 |
+
msgid "Re-save and close the file."
|
| 673 |
+
msgstr "Ail-arbed a chau'r ffeil."
|
| 674 |
+
|
| 675 |
+
#: .././pages/options.php:434
|
| 676 |
+
msgid "Re-load this page."
|
| 677 |
+
msgstr "Ail-lwytho'r dudalen hon."
|
| 678 |
+
|
| 679 |
+
#: .././templates/shortcode_error.php:1
|
| 680 |
+
msgid "There was an error calling the mailchimp list."
|
| 681 |
+
msgstr "Roedd gwall yn galw y rhestr mailchimp."
|
| 682 |
+
|
| 683 |
+
#: .././templates/shortcode_error_data.php:1
|
| 684 |
+
msgid ""
|
| 685 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 686 |
+
"List Forms\" page."
|
| 687 |
+
msgstr ""
|
| 688 |
+
"Nid yw'r rhestr yn bodoli! Gwnewch yn siŵr eich bod wedi mewnforio y rhestr "
|
| 689 |
+
"ar y \"Rheoli Ffurflenni Rhestr\" dudalen."
|
| 690 |
+
|
| 691 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 692 |
+
msgid "This list was already placed on this page!"
|
| 693 |
+
msgstr "Mae'r rhestr hon yn ei roi eisoes ar y dudalen hon!"
|
| 694 |
+
|
| 695 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 696 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 697 |
+
msgstr ""
|
| 698 |
+
"Woops! Dim Allwedd API Dilys wedi ei ddarganfod. Dwbl gwirio eich gosodiadau."
|
| 699 |
+
|
| 700 |
+
#: .././templates/shortcode_form.php:11
|
| 701 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 702 |
+
msgstr "Wps .. Peidiwch ag anghofio llenwi-yn y meysydd canlynol"
|
| 703 |
+
|
| 704 |
+
#: .././templates/shortcode_form.php:74
|
| 705 |
+
msgid "required field"
|
| 706 |
+
msgstr "maes y mae'n"
|
| 707 |
+
|
| 708 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 709 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 710 |
+
msgid "MailChimp Signup Form"
|
| 711 |
+
msgstr "Ffurflen Cofrestru MailChimp"
|
| 712 |
+
|
| 713 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 714 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 715 |
+
msgstr "Dewiswch Pa Ffurflen Hoffech i'w Dangos:"
|
| 716 |
+
|
| 717 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 718 |
+
msgid "Select a Form to Display"
|
| 719 |
+
msgstr "Dewiswch Ffurflen i Arddangos"
|
| 720 |
+
|
| 721 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 722 |
+
msgid "Please import MailChimp forms"
|
| 723 |
+
msgstr "Os gwelwch yn dda mewnforio ffurflenni MailChimp"
|
| 724 |
+
|
| 725 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 726 |
+
msgid "Please import some lists from MailChimp"
|
| 727 |
+
msgstr "Os gwelwch yn dda mewnforio rhai rhestrau o MailChimp"
|
| 728 |
+
|
| 729 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 730 |
+
msgid "Import Lists Now"
|
| 731 |
+
msgstr "Rhestrau Mewnforio Nawr"
|
| 732 |
+
|
| 733 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 734 |
+
msgid ""
|
| 735 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 736 |
+
"least one list to use the Easy MailChimp widget."
|
| 737 |
+
msgstr ""
|
| 738 |
+
"Wps! Mae'n edrych yn debyg nad ydych wedi mewnforio unrhyw restrau eto. "
|
| 739 |
+
"Mae'n rhaid i chi fewnforio o leiaf un rhestr i ddefnyddio'r teclyn Hawdd "
|
| 740 |
+
"MailChimp."
|
| 741 |
+
|
| 742 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 743 |
+
msgid ""
|
| 744 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 745 |
+
"'Appearance > Widgets' and select a form to display."
|
| 746 |
+
msgstr ""
|
| 747 |
+
"Wps! Mae'n edrych fel chi wedi anghofio i ddewis ffurflen i arddangos yma. "
|
| 748 |
+
"Ewch i 'Ymddangosiad> Widgets' a dewis ffurflen i arddangos."
|
| 749 |
+
|
| 750 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 751 |
+
msgid "Sign Up For Our Newsletter"
|
| 752 |
+
msgstr "Cofrestrwch Up For Ein Llythyr Newyddion"
|
| 753 |
+
|
| 754 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 755 |
+
msgid "Sign Me Up"
|
| 756 |
+
msgstr "Cofrestrwch Me Up"
|
| 757 |
+
|
| 758 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 759 |
+
msgid "Title:"
|
| 760 |
+
msgstr "Teitl:"
|
| 761 |
+
|
| 762 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 763 |
+
msgid "Form Text:"
|
| 764 |
+
msgstr "Ffurflen testun:"
|
| 765 |
+
|
| 766 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 767 |
+
msgid "Submit Button Text:"
|
| 768 |
+
msgstr "Submit Button testun:"
|
| 769 |
+
|
| 770 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 771 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 772 |
+
msgstr ""
|
| 773 |
+
"Wps! Mae'n edrych yn debyg nad ydych wedi ychwanegu eich allwedd API! Ewch "
|
| 774 |
+
"draw i'r"
|
| 775 |
+
|
| 776 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 777 |
+
msgid "Settings page"
|
| 778 |
+
msgstr "Dudalen Gosodiadau"
|
| 779 |
+
|
| 780 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 781 |
+
#~ msgstr "Dim Allwedd API neu Restr Id Bodoli!"
|
languages/yikes-inc-easy-mailchimp-extender-de_DE.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-de_DE.po
ADDED
|
@@ -0,0 +1,800 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:23-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:47-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: de\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "Vielen Dank für Ihre Anmeldung!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
"Vielen Dank für Ihre Anmeldung! Überprüfen Sie Ihre E-Mail für die "
|
| 29 |
+
"Bestätigung."
|
| 30 |
+
|
| 31 |
+
#: .././classes/class.yksemeBase.php:116
|
| 32 |
+
msgid "Select Your Area of Interest"
|
| 33 |
+
msgstr "Wählen Sie Ihr Interessengebiet"
|
| 34 |
+
|
| 35 |
+
#: .././classes/class.yksemeBase.php:917
|
| 36 |
+
msgid "Click on a subscriber to see further information"
|
| 37 |
+
msgstr "Klicken Sie auf einen Teilnehmer, um weitere Informationen zu sehen"
|
| 38 |
+
|
| 39 |
+
#: .././classes/class.yksemeBase.php:920
|
| 40 |
+
msgid "E-Mail"
|
| 41 |
+
msgstr "E-Mail"
|
| 42 |
+
|
| 43 |
+
#: .././classes/class.yksemeBase.php:921
|
| 44 |
+
msgid "Date Subscribed"
|
| 45 |
+
msgstr "Datum Gezeichnetes"
|
| 46 |
+
|
| 47 |
+
#: .././classes/class.yksemeBase.php:941
|
| 48 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 49 |
+
msgstr ""
|
| 50 |
+
"Es tut uns leid Sie nicht Zeit haben noch keine Teilnehmer in dieser Liste!"
|
| 51 |
+
|
| 52 |
+
#: .././classes/class.yksemeBase.php:998
|
| 53 |
+
msgid "Back to Subscriber List"
|
| 54 |
+
msgstr "Zurück zum Abonnenten-Liste"
|
| 55 |
+
|
| 56 |
+
#: .././classes/class.yksemeBase.php:999
|
| 57 |
+
msgid "Subscriber Details"
|
| 58 |
+
msgstr "Subscriber-Details"
|
| 59 |
+
|
| 60 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 61 |
+
msgid "Overview"
|
| 62 |
+
msgstr "Überblick"
|
| 63 |
+
|
| 64 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 65 |
+
msgid "First Name"
|
| 66 |
+
msgstr "Vorname"
|
| 67 |
+
|
| 68 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 69 |
+
msgid "Last Updated"
|
| 70 |
+
msgstr "zuletzt aktualisiert"
|
| 71 |
+
|
| 72 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 73 |
+
msgid "Preferred Email Type"
|
| 74 |
+
msgstr "Bevorzugtes E-Mail-Typ"
|
| 75 |
+
|
| 76 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 77 |
+
msgid "Last Name"
|
| 78 |
+
msgstr "Nachname"
|
| 79 |
+
|
| 80 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 81 |
+
msgid "Language"
|
| 82 |
+
msgstr "Sprache"
|
| 83 |
+
|
| 84 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 85 |
+
msgid "Groups Subscribed To"
|
| 86 |
+
msgstr "Gruppen abonniert"
|
| 87 |
+
|
| 88 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 89 |
+
msgid "Subscriber Notes"
|
| 90 |
+
msgstr "Subscriber Hinweise"
|
| 91 |
+
|
| 92 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 93 |
+
msgid "Written by"
|
| 94 |
+
msgstr "geschrieben von:"
|
| 95 |
+
|
| 96 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 97 |
+
msgid "Created on"
|
| 98 |
+
msgstr "Erstellt am"
|
| 99 |
+
|
| 100 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 101 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 102 |
+
msgid "MailChimp Forms"
|
| 103 |
+
msgstr "MailChimp Formular"
|
| 104 |
+
|
| 105 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 106 |
+
msgid "MailChimp Settings"
|
| 107 |
+
msgstr "MailChimp Einstellungen"
|
| 108 |
+
|
| 109 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 110 |
+
msgid "Manage List Forms"
|
| 111 |
+
msgstr "Verwalten Listenformulare"
|
| 112 |
+
|
| 113 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 114 |
+
msgid "About YIKES, Inc."
|
| 115 |
+
msgstr "Über YIKES, Inc."
|
| 116 |
+
|
| 117 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 118 |
+
msgid "One or more fields are empty"
|
| 119 |
+
msgstr "Ein oder mehrere Felder leer sind"
|
| 120 |
+
|
| 121 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 122 |
+
msgid "Your List Was Successfully Saved!"
|
| 123 |
+
msgstr "Ihre Liste erfolgreich gespeichert!"
|
| 124 |
+
|
| 125 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 126 |
+
msgid "I'm sorry there was an error with your request."
|
| 127 |
+
msgstr "Tut mir leid, es ist ein Fehler mit Ihrer Anfrage."
|
| 128 |
+
|
| 129 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 130 |
+
msgid "MailChimp List name"
|
| 131 |
+
msgstr "MailChimp Listenname"
|
| 132 |
+
|
| 133 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 134 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 135 |
+
#, php-format
|
| 136 |
+
msgid "%1$s"
|
| 137 |
+
msgstr "%1$s"
|
| 138 |
+
|
| 139 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 140 |
+
msgid "MailChimp List ID"
|
| 141 |
+
msgstr "MailChimp Liste ID"
|
| 142 |
+
|
| 143 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 144 |
+
msgid "Shortcode"
|
| 145 |
+
msgstr "Shortcode"
|
| 146 |
+
|
| 147 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 148 |
+
msgid ""
|
| 149 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 150 |
+
msgstr ""
|
| 151 |
+
"Fügen Sie diesen Shortcode in das, was-Seite oder schreiben Sie, dieses "
|
| 152 |
+
"Formular hinzufügen möchten"
|
| 153 |
+
|
| 154 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 155 |
+
msgid "PHP Snippet"
|
| 156 |
+
msgstr "PHP Snippet"
|
| 157 |
+
|
| 158 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 159 |
+
msgid "Use this code to add this form to a template file"
|
| 160 |
+
msgstr ""
|
| 161 |
+
"Verwenden Sie diesen Code, um diese Form zu einer Vorlage-Datei hinzufügen"
|
| 162 |
+
|
| 163 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 164 |
+
msgid "Number of Subscribers"
|
| 165 |
+
msgstr "Anzahl der Abonnenten"
|
| 166 |
+
|
| 167 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 168 |
+
msgid "Form Fields"
|
| 169 |
+
msgstr "Formularfelder"
|
| 170 |
+
|
| 171 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 172 |
+
msgid ""
|
| 173 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 174 |
+
msgstr ""
|
| 175 |
+
"Überprüfen Sie die gewünschten Felder im Formular enthalten (E-Mail Adresse "
|
| 176 |
+
"ist erforderlich)."
|
| 177 |
+
|
| 178 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 179 |
+
msgid ""
|
| 180 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 181 |
+
msgstr ""
|
| 182 |
+
"Verwenden Sie die grünen Pfeile, um per Drag-and-Drop die Felder und deren "
|
| 183 |
+
"Reihenfolge zu ändern."
|
| 184 |
+
|
| 185 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 186 |
+
msgid "Active Fields"
|
| 187 |
+
msgstr "Aktive Felder"
|
| 188 |
+
|
| 189 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 190 |
+
msgid "Drag"
|
| 191 |
+
msgstr "Ziehe"
|
| 192 |
+
|
| 193 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 194 |
+
msgid "drop"
|
| 195 |
+
msgstr "fallen"
|
| 196 |
+
|
| 197 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 198 |
+
msgid "Merge field"
|
| 199 |
+
msgstr "Seriendruckfeld"
|
| 200 |
+
|
| 201 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 202 |
+
msgid "Placeholder"
|
| 203 |
+
msgstr "Platzhalter"
|
| 204 |
+
|
| 205 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 206 |
+
msgid "Redirect User On Submission"
|
| 207 |
+
msgstr "Redirect Benutzer Submission"
|
| 208 |
+
|
| 209 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 210 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 211 |
+
msgstr ""
|
| 212 |
+
"wählen Sie eine Seite oder einen benutzerdefinierten URL, den Benutzer auf, "
|
| 213 |
+
"nachdem sie das Formular umleiten."
|
| 214 |
+
|
| 215 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 216 |
+
msgid "Select A Post/Page"
|
| 217 |
+
msgstr "Choose Eine Seite"
|
| 218 |
+
|
| 219 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 220 |
+
msgid "Save Form Settings"
|
| 221 |
+
msgstr "Formulare verwalten Mailchimp Einstellungen"
|
| 222 |
+
|
| 223 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 224 |
+
msgid "Delete Form"
|
| 225 |
+
msgstr "Formular löschen"
|
| 226 |
+
|
| 227 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 228 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 229 |
+
msgstr "Importieren Sie einige Listen von MailChimp"
|
| 230 |
+
|
| 231 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 232 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 233 |
+
msgstr "Schicken Sie mir die MailChimp-REPLACE-DIES-TEXT-Newsletter"
|
| 234 |
+
|
| 235 |
+
#: .././pages/about.php:27
|
| 236 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 237 |
+
msgstr "YIKES, Inc. Webdesign und-entwicklung"
|
| 238 |
+
|
| 239 |
+
#: .././pages/about.php:29
|
| 240 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 241 |
+
msgstr "Intelligent, effektiv, schön gestalteten Web-Lösungen"
|
| 242 |
+
|
| 243 |
+
#: .././pages/about.php:32
|
| 244 |
+
msgid ""
|
| 245 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 246 |
+
"custom WordPress themes and plugins every day."
|
| 247 |
+
msgstr ""
|
| 248 |
+
"YIKES ist in der Nähe von Fishtown Philadelphia, wo wir bauen individuelle "
|
| 249 |
+
"Wordpress-Themes und Plugins jeden Tag entfernt."
|
| 250 |
+
|
| 251 |
+
#: .././pages/about.php:36
|
| 252 |
+
msgid ""
|
| 253 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 254 |
+
"WordCamps"
|
| 255 |
+
msgstr ""
|
| 256 |
+
"Bei YIKES wir lieben Wordpress! Co-Owner, Tracy Levesque hat bei WordCamps "
|
| 257 |
+
"vorgestellt"
|
| 258 |
+
|
| 259 |
+
#: .././pages/about.php:36
|
| 260 |
+
msgid "and"
|
| 261 |
+
msgstr "und"
|
| 262 |
+
|
| 263 |
+
#: .././pages/about.php:36
|
| 264 |
+
msgid "She also teaches WordPress classes for"
|
| 265 |
+
msgstr "Sie unterrichtet auch Klassen für Wordpress"
|
| 266 |
+
|
| 267 |
+
#: .././pages/about.php:40
|
| 268 |
+
msgid ""
|
| 269 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 270 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 271 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 272 |
+
"financially sustainable local economy. We even have a"
|
| 273 |
+
msgstr ""
|
| 274 |
+
"Neben der Herstellung von großen Wordpress-Seiten sind wir auch auf den "
|
| 275 |
+
"nachhaltigen Geschäfts Bewegung verpflichtet. Wir beobachten die Triple "
|
| 276 |
+
"Bottom Line: People, Planet, Profit und Arbeit zum Aufbau einer sozial, "
|
| 277 |
+
"ökologisch und finanziell nachhaltigen lokalen Wirtschaft. Wir haben sogar "
|
| 278 |
+
"eine"
|
| 279 |
+
|
| 280 |
+
#: .././pages/about.php:40
|
| 281 |
+
msgid "LEED Platinum office"
|
| 282 |
+
msgstr "LEED-Platinum-Büro"
|
| 283 |
+
|
| 284 |
+
#: .././pages/about.php:44
|
| 285 |
+
msgid ""
|
| 286 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 287 |
+
"learn more about us, please visit"
|
| 288 |
+
msgstr ""
|
| 289 |
+
"Wenn Sie sich für die Einstellung uns für Wordpress-Entwicklung, oder wollen "
|
| 290 |
+
"einfach nur mehr über uns zu erfahren, besuchen Sie bitte"
|
| 291 |
+
|
| 292 |
+
#: .././pages/lists.php:8
|
| 293 |
+
msgid "No forms have been added yet."
|
| 294 |
+
msgstr "Keine Formulare wurden noch aufgenommen."
|
| 295 |
+
|
| 296 |
+
#: .././pages/lists.php:39
|
| 297 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 298 |
+
msgstr "Oops .. Die eingegebene ID-Liste erscheint nicht korrekt zu sein."
|
| 299 |
+
|
| 300 |
+
#: .././pages/lists.php:44
|
| 301 |
+
msgid "There was an error!"
|
| 302 |
+
msgstr "Es gab einen Fehler!"
|
| 303 |
+
|
| 304 |
+
#: .././pages/lists.php:135
|
| 305 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 306 |
+
msgstr ""
|
| 307 |
+
"Sie müssen eine Mailchimp Liste auswählen, um eine Form für sie zu schaffen"
|
| 308 |
+
|
| 309 |
+
#: .././pages/lists.php:173
|
| 310 |
+
msgid "Are you sure you want to delete this form?"
|
| 311 |
+
msgstr "Sind Sie sicher, dass Sie dieses Formular löschen?"
|
| 312 |
+
|
| 313 |
+
#: .././pages/lists.php:206
|
| 314 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 315 |
+
msgstr ""
|
| 316 |
+
"Sind Sie sicher, dass Sie re-importieren Sie Ihre Felder aus MailChimp "
|
| 317 |
+
"wollen?"
|
| 318 |
+
|
| 319 |
+
#: .././pages/lists.php:228
|
| 320 |
+
msgid "Looks like this form is already up to date!"
|
| 321 |
+
msgstr "Sieht aus wie diese Form bereits auf dem Laufenden!"
|
| 322 |
+
|
| 323 |
+
#: .././pages/lists.php:326
|
| 324 |
+
msgid "Are you sure you want to unsubscribe"
|
| 325 |
+
msgstr "Sind Sie sicher, dass Sie den Newsletter abbestellen möchten"
|
| 326 |
+
|
| 327 |
+
#: .././pages/lists.php:326
|
| 328 |
+
msgid "from this list?"
|
| 329 |
+
msgstr "von dieser Liste?"
|
| 330 |
+
|
| 331 |
+
#: .././pages/lists.php:342
|
| 332 |
+
msgid "was successfully unsubscribed from this list."
|
| 333 |
+
msgstr "wurde erfolgreich aus dieser Liste abgemeldet."
|
| 334 |
+
|
| 335 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 336 |
+
#: .././pages/options.php:416
|
| 337 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 338 |
+
msgstr "Einfach Mailchimp Forms by YIKES, Inc."
|
| 339 |
+
|
| 340 |
+
#: .././pages/lists.php:454
|
| 341 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 342 |
+
msgstr "Bevor Sie MailChimp Formen zu Ihrer Website hinzufügen, müssen Sie"
|
| 343 |
+
|
| 344 |
+
#: .././pages/lists.php:454
|
| 345 |
+
msgid "go to the MailChimp Settings page"
|
| 346 |
+
msgstr "gehen Sie zur Seite Einstellungen MailChimp"
|
| 347 |
+
|
| 348 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 349 |
+
msgid "and add your API Key."
|
| 350 |
+
msgstr "und fügen Sie Ihren API-Key."
|
| 351 |
+
|
| 352 |
+
#: .././pages/lists.php:462
|
| 353 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 354 |
+
msgstr ""
|
| 355 |
+
"Sie müssen einen gültigen API-Schlüssel zu importieren und verwalten Sie "
|
| 356 |
+
"Ihre Listen eingeben."
|
| 357 |
+
|
| 358 |
+
#: .././pages/lists.php:473
|
| 359 |
+
msgid "Your Lists"
|
| 360 |
+
msgstr "Ihre Listen"
|
| 361 |
+
|
| 362 |
+
#: .././pages/lists.php:483
|
| 363 |
+
msgid "Manage Forms"
|
| 364 |
+
msgstr "Formulare verwalten"
|
| 365 |
+
|
| 366 |
+
#: .././pages/options.php:41
|
| 367 |
+
msgid "The options were saved successfully!"
|
| 368 |
+
msgstr "Die Optionen wurden erfolgreich gespeichert!"
|
| 369 |
+
|
| 370 |
+
#: .././pages/options.php:44
|
| 371 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 372 |
+
msgstr ""
|
| 373 |
+
"Die Optionen konnten nicht gespeichert werden (oder Sie haben sie nicht)."
|
| 374 |
+
|
| 375 |
+
#: .././pages/options.php:96
|
| 376 |
+
msgid "Valid API Key"
|
| 377 |
+
msgstr "Gültig API Key"
|
| 378 |
+
|
| 379 |
+
#: .././pages/options.php:102
|
| 380 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 381 |
+
msgstr "Sorry, ist, dass ein ungültiger MailChimp API-Schlüssel."
|
| 382 |
+
|
| 383 |
+
#: .././pages/options.php:108
|
| 384 |
+
msgid ""
|
| 385 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 386 |
+
"further information."
|
| 387 |
+
msgstr ""
|
| 388 |
+
"Sorry, ist, dass ein ungültiger MailChimp API-Schlüssel. Bitte überprüfen "
|
| 389 |
+
"Sie die Konsole für weitere Informationen."
|
| 390 |
+
|
| 391 |
+
#: .././pages/options.php:117
|
| 392 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 393 |
+
msgstr "Fehler: Bitte geben Sie eine gültige E-Mail Chimp API Key."
|
| 394 |
+
|
| 395 |
+
#: .././pages/options.php:199
|
| 396 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 397 |
+
msgstr "Formulare verwalten Mailchimp Einstellungen"
|
| 398 |
+
|
| 399 |
+
#: .././pages/options.php:205
|
| 400 |
+
msgid "WordPress Version Number Error"
|
| 401 |
+
msgstr "Wordpress-Version"
|
| 402 |
+
|
| 403 |
+
#: .././pages/options.php:206
|
| 404 |
+
msgid ""
|
| 405 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 406 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 407 |
+
"and posts unless you update to 3.9 or later."
|
| 408 |
+
msgstr ""
|
| 409 |
+
"Es tut uns leid, aber es sieht aus wie Ihre eine veraltete Version von "
|
| 410 |
+
"Wordpress. Sie werden nicht in der Lage, den TinyMCE-Taste Zugriff auf "
|
| 411 |
+
"Formulare in Seiten und Beiträge einfügen, wenn Sie auf 3.9 oder höher "
|
| 412 |
+
"aktualisieren."
|
| 413 |
+
|
| 414 |
+
#: .././pages/options.php:215
|
| 415 |
+
msgid "LocalHost Detected :"
|
| 416 |
+
msgstr "Localhost erkannt:"
|
| 417 |
+
|
| 418 |
+
#: .././pages/options.php:216
|
| 419 |
+
msgid ""
|
| 420 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 421 |
+
msgstr "Einfach Mailchimp Forms by YIKES, Inc."
|
| 422 |
+
|
| 423 |
+
#: .././pages/options.php:217
|
| 424 |
+
msgid ""
|
| 425 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 426 |
+
msgstr ""
|
| 427 |
+
"Wenn Sie nicht auf Ihren API-Schlüssel zu validieren und die Fehlermeldung"
|
| 428 |
+
|
| 429 |
+
#: .././pages/options.php:217
|
| 430 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 431 |
+
msgstr ""
|
| 432 |
+
"\"SSL-Zertifikat Problem: nicht in der Lage, lokale Aussteller-Zertifikat "
|
| 433 |
+
"bekommen\" "
|
| 434 |
+
|
| 435 |
+
#: .././pages/options.php:217
|
| 436 |
+
msgid "follow the tutorial located "
|
| 437 |
+
msgstr "folgen Sie der Anleitung befindet "
|
| 438 |
+
|
| 439 |
+
#: .././pages/options.php:230
|
| 440 |
+
msgid "Your Mailchimp API Key"
|
| 441 |
+
msgstr "Ihre Mailchimp API Key"
|
| 442 |
+
|
| 443 |
+
#: .././pages/options.php:238
|
| 444 |
+
msgid ""
|
| 445 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 446 |
+
"site to communicate with your MailChimp account."
|
| 447 |
+
msgstr ""
|
| 448 |
+
"Bitte geben Sie Ihren MailChimp API Key oben. Die API-Key können Sie Ihre "
|
| 449 |
+
"Wordpress-Seite, um mit Ihrem MailChimp Account zu kommunizieren."
|
| 450 |
+
|
| 451 |
+
#: .././pages/options.php:239
|
| 452 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 453 |
+
msgstr "Weitere Hilfe finden Sie auf der Support-Artikel MailChimp"
|
| 454 |
+
|
| 455 |
+
#: .././pages/options.php:239
|
| 456 |
+
msgid "Where can I find my API Key?"
|
| 457 |
+
msgstr "Wo kann ich meine API-Schlüssel finden?"
|
| 458 |
+
|
| 459 |
+
#: .././pages/options.php:244
|
| 460 |
+
msgid "Preferred Form Layout"
|
| 461 |
+
msgstr "Bevorzugte Formular-Layout"
|
| 462 |
+
|
| 463 |
+
#: .././pages/options.php:247
|
| 464 |
+
msgid "table"
|
| 465 |
+
msgstr "Tabelle"
|
| 466 |
+
|
| 467 |
+
#: .././pages/options.php:248
|
| 468 |
+
msgid "div"
|
| 469 |
+
msgstr "div"
|
| 470 |
+
|
| 471 |
+
#: .././pages/options.php:256
|
| 472 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 473 |
+
msgstr ""
|
| 474 |
+
"Wählen Sie, ob Sie Ihre Formulare, um eine Tabelle oder div-Layout verwenden "
|
| 475 |
+
"möchten."
|
| 476 |
+
|
| 477 |
+
#: .././pages/options.php:261
|
| 478 |
+
msgid "Advanced Error Messaging"
|
| 479 |
+
msgstr "Advanced Error Messaging"
|
| 480 |
+
|
| 481 |
+
#: .././pages/options.php:264
|
| 482 |
+
msgid "Disabled"
|
| 483 |
+
msgstr "Behindert"
|
| 484 |
+
|
| 485 |
+
#: .././pages/options.php:265
|
| 486 |
+
msgid "Enabled"
|
| 487 |
+
msgstr "Aktiviert"
|
| 488 |
+
|
| 489 |
+
#: .././pages/options.php:273
|
| 490 |
+
msgid ""
|
| 491 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 492 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 493 |
+
"MailChimp is returning."
|
| 494 |
+
msgstr ""
|
| 495 |
+
"Aktivieren, wenn Sie Probleme mit Ihrer Formulare Senden von Daten an "
|
| 496 |
+
"MailChimp. Aktivieren Advanced Error Messaging zeigen Ihnen die genaue "
|
| 497 |
+
"Fehlercodes MailChimp kehrt zurück."
|
| 498 |
+
|
| 499 |
+
#: .././pages/options.php:281
|
| 500 |
+
msgid "Single Opt-In"
|
| 501 |
+
msgstr "Einzel-Opt-In"
|
| 502 |
+
|
| 503 |
+
#: .././pages/options.php:282
|
| 504 |
+
msgid "Double Opt-In"
|
| 505 |
+
msgstr "Doppel Opt-In"
|
| 506 |
+
|
| 507 |
+
#: .././pages/options.php:290
|
| 508 |
+
msgid ""
|
| 509 |
+
"A single opt-in will add the user to your list without any further "
|
| 510 |
+
"interaction."
|
| 511 |
+
msgstr ""
|
| 512 |
+
"Eine einzige opt-in wird den Benutzer zu Ihrer Liste ohne weitere "
|
| 513 |
+
"Interaktion hinzuzufügen."
|
| 514 |
+
|
| 515 |
+
#: .././pages/options.php:291
|
| 516 |
+
msgid ""
|
| 517 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 518 |
+
"subscription."
|
| 519 |
+
msgstr ""
|
| 520 |
+
"Ein Double-Opt-in eine E-Mail an den Benutzer senden bat sie, ihr Abonnement "
|
| 521 |
+
"zu bestätigen."
|
| 522 |
+
|
| 523 |
+
#: .././pages/options.php:292
|
| 524 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 525 |
+
msgstr ""
|
| 526 |
+
"Dies wird auch diktieren die Opt-in-Einstellungen für Leute Kommentare "
|
| 527 |
+
"hinterlassen."
|
| 528 |
+
|
| 529 |
+
#: .././pages/options.php:297
|
| 530 |
+
msgid "Custom Opt-In Message"
|
| 531 |
+
msgstr "Benutzerdefinierte Opt-In Message"
|
| 532 |
+
|
| 533 |
+
#: .././pages/options.php:299
|
| 534 |
+
msgid "Double Opt-In Message"
|
| 535 |
+
msgstr "Doppel Opt-In-Adresse"
|
| 536 |
+
|
| 537 |
+
#: .././pages/options.php:301
|
| 538 |
+
msgid "Single Opt-In Message"
|
| 539 |
+
msgstr "Einzel-Opt-In-Nachricht"
|
| 540 |
+
|
| 541 |
+
#: .././pages/options.php:307
|
| 542 |
+
msgid "Interest Group Label"
|
| 543 |
+
msgstr "Interest Group Label"
|
| 544 |
+
|
| 545 |
+
#: .././pages/options.php:316
|
| 546 |
+
msgid ""
|
| 547 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 548 |
+
"group names."
|
| 549 |
+
msgstr ""
|
| 550 |
+
"Text, über Interessensgruppen an. Leer lassen um MailChimp Interesse "
|
| 551 |
+
"Gruppennamen zu verwenden."
|
| 552 |
+
|
| 553 |
+
#: .././pages/options.php:321
|
| 554 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 555 |
+
msgstr "Display-Opt-in-Checkbox auf Kommentar Formen?"
|
| 556 |
+
|
| 557 |
+
#: .././pages/options.php:324
|
| 558 |
+
msgid "Hide"
|
| 559 |
+
msgstr "Ausblenden"
|
| 560 |
+
|
| 561 |
+
#: .././pages/options.php:325
|
| 562 |
+
msgid "Show"
|
| 563 |
+
msgstr "Einblenden"
|
| 564 |
+
|
| 565 |
+
#: .././pages/options.php:333
|
| 566 |
+
msgid ""
|
| 567 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 568 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 569 |
+
"mailing list."
|
| 570 |
+
msgstr ""
|
| 571 |
+
"Das wird ein Kontrollkästchen knapp über dem Absenden-Button auf allen "
|
| 572 |
+
"Formen Kommentar anzuzeigen. Wenn diese Option ausgewählt, werden alle "
|
| 573 |
+
"Benutzer Kommentare hinterlassen auch an die Mailing-Liste hinzugefügt "
|
| 574 |
+
"werden."
|
| 575 |
+
|
| 576 |
+
#: .././pages/options.php:338
|
| 577 |
+
msgid "Custom Comment Checkbox Text"
|
| 578 |
+
msgstr "Benutzerdefinierte Kommentar Checkbox Text"
|
| 579 |
+
|
| 580 |
+
#: .././pages/options.php:345
|
| 581 |
+
msgid "Default List"
|
| 582 |
+
msgstr "Standardliste"
|
| 583 |
+
|
| 584 |
+
#: .././pages/options.php:360
|
| 585 |
+
msgid ""
|
| 586 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 587 |
+
"comment."
|
| 588 |
+
msgstr ""
|
| 589 |
+
"Dies ist die Standard-Liste Benutzer werden zu bei der Einreichung einen "
|
| 590 |
+
"Kommentar abonniert werden."
|
| 591 |
+
|
| 592 |
+
#: .././pages/options.php:361
|
| 593 |
+
msgid ""
|
| 594 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 595 |
+
"name are required or you may run into issues."
|
| 596 |
+
msgstr ""
|
| 597 |
+
"Es ist am besten, um ein Formular, in dem nur der E-Mail, Vornamen und / "
|
| 598 |
+
"oder Nachnamen erforderlich sind, oder Sie können in Probleme laufen zu "
|
| 599 |
+
"wählen."
|
| 600 |
+
|
| 601 |
+
#: .././pages/options.php:373
|
| 602 |
+
msgid "Plugin Information"
|
| 603 |
+
msgstr "Plugin Informationen"
|
| 604 |
+
|
| 605 |
+
#: .././pages/options.php:376
|
| 606 |
+
msgid "If you experience any issues with our plugin, please"
|
| 607 |
+
msgstr ""
|
| 608 |
+
"Wenn Sie irgendwelche Probleme mit unserem Plugin auftreten, wenden Sie sich "
|
| 609 |
+
"bitte"
|
| 610 |
+
|
| 611 |
+
#: .././pages/options.php:376
|
| 612 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 613 |
+
msgstr "einreichen einer neuen Ausgabe auf unserer Github Issue Tracker"
|
| 614 |
+
|
| 615 |
+
#: .././pages/options.php:376
|
| 616 |
+
msgid ""
|
| 617 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 618 |
+
msgstr ""
|
| 619 |
+
"Bitte geben Sie die folgenden Informationen, die uns helfen zu beheben Ihr "
|
| 620 |
+
"Problem."
|
| 621 |
+
|
| 622 |
+
#: .././pages/options.php:384
|
| 623 |
+
msgid "Plugin Version"
|
| 624 |
+
msgstr "Plugin Version"
|
| 625 |
+
|
| 626 |
+
#: .././pages/options.php:388
|
| 627 |
+
msgid "Wordpress Version"
|
| 628 |
+
msgstr "Wordpress-Version"
|
| 629 |
+
|
| 630 |
+
#: .././pages/options.php:392
|
| 631 |
+
msgid "Browser Information"
|
| 632 |
+
msgstr "Browser-Informationen"
|
| 633 |
+
|
| 634 |
+
#: .././pages/options.php:420
|
| 635 |
+
msgid "Error"
|
| 636 |
+
msgstr "Fehler"
|
| 637 |
+
|
| 638 |
+
#: .././pages/options.php:421
|
| 639 |
+
msgid ""
|
| 640 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 641 |
+
"cURL to send and retreive data."
|
| 642 |
+
msgstr ""
|
| 643 |
+
"Es tut uns leid, aber cURL wird auf dem Server deaktiviert. Die MailChimp "
|
| 644 |
+
"API nutzt cURL um Daten zu senden und abzurufen."
|
| 645 |
+
|
| 646 |
+
#: .././pages/options.php:426
|
| 647 |
+
msgid "Help!"
|
| 648 |
+
msgstr "Hilfe!"
|
| 649 |
+
|
| 650 |
+
#: .././pages/options.php:426
|
| 651 |
+
msgid "What is cURL?"
|
| 652 |
+
msgstr "Was ist cURL?"
|
| 653 |
+
|
| 654 |
+
#: .././pages/options.php:426
|
| 655 |
+
msgid "Check phpinfo()"
|
| 656 |
+
msgstr "Überprüfen Sie phpinfo ()"
|
| 657 |
+
|
| 658 |
+
#: .././pages/options.php:428
|
| 659 |
+
msgid "Steps To Resolve The Issue"
|
| 660 |
+
msgstr "Schritte, um das Problem beheben"
|
| 661 |
+
|
| 662 |
+
#: .././pages/options.php:430
|
| 663 |
+
msgid ""
|
| 664 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 665 |
+
msgstr ""
|
| 666 |
+
"Sie können cURL durch Einschalten des cURL-Modul innerhalb der php.ini-Datei "
|
| 667 |
+
"aktivieren"
|
| 668 |
+
|
| 669 |
+
#: .././pages/options.php:430
|
| 670 |
+
msgid "You should find the php.ini file located here : "
|
| 671 |
+
msgstr "Sie sollten die php.ini-Datei finden sich hier: "
|
| 672 |
+
|
| 673 |
+
#: .././pages/options.php:431
|
| 674 |
+
msgid ""
|
| 675 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 676 |
+
msgstr ""
|
| 677 |
+
"Einmal gefunden, öffnen php.ini und suchen Sie die Zeile \"; extension = "
|
| 678 |
+
"php_curl.dll\"."
|
| 679 |
+
|
| 680 |
+
#: .././pages/options.php:432
|
| 681 |
+
msgid ""
|
| 682 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 683 |
+
"active."
|
| 684 |
+
msgstr ""
|
| 685 |
+
"Entfernen Sie das Semikolon vor der Zeile, die der UN-Kommentar, und nehmen "
|
| 686 |
+
"Sie das Modul aktiv."
|
| 687 |
+
|
| 688 |
+
#: .././pages/options.php:433
|
| 689 |
+
msgid "Re-save and close the file."
|
| 690 |
+
msgstr "Re-Speichern und schließen Sie die Datei."
|
| 691 |
+
|
| 692 |
+
#: .././pages/options.php:434
|
| 693 |
+
msgid "Re-load this page."
|
| 694 |
+
msgstr "Wieder laden Sie diese Seite."
|
| 695 |
+
|
| 696 |
+
#: .././templates/shortcode_error.php:1
|
| 697 |
+
msgid "There was an error calling the mailchimp list."
|
| 698 |
+
msgstr "Es gab einen Fehler Aufruf der MailChimp Liste."
|
| 699 |
+
|
| 700 |
+
#: .././templates/shortcode_error_data.php:1
|
| 701 |
+
msgid ""
|
| 702 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 703 |
+
"List Forms\" page."
|
| 704 |
+
msgstr ""
|
| 705 |
+
"Die Liste gibt es nicht! Stellen Sie sicher, dass Sie die Liste auf der "
|
| 706 |
+
"importiert haben \"Liste verwalten Forms\"-Seite."
|
| 707 |
+
|
| 708 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 709 |
+
msgid "This list was already placed on this page!"
|
| 710 |
+
msgstr "Diese Liste wurde bereits auf dieser Seite platziert!"
|
| 711 |
+
|
| 712 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 713 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 714 |
+
msgstr ""
|
| 715 |
+
"Woops! Keine gültige API-Schlüssel gefunden. Überprüfen Sie Ihre "
|
| 716 |
+
"Einstellungen."
|
| 717 |
+
|
| 718 |
+
#: .././templates/shortcode_form.php:11
|
| 719 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 720 |
+
msgstr "Oops .. Vergessen Sie nicht, füllen Sie die folgenden Felder"
|
| 721 |
+
|
| 722 |
+
#: .././templates/shortcode_form.php:74
|
| 723 |
+
msgid "required field"
|
| 724 |
+
msgstr "Pflichtfeld"
|
| 725 |
+
|
| 726 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 727 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 728 |
+
msgid "MailChimp Signup Form"
|
| 729 |
+
msgstr "MailChimp Anmelden Formular"
|
| 730 |
+
|
| 731 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 732 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 733 |
+
msgstr "Wählen welcher Form Sie anzeigen möchten:"
|
| 734 |
+
|
| 735 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 736 |
+
msgid "Select a Form to Display"
|
| 737 |
+
msgstr "Wählen Sie ein Formular zur Anzeige"
|
| 738 |
+
|
| 739 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 740 |
+
msgid "Please import MailChimp forms"
|
| 741 |
+
msgstr "Bitte importieren MailChimp Formen"
|
| 742 |
+
|
| 743 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 744 |
+
msgid "Please import some lists from MailChimp"
|
| 745 |
+
msgstr "Importieren Sie einige Listen von MailChimp"
|
| 746 |
+
|
| 747 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 748 |
+
msgid "Import Lists Now"
|
| 749 |
+
msgstr "Jetzt importieren Listen"
|
| 750 |
+
|
| 751 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 752 |
+
msgid ""
|
| 753 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 754 |
+
"least one list to use the Easy MailChimp widget."
|
| 755 |
+
msgstr ""
|
| 756 |
+
"Oops! Wie es aussieht, keine Listen importiert haben noch. Sie müssen "
|
| 757 |
+
"zumindest eine Liste zu importieren, um den Easy MailChimp Widget zu "
|
| 758 |
+
"verwenden."
|
| 759 |
+
|
| 760 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 761 |
+
msgid ""
|
| 762 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 763 |
+
"'Appearance > Widgets' and select a form to display."
|
| 764 |
+
msgstr ""
|
| 765 |
+
"Oops! Es sieht aus wie Sie vergessen haben, eine Form zu wählen, um hier "
|
| 766 |
+
"angezeigt. Gehen Sie auf \"Darstellung> Widgets\" und wählen Sie eine Form, "
|
| 767 |
+
"um anzuzeigen."
|
| 768 |
+
|
| 769 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 770 |
+
msgid "Sign Up For Our Newsletter"
|
| 771 |
+
msgstr "Anmeldung für unseren Newsletter"
|
| 772 |
+
|
| 773 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 774 |
+
msgid "Sign Me Up"
|
| 775 |
+
msgstr "Sign Me Up"
|
| 776 |
+
|
| 777 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 778 |
+
msgid "Title:"
|
| 779 |
+
msgstr "Titel:"
|
| 780 |
+
|
| 781 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 782 |
+
msgid "Form Text:"
|
| 783 |
+
msgstr "Form-Text:"
|
| 784 |
+
|
| 785 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 786 |
+
msgid "Submit Button Text:"
|
| 787 |
+
msgstr "Absenden Button Text:"
|
| 788 |
+
|
| 789 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 790 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 791 |
+
msgstr ""
|
| 792 |
+
"Oops! Es sieht aus wie Sie hinzugefügt haben Ihren API-Schlüssel! Gehen Sie "
|
| 793 |
+
"zu der"
|
| 794 |
+
|
| 795 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 796 |
+
msgid "Settings page"
|
| 797 |
+
msgstr "Einstellungen Seite"
|
| 798 |
+
|
| 799 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 800 |
+
#~ msgstr "Nein API Key-oder Listen-Id gibt!"
|
languages/yikes-inc-easy-mailchimp-extender-el.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-el.po
ADDED
|
@@ -0,0 +1,792 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:25-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:47-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: el\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "Σας ευχαριστούμε για την εγγραφή!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
"Σας ευχαριστούμε για την εγγραφή! Ελέγξτε το email σας για μήνυμα "
|
| 29 |
+
"επιβεβαίωσης."
|
| 30 |
+
|
| 31 |
+
#: .././classes/class.yksemeBase.php:116
|
| 32 |
+
msgid "Select Your Area of Interest"
|
| 33 |
+
msgstr "Επιλέξτε περιοχή που σας ενδιαφέρει"
|
| 34 |
+
|
| 35 |
+
#: .././classes/class.yksemeBase.php:917
|
| 36 |
+
msgid "Click on a subscriber to see further information"
|
| 37 |
+
msgstr "Κάντε κλικ σε ένα συνδρομητή για να δείτε περισσότερες πληροφορίες"
|
| 38 |
+
|
| 39 |
+
#: .././classes/class.yksemeBase.php:920
|
| 40 |
+
msgid "E-Mail"
|
| 41 |
+
msgstr "E-Mail"
|
| 42 |
+
|
| 43 |
+
#: .././classes/class.yksemeBase.php:921
|
| 44 |
+
msgid "Date Subscribed"
|
| 45 |
+
msgstr "Ημερομηνία Εγγεγραμμένα"
|
| 46 |
+
|
| 47 |
+
#: .././classes/class.yksemeBase.php:941
|
| 48 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 49 |
+
msgstr ""
|
| 50 |
+
"Συγνώμη Δεν έχουν επί του παρόντος κανένα συνδρομητές σε αυτή τη λίστα!"
|
| 51 |
+
|
| 52 |
+
#: .././classes/class.yksemeBase.php:998
|
| 53 |
+
msgid "Back to Subscriber List"
|
| 54 |
+
msgstr "Επιστροφή στην λίστα συνδρομητών"
|
| 55 |
+
|
| 56 |
+
#: .././classes/class.yksemeBase.php:999
|
| 57 |
+
msgid "Subscriber Details"
|
| 58 |
+
msgstr "Στοιχεία συνδρομητή"
|
| 59 |
+
|
| 60 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 61 |
+
msgid "Overview"
|
| 62 |
+
msgstr "Επισκόπηση"
|
| 63 |
+
|
| 64 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 65 |
+
msgid "First Name"
|
| 66 |
+
msgstr "Όνομα"
|
| 67 |
+
|
| 68 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 69 |
+
msgid "Last Updated"
|
| 70 |
+
msgstr "Τελευταία Ενημέρωση"
|
| 71 |
+
|
| 72 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 73 |
+
msgid "Preferred Email Type"
|
| 74 |
+
msgstr "Προτιμώμενη Email Τύπος"
|
| 75 |
+
|
| 76 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 77 |
+
msgid "Last Name"
|
| 78 |
+
msgstr "Επώνυμο"
|
| 79 |
+
|
| 80 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 81 |
+
msgid "Language"
|
| 82 |
+
msgstr "γλώσσα"
|
| 83 |
+
|
| 84 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 85 |
+
msgid "Groups Subscribed To"
|
| 86 |
+
msgstr "Ομάδες Εγγεγραμμένα να"
|
| 87 |
+
|
| 88 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 89 |
+
msgid "Subscriber Notes"
|
| 90 |
+
msgstr "Σημειώσεις συνδρομητή"
|
| 91 |
+
|
| 92 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 93 |
+
msgid "Written by"
|
| 94 |
+
msgstr "Συντάχθηκε απο τον"
|
| 95 |
+
|
| 96 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 97 |
+
msgid "Created on"
|
| 98 |
+
msgstr "Δημιουργήθηκε στις"
|
| 99 |
+
|
| 100 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 101 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 102 |
+
msgid "MailChimp Forms"
|
| 103 |
+
msgstr "MailChimp Έντυπα"
|
| 104 |
+
|
| 105 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 106 |
+
msgid "MailChimp Settings"
|
| 107 |
+
msgstr "Ρυθμίσεις MailChimp"
|
| 108 |
+
|
| 109 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 110 |
+
msgid "Manage List Forms"
|
| 111 |
+
msgstr "Διαχειριστείτε Έντυπα Λίστα"
|
| 112 |
+
|
| 113 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 114 |
+
msgid "About YIKES, Inc."
|
| 115 |
+
msgstr "Σχετικά με YIKES, Inc"
|
| 116 |
+
|
| 117 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 118 |
+
msgid "One or more fields are empty"
|
| 119 |
+
msgstr "Ένα ή περισσότερα πεδία είναι κενά"
|
| 120 |
+
|
| 121 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 122 |
+
msgid "Your List Was Successfully Saved!"
|
| 123 |
+
msgstr "Η λίστα σας αποθηκεύτηκε με επιτυχία!"
|
| 124 |
+
|
| 125 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 126 |
+
msgid "I'm sorry there was an error with your request."
|
| 127 |
+
msgstr "Λυπάμαι υπήρχε σφάλμα με το αίτημά σας."
|
| 128 |
+
|
| 129 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 130 |
+
msgid "MailChimp List name"
|
| 131 |
+
msgstr "Όνομα MailChimp Λίστα"
|
| 132 |
+
|
| 133 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 134 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 135 |
+
#, php-format
|
| 136 |
+
msgid "%1$s"
|
| 137 |
+
msgstr "%1$s"
|
| 138 |
+
|
| 139 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 140 |
+
msgid "MailChimp List ID"
|
| 141 |
+
msgstr "MailChimp Λίστα ID"
|
| 142 |
+
|
| 143 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 144 |
+
msgid "Shortcode"
|
| 145 |
+
msgstr "Shortcode"
|
| 146 |
+
|
| 147 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 148 |
+
msgid ""
|
| 149 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 150 |
+
msgstr ""
|
| 151 |
+
"Επικολλήστε αυτόν τον shortcode σε ό, τι σελίδα ή να δημοσιεύσετε θέλετε να "
|
| 152 |
+
"προσθέσετε αυτή τη φόρμα για να"
|
| 153 |
+
|
| 154 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 155 |
+
msgid "PHP Snippet"
|
| 156 |
+
msgstr "PHP αποσπασμάτων"
|
| 157 |
+
|
| 158 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 159 |
+
msgid "Use this code to add this form to a template file"
|
| 160 |
+
msgstr ""
|
| 161 |
+
"Χρησιμοποιήστε αυτόν τον κωδικό για να προσθέσετε αυτή τη μορφή σε ένα "
|
| 162 |
+
"πρότυπο αρχείο"
|
| 163 |
+
|
| 164 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 165 |
+
msgid "Number of Subscribers"
|
| 166 |
+
msgstr "Αριθμός Συνδρομητών"
|
| 167 |
+
|
| 168 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 169 |
+
msgid "Form Fields"
|
| 170 |
+
msgstr "Τα πεδία φόρμας"
|
| 171 |
+
|
| 172 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 173 |
+
msgid ""
|
| 174 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 175 |
+
msgstr ""
|
| 176 |
+
"Ελέγξτε τα πεδία που θέλετε να συμπεριληφθούν στη φόρμα σας (διεύθυνση "
|
| 177 |
+
"ηλεκτρονικού ταχυδρομείου απαιτείται)."
|
| 178 |
+
|
| 179 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 180 |
+
msgid ""
|
| 181 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 182 |
+
msgstr ""
|
| 183 |
+
"Χρησιμοποιήστε τα πράσινα βέλη για να drag-and-drop τα πεδία και να "
|
| 184 |
+
"αναδιατάξετε τη σειρά τους."
|
| 185 |
+
|
| 186 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 187 |
+
msgid "Active Fields"
|
| 188 |
+
msgstr "Ενεργά πεδία"
|
| 189 |
+
|
| 190 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 191 |
+
msgid "Drag"
|
| 192 |
+
msgstr "Τραβήξτε"
|
| 193 |
+
|
| 194 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 195 |
+
msgid "drop"
|
| 196 |
+
msgstr "πτώση"
|
| 197 |
+
|
| 198 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 199 |
+
msgid "Merge field"
|
| 200 |
+
msgstr "Συγχώνευση τομέα"
|
| 201 |
+
|
| 202 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 203 |
+
msgid "Placeholder"
|
| 204 |
+
msgstr "Κράτηση θέσης"
|
| 205 |
+
|
| 206 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 207 |
+
msgid "Redirect User On Submission"
|
| 208 |
+
msgstr "Ανακατεύθυνση χρήστη για Υποβολή"
|
| 209 |
+
|
| 210 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 211 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 212 |
+
msgstr ""
|
| 213 |
+
"επιλέξετε μια σελίδα ή να ορίσετε μια προσαρμοσμένη διεύθυνση URL για να "
|
| 214 |
+
"ανακατευθύνει τον χρήστη σε μετά την υποβολή της φόρμας."
|
| 215 |
+
|
| 216 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 217 |
+
msgid "Select A Post/Page"
|
| 218 |
+
msgstr "Επιλέξτε ένα Post / Σελίδα"
|
| 219 |
+
|
| 220 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 221 |
+
msgid "Save Form Settings"
|
| 222 |
+
msgstr "Διαχειριστείτε Mailchimp Έντυπα Ρυθμίσεις"
|
| 223 |
+
|
| 224 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 225 |
+
msgid "Delete Form"
|
| 226 |
+
msgstr "Διαγραφή Φόρμα"
|
| 227 |
+
|
| 228 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 229 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 230 |
+
msgstr "Παρακαλώ εισάγετε κάποιες λίστες από MailChimp"
|
| 231 |
+
|
| 232 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 233 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 234 |
+
msgstr ""
|
| 235 |
+
"Sign Me Up For Ενημερωτικό Δελτίο Mailchimp-ΑΝΤΙΚΑΤΑΣΤΑΣΗ-ΑΥΤΟ-TEXT της"
|
| 236 |
+
|
| 237 |
+
#: .././pages/about.php:27
|
| 238 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 239 |
+
msgstr "YIKES, Inc Web Σχεδιασμός και Ανάπτυξη"
|
| 240 |
+
|
| 241 |
+
#: .././pages/about.php:29
|
| 242 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 243 |
+
msgstr "Έξυπνη, αποτελεσματική, όμορφα σχεδιασμένες λύσεις web"
|
| 244 |
+
|
| 245 |
+
#: .././pages/about.php:32
|
| 246 |
+
msgid ""
|
| 247 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 248 |
+
"custom WordPress themes and plugins every day."
|
| 249 |
+
msgstr ""
|
| 250 |
+
"YIKES βρίσκεται στη γειτονιά Fishtown της Φιλαδέλφειας, όπου χτίζουμε έθιμο "
|
| 251 |
+
"WordPress θέματα και plugins κάθε μέρα."
|
| 252 |
+
|
| 253 |
+
#: .././pages/about.php:36
|
| 254 |
+
msgid ""
|
| 255 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 256 |
+
"WordCamps"
|
| 257 |
+
msgstr ""
|
| 258 |
+
"Στο YIKES αγαπάμε WordPress! Co-Owner, Tracy Levesque έχει παρουσιάσει σε "
|
| 259 |
+
"WordCamps"
|
| 260 |
+
|
| 261 |
+
#: .././pages/about.php:36
|
| 262 |
+
msgid "and"
|
| 263 |
+
msgstr "και"
|
| 264 |
+
|
| 265 |
+
#: .././pages/about.php:36
|
| 266 |
+
msgid "She also teaches WordPress classes for"
|
| 267 |
+
msgstr "Διδάσκει επίσης μαθήματα για WordPress"
|
| 268 |
+
|
| 269 |
+
#: .././pages/about.php:40
|
| 270 |
+
msgid ""
|
| 271 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 272 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 273 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 274 |
+
"financially sustainable local economy. We even have a"
|
| 275 |
+
msgstr ""
|
| 276 |
+
"Εκτός από τις μεγάλες περιοχές WordPress έχουμε επίσης δεσμευτεί για την "
|
| 277 |
+
"αειφόρο μετακίνηση των επιχειρήσεων. Παρατηρούμε την τριπλή κατώτατη γραμμή: "
|
| 278 |
+
"οι άνθρωποι, πλανήτης, κέρδος και την εργασία για να βοηθήσει στην "
|
| 279 |
+
"οικοδόμηση μια πιο κοινωνικά, περιβαλλοντικά και οικονομικά βιώσιμη τοπική "
|
| 280 |
+
"οικονομία. Έχουμε ακόμη ένα"
|
| 281 |
+
|
| 282 |
+
#: .././pages/about.php:40
|
| 283 |
+
msgid "LEED Platinum office"
|
| 284 |
+
msgstr "LEED Platinum γραφείο"
|
| 285 |
+
|
| 286 |
+
#: .././pages/about.php:44
|
| 287 |
+
msgid ""
|
| 288 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 289 |
+
"learn more about us, please visit"
|
| 290 |
+
msgstr ""
|
| 291 |
+
"Αν σας ενδιαφέρει να μας πρόσληψη για WordPress ανάπτυξη, ή απλά θέλετε να "
|
| 292 |
+
"μάθετε περισσότερα για εμάς, παρακαλώ επισκεφθείτε την ιστοσελίδα"
|
| 293 |
+
|
| 294 |
+
#: .././pages/lists.php:8
|
| 295 |
+
msgid "No forms have been added yet."
|
| 296 |
+
msgstr "Δεν υπάρχουν έντυπα έχει προστεθεί ακόμα."
|
| 297 |
+
|
| 298 |
+
#: .././pages/lists.php:39
|
| 299 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 300 |
+
msgstr ""
|
| 301 |
+
"Ωχ .. Το αναγνωριστικό λίστα που εισάγατε φαίνεται να είναι λανθασμένη."
|
| 302 |
+
|
| 303 |
+
#: .././pages/lists.php:44
|
| 304 |
+
msgid "There was an error!"
|
| 305 |
+
msgstr "Υπήρξε ένα σφάλμα!"
|
| 306 |
+
|
| 307 |
+
#: .././pages/lists.php:135
|
| 308 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 309 |
+
msgstr ""
|
| 310 |
+
"Θα πρέπει να επιλέξετε μια λίστα Mailchimp προκειμένου να δημιουργήσετε μια "
|
| 311 |
+
"φόρμα για την"
|
| 312 |
+
|
| 313 |
+
#: .././pages/lists.php:173
|
| 314 |
+
msgid "Are you sure you want to delete this form?"
|
| 315 |
+
msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το έντυπο;"
|
| 316 |
+
|
| 317 |
+
#: .././pages/lists.php:206
|
| 318 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 319 |
+
msgstr "Είστε βέβαιοι ότι θέλετε να επαν-εισάγετε τα πεδία σας από MailChimp;"
|
| 320 |
+
|
| 321 |
+
#: .././pages/lists.php:228
|
| 322 |
+
msgid "Looks like this form is already up to date!"
|
| 323 |
+
msgstr "Μοιάζει αυτή η μορφή είναι ήδη μέχρι σήμερα!"
|
| 324 |
+
|
| 325 |
+
#: .././pages/lists.php:326
|
| 326 |
+
msgid "Are you sure you want to unsubscribe"
|
| 327 |
+
msgstr "Είστε σίγουροι ότι θέλετε να διαγραφείτε"
|
| 328 |
+
|
| 329 |
+
#: .././pages/lists.php:326
|
| 330 |
+
msgid "from this list?"
|
| 331 |
+
msgstr "από αυτή τη λίστα;"
|
| 332 |
+
|
| 333 |
+
#: .././pages/lists.php:342
|
| 334 |
+
msgid "was successfully unsubscribed from this list."
|
| 335 |
+
msgstr "με επιτυχία την εγγραφή σας από αυτήν τη λίστα."
|
| 336 |
+
|
| 337 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 338 |
+
#: .././pages/options.php:416
|
| 339 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 340 |
+
msgstr "Εύκολη Mailchimp Μορφές από YIKES, Inc"
|
| 341 |
+
|
| 342 |
+
#: .././pages/lists.php:454
|
| 343 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 344 |
+
msgstr ""
|
| 345 |
+
"Για να μπορέσετε να προσθέσετε MailChimp φόρμες στο site σας, θα πρέπει να"
|
| 346 |
+
|
| 347 |
+
#: .././pages/lists.php:454
|
| 348 |
+
msgid "go to the MailChimp Settings page"
|
| 349 |
+
msgstr "μεταβείτε στη σελίδα Ρυθμίσεις MailChimp"
|
| 350 |
+
|
| 351 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 352 |
+
msgid "and add your API Key."
|
| 353 |
+
msgstr "και να προσθέσετε το κλειδί API σας."
|
| 354 |
+
|
| 355 |
+
#: .././pages/lists.php:462
|
| 356 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 357 |
+
msgstr ""
|
| 358 |
+
"Πρέπει να εισάγετε ένα έγκυρο κλειδί API για την εισαγωγή και να "
|
| 359 |
+
"διαχειριστείτε λίστες σας."
|
| 360 |
+
|
| 361 |
+
#: .././pages/lists.php:473
|
| 362 |
+
msgid "Your Lists"
|
| 363 |
+
msgstr "Λίστες σας"
|
| 364 |
+
|
| 365 |
+
#: .././pages/lists.php:483
|
| 366 |
+
msgid "Manage Forms"
|
| 367 |
+
msgstr "Διαχειριστείτε Έντυπα"
|
| 368 |
+
|
| 369 |
+
#: .././pages/options.php:41
|
| 370 |
+
msgid "The options were saved successfully!"
|
| 371 |
+
msgstr "Οι επιλογές αποθηκεύτηκαν με επιτυχία!"
|
| 372 |
+
|
| 373 |
+
#: .././pages/options.php:44
|
| 374 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 375 |
+
msgstr "Οι επιλογές αυτές δεν θα μπορούσαν να σωθούν (ή δεν τους αλλάζουν)."
|
| 376 |
+
|
| 377 |
+
#: .././pages/options.php:96
|
| 378 |
+
msgid "Valid API Key"
|
| 379 |
+
msgstr "Ισχύει το κλειδί API"
|
| 380 |
+
|
| 381 |
+
#: .././pages/options.php:102
|
| 382 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 383 |
+
msgstr "Συγγνώμη, αυτό είναι ένα έγκυρο κλειδί MailChimp API."
|
| 384 |
+
|
| 385 |
+
#: .././pages/options.php:108
|
| 386 |
+
msgid ""
|
| 387 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 388 |
+
"further information."
|
| 389 |
+
msgstr ""
|
| 390 |
+
"Συγγνώμη, αυτό είναι ένα έγκυρο κλειδί MailChimp API. Παρακαλείστε να "
|
| 391 |
+
"ελέγξετε την κονσόλα για περισσότερες πληροφορίες."
|
| 392 |
+
|
| 393 |
+
#: .././pages/options.php:117
|
| 394 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 395 |
+
msgstr "Σφάλμα: Παρακαλώ εισάγετε ένα έγκυρο Mail χιμπατζή API Key."
|
| 396 |
+
|
| 397 |
+
#: .././pages/options.php:199
|
| 398 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 399 |
+
msgstr "Διαχειριστείτε Mailchimp Έντυπα Ρυθμίσεις"
|
| 400 |
+
|
| 401 |
+
#: .././pages/options.php:205
|
| 402 |
+
msgid "WordPress Version Number Error"
|
| 403 |
+
msgstr "Wordpress Έκδοση"
|
| 404 |
+
|
| 405 |
+
#: .././pages/options.php:206
|
| 406 |
+
msgid ""
|
| 407 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 408 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 409 |
+
"and posts unless you update to 3.9 or later."
|
| 410 |
+
msgstr ""
|
| 411 |
+
"Δυστυχώς, αλλά μοιάζει με σας, χρησιμοποιώντας μια παλιά έκδοση του "
|
| 412 |
+
"WordPress. Δεν θα είναι σε θέση να έχουν πρόσβαση στο κουμπί tinyMCE να "
|
| 413 |
+
"εισάγετε φόρμες σε σελίδες και δημοσιεύσεις εκτός και αν ενημερώσετε σε 3,9 "
|
| 414 |
+
"ή νεότερη έκδοση."
|
| 415 |
+
|
| 416 |
+
#: .././pages/options.php:215
|
| 417 |
+
msgid "LocalHost Detected :"
|
| 418 |
+
msgstr "Εντοπίστηκε localhost:"
|
| 419 |
+
|
| 420 |
+
#: .././pages/options.php:216
|
| 421 |
+
msgid ""
|
| 422 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 423 |
+
msgstr "Εύκολη Mailchimp Μορφές από YIKES, Inc"
|
| 424 |
+
|
| 425 |
+
#: .././pages/options.php:217
|
| 426 |
+
msgid ""
|
| 427 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 428 |
+
msgstr ""
|
| 429 |
+
"Εάν δεν είστε σε θέση να επικυρώσει το κλειδί API, και να λάβετε το μήνυμα "
|
| 430 |
+
"λάθους"
|
| 431 |
+
|
| 432 |
+
#: .././pages/options.php:217
|
| 433 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 434 |
+
msgstr ""
|
| 435 |
+
"\"Πρόβλημα πιστοποιητικό SSL: μπορεί να περάσει τοπική πιστοποιητικό εκδότη"
|
| 436 |
+
"\" "
|
| 437 |
+
|
| 438 |
+
#: .././pages/options.php:217
|
| 439 |
+
msgid "follow the tutorial located "
|
| 440 |
+
msgstr "ακολουθούν το φροντιστήριο που βρίσκεται "
|
| 441 |
+
|
| 442 |
+
#: .././pages/options.php:230
|
| 443 |
+
msgid "Your Mailchimp API Key"
|
| 444 |
+
msgstr "Mailchimp σας το κλειδί API"
|
| 445 |
+
|
| 446 |
+
#: .././pages/options.php:238
|
| 447 |
+
msgid ""
|
| 448 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 449 |
+
"site to communicate with your MailChimp account."
|
| 450 |
+
msgstr ""
|
| 451 |
+
"Παρακαλώ εισάγετε το MailChimp API Key παραπάνω. Το Κλειδί API επιτρέπει "
|
| 452 |
+
"WordPress site σας για να επικοινωνούν με το λογαριασμό σας MailChimp."
|
| 453 |
+
|
| 454 |
+
#: .././pages/options.php:239
|
| 455 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 456 |
+
msgstr "Για περισσότερη βοήθεια, επισκεφθείτε το άρθρο MailChimp Υποστήριξη"
|
| 457 |
+
|
| 458 |
+
#: .././pages/options.php:239
|
| 459 |
+
msgid "Where can I find my API Key?"
|
| 460 |
+
msgstr "Πού μπορώ να βρω μου API κλειδί;"
|
| 461 |
+
|
| 462 |
+
#: .././pages/options.php:244
|
| 463 |
+
msgid "Preferred Form Layout"
|
| 464 |
+
msgstr "Προτιμώμενη μορφή διάταξης"
|
| 465 |
+
|
| 466 |
+
#: .././pages/options.php:247
|
| 467 |
+
msgid "table"
|
| 468 |
+
msgstr "πίνακας"
|
| 469 |
+
|
| 470 |
+
#: .././pages/options.php:248
|
| 471 |
+
msgid "div"
|
| 472 |
+
msgstr "div"
|
| 473 |
+
|
| 474 |
+
#: .././pages/options.php:256
|
| 475 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 476 |
+
msgstr ""
|
| 477 |
+
"Επιλέξτε αν θέλετε φόρμες σας να χρησιμοποιήσετε έναν πίνακα ή διάταξη div."
|
| 478 |
+
|
| 479 |
+
#: .././pages/options.php:261
|
| 480 |
+
msgid "Advanced Error Messaging"
|
| 481 |
+
msgstr "Σύνθετη Σφάλμα Μηνύματα"
|
| 482 |
+
|
| 483 |
+
#: .././pages/options.php:264
|
| 484 |
+
msgid "Disabled"
|
| 485 |
+
msgstr "Απενεργοποιημένο"
|
| 486 |
+
|
| 487 |
+
#: .././pages/options.php:265
|
| 488 |
+
msgid "Enabled"
|
| 489 |
+
msgstr "Ενεργοποιημένο"
|
| 490 |
+
|
| 491 |
+
#: .././pages/options.php:273
|
| 492 |
+
msgid ""
|
| 493 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 494 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 495 |
+
"MailChimp is returning."
|
| 496 |
+
msgstr ""
|
| 497 |
+
"Ενεργοποιήστε, αν έχετε προβλήματα με τις μορφές σας την αποστολή δεδομένων "
|
| 498 |
+
"σε MailChimp. Ενεργοποίηση Σύνθετη Μηνύματα λάθους θα σας δείξει την ακριβή "
|
| 499 |
+
"κωδικούς σφαλμάτων MailChimp επιστρέφει."
|
| 500 |
+
|
| 501 |
+
#: .././pages/options.php:281
|
| 502 |
+
msgid "Single Opt-In"
|
| 503 |
+
msgstr "Ενιαία Opt-In"
|
| 504 |
+
|
| 505 |
+
#: .././pages/options.php:282
|
| 506 |
+
msgid "Double Opt-In"
|
| 507 |
+
msgstr "Double Opt-In"
|
| 508 |
+
|
| 509 |
+
#: .././pages/options.php:290
|
| 510 |
+
msgid ""
|
| 511 |
+
"A single opt-in will add the user to your list without any further "
|
| 512 |
+
"interaction."
|
| 513 |
+
msgstr ""
|
| 514 |
+
"Ένα ενιαίο opt-in θα προσθέσετε το χρήστη στη λίστα σας, χωρίς περαιτέρω "
|
| 515 |
+
"ενέργειες."
|
| 516 |
+
|
| 517 |
+
#: .././pages/options.php:291
|
| 518 |
+
msgid ""
|
| 519 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 520 |
+
"subscription."
|
| 521 |
+
msgstr ""
|
| 522 |
+
"Ένα διπλό opt-in θα στείλει ένα email στο χρήστη ζητώντας τους να "
|
| 523 |
+
"επιβεβαιώσουν την εγγραφή τους."
|
| 524 |
+
|
| 525 |
+
#: .././pages/options.php:292
|
| 526 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 527 |
+
msgstr ""
|
| 528 |
+
"Αυτό θα υπαγορεύσει επίσης τις ρυθμίσεις opt-in για άτομα που αφήνουν σχόλια."
|
| 529 |
+
|
| 530 |
+
#: .././pages/options.php:297
|
| 531 |
+
msgid "Custom Opt-In Message"
|
| 532 |
+
msgstr "Προσαρμοσμένη Opt-In μήνυμα"
|
| 533 |
+
|
| 534 |
+
#: .././pages/options.php:299
|
| 535 |
+
msgid "Double Opt-In Message"
|
| 536 |
+
msgstr "Double Opt-In μήνυμα"
|
| 537 |
+
|
| 538 |
+
#: .././pages/options.php:301
|
| 539 |
+
msgid "Single Opt-In Message"
|
| 540 |
+
msgstr "Ενιαία μήνυμα Opt-In"
|
| 541 |
+
|
| 542 |
+
#: .././pages/options.php:307
|
| 543 |
+
msgid "Interest Group Label"
|
| 544 |
+
msgstr "Ομάδα Ενδιαφέροντος Label"
|
| 545 |
+
|
| 546 |
+
#: .././pages/options.php:316
|
| 547 |
+
msgid ""
|
| 548 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 549 |
+
"group names."
|
| 550 |
+
msgstr ""
|
| 551 |
+
"Κείμενο που εμφανίζεται πάνω από ομάδες συμφερόντων. Αφήστε το κενό για να "
|
| 552 |
+
"χρησιμοποιήσετε τα ονόματα των ομάδων συμφερόντων MailChimp."
|
| 553 |
+
|
| 554 |
+
#: .././pages/options.php:321
|
| 555 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 556 |
+
msgstr "Εμφάνιση opt-in κουτάκι μορφές σχόλιο;"
|
| 557 |
+
|
| 558 |
+
#: .././pages/options.php:324
|
| 559 |
+
msgid "Hide"
|
| 560 |
+
msgstr "Απόκρυψη"
|
| 561 |
+
|
| 562 |
+
#: .././pages/options.php:325
|
| 563 |
+
msgid "Show"
|
| 564 |
+
msgstr "Εμφάνιση"
|
| 565 |
+
|
| 566 |
+
#: .././pages/options.php:333
|
| 567 |
+
msgid ""
|
| 568 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 569 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 570 |
+
"mailing list."
|
| 571 |
+
msgstr ""
|
| 572 |
+
"Αυτό θα εμφανίσει ένα κουτάκι ακριβώς πάνω από το κουμπί υποβολής για όλες "
|
| 573 |
+
"τις μορφές σχόλιο. Αν επιλεγεί, όλοι οι χρήστες, αφήνοντας τα σχόλια θα "
|
| 574 |
+
"πρέπει επίσης να προστεθούν στη λίστα."
|
| 575 |
+
|
| 576 |
+
#: .././pages/options.php:338
|
| 577 |
+
msgid "Custom Comment Checkbox Text"
|
| 578 |
+
msgstr "Προσαρμοσμένη Σχόλιο Checkbox Κείμενο"
|
| 579 |
+
|
| 580 |
+
#: .././pages/options.php:345
|
| 581 |
+
msgid "Default List"
|
| 582 |
+
msgstr "Προεπιλογή Λίστα"
|
| 583 |
+
|
| 584 |
+
#: .././pages/options.php:360
|
| 585 |
+
msgid ""
|
| 586 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 587 |
+
"comment."
|
| 588 |
+
msgstr ""
|
| 589 |
+
"Αυτή είναι η προεπιλεγμένη λίστα χρήστες θα εγγραφεί κατά την υποβολή ένα "
|
| 590 |
+
"σχόλιο."
|
| 591 |
+
|
| 592 |
+
#: .././pages/options.php:361
|
| 593 |
+
msgid ""
|
| 594 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 595 |
+
"name are required or you may run into issues."
|
| 596 |
+
msgstr ""
|
| 597 |
+
"Είναι καλύτερο να επιλέξετε μια φόρμα όπου μόνο το e-mail, όνομα ή / και "
|
| 598 |
+
"επώνυμο απαιτούνται ή μπορεί να τρέχει σε θέματα."
|
| 599 |
+
|
| 600 |
+
#: .././pages/options.php:373
|
| 601 |
+
msgid "Plugin Information"
|
| 602 |
+
msgstr "Plugin πληροφορίες"
|
| 603 |
+
|
| 604 |
+
#: .././pages/options.php:376
|
| 605 |
+
msgid "If you experience any issues with our plugin, please"
|
| 606 |
+
msgstr "Εάν αντιμετωπίσετε προβλήματα με το plugin μας, παρακαλούμε"
|
| 607 |
+
|
| 608 |
+
#: .././pages/options.php:376
|
| 609 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 610 |
+
msgstr "υποβάλει Νέα Έκδοση για μας Tracker Github Τεύχος"
|
| 611 |
+
|
| 612 |
+
#: .././pages/options.php:376
|
| 613 |
+
msgid ""
|
| 614 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 615 |
+
msgstr ""
|
| 616 |
+
"Παρακαλούμε να συμπεριλάβετε τις παρακάτω πληροφορίες για να μας βοηθήσουν "
|
| 617 |
+
"να αντιμετωπίσετε το πρόβλημα."
|
| 618 |
+
|
| 619 |
+
#: .././pages/options.php:384
|
| 620 |
+
msgid "Plugin Version"
|
| 621 |
+
msgstr "Έκδοση Plugin"
|
| 622 |
+
|
| 623 |
+
#: .././pages/options.php:388
|
| 624 |
+
msgid "Wordpress Version"
|
| 625 |
+
msgstr "Wordpress Έκδοση"
|
| 626 |
+
|
| 627 |
+
#: .././pages/options.php:392
|
| 628 |
+
msgid "Browser Information"
|
| 629 |
+
msgstr "Πληροφορίες Browser"
|
| 630 |
+
|
| 631 |
+
#: .././pages/options.php:420
|
| 632 |
+
msgid "Error"
|
| 633 |
+
msgstr "Σφάλμ"
|
| 634 |
+
|
| 635 |
+
#: .././pages/options.php:421
|
| 636 |
+
msgid ""
|
| 637 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 638 |
+
"cURL to send and retreive data."
|
| 639 |
+
msgstr ""
|
| 640 |
+
"Δυστυχώς, όμως cURL είναι απενεργοποιημένη στο διακομιστή σας. Το MailChimp "
|
| 641 |
+
"API χρησιμοποιεί cURL για την αποστολή και retreive δεδομένων."
|
| 642 |
+
|
| 643 |
+
#: .././pages/options.php:426
|
| 644 |
+
msgid "Help!"
|
| 645 |
+
msgstr "Βοήθεια!"
|
| 646 |
+
|
| 647 |
+
#: .././pages/options.php:426
|
| 648 |
+
msgid "What is cURL?"
|
| 649 |
+
msgstr "Τι είναι cURL;"
|
| 650 |
+
|
| 651 |
+
#: .././pages/options.php:426
|
| 652 |
+
msgid "Check phpinfo()"
|
| 653 |
+
msgstr "Ελέγξτε phpinfo ()"
|
| 654 |
+
|
| 655 |
+
#: .././pages/options.php:428
|
| 656 |
+
msgid "Steps To Resolve The Issue"
|
| 657 |
+
msgstr "Βήματα για την επίλυση του ζητήματος"
|
| 658 |
+
|
| 659 |
+
#: .././pages/options.php:430
|
| 660 |
+
msgid ""
|
| 661 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 662 |
+
msgstr ""
|
| 663 |
+
"Μπορείτε να ενεργοποιήσετε cURL από την ενεργοποίηση του cURL ενότητα μέσα "
|
| 664 |
+
"στο αρχείο php.ini σας"
|
| 665 |
+
|
| 666 |
+
#: .././pages/options.php:430
|
| 667 |
+
msgid "You should find the php.ini file located here : "
|
| 668 |
+
msgstr "Θα πρέπει να βρείτε το αρχείο php.ini που βρίσκεται εδώ: "
|
| 669 |
+
|
| 670 |
+
#: .././pages/options.php:431
|
| 671 |
+
msgid ""
|
| 672 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 673 |
+
msgstr ""
|
| 674 |
+
"Μόλις βρεθεί, να ανοίξει το αρχείο php.ini και να εντοπίσετε τη γραμμή \"? "
|
| 675 |
+
"Επέκταση = php_curl.dll\"."
|
| 676 |
+
|
| 677 |
+
#: .././pages/options.php:432
|
| 678 |
+
msgid ""
|
| 679 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 680 |
+
"active."
|
| 681 |
+
msgstr ""
|
| 682 |
+
"Αφαιρέστε την άνω τελεία πριν από τη γραμμή, για να un-σχόλιο και να κάνει η "
|
| 683 |
+
"μονάδα ενεργό."
|
| 684 |
+
|
| 685 |
+
#: .././pages/options.php:433
|
| 686 |
+
msgid "Re-save and close the file."
|
| 687 |
+
msgstr "Re-αποθηκεύστε και κλείστε το αρχείο."
|
| 688 |
+
|
| 689 |
+
#: .././pages/options.php:434
|
| 690 |
+
msgid "Re-load this page."
|
| 691 |
+
msgstr "Re-φορτώσει αυτήν τη σελίδα."
|
| 692 |
+
|
| 693 |
+
#: .././templates/shortcode_error.php:1
|
| 694 |
+
msgid "There was an error calling the mailchimp list."
|
| 695 |
+
msgstr "Υπήρξε ένα σφάλμα κατά την κλήση του καταλόγου MailChimp."
|
| 696 |
+
|
| 697 |
+
#: .././templates/shortcode_error_data.php:1
|
| 698 |
+
msgid ""
|
| 699 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 700 |
+
"List Forms\" page."
|
| 701 |
+
msgstr ""
|
| 702 |
+
"Ο κατάλογος δεν υπάρχει! Βεβαιωθείτε ότι έχετε εισαγάγει τη λίστα στο "
|
| 703 |
+
"\"Manage Forms Λίστα\" σελίδα."
|
| 704 |
+
|
| 705 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 706 |
+
msgid "This list was already placed on this page!"
|
| 707 |
+
msgstr "Ο κατάλογος αυτός έχει ήδη τοποθετηθεί σε αυτή τη σελίδα!"
|
| 708 |
+
|
| 709 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 710 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 711 |
+
msgstr "Woops! Δεν Ισχύει API Key βρέθηκαν. Διπλό ελέγξτε τις ρυθμίσεις σας."
|
| 712 |
+
|
| 713 |
+
#: .././templates/shortcode_form.php:11
|
| 714 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 715 |
+
msgstr "Ωχ .. Μην ξεχάσετε να συμπληρώσετε τα παρακάτω πεδία:"
|
| 716 |
+
|
| 717 |
+
#: .././templates/shortcode_form.php:74
|
| 718 |
+
msgid "required field"
|
| 719 |
+
msgstr "υποχρεωτικό πεδίο"
|
| 720 |
+
|
| 721 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 722 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 723 |
+
msgid "MailChimp Signup Form"
|
| 724 |
+
msgstr "MailChimp Αίτηση εισόδου"
|
| 725 |
+
|
| 726 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 727 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 728 |
+
msgstr "Επιλέξτε το έντυπο που θα θέλατε να εμφανίζονται:"
|
| 729 |
+
|
| 730 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 731 |
+
msgid "Select a Form to Display"
|
| 732 |
+
msgstr "Επιλέξτε ένα έντυπο για την εμφάνιση"
|
| 733 |
+
|
| 734 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 735 |
+
msgid "Please import MailChimp forms"
|
| 736 |
+
msgstr "Παρακαλώ εισάγετε MailChimp μορφές"
|
| 737 |
+
|
| 738 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 739 |
+
msgid "Please import some lists from MailChimp"
|
| 740 |
+
msgstr "Παρακαλώ εισάγετε κάποιες λίστες από MailChimp"
|
| 741 |
+
|
| 742 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 743 |
+
msgid "Import Lists Now"
|
| 744 |
+
msgstr "Λίστες Εισαγωγή Τώρα"
|
| 745 |
+
|
| 746 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 747 |
+
msgid ""
|
| 748 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 749 |
+
"least one list to use the Easy MailChimp widget."
|
| 750 |
+
msgstr ""
|
| 751 |
+
"Ωχ! Φαίνεται ότι δεν εισήγαγε λίστες ακόμα. Θα πρέπει να εισάγετε "
|
| 752 |
+
"τουλάχιστον μια λίστα για να χρησιμοποιήσετε το widget Easy MailChimp."
|
| 753 |
+
|
| 754 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 755 |
+
msgid ""
|
| 756 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 757 |
+
"'Appearance > Widgets' and select a form to display."
|
| 758 |
+
msgstr ""
|
| 759 |
+
"Ωχ! Φαίνεται σαν να ξέχασε να επιλέξετε μια μορφή για να εμφανιστεί εδώ. "
|
| 760 |
+
"Πηγαίνετε στο «Εμφάνιση> Widgets» και επιλέξτε μια μορφή για να εμφανιστεί."
|
| 761 |
+
|
| 762 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 763 |
+
msgid "Sign Up For Our Newsletter"
|
| 764 |
+
msgstr "Εγγραφή Στο Newsletter"
|
| 765 |
+
|
| 766 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 767 |
+
msgid "Sign Me Up"
|
| 768 |
+
msgstr "Sign Me Up"
|
| 769 |
+
|
| 770 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 771 |
+
msgid "Title:"
|
| 772 |
+
msgstr "Τίτλος:"
|
| 773 |
+
|
| 774 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 775 |
+
msgid "Form Text:"
|
| 776 |
+
msgstr "Μορφή κειμένου:"
|
| 777 |
+
|
| 778 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 779 |
+
msgid "Submit Button Text:"
|
| 780 |
+
msgstr "Υποβολή Button Κείμενο:"
|
| 781 |
+
|
| 782 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 783 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 784 |
+
msgstr ""
|
| 785 |
+
"Ωχ! Φαίνεται ότι δεν έχετε προσθέσει το κλειδί API σας! Κεφάλι πάνω στο"
|
| 786 |
+
|
| 787 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 788 |
+
msgid "Settings page"
|
| 789 |
+
msgstr "Στη σελίδα Ρυθμίσεις"
|
| 790 |
+
|
| 791 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 792 |
+
#~ msgstr "Δεν κλειδί API ή Αναγνωριστικό λίστας Exist!"
|
languages/yikes-inc-easy-mailchimp-extender-en_US.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-en_US.po
ADDED
|
@@ -0,0 +1,711 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 14:44-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:44-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: en\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr ""
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
|
| 29 |
+
#: .././classes/class.yksemeBase.php:116
|
| 30 |
+
msgid "Select Your Area of Interest"
|
| 31 |
+
msgstr ""
|
| 32 |
+
|
| 33 |
+
#: .././classes/class.yksemeBase.php:917
|
| 34 |
+
msgid "Click on a subscriber to see further information"
|
| 35 |
+
msgstr ""
|
| 36 |
+
|
| 37 |
+
#: .././classes/class.yksemeBase.php:920
|
| 38 |
+
msgid "E-Mail"
|
| 39 |
+
msgstr ""
|
| 40 |
+
|
| 41 |
+
#: .././classes/class.yksemeBase.php:921
|
| 42 |
+
msgid "Date Subscribed"
|
| 43 |
+
msgstr ""
|
| 44 |
+
|
| 45 |
+
#: .././classes/class.yksemeBase.php:941
|
| 46 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 47 |
+
msgstr ""
|
| 48 |
+
|
| 49 |
+
#: .././classes/class.yksemeBase.php:998
|
| 50 |
+
msgid "Back to Subscriber List"
|
| 51 |
+
msgstr ""
|
| 52 |
+
|
| 53 |
+
#: .././classes/class.yksemeBase.php:999
|
| 54 |
+
msgid "Subscriber Details"
|
| 55 |
+
msgstr ""
|
| 56 |
+
|
| 57 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 58 |
+
msgid "Overview"
|
| 59 |
+
msgstr ""
|
| 60 |
+
|
| 61 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 62 |
+
msgid "First Name"
|
| 63 |
+
msgstr ""
|
| 64 |
+
|
| 65 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 66 |
+
msgid "Last Updated"
|
| 67 |
+
msgstr ""
|
| 68 |
+
|
| 69 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 70 |
+
msgid "Preferred Email Type"
|
| 71 |
+
msgstr ""
|
| 72 |
+
|
| 73 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 74 |
+
msgid "Last Name"
|
| 75 |
+
msgstr ""
|
| 76 |
+
|
| 77 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 78 |
+
msgid "Language"
|
| 79 |
+
msgstr ""
|
| 80 |
+
|
| 81 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 82 |
+
msgid "Groups Subscribed To"
|
| 83 |
+
msgstr ""
|
| 84 |
+
|
| 85 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 86 |
+
msgid "Subscriber Notes"
|
| 87 |
+
msgstr ""
|
| 88 |
+
|
| 89 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 90 |
+
msgid "Written by"
|
| 91 |
+
msgstr ""
|
| 92 |
+
|
| 93 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 94 |
+
msgid "Created on"
|
| 95 |
+
msgstr ""
|
| 96 |
+
|
| 97 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 98 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 99 |
+
msgid "MailChimp Forms"
|
| 100 |
+
msgstr ""
|
| 101 |
+
|
| 102 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 103 |
+
msgid "MailChimp Settings"
|
| 104 |
+
msgstr ""
|
| 105 |
+
|
| 106 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 107 |
+
msgid "Manage List Forms"
|
| 108 |
+
msgstr ""
|
| 109 |
+
|
| 110 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 111 |
+
msgid "About YIKES, Inc."
|
| 112 |
+
msgstr ""
|
| 113 |
+
|
| 114 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 115 |
+
msgid "One or more fields are empty"
|
| 116 |
+
msgstr ""
|
| 117 |
+
|
| 118 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 119 |
+
msgid "Your List Was Successfully Saved!"
|
| 120 |
+
msgstr ""
|
| 121 |
+
|
| 122 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 123 |
+
msgid "I'm sorry there was an error with your request."
|
| 124 |
+
msgstr ""
|
| 125 |
+
|
| 126 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 127 |
+
msgid "MailChimp List name"
|
| 128 |
+
msgstr ""
|
| 129 |
+
|
| 130 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 131 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 132 |
+
#, php-format
|
| 133 |
+
msgid "%1$s"
|
| 134 |
+
msgstr ""
|
| 135 |
+
|
| 136 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 137 |
+
msgid "MailChimp List ID"
|
| 138 |
+
msgstr ""
|
| 139 |
+
|
| 140 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 141 |
+
msgid "Shortcode"
|
| 142 |
+
msgstr ""
|
| 143 |
+
|
| 144 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 145 |
+
msgid ""
|
| 146 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 147 |
+
msgstr ""
|
| 148 |
+
|
| 149 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 150 |
+
msgid "PHP Snippet"
|
| 151 |
+
msgstr ""
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 154 |
+
msgid "Use this code to add this form to a template file"
|
| 155 |
+
msgstr ""
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 158 |
+
msgid "Number of Subscribers"
|
| 159 |
+
msgstr ""
|
| 160 |
+
|
| 161 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 162 |
+
msgid "Form Fields"
|
| 163 |
+
msgstr ""
|
| 164 |
+
|
| 165 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 166 |
+
msgid ""
|
| 167 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 168 |
+
msgstr ""
|
| 169 |
+
|
| 170 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 171 |
+
msgid ""
|
| 172 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 173 |
+
msgstr ""
|
| 174 |
+
|
| 175 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 176 |
+
msgid "Active Fields"
|
| 177 |
+
msgstr ""
|
| 178 |
+
|
| 179 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 180 |
+
msgid "Drag"
|
| 181 |
+
msgstr ""
|
| 182 |
+
|
| 183 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 184 |
+
msgid "drop"
|
| 185 |
+
msgstr ""
|
| 186 |
+
|
| 187 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 188 |
+
msgid "Merge field"
|
| 189 |
+
msgstr ""
|
| 190 |
+
|
| 191 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 192 |
+
msgid "Placeholder"
|
| 193 |
+
msgstr ""
|
| 194 |
+
|
| 195 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 196 |
+
msgid "Redirect User On Submission"
|
| 197 |
+
msgstr ""
|
| 198 |
+
|
| 199 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 200 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 201 |
+
msgstr ""
|
| 202 |
+
|
| 203 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 204 |
+
msgid "Select A Post/Page"
|
| 205 |
+
msgstr ""
|
| 206 |
+
|
| 207 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 208 |
+
msgid "Save Form Settings"
|
| 209 |
+
msgstr ""
|
| 210 |
+
|
| 211 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 212 |
+
msgid "Delete Form"
|
| 213 |
+
msgstr ""
|
| 214 |
+
|
| 215 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 216 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 217 |
+
msgstr ""
|
| 218 |
+
|
| 219 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 220 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 221 |
+
msgstr ""
|
| 222 |
+
|
| 223 |
+
#: .././pages/about.php:27
|
| 224 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 225 |
+
msgstr ""
|
| 226 |
+
|
| 227 |
+
#: .././pages/about.php:29
|
| 228 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 229 |
+
msgstr ""
|
| 230 |
+
|
| 231 |
+
#: .././pages/about.php:32
|
| 232 |
+
msgid ""
|
| 233 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 234 |
+
"custom WordPress themes and plugins every day."
|
| 235 |
+
msgstr ""
|
| 236 |
+
|
| 237 |
+
#: .././pages/about.php:36
|
| 238 |
+
msgid ""
|
| 239 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 240 |
+
"WordCamps"
|
| 241 |
+
msgstr ""
|
| 242 |
+
|
| 243 |
+
#: .././pages/about.php:36
|
| 244 |
+
msgid "and"
|
| 245 |
+
msgstr ""
|
| 246 |
+
|
| 247 |
+
#: .././pages/about.php:36
|
| 248 |
+
msgid "She also teaches WordPress classes for"
|
| 249 |
+
msgstr ""
|
| 250 |
+
|
| 251 |
+
#: .././pages/about.php:40
|
| 252 |
+
msgid ""
|
| 253 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 254 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 255 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 256 |
+
"financially sustainable local economy. We even have a"
|
| 257 |
+
msgstr ""
|
| 258 |
+
|
| 259 |
+
#: .././pages/about.php:40
|
| 260 |
+
msgid "LEED Platinum office"
|
| 261 |
+
msgstr ""
|
| 262 |
+
|
| 263 |
+
#: .././pages/about.php:44
|
| 264 |
+
msgid ""
|
| 265 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 266 |
+
"learn more about us, please visit"
|
| 267 |
+
msgstr ""
|
| 268 |
+
|
| 269 |
+
#: .././pages/lists.php:8
|
| 270 |
+
msgid "No forms have been added yet."
|
| 271 |
+
msgstr ""
|
| 272 |
+
|
| 273 |
+
#: .././pages/lists.php:39
|
| 274 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 275 |
+
msgstr ""
|
| 276 |
+
|
| 277 |
+
#: .././pages/lists.php:44
|
| 278 |
+
msgid "There was an error!"
|
| 279 |
+
msgstr ""
|
| 280 |
+
|
| 281 |
+
#: .././pages/lists.php:135
|
| 282 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 283 |
+
msgstr ""
|
| 284 |
+
|
| 285 |
+
#: .././pages/lists.php:173
|
| 286 |
+
msgid "Are you sure you want to delete this form?"
|
| 287 |
+
msgstr ""
|
| 288 |
+
|
| 289 |
+
#: .././pages/lists.php:206
|
| 290 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 291 |
+
msgstr ""
|
| 292 |
+
|
| 293 |
+
#: .././pages/lists.php:228
|
| 294 |
+
msgid "Looks like this form is already up to date!"
|
| 295 |
+
msgstr ""
|
| 296 |
+
|
| 297 |
+
#: .././pages/lists.php:326
|
| 298 |
+
msgid "Are you sure you want to unsubscribe"
|
| 299 |
+
msgstr ""
|
| 300 |
+
|
| 301 |
+
#: .././pages/lists.php:326
|
| 302 |
+
msgid "from this list?"
|
| 303 |
+
msgstr ""
|
| 304 |
+
|
| 305 |
+
#: .././pages/lists.php:342
|
| 306 |
+
msgid "was successfully unsubscribed from this list."
|
| 307 |
+
msgstr ""
|
| 308 |
+
|
| 309 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 310 |
+
#: .././pages/options.php:416
|
| 311 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 312 |
+
msgstr ""
|
| 313 |
+
|
| 314 |
+
#: .././pages/lists.php:454
|
| 315 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 316 |
+
msgstr ""
|
| 317 |
+
|
| 318 |
+
#: .././pages/lists.php:454
|
| 319 |
+
msgid "go to the MailChimp Settings page"
|
| 320 |
+
msgstr ""
|
| 321 |
+
|
| 322 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 323 |
+
msgid "and add your API Key."
|
| 324 |
+
msgstr ""
|
| 325 |
+
|
| 326 |
+
#: .././pages/lists.php:462
|
| 327 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 328 |
+
msgstr ""
|
| 329 |
+
|
| 330 |
+
#: .././pages/lists.php:473
|
| 331 |
+
msgid "Your Lists"
|
| 332 |
+
msgstr ""
|
| 333 |
+
|
| 334 |
+
#: .././pages/lists.php:483
|
| 335 |
+
msgid "Manage Forms"
|
| 336 |
+
msgstr ""
|
| 337 |
+
|
| 338 |
+
#: .././pages/options.php:41
|
| 339 |
+
msgid "The options were saved successfully!"
|
| 340 |
+
msgstr ""
|
| 341 |
+
|
| 342 |
+
#: .././pages/options.php:44
|
| 343 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 344 |
+
msgstr ""
|
| 345 |
+
|
| 346 |
+
#: .././pages/options.php:96
|
| 347 |
+
msgid "Valid API Key"
|
| 348 |
+
msgstr ""
|
| 349 |
+
|
| 350 |
+
#: .././pages/options.php:102
|
| 351 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 352 |
+
msgstr ""
|
| 353 |
+
|
| 354 |
+
#: .././pages/options.php:108
|
| 355 |
+
msgid ""
|
| 356 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 357 |
+
"further information."
|
| 358 |
+
msgstr ""
|
| 359 |
+
|
| 360 |
+
#: .././pages/options.php:117
|
| 361 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 362 |
+
msgstr ""
|
| 363 |
+
|
| 364 |
+
#: .././pages/options.php:199
|
| 365 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 366 |
+
msgstr ""
|
| 367 |
+
|
| 368 |
+
#: .././pages/options.php:205
|
| 369 |
+
msgid "WordPress Version Number Error"
|
| 370 |
+
msgstr ""
|
| 371 |
+
|
| 372 |
+
#: .././pages/options.php:206
|
| 373 |
+
msgid ""
|
| 374 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 375 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 376 |
+
"and posts unless you update to 3.9 or later."
|
| 377 |
+
msgstr ""
|
| 378 |
+
|
| 379 |
+
#: .././pages/options.php:215
|
| 380 |
+
msgid "LocalHost Detected :"
|
| 381 |
+
msgstr ""
|
| 382 |
+
|
| 383 |
+
#: .././pages/options.php:216
|
| 384 |
+
msgid ""
|
| 385 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 386 |
+
msgstr ""
|
| 387 |
+
|
| 388 |
+
#: .././pages/options.php:217
|
| 389 |
+
msgid ""
|
| 390 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 391 |
+
msgstr ""
|
| 392 |
+
|
| 393 |
+
#: .././pages/options.php:217
|
| 394 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 395 |
+
msgstr ""
|
| 396 |
+
|
| 397 |
+
#: .././pages/options.php:217
|
| 398 |
+
msgid "follow the tutorial located "
|
| 399 |
+
msgstr ""
|
| 400 |
+
|
| 401 |
+
#: .././pages/options.php:230
|
| 402 |
+
msgid "Your Mailchimp API Key"
|
| 403 |
+
msgstr ""
|
| 404 |
+
|
| 405 |
+
#: .././pages/options.php:238
|
| 406 |
+
msgid ""
|
| 407 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 408 |
+
"site to communicate with your MailChimp account."
|
| 409 |
+
msgstr ""
|
| 410 |
+
|
| 411 |
+
#: .././pages/options.php:239
|
| 412 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 413 |
+
msgstr ""
|
| 414 |
+
|
| 415 |
+
#: .././pages/options.php:239
|
| 416 |
+
msgid "Where can I find my API Key?"
|
| 417 |
+
msgstr ""
|
| 418 |
+
|
| 419 |
+
#: .././pages/options.php:244
|
| 420 |
+
msgid "Preferred Form Layout"
|
| 421 |
+
msgstr ""
|
| 422 |
+
|
| 423 |
+
#: .././pages/options.php:247
|
| 424 |
+
msgid "table"
|
| 425 |
+
msgstr ""
|
| 426 |
+
|
| 427 |
+
#: .././pages/options.php:248
|
| 428 |
+
msgid "div"
|
| 429 |
+
msgstr ""
|
| 430 |
+
|
| 431 |
+
#: .././pages/options.php:256
|
| 432 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 433 |
+
msgstr ""
|
| 434 |
+
|
| 435 |
+
#: .././pages/options.php:261
|
| 436 |
+
msgid "Advanced Error Messaging"
|
| 437 |
+
msgstr ""
|
| 438 |
+
|
| 439 |
+
#: .././pages/options.php:264
|
| 440 |
+
msgid "Disabled"
|
| 441 |
+
msgstr ""
|
| 442 |
+
|
| 443 |
+
#: .././pages/options.php:265
|
| 444 |
+
msgid "Enabled"
|
| 445 |
+
msgstr ""
|
| 446 |
+
|
| 447 |
+
#: .././pages/options.php:273
|
| 448 |
+
msgid ""
|
| 449 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 450 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 451 |
+
"MailChimp is returning."
|
| 452 |
+
msgstr ""
|
| 453 |
+
|
| 454 |
+
#: .././pages/options.php:281
|
| 455 |
+
msgid "Single Opt-In"
|
| 456 |
+
msgstr ""
|
| 457 |
+
|
| 458 |
+
#: .././pages/options.php:282
|
| 459 |
+
msgid "Double Opt-In"
|
| 460 |
+
msgstr ""
|
| 461 |
+
|
| 462 |
+
#: .././pages/options.php:290
|
| 463 |
+
msgid ""
|
| 464 |
+
"A single opt-in will add the user to your list without any further "
|
| 465 |
+
"interaction."
|
| 466 |
+
msgstr ""
|
| 467 |
+
|
| 468 |
+
#: .././pages/options.php:291
|
| 469 |
+
msgid ""
|
| 470 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 471 |
+
"subscription."
|
| 472 |
+
msgstr ""
|
| 473 |
+
|
| 474 |
+
#: .././pages/options.php:292
|
| 475 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 476 |
+
msgstr ""
|
| 477 |
+
|
| 478 |
+
#: .././pages/options.php:297
|
| 479 |
+
msgid "Custom Opt-In Message"
|
| 480 |
+
msgstr ""
|
| 481 |
+
|
| 482 |
+
#: .././pages/options.php:299
|
| 483 |
+
msgid "Double Opt-In Message"
|
| 484 |
+
msgstr ""
|
| 485 |
+
|
| 486 |
+
#: .././pages/options.php:301
|
| 487 |
+
msgid "Single Opt-In Message"
|
| 488 |
+
msgstr ""
|
| 489 |
+
|
| 490 |
+
#: .././pages/options.php:307
|
| 491 |
+
msgid "Interest Group Label"
|
| 492 |
+
msgstr ""
|
| 493 |
+
|
| 494 |
+
#: .././pages/options.php:316
|
| 495 |
+
msgid ""
|
| 496 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 497 |
+
"group names."
|
| 498 |
+
msgstr ""
|
| 499 |
+
|
| 500 |
+
#: .././pages/options.php:321
|
| 501 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 502 |
+
msgstr ""
|
| 503 |
+
|
| 504 |
+
#: .././pages/options.php:324
|
| 505 |
+
msgid "Hide"
|
| 506 |
+
msgstr ""
|
| 507 |
+
|
| 508 |
+
#: .././pages/options.php:325
|
| 509 |
+
msgid "Show"
|
| 510 |
+
msgstr ""
|
| 511 |
+
|
| 512 |
+
#: .././pages/options.php:333
|
| 513 |
+
msgid ""
|
| 514 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 515 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 516 |
+
"mailing list."
|
| 517 |
+
msgstr ""
|
| 518 |
+
|
| 519 |
+
#: .././pages/options.php:338
|
| 520 |
+
msgid "Custom Comment Checkbox Text"
|
| 521 |
+
msgstr ""
|
| 522 |
+
|
| 523 |
+
#: .././pages/options.php:345
|
| 524 |
+
msgid "Default List"
|
| 525 |
+
msgstr ""
|
| 526 |
+
|
| 527 |
+
#: .././pages/options.php:360
|
| 528 |
+
msgid ""
|
| 529 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 530 |
+
"comment."
|
| 531 |
+
msgstr ""
|
| 532 |
+
|
| 533 |
+
#: .././pages/options.php:361
|
| 534 |
+
msgid ""
|
| 535 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 536 |
+
"name are required or you may run into issues."
|
| 537 |
+
msgstr ""
|
| 538 |
+
|
| 539 |
+
#: .././pages/options.php:373
|
| 540 |
+
msgid "Plugin Information"
|
| 541 |
+
msgstr ""
|
| 542 |
+
|
| 543 |
+
#: .././pages/options.php:376
|
| 544 |
+
msgid "If you experience any issues with our plugin, please"
|
| 545 |
+
msgstr ""
|
| 546 |
+
|
| 547 |
+
#: .././pages/options.php:376
|
| 548 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 549 |
+
msgstr ""
|
| 550 |
+
|
| 551 |
+
#: .././pages/options.php:376
|
| 552 |
+
msgid ""
|
| 553 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 554 |
+
msgstr ""
|
| 555 |
+
|
| 556 |
+
#: .././pages/options.php:384
|
| 557 |
+
msgid "Plugin Version"
|
| 558 |
+
msgstr ""
|
| 559 |
+
|
| 560 |
+
#: .././pages/options.php:388
|
| 561 |
+
msgid "Wordpress Version"
|
| 562 |
+
msgstr ""
|
| 563 |
+
|
| 564 |
+
#: .././pages/options.php:392
|
| 565 |
+
msgid "Browser Information"
|
| 566 |
+
msgstr ""
|
| 567 |
+
|
| 568 |
+
#: .././pages/options.php:420
|
| 569 |
+
msgid "Error"
|
| 570 |
+
msgstr ""
|
| 571 |
+
|
| 572 |
+
#: .././pages/options.php:421
|
| 573 |
+
msgid ""
|
| 574 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 575 |
+
"cURL to send and retreive data."
|
| 576 |
+
msgstr ""
|
| 577 |
+
|
| 578 |
+
#: .././pages/options.php:426
|
| 579 |
+
msgid "Help!"
|
| 580 |
+
msgstr ""
|
| 581 |
+
|
| 582 |
+
#: .././pages/options.php:426
|
| 583 |
+
msgid "What is cURL?"
|
| 584 |
+
msgstr ""
|
| 585 |
+
|
| 586 |
+
#: .././pages/options.php:426
|
| 587 |
+
msgid "Check phpinfo()"
|
| 588 |
+
msgstr ""
|
| 589 |
+
|
| 590 |
+
#: .././pages/options.php:428
|
| 591 |
+
msgid "Steps To Resolve The Issue"
|
| 592 |
+
msgstr ""
|
| 593 |
+
|
| 594 |
+
#: .././pages/options.php:430
|
| 595 |
+
msgid ""
|
| 596 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 597 |
+
msgstr ""
|
| 598 |
+
|
| 599 |
+
#: .././pages/options.php:430
|
| 600 |
+
msgid "You should find the php.ini file located here : "
|
| 601 |
+
msgstr ""
|
| 602 |
+
|
| 603 |
+
#: .././pages/options.php:431
|
| 604 |
+
msgid ""
|
| 605 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 606 |
+
msgstr ""
|
| 607 |
+
|
| 608 |
+
#: .././pages/options.php:432
|
| 609 |
+
msgid ""
|
| 610 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 611 |
+
"active."
|
| 612 |
+
msgstr ""
|
| 613 |
+
|
| 614 |
+
#: .././pages/options.php:433
|
| 615 |
+
msgid "Re-save and close the file."
|
| 616 |
+
msgstr ""
|
| 617 |
+
|
| 618 |
+
#: .././pages/options.php:434
|
| 619 |
+
msgid "Re-load this page."
|
| 620 |
+
msgstr ""
|
| 621 |
+
|
| 622 |
+
#: .././templates/shortcode_error.php:1
|
| 623 |
+
msgid "There was an error calling the mailchimp list."
|
| 624 |
+
msgstr ""
|
| 625 |
+
|
| 626 |
+
#: .././templates/shortcode_error_data.php:1
|
| 627 |
+
msgid ""
|
| 628 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 629 |
+
"List Forms\" page."
|
| 630 |
+
msgstr ""
|
| 631 |
+
|
| 632 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 633 |
+
msgid "This list was already placed on this page!"
|
| 634 |
+
msgstr ""
|
| 635 |
+
|
| 636 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 637 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 638 |
+
msgstr ""
|
| 639 |
+
|
| 640 |
+
#: .././templates/shortcode_form.php:11
|
| 641 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 642 |
+
msgstr ""
|
| 643 |
+
|
| 644 |
+
#: .././templates/shortcode_form.php:74
|
| 645 |
+
msgid "required field"
|
| 646 |
+
msgstr ""
|
| 647 |
+
|
| 648 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 649 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 650 |
+
msgid "MailChimp Signup Form"
|
| 651 |
+
msgstr ""
|
| 652 |
+
|
| 653 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 654 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 655 |
+
msgstr ""
|
| 656 |
+
|
| 657 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 658 |
+
msgid "Select a Form to Display"
|
| 659 |
+
msgstr ""
|
| 660 |
+
|
| 661 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 662 |
+
msgid "Please import MailChimp forms"
|
| 663 |
+
msgstr ""
|
| 664 |
+
|
| 665 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 666 |
+
msgid "Please import some lists from MailChimp"
|
| 667 |
+
msgstr ""
|
| 668 |
+
|
| 669 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 670 |
+
msgid "Import Lists Now"
|
| 671 |
+
msgstr ""
|
| 672 |
+
|
| 673 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 674 |
+
msgid ""
|
| 675 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 676 |
+
"least one list to use the Easy MailChimp widget."
|
| 677 |
+
msgstr ""
|
| 678 |
+
|
| 679 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 680 |
+
msgid ""
|
| 681 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 682 |
+
"'Appearance > Widgets' and select a form to display."
|
| 683 |
+
msgstr ""
|
| 684 |
+
|
| 685 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 686 |
+
msgid "Sign Up For Our Newsletter"
|
| 687 |
+
msgstr ""
|
| 688 |
+
|
| 689 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 690 |
+
msgid "Sign Me Up"
|
| 691 |
+
msgstr ""
|
| 692 |
+
|
| 693 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 694 |
+
msgid "Title:"
|
| 695 |
+
msgstr ""
|
| 696 |
+
|
| 697 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 698 |
+
msgid "Form Text:"
|
| 699 |
+
msgstr ""
|
| 700 |
+
|
| 701 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 702 |
+
msgid "Submit Button Text:"
|
| 703 |
+
msgstr ""
|
| 704 |
+
|
| 705 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 706 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 707 |
+
msgstr ""
|
| 708 |
+
|
| 709 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 710 |
+
msgid "Settings page"
|
| 711 |
+
msgstr ""
|
languages/yikes-inc-easy-mailchimp-extender-es_ES.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-es_ES.po
ADDED
|
@@ -0,0 +1,781 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:27-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:48-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: es\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "Gracias por suscribirse!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
"Gracias por suscribirse! Revise su correo electrónico para el mensaje de "
|
| 29 |
+
"confirmación."
|
| 30 |
+
|
| 31 |
+
#: .././classes/class.yksemeBase.php:116
|
| 32 |
+
msgid "Select Your Area of Interest"
|
| 33 |
+
msgstr "Seleccione su área de interés"
|
| 34 |
+
|
| 35 |
+
#: .././classes/class.yksemeBase.php:917
|
| 36 |
+
msgid "Click on a subscriber to see further information"
|
| 37 |
+
msgstr "Haga clic en un suscriptor para ver más información"
|
| 38 |
+
|
| 39 |
+
#: .././classes/class.yksemeBase.php:920
|
| 40 |
+
msgid "E-Mail"
|
| 41 |
+
msgstr "correo electrónico"
|
| 42 |
+
|
| 43 |
+
#: .././classes/class.yksemeBase.php:921
|
| 44 |
+
msgid "Date Subscribed"
|
| 45 |
+
msgstr "Fecha Suscrito"
|
| 46 |
+
|
| 47 |
+
#: .././classes/class.yksemeBase.php:941
|
| 48 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 49 |
+
msgstr "Lo siento No actualidad no tienen ninguna suscriptores en esta lista!"
|
| 50 |
+
|
| 51 |
+
#: .././classes/class.yksemeBase.php:998
|
| 52 |
+
msgid "Back to Subscriber List"
|
| 53 |
+
msgstr "Volver a la lista de suscriptores"
|
| 54 |
+
|
| 55 |
+
#: .././classes/class.yksemeBase.php:999
|
| 56 |
+
msgid "Subscriber Details"
|
| 57 |
+
msgstr "Detalles del suscriptor"
|
| 58 |
+
|
| 59 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 60 |
+
msgid "Overview"
|
| 61 |
+
msgstr "visión de conjunto"
|
| 62 |
+
|
| 63 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 64 |
+
msgid "First Name"
|
| 65 |
+
msgstr "Nombre"
|
| 66 |
+
|
| 67 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 68 |
+
msgid "Last Updated"
|
| 69 |
+
msgstr "Última actualización"
|
| 70 |
+
|
| 71 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 72 |
+
msgid "Preferred Email Type"
|
| 73 |
+
msgstr "Preferido Tipo Email"
|
| 74 |
+
|
| 75 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 76 |
+
msgid "Last Name"
|
| 77 |
+
msgstr "apellido"
|
| 78 |
+
|
| 79 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 80 |
+
msgid "Language"
|
| 81 |
+
msgstr "idioma"
|
| 82 |
+
|
| 83 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 84 |
+
msgid "Groups Subscribed To"
|
| 85 |
+
msgstr "Grupos Suscriptor a"
|
| 86 |
+
|
| 87 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 88 |
+
msgid "Subscriber Notes"
|
| 89 |
+
msgstr "Notas del suscriptor"
|
| 90 |
+
|
| 91 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 92 |
+
msgid "Written by"
|
| 93 |
+
msgstr "Escrito por"
|
| 94 |
+
|
| 95 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 96 |
+
msgid "Created on"
|
| 97 |
+
msgstr "Fabricado en"
|
| 98 |
+
|
| 99 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 100 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 101 |
+
msgid "MailChimp Forms"
|
| 102 |
+
msgstr "Formas MailChimp"
|
| 103 |
+
|
| 104 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 105 |
+
msgid "MailChimp Settings"
|
| 106 |
+
msgstr "Ajustes MailChimp"
|
| 107 |
+
|
| 108 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 109 |
+
msgid "Manage List Forms"
|
| 110 |
+
msgstr "Administrar Lista de Formularios"
|
| 111 |
+
|
| 112 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 113 |
+
msgid "About YIKES, Inc."
|
| 114 |
+
msgstr "Acerca YIKES, Inc."
|
| 115 |
+
|
| 116 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 117 |
+
msgid "One or more fields are empty"
|
| 118 |
+
msgstr "Uno o más campos están vacíos"
|
| 119 |
+
|
| 120 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 121 |
+
msgid "Your List Was Successfully Saved!"
|
| 122 |
+
msgstr "Su lista de éxito se salvó!"
|
| 123 |
+
|
| 124 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 125 |
+
msgid "I'm sorry there was an error with your request."
|
| 126 |
+
msgstr "Siento que había un error con su pedido."
|
| 127 |
+
|
| 128 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 129 |
+
msgid "MailChimp List name"
|
| 130 |
+
msgstr "Nombre de la lista MailChimp"
|
| 131 |
+
|
| 132 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 133 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 134 |
+
#, php-format
|
| 135 |
+
msgid "%1$s"
|
| 136 |
+
msgstr ""
|
| 137 |
+
|
| 138 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 139 |
+
msgid "MailChimp List ID"
|
| 140 |
+
msgstr "MailChimp Lista ID"
|
| 141 |
+
|
| 142 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 143 |
+
msgid "Shortcode"
|
| 144 |
+
msgstr "Código corto"
|
| 145 |
+
|
| 146 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 147 |
+
msgid ""
|
| 148 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 149 |
+
msgstr ""
|
| 150 |
+
"Pega este código corto en cualquier página o post que quiere agregar este "
|
| 151 |
+
"formulario para"
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 154 |
+
msgid "PHP Snippet"
|
| 155 |
+
msgstr "PHP fragmento"
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 158 |
+
msgid "Use this code to add this form to a template file"
|
| 159 |
+
msgstr ""
|
| 160 |
+
"Utilice este código para agregar este formulario a un archivo de plantilla"
|
| 161 |
+
|
| 162 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 163 |
+
msgid "Number of Subscribers"
|
| 164 |
+
msgstr "Número de suscriptores"
|
| 165 |
+
|
| 166 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 167 |
+
msgid "Form Fields"
|
| 168 |
+
msgstr "Los campos de formulario"
|
| 169 |
+
|
| 170 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 171 |
+
msgid ""
|
| 172 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 173 |
+
msgstr ""
|
| 174 |
+
"Revisa los campos que desea incluir en el formulario (es necesario E-mail)."
|
| 175 |
+
|
| 176 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 177 |
+
msgid ""
|
| 178 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 179 |
+
msgstr ""
|
| 180 |
+
"Utilice las flechas verdes para arrastrar y soltar los campos y cambiar su "
|
| 181 |
+
"orden."
|
| 182 |
+
|
| 183 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 184 |
+
msgid "Active Fields"
|
| 185 |
+
msgstr "Los campos activos"
|
| 186 |
+
|
| 187 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 188 |
+
msgid "Drag"
|
| 189 |
+
msgstr "arrastrar"
|
| 190 |
+
|
| 191 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 192 |
+
msgid "drop"
|
| 193 |
+
msgstr "soltar"
|
| 194 |
+
|
| 195 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 196 |
+
msgid "Merge field"
|
| 197 |
+
msgstr "campo de combinación"
|
| 198 |
+
|
| 199 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 200 |
+
msgid "Placeholder"
|
| 201 |
+
msgstr "Marcador de posición"
|
| 202 |
+
|
| 203 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 204 |
+
msgid "Redirect User On Submission"
|
| 205 |
+
msgstr "Redireccionar usuario sobre la exposición"
|
| 206 |
+
|
| 207 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 208 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 209 |
+
msgstr ""
|
| 210 |
+
"elegir una página o establecer una URL personalizada para redirigir al "
|
| 211 |
+
"usuario después de enviar el formulario."
|
| 212 |
+
|
| 213 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 214 |
+
msgid "Select A Post/Page"
|
| 215 |
+
msgstr "Seleccione un mensaje / Página"
|
| 216 |
+
|
| 217 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 218 |
+
msgid "Save Form Settings"
|
| 219 |
+
msgstr "Gestione MailChimp Forms Configuración"
|
| 220 |
+
|
| 221 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 222 |
+
msgid "Delete Form"
|
| 223 |
+
msgstr "Eliminar Form"
|
| 224 |
+
|
| 225 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 226 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 227 |
+
msgstr "Favor de importar algunas listas de MailChimp"
|
| 228 |
+
|
| 229 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 230 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 231 |
+
msgstr "Registrarme en el Boletín de MailChimp-REPLACE-ESTE-TEXT"
|
| 232 |
+
|
| 233 |
+
#: .././pages/about.php:27
|
| 234 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 235 |
+
msgstr "Yikes, Inc. Diseño y Desarrollo Web"
|
| 236 |
+
|
| 237 |
+
#: .././pages/about.php:29
|
| 238 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 239 |
+
msgstr "Soluciones web inteligentes efectivos, de bonito diseño"
|
| 240 |
+
|
| 241 |
+
#: .././pages/about.php:32
|
| 242 |
+
msgid ""
|
| 243 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 244 |
+
"custom WordPress themes and plugins every day."
|
| 245 |
+
msgstr ""
|
| 246 |
+
"YIKES está situado en el barrio de Fishtown Philadelphia donde construimos a "
|
| 247 |
+
"medida temas de WordPress y plugins todos los días."
|
| 248 |
+
|
| 249 |
+
#: .././pages/about.php:36
|
| 250 |
+
msgid ""
|
| 251 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 252 |
+
"WordCamps"
|
| 253 |
+
msgstr ""
|
| 254 |
+
"En YIKES amamos WordPress! Co-propietario, Tracy Levesque ha presentado en "
|
| 255 |
+
"WordCamps"
|
| 256 |
+
|
| 257 |
+
#: .././pages/about.php:36
|
| 258 |
+
msgid "and"
|
| 259 |
+
msgstr "y"
|
| 260 |
+
|
| 261 |
+
#: .././pages/about.php:36
|
| 262 |
+
msgid "She also teaches WordPress classes for"
|
| 263 |
+
msgstr "También imparte clases de WordPress para"
|
| 264 |
+
|
| 265 |
+
#: .././pages/about.php:40
|
| 266 |
+
msgid ""
|
| 267 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 268 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 269 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 270 |
+
"financially sustainable local economy. We even have a"
|
| 271 |
+
msgstr ""
|
| 272 |
+
"Además de hacer grandes sitios de WordPress también estamos comprometidos "
|
| 273 |
+
"con el movimiento empresarial sostenible. Observamos la triple cuenta de "
|
| 274 |
+
"resultados: las personas, el planeta, la ganancia y el trabajo para ayudar a "
|
| 275 |
+
"construir una economía local más sostenible social, ambiental y "
|
| 276 |
+
"económicamente. Incluso tenemos un"
|
| 277 |
+
|
| 278 |
+
#: .././pages/about.php:40
|
| 279 |
+
msgid "LEED Platinum office"
|
| 280 |
+
msgstr "Oficina LEED Platinum"
|
| 281 |
+
|
| 282 |
+
#: .././pages/about.php:44
|
| 283 |
+
msgid ""
|
| 284 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 285 |
+
"learn more about us, please visit"
|
| 286 |
+
msgstr ""
|
| 287 |
+
"Si usted está interesado en contratarnos para el desarrollo de WordPress, o "
|
| 288 |
+
"simplemente quieres saber más sobre nosotros, por favor visite"
|
| 289 |
+
|
| 290 |
+
#: .././pages/lists.php:8
|
| 291 |
+
msgid "No forms have been added yet."
|
| 292 |
+
msgstr "No hay formas, se han añadido todavía."
|
| 293 |
+
|
| 294 |
+
#: .././pages/lists.php:39
|
| 295 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 296 |
+
msgstr "Vaya .. El ID de lista introducido no es válida."
|
| 297 |
+
|
| 298 |
+
#: .././pages/lists.php:44
|
| 299 |
+
msgid "There was an error!"
|
| 300 |
+
msgstr "Se produjo un error!"
|
| 301 |
+
|
| 302 |
+
#: .././pages/lists.php:135
|
| 303 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 304 |
+
msgstr ""
|
| 305 |
+
"Es necesario seleccionar una lista Mailchimp con el fin de crear un "
|
| 306 |
+
"formulario para que"
|
| 307 |
+
|
| 308 |
+
#: .././pages/lists.php:173
|
| 309 |
+
msgid "Are you sure you want to delete this form?"
|
| 310 |
+
msgstr "¿Está seguro de que desea eliminar esta forma?"
|
| 311 |
+
|
| 312 |
+
#: .././pages/lists.php:206
|
| 313 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 314 |
+
msgstr "¿Está seguro que desea volver a importar los campos de MailChimp?"
|
| 315 |
+
|
| 316 |
+
#: .././pages/lists.php:228
|
| 317 |
+
msgid "Looks like this form is already up to date!"
|
| 318 |
+
msgstr "Parece que este formulario ya está al día!"
|
| 319 |
+
|
| 320 |
+
#: .././pages/lists.php:326
|
| 321 |
+
msgid "Are you sure you want to unsubscribe"
|
| 322 |
+
msgstr "¿Seguro que quieres dar de baja"
|
| 323 |
+
|
| 324 |
+
#: .././pages/lists.php:326
|
| 325 |
+
msgid "from this list?"
|
| 326 |
+
msgstr "en esta lista?"
|
| 327 |
+
|
| 328 |
+
#: .././pages/lists.php:342
|
| 329 |
+
msgid "was successfully unsubscribed from this list."
|
| 330 |
+
msgstr "fue darme de baja con éxito de esta lista."
|
| 331 |
+
|
| 332 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 333 |
+
#: .././pages/options.php:416
|
| 334 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 335 |
+
msgstr "Fácil MailChimp Formas de YIKES, Inc."
|
| 336 |
+
|
| 337 |
+
#: .././pages/lists.php:454
|
| 338 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 339 |
+
msgstr "Antes de agregar formas MailChimp a su sitio, es necesario"
|
| 340 |
+
|
| 341 |
+
#: .././pages/lists.php:454
|
| 342 |
+
msgid "go to the MailChimp Settings page"
|
| 343 |
+
msgstr "ir a la página de configuración de MailChimp"
|
| 344 |
+
|
| 345 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 346 |
+
msgid "and add your API Key."
|
| 347 |
+
msgstr "y añadir la clave de API."
|
| 348 |
+
|
| 349 |
+
#: .././pages/lists.php:462
|
| 350 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 351 |
+
msgstr ""
|
| 352 |
+
"Debe introducir una clave de API válida para importar y administrar sus "
|
| 353 |
+
"listas."
|
| 354 |
+
|
| 355 |
+
#: .././pages/lists.php:473
|
| 356 |
+
msgid "Your Lists"
|
| 357 |
+
msgstr "Sus listas"
|
| 358 |
+
|
| 359 |
+
#: .././pages/lists.php:483
|
| 360 |
+
msgid "Manage Forms"
|
| 361 |
+
msgstr "administrar formularios"
|
| 362 |
+
|
| 363 |
+
#: .././pages/options.php:41
|
| 364 |
+
msgid "The options were saved successfully!"
|
| 365 |
+
msgstr "Las opciones se han guardado correctamente!"
|
| 366 |
+
|
| 367 |
+
#: .././pages/options.php:44
|
| 368 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 369 |
+
msgstr "Las opciones no se podrían salvar (o no cambiaron ellos)."
|
| 370 |
+
|
| 371 |
+
#: .././pages/options.php:96
|
| 372 |
+
msgid "Valid API Key"
|
| 373 |
+
msgstr "API Key Válido"
|
| 374 |
+
|
| 375 |
+
#: .././pages/options.php:102
|
| 376 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 377 |
+
msgstr "Lo siento, eso es una clave no válida API MailChimp."
|
| 378 |
+
|
| 379 |
+
#: .././pages/options.php:108
|
| 380 |
+
msgid ""
|
| 381 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 382 |
+
"further information."
|
| 383 |
+
msgstr ""
|
| 384 |
+
"Lo siento, eso es una clave no válida API MailChimp. Por favor, consulte la "
|
| 385 |
+
"consola para obtener más información."
|
| 386 |
+
|
| 387 |
+
#: .././pages/options.php:117
|
| 388 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 389 |
+
msgstr "Error: Por favor ingrese una clave de API de MailChimp válida."
|
| 390 |
+
|
| 391 |
+
#: .././pages/options.php:199
|
| 392 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 393 |
+
msgstr "Gestione MailChimp Forms Configuración"
|
| 394 |
+
|
| 395 |
+
#: .././pages/options.php:205
|
| 396 |
+
msgid "WordPress Version Number Error"
|
| 397 |
+
msgstr "Versión Wordpress"
|
| 398 |
+
|
| 399 |
+
#: .././pages/options.php:206
|
| 400 |
+
msgid ""
|
| 401 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 402 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 403 |
+
"and posts unless you update to 3.9 or later."
|
| 404 |
+
msgstr ""
|
| 405 |
+
"Lo sentimos, pero parece que el uso de una versión antigua de WordPress. "
|
| 406 |
+
"Usted no será capaz de acceder al botón de TinyMCE para insertar formularios "
|
| 407 |
+
"en las páginas y los mensajes a menos que actualice a 3.9 o posterior."
|
| 408 |
+
|
| 409 |
+
#: .././pages/options.php:215
|
| 410 |
+
msgid "LocalHost Detected :"
|
| 411 |
+
msgstr "LocalHost Detectado:"
|
| 412 |
+
|
| 413 |
+
#: .././pages/options.php:216
|
| 414 |
+
msgid ""
|
| 415 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 416 |
+
msgstr "Fácil MailChimp Formas de YIKES, Inc."
|
| 417 |
+
|
| 418 |
+
#: .././pages/options.php:217
|
| 419 |
+
msgid ""
|
| 420 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 421 |
+
msgstr "Si usted no puede validar la clave de la API, y el mensaje de error"
|
| 422 |
+
|
| 423 |
+
#: .././pages/options.php:217
|
| 424 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 425 |
+
msgstr ""
|
| 426 |
+
"\"Problema de certificado SSL: no se puede obtener el certificado emisor "
|
| 427 |
+
"local\" "
|
| 428 |
+
|
| 429 |
+
#: .././pages/options.php:217
|
| 430 |
+
msgid "follow the tutorial located "
|
| 431 |
+
msgstr "seguir el tutorial localizado "
|
| 432 |
+
|
| 433 |
+
#: .././pages/options.php:230
|
| 434 |
+
msgid "Your Mailchimp API Key"
|
| 435 |
+
msgstr "Su MailChimp API Key"
|
| 436 |
+
|
| 437 |
+
#: .././pages/options.php:238
|
| 438 |
+
msgid ""
|
| 439 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 440 |
+
"site to communicate with your MailChimp account."
|
| 441 |
+
msgstr ""
|
| 442 |
+
"Introduzca su clave de API de MailChimp arriba. La clave de API permite a su "
|
| 443 |
+
"sitio de WordPress para comunicarse con su cuenta de MailChimp."
|
| 444 |
+
|
| 445 |
+
#: .././pages/options.php:239
|
| 446 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 447 |
+
msgstr "Para obtener más ayuda, visite el artículo MailChimp Soporte"
|
| 448 |
+
|
| 449 |
+
#: .././pages/options.php:239
|
| 450 |
+
msgid "Where can I find my API Key?"
|
| 451 |
+
msgstr "¿Dónde puedo encontrar mi clave de API?"
|
| 452 |
+
|
| 453 |
+
#: .././pages/options.php:244
|
| 454 |
+
msgid "Preferred Form Layout"
|
| 455 |
+
msgstr "Forma preferente Disposición"
|
| 456 |
+
|
| 457 |
+
#: .././pages/options.php:247
|
| 458 |
+
msgid "table"
|
| 459 |
+
msgstr "tabla"
|
| 460 |
+
|
| 461 |
+
#: .././pages/options.php:248
|
| 462 |
+
msgid "div"
|
| 463 |
+
msgstr "div"
|
| 464 |
+
|
| 465 |
+
#: .././pages/options.php:256
|
| 466 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 467 |
+
msgstr ""
|
| 468 |
+
"Seleccione si desea que sus formas de utilizar una mesa o el diseño div."
|
| 469 |
+
|
| 470 |
+
#: .././pages/options.php:261
|
| 471 |
+
msgid "Advanced Error Messaging"
|
| 472 |
+
msgstr "Mensajería Error Avanzada"
|
| 473 |
+
|
| 474 |
+
#: .././pages/options.php:264
|
| 475 |
+
msgid "Disabled"
|
| 476 |
+
msgstr "discapacitado"
|
| 477 |
+
|
| 478 |
+
#: .././pages/options.php:265
|
| 479 |
+
msgid "Enabled"
|
| 480 |
+
msgstr "Activado"
|
| 481 |
+
|
| 482 |
+
#: .././pages/options.php:273
|
| 483 |
+
msgid ""
|
| 484 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 485 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 486 |
+
"MailChimp is returning."
|
| 487 |
+
msgstr ""
|
| 488 |
+
"Habilitar si usted está teniendo problemas con sus formas de enviar datos a "
|
| 489 |
+
"MailChimp. Habilitar Mensajería Error avanzada le mostrará los códigos de "
|
| 490 |
+
"error exactos MailChimp está volviendo."
|
| 491 |
+
|
| 492 |
+
#: .././pages/options.php:281
|
| 493 |
+
msgid "Single Opt-In"
|
| 494 |
+
msgstr "Soltero Opt-In"
|
| 495 |
+
|
| 496 |
+
#: .././pages/options.php:282
|
| 497 |
+
msgid "Double Opt-In"
|
| 498 |
+
msgstr "Doble Opt-In"
|
| 499 |
+
|
| 500 |
+
#: .././pages/options.php:290
|
| 501 |
+
msgid ""
|
| 502 |
+
"A single opt-in will add the user to your list without any further "
|
| 503 |
+
"interaction."
|
| 504 |
+
msgstr ""
|
| 505 |
+
"Un solo opt-in se agregue el usuario a la lista sin ninguna interacción "
|
| 506 |
+
"adicional."
|
| 507 |
+
|
| 508 |
+
#: .././pages/options.php:291
|
| 509 |
+
msgid ""
|
| 510 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 511 |
+
"subscription."
|
| 512 |
+
msgstr ""
|
| 513 |
+
"Un doble opt-in le enviará un correo electrónico al usuario pidiéndole que "
|
| 514 |
+
"confirme su suscripción."
|
| 515 |
+
|
| 516 |
+
#: .././pages/options.php:292
|
| 517 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 518 |
+
msgstr ""
|
| 519 |
+
"Esto también determinará la configuración de opt-in para la gente dejando "
|
| 520 |
+
"comentarios."
|
| 521 |
+
|
| 522 |
+
#: .././pages/options.php:297
|
| 523 |
+
msgid "Custom Opt-In Message"
|
| 524 |
+
msgstr "Custom Opt-In Mensaje"
|
| 525 |
+
|
| 526 |
+
#: .././pages/options.php:299
|
| 527 |
+
msgid "Double Opt-In Message"
|
| 528 |
+
msgstr "Doble Mensaje Opt-In"
|
| 529 |
+
|
| 530 |
+
#: .././pages/options.php:301
|
| 531 |
+
msgid "Single Opt-In Message"
|
| 532 |
+
msgstr "Soltero Opt-In Mensaje"
|
| 533 |
+
|
| 534 |
+
#: .././pages/options.php:307
|
| 535 |
+
msgid "Interest Group Label"
|
| 536 |
+
msgstr "Grupo de Interés Label"
|
| 537 |
+
|
| 538 |
+
#: .././pages/options.php:316
|
| 539 |
+
msgid ""
|
| 540 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 541 |
+
"group names."
|
| 542 |
+
msgstr ""
|
| 543 |
+
"Texto para mostrar por encima de los grupos de interés. Dejar en blanco para "
|
| 544 |
+
"usar los nombres de grupos de interés MailChimp."
|
| 545 |
+
|
| 546 |
+
#: .././pages/options.php:321
|
| 547 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 548 |
+
msgstr "Display opt-in casilla de verificación en formularios de comentarios?"
|
| 549 |
+
|
| 550 |
+
#: .././pages/options.php:324
|
| 551 |
+
msgid "Hide"
|
| 552 |
+
msgstr "Esconder"
|
| 553 |
+
|
| 554 |
+
#: .././pages/options.php:325
|
| 555 |
+
msgid "Show"
|
| 556 |
+
msgstr "Mostrar"
|
| 557 |
+
|
| 558 |
+
#: .././pages/options.php:333
|
| 559 |
+
msgid ""
|
| 560 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 561 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 562 |
+
"mailing list."
|
| 563 |
+
msgstr ""
|
| 564 |
+
"Esto mostrará una casilla justo encima del botón de envío en todos los "
|
| 565 |
+
"formularios de comentarios. Si se selecciona, se añadirán también a "
|
| 566 |
+
"cualquier usuario que dejan comentarios a la lista de correo."
|
| 567 |
+
|
| 568 |
+
#: .././pages/options.php:338
|
| 569 |
+
msgid "Custom Comment Checkbox Text"
|
| 570 |
+
msgstr "Custom comentario a Casilla de texto"
|
| 571 |
+
|
| 572 |
+
#: .././pages/options.php:345
|
| 573 |
+
msgid "Default List"
|
| 574 |
+
msgstr "Lista defecto"
|
| 575 |
+
|
| 576 |
+
#: .././pages/options.php:360
|
| 577 |
+
msgid ""
|
| 578 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 579 |
+
"comment."
|
| 580 |
+
msgstr ""
|
| 581 |
+
"Se trata de los usuarios de la lista por defecto serán suscritas a la hora "
|
| 582 |
+
"de presentar un comentario."
|
| 583 |
+
|
| 584 |
+
#: .././pages/options.php:361
|
| 585 |
+
msgid ""
|
| 586 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 587 |
+
"name are required or you may run into issues."
|
| 588 |
+
msgstr ""
|
| 589 |
+
"Lo mejor es seleccionar un formulario donde sólo el correo electrónico, "
|
| 590 |
+
"nombre y / o apellido se requiere o puede que tenga problemas."
|
| 591 |
+
|
| 592 |
+
#: .././pages/options.php:373
|
| 593 |
+
msgid "Plugin Information"
|
| 594 |
+
msgstr "Información Plugin"
|
| 595 |
+
|
| 596 |
+
#: .././pages/options.php:376
|
| 597 |
+
msgid "If you experience any issues with our plugin, please"
|
| 598 |
+
msgstr "Si experimenta cualquier problema con nuestro plugin, por favor"
|
| 599 |
+
|
| 600 |
+
#: .././pages/options.php:376
|
| 601 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 602 |
+
msgstr "Enviar un nuevo asunto en nuestro Rastreador Github Issue"
|
| 603 |
+
|
| 604 |
+
#: .././pages/options.php:376
|
| 605 |
+
msgid ""
|
| 606 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 607 |
+
msgstr ""
|
| 608 |
+
"Por favor, incluya la siguiente información para ayudarnos a solucionar su "
|
| 609 |
+
"problema."
|
| 610 |
+
|
| 611 |
+
#: .././pages/options.php:384
|
| 612 |
+
msgid "Plugin Version"
|
| 613 |
+
msgstr "Version Plugin"
|
| 614 |
+
|
| 615 |
+
#: .././pages/options.php:388
|
| 616 |
+
msgid "Wordpress Version"
|
| 617 |
+
msgstr "Versión Wordpress"
|
| 618 |
+
|
| 619 |
+
#: .././pages/options.php:392
|
| 620 |
+
msgid "Browser Information"
|
| 621 |
+
msgstr "Navegador de Información"
|
| 622 |
+
|
| 623 |
+
#: .././pages/options.php:420
|
| 624 |
+
msgid "Error"
|
| 625 |
+
msgstr "&Error"
|
| 626 |
+
|
| 627 |
+
#: .././pages/options.php:421
|
| 628 |
+
msgid ""
|
| 629 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 630 |
+
"cURL to send and retreive data."
|
| 631 |
+
msgstr ""
|
| 632 |
+
"Lo sentimos, pero CURL está deshabilitado en tu servidor. La API de "
|
| 633 |
+
"MailChimp utiliza cURL para enviar y retreive datos."
|
| 634 |
+
|
| 635 |
+
#: .././pages/options.php:426
|
| 636 |
+
msgid "Help!"
|
| 637 |
+
msgstr "Ayuda!!"
|
| 638 |
+
|
| 639 |
+
#: .././pages/options.php:426
|
| 640 |
+
msgid "What is cURL?"
|
| 641 |
+
msgstr "¿Qué es cURL?"
|
| 642 |
+
|
| 643 |
+
#: .././pages/options.php:426
|
| 644 |
+
msgid "Check phpinfo()"
|
| 645 |
+
msgstr "Compruebe phpinfo ()"
|
| 646 |
+
|
| 647 |
+
#: .././pages/options.php:428
|
| 648 |
+
msgid "Steps To Resolve The Issue"
|
| 649 |
+
msgstr "Pasos para resolver el problema"
|
| 650 |
+
|
| 651 |
+
#: .././pages/options.php:430
|
| 652 |
+
msgid ""
|
| 653 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 654 |
+
msgstr "Puede activar cURL activando el módulo cURL en su archivo php.ini"
|
| 655 |
+
|
| 656 |
+
#: .././pages/options.php:430
|
| 657 |
+
msgid "You should find the php.ini file located here : "
|
| 658 |
+
msgstr "Usted debe encontrar el archivo php.ini se encuentra aquí: "
|
| 659 |
+
|
| 660 |
+
#: .././pages/options.php:431
|
| 661 |
+
msgid ""
|
| 662 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 663 |
+
msgstr ""
|
| 664 |
+
"Una vez encontrado, abrir php.ini y busque la línea \"la ampliación = "
|
| 665 |
+
"php_curl.dll\"."
|
| 666 |
+
|
| 667 |
+
#: .././pages/options.php:432
|
| 668 |
+
msgid ""
|
| 669 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 670 |
+
"active."
|
| 671 |
+
msgstr ""
|
| 672 |
+
"Quite el punto y coma antes de la línea, a un-comentarlo y hacer que el "
|
| 673 |
+
"módulo activo."
|
| 674 |
+
|
| 675 |
+
#: .././pages/options.php:433
|
| 676 |
+
msgid "Re-save and close the file."
|
| 677 |
+
msgstr "Vuelva a guardar y cerrar el archivo."
|
| 678 |
+
|
| 679 |
+
#: .././pages/options.php:434
|
| 680 |
+
msgid "Re-load this page."
|
| 681 |
+
msgstr "Vuelva a cargar esta página."
|
| 682 |
+
|
| 683 |
+
#: .././templates/shortcode_error.php:1
|
| 684 |
+
msgid "There was an error calling the mailchimp list."
|
| 685 |
+
msgstr "Hubo un error al llamar a la lista de MailChimp."
|
| 686 |
+
|
| 687 |
+
#: .././templates/shortcode_error_data.php:1
|
| 688 |
+
msgid ""
|
| 689 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 690 |
+
"List Forms\" page."
|
| 691 |
+
msgstr ""
|
| 692 |
+
"La lista no existe! Asegúrese de que ha importado la lista de la "
|
| 693 |
+
"\"Administrar Lista Forms\" página."
|
| 694 |
+
|
| 695 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 696 |
+
msgid "This list was already placed on this page!"
|
| 697 |
+
msgstr "Esta lista ya fue colocado en esta página!"
|
| 698 |
+
|
| 699 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 700 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 701 |
+
msgstr "Woops! No API Key Válido encontrado. Vuelva a comprobar los ajustes."
|
| 702 |
+
|
| 703 |
+
#: .././templates/shortcode_form.php:11
|
| 704 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 705 |
+
msgstr "Uy .. No te olvides de rellenar los siguientes campos"
|
| 706 |
+
|
| 707 |
+
#: .././templates/shortcode_form.php:74
|
| 708 |
+
msgid "required field"
|
| 709 |
+
msgstr "campo obligatorio"
|
| 710 |
+
|
| 711 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 712 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 713 |
+
msgid "MailChimp Signup Form"
|
| 714 |
+
msgstr "MailChimp Solicitud de Admisión"
|
| 715 |
+
|
| 716 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 717 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 718 |
+
msgstr "Seleccionar qué formulario que desea mostrar:"
|
| 719 |
+
|
| 720 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 721 |
+
msgid "Select a Form to Display"
|
| 722 |
+
msgstr "Seleccione un formulario para mostrar"
|
| 723 |
+
|
| 724 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 725 |
+
msgid "Please import MailChimp forms"
|
| 726 |
+
msgstr "Por favor, importar formularios MailChimp"
|
| 727 |
+
|
| 728 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 729 |
+
msgid "Please import some lists from MailChimp"
|
| 730 |
+
msgstr "Favor de importar algunas listas de MailChimp"
|
| 731 |
+
|
| 732 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 733 |
+
msgid "Import Lists Now"
|
| 734 |
+
msgstr "Importar listas ahora"
|
| 735 |
+
|
| 736 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 737 |
+
msgid ""
|
| 738 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 739 |
+
"least one list to use the Easy MailChimp widget."
|
| 740 |
+
msgstr ""
|
| 741 |
+
"¡Huy! Parece que no ha importado ninguna lista todavía. Debe importar al "
|
| 742 |
+
"menos una lista de usar el widget Fácil MailChimp."
|
| 743 |
+
|
| 744 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 745 |
+
msgid ""
|
| 746 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 747 |
+
"'Appearance > Widgets' and select a form to display."
|
| 748 |
+
msgstr ""
|
| 749 |
+
"¡Huy! Parece que ha olvidado de seleccionar un formulario para mostrar aquí. "
|
| 750 |
+
"Ir a \"Apariencia> Widgets\" y seleccione un formulario para mostrar."
|
| 751 |
+
|
| 752 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 753 |
+
msgid "Sign Up For Our Newsletter"
|
| 754 |
+
msgstr "Suscríbase a nuestro boletín"
|
| 755 |
+
|
| 756 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 757 |
+
msgid "Sign Me Up"
|
| 758 |
+
msgstr "Sign Me Up"
|
| 759 |
+
|
| 760 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 761 |
+
msgid "Title:"
|
| 762 |
+
msgstr "Título:"
|
| 763 |
+
|
| 764 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 765 |
+
msgid "Form Text:"
|
| 766 |
+
msgstr "Formulario de Texto:"
|
| 767 |
+
|
| 768 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 769 |
+
msgid "Submit Button Text:"
|
| 770 |
+
msgstr "Enviar Texto del botón:"
|
| 771 |
+
|
| 772 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 773 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 774 |
+
msgstr "¡Huy! Parece que no has añadido tu clave de API! Pásate por el"
|
| 775 |
+
|
| 776 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 777 |
+
msgid "Settings page"
|
| 778 |
+
msgstr "página Configuración"
|
| 779 |
+
|
| 780 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 781 |
+
#~ msgstr "No API Key o Lista Id existen!"
|
languages/yikes-inc-easy-mailchimp-extender-fa_IR.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-fa_IR.po
ADDED
|
@@ -0,0 +1,766 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:29-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:50-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: fa_IR\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "با تشکر از شما برای به اشتراک!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr "با تشکر از شما برای به اشتراک! برای پیام تایید ایمیل خود را."
|
| 28 |
+
|
| 29 |
+
#: .././classes/class.yksemeBase.php:116
|
| 30 |
+
msgid "Select Your Area of Interest"
|
| 31 |
+
msgstr "انتخاب منطقه مورد علاقه شما"
|
| 32 |
+
|
| 33 |
+
#: .././classes/class.yksemeBase.php:917
|
| 34 |
+
msgid "Click on a subscriber to see further information"
|
| 35 |
+
msgstr "در یک مشترک را کلیک کنید برای دیدن اطلاعات بیشتر"
|
| 36 |
+
|
| 37 |
+
#: .././classes/class.yksemeBase.php:920
|
| 38 |
+
msgid "E-Mail"
|
| 39 |
+
msgstr "ایمیل"
|
| 40 |
+
|
| 41 |
+
#: .././classes/class.yksemeBase.php:921
|
| 42 |
+
msgid "Date Subscribed"
|
| 43 |
+
msgstr "تاریخ مشترک"
|
| 44 |
+
|
| 45 |
+
#: .././classes/class.yksemeBase.php:941
|
| 46 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 47 |
+
msgstr "متاسفانه شما در حال حاضر نه هر مشترکین در این لیست!"
|
| 48 |
+
|
| 49 |
+
#: .././classes/class.yksemeBase.php:998
|
| 50 |
+
msgid "Back to Subscriber List"
|
| 51 |
+
msgstr "برگشت به فهرست مشترک"
|
| 52 |
+
|
| 53 |
+
#: .././classes/class.yksemeBase.php:999
|
| 54 |
+
msgid "Subscriber Details"
|
| 55 |
+
msgstr "اطلاعات مشترک"
|
| 56 |
+
|
| 57 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 58 |
+
msgid "Overview"
|
| 59 |
+
msgstr "هفتگی"
|
| 60 |
+
|
| 61 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 62 |
+
msgid "First Name"
|
| 63 |
+
msgstr "نام"
|
| 64 |
+
|
| 65 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 66 |
+
msgid "Last Updated"
|
| 67 |
+
msgstr "آخرین به روز رسانی"
|
| 68 |
+
|
| 69 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 70 |
+
msgid "Preferred Email Type"
|
| 71 |
+
msgstr "ترجیحی نوع ایمیل"
|
| 72 |
+
|
| 73 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 74 |
+
msgid "Last Name"
|
| 75 |
+
msgstr "نام خانوادگی"
|
| 76 |
+
|
| 77 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 78 |
+
msgid "Language"
|
| 79 |
+
msgstr "زبان"
|
| 80 |
+
|
| 81 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 82 |
+
msgid "Groups Subscribed To"
|
| 83 |
+
msgstr "گروه: مشترک به"
|
| 84 |
+
|
| 85 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 86 |
+
msgid "Subscriber Notes"
|
| 87 |
+
msgstr "یادداشت های مشترک"
|
| 88 |
+
|
| 89 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 90 |
+
msgid "Written by"
|
| 91 |
+
msgstr "نوشته شده توسط"
|
| 92 |
+
|
| 93 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 94 |
+
msgid "Created on"
|
| 95 |
+
msgstr "ایجاد شده در"
|
| 96 |
+
|
| 97 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 98 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 99 |
+
msgid "MailChimp Forms"
|
| 100 |
+
msgstr "فرم MailChimp"
|
| 101 |
+
|
| 102 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 103 |
+
msgid "MailChimp Settings"
|
| 104 |
+
msgstr "تنظیمات MailChimp"
|
| 105 |
+
|
| 106 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 107 |
+
msgid "Manage List Forms"
|
| 108 |
+
msgstr "مدیریت لیست فرم ها"
|
| 109 |
+
|
| 110 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 111 |
+
msgid "About YIKES, Inc."
|
| 112 |
+
msgstr "در حدود Yikes, Inc."
|
| 113 |
+
|
| 114 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 115 |
+
msgid "One or more fields are empty"
|
| 116 |
+
msgstr "یک یا چند رشته خالی است"
|
| 117 |
+
|
| 118 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 119 |
+
msgid "Your List Was Successfully Saved!"
|
| 120 |
+
msgstr "لیست شما با موفقیت ذخیره شد!"
|
| 121 |
+
|
| 122 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 123 |
+
msgid "I'm sorry there was an error with your request."
|
| 124 |
+
msgstr "متاسفم خطایی در درخواست شما وجود دارد."
|
| 125 |
+
|
| 126 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 127 |
+
msgid "MailChimp List name"
|
| 128 |
+
msgstr "فهرست MailChimp نام"
|
| 129 |
+
|
| 130 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 131 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 132 |
+
#, php-format
|
| 133 |
+
msgid "%1$s"
|
| 134 |
+
msgstr ""
|
| 135 |
+
|
| 136 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 137 |
+
msgid "MailChimp List ID"
|
| 138 |
+
msgstr "MailChimp لیست ID"
|
| 139 |
+
|
| 140 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 141 |
+
msgid "Shortcode"
|
| 142 |
+
msgstr "کوتاه"
|
| 143 |
+
|
| 144 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 145 |
+
msgid ""
|
| 146 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 147 |
+
msgstr ""
|
| 148 |
+
"چسباندن این کوتاه را در هر صفحه و یا پست شما می خواهید برای اضافه کردن این "
|
| 149 |
+
"فرم به"
|
| 150 |
+
|
| 151 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 152 |
+
msgid "PHP Snippet"
|
| 153 |
+
msgstr "PHP کد آماده"
|
| 154 |
+
|
| 155 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 156 |
+
msgid "Use this code to add this form to a template file"
|
| 157 |
+
msgstr "با استفاده از این کد برای اضافه کردن این فرم به یک فایل الگو"
|
| 158 |
+
|
| 159 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 160 |
+
msgid "Number of Subscribers"
|
| 161 |
+
msgstr "تعداد مشترکین"
|
| 162 |
+
|
| 163 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 164 |
+
msgid "Form Fields"
|
| 165 |
+
msgstr "زمینه های فرم"
|
| 166 |
+
|
| 167 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 168 |
+
msgid ""
|
| 169 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 170 |
+
msgstr ""
|
| 171 |
+
"بررسی زمینه های که می خواهید در قالب خود را شامل (آدرس ایمیل مورد نیاز است)."
|
| 172 |
+
|
| 173 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 174 |
+
msgid ""
|
| 175 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 176 |
+
msgstr ""
|
| 177 |
+
"استفاده از فلش سبز به کشیدن و رها کردن زمینه و تنظیم مجدد سفارش خود را."
|
| 178 |
+
|
| 179 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 180 |
+
msgid "Active Fields"
|
| 181 |
+
msgstr "زمینه های فعالیت"
|
| 182 |
+
|
| 183 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 184 |
+
msgid "Drag"
|
| 185 |
+
msgstr "پسا"
|
| 186 |
+
|
| 187 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 188 |
+
msgid "drop"
|
| 189 |
+
msgstr "رها کردن"
|
| 190 |
+
|
| 191 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 192 |
+
msgid "Merge field"
|
| 193 |
+
msgstr "ادغام حوزه"
|
| 194 |
+
|
| 195 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 196 |
+
msgid "Placeholder"
|
| 197 |
+
msgstr "حفره یا سورا"
|
| 198 |
+
|
| 199 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 200 |
+
msgid "Redirect User On Submission"
|
| 201 |
+
msgstr "تغییر مسیر کاربر فعال ارسال مقاله"
|
| 202 |
+
|
| 203 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 204 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 205 |
+
msgstr ""
|
| 206 |
+
"یک صفحه انتخاب کنید و یا مجموعه ای URL سفارشی برای هدایت کاربر به بعد از "
|
| 207 |
+
"آنها فرم را ارسال کنید."
|
| 208 |
+
|
| 209 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 210 |
+
msgid "Select A Post/Page"
|
| 211 |
+
msgstr "انتخاب ارسال / صفحه"
|
| 212 |
+
|
| 213 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 214 |
+
msgid "Save Form Settings"
|
| 215 |
+
msgstr "مدیریت Mailchimp فرم تنظیمات"
|
| 216 |
+
|
| 217 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 218 |
+
msgid "Delete Form"
|
| 219 |
+
msgstr "حذف فرم"
|
| 220 |
+
|
| 221 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 222 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 223 |
+
msgstr "لطفا لیست برخی از MailChimp واردات"
|
| 224 |
+
|
| 225 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 226 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 227 |
+
msgstr "ثبت نام من برای خبرنامه MAILCHIMP، جایگزین، این متن را"
|
| 228 |
+
|
| 229 |
+
#: .././pages/about.php:27
|
| 230 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 231 |
+
msgstr " طراحی و توسعه وب Yikes, Inc."
|
| 232 |
+
|
| 233 |
+
#: .././pages/about.php:29
|
| 234 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 235 |
+
msgstr "هوشمند، موثر، راه حل های وب به زیبایی طراحی شده"
|
| 236 |
+
|
| 237 |
+
#: .././pages/about.php:32
|
| 238 |
+
msgid ""
|
| 239 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 240 |
+
"custom WordPress themes and plugins every day."
|
| 241 |
+
msgstr ""
|
| 242 |
+
" Yikes, Inc. در محله Fishtown از فیلادلفیا که در آن ما سفارشی تم ها وردپرس و "
|
| 243 |
+
"پلاگین ها هر روز ساخت واقع شده است."
|
| 244 |
+
|
| 245 |
+
#: .././pages/about.php:36
|
| 246 |
+
msgid ""
|
| 247 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 248 |
+
"WordCamps"
|
| 249 |
+
msgstr ""
|
| 250 |
+
"در Yikes Inc ما عاشق وردپرس! مالک مشترک، تریسی Levesque است در WordCamps "
|
| 251 |
+
"ارائه"
|
| 252 |
+
|
| 253 |
+
#: .././pages/about.php:36
|
| 254 |
+
msgid "and"
|
| 255 |
+
msgstr "و"
|
| 256 |
+
|
| 257 |
+
#: .././pages/about.php:36
|
| 258 |
+
msgid "She also teaches WordPress classes for"
|
| 259 |
+
msgstr "او همچنین برای آموزد کلاس های وردپرس"
|
| 260 |
+
|
| 261 |
+
#: .././pages/about.php:40
|
| 262 |
+
msgid ""
|
| 263 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 264 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 265 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 266 |
+
"financially sustainable local economy. We even have a"
|
| 267 |
+
msgstr ""
|
| 268 |
+
"علاوه بر این به ساخت سایت های وردپرس بزرگ ما نیز به جنبش کسب و کار پایدار "
|
| 269 |
+
"متعهد است. مردم، سیاره، سود و کار برای کمک به ساخت یک اقتصاد محلی پایدار "
|
| 270 |
+
"اجتماعی، محیط زیست و مالی: ما خط زیرین سه گانه را مشاهده کند. ما حتی یک"
|
| 271 |
+
|
| 272 |
+
#: .././pages/about.php:40
|
| 273 |
+
msgid "LEED Platinum office"
|
| 274 |
+
msgstr "دفتر LEED پلاتین"
|
| 275 |
+
|
| 276 |
+
#: .././pages/about.php:44
|
| 277 |
+
msgid ""
|
| 278 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 279 |
+
"learn more about us, please visit"
|
| 280 |
+
msgstr ""
|
| 281 |
+
"اگر شما علاقه مند در استخدام ما برای توسعه وردپرس، و یا فقط می خواهید به "
|
| 282 |
+
"یادگیری بیشتر در مورد ما، لطفا"
|
| 283 |
+
|
| 284 |
+
#: .././pages/lists.php:8
|
| 285 |
+
msgid "No forms have been added yet."
|
| 286 |
+
msgstr "بدون اشکال هنوز اضافه شده است."
|
| 287 |
+
|
| 288 |
+
#: .././pages/lists.php:39
|
| 289 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 290 |
+
msgstr "اوه .. لیست ID شما وارد کرده اید اشتباه است."
|
| 291 |
+
|
| 292 |
+
#: .././pages/lists.php:44
|
| 293 |
+
msgid "There was an error!"
|
| 294 |
+
msgstr "خطایی وجود دارد!"
|
| 295 |
+
|
| 296 |
+
#: .././pages/lists.php:135
|
| 297 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 298 |
+
msgstr "شما نیاز به انتخاب یک لیست Mailchimp به منظور ایجاد یک فرم برای آن"
|
| 299 |
+
|
| 300 |
+
#: .././pages/lists.php:173
|
| 301 |
+
msgid "Are you sure you want to delete this form?"
|
| 302 |
+
msgstr "آیا مطمئن هستید که می خواهید این فرم را حذف کنید؟"
|
| 303 |
+
|
| 304 |
+
#: .././pages/lists.php:206
|
| 305 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 306 |
+
msgstr ""
|
| 307 |
+
"آیا مطمئن هستید که می خواهید را دوباره وارد میدان های خود را از MailChimp؟"
|
| 308 |
+
|
| 309 |
+
#: .././pages/lists.php:228
|
| 310 |
+
msgid "Looks like this form is already up to date!"
|
| 311 |
+
msgstr "به نظر می رسد این فرم در حال حاضر به روز!"
|
| 312 |
+
|
| 313 |
+
#: .././pages/lists.php:326
|
| 314 |
+
msgid "Are you sure you want to unsubscribe"
|
| 315 |
+
msgstr "آیا مطمئن هستید که می خواهید برای لغو اشتراک"
|
| 316 |
+
|
| 317 |
+
#: .././pages/lists.php:326
|
| 318 |
+
msgid "from this list?"
|
| 319 |
+
msgstr "از این لیست؟"
|
| 320 |
+
|
| 321 |
+
#: .././pages/lists.php:342
|
| 322 |
+
msgid "was successfully unsubscribed from this list."
|
| 323 |
+
msgstr "با موفقیت از این لیست لغو شد."
|
| 324 |
+
|
| 325 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 326 |
+
#: .././pages/options.php:416
|
| 327 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 328 |
+
msgstr "فرم آسان Mailchimp توسط Yikes, Inc. ، شرکت"
|
| 329 |
+
|
| 330 |
+
#: .././pages/lists.php:454
|
| 331 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 332 |
+
msgstr ""
|
| 333 |
+
"قبل از اینکه شما می توانید اشکال MailChimp را به سایت خود اضافه کنید، شما به "
|
| 334 |
+
"نیاز"
|
| 335 |
+
|
| 336 |
+
#: .././pages/lists.php:454
|
| 337 |
+
msgid "go to the MailChimp Settings page"
|
| 338 |
+
msgstr "رفتن به صفحه تنظیمات MailChimp"
|
| 339 |
+
|
| 340 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 341 |
+
msgid "and add your API Key."
|
| 342 |
+
msgstr "و اضافه کردن کلید API خود را."
|
| 343 |
+
|
| 344 |
+
#: .././pages/lists.php:462
|
| 345 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 346 |
+
msgstr "شما باید یک کلید API معتبر به واردات و مدیریت لیست خود را وارد کنید."
|
| 347 |
+
|
| 348 |
+
#: .././pages/lists.php:473
|
| 349 |
+
msgid "Your Lists"
|
| 350 |
+
msgstr "لیست شما"
|
| 351 |
+
|
| 352 |
+
#: .././pages/lists.php:483
|
| 353 |
+
msgid "Manage Forms"
|
| 354 |
+
msgstr "مدیریت فرم ها"
|
| 355 |
+
|
| 356 |
+
#: .././pages/options.php:41
|
| 357 |
+
msgid "The options were saved successfully!"
|
| 358 |
+
msgstr "گزینه های موفقیت ذخیره شد!"
|
| 359 |
+
|
| 360 |
+
#: .././pages/options.php:44
|
| 361 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 362 |
+
msgstr "گزینه های ذخیره نمی شود (و یا شما آنها را تغییر دهید)."
|
| 363 |
+
|
| 364 |
+
#: .././pages/options.php:96
|
| 365 |
+
msgid "Valid API Key"
|
| 366 |
+
msgstr "کلید API معتبر"
|
| 367 |
+
|
| 368 |
+
#: .././pages/options.php:102
|
| 369 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 370 |
+
msgstr "با عرض پوزش، که یک کلید API MailChimp نامعتبر است."
|
| 371 |
+
|
| 372 |
+
#: .././pages/options.php:108
|
| 373 |
+
msgid ""
|
| 374 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 375 |
+
"further information."
|
| 376 |
+
msgstr ""
|
| 377 |
+
"با عرض پوزش، که یک کلید API MailChimp نامعتبر است. لطفا کنسول برای کسب "
|
| 378 |
+
"اطلاعات بیشتر تیک بزنید."
|
| 379 |
+
|
| 380 |
+
#: .././pages/options.php:117
|
| 381 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 382 |
+
msgstr "خطا: لطفا یک معتبر ایمیل شمپانزه API کلیدی را وارد کنید."
|
| 383 |
+
|
| 384 |
+
#: .././pages/options.php:199
|
| 385 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 386 |
+
msgstr "مدیریت Mailchimp فرم تنظیمات"
|
| 387 |
+
|
| 388 |
+
#: .././pages/options.php:205
|
| 389 |
+
msgid "WordPress Version Number Error"
|
| 390 |
+
msgstr "نسخه وردپرس"
|
| 391 |
+
|
| 392 |
+
#: .././pages/options.php:206
|
| 393 |
+
msgid ""
|
| 394 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 395 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 396 |
+
"and posts unless you update to 3.9 or later."
|
| 397 |
+
msgstr ""
|
| 398 |
+
"با عرض پوزش، اما آن را مانند با استفاده از یک نسخه قدیمی از وردپرس به نظر می "
|
| 399 |
+
"رسد. شما نمی قادر خواهد بود برای دسترسی به دکمه ویرایشگر tinymce برای وارد "
|
| 400 |
+
"کردن فرم به صفحات و پست مگر اینکه شما به 3.9 و یا بعد از به روز رسانی."
|
| 401 |
+
|
| 402 |
+
#: .././pages/options.php:215
|
| 403 |
+
msgid "LocalHost Detected :"
|
| 404 |
+
msgstr "localhost را یافت:"
|
| 405 |
+
|
| 406 |
+
#: .././pages/options.php:216
|
| 407 |
+
msgid ""
|
| 408 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 409 |
+
msgstr "فرم آسان Mailchimp توسط Yikes, Inc. ، شرکت"
|
| 410 |
+
|
| 411 |
+
#: .././pages/options.php:217
|
| 412 |
+
msgid ""
|
| 413 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 414 |
+
msgstr "اگر شما قادر به تایید اعتبار کلید API خود را، و دریافت پیغام خطا"
|
| 415 |
+
|
| 416 |
+
#: .././pages/options.php:217
|
| 417 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 418 |
+
msgstr "\"مشکل گواهی SSL: قادر به دریافت محلی گواهی صادر کننده\" "
|
| 419 |
+
|
| 420 |
+
#: .././pages/options.php:217
|
| 421 |
+
msgid "follow the tutorial located "
|
| 422 |
+
msgstr "آموزش واقع به دنبال "
|
| 423 |
+
|
| 424 |
+
#: .././pages/options.php:230
|
| 425 |
+
msgid "Your Mailchimp API Key"
|
| 426 |
+
msgstr "شما Mailchimp API های کلیدی"
|
| 427 |
+
|
| 428 |
+
#: .././pages/options.php:238
|
| 429 |
+
msgid ""
|
| 430 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 431 |
+
"site to communicate with your MailChimp account."
|
| 432 |
+
msgstr ""
|
| 433 |
+
"لطفا خود را MailChimp کلید API بالا را وارد کنید. API های کلیدی اجازه می دهد "
|
| 434 |
+
"تا از سایت وردپرس خود را برای برقراری ارتباط با حساب MailChimp شما."
|
| 435 |
+
|
| 436 |
+
#: .././pages/options.php:239
|
| 437 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 438 |
+
msgstr "برای راهنمایی بیشتر، به مقاله MailChimp پشتیبانی"
|
| 439 |
+
|
| 440 |
+
#: .././pages/options.php:239
|
| 441 |
+
msgid "Where can I find my API Key?"
|
| 442 |
+
msgstr "از کجا می توانم کلید API پیدا کنم؟"
|
| 443 |
+
|
| 444 |
+
#: .././pages/options.php:244
|
| 445 |
+
msgid "Preferred Form Layout"
|
| 446 |
+
msgstr "ترجیحی طرح بندی فرم"
|
| 447 |
+
|
| 448 |
+
#: .././pages/options.php:247
|
| 449 |
+
msgid "table"
|
| 450 |
+
msgstr "جدول"
|
| 451 |
+
|
| 452 |
+
#: .././pages/options.php:248
|
| 453 |
+
msgid "div"
|
| 454 |
+
msgstr "DIV"
|
| 455 |
+
|
| 456 |
+
#: .././pages/options.php:256
|
| 457 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 458 |
+
msgstr ""
|
| 459 |
+
"را انتخاب کنید که آیا می خواهید اشکال خود را به استفاده از یک جدول و یا طرح "
|
| 460 |
+
"دیو."
|
| 461 |
+
|
| 462 |
+
#: .././pages/options.php:261
|
| 463 |
+
msgid "Advanced Error Messaging"
|
| 464 |
+
msgstr "خطا پیشرفته پیام رسانی"
|
| 465 |
+
|
| 466 |
+
#: .././pages/options.php:264
|
| 467 |
+
msgid "Disabled"
|
| 468 |
+
msgstr "غیر فعال"
|
| 469 |
+
|
| 470 |
+
#: .././pages/options.php:265
|
| 471 |
+
msgid "Enabled"
|
| 472 |
+
msgstr "فعال"
|
| 473 |
+
|
| 474 |
+
#: .././pages/options.php:273
|
| 475 |
+
msgid ""
|
| 476 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 477 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 478 |
+
"MailChimp is returning."
|
| 479 |
+
msgstr ""
|
| 480 |
+
"فعال کردن اگر شما با داشتن مشکلات با فرم های خود را ارسال داده ها به "
|
| 481 |
+
"MailChimp. فعال کردن جستجوی پیشرفته خطا در ارسال پیام به شما کد خطا "
|
| 482 |
+
"MailChimp باز می گردد نشان می دهد."
|
| 483 |
+
|
| 484 |
+
#: .././pages/options.php:281
|
| 485 |
+
msgid "Single Opt-In"
|
| 486 |
+
msgstr "تنها انتخاب کردن در"
|
| 487 |
+
|
| 488 |
+
#: .././pages/options.php:282
|
| 489 |
+
msgid "Double Opt-In"
|
| 490 |
+
msgstr "دو انتخاب کردن در"
|
| 491 |
+
|
| 492 |
+
#: .././pages/options.php:290
|
| 493 |
+
msgid ""
|
| 494 |
+
"A single opt-in will add the user to your list without any further "
|
| 495 |
+
"interaction."
|
| 496 |
+
msgstr ""
|
| 497 |
+
"تک انتخاب کردن در را از کاربر به لیست خود را بدون هیچ تعامل بیشتر اضافه کنید."
|
| 498 |
+
|
| 499 |
+
#: .././pages/options.php:291
|
| 500 |
+
msgid ""
|
| 501 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 502 |
+
"subscription."
|
| 503 |
+
msgstr ""
|
| 504 |
+
"دو برابر انتخاب کردن در یک ایمیل به این کاربر ارسال درخواست از آنها برای "
|
| 505 |
+
"تأیید اشتراک خود را."
|
| 506 |
+
|
| 507 |
+
#: .././pages/options.php:292
|
| 508 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 509 |
+
msgstr "این نیز خواهد انتخاب کردن در تنظیمات برای مردم ترک نظر دیکته کند."
|
| 510 |
+
|
| 511 |
+
#: .././pages/options.php:297
|
| 512 |
+
msgid "Custom Opt-In Message"
|
| 513 |
+
msgstr "سفارشی انتخاب کردن در پیام"
|
| 514 |
+
|
| 515 |
+
#: .././pages/options.php:299
|
| 516 |
+
msgid "Double Opt-In Message"
|
| 517 |
+
msgstr "دو انتخاب کردن در پیام"
|
| 518 |
+
|
| 519 |
+
#: .././pages/options.php:301
|
| 520 |
+
msgid "Single Opt-In Message"
|
| 521 |
+
msgstr "تنها پیام انتخاب کردن در"
|
| 522 |
+
|
| 523 |
+
#: .././pages/options.php:307
|
| 524 |
+
msgid "Interest Group Label"
|
| 525 |
+
msgstr "گروه علاقه مند برچسب"
|
| 526 |
+
|
| 527 |
+
#: .././pages/options.php:316
|
| 528 |
+
msgid ""
|
| 529 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 530 |
+
"group names."
|
| 531 |
+
msgstr ""
|
| 532 |
+
"متن بالا گروه علاقه نشان می دهد. خالی بگذارید به استفاده از نام گروه علاقه "
|
| 533 |
+
"MailChimp."
|
| 534 |
+
|
| 535 |
+
#: .././pages/options.php:321
|
| 536 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 537 |
+
msgstr "نمایش انتخاب کردن در چک باکس در فرم نظر؟"
|
| 538 |
+
|
| 539 |
+
#: .././pages/options.php:324
|
| 540 |
+
msgid "Hide"
|
| 541 |
+
msgstr "مخفی کردن "
|
| 542 |
+
|
| 543 |
+
#: .././pages/options.php:325
|
| 544 |
+
msgid "Show"
|
| 545 |
+
msgstr "نشان دادن "
|
| 546 |
+
|
| 547 |
+
#: .././pages/options.php:333
|
| 548 |
+
msgid ""
|
| 549 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 550 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 551 |
+
"mailing list."
|
| 552 |
+
msgstr ""
|
| 553 |
+
"این یک چک باکس درست بالای دکمه ارسال در تمام اشکال نظر نمایش داده شود. در "
|
| 554 |
+
"صورت انتخاب، هر کاربر می روم نظر نیز به لیست پستی اضافه شود."
|
| 555 |
+
|
| 556 |
+
#: .././pages/options.php:338
|
| 557 |
+
msgid "Custom Comment Checkbox Text"
|
| 558 |
+
msgstr "جعبه سفارشی نظر متن"
|
| 559 |
+
|
| 560 |
+
#: .././pages/options.php:345
|
| 561 |
+
msgid "Default List"
|
| 562 |
+
msgstr "فهرست پیش فرض"
|
| 563 |
+
|
| 564 |
+
#: .././pages/options.php:360
|
| 565 |
+
msgid ""
|
| 566 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 567 |
+
"comment."
|
| 568 |
+
msgstr ""
|
| 569 |
+
"این است که کاربران فهرست به طور پیش فرض خواهد شد به هنگام ارسال نظر مشترک."
|
| 570 |
+
|
| 571 |
+
#: .././pages/options.php:361
|
| 572 |
+
msgid ""
|
| 573 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 574 |
+
"name are required or you may run into issues."
|
| 575 |
+
msgstr ""
|
| 576 |
+
"بهتر است برای انتخاب یک فرم که در آن تنها ایمیل، نام و / یا نام خانوادگی "
|
| 577 |
+
"مورد نیاز است یا ممکن است شما به مسائل اجرا شود."
|
| 578 |
+
|
| 579 |
+
#: .././pages/options.php:373
|
| 580 |
+
msgid "Plugin Information"
|
| 581 |
+
msgstr "اطلاعات پلاگین"
|
| 582 |
+
|
| 583 |
+
#: .././pages/options.php:376
|
| 584 |
+
msgid "If you experience any issues with our plugin, please"
|
| 585 |
+
msgstr "اگر شما تجربه هر گونه مسائل با پلاگین ما، لطفا"
|
| 586 |
+
|
| 587 |
+
#: .././pages/options.php:376
|
| 588 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 589 |
+
msgstr "ارسال یک موضوع جدید در Github شماره ما آمار"
|
| 590 |
+
|
| 591 |
+
#: .././pages/options.php:376
|
| 592 |
+
msgid ""
|
| 593 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 594 |
+
msgstr "لطفا اطلاعات زیر را برای کمک به ما مشکل شما رفع شود."
|
| 595 |
+
|
| 596 |
+
#: .././pages/options.php:384
|
| 597 |
+
msgid "Plugin Version"
|
| 598 |
+
msgstr "نسخه پلاگین"
|
| 599 |
+
|
| 600 |
+
#: .././pages/options.php:388
|
| 601 |
+
msgid "Wordpress Version"
|
| 602 |
+
msgstr "نسخه وردپرس"
|
| 603 |
+
|
| 604 |
+
#: .././pages/options.php:392
|
| 605 |
+
msgid "Browser Information"
|
| 606 |
+
msgstr "اطلاعات مرورگر"
|
| 607 |
+
|
| 608 |
+
#: .././pages/options.php:420
|
| 609 |
+
msgid "Error"
|
| 610 |
+
msgstr "خطا"
|
| 611 |
+
|
| 612 |
+
#: .././pages/options.php:421
|
| 613 |
+
msgid ""
|
| 614 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 615 |
+
"cURL to send and retreive data."
|
| 616 |
+
msgstr ""
|
| 617 |
+
"با عرض پوزش، اما حلقه بر روی سرور شما فعال نیست. API MailChimp با بهره گیری "
|
| 618 |
+
"از حلقه برای ارسال و retreive داده است."
|
| 619 |
+
|
| 620 |
+
#: .././pages/options.php:426
|
| 621 |
+
msgid "Help!"
|
| 622 |
+
msgstr "کمک!"
|
| 623 |
+
|
| 624 |
+
#: .././pages/options.php:426
|
| 625 |
+
msgid "What is cURL?"
|
| 626 |
+
msgstr "حلقه چیست؟"
|
| 627 |
+
|
| 628 |
+
#: .././pages/options.php:426
|
| 629 |
+
msgid "Check phpinfo()"
|
| 630 |
+
msgstr "بررسی کنید phpinfo ()"
|
| 631 |
+
|
| 632 |
+
#: .././pages/options.php:428
|
| 633 |
+
msgid "Steps To Resolve The Issue"
|
| 634 |
+
msgstr "گام برای رسیدن به حل و فصل موضوع"
|
| 635 |
+
|
| 636 |
+
#: .././pages/options.php:430
|
| 637 |
+
msgid ""
|
| 638 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 639 |
+
msgstr ""
|
| 640 |
+
"شما می توانید حلقه با روشن کردن ماژول حلقه در فایل php.ini خود را فعال کنید"
|
| 641 |
+
|
| 642 |
+
#: .././pages/options.php:430
|
| 643 |
+
msgid "You should find the php.ini file located here : "
|
| 644 |
+
msgstr "شما باید در فایل php.ini، قرار دارد در اینجا پیدا کنید: "
|
| 645 |
+
|
| 646 |
+
#: .././pages/options.php:431
|
| 647 |
+
msgid ""
|
| 648 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 649 |
+
msgstr ""
|
| 650 |
+
"هنگامی که در بر داشت، باز کردن فایل php.ini اجرا شده و قرار دادن خط \"؛ فرمت "
|
| 651 |
+
"= php_curl.dll\"."
|
| 652 |
+
|
| 653 |
+
#: .././pages/options.php:432
|
| 654 |
+
msgid ""
|
| 655 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 656 |
+
"active."
|
| 657 |
+
msgstr ""
|
| 658 |
+
"حذف روده بزرگ نیمه قبل از خط، به سازمان ملل متحد اظهار نظر و ماژول فعال است."
|
| 659 |
+
|
| 660 |
+
#: .././pages/options.php:433
|
| 661 |
+
msgid "Re-save and close the file."
|
| 662 |
+
msgstr "دوباره ذخیره و بستن پرونده."
|
| 663 |
+
|
| 664 |
+
#: .././pages/options.php:434
|
| 665 |
+
msgid "Re-load this page."
|
| 666 |
+
msgstr "دوباره بارگذاری این صفحه."
|
| 667 |
+
|
| 668 |
+
#: .././templates/shortcode_error.php:1
|
| 669 |
+
msgid "There was an error calling the mailchimp list."
|
| 670 |
+
msgstr "یک خطا در فراخوانی لیست mailchimp وجود دارد."
|
| 671 |
+
|
| 672 |
+
#: .././templates/shortcode_error_data.php:1
|
| 673 |
+
msgid ""
|
| 674 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 675 |
+
"List Forms\" page."
|
| 676 |
+
msgstr ""
|
| 677 |
+
"لیست وجود ندارد! اطمینان حاصل کنید که شما را در لیست بر روی وارد شده اند "
|
| 678 |
+
"\"مدیریت فهرست فرم\" صفحه."
|
| 679 |
+
|
| 680 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 681 |
+
msgid "This list was already placed on this page!"
|
| 682 |
+
msgstr "این لیست در حال حاضر در این صفحه قرار داده شد!"
|
| 683 |
+
|
| 684 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 685 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 686 |
+
msgstr "Woops! بدون کلید API معتبری یافت نشد. دو تنظیمات خود را چک کنید."
|
| 687 |
+
|
| 688 |
+
#: .././templates/shortcode_form.php:11
|
| 689 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 690 |
+
msgstr "اوه .. فراموش نکنید که برای پر کردن در زمینه های زیر"
|
| 691 |
+
|
| 692 |
+
#: .././templates/shortcode_form.php:74
|
| 693 |
+
msgid "required field"
|
| 694 |
+
msgstr "زمینه مورد نیاز"
|
| 695 |
+
|
| 696 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 697 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 698 |
+
msgid "MailChimp Signup Form"
|
| 699 |
+
msgstr "MailChimp فرم ثبت نام"
|
| 700 |
+
|
| 701 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 702 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 703 |
+
msgstr "را انتخاب کنید که فرم شما می خواهم نمایش:"
|
| 704 |
+
|
| 705 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 706 |
+
msgid "Select a Form to Display"
|
| 707 |
+
msgstr "انتخاب فرم به نمایش"
|
| 708 |
+
|
| 709 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 710 |
+
msgid "Please import MailChimp forms"
|
| 711 |
+
msgstr "لطفا فرم MailChimp واردات"
|
| 712 |
+
|
| 713 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 714 |
+
msgid "Please import some lists from MailChimp"
|
| 715 |
+
msgstr "لطفا لیست برخی از MailChimp واردات"
|
| 716 |
+
|
| 717 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 718 |
+
msgid "Import Lists Now"
|
| 719 |
+
msgstr "لیست واردات در حال حاضر"
|
| 720 |
+
|
| 721 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 722 |
+
msgid ""
|
| 723 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 724 |
+
"least one list to use the Easy MailChimp widget."
|
| 725 |
+
msgstr ""
|
| 726 |
+
"اوه! به نظر میرسد شما هر لیست وارد نشده است. شما باید حداقل یک لیست واردات "
|
| 727 |
+
"به استفاده از ویجت آسان MailChimp."
|
| 728 |
+
|
| 729 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 730 |
+
msgid ""
|
| 731 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 732 |
+
"'Appearance > Widgets' and select a form to display."
|
| 733 |
+
msgstr ""
|
| 734 |
+
"اوه! به نظر می رسد شما را فراموش کرده به انتخاب یک شکل به نمایش در اینجا. "
|
| 735 |
+
"برو به ظاهر> ابزارک و یک فرم برای نمایش انتخاب کنید."
|
| 736 |
+
|
| 737 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 738 |
+
msgid "Sign Up For Our Newsletter"
|
| 739 |
+
msgstr "ثبت نام برای خبرنامه ما"
|
| 740 |
+
|
| 741 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 742 |
+
msgid "Sign Me Up"
|
| 743 |
+
msgstr "ثبت نام من به"
|
| 744 |
+
|
| 745 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 746 |
+
msgid "Title:"
|
| 747 |
+
msgstr "عنوان:"
|
| 748 |
+
|
| 749 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 750 |
+
msgid "Form Text:"
|
| 751 |
+
msgstr "فرم اصلی:"
|
| 752 |
+
|
| 753 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 754 |
+
msgid "Submit Button Text:"
|
| 755 |
+
msgstr "ثبت کردن دکمه اصلی:"
|
| 756 |
+
|
| 757 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 758 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 759 |
+
msgstr "اوه! به نظر میرسد شما کلید API خود را به آن اضافه نشده است! سر را به"
|
| 760 |
+
|
| 761 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 762 |
+
msgid "Settings page"
|
| 763 |
+
msgstr "صفحه تنظیمات"
|
| 764 |
+
|
| 765 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 766 |
+
#~ msgstr "بدون کلید API و یا فهرست کد وجود دارد!"
|
languages/yikes-inc-easy-mailchimp-extender-he_IL.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-he_IL.po
ADDED
|
@@ -0,0 +1,750 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:31-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:50-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: he_IL\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "תודה שנרשם!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr "תודה שנרשם! בדוק את תיבת הדוא\"ל שלך להודעת האישור."
|
| 28 |
+
|
| 29 |
+
#: .././classes/class.yksemeBase.php:116
|
| 30 |
+
msgid "Select Your Area of Interest"
|
| 31 |
+
msgstr "בחר האזור שלך של ריבית"
|
| 32 |
+
|
| 33 |
+
#: .././classes/class.yksemeBase.php:917
|
| 34 |
+
msgid "Click on a subscriber to see further information"
|
| 35 |
+
msgstr "לחץ על מנוי כדי לראות מידע נוסף"
|
| 36 |
+
|
| 37 |
+
#: .././classes/class.yksemeBase.php:920
|
| 38 |
+
msgid "E-Mail"
|
| 39 |
+
msgstr "דואר אלקטרוני"
|
| 40 |
+
|
| 41 |
+
#: .././classes/class.yksemeBase.php:921
|
| 42 |
+
msgid "Date Subscribed"
|
| 43 |
+
msgstr "תאריך המבוקשים"
|
| 44 |
+
|
| 45 |
+
#: .././classes/class.yksemeBase.php:941
|
| 46 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 47 |
+
msgstr "מצטער שאתה לא נכון לעכשיו יש לך מנויים ברשימה זו!"
|
| 48 |
+
|
| 49 |
+
#: .././classes/class.yksemeBase.php:998
|
| 50 |
+
msgid "Back to Subscriber List"
|
| 51 |
+
msgstr "חזור לרשימת מנויים"
|
| 52 |
+
|
| 53 |
+
#: .././classes/class.yksemeBase.php:999
|
| 54 |
+
msgid "Subscriber Details"
|
| 55 |
+
msgstr "פרטי מנוי"
|
| 56 |
+
|
| 57 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 58 |
+
msgid "Overview"
|
| 59 |
+
msgstr "סקירה"
|
| 60 |
+
|
| 61 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 62 |
+
msgid "First Name"
|
| 63 |
+
msgstr "שם פרטים"
|
| 64 |
+
|
| 65 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 66 |
+
msgid "Last Updated"
|
| 67 |
+
msgstr "עדכון האחרון"
|
| 68 |
+
|
| 69 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 70 |
+
msgid "Preferred Email Type"
|
| 71 |
+
msgstr "סוג דוא\"ל מועדף"
|
| 72 |
+
|
| 73 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 74 |
+
msgid "Last Name"
|
| 75 |
+
msgstr "שם משפחה"
|
| 76 |
+
|
| 77 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 78 |
+
msgid "Language"
|
| 79 |
+
msgstr "שפה"
|
| 80 |
+
|
| 81 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 82 |
+
msgid "Groups Subscribed To"
|
| 83 |
+
msgstr "קבוצות המנויים על"
|
| 84 |
+
|
| 85 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 86 |
+
msgid "Subscriber Notes"
|
| 87 |
+
msgstr "הערות מנויים"
|
| 88 |
+
|
| 89 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 90 |
+
msgid "Written by"
|
| 91 |
+
msgstr "נכתב על ידי"
|
| 92 |
+
|
| 93 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 94 |
+
msgid "Created on"
|
| 95 |
+
msgstr "נוצר על"
|
| 96 |
+
|
| 97 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 98 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 99 |
+
msgid "MailChimp Forms"
|
| 100 |
+
msgstr "טפסי MailChimp"
|
| 101 |
+
|
| 102 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 103 |
+
msgid "MailChimp Settings"
|
| 104 |
+
msgstr "הגדרות MailChimp"
|
| 105 |
+
|
| 106 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 107 |
+
msgid "Manage List Forms"
|
| 108 |
+
msgstr "ניהול טפסי רשימה"
|
| 109 |
+
|
| 110 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 111 |
+
msgid "About YIKES, Inc."
|
| 112 |
+
msgstr "Yikes Inc. על"
|
| 113 |
+
|
| 114 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 115 |
+
msgid "One or more fields are empty"
|
| 116 |
+
msgstr "אחד או יותר שדות ריקים"
|
| 117 |
+
|
| 118 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 119 |
+
msgid "Your List Was Successfully Saved!"
|
| 120 |
+
msgstr "רשימה שלך נשמרה בהצלחה!"
|
| 121 |
+
|
| 122 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 123 |
+
msgid "I'm sorry there was an error with your request."
|
| 124 |
+
msgstr "אני מצטער שיש שגיאה עם בקשתך."
|
| 125 |
+
|
| 126 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 127 |
+
msgid "MailChimp List name"
|
| 128 |
+
msgstr "שם MailChimp רשימה"
|
| 129 |
+
|
| 130 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 131 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 132 |
+
#, php-format
|
| 133 |
+
msgid "%1$s"
|
| 134 |
+
msgstr ""
|
| 135 |
+
|
| 136 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 137 |
+
msgid "MailChimp List ID"
|
| 138 |
+
msgstr "MailChimp רשימת זיהוי"
|
| 139 |
+
|
| 140 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 141 |
+
msgid "Shortcode"
|
| 142 |
+
msgstr "קוד קצר"
|
| 143 |
+
|
| 144 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 145 |
+
msgid ""
|
| 146 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 147 |
+
msgstr "להדביק קוד קצר הזה לכל דף או לפרסם אתה רוצה להוסיף בטופס זה כדי"
|
| 148 |
+
|
| 149 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 150 |
+
msgid "PHP Snippet"
|
| 151 |
+
msgstr "PHP קטע"
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 154 |
+
msgid "Use this code to add this form to a template file"
|
| 155 |
+
msgstr "השתמש בקוד זה כדי להוסיף בטופס זה כדי קובץ תבנית"
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 158 |
+
msgid "Number of Subscribers"
|
| 159 |
+
msgstr "מספר המנויים"
|
| 160 |
+
|
| 161 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 162 |
+
msgid "Form Fields"
|
| 163 |
+
msgstr "שדות טופס"
|
| 164 |
+
|
| 165 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 166 |
+
msgid ""
|
| 167 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 168 |
+
msgstr "בדוק את השדות שברצונך לכלול בטופס שלך (נדרשת כתובת דוא\"ל)."
|
| 169 |
+
|
| 170 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 171 |
+
msgid ""
|
| 172 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 173 |
+
msgstr ""
|
| 174 |
+
"השתמש בחיצים הירוקים כדי לגרור ולשחרר את השדות ולארגן מחדש את הסדר שלהם."
|
| 175 |
+
|
| 176 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 177 |
+
msgid "Active Fields"
|
| 178 |
+
msgstr "שדות פעילים"
|
| 179 |
+
|
| 180 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 181 |
+
msgid "Drag"
|
| 182 |
+
msgstr "גרירה"
|
| 183 |
+
|
| 184 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 185 |
+
msgid "drop"
|
| 186 |
+
msgstr "ירידה"
|
| 187 |
+
|
| 188 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 189 |
+
msgid "Merge field"
|
| 190 |
+
msgstr "שדה מיזוג"
|
| 191 |
+
|
| 192 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 193 |
+
msgid "Placeholder"
|
| 194 |
+
msgstr "מציין מיקום"
|
| 195 |
+
|
| 196 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 197 |
+
msgid "Redirect User On Submission"
|
| 198 |
+
msgstr "להפנות את המשתמש בהגשה"
|
| 199 |
+
|
| 200 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 201 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 202 |
+
msgstr ""
|
| 203 |
+
"לבחור דף או להגדיר כתובת אתר מותאם אישית כדי לנתב מחדש את המשתמש לאחר ששלחו "
|
| 204 |
+
"את הטופס."
|
| 205 |
+
|
| 206 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 207 |
+
msgid "Select A Post/Page"
|
| 208 |
+
msgstr "בחר פוסט / דף"
|
| 209 |
+
|
| 210 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 211 |
+
msgid "Save Form Settings"
|
| 212 |
+
msgstr "ניהול הגדרות טפסי MailChimp"
|
| 213 |
+
|
| 214 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 215 |
+
msgid "Delete Form"
|
| 216 |
+
msgstr "מחיקת טופס"
|
| 217 |
+
|
| 218 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 219 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 220 |
+
msgstr "אנא לייבא כמה רשימות מMailChimp"
|
| 221 |
+
|
| 222 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 223 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 224 |
+
msgstr "רשום אותי לדיוור של MailChimp-REPLACE זה-TEXT"
|
| 225 |
+
|
| 226 |
+
#: .././pages/about.php:27
|
| 227 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 228 |
+
msgstr "עיצוב ובניית אתרים Yikes, Inc."
|
| 229 |
+
|
| 230 |
+
#: .././pages/about.php:29
|
| 231 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 232 |
+
msgstr "פתרונות חכמים, יעילים, מעוצבים להפליא אינטרנט"
|
| 233 |
+
|
| 234 |
+
#: .././pages/about.php:32
|
| 235 |
+
msgid ""
|
| 236 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 237 |
+
"custom WordPress themes and plugins every day."
|
| 238 |
+
msgstr ""
|
| 239 |
+
"Yikes, Inc. ממוקם בשכונת Fishtown של פילדלפיה שבו אנו בונים מותאמים אישית "
|
| 240 |
+
"ערכות נושא ותוספים וורדפרס בכל יום."
|
| 241 |
+
|
| 242 |
+
#: .././pages/about.php:36
|
| 243 |
+
msgid ""
|
| 244 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 245 |
+
"WordCamps"
|
| 246 |
+
msgstr ""
|
| 247 |
+
"ב Yikes Inc. שאנחנו אוהבים וורדפרס! בעלים משותפים, טרייסי ווסק הציג "
|
| 248 |
+
"בWordCamps"
|
| 249 |
+
|
| 250 |
+
#: .././pages/about.php:36
|
| 251 |
+
msgid "and"
|
| 252 |
+
msgstr "וגם"
|
| 253 |
+
|
| 254 |
+
#: .././pages/about.php:36
|
| 255 |
+
msgid "She also teaches WordPress classes for"
|
| 256 |
+
msgstr "היא גם מלמדת שיעורי WordPress עבור"
|
| 257 |
+
|
| 258 |
+
#: .././pages/about.php:40
|
| 259 |
+
msgid ""
|
| 260 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 261 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 262 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 263 |
+
"financially sustainable local economy. We even have a"
|
| 264 |
+
msgstr ""
|
| 265 |
+
"בנוסף לביצוע אתרים וורדפרס גדולים אנחנו גם מחויבים לתנועה העסקית בר קיימא. "
|
| 266 |
+
"אנו רואים את השורה התחתונה המשולשת: אנשים, כדור הארץ, רווח ולעבוד כדי לסייע "
|
| 267 |
+
"בבניית כלכלה מקומית ברת קיימא יותר מבחינה חברתית, סביבתית וכלכלית. יש לנו "
|
| 268 |
+
"אפילו"
|
| 269 |
+
|
| 270 |
+
#: .././pages/about.php:40
|
| 271 |
+
msgid "LEED Platinum office"
|
| 272 |
+
msgstr "משרד LEED פלטינום"
|
| 273 |
+
|
| 274 |
+
#: .././pages/about.php:44
|
| 275 |
+
msgid ""
|
| 276 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 277 |
+
"learn more about us, please visit"
|
| 278 |
+
msgstr ""
|
| 279 |
+
"אם אתה מעוניין בהעסקתנו לפיתוח וורדפרס, או רק רוצה ללמוד יותר על קשר, אנא בקר"
|
| 280 |
+
|
| 281 |
+
#: .././pages/lists.php:8
|
| 282 |
+
msgid "No forms have been added yet."
|
| 283 |
+
msgstr "אין צורות נוספו עדיין."
|
| 284 |
+
|
| 285 |
+
#: .././pages/lists.php:39
|
| 286 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 287 |
+
msgstr "אופס .. מופיע מזהה הרשימה שהזנת שגוי."
|
| 288 |
+
|
| 289 |
+
#: .././pages/lists.php:44
|
| 290 |
+
msgid "There was an error!"
|
| 291 |
+
msgstr "הייתה שגיאה!"
|
| 292 |
+
|
| 293 |
+
#: .././pages/lists.php:135
|
| 294 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 295 |
+
msgstr "אתה צריך לבחור רשימת MailChimp כדי ליצור טופס עבורו"
|
| 296 |
+
|
| 297 |
+
#: .././pages/lists.php:173
|
| 298 |
+
msgid "Are you sure you want to delete this form?"
|
| 299 |
+
msgstr "האם אתה בטוח שברצונך למחוק את הטופס הזה"
|
| 300 |
+
|
| 301 |
+
#: .././pages/lists.php:206
|
| 302 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 303 |
+
msgstr "האם אתה בטוח שאתה רוצה לייבא מחדש את השדות מMailChimp?"
|
| 304 |
+
|
| 305 |
+
#: .././pages/lists.php:228
|
| 306 |
+
msgid "Looks like this form is already up to date!"
|
| 307 |
+
msgstr "נראה כמו טופס זה כבר מעודכן!"
|
| 308 |
+
|
| 309 |
+
#: .././pages/lists.php:326
|
| 310 |
+
msgid "Are you sure you want to unsubscribe"
|
| 311 |
+
msgstr "האם אתה בטוח שאתה רוצה לבטל את המנוי"
|
| 312 |
+
|
| 313 |
+
#: .././pages/lists.php:326
|
| 314 |
+
msgid "from this list?"
|
| 315 |
+
msgstr "מרשימה זו?"
|
| 316 |
+
|
| 317 |
+
#: .././pages/lists.php:342
|
| 318 |
+
msgid "was successfully unsubscribed from this list."
|
| 319 |
+
msgstr "היה הוסר בהצלחה מרשימה זו."
|
| 320 |
+
|
| 321 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 322 |
+
#: .././pages/options.php:416
|
| 323 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 324 |
+
msgstr "טפסים קלים MailChimp ידי Yikes, Inc"
|
| 325 |
+
|
| 326 |
+
#: .././pages/lists.php:454
|
| 327 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 328 |
+
msgstr "לפני שתוכל להוסיף צורות MailChimp לאתר שלך, אתה צריך"
|
| 329 |
+
|
| 330 |
+
#: .././pages/lists.php:454
|
| 331 |
+
msgid "go to the MailChimp Settings page"
|
| 332 |
+
msgstr "לעבור לדף הגדרות MailChimp"
|
| 333 |
+
|
| 334 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 335 |
+
msgid "and add your API Key."
|
| 336 |
+
msgstr "ולהוסיף מפתח API שלך."
|
| 337 |
+
|
| 338 |
+
#: .././pages/lists.php:462
|
| 339 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 340 |
+
msgstr "עליך להזין מפתח API חוקי לייבא ולנהל את הרשימות שלך."
|
| 341 |
+
|
| 342 |
+
#: .././pages/lists.php:473
|
| 343 |
+
msgid "Your Lists"
|
| 344 |
+
msgstr "הרשימות שלך"
|
| 345 |
+
|
| 346 |
+
#: .././pages/lists.php:483
|
| 347 |
+
msgid "Manage Forms"
|
| 348 |
+
msgstr "ניהול טפסים"
|
| 349 |
+
|
| 350 |
+
#: .././pages/options.php:41
|
| 351 |
+
msgid "The options were saved successfully!"
|
| 352 |
+
msgstr "האפשרויות היו נשמרו בהצלחה!"
|
| 353 |
+
|
| 354 |
+
#: .././pages/options.php:44
|
| 355 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 356 |
+
msgstr "האפשרויות לא היו אפשרות לשמור (או שלא לשנות אותם)."
|
| 357 |
+
|
| 358 |
+
#: .././pages/options.php:96
|
| 359 |
+
msgid "Valid API Key"
|
| 360 |
+
msgstr "מפתח API תקף"
|
| 361 |
+
|
| 362 |
+
#: .././pages/options.php:102
|
| 363 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 364 |
+
msgstr "סליחה, זה הוא מפתח API MailChimp לא חוקי."
|
| 365 |
+
|
| 366 |
+
#: .././pages/options.php:108
|
| 367 |
+
msgid ""
|
| 368 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 369 |
+
"further information."
|
| 370 |
+
msgstr ""
|
| 371 |
+
"סליחה, זה הוא מפתח API MailChimp לא חוקי. אנא בדוק את הקונסולה לקבלת מידע "
|
| 372 |
+
"נוספת."
|
| 373 |
+
|
| 374 |
+
#: .././pages/options.php:117
|
| 375 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 376 |
+
msgstr "שגיאה: אנא הכנס דואר השימפנזה API מפתח חוקי."
|
| 377 |
+
|
| 378 |
+
#: .././pages/options.php:199
|
| 379 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 380 |
+
msgstr "ניהול הגדרות טפסי MailChimp"
|
| 381 |
+
|
| 382 |
+
#: .././pages/options.php:205
|
| 383 |
+
msgid "WordPress Version Number Error"
|
| 384 |
+
msgstr "גרסת Wordpress"
|
| 385 |
+
|
| 386 |
+
#: .././pages/options.php:206
|
| 387 |
+
msgid ""
|
| 388 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 389 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 390 |
+
"and posts unless you update to 3.9 or later."
|
| 391 |
+
msgstr ""
|
| 392 |
+
"אנו מצטערים, אבל זה נראה כמוך משתמש בגרסה מיושנת של וורדפרס. אתה לא יהיה "
|
| 393 |
+
"מסוגל לגשת לכפתור TinyMCE להכניס צורות לתוך דפים והודעות אלא אם תעדכן ל3.9 "
|
| 394 |
+
"או במאוחר."
|
| 395 |
+
|
| 396 |
+
#: .././pages/options.php:215
|
| 397 |
+
msgid "LocalHost Detected :"
|
| 398 |
+
msgstr "LocalHost זוהה:"
|
| 399 |
+
|
| 400 |
+
#: .././pages/options.php:216
|
| 401 |
+
msgid ""
|
| 402 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 403 |
+
msgstr "טפסים קלים MailChimp ידי Yikes, Inc"
|
| 404 |
+
|
| 405 |
+
#: .././pages/options.php:217
|
| 406 |
+
msgid ""
|
| 407 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 408 |
+
msgstr "אם אתה לא מצליח לאמת את מפתח ה-API, ומתקבל הודעת השגיאה"
|
| 409 |
+
|
| 410 |
+
#: .././pages/options.php:217
|
| 411 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 412 |
+
msgstr "\"בעיה תעודת SSL: לא מצליח לקבל תעודת מנפיק מקומי\" "
|
| 413 |
+
|
| 414 |
+
#: .././pages/options.php:217
|
| 415 |
+
msgid "follow the tutorial located "
|
| 416 |
+
msgstr "בצע את ההדרכה ממוקמת "
|
| 417 |
+
|
| 418 |
+
#: .././pages/options.php:230
|
| 419 |
+
msgid "Your Mailchimp API Key"
|
| 420 |
+
msgstr "MailChimp API המפתח שלך"
|
| 421 |
+
|
| 422 |
+
#: .././pages/options.php:238
|
| 423 |
+
msgid ""
|
| 424 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 425 |
+
"site to communicate with your MailChimp account."
|
| 426 |
+
msgstr ""
|
| 427 |
+
"נא להזין מפתח API MailChimp שלך לעיל. API מפתח מאפשר האתר שלך WordPress כדי "
|
| 428 |
+
"לתקשר עם חשבון MailChimp שלך."
|
| 429 |
+
|
| 430 |
+
#: .././pages/options.php:239
|
| 431 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 432 |
+
msgstr "לקבלת עזרה נוספת, בקר במאמר MailChimp התמיכה"
|
| 433 |
+
|
| 434 |
+
#: .././pages/options.php:239
|
| 435 |
+
msgid "Where can I find my API Key?"
|
| 436 |
+
msgstr "איפה אני יכול למצוא את מפתח ה-API שלי?"
|
| 437 |
+
|
| 438 |
+
#: .././pages/options.php:244
|
| 439 |
+
msgid "Preferred Form Layout"
|
| 440 |
+
msgstr "מועדפת טופס פריסה"
|
| 441 |
+
|
| 442 |
+
#: .././pages/options.php:247
|
| 443 |
+
msgid "table"
|
| 444 |
+
msgstr "שולחן"
|
| 445 |
+
|
| 446 |
+
#: .././pages/options.php:248
|
| 447 |
+
msgid "div"
|
| 448 |
+
msgstr "div"
|
| 449 |
+
|
| 450 |
+
#: .././pages/options.php:256
|
| 451 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 452 |
+
msgstr "לבחור אם אתה רוצה את הטפסים שלך כדי להשתמש בטבלה או פריסת div."
|
| 453 |
+
|
| 454 |
+
#: .././pages/options.php:261
|
| 455 |
+
msgid "Advanced Error Messaging"
|
| 456 |
+
msgstr "שגיאה מתקדמות מסרים"
|
| 457 |
+
|
| 458 |
+
#: .././pages/options.php:264
|
| 459 |
+
msgid "Disabled"
|
| 460 |
+
msgstr "מנוטרל"
|
| 461 |
+
|
| 462 |
+
#: .././pages/options.php:265
|
| 463 |
+
msgid "Enabled"
|
| 464 |
+
msgstr "מאופשר"
|
| 465 |
+
|
| 466 |
+
#: .././pages/options.php:273
|
| 467 |
+
msgid ""
|
| 468 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 469 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 470 |
+
"MailChimp is returning."
|
| 471 |
+
msgstr ""
|
| 472 |
+
"אפשר אם אתה נתקלת בבעיות עם הטפסים שלך שליחת נתונים לMailChimp. מה שמאפשר "
|
| 473 |
+
"העברת הודעות שגיאה מתקדמות יראה לכם את קודי שגיאה המדויקים MailChimp חוזר."
|
| 474 |
+
|
| 475 |
+
#: .././pages/options.php:281
|
| 476 |
+
msgid "Single Opt-In"
|
| 477 |
+
msgstr "אחת Opt-In"
|
| 478 |
+
|
| 479 |
+
#: .././pages/options.php:282
|
| 480 |
+
msgid "Double Opt-In"
|
| 481 |
+
msgstr "Double opt-in"
|
| 482 |
+
|
| 483 |
+
#: .././pages/options.php:290
|
| 484 |
+
msgid ""
|
| 485 |
+
"A single opt-in will add the user to your list without any further "
|
| 486 |
+
"interaction."
|
| 487 |
+
msgstr "Opt-in יחיד יהיה להוסיף את המשתמש לרשימה שלך, ללא כל אינטראקציה נוספת."
|
| 488 |
+
|
| 489 |
+
#: .././pages/options.php:291
|
| 490 |
+
msgid ""
|
| 491 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 492 |
+
"subscription."
|
| 493 |
+
msgstr ""
|
| 494 |
+
"Opt-in כפול יהיה לשלוח דואר אלקטרוני למשתמש ומבקש מהם לאשר את המנוי שלהם."
|
| 495 |
+
|
| 496 |
+
#: .././pages/options.php:292
|
| 497 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 498 |
+
msgstr "זה גם יכתיב את הגדרות opt-in לאנשי השארת תגובות."
|
| 499 |
+
|
| 500 |
+
#: .././pages/options.php:297
|
| 501 |
+
msgid "Custom Opt-In Message"
|
| 502 |
+
msgstr "הודעה מותאמת אישית Opt-in"
|
| 503 |
+
|
| 504 |
+
#: .././pages/options.php:299
|
| 505 |
+
msgid "Double Opt-In Message"
|
| 506 |
+
msgstr "מסר כפול opt-in"
|
| 507 |
+
|
| 508 |
+
#: .././pages/options.php:301
|
| 509 |
+
msgid "Single Opt-In Message"
|
| 510 |
+
msgstr "מסר opt-in יחיד"
|
| 511 |
+
|
| 512 |
+
#: .././pages/options.php:307
|
| 513 |
+
msgid "Interest Group Label"
|
| 514 |
+
msgstr "לייבל קבוצת העניין"
|
| 515 |
+
|
| 516 |
+
#: .././pages/options.php:316
|
| 517 |
+
msgid ""
|
| 518 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 519 |
+
"group names."
|
| 520 |
+
msgstr ""
|
| 521 |
+
"טקסט שיוצג מעל קבוצות אינטרס. שאר ריק כדי להשתמש בשמות קבוצת אינטרס "
|
| 522 |
+
"MailChimp."
|
| 523 |
+
|
| 524 |
+
#: .././pages/options.php:321
|
| 525 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 526 |
+
msgstr "opt-in תיבת תצוגה בצורות תגובה?"
|
| 527 |
+
|
| 528 |
+
#: .././pages/options.php:324
|
| 529 |
+
msgid "Hide"
|
| 530 |
+
msgstr "הסתר"
|
| 531 |
+
|
| 532 |
+
#: .././pages/options.php:325
|
| 533 |
+
msgid "Show"
|
| 534 |
+
msgstr "הצג"
|
| 535 |
+
|
| 536 |
+
#: .././pages/options.php:333
|
| 537 |
+
msgid ""
|
| 538 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 539 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 540 |
+
"mailing list."
|
| 541 |
+
msgstr ""
|
| 542 |
+
"פעולה זו תציג תיבה בדיוק מעל כפתור שליחה בכל צורות התגובה. אם נבחר, משתמשים "
|
| 543 |
+
"כל השארת תגובות יתווספו גם לרשימת התפוצה."
|
| 544 |
+
|
| 545 |
+
#: .././pages/options.php:338
|
| 546 |
+
msgid "Custom Comment Checkbox Text"
|
| 547 |
+
msgstr "טקסט תיבת סימון להערה מותאמת אישית"
|
| 548 |
+
|
| 549 |
+
#: .././pages/options.php:345
|
| 550 |
+
msgid "Default List"
|
| 551 |
+
msgstr "רשימת ברירת מחדל"
|
| 552 |
+
|
| 553 |
+
#: .././pages/options.php:360
|
| 554 |
+
msgid ""
|
| 555 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 556 |
+
"comment."
|
| 557 |
+
msgstr "זוהי רשימת משתמשי ברירת המחדל יהיו מנויים בעת הגשת תגובה."
|
| 558 |
+
|
| 559 |
+
#: .././pages/options.php:361
|
| 560 |
+
msgid ""
|
| 561 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 562 |
+
"name are required or you may run into issues."
|
| 563 |
+
msgstr ""
|
| 564 |
+
"עדיף לבחור צורה שבה רק בדוא\"ל, שם פרטיים ו או שם המשפחה נדרשים או שאתה יכול "
|
| 565 |
+
"להיתקל בבעיות."
|
| 566 |
+
|
| 567 |
+
#: .././pages/options.php:373
|
| 568 |
+
msgid "Plugin Information"
|
| 569 |
+
msgstr "מידע Plugin"
|
| 570 |
+
|
| 571 |
+
#: .././pages/options.php:376
|
| 572 |
+
msgid "If you experience any issues with our plugin, please"
|
| 573 |
+
msgstr "אם אתם נתקלים בבעיות עם התוסף שלנו, אנא"
|
| 574 |
+
|
| 575 |
+
#: .././pages/options.php:376
|
| 576 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 577 |
+
msgstr "להגיש גיליון חדש בTracker גיליון Github"
|
| 578 |
+
|
| 579 |
+
#: .././pages/options.php:376
|
| 580 |
+
msgid ""
|
| 581 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 582 |
+
msgstr "אנא כלול את המידע שלהלן כדי לעזור לנו לפתור את הבעיה שלך."
|
| 583 |
+
|
| 584 |
+
#: .././pages/options.php:384
|
| 585 |
+
msgid "Plugin Version"
|
| 586 |
+
msgstr "גרסת תוסף"
|
| 587 |
+
|
| 588 |
+
#: .././pages/options.php:388
|
| 589 |
+
msgid "Wordpress Version"
|
| 590 |
+
msgstr "גרסת Wordpress"
|
| 591 |
+
|
| 592 |
+
#: .././pages/options.php:392
|
| 593 |
+
msgid "Browser Information"
|
| 594 |
+
msgstr "מידע דפדפן"
|
| 595 |
+
|
| 596 |
+
#: .././pages/options.php:420
|
| 597 |
+
msgid "Error"
|
| 598 |
+
msgstr "שגיאה"
|
| 599 |
+
|
| 600 |
+
#: .././pages/options.php:421
|
| 601 |
+
msgid ""
|
| 602 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 603 |
+
"cURL to send and retreive data."
|
| 604 |
+
msgstr ""
|
| 605 |
+
"אנו מצטערים, אבל הסלסול הוא זמין בשרת שלך. API MailChimp מנצל cURL לשלוח "
|
| 606 |
+
"ולאחזר את הנתונים."
|
| 607 |
+
|
| 608 |
+
#: .././pages/options.php:426
|
| 609 |
+
msgid "Help!"
|
| 610 |
+
msgstr "הצילו!"
|
| 611 |
+
|
| 612 |
+
#: .././pages/options.php:426
|
| 613 |
+
msgid "What is cURL?"
|
| 614 |
+
msgstr "מהו cURL?"
|
| 615 |
+
|
| 616 |
+
#: .././pages/options.php:426
|
| 617 |
+
msgid "Check phpinfo()"
|
| 618 |
+
msgstr "בדוק phpinfo ()"
|
| 619 |
+
|
| 620 |
+
#: .././pages/options.php:428
|
| 621 |
+
msgid "Steps To Resolve The Issue"
|
| 622 |
+
msgstr "צעדים כדי לפתור את הבעיה"
|
| 623 |
+
|
| 624 |
+
#: .././pages/options.php:430
|
| 625 |
+
msgid ""
|
| 626 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 627 |
+
msgstr "אתה יכול לאפשר cURL ידי הפעלת המודול cURL בתוך קובץ php.ini שלך"
|
| 628 |
+
|
| 629 |
+
#: .././pages/options.php:430
|
| 630 |
+
msgid "You should find the php.ini file located here : "
|
| 631 |
+
msgstr "אתה צריך למצוא את קובץ php.ini נמצא כאן: "
|
| 632 |
+
|
| 633 |
+
#: .././pages/options.php:431
|
| 634 |
+
msgid ""
|
| 635 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 636 |
+
msgstr ""
|
| 637 |
+
"מצא פעם אחת, לפתוח את php.ini ולאתר את השורה \"; סיומת = php_curl.dll\"."
|
| 638 |
+
|
| 639 |
+
#: .././pages/options.php:432
|
| 640 |
+
msgid ""
|
| 641 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 642 |
+
"active."
|
| 643 |
+
msgstr ""
|
| 644 |
+
"הסר את המעי הגס למחצה לפני הקו, כדי לבטל את התגובה ולהפוך את המודול פעיל."
|
| 645 |
+
|
| 646 |
+
#: .././pages/options.php:433
|
| 647 |
+
msgid "Re-save and close the file."
|
| 648 |
+
msgstr "מחדש לשמור ולסגור את התיק."
|
| 649 |
+
|
| 650 |
+
#: .././pages/options.php:434
|
| 651 |
+
msgid "Re-load this page."
|
| 652 |
+
msgstr "טעה מחדש של עמוד זה."
|
| 653 |
+
|
| 654 |
+
#: .././templates/shortcode_error.php:1
|
| 655 |
+
msgid "There was an error calling the mailchimp list."
|
| 656 |
+
msgstr "הייתה שגיאה בקריאה לרשימת MailChimp."
|
| 657 |
+
|
| 658 |
+
#: .././templates/shortcode_error_data.php:1
|
| 659 |
+
msgid ""
|
| 660 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 661 |
+
"List Forms\" page."
|
| 662 |
+
msgstr "הרשימה לא קיימת! ודא שייבאת הרשימה ב \"ניהול טפסי רשימת\" דף."
|
| 663 |
+
|
| 664 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 665 |
+
msgid "This list was already placed on this page!"
|
| 666 |
+
msgstr "רשימה זו כבר הונחה על דף זה!"
|
| 667 |
+
|
| 668 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 669 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 670 |
+
msgstr "Woops! אין מפתח API תקף נמצא. בדוק את ההגדרות שלך."
|
| 671 |
+
|
| 672 |
+
#: .././templates/shortcode_form.php:11
|
| 673 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 674 |
+
msgstr "אופס .. אל תשכח למלא את השדות הבאים"
|
| 675 |
+
|
| 676 |
+
#: .././templates/shortcode_form.php:74
|
| 677 |
+
msgid "required field"
|
| 678 |
+
msgstr "שדה נדרש"
|
| 679 |
+
|
| 680 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 681 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 682 |
+
msgid "MailChimp Signup Form"
|
| 683 |
+
msgstr "טופס הרשמה MailChimp"
|
| 684 |
+
|
| 685 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 686 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 687 |
+
msgstr "בחר באיזה צורה שאתה רוצה להציג:"
|
| 688 |
+
|
| 689 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 690 |
+
msgid "Select a Form to Display"
|
| 691 |
+
msgstr "בחר טופס להצגה"
|
| 692 |
+
|
| 693 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 694 |
+
msgid "Please import MailChimp forms"
|
| 695 |
+
msgstr "אנא לייבא צורות MailChimp"
|
| 696 |
+
|
| 697 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 698 |
+
msgid "Please import some lists from MailChimp"
|
| 699 |
+
msgstr "אנא לייבא כמה רשימות מMailChimp"
|
| 700 |
+
|
| 701 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 702 |
+
msgid "Import Lists Now"
|
| 703 |
+
msgstr "רשימות יבוא עכשיו"
|
| 704 |
+
|
| 705 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 706 |
+
msgid ""
|
| 707 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 708 |
+
"least one list to use the Easy MailChimp widget."
|
| 709 |
+
msgstr ""
|
| 710 |
+
"אופס! זה נראה כאילו אתה לא מיובא כל רשימות עדיין. עליך לייבא את הרשימה לפחות "
|
| 711 |
+
"אחד להשתמש ביישומון קל MailChimp."
|
| 712 |
+
|
| 713 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 714 |
+
msgid ""
|
| 715 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 716 |
+
"'Appearance > Widgets' and select a form to display."
|
| 717 |
+
msgstr ""
|
| 718 |
+
"אופס! זה נראה כאילו ששכחת לבחור צורה להציג כאן. עבור אל 'מראה> יישומונים' "
|
| 719 |
+
"ובחר צורה לתצוגה."
|
| 720 |
+
|
| 721 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 722 |
+
msgid "Sign Up For Our Newsletter"
|
| 723 |
+
msgstr "הירשם לניוזלטר שלנו"
|
| 724 |
+
|
| 725 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 726 |
+
msgid "Sign Me Up"
|
| 727 |
+
msgstr "רשום אותי"
|
| 728 |
+
|
| 729 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 730 |
+
msgid "Title:"
|
| 731 |
+
msgstr "נושא:"
|
| 732 |
+
|
| 733 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 734 |
+
msgid "Form Text:"
|
| 735 |
+
msgstr "טקסט טופס:"
|
| 736 |
+
|
| 737 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 738 |
+
msgid "Submit Button Text:"
|
| 739 |
+
msgstr "שלח טקסט לחצן:"
|
| 740 |
+
|
| 741 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 742 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 743 |
+
msgstr "אופס! זה נראה כאילו שיש לך לא הוסיף מפתח API שלך! מעל הראש"
|
| 744 |
+
|
| 745 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 746 |
+
msgid "Settings page"
|
| 747 |
+
msgstr "דף הגדרות"
|
| 748 |
+
|
| 749 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 750 |
+
#~ msgstr "אין מפתח API או קוד זיהוי רשימה קיים!"
|
languages/yikes-inc-easy-mailchimp-extender-hi_IN.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-hi_IN.po
ADDED
|
@@ -0,0 +1,757 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:34-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:50-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: hi_IN\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "सदस्यता लेने के लिए धन्यवाद!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr "सदस्यता लेने के लिए धन्यवाद! पुष्टिकरण संदेश के लिए अपने ईमेल की जाँच करें."
|
| 28 |
+
|
| 29 |
+
#: .././classes/class.yksemeBase.php:116
|
| 30 |
+
msgid "Select Your Area of Interest"
|
| 31 |
+
msgstr "ब्याज की अपने क्षेत्र का चयन करें"
|
| 32 |
+
|
| 33 |
+
#: .././classes/class.yksemeBase.php:917
|
| 34 |
+
msgid "Click on a subscriber to see further information"
|
| 35 |
+
msgstr "अधिक जानकारी के लिए देखने के लिए एक ग्राहक पर क्लिक करें"
|
| 36 |
+
|
| 37 |
+
#: .././classes/class.yksemeBase.php:920
|
| 38 |
+
msgid "E-Mail"
|
| 39 |
+
msgstr "ई-मेल "
|
| 40 |
+
|
| 41 |
+
#: .././classes/class.yksemeBase.php:921
|
| 42 |
+
msgid "Date Subscribed"
|
| 43 |
+
msgstr "तिथि सब्सक्राइब्ड"
|
| 44 |
+
|
| 45 |
+
#: .././classes/class.yksemeBase.php:941
|
| 46 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 47 |
+
msgstr "खेद है कि आपको इस समय इस सूची में किसी भी सदस्य नहीं है!"
|
| 48 |
+
|
| 49 |
+
#: .././classes/class.yksemeBase.php:998
|
| 50 |
+
msgid "Back to Subscriber List"
|
| 51 |
+
msgstr "वापस ग्राहकों की सूची परग्राहकों की संख्या"
|
| 52 |
+
|
| 53 |
+
#: .././classes/class.yksemeBase.php:999
|
| 54 |
+
msgid "Subscriber Details"
|
| 55 |
+
msgstr "सब्सक्राइबर विवरण"
|
| 56 |
+
|
| 57 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 58 |
+
msgid "Overview"
|
| 59 |
+
msgstr "अवलोकन"
|
| 60 |
+
|
| 61 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 62 |
+
msgid "First Name"
|
| 63 |
+
msgstr "प्रथम नाम"
|
| 64 |
+
|
| 65 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 66 |
+
msgid "Last Updated"
|
| 67 |
+
msgstr "अंतिम अद्यतन"
|
| 68 |
+
|
| 69 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 70 |
+
msgid "Preferred Email Type"
|
| 71 |
+
msgstr "पसंदीदा ईमेल के प्रकारपसंदीदा फार्म लेआउट"
|
| 72 |
+
|
| 73 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 74 |
+
msgid "Last Name"
|
| 75 |
+
msgstr "अंतिम नाम"
|
| 76 |
+
|
| 77 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 78 |
+
msgid "Language"
|
| 79 |
+
msgstr "भाषा"
|
| 80 |
+
|
| 81 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 82 |
+
msgid "Groups Subscribed To"
|
| 83 |
+
msgstr "करने के लिए सदस्यता समूहतिथि सब्सक्राइब्ड"
|
| 84 |
+
|
| 85 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 86 |
+
msgid "Subscriber Notes"
|
| 87 |
+
msgstr "सब्सक्राइबर नोट्स"
|
| 88 |
+
|
| 89 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 90 |
+
msgid "Written by"
|
| 91 |
+
msgstr "द्वारा लिखित"
|
| 92 |
+
|
| 93 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 94 |
+
msgid "Created on"
|
| 95 |
+
msgstr "बनाया गया"
|
| 96 |
+
|
| 97 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 98 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 99 |
+
msgid "MailChimp Forms"
|
| 100 |
+
msgstr "MailChimp फॉर्म्स"
|
| 101 |
+
|
| 102 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 103 |
+
msgid "MailChimp Settings"
|
| 104 |
+
msgstr "MailChimp सेटिंग्स"
|
| 105 |
+
|
| 106 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 107 |
+
msgid "Manage List Forms"
|
| 108 |
+
msgstr "सूची प्रपत्र प्रबंधन"
|
| 109 |
+
|
| 110 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 111 |
+
msgid "About YIKES, Inc."
|
| 112 |
+
msgstr "YIKES, Inc के बारे में"
|
| 113 |
+
|
| 114 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 115 |
+
msgid "One or more fields are empty"
|
| 116 |
+
msgstr "एक या अधिक फ़ील्ड्स खाली हैं"
|
| 117 |
+
|
| 118 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 119 |
+
msgid "Your List Was Successfully Saved!"
|
| 120 |
+
msgstr "आपकी सूची सफलतापूर्वक बचा लिया गया था!"
|
| 121 |
+
|
| 122 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 123 |
+
msgid "I'm sorry there was an error with your request."
|
| 124 |
+
msgstr "मुझे खेद है आपके अनुरोध के साथ एक त्रुटि हुई हूँ."
|
| 125 |
+
|
| 126 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 127 |
+
msgid "MailChimp List name"
|
| 128 |
+
msgstr "MailChimp सूची का नाम"
|
| 129 |
+
|
| 130 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 131 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 132 |
+
#, php-format
|
| 133 |
+
msgid "%1$s"
|
| 134 |
+
msgstr ""
|
| 135 |
+
|
| 136 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 137 |
+
msgid "MailChimp List ID"
|
| 138 |
+
msgstr "MailChimp सूची आईडी"
|
| 139 |
+
|
| 140 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 141 |
+
msgid "Shortcode"
|
| 142 |
+
msgstr "शॉर्टकोड"
|
| 143 |
+
|
| 144 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 145 |
+
msgid ""
|
| 146 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 147 |
+
msgstr "जो कुछ पन्ने में इस शोर्ट पेस्ट या आप इस फार्म को जोड़ना चाहते हैं पोस्ट"
|
| 148 |
+
|
| 149 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 150 |
+
msgid "PHP Snippet"
|
| 151 |
+
msgstr "PHP स्निपेट"
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 154 |
+
msgid "Use this code to add this form to a template file"
|
| 155 |
+
msgstr "एक टेम्पलेट फाइल करने के लिए इस प्रपत्र जोड़ने के लिए इस कोड का प्रयोग करें"
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 158 |
+
msgid "Number of Subscribers"
|
| 159 |
+
msgstr "ग्राहकों की संख्या"
|
| 160 |
+
|
| 161 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 162 |
+
msgid "Form Fields"
|
| 163 |
+
msgstr "प्रपत्र फ़ील्ड"
|
| 164 |
+
|
| 165 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 166 |
+
msgid ""
|
| 167 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 168 |
+
msgstr ""
|
| 169 |
+
"आप अपने प्रपत्र में शामिल करना चाहते क्षेत्रों की जाँच करें (ईमेल का पता) की आवश्यकता है."
|
| 170 |
+
|
| 171 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 172 |
+
msgid ""
|
| 173 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 174 |
+
msgstr ""
|
| 175 |
+
"खींचें और ड्रॉप क्षेत्रों और उनके क्रम को पुनर्व्यवस्थित करने के लिए हरी तीर का प्रयोग करें."
|
| 176 |
+
|
| 177 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 178 |
+
msgid "Active Fields"
|
| 179 |
+
msgstr "सक्रिय क्षेत्र"
|
| 180 |
+
|
| 181 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 182 |
+
msgid "Drag"
|
| 183 |
+
msgstr "लंगर "
|
| 184 |
+
|
| 185 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 186 |
+
msgid "drop"
|
| 187 |
+
msgstr "बूंद"
|
| 188 |
+
|
| 189 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 190 |
+
msgid "Merge field"
|
| 191 |
+
msgstr "क्षेत्र मर्ज"
|
| 192 |
+
|
| 193 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 194 |
+
msgid "Placeholder"
|
| 195 |
+
msgstr "प्लेसहोल्डर"
|
| 196 |
+
|
| 197 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 198 |
+
msgid "Redirect User On Submission"
|
| 199 |
+
msgstr "प्रस्तुत करने पर उपयोगकर्ता अनुप्रेषित"
|
| 200 |
+
|
| 201 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 202 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 203 |
+
msgstr ""
|
| 204 |
+
"एक पेज चुन सकते हैं या वे फार्म जमा करने के बाद उपयोगकर्ता को दिशानिर्देश देने में एक कस्टम "
|
| 205 |
+
"यूआरएल निर्धारित किया है."
|
| 206 |
+
|
| 207 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 208 |
+
msgid "Select A Post/Page"
|
| 209 |
+
msgstr "एक पोस्ट / पृष्ठ का चयन"
|
| 210 |
+
|
| 211 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 212 |
+
msgid "Save Form Settings"
|
| 213 |
+
msgstr "Mailchimp फार्म सेटिंग प्रबंधित करें"
|
| 214 |
+
|
| 215 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 216 |
+
msgid "Delete Form"
|
| 217 |
+
msgstr "प्रपत्र हटाएं"
|
| 218 |
+
|
| 219 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 220 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 221 |
+
msgstr "MailChimp से कुछ सूची आयात कृपया"
|
| 222 |
+
|
| 223 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 224 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 225 |
+
msgstr "MAILCHIMP की जगह इस पाठ न्यूजलेटर के लिए मुझे साइन अप"
|
| 226 |
+
|
| 227 |
+
#: .././pages/about.php:27
|
| 228 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 229 |
+
msgstr "YIKES, inc. वेब डिजाइन और विकास"
|
| 230 |
+
|
| 231 |
+
#: .././pages/about.php:29
|
| 232 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 233 |
+
msgstr "स्मार्ट, प्रभावी, खूबसूरती से डिजाइन वेब समाधान"
|
| 234 |
+
|
| 235 |
+
#: .././pages/about.php:32
|
| 236 |
+
msgid ""
|
| 237 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 238 |
+
"custom WordPress themes and plugins every day."
|
| 239 |
+
msgstr ""
|
| 240 |
+
"YIKES inc. हम हर दिन कस्टम WordPress विषयों और plugins का निर्माण जहां "
|
| 241 |
+
"फिलाडेल्फिया के Fishtown पड़ोस में स्थित है."
|
| 242 |
+
|
| 243 |
+
#: .././pages/about.php:36
|
| 244 |
+
msgid ""
|
| 245 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 246 |
+
"WordCamps"
|
| 247 |
+
msgstr ""
|
| 248 |
+
"Yikes, Inc. में हम वर्डप्रेस प्यार! सह मालिक, ट्रेसी लेवेस्क WordCamps में प्रस्तुत किया "
|
| 249 |
+
"गया है"
|
| 250 |
+
|
| 251 |
+
#: .././pages/about.php:36
|
| 252 |
+
msgid "and"
|
| 253 |
+
msgstr "और"
|
| 254 |
+
|
| 255 |
+
#: .././pages/about.php:36
|
| 256 |
+
msgid "She also teaches WordPress classes for"
|
| 257 |
+
msgstr "वह भी के लिए वर्डप्रेस वर्ग सिखाता है"
|
| 258 |
+
|
| 259 |
+
#: .././pages/about.php:40
|
| 260 |
+
msgid ""
|
| 261 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 262 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 263 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 264 |
+
"financially sustainable local economy. We even have a"
|
| 265 |
+
msgstr ""
|
| 266 |
+
"महान WordPress साइटों बनाने के अलावा हम भी स्थायी व्यवसाय आंदोलन के लिए प्रतिबद्ध हैं. "
|
| 267 |
+
"लोगों, ग्रह, लाभ और एक अधिक सामाजिक, पर्यावरण और आर्थिक रूप से स्थायी स्थानीय "
|
| 268 |
+
"अर्थव्यवस्था के निर्माण में मदद करने के लिए काम: हम ट्रिपल नीचे लाइन का निरीक्षण. हम भी "
|
| 269 |
+
"है एक"
|
| 270 |
+
|
| 271 |
+
#: .././pages/about.php:40
|
| 272 |
+
msgid "LEED Platinum office"
|
| 273 |
+
msgstr "LEED प्लेटिनम कार्यालय"
|
| 274 |
+
|
| 275 |
+
#: .././pages/about.php:44
|
| 276 |
+
msgid ""
|
| 277 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 278 |
+
"learn more about us, please visit"
|
| 279 |
+
msgstr ""
|
| 280 |
+
"आप वर्डप्रेस विकास, के लिए हमें काम पर रखने में रुचि रखते हैं या सिर्फ हमारे बारे में अधिक "
|
| 281 |
+
"जानकारी चाहते हैं, कृपया देखें"
|
| 282 |
+
|
| 283 |
+
#: .././pages/lists.php:8
|
| 284 |
+
msgid "No forms have been added yet."
|
| 285 |
+
msgstr "कोई रूपों अभी तक जोड़ा गया है."
|
| 286 |
+
|
| 287 |
+
#: .././pages/lists.php:39
|
| 288 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 289 |
+
msgstr "ओह .. आपके द्वारा दर्ज की सूची आईडी गलत प्रतीत होता है."
|
| 290 |
+
|
| 291 |
+
#: .././pages/lists.php:44
|
| 292 |
+
msgid "There was an error!"
|
| 293 |
+
msgstr "कोई त्रुटि हुई थी!"
|
| 294 |
+
|
| 295 |
+
#: .././pages/lists.php:135
|
| 296 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 297 |
+
msgstr "आप इसके लिए एक फार्म बनाने के क्रम में एक Mailchimp सूची का चयन करने की जरूरत है"
|
| 298 |
+
|
| 299 |
+
#: .././pages/lists.php:173
|
| 300 |
+
msgid "Are you sure you want to delete this form?"
|
| 301 |
+
msgstr "क्या आप इस फार्म को नष्ट करना चाहते हैं?"
|
| 302 |
+
|
| 303 |
+
#: .././pages/lists.php:206
|
| 304 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 305 |
+
msgstr "क्या आप MailChimp से अपने खेतों को फिर से आयात करना चाहते हैं?"
|
| 306 |
+
|
| 307 |
+
#: .././pages/lists.php:228
|
| 308 |
+
msgid "Looks like this form is already up to date!"
|
| 309 |
+
msgstr "इस फार्म की तारीख तक पहले से ही है लगता है!"
|
| 310 |
+
|
| 311 |
+
#: .././pages/lists.php:326
|
| 312 |
+
msgid "Are you sure you want to unsubscribe"
|
| 313 |
+
msgstr "क्या आप सदस्यता समाप्त करने के लिए चाहते हैं"
|
| 314 |
+
|
| 315 |
+
#: .././pages/lists.php:326
|
| 316 |
+
msgid "from this list?"
|
| 317 |
+
msgstr "इस सूची से?"
|
| 318 |
+
|
| 319 |
+
#: .././pages/lists.php:342
|
| 320 |
+
msgid "was successfully unsubscribed from this list."
|
| 321 |
+
msgstr "सफलतापूर्वक इस सूची से हट गया था."
|
| 322 |
+
|
| 323 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 324 |
+
#: .././pages/options.php:416
|
| 325 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 326 |
+
msgstr "Yikes, inc. द्वारा आसान Mailchimp फॉर्म्स"
|
| 327 |
+
|
| 328 |
+
#: .././pages/lists.php:454
|
| 329 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 330 |
+
msgstr "आप अपनी साइट के लिए MailChimp रूपों जोड़ने से पहले, आप की जरूरत"
|
| 331 |
+
|
| 332 |
+
#: .././pages/lists.php:454
|
| 333 |
+
msgid "go to the MailChimp Settings page"
|
| 334 |
+
msgstr "MailChimp सेटिंग्स पेज पर जाने"
|
| 335 |
+
|
| 336 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 337 |
+
msgid "and add your API Key."
|
| 338 |
+
msgstr "और अपने एपीआई कुंजी जोड़ें."
|
| 339 |
+
|
| 340 |
+
#: .././pages/lists.php:462
|
| 341 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 342 |
+
msgstr "आप अपनी सूची आयात और प्रबंधन के लिए एक वैध एपीआई कुंजी दर्ज करना होगा."
|
| 343 |
+
|
| 344 |
+
#: .././pages/lists.php:473
|
| 345 |
+
msgid "Your Lists"
|
| 346 |
+
msgstr "अपनी सूची"
|
| 347 |
+
|
| 348 |
+
#: .././pages/lists.php:483
|
| 349 |
+
msgid "Manage Forms"
|
| 350 |
+
msgstr "फार्म प्रबंधन"
|
| 351 |
+
|
| 352 |
+
#: .././pages/options.php:41
|
| 353 |
+
msgid "The options were saved successfully!"
|
| 354 |
+
msgstr "विकल्प सफलतापूर्वक बच गए!"
|
| 355 |
+
|
| 356 |
+
#: .././pages/options.php:44
|
| 357 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 358 |
+
msgstr "विकल्पों को बचाया नहीं जा सका (या आप उन्हें बदल नहीं किया था)."
|
| 359 |
+
|
| 360 |
+
#: .././pages/options.php:96
|
| 361 |
+
msgid "Valid API Key"
|
| 362 |
+
msgstr "मान्य एपीआई कुंजी"
|
| 363 |
+
|
| 364 |
+
#: .././pages/options.php:102
|
| 365 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 366 |
+
msgstr "क्षमा करें, यह एक अवैध MailChimp एपीआई कुंजी है."
|
| 367 |
+
|
| 368 |
+
#: .././pages/options.php:108
|
| 369 |
+
msgid ""
|
| 370 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 371 |
+
"further information."
|
| 372 |
+
msgstr ""
|
| 373 |
+
"क्षमा करें, यह एक अवैध MailChimp एपीआई कुंजी है. अधिक जानकारी के लिए सांत्वना की जांच "
|
| 374 |
+
"करें."
|
| 375 |
+
|
| 376 |
+
#: .././pages/options.php:117
|
| 377 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 378 |
+
msgstr "त्रुटि: एक वैध मेल चिम्प एपीआई कुंजी दर्ज करें."
|
| 379 |
+
|
| 380 |
+
#: .././pages/options.php:199
|
| 381 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 382 |
+
msgstr "Mailchimp फार्म सेटिंग प्रबंधित करें"
|
| 383 |
+
|
| 384 |
+
#: .././pages/options.php:205
|
| 385 |
+
msgid "WordPress Version Number Error"
|
| 386 |
+
msgstr "WordPress संस्करण"
|
| 387 |
+
|
| 388 |
+
#: .././pages/options.php:206
|
| 389 |
+
msgid ""
|
| 390 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 391 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 392 |
+
"and posts unless you update to 3.9 or later."
|
| 393 |
+
msgstr ""
|
| 394 |
+
"हमें खेद है, लेकिन यह अपने WordPress के पुराने संस्करण का उपयोग कर की तरह लग रहा है. आप "
|
| 395 |
+
"3.9 या बाद में करने के लिए नवीनीकृत नहीं पृष्ठों और पदों में रूपों डालने के लिए tinyMCE बटन "
|
| 396 |
+
"का उपयोग करने में सक्षम नहीं होगा."
|
| 397 |
+
|
| 398 |
+
#: .././pages/options.php:215
|
| 399 |
+
msgid "LocalHost Detected :"
|
| 400 |
+
msgstr "स्थानीय होस्ट पता लगाया गया:"
|
| 401 |
+
|
| 402 |
+
#: .././pages/options.php:216
|
| 403 |
+
msgid ""
|
| 404 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 405 |
+
msgstr "Yikes, inc. द्वारा आसान Mailchimp फॉर्म्स"
|
| 406 |
+
|
| 407 |
+
#: .././pages/options.php:217
|
| 408 |
+
msgid ""
|
| 409 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 410 |
+
msgstr "आप अपने एपीआई कुंजी को मान्य करने में असमर्थ हैं, और त्रुटि संदेश प्राप्त होता है"
|
| 411 |
+
|
| 412 |
+
#: .././pages/options.php:217
|
| 413 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 414 |
+
msgstr ""
|
| 415 |
+
"\"एसएसएल प्रमाणपत्र समस्या: स्थानीय जारीकर्ता प्रमाणपत्र प्राप्त करने में असमर्थ\" "
|
| 416 |
+
|
| 417 |
+
#: .././pages/options.php:217
|
| 418 |
+
msgid "follow the tutorial located "
|
| 419 |
+
msgstr "स्थित ट्यूटोरियल का पालन करें "
|
| 420 |
+
|
| 421 |
+
#: .././pages/options.php:230
|
| 422 |
+
msgid "Your Mailchimp API Key"
|
| 423 |
+
msgstr "आपकी Mailchimp एपीआई कुंजी"
|
| 424 |
+
|
| 425 |
+
#: .././pages/options.php:238
|
| 426 |
+
msgid ""
|
| 427 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 428 |
+
"site to communicate with your MailChimp account."
|
| 429 |
+
msgstr ""
|
| 430 |
+
"ऊपर अपने MailChimp एपीआई कुंजी दर्ज करें. एपीआई कुंजी अपने WordPress साइट आपके "
|
| 431 |
+
"MailChimp खाते के साथ संवाद करने की अनुमति देता है."
|
| 432 |
+
|
| 433 |
+
#: .././pages/options.php:239
|
| 434 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 435 |
+
msgstr "अधिक मदद के लिए, MailChimp समर्थन लेख पर जाएँ"
|
| 436 |
+
|
| 437 |
+
#: .././pages/options.php:239
|
| 438 |
+
msgid "Where can I find my API Key?"
|
| 439 |
+
msgstr "मैं कहां एपीआई कुंजी मिल सकती है?"
|
| 440 |
+
|
| 441 |
+
#: .././pages/options.php:244
|
| 442 |
+
msgid "Preferred Form Layout"
|
| 443 |
+
msgstr "पसंदीदा फार्म लेआउट"
|
| 444 |
+
|
| 445 |
+
#: .././pages/options.php:247
|
| 446 |
+
msgid "table"
|
| 447 |
+
msgstr "तालिका"
|
| 448 |
+
|
| 449 |
+
#: .././pages/options.php:248
|
| 450 |
+
msgid "div"
|
| 451 |
+
msgstr "div"
|
| 452 |
+
|
| 453 |
+
#: .././pages/options.php:256
|
| 454 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 455 |
+
msgstr "आप अपने रूपों एक मेज या div लेआउट का उपयोग करना चाहते हैं चुनें."
|
| 456 |
+
|
| 457 |
+
#: .././pages/options.php:261
|
| 458 |
+
msgid "Advanced Error Messaging"
|
| 459 |
+
msgstr "उन्नत त्रुटि संदेश"
|
| 460 |
+
|
| 461 |
+
#: .././pages/options.php:264
|
| 462 |
+
msgid "Disabled"
|
| 463 |
+
msgstr "अक्षम "
|
| 464 |
+
|
| 465 |
+
#: .././pages/options.php:265
|
| 466 |
+
msgid "Enabled"
|
| 467 |
+
msgstr "सक्रिय या सक्षम"
|
| 468 |
+
|
| 469 |
+
#: .././pages/options.php:273
|
| 470 |
+
msgid ""
|
| 471 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 472 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 473 |
+
"MailChimp is returning."
|
| 474 |
+
msgstr ""
|
| 475 |
+
"आप अपने रूपों MailChimp के लिए डेटा भेजने के साथ समस्या हो रही है सक्रिय करें. उन्नत त्रुटि "
|
| 476 |
+
"संदेश को सक्षम करने से आप MailChimp लौट रहा सटीक त्रुटि कोड दिखाई देगा."
|
| 477 |
+
|
| 478 |
+
#: .././pages/options.php:281
|
| 479 |
+
msgid "Single Opt-In"
|
| 480 |
+
msgstr "एकल ऑप्ट में"
|
| 481 |
+
|
| 482 |
+
#: .././pages/options.php:282
|
| 483 |
+
msgid "Double Opt-In"
|
| 484 |
+
msgstr "डबल ऑप्ट में"
|
| 485 |
+
|
| 486 |
+
#: .././pages/options.php:290
|
| 487 |
+
msgid ""
|
| 488 |
+
"A single opt-in will add the user to your list without any further "
|
| 489 |
+
"interaction."
|
| 490 |
+
msgstr ""
|
| 491 |
+
"एक एकल ऑप्ट में किसी भी आगे की बातचीत के बिना अपनी सूची में उपयोगकर्ता जोड़ना होगा."
|
| 492 |
+
|
| 493 |
+
#: .././pages/options.php:291
|
| 494 |
+
msgid ""
|
| 495 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 496 |
+
"subscription."
|
| 497 |
+
msgstr ""
|
| 498 |
+
"एक डबल ऑप्ट में अपनी सदस्यता की पुष्टि करने के लिए उन्हें पूछ उपयोगकर्ता के लिए एक ईमेल भेज "
|
| 499 |
+
"देंगे."
|
| 500 |
+
|
| 501 |
+
#: .././pages/options.php:292
|
| 502 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 503 |
+
msgstr "यह भी लोगों को टिप्पणी छोड़ने के लिए चुनते की सेटिंग हुक्म चलाना होगा."
|
| 504 |
+
|
| 505 |
+
#: .././pages/options.php:297
|
| 506 |
+
msgid "Custom Opt-In Message"
|
| 507 |
+
msgstr "कस्टम चुनते में संदेश"
|
| 508 |
+
|
| 509 |
+
#: .././pages/options.php:299
|
| 510 |
+
msgid "Double Opt-In Message"
|
| 511 |
+
msgstr "डबल ऑप्ट में संदेश"
|
| 512 |
+
|
| 513 |
+
#: .././pages/options.php:301
|
| 514 |
+
msgid "Single Opt-In Message"
|
| 515 |
+
msgstr "एकल ऑप्ट में संदेश"
|
| 516 |
+
|
| 517 |
+
#: .././pages/options.php:307
|
| 518 |
+
msgid "Interest Group Label"
|
| 519 |
+
msgstr "ब्याज समूह लेबल"
|
| 520 |
+
|
| 521 |
+
#: .././pages/options.php:316
|
| 522 |
+
msgid ""
|
| 523 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 524 |
+
"group names."
|
| 525 |
+
msgstr ""
|
| 526 |
+
"हित समूहों ऊपर प्रदर्शित करने के लिए पाठ. MailChimp रुचि समूह के नाम का उपयोग करने के "
|
| 527 |
+
"लिए खाली छोड़ दें."
|
| 528 |
+
|
| 529 |
+
#: .././pages/options.php:321
|
| 530 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 531 |
+
msgstr "प्रदर्शन टिप्पणी रूपों पर चेकबॉक्स में चुनते?"
|
| 532 |
+
|
| 533 |
+
#: .././pages/options.php:324
|
| 534 |
+
msgid "Hide"
|
| 535 |
+
msgstr "छिपाना"
|
| 536 |
+
|
| 537 |
+
#: .././pages/options.php:325
|
| 538 |
+
msgid "Show"
|
| 539 |
+
msgstr "दिखाना, दिखाएँ"
|
| 540 |
+
|
| 541 |
+
#: .././pages/options.php:333
|
| 542 |
+
msgid ""
|
| 543 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 544 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 545 |
+
"mailing list."
|
| 546 |
+
msgstr ""
|
| 547 |
+
"यह सिर्फ सभी टिप्पणी रूपों पर सबमिट बटन के ऊपर एक चेकबॉक्स प्रदर्शित करेगा. चयनित हैं, "
|
| 548 |
+
"टिप्पणी छोड़ने के लिए किसी भी उपयोगकर्ताओं को भी मेलिंग सूची में जोड़ दिया जाएगा."
|
| 549 |
+
|
| 550 |
+
#: .././pages/options.php:338
|
| 551 |
+
msgid "Custom Comment Checkbox Text"
|
| 552 |
+
msgstr "कस्टम टिप्पणी चेकबॉक्स पाठ"
|
| 553 |
+
|
| 554 |
+
#: .././pages/options.php:345
|
| 555 |
+
msgid "Default List"
|
| 556 |
+
msgstr "डिफ़ॉल्ट सूची"
|
| 557 |
+
|
| 558 |
+
#: .././pages/options.php:360
|
| 559 |
+
msgid ""
|
| 560 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 561 |
+
"comment."
|
| 562 |
+
msgstr ""
|
| 563 |
+
"यह डिफ़ॉल्ट सूची उपयोगकर्ताओं को एक टिप्पणी जमा करने के लिए जब सदस्यता हो जाएगा है."
|
| 564 |
+
|
| 565 |
+
#: .././pages/options.php:361
|
| 566 |
+
msgid ""
|
| 567 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 568 |
+
"name are required or you may run into issues."
|
| 569 |
+
msgstr ""
|
| 570 |
+
"यह ईमेल, पहला नाम और / या आखिरी नाम ही आवश्यक हैं या आप मुद्दों में चला सकते हैं, जहां एक "
|
| 571 |
+
"फार्म का चयन करने के लिए सबसे अच्छा है."
|
| 572 |
+
|
| 573 |
+
#: .././pages/options.php:373
|
| 574 |
+
msgid "Plugin Information"
|
| 575 |
+
msgstr "प्लगइन सूचना"
|
| 576 |
+
|
| 577 |
+
#: .././pages/options.php:376
|
| 578 |
+
msgid "If you experience any issues with our plugin, please"
|
| 579 |
+
msgstr "आप हमारे प्लगइन के साथ किसी भी मुद्दे का अनुभव करते हैं, तो कृपया"
|
| 580 |
+
|
| 581 |
+
#: .././pages/options.php:376
|
| 582 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 583 |
+
msgstr "हमारे Github अंक ट्रैकर पर एक नया मुद्दा प्रस्तुत"
|
| 584 |
+
|
| 585 |
+
#: .././pages/options.php:376
|
| 586 |
+
msgid ""
|
| 587 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 588 |
+
msgstr "हमें अपनी समस्या के निवारण में मदद करने के लिए नीचे दी गई जानकारी शामिल करें."
|
| 589 |
+
|
| 590 |
+
#: .././pages/options.php:384
|
| 591 |
+
msgid "Plugin Version"
|
| 592 |
+
msgstr "प्लगइन संस्करण"
|
| 593 |
+
|
| 594 |
+
#: .././pages/options.php:388
|
| 595 |
+
msgid "Wordpress Version"
|
| 596 |
+
msgstr "WordPress संस्करण"
|
| 597 |
+
|
| 598 |
+
#: .././pages/options.php:392
|
| 599 |
+
msgid "Browser Information"
|
| 600 |
+
msgstr "ब्राउज़र जानकारी"
|
| 601 |
+
|
| 602 |
+
#: .././pages/options.php:420
|
| 603 |
+
msgid "Error"
|
| 604 |
+
msgstr "त्रुटि "
|
| 605 |
+
|
| 606 |
+
#: .././pages/options.php:421
|
| 607 |
+
msgid ""
|
| 608 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 609 |
+
"cURL to send and retreive data."
|
| 610 |
+
msgstr ""
|
| 611 |
+
"हमें खेद है, लेकिन कर्ल अपने सर्वर पर अक्षम है. MailChimp एपीआई डेटा भेजने और पुर्नप्राप्त "
|
| 612 |
+
"करने के लिए कर्ल का उपयोग."
|
| 613 |
+
|
| 614 |
+
#: .././pages/options.php:426
|
| 615 |
+
msgid "Help!"
|
| 616 |
+
msgstr "मदद!"
|
| 617 |
+
|
| 618 |
+
#: .././pages/options.php:426
|
| 619 |
+
msgid "What is cURL?"
|
| 620 |
+
msgstr "कर्ल क्या है?"
|
| 621 |
+
|
| 622 |
+
#: .././pages/options.php:426
|
| 623 |
+
msgid "Check phpinfo()"
|
| 624 |
+
msgstr "Phpinfo जाँच ()"
|
| 625 |
+
|
| 626 |
+
#: .././pages/options.php:428
|
| 627 |
+
msgid "Steps To Resolve The Issue"
|
| 628 |
+
msgstr "समस्या को हल करने के लिए कदम"
|
| 629 |
+
|
| 630 |
+
#: .././pages/options.php:430
|
| 631 |
+
msgid ""
|
| 632 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 633 |
+
msgstr "आप अपने php.ini फ़ाइल के भीतर कर्ल मॉड्यूल पर बदल कर कर्ल सक्षम कर सकते हैं"
|
| 634 |
+
|
| 635 |
+
#: .././pages/options.php:430
|
| 636 |
+
msgid "You should find the php.ini file located here : "
|
| 637 |
+
msgstr "आप यहाँ स्थित php.ini फ़ाइल का पता लगाना चाहिए: "
|
| 638 |
+
|
| 639 |
+
#: .././pages/options.php:431
|
| 640 |
+
msgid ""
|
| 641 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 642 |
+
msgstr ""
|
| 643 |
+
"एक बार मिला, php.ini खोलने के लिए और लाइन ढूँढ \"; विस्तार = php_curl.dll\"."
|
| 644 |
+
|
| 645 |
+
#: .././pages/options.php:432
|
| 646 |
+
msgid ""
|
| 647 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 648 |
+
"active."
|
| 649 |
+
msgstr ""
|
| 650 |
+
", लाइन से पहले अर्द्ध बृहदान्त्र हटाने के लिए संयुक्त राष्ट्र टिप्पणी और मॉड्यूल सक्रिय बनाना."
|
| 651 |
+
|
| 652 |
+
#: .././pages/options.php:433
|
| 653 |
+
msgid "Re-save and close the file."
|
| 654 |
+
msgstr "फिर से बचाने के लिए और फ़ाइल को बंद करें."
|
| 655 |
+
|
| 656 |
+
#: .././pages/options.php:434
|
| 657 |
+
msgid "Re-load this page."
|
| 658 |
+
msgstr "इस पृष्ठ पुनः लोड."
|
| 659 |
+
|
| 660 |
+
#: .././templates/shortcode_error.php:1
|
| 661 |
+
msgid "There was an error calling the mailchimp list."
|
| 662 |
+
msgstr "Mailchimp सूची बुला कोई त्रुटि हुई थी."
|
| 663 |
+
|
| 664 |
+
#: .././templates/shortcode_error_data.php:1
|
| 665 |
+
msgid ""
|
| 666 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 667 |
+
"List Forms\" page."
|
| 668 |
+
msgstr ""
|
| 669 |
+
"सूची मौजूद नहीं है! आप \"सूची प्रपत्र प्रबंधन \" पृष्ठ पर सूची का आयात किया है सुनिश्चित करें."
|
| 670 |
+
|
| 671 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 672 |
+
msgid "This list was already placed on this page!"
|
| 673 |
+
msgstr "इस सूची में पहले से ही इस पेज पर रखा गया था!"
|
| 674 |
+
|
| 675 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 676 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 677 |
+
msgstr "Woops! नहीं मिला मान्य एपीआई कुंजी. डबल अपनी सेटिंग्स की जाँच करें."
|
| 678 |
+
|
| 679 |
+
#: .././templates/shortcode_form.php:11
|
| 680 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 681 |
+
msgstr "ओह .. भरने में करने के लिए निम्नलिखित क्षेत्रों के लिए मत भूलना"
|
| 682 |
+
|
| 683 |
+
#: .././templates/shortcode_form.php:74
|
| 684 |
+
msgid "required field"
|
| 685 |
+
msgstr "आवश्यक फ़ील्ड"
|
| 686 |
+
|
| 687 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 688 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 689 |
+
msgid "MailChimp Signup Form"
|
| 690 |
+
msgstr "MailChimp पंजीकरण फार्म"
|
| 691 |
+
|
| 692 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 693 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 694 |
+
msgstr "आप प्रदर्शित करना चाहते हैं जो फार्म का चयन करें:"
|
| 695 |
+
|
| 696 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 697 |
+
msgid "Select a Form to Display"
|
| 698 |
+
msgstr "प्रदर्शित करने के लिए प्रपत्र का चयन"
|
| 699 |
+
|
| 700 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 701 |
+
msgid "Please import MailChimp forms"
|
| 702 |
+
msgstr "MailChimp रूपों आयात कृपया"
|
| 703 |
+
|
| 704 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 705 |
+
msgid "Please import some lists from MailChimp"
|
| 706 |
+
msgstr "MailChimp से कुछ सूची आयात कृपया"
|
| 707 |
+
|
| 708 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 709 |
+
msgid "Import Lists Now"
|
| 710 |
+
msgstr "अब आयात सूचियां"
|
| 711 |
+
|
| 712 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 713 |
+
msgid ""
|
| 714 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 715 |
+
"least one list to use the Easy MailChimp widget."
|
| 716 |
+
msgstr ""
|
| 717 |
+
"उफ़! आप अभी तक किसी भी सूचियों का आयात नहीं किया है ऐसा लगता है. आप आसानी से "
|
| 718 |
+
"MailChimp विजेट का उपयोग करने के लिए कम से कम एक सूची आयात करना होगा."
|
| 719 |
+
|
| 720 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 721 |
+
msgid ""
|
| 722 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 723 |
+
"'Appearance > Widgets' and select a form to display."
|
| 724 |
+
msgstr ""
|
| 725 |
+
"उफ़! आप यहां प्रदर्शित करने के लिए एक फार्म का चयन करने के लिए भूल ऐसा लगता है. "
|
| 726 |
+
"'उपस्थिति> विजेट' जाओ और प्रदर्शित करने के लिए एक फार्म का चयन करें."
|
| 727 |
+
|
| 728 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 729 |
+
msgid "Sign Up For Our Newsletter"
|
| 730 |
+
msgstr "हमारे न्यूज़लेटर के लिए साइन"
|
| 731 |
+
|
| 732 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 733 |
+
msgid "Sign Me Up"
|
| 734 |
+
msgstr "मुझे साइन अप"
|
| 735 |
+
|
| 736 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 737 |
+
msgid "Title:"
|
| 738 |
+
msgstr "शीर्षक:"
|
| 739 |
+
|
| 740 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 741 |
+
msgid "Form Text:"
|
| 742 |
+
msgstr "फार्म पाठ:"
|
| 743 |
+
|
| 744 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 745 |
+
msgid "Submit Button Text:"
|
| 746 |
+
msgstr "बटन पाठ सबमिट करें:"
|
| 747 |
+
|
| 748 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 749 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 750 |
+
msgstr "उफ़! आप अपने एपीआई कुंजी नहीं जोड़ा है, ऐसा लगता है! सिर पर"
|
| 751 |
+
|
| 752 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 753 |
+
msgid "Settings page"
|
| 754 |
+
msgstr "सेटिंग पेज"
|
| 755 |
+
|
| 756 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 757 |
+
#~ msgstr "कोई एपीआई कुंजी या सूची ईद मौजूद हैं!"
|
languages/yikes-inc-easy-mailchimp-extender-it_IT.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-it_IT.po
ADDED
|
@@ -0,0 +1,788 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:36-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:50-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: it\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "Grazie per la sottoscrizione!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
"Grazie per la sottoscrizione! Controlla la tua e-mail per il messaggio di "
|
| 29 |
+
"conferma."
|
| 30 |
+
|
| 31 |
+
#: .././classes/class.yksemeBase.php:116
|
| 32 |
+
msgid "Select Your Area of Interest"
|
| 33 |
+
msgstr "Seleziona l'area di interesse"
|
| 34 |
+
|
| 35 |
+
#: .././classes/class.yksemeBase.php:917
|
| 36 |
+
msgid "Click on a subscriber to see further information"
|
| 37 |
+
msgstr "Fare clic su un abbonato per vedere ulteriori informazioni"
|
| 38 |
+
|
| 39 |
+
#: .././classes/class.yksemeBase.php:920
|
| 40 |
+
msgid "E-Mail"
|
| 41 |
+
msgstr "E-Mail"
|
| 42 |
+
|
| 43 |
+
#: .././classes/class.yksemeBase.php:921
|
| 44 |
+
msgid "Date Subscribed"
|
| 45 |
+
msgstr "Data sottoscritto"
|
| 46 |
+
|
| 47 |
+
#: .././classes/class.yksemeBase.php:941
|
| 48 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 49 |
+
msgstr "Siamo spiacenti Non Sei attualmente di abbonati in questa lista!"
|
| 50 |
+
|
| 51 |
+
#: .././classes/class.yksemeBase.php:998
|
| 52 |
+
msgid "Back to Subscriber List"
|
| 53 |
+
msgstr "Torna a elenco di abbonati"
|
| 54 |
+
|
| 55 |
+
#: .././classes/class.yksemeBase.php:999
|
| 56 |
+
msgid "Subscriber Details"
|
| 57 |
+
msgstr "Subscriber Dettagli"
|
| 58 |
+
|
| 59 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 60 |
+
msgid "Overview"
|
| 61 |
+
msgstr "Panoramica"
|
| 62 |
+
|
| 63 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 64 |
+
msgid "First Name"
|
| 65 |
+
msgstr "Nome"
|
| 66 |
+
|
| 67 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 68 |
+
msgid "Last Updated"
|
| 69 |
+
msgstr "Ultimo aggiornamento"
|
| 70 |
+
|
| 71 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 72 |
+
msgid "Preferred Email Type"
|
| 73 |
+
msgstr "Preferred Type-mail"
|
| 74 |
+
|
| 75 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 76 |
+
msgid "Last Name"
|
| 77 |
+
msgstr "Cognome"
|
| 78 |
+
|
| 79 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 80 |
+
msgid "Language"
|
| 81 |
+
msgstr "Lingua"
|
| 82 |
+
|
| 83 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 84 |
+
msgid "Groups Subscribed To"
|
| 85 |
+
msgstr "Gruppi sottoscritto"
|
| 86 |
+
|
| 87 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 88 |
+
msgid "Subscriber Notes"
|
| 89 |
+
msgstr "Subscriber Note"
|
| 90 |
+
|
| 91 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 92 |
+
msgid "Written by"
|
| 93 |
+
msgstr "scritto da"
|
| 94 |
+
|
| 95 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 96 |
+
msgid "Created on"
|
| 97 |
+
msgstr "creato il"
|
| 98 |
+
|
| 99 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 100 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 101 |
+
msgid "MailChimp Forms"
|
| 102 |
+
msgstr "Moduli di MailChimp"
|
| 103 |
+
|
| 104 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 105 |
+
msgid "MailChimp Settings"
|
| 106 |
+
msgstr "Impostazioni MailChimp"
|
| 107 |
+
|
| 108 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 109 |
+
msgid "Manage List Forms"
|
| 110 |
+
msgstr "Gestire moduli elenco"
|
| 111 |
+
|
| 112 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 113 |
+
msgid "About YIKES, Inc."
|
| 114 |
+
msgstr "Chi YIKES, Inc."
|
| 115 |
+
|
| 116 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 117 |
+
msgid "One or more fields are empty"
|
| 118 |
+
msgstr "Uno o più campi sono vuoti"
|
| 119 |
+
|
| 120 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 121 |
+
msgid "Your List Was Successfully Saved!"
|
| 122 |
+
msgstr "Il tuo elenco è stato salvato con successo!"
|
| 123 |
+
|
| 124 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 125 |
+
msgid "I'm sorry there was an error with your request."
|
| 126 |
+
msgstr "Mi dispiace che c'è stato un errore con la vostra richiesta."
|
| 127 |
+
|
| 128 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 129 |
+
msgid "MailChimp List name"
|
| 130 |
+
msgstr "Nome elenco MailChimp"
|
| 131 |
+
|
| 132 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 133 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 134 |
+
#, php-format
|
| 135 |
+
msgid "%1$s"
|
| 136 |
+
msgstr "%1$s"
|
| 137 |
+
|
| 138 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 139 |
+
msgid "MailChimp List ID"
|
| 140 |
+
msgstr "MailChimp List ID"
|
| 141 |
+
|
| 142 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 143 |
+
msgid "Shortcode"
|
| 144 |
+
msgstr "Shortcode"
|
| 145 |
+
|
| 146 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 147 |
+
msgid ""
|
| 148 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 149 |
+
msgstr ""
|
| 150 |
+
"Incolla questo shortcode in qualunque pagina o post che si desidera "
|
| 151 |
+
"aggiungere questo modulo per"
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 154 |
+
msgid "PHP Snippet"
|
| 155 |
+
msgstr "PHP Snippet"
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 158 |
+
msgid "Use this code to add this form to a template file"
|
| 159 |
+
msgstr ""
|
| 160 |
+
"Utilizzare questo codice per aggiungere questo modulo in un file di modello"
|
| 161 |
+
|
| 162 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 163 |
+
msgid "Number of Subscribers"
|
| 164 |
+
msgstr "Numero di abbonati"
|
| 165 |
+
|
| 166 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 167 |
+
msgid "Form Fields"
|
| 168 |
+
msgstr "Campi Form"
|
| 169 |
+
|
| 170 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 171 |
+
msgid ""
|
| 172 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 173 |
+
msgstr ""
|
| 174 |
+
"Controllare i campi che si desidera includere nel modulo (indirizzo e-mail è "
|
| 175 |
+
"obbligatorio)."
|
| 176 |
+
|
| 177 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 178 |
+
msgid ""
|
| 179 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 180 |
+
msgstr ""
|
| 181 |
+
"Utilizzare le frecce verdi per trascinare e rilasciare i campi e "
|
| 182 |
+
"riorganizzare il loro ordine."
|
| 183 |
+
|
| 184 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 185 |
+
msgid "Active Fields"
|
| 186 |
+
msgstr "Campi attivi"
|
| 187 |
+
|
| 188 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 189 |
+
msgid "Drag"
|
| 190 |
+
msgstr "Trascinate"
|
| 191 |
+
|
| 192 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 193 |
+
msgid "drop"
|
| 194 |
+
msgstr "cadere"
|
| 195 |
+
|
| 196 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 197 |
+
msgid "Merge field"
|
| 198 |
+
msgstr "Campo unione"
|
| 199 |
+
|
| 200 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 201 |
+
msgid "Placeholder"
|
| 202 |
+
msgstr "Segnaposto"
|
| 203 |
+
|
| 204 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 205 |
+
msgid "Redirect User On Submission"
|
| 206 |
+
msgstr "Redirect utente su presentazione"
|
| 207 |
+
|
| 208 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 209 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 210 |
+
msgstr ""
|
| 211 |
+
"scegliere una pagina o impostare un URL personalizzato per reindirizzare "
|
| 212 |
+
"l'utente a dopo della presentazione del modulo."
|
| 213 |
+
|
| 214 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 215 |
+
msgid "Select A Post/Page"
|
| 216 |
+
msgstr "Selezionare A Articolo / Pagina"
|
| 217 |
+
|
| 218 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 219 |
+
msgid "Save Form Settings"
|
| 220 |
+
msgstr "Gestisci impostazioni Forms Mailchimp"
|
| 221 |
+
|
| 222 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 223 |
+
msgid "Delete Form"
|
| 224 |
+
msgstr "Elimina Form"
|
| 225 |
+
|
| 226 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 227 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 228 |
+
msgstr "Si prega di importare alcune liste da MailChimp"
|
| 229 |
+
|
| 230 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 231 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 232 |
+
msgstr "Sign Me Up For Newsletter di Mailchimp-REPLACE-QUESTO-TEXT"
|
| 233 |
+
|
| 234 |
+
#: .././pages/about.php:27
|
| 235 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 236 |
+
msgstr "YIKES, Inc. Web Design e Sviluppo"
|
| 237 |
+
|
| 238 |
+
#: .././pages/about.php:29
|
| 239 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 240 |
+
msgstr "Intelligenti, efficaci, soluzioni web dal design accattivante"
|
| 241 |
+
|
| 242 |
+
#: .././pages/about.php:32
|
| 243 |
+
msgid ""
|
| 244 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 245 |
+
"custom WordPress themes and plugins every day."
|
| 246 |
+
msgstr ""
|
| 247 |
+
"YIKES si trova nel quartiere Fishtown di Filadelfia, dove si costruisce su "
|
| 248 |
+
"misura temi WordPress e plugin ogni giorno."
|
| 249 |
+
|
| 250 |
+
#: .././pages/about.php:36
|
| 251 |
+
msgid ""
|
| 252 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 253 |
+
"WordCamps"
|
| 254 |
+
msgstr ""
|
| 255 |
+
"A YIKES amiamo WordPress! Co-Owner, Tracy Levesque ha presentato al WordCamps"
|
| 256 |
+
|
| 257 |
+
#: .././pages/about.php:36
|
| 258 |
+
msgid "and"
|
| 259 |
+
msgstr "e"
|
| 260 |
+
|
| 261 |
+
#: .././pages/about.php:36
|
| 262 |
+
msgid "She also teaches WordPress classes for"
|
| 263 |
+
msgstr "Insegna anche corsi per WordPress"
|
| 264 |
+
|
| 265 |
+
#: .././pages/about.php:40
|
| 266 |
+
msgid ""
|
| 267 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 268 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 269 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 270 |
+
"financially sustainable local economy. We even have a"
|
| 271 |
+
msgstr ""
|
| 272 |
+
"Oltre a rendere grandi siti WordPress siamo anche impegnati al movimento "
|
| 273 |
+
"business sostenibile. Osserviamo la triple bottom line: persone, pianeta, "
|
| 274 |
+
"profitto e lavoro per contribuire a costruire un'economia locale più "
|
| 275 |
+
"socialmente, ambientalmente e finanziariamente sostenibile. Abbiamo anche un"
|
| 276 |
+
|
| 277 |
+
#: .././pages/about.php:40
|
| 278 |
+
msgid "LEED Platinum office"
|
| 279 |
+
msgstr "Ufficio LEED Platinum"
|
| 280 |
+
|
| 281 |
+
#: .././pages/about.php:44
|
| 282 |
+
msgid ""
|
| 283 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 284 |
+
"learn more about us, please visit"
|
| 285 |
+
msgstr ""
|
| 286 |
+
"Se siete interessati a noi assumere per lo sviluppo di WordPress, o "
|
| 287 |
+
"semplicemente volete saperne di più su di noi, si prega di visitare il sito"
|
| 288 |
+
|
| 289 |
+
#: .././pages/lists.php:8
|
| 290 |
+
msgid "No forms have been added yet."
|
| 291 |
+
msgstr "Sono ancora state aggiunte delle forme."
|
| 292 |
+
|
| 293 |
+
#: .././pages/lists.php:39
|
| 294 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 295 |
+
msgstr "Oops .. L'ID dell'elenco immesso sembra essere corretto."
|
| 296 |
+
|
| 297 |
+
#: .././pages/lists.php:44
|
| 298 |
+
msgid "There was an error!"
|
| 299 |
+
msgstr "Si è verificato un errore!"
|
| 300 |
+
|
| 301 |
+
#: .././pages/lists.php:135
|
| 302 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 303 |
+
msgstr ""
|
| 304 |
+
"È necessario selezionare un elenco Mailchimp al fine di creare un modulo per "
|
| 305 |
+
"esso"
|
| 306 |
+
|
| 307 |
+
#: .././pages/lists.php:173
|
| 308 |
+
msgid "Are you sure you want to delete this form?"
|
| 309 |
+
msgstr "Sei sicuro di voler eliminare questo modulo?"
|
| 310 |
+
|
| 311 |
+
#: .././pages/lists.php:206
|
| 312 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 313 |
+
msgstr "Sei sicuro di voler re-importare i campi da MailChimp?"
|
| 314 |
+
|
| 315 |
+
#: .././pages/lists.php:228
|
| 316 |
+
msgid "Looks like this form is already up to date!"
|
| 317 |
+
msgstr "Sembra che questa forma è già aggiornato!"
|
| 318 |
+
|
| 319 |
+
#: .././pages/lists.php:326
|
| 320 |
+
msgid "Are you sure you want to unsubscribe"
|
| 321 |
+
msgstr "Sei sicuro di voler annullare l'iscrizione"
|
| 322 |
+
|
| 323 |
+
#: .././pages/lists.php:326
|
| 324 |
+
msgid "from this list?"
|
| 325 |
+
msgstr "da questo elenco?"
|
| 326 |
+
|
| 327 |
+
#: .././pages/lists.php:342
|
| 328 |
+
msgid "was successfully unsubscribed from this list."
|
| 329 |
+
msgstr "è stato annullato l'iscrizione con successo da questo elenco."
|
| 330 |
+
|
| 331 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 332 |
+
#: .././pages/options.php:416
|
| 333 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 334 |
+
msgstr "Facile Mailchimp Forme di YIKES, Inc."
|
| 335 |
+
|
| 336 |
+
#: .././pages/lists.php:454
|
| 337 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 338 |
+
msgstr "Prima di aggiungere moduli MailChimp al tuo sito, è necessario"
|
| 339 |
+
|
| 340 |
+
#: .././pages/lists.php:454
|
| 341 |
+
msgid "go to the MailChimp Settings page"
|
| 342 |
+
msgstr "vai alla pagina Impostazioni MailChimp"
|
| 343 |
+
|
| 344 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 345 |
+
msgid "and add your API Key."
|
| 346 |
+
msgstr "e aggiungere la chiave API."
|
| 347 |
+
|
| 348 |
+
#: .././pages/lists.php:462
|
| 349 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 350 |
+
msgstr ""
|
| 351 |
+
"È necessario inserire una chiave API valida per importare e gestire le "
|
| 352 |
+
"vostre liste."
|
| 353 |
+
|
| 354 |
+
#: .././pages/lists.php:473
|
| 355 |
+
msgid "Your Lists"
|
| 356 |
+
msgstr "I vostri elenchi"
|
| 357 |
+
|
| 358 |
+
#: .././pages/lists.php:483
|
| 359 |
+
msgid "Manage Forms"
|
| 360 |
+
msgstr "Gestione moduli"
|
| 361 |
+
|
| 362 |
+
#: .././pages/options.php:41
|
| 363 |
+
msgid "The options were saved successfully!"
|
| 364 |
+
msgstr "Le opzioni sono state salvate con successo!"
|
| 365 |
+
|
| 366 |
+
#: .././pages/options.php:44
|
| 367 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 368 |
+
msgstr ""
|
| 369 |
+
"Le opzioni non potevano essere salvate (o non è stato modificato loro)."
|
| 370 |
+
|
| 371 |
+
#: .././pages/options.php:96
|
| 372 |
+
msgid "Valid API Key"
|
| 373 |
+
msgstr "Valido API Key"
|
| 374 |
+
|
| 375 |
+
#: .././pages/options.php:102
|
| 376 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 377 |
+
msgstr "Siamo spiacenti, questo è un valido chiave API MailChimp."
|
| 378 |
+
|
| 379 |
+
#: .././pages/options.php:108
|
| 380 |
+
msgid ""
|
| 381 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 382 |
+
"further information."
|
| 383 |
+
msgstr ""
|
| 384 |
+
"Siamo spiacenti, questo è un valido chiave API MailChimp. Si prega di "
|
| 385 |
+
"controllare la console per ulteriori informazioni."
|
| 386 |
+
|
| 387 |
+
#: .././pages/options.php:117
|
| 388 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 389 |
+
msgstr "Errore: Si prega di inserire un indirizzo di posta Chimp API Key."
|
| 390 |
+
|
| 391 |
+
#: .././pages/options.php:199
|
| 392 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 393 |
+
msgstr "Gestisci impostazioni Forms Mailchimp"
|
| 394 |
+
|
| 395 |
+
#: .././pages/options.php:205
|
| 396 |
+
msgid "WordPress Version Number Error"
|
| 397 |
+
msgstr "Wordpress Version"
|
| 398 |
+
|
| 399 |
+
#: .././pages/options.php:206
|
| 400 |
+
msgid ""
|
| 401 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 402 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 403 |
+
"and posts unless you update to 3.9 or later."
|
| 404 |
+
msgstr ""
|
| 405 |
+
"Siamo spiacenti, ma sembra che la vostra utilizzando una versione non "
|
| 406 |
+
"aggiornata di WordPress. Non sarà in grado di accedere al pulsante TinyMCE "
|
| 407 |
+
"per inserire moduli in pagine e post a meno che non si aggiorna alla 3.9 o "
|
| 408 |
+
"successiva."
|
| 409 |
+
|
| 410 |
+
#: .././pages/options.php:215
|
| 411 |
+
msgid "LocalHost Detected :"
|
| 412 |
+
msgstr "LocalHost rilevato:"
|
| 413 |
+
|
| 414 |
+
#: .././pages/options.php:216
|
| 415 |
+
msgid ""
|
| 416 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 417 |
+
msgstr "Facile Mailchimp Forme di YIKES, Inc."
|
| 418 |
+
|
| 419 |
+
#: .././pages/options.php:217
|
| 420 |
+
msgid ""
|
| 421 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 422 |
+
msgstr ""
|
| 423 |
+
"Se siete in grado di convalidare la chiave API, e si riceve il messaggio di "
|
| 424 |
+
"errore"
|
| 425 |
+
|
| 426 |
+
#: .././pages/options.php:217
|
| 427 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 428 |
+
msgstr ""
|
| 429 |
+
"\"Problema di certificato SSL: riesce a liberarsi locale certificato "
|
| 430 |
+
"emittente\" "
|
| 431 |
+
|
| 432 |
+
#: .././pages/options.php:217
|
| 433 |
+
msgid "follow the tutorial located "
|
| 434 |
+
msgstr "seguire il tutorial si trova "
|
| 435 |
+
|
| 436 |
+
#: .././pages/options.php:230
|
| 437 |
+
msgid "Your Mailchimp API Key"
|
| 438 |
+
msgstr "Il tuo Mailchimp API Key"
|
| 439 |
+
|
| 440 |
+
#: .././pages/options.php:238
|
| 441 |
+
msgid ""
|
| 442 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 443 |
+
"site to communicate with your MailChimp account."
|
| 444 |
+
msgstr ""
|
| 445 |
+
"Inserisci il tuo API Key MailChimp sopra. L'API Key permette al vostro sito "
|
| 446 |
+
"WordPress per comunicare con il tuo account MailChimp."
|
| 447 |
+
|
| 448 |
+
#: .././pages/options.php:239
|
| 449 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 450 |
+
msgstr "Per ulteriori informazioni, visitare l'articolo MailChimp Support"
|
| 451 |
+
|
| 452 |
+
#: .././pages/options.php:239
|
| 453 |
+
msgid "Where can I find my API Key?"
|
| 454 |
+
msgstr "Dove posso trovare il mio API Key?"
|
| 455 |
+
|
| 456 |
+
#: .././pages/options.php:244
|
| 457 |
+
msgid "Preferred Form Layout"
|
| 458 |
+
msgstr "Preferred Disposizione form"
|
| 459 |
+
|
| 460 |
+
#: .././pages/options.php:247
|
| 461 |
+
msgid "table"
|
| 462 |
+
msgstr "tavolo"
|
| 463 |
+
|
| 464 |
+
#: .././pages/options.php:248
|
| 465 |
+
msgid "div"
|
| 466 |
+
msgstr "div"
|
| 467 |
+
|
| 468 |
+
#: .././pages/options.php:256
|
| 469 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 470 |
+
msgstr ""
|
| 471 |
+
"Scegliere se si desidera che i moduli di utilizzare una tabella o un layout "
|
| 472 |
+
"div."
|
| 473 |
+
|
| 474 |
+
#: .././pages/options.php:261
|
| 475 |
+
msgid "Advanced Error Messaging"
|
| 476 |
+
msgstr "Errore Advanced Messaging"
|
| 477 |
+
|
| 478 |
+
#: .././pages/options.php:264
|
| 479 |
+
msgid "Disabled"
|
| 480 |
+
msgstr "Disabilitato"
|
| 481 |
+
|
| 482 |
+
#: .././pages/options.php:265
|
| 483 |
+
msgid "Enabled"
|
| 484 |
+
msgstr "Abilitato"
|
| 485 |
+
|
| 486 |
+
#: .././pages/options.php:273
|
| 487 |
+
msgid ""
|
| 488 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 489 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 490 |
+
"MailChimp is returning."
|
| 491 |
+
msgstr ""
|
| 492 |
+
"Attiva se avete problemi con i vostri moduli invio di dati a MailChimp. "
|
| 493 |
+
"Abilitazione Messaging Advanced Error vi mostrerà i codici di errore esatto "
|
| 494 |
+
"MailChimp sta tornando."
|
| 495 |
+
|
| 496 |
+
#: .././pages/options.php:281
|
| 497 |
+
msgid "Single Opt-In"
|
| 498 |
+
msgstr "Singolo Opt-In"
|
| 499 |
+
|
| 500 |
+
#: .././pages/options.php:282
|
| 501 |
+
msgid "Double Opt-In"
|
| 502 |
+
msgstr "Double Opt-In"
|
| 503 |
+
|
| 504 |
+
#: .././pages/options.php:290
|
| 505 |
+
msgid ""
|
| 506 |
+
"A single opt-in will add the user to your list without any further "
|
| 507 |
+
"interaction."
|
| 508 |
+
msgstr ""
|
| 509 |
+
"Un unico opt-in aggiungerà l'utente alla tua lista, senza alcuna ulteriore "
|
| 510 |
+
"interazione."
|
| 511 |
+
|
| 512 |
+
#: .././pages/options.php:291
|
| 513 |
+
msgid ""
|
| 514 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 515 |
+
"subscription."
|
| 516 |
+
msgstr ""
|
| 517 |
+
"Un doppio opt-in invierà una e-mail all'utente chiedendo loro di confermare "
|
| 518 |
+
"il loro abbonamento."
|
| 519 |
+
|
| 520 |
+
#: .././pages/options.php:292
|
| 521 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 522 |
+
msgstr ""
|
| 523 |
+
"Questo sarà anche dettare le impostazioni di opt-in per la gente di lasciare "
|
| 524 |
+
"commenti."
|
| 525 |
+
|
| 526 |
+
#: .././pages/options.php:297
|
| 527 |
+
msgid "Custom Opt-In Message"
|
| 528 |
+
msgstr "Personalizzato Opt-In Message"
|
| 529 |
+
|
| 530 |
+
#: .././pages/options.php:299
|
| 531 |
+
msgid "Double Opt-In Message"
|
| 532 |
+
msgstr "Doppio messaggio Opt-In"
|
| 533 |
+
|
| 534 |
+
#: .././pages/options.php:301
|
| 535 |
+
msgid "Single Opt-In Message"
|
| 536 |
+
msgstr "Singolo messaggio Opt-In"
|
| 537 |
+
|
| 538 |
+
#: .././pages/options.php:307
|
| 539 |
+
msgid "Interest Group Label"
|
| 540 |
+
msgstr "Interest Group Label"
|
| 541 |
+
|
| 542 |
+
#: .././pages/options.php:316
|
| 543 |
+
msgid ""
|
| 544 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 545 |
+
"group names."
|
| 546 |
+
msgstr ""
|
| 547 |
+
"Testo da visualizzare sopra gruppi di interesse. Lasciare vuoto per usare "
|
| 548 |
+
"nomi di gruppi di interesse MailChimp."
|
| 549 |
+
|
| 550 |
+
#: .././pages/options.php:321
|
| 551 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 552 |
+
msgstr "Visualizzazione opt-in casella di controllo commento forme?"
|
| 553 |
+
|
| 554 |
+
#: .././pages/options.php:324
|
| 555 |
+
msgid "Hide"
|
| 556 |
+
msgstr "Nascondere"
|
| 557 |
+
|
| 558 |
+
#: .././pages/options.php:325
|
| 559 |
+
msgid "Show"
|
| 560 |
+
msgstr "Mostrare"
|
| 561 |
+
|
| 562 |
+
#: .././pages/options.php:333
|
| 563 |
+
msgid ""
|
| 564 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 565 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 566 |
+
"mailing list."
|
| 567 |
+
msgstr ""
|
| 568 |
+
"Verrà visualizzata una casella di spunta appena sopra il pulsante di invio "
|
| 569 |
+
"per tutte le forme di commento. Se selezionata, tutti gli utenti che "
|
| 570 |
+
"lasciano commenti saranno aggiunti alla mailing list."
|
| 571 |
+
|
| 572 |
+
#: .././pages/options.php:338
|
| 573 |
+
msgid "Custom Comment Checkbox Text"
|
| 574 |
+
msgstr "Commento personalizzata Casella di testo"
|
| 575 |
+
|
| 576 |
+
#: .././pages/options.php:345
|
| 577 |
+
msgid "Default List"
|
| 578 |
+
msgstr "Elenco predefinito"
|
| 579 |
+
|
| 580 |
+
#: .././pages/options.php:360
|
| 581 |
+
msgid ""
|
| 582 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 583 |
+
"comment."
|
| 584 |
+
msgstr ""
|
| 585 |
+
"Questa è la lista degli utenti di default saranno sottoscritte al momento "
|
| 586 |
+
"della presentazione un commento."
|
| 587 |
+
|
| 588 |
+
#: .././pages/options.php:361
|
| 589 |
+
msgid ""
|
| 590 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 591 |
+
"name are required or you may run into issues."
|
| 592 |
+
msgstr ""
|
| 593 |
+
"E 'meglio scegliere un modulo dove solo l'e-mail, nome e / o cognome sono "
|
| 594 |
+
"necessari o si può incorrere in problemi."
|
| 595 |
+
|
| 596 |
+
#: .././pages/options.php:373
|
| 597 |
+
msgid "Plugin Information"
|
| 598 |
+
msgstr "Informazioni Plugin"
|
| 599 |
+
|
| 600 |
+
#: .././pages/options.php:376
|
| 601 |
+
msgid "If you experience any issues with our plugin, please"
|
| 602 |
+
msgstr "Se si verificano problemi con il nostro plugin, per favore"
|
| 603 |
+
|
| 604 |
+
#: .././pages/options.php:376
|
| 605 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 606 |
+
msgstr "Segnala un nuovo problema sul nostro Tracker Github Issue"
|
| 607 |
+
|
| 608 |
+
#: .././pages/options.php:376
|
| 609 |
+
msgid ""
|
| 610 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 611 |
+
msgstr ""
|
| 612 |
+
"Si prega di includere le informazioni qui sotto per aiutarci a risolvere i "
|
| 613 |
+
"problemi il vostro problema."
|
| 614 |
+
|
| 615 |
+
#: .././pages/options.php:384
|
| 616 |
+
msgid "Plugin Version"
|
| 617 |
+
msgstr "Plugin Version"
|
| 618 |
+
|
| 619 |
+
#: .././pages/options.php:388
|
| 620 |
+
msgid "Wordpress Version"
|
| 621 |
+
msgstr "Wordpress Version"
|
| 622 |
+
|
| 623 |
+
#: .././pages/options.php:392
|
| 624 |
+
msgid "Browser Information"
|
| 625 |
+
msgstr "Informazioni Browser"
|
| 626 |
+
|
| 627 |
+
#: .././pages/options.php:420
|
| 628 |
+
msgid "Error"
|
| 629 |
+
msgstr "Errore"
|
| 630 |
+
|
| 631 |
+
#: .././pages/options.php:421
|
| 632 |
+
msgid ""
|
| 633 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 634 |
+
"cURL to send and retreive data."
|
| 635 |
+
msgstr ""
|
| 636 |
+
"Siamo spiacenti, ma cURL è attivato per il tuo server. L'API MailChimp "
|
| 637 |
+
"utilizza cURL per inviare e prelevare dati."
|
| 638 |
+
|
| 639 |
+
#: .././pages/options.php:426
|
| 640 |
+
msgid "Help!"
|
| 641 |
+
msgstr "Aiutatemi!"
|
| 642 |
+
|
| 643 |
+
#: .././pages/options.php:426
|
| 644 |
+
msgid "What is cURL?"
|
| 645 |
+
msgstr "Che cosa è cURL?"
|
| 646 |
+
|
| 647 |
+
#: .././pages/options.php:426
|
| 648 |
+
msgid "Check phpinfo()"
|
| 649 |
+
msgstr "Controllare phpinfo ()"
|
| 650 |
+
|
| 651 |
+
#: .././pages/options.php:428
|
| 652 |
+
msgid "Steps To Resolve The Issue"
|
| 653 |
+
msgstr "Passi per risolvere il problema"
|
| 654 |
+
|
| 655 |
+
#: .././pages/options.php:430
|
| 656 |
+
msgid ""
|
| 657 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 658 |
+
msgstr ""
|
| 659 |
+
"È possibile abilitare cURL girando sul modulo cURL all'interno del file php."
|
| 660 |
+
"ini"
|
| 661 |
+
|
| 662 |
+
#: .././pages/options.php:430
|
| 663 |
+
msgid "You should find the php.ini file located here : "
|
| 664 |
+
msgstr "Si dovrebbe trovare il file php.ini si trova qui: "
|
| 665 |
+
|
| 666 |
+
#: .././pages/options.php:431
|
| 667 |
+
msgid ""
|
| 668 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 669 |
+
msgstr ""
|
| 670 |
+
"Una volta trovata, aprire php.ini e individuare la linea \"; extension = "
|
| 671 |
+
"php_curl.dll\"."
|
| 672 |
+
|
| 673 |
+
#: .././pages/options.php:432
|
| 674 |
+
msgid ""
|
| 675 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 676 |
+
"active."
|
| 677 |
+
msgstr ""
|
| 678 |
+
"Rimuovere il punto e virgola prima della linea, di non-commento e rendere il "
|
| 679 |
+
"modulo attivo."
|
| 680 |
+
|
| 681 |
+
#: .././pages/options.php:433
|
| 682 |
+
msgid "Re-save and close the file."
|
| 683 |
+
msgstr "Re-salvare e chiudere il file."
|
| 684 |
+
|
| 685 |
+
#: .././pages/options.php:434
|
| 686 |
+
msgid "Re-load this page."
|
| 687 |
+
msgstr "Re-caricare questa pagina."
|
| 688 |
+
|
| 689 |
+
#: .././templates/shortcode_error.php:1
|
| 690 |
+
msgid "There was an error calling the mailchimp list."
|
| 691 |
+
msgstr "Si è verificato un errore chiamando la lista MailChimp."
|
| 692 |
+
|
| 693 |
+
#: .././templates/shortcode_error_data.php:1
|
| 694 |
+
msgid ""
|
| 695 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 696 |
+
"List Forms\" page."
|
| 697 |
+
msgstr ""
|
| 698 |
+
"L'elenco non esiste! Assicurarsi di aver importato la lista \"Gestione "
|
| 699 |
+
"moduli elenco\" pagina."
|
| 700 |
+
|
| 701 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 702 |
+
msgid "This list was already placed on this page!"
|
| 703 |
+
msgstr "Questo elenco è stato già pubblicato su questa pagina!"
|
| 704 |
+
|
| 705 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 706 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 707 |
+
msgstr "Woops! No API Key valido Trovato. Doppia verificare le impostazioni."
|
| 708 |
+
|
| 709 |
+
#: .././templates/shortcode_form.php:11
|
| 710 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 711 |
+
msgstr "Oops .. Non dimenticare di compilare i seguenti campi"
|
| 712 |
+
|
| 713 |
+
#: .././templates/shortcode_form.php:74
|
| 714 |
+
msgid "required field"
|
| 715 |
+
msgstr "campo obbligatorio"
|
| 716 |
+
|
| 717 |
+
#: .././templates/yikes-mailchimp-widget.php:15
|
| 718 |
+
#: .././templates/yikes-mailchimp-widget.php:18
|
| 719 |
+
msgid "MailChimp Signup Form"
|
| 720 |
+
msgstr "MailChimp Modulo di iscrizione"
|
| 721 |
+
|
| 722 |
+
#: .././templates/yikes-mailchimp-widget.php:27
|
| 723 |
+
msgid "Select Which Form You Would Like To Display:"
|
| 724 |
+
msgstr "Selezionare quale forma si desidera visualizzare:"
|
| 725 |
+
|
| 726 |
+
#: .././templates/yikes-mailchimp-widget.php:30
|
| 727 |
+
msgid "Select a Form to Display"
|
| 728 |
+
msgstr "Selezionare un modulo per la visualizzazione"
|
| 729 |
+
|
| 730 |
+
#: .././templates/yikes-mailchimp-widget.php:47
|
| 731 |
+
msgid "Please import MailChimp forms"
|
| 732 |
+
msgstr "Si prega di importare forme MailChimp"
|
| 733 |
+
|
| 734 |
+
#: .././templates/yikes-mailchimp-widget.php:49
|
| 735 |
+
msgid "Please import some lists from MailChimp"
|
| 736 |
+
msgstr "Si prega di importare alcune liste da MailChimp"
|
| 737 |
+
|
| 738 |
+
#: .././templates/yikes-mailchimp-widget.php:52
|
| 739 |
+
msgid "Import Lists Now"
|
| 740 |
+
msgstr "Elenchi Importa"
|
| 741 |
+
|
| 742 |
+
#: .././templates/yikes-mailchimp-widget.php:73
|
| 743 |
+
msgid ""
|
| 744 |
+
"Oops! It looks like you haven't imported any lists yet. You must import at "
|
| 745 |
+
"least one list to use the Easy MailChimp widget."
|
| 746 |
+
msgstr ""
|
| 747 |
+
"Oops! Sembra che tu non hai ancora importato elenchi. È necessario importare "
|
| 748 |
+
"almeno un elenco per utilizzare il widget Facile MailChimp."
|
| 749 |
+
|
| 750 |
+
#: .././templates/yikes-mailchimp-widget.php:80
|
| 751 |
+
msgid ""
|
| 752 |
+
"Oops! It looks like you forgot to select a form to display here. Go to "
|
| 753 |
+
"'Appearance > Widgets' and select a form to display."
|
| 754 |
+
msgstr ""
|
| 755 |
+
"Oops! Sembra che ti sei dimenticato di selezionare un modulo per "
|
| 756 |
+
"visualizzare qui. Vai a 'Aspetto> Widget' e scegliere un modulo da "
|
| 757 |
+
"visualizzare."
|
| 758 |
+
|
| 759 |
+
#: .././templates/yikes-mailchimp-widget.php:117
|
| 760 |
+
msgid "Sign Up For Our Newsletter"
|
| 761 |
+
msgstr "Iscriviti alla nostra Newsletter"
|
| 762 |
+
|
| 763 |
+
#: .././templates/yikes-mailchimp-widget.php:129
|
| 764 |
+
msgid "Sign Me Up"
|
| 765 |
+
msgstr "Sign Me Up"
|
| 766 |
+
|
| 767 |
+
#: .././templates/yikes-mailchimp-widget.php:133
|
| 768 |
+
msgid "Title:"
|
| 769 |
+
msgstr "Titolo:"
|
| 770 |
+
|
| 771 |
+
#: .././templates/yikes-mailchimp-widget.php:138
|
| 772 |
+
msgid "Form Text:"
|
| 773 |
+
msgstr "Forma del testo:"
|
| 774 |
+
|
| 775 |
+
#: .././templates/yikes-mailchimp-widget.php:146
|
| 776 |
+
msgid "Submit Button Text:"
|
| 777 |
+
msgstr "Submit Button Text:"
|
| 778 |
+
|
| 779 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 780 |
+
msgid "Oops! It looks like you haven't added your API key! Head over to the"
|
| 781 |
+
msgstr "Oops! Sembra che tu non hai aggiunto la chiave API! Andate a"
|
| 782 |
+
|
| 783 |
+
#: .././templates/yikes-mailchimp-widget.php:156
|
| 784 |
+
msgid "Settings page"
|
| 785 |
+
msgstr "Pagina Impostazioni"
|
| 786 |
+
|
| 787 |
+
#~ msgid "No API Key or List Id Exist!"
|
| 788 |
+
#~ msgstr "Nessuna chiave API o Elenco Id esistono!"
|
languages/yikes-inc-easy-mailchimp-extender-ja.mo
ADDED
|
Binary file
|
languages/yikes-inc-easy-mailchimp-extender-ja.po
ADDED
|
@@ -0,0 +1,781 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
msgid ""
|
| 2 |
+
msgstr ""
|
| 3 |
+
"Project-Id-Version: Yikes Inc. Easy MailChimp Plugin\n"
|
| 4 |
+
"POT-Creation-Date: 2014-04-23 13:37-0500\n"
|
| 5 |
+
"PO-Revision-Date: 2014-04-23 14:51-0500\n"
|
| 6 |
+
"Last-Translator: Evan <evan.m.herman@gmail.com>\n"
|
| 7 |
+
"Language-Team: Yikes Inc. <evan@yikesinc.com>\n"
|
| 8 |
+
"Language: ja_JP\n"
|
| 9 |
+
"MIME-Version: 1.0\n"
|
| 10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
| 11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
| 12 |
+
"X-Generator: Poedit 1.6.4\n"
|
| 13 |
+
"X-Poedit-Basepath: .\n"
|
| 14 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
| 15 |
+
"X-Poedit-KeywordsList: __;_e\n"
|
| 16 |
+
"X-Poedit-SearchPath-0: ../.\n"
|
| 17 |
+
|
| 18 |
+
#: .././classes/class.yksemeBase.php:114
|
| 19 |
+
#: .././classes/class.yksemeBase.php:1287
|
| 20 |
+
msgid "Thank You for subscribing!"
|
| 21 |
+
msgstr "サブスクライブしていただきありがとうございます!"
|
| 22 |
+
|
| 23 |
+
#: .././classes/class.yksemeBase.php:115
|
| 24 |
+
#: .././classes/class.yksemeBase.php:1288
|
| 25 |
+
msgid ""
|
| 26 |
+
"Thank You for subscribing! Check your email for the confirmation message."
|
| 27 |
+
msgstr ""
|
| 28 |
+
"サブスクライブしていただきありがとうございます!確認メッセージのためにあなた"
|
| 29 |
+
"の電子メールをチェックしてください。"
|
| 30 |
+
|
| 31 |
+
#: .././classes/class.yksemeBase.php:116
|
| 32 |
+
msgid "Select Your Area of Interest"
|
| 33 |
+
msgstr "対象エリアを選択"
|
| 34 |
+
|
| 35 |
+
#: .././classes/class.yksemeBase.php:917
|
| 36 |
+
msgid "Click on a subscriber to see further information"
|
| 37 |
+
msgstr "それらに電子メールを送信し、加入者をクリックして"
|
| 38 |
+
|
| 39 |
+
#: .././classes/class.yksemeBase.php:920
|
| 40 |
+
msgid "E-Mail"
|
| 41 |
+
msgstr "メール"
|
| 42 |
+
|
| 43 |
+
#: .././classes/class.yksemeBase.php:921
|
| 44 |
+
msgid "Date Subscribed"
|
| 45 |
+
msgstr "日付サブスクライブ"
|
| 46 |
+
|
| 47 |
+
#: .././classes/class.yksemeBase.php:941
|
| 48 |
+
msgid "Sorry You Don't Currently Have Any Subscribers In This List!"
|
| 49 |
+
msgstr "申し訳ありませんが、現在、このリスト内の任意の加入者を持っていない!"
|
| 50 |
+
|
| 51 |
+
#: .././classes/class.yksemeBase.php:998
|
| 52 |
+
msgid "Back to Subscriber List"
|
| 53 |
+
msgstr "加入者数"
|
| 54 |
+
|
| 55 |
+
#: .././classes/class.yksemeBase.php:999
|
| 56 |
+
msgid "Subscriber Details"
|
| 57 |
+
msgstr "加入者の詳細"
|
| 58 |
+
|
| 59 |
+
#: .././classes/class.yksemeBase.php:1010
|
| 60 |
+
msgid "Overview"
|
| 61 |
+
msgstr "はじめに"
|
| 62 |
+
|
| 63 |
+
#: .././classes/class.yksemeBase.php:1015
|
| 64 |
+
msgid "First Name"
|
| 65 |
+
msgstr "お名前(名)"
|
| 66 |
+
|
| 67 |
+
#: .././classes/class.yksemeBase.php:1018
|
| 68 |
+
msgid "Last Updated"
|
| 69 |
+
msgstr "最終更新日"
|
| 70 |
+
|
| 71 |
+
#: .././classes/class.yksemeBase.php:1021
|
| 72 |
+
msgid "Preferred Email Type"
|
| 73 |
+
msgstr "好ましい形レイアウト"
|
| 74 |
+
|
| 75 |
+
#: .././classes/class.yksemeBase.php:1028
|
| 76 |
+
msgid "Last Name"
|
| 77 |
+
msgstr "お名前(姓)"
|
| 78 |
+
|
| 79 |
+
#: .././classes/class.yksemeBase.php:1031
|
| 80 |
+
msgid "Language"
|
| 81 |
+
msgstr "言語"
|
| 82 |
+
|
| 83 |
+
#: .././classes/class.yksemeBase.php:1054
|
| 84 |
+
msgid "Groups Subscribed To"
|
| 85 |
+
msgstr "日付サブスクライブ"
|
| 86 |
+
|
| 87 |
+
#: .././classes/class.yksemeBase.php:1104
|
| 88 |
+
msgid "Subscriber Notes"
|
| 89 |
+
msgstr "加入者の注意"
|
| 90 |
+
|
| 91 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 92 |
+
msgid "Written by"
|
| 93 |
+
msgstr "によって書かれた"
|
| 94 |
+
|
| 95 |
+
#: .././classes/class.yksemeBase.php:1109
|
| 96 |
+
msgid "Created on"
|
| 97 |
+
msgstr "上で作成"
|
| 98 |
+
|
| 99 |
+
#: .././classes/class.yksemeBase.php:1251
|
| 100 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 101 |
+
msgid "MailChimp Forms"
|
| 102 |
+
msgstr "MailChimpフォーム"
|
| 103 |
+
|
| 104 |
+
#: .././classes/class.yksemeBase.php:1253
|
| 105 |
+
msgid "MailChimp Settings"
|
| 106 |
+
msgstr "MailChimp設定"
|
| 107 |
+
|
| 108 |
+
#: .././classes/class.yksemeBase.php:1254
|
| 109 |
+
msgid "Manage List Forms"
|
| 110 |
+
msgstr "リストフォームを管理"
|
| 111 |
+
|
| 112 |
+
#: .././classes/class.yksemeBase.php:1255 .././pages/about.php:5
|
| 113 |
+
msgid "About YIKES, Inc."
|
| 114 |
+
msgstr "約 YIKES, In."
|
| 115 |
+
|
| 116 |
+
#: .././classes/class.yksemeBase.php:1430
|
| 117 |
+
msgid "One or more fields are empty"
|
| 118 |
+
msgstr "つまたは複数のフィールドは空です"
|
| 119 |
+
|
| 120 |
+
#: .././classes/class.yksemeBase.php:1480
|
| 121 |
+
msgid "Your List Was Successfully Saved!"
|
| 122 |
+
msgstr "あなたのリストが正常に保存されました!"
|
| 123 |
+
|
| 124 |
+
#: .././classes/class.yksemeBase.php:1482
|
| 125 |
+
msgid "I'm sorry there was an error with your request."
|
| 126 |
+
msgstr "私はあなたの要求でエラーが発生したごめんなさい。"
|
| 127 |
+
|
| 128 |
+
#: .././classes/class.yksemeBase.php:1488
|
| 129 |
+
msgid "MailChimp List name"
|
| 130 |
+
msgstr "MailChimpリスト名"
|
| 131 |
+
|
| 132 |
+
#: .././classes/class.yksemeBase.php:1494
|
| 133 |
+
#: .././classes/class.yksemeBase.php:1504
|
| 134 |
+
#, php-format
|
| 135 |
+
msgid "%1$s"
|
| 136 |
+
msgstr ""
|
| 137 |
+
|
| 138 |
+
#: .././classes/class.yksemeBase.php:1512
|
| 139 |
+
msgid "MailChimp List ID"
|
| 140 |
+
msgstr "MailChimpリストのID"
|
| 141 |
+
|
| 142 |
+
#: .././classes/class.yksemeBase.php:1518
|
| 143 |
+
msgid "Shortcode"
|
| 144 |
+
msgstr "ショートコード"
|
| 145 |
+
|
| 146 |
+
#: .././classes/class.yksemeBase.php:1521
|
| 147 |
+
msgid ""
|
| 148 |
+
"Paste this shortcode into whatever page or post you want to add this form to"
|
| 149 |
+
msgstr ""
|
| 150 |
+
"あなたはこのフォームを追加したい任意のページや投稿にこのショートコードを貼り"
|
| 151 |
+
"付け"
|
| 152 |
+
|
| 153 |
+
#: .././classes/class.yksemeBase.php:1526
|
| 154 |
+
msgid "PHP Snippet"
|
| 155 |
+
msgstr "PHPのスニペット"
|
| 156 |
+
|
| 157 |
+
#: .././classes/class.yksemeBase.php:1529
|
| 158 |
+
msgid "Use this code to add this form to a template file"
|
| 159 |
+
msgstr ""
|
| 160 |
+
"テンプレートファイルにこのフォームを追加するには、このコードを使用します。"
|
| 161 |
+
|
| 162 |
+
#: .././classes/class.yksemeBase.php:1534
|
| 163 |
+
msgid "Number of Subscribers"
|
| 164 |
+
msgstr "加入者数"
|
| 165 |
+
|
| 166 |
+
#: .././classes/class.yksemeBase.php:1543
|
| 167 |
+
msgid "Form Fields"
|
| 168 |
+
msgstr "フォームフィールド"
|
| 169 |
+
|
| 170 |
+
#: .././classes/class.yksemeBase.php:1545
|
| 171 |
+
msgid ""
|
| 172 |
+
"Check the fields you want included in your form (Email Address is required)."
|
| 173 |
+
msgstr ""
|
| 174 |
+
"あなたは、フォームに含めるフィールドをチェックします(電子メールアドレスが必"
|
| 175 |
+
"要です)。"
|
| 176 |
+
|
| 177 |
+
#: .././classes/class.yksemeBase.php:1548
|
| 178 |
+
msgid ""
|
| 179 |
+
"Use the green arrows to drag-and-drop the fields and rearrange their order."
|
| 180 |
+
msgstr ""
|
| 181 |
+
"ドラッグ&ドロップのフィールドをし、その順序を変更するには、緑色の矢印を使用"
|
| 182 |
+
"してください。"
|
| 183 |
+
|
| 184 |
+
#: .././classes/class.yksemeBase.php:1554
|
| 185 |
+
msgid "Active Fields"
|
| 186 |
+
msgstr "アクティブフィールド"
|
| 187 |
+
|
| 188 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 189 |
+
msgid "Drag"
|
| 190 |
+
msgstr "スライダーを"
|
| 191 |
+
|
| 192 |
+
#: .././classes/class.yksemeBase.php:1563
|
| 193 |
+
msgid "drop"
|
| 194 |
+
msgstr "ドロップ"
|
| 195 |
+
|
| 196 |
+
#: .././classes/class.yksemeBase.php:1568
|
| 197 |
+
msgid "Merge field"
|
| 198 |
+
msgstr "差し込みフィールドの"
|
| 199 |
+
|
| 200 |
+
#: .././classes/class.yksemeBase.php:1569
|
| 201 |
+
msgid "Placeholder"
|
| 202 |
+
msgstr "プレースホルダ"
|
| 203 |
+
|
| 204 |
+
#: .././classes/class.yksemeBase.php:1577
|
| 205 |
+
msgid "Redirect User On Submission"
|
| 206 |
+
msgstr "送信時にユーザーをリダイレクト"
|
| 207 |
+
|
| 208 |
+
#: .././classes/class.yksemeBase.php:1581
|
| 209 |
+
msgid "choose a page to redirect the user to after they submit the form."
|
| 210 |
+
msgstr ""
|
| 211 |
+
"ページを選択したり、フォームを送信した後にユーザーをリダイレクトするためのカ"
|
| 212 |
+
"スタムURLを設定します"
|
| 213 |
+
|
| 214 |
+
#: .././classes/class.yksemeBase.php:1584
|
| 215 |
+
msgid "Select A Post/Page"
|
| 216 |
+
msgstr "ページを選択します"
|
| 217 |
+
|
| 218 |
+
#: .././classes/class.yksemeBase.php:1638
|
| 219 |
+
msgid "Save Form Settings"
|
| 220 |
+
msgstr "Mailchimpフォームの設定を管理"
|
| 221 |
+
|
| 222 |
+
#: .././classes/class.yksemeBase.php:1639
|
| 223 |
+
msgid "Delete Form"
|
| 224 |
+
msgstr "フォームを削除"
|
| 225 |
+
|
| 226 |
+
#: .././classes/class.yksemeBase.php:1640
|
| 227 |
+
msgid "Re-Import Form Fields from MailChimp"
|
| 228 |
+
msgstr "MailChimpからいくつかのリストをインポートしてください"
|
| 229 |
+
|
| 230 |
+
#: .././classes/class.yksemeBase.php:2168
|
| 231 |
+
msgid "Sign Me Up For MAILCHIMP-REPLACE-THIS-TEXT's Newsletter"
|
| 232 |
+
msgstr "MAILCHIMP-REPLACE-THIS-TEXTのニュースレターのために私をサインアップ"
|
| 233 |
+
|
| 234 |
+
#: .././pages/about.php:27
|
| 235 |
+
msgid "YIKES, Inc. Web Design and Development"
|
| 236 |
+
msgstr "YIKES, Inc. のWebデザインと開発"
|
| 237 |
+
|
| 238 |
+
#: .././pages/about.php:29
|
| 239 |
+
msgid "Smart, effective, beautifully designed web solutions"
|
| 240 |
+
msgstr "スマートな、効果的な、美しいデザインのWebソリューション"
|
| 241 |
+
|
| 242 |
+
#: .././pages/about.php:32
|
| 243 |
+
msgid ""
|
| 244 |
+
"YIKES is located in the Fishtown neighborhood of Philadelphia where we build "
|
| 245 |
+
"custom WordPress themes and plugins every day."
|
| 246 |
+
msgstr ""
|
| 247 |
+
"YIKES は私たちが毎日のカスタムWordPressのテーマやプラグインをビルドし、フィラ"
|
| 248 |
+
"デルフィアのFishtown周辺に位置します。"
|
| 249 |
+
|
| 250 |
+
#: .././pages/about.php:36
|
| 251 |
+
msgid ""
|
| 252 |
+
"At YIKES we love WordPress! Co-Owner, Tracy Levesque has presented at "
|
| 253 |
+
"WordCamps"
|
| 254 |
+
msgstr ""
|
| 255 |
+
"YIKESで私たちはWordPressのが大好き!共同所有者、トレイシーレベスクはWordCamps"
|
| 256 |
+
"で発表しました"
|
| 257 |
+
|
| 258 |
+
#: .././pages/about.php:36
|
| 259 |
+
msgid "and"
|
| 260 |
+
msgstr "そして友人たち!"
|
| 261 |
+
|
| 262 |
+
#: .././pages/about.php:36
|
| 263 |
+
msgid "She also teaches WordPress classes for"
|
| 264 |
+
msgstr "彼女はまたのためのワードプレスのクラスを教えている"
|
| 265 |
+
|
| 266 |
+
#: .././pages/about.php:40
|
| 267 |
+
msgid ""
|
| 268 |
+
"In addition to making great WordPress sites we are also committed to the "
|
| 269 |
+
"sustainable business movement. We observe the triple bottom line: people, "
|
| 270 |
+
"planet, profit and work to help build a more socially, environmentally and "
|
| 271 |
+
"financially sustainable local economy. We even have a"
|
| 272 |
+
msgstr ""
|
| 273 |
+
"偉大なWordPressのサイトを作ることに加えて、我々はまた、持続可能なビジネスの動"
|
| 274 |
+
"きにコミットしている。より多くの社会的、環境的および経済的に持続可能な地域経"
|
| 275 |
+
"済の構築を支援する人々、地球、利益、仕事:私たちは、トリプルボトムラインを観"
|
| 276 |
+
"察します。私たちも持っている"
|
| 277 |
+
|
| 278 |
+
#: .././pages/about.php:40
|
| 279 |
+
msgid "LEED Platinum office"
|
| 280 |
+
msgstr "LEEDプラチナオフィス"
|
| 281 |
+
|
| 282 |
+
#: .././pages/about.php:44
|
| 283 |
+
msgid ""
|
| 284 |
+
"If you're interested in hiring us for WordPress development, or just want to "
|
| 285 |
+
"learn more about us, please visit"
|
| 286 |
+
msgstr ""
|
| 287 |
+
"あなたがワードプレスの開発のための私たちの雇用に興味を持っているか、単に私た"
|
| 288 |
+
"ちの詳細を知りたい場合は、以下をご覧ください"
|
| 289 |
+
|
| 290 |
+
#: .././pages/lists.php:8
|
| 291 |
+
msgid "No forms have been added yet."
|
| 292 |
+
msgstr "no形式はまだ追加されていません。"
|
| 293 |
+
|
| 294 |
+
#: .././pages/lists.php:39
|
| 295 |
+
msgid "Oops.. The list ID you entered appears to be incorrect."
|
| 296 |
+
msgstr "おっと..あなたが入力したリストIDが誤っているように見えます。"
|
| 297 |
+
|
| 298 |
+
#: .././pages/lists.php:44
|
| 299 |
+
msgid "There was an error!"
|
| 300 |
+
msgstr "エラーが発生しました!"
|
| 301 |
+
|
| 302 |
+
#: .././pages/lists.php:135
|
| 303 |
+
msgid "You need to select a Mailchimp list in order to create a form for it"
|
| 304 |
+
msgstr ""
|
| 305 |
+
"あなたはそれのためのフォームを作成するために、Mailchimpリストを選択する必要が"
|
| 306 |
+
"あります"
|
| 307 |
+
|
| 308 |
+
#: .././pages/lists.php:173
|
| 309 |
+
msgid "Are you sure you want to delete this form?"
|
| 310 |
+
msgstr "あなたが退会してもよろしいですか"
|
| 311 |
+
|
| 312 |
+
#: .././pages/lists.php:206
|
| 313 |
+
msgid "Are you sure you want to re-import your fields from MailChimp?"
|
| 314 |
+
msgstr "あなたはMailChimpからフィールドを再インポートしてもよろしいですか?"
|
| 315 |
+
|
| 316 |
+
#: .././pages/lists.php:228
|
| 317 |
+
msgid "Looks like this form is already up to date!"
|
| 318 |
+
msgstr "このフォームはすでに最新であるように見えます!"
|
| 319 |
+
|
| 320 |
+
#: .././pages/lists.php:326
|
| 321 |
+
msgid "Are you sure you want to unsubscribe"
|
| 322 |
+
msgstr "あなたが退会してもよろしいですか"
|
| 323 |
+
|
| 324 |
+
#: .././pages/lists.php:326
|
| 325 |
+
msgid "from this list?"
|
| 326 |
+
msgstr "このリストの中に?"
|
| 327 |
+
|
| 328 |
+
#: .././pages/lists.php:342
|
| 329 |
+
msgid "was successfully unsubscribed from this list."
|
| 330 |
+
msgstr "このリストから正常に退会した。"
|
| 331 |
+
|
| 332 |
+
#: .././pages/lists.php:448 .././pages/options.php:196
|
| 333 |
+
#: .././pages/options.php:416
|
| 334 |
+
msgid "Easy Mailchimp Forms by YIKES, Inc."
|
| 335 |
+
msgstr "YIKES, Inc.で簡単Mailchimpフォーム"
|
| 336 |
+
|
| 337 |
+
#: .././pages/lists.php:454
|
| 338 |
+
msgid "Before you can add MailChimp forms to your site, you need to"
|
| 339 |
+
msgstr ""
|
| 340 |
+
"あなたのサイトにMailChimpフォームを追加する前に、以下を行う必要があります"
|
| 341 |
+
|
| 342 |
+
#: .././pages/lists.php:454
|
| 343 |
+
msgid "go to the MailChimp Settings page"
|
| 344 |
+
msgstr "MailChimp設定ページに移動"
|
| 345 |
+
|
| 346 |
+
#: .././pages/lists.php:454 .././templates/yikes-mailchimp-widget.php:156
|
| 347 |
+
msgid "and add your API Key."
|
| 348 |
+
msgstr "そして、あなたのAPIキーを追加します。"
|
| 349 |
+
|
| 350 |
+
#: .././pages/lists.php:462
|
| 351 |
+
msgid "You must enter a valid API key to import and manage your lists."
|
| 352 |
+
msgstr ""
|
| 353 |
+
"あなたのリストをインポートし、管理するための有効なAPIキーを入力する必要があり"
|
| 354 |
+
"ます。"
|
| 355 |
+
|
| 356 |
+
#: .././pages/lists.php:473
|
| 357 |
+
msgid "Your Lists"
|
| 358 |
+
msgstr "あなたのリスト"
|
| 359 |
+
|
| 360 |
+
#: .././pages/lists.php:483
|
| 361 |
+
msgid "Manage Forms"
|
| 362 |
+
msgstr "フォームの管理"
|
| 363 |
+
|
| 364 |
+
#: .././pages/options.php:41
|
| 365 |
+
msgid "The options were saved successfully!"
|
| 366 |
+
msgstr "オプションが正常に保存されました!"
|
| 367 |
+
|
| 368 |
+
#: .././pages/options.php:44
|
| 369 |
+
msgid "The options could not be saved (or you did not change them)."
|
| 370 |
+
msgstr ""
|
| 371 |
+
"オプションを保存できませんでした(またはあなたがそれらを変更していない)。"
|
| 372 |
+
|
| 373 |
+
#: .././pages/options.php:96
|
| 374 |
+
msgid "Valid API Key"
|
| 375 |
+
msgstr "有効なAPIキー"
|
| 376 |
+
|
| 377 |
+
#: .././pages/options.php:102
|
| 378 |
+
msgid "Sorry, that is an invalid MailChimp API key."
|
| 379 |
+
msgstr "申し訳ありませんが、それは無効MailChimp APIキーです。"
|
| 380 |
+
|
| 381 |
+
#: .././pages/options.php:108
|
| 382 |
+
msgid ""
|
| 383 |
+
"Sorry, that is an invalid MailChimp API key. Please check the console for "
|
| 384 |
+
"further information."
|
| 385 |
+
msgstr "申し訳ありませんが、それは無効MailChimp APIキーです。"
|
| 386 |
+
|
| 387 |
+
#: .././pages/options.php:117
|
| 388 |
+
msgid "Error: Please enter a valid Mail Chimp API Key."
|
| 389 |
+
msgstr "エラー:有効なメールチンパンジーAPIキーを入力してください。"
|
| 390 |
+
|
| 391 |
+
#: .././pages/options.php:199
|
| 392 |
+
msgid "Manage Mailchimp Forms Settings"
|
| 393 |
+
msgstr "Mailchimpフォームの設定を管理"
|
| 394 |
+
|
| 395 |
+
#: .././pages/options.php:205
|
| 396 |
+
msgid "WordPress Version Number Error"
|
| 397 |
+
msgstr "Wordpressのバージョン"
|
| 398 |
+
|
| 399 |
+
#: .././pages/options.php:206
|
| 400 |
+
msgid ""
|
| 401 |
+
"We're sorry, but it looks like your using an outdated version of WordPress. "
|
| 402 |
+
"You won't be able to access the tinyMCE button to insert forms into pages "
|
| 403 |
+
"and posts unless you update to 3.9 or later."
|
| 404 |
+
msgstr ""
|
| 405 |
+
"大変申し訳ございませんが、あなたがワードプレスの古いバージョンを使用してのよ"
|
| 406 |
+
"うに見えます。あなたが3.9以降にアップデートしていない限り、ページや投稿に"
|
| 407 |
+
"フォームを挿入するにはTinyMCEのボタンにアクセスできなくなります。"
|
| 408 |
+
|
| 409 |
+
#: .././pages/options.php:215
|
| 410 |
+
msgid "LocalHost Detected :"
|
| 411 |
+
msgstr "ローカルホストに検出されました:"
|
| 412 |
+
|
| 413 |
+
#: .././pages/options.php:216
|
| 414 |
+
msgid ""
|
| 415 |
+
"It looks like your using Easy MailChimp Forms by YIKES Inc. on localhost."
|
| 416 |
+
msgstr "YIKES, Inc.で簡単Mailchimpフォーム"
|
| 417 |
+
|
| 418 |
+
#: .././pages/options.php:217
|
| 419 |
+
msgid ""
|
| 420 |
+
"If you are unable to validate your API key, and receive the error message"
|
| 421 |
+
msgstr ""
|
| 422 |
+
"あなたのAPIキーを検証することができない、とエラーメッセージが表示された場合"
|
| 423 |
+
|
| 424 |
+
#: .././pages/options.php:217
|
| 425 |
+
msgid "\"SSL certificate problem: unable to get local issuer certificate\" "
|
| 426 |
+
msgstr "\"SSL証明書の問題:ローカル発行者証明書のを取得できません」"
|
| 427 |
+
|
| 428 |
+
#: .././pages/options.php:217
|
| 429 |
+
msgid "follow the tutorial located "
|
| 430 |
+
msgstr "位置チュートリアルに従う"
|
| 431 |
+
|
| 432 |
+
#: .././pages/options.php:230
|
| 433 |
+
msgid "Your Mailchimp API Key"
|
| 434 |
+
msgstr "あなたMailchimp APIキー"
|
| 435 |
+
|
| 436 |
+
#: .././pages/options.php:238
|
| 437 |
+
msgid ""
|
| 438 |
+
"Please enter your MailChimp API Key above. The API Key allows your WordPress "
|
| 439 |
+
"site to communicate with your MailChimp account."
|
| 440 |
+
msgstr ""
|
| 441 |
+
"上記のあなたのMailChimp APIキーを入力してください。 APIキーは、WordPressのサ"
|
| 442 |
+
"イトがMailChimpアカウントと通信することができます。"
|
| 443 |
+
|
| 444 |
+
#: .././pages/options.php:239
|
| 445 |
+
msgid "For more help, visit the MailChimp Support article"
|
| 446 |
+
msgstr "詳細なヘルプについては、MailChimpサポート記事にアクセスしてください"
|
| 447 |
+
|
| 448 |
+
#: .././pages/options.php:239
|
| 449 |
+
msgid "Where can I find my API Key?"
|
| 450 |
+
msgstr "どこでAPIキーを見つけることができますか?"
|
| 451 |
+
|
| 452 |
+
#: .././pages/options.php:244
|
| 453 |
+
msgid "Preferred Form Layout"
|
| 454 |
+
msgstr "好ましい形レイアウト"
|
| 455 |
+
|
| 456 |
+
#: .././pages/options.php:247
|
| 457 |
+
msgid "table"
|
| 458 |
+
msgstr "テーブル"
|
| 459 |
+
|
| 460 |
+
#: .././pages/options.php:248
|
| 461 |
+
msgid "div"
|
| 462 |
+
msgstr "DIV"
|
| 463 |
+
|
| 464 |
+
#: .././pages/options.php:256
|
| 465 |
+
msgid "Choose whether you want your forms to use a table or div layout."
|
| 466 |
+
msgstr ""
|
| 467 |
+
"あなたのフォームがテーブルまたはDIVレイアウトを使用するかどうかを選択します。"
|
| 468 |
+
|
| 469 |
+
#: .././pages/options.php:261
|
| 470 |
+
msgid "Advanced Error Messaging"
|
| 471 |
+
msgstr "高度なエラー·メッセージ"
|
| 472 |
+
|
| 473 |
+
#: .././pages/options.php:264
|
| 474 |
+
msgid "Disabled"
|
| 475 |
+
msgstr "無効"
|
| 476 |
+
|
| 477 |
+
#: .././pages/options.php:265
|
| 478 |
+
msgid "Enabled"
|
| 479 |
+
msgstr "有効"
|
| 480 |
+
|
| 481 |
+
#: .././pages/options.php:273
|
| 482 |
+
msgid ""
|
| 483 |
+
"Enable if you're having problems with your forms sending data to MailChimp. "
|
| 484 |
+
"Enabling Advanced Error Messaging will show you the exact error codes "
|
| 485 |
+
"MailChimp is returning."
|
| 486 |
+
msgstr ""
|
| 487 |
+
"あなたのフォームがMailChimpへのデータ送信に問題がある場合有効にします。高度な"
|
| 488 |
+
"エラーメッセージを有効にすると、あなたにMailChimpが戻っている正確なエラーコー"
|
| 489 |
+
"ドが表示されます。"
|
| 490 |
+
|
| 491 |
+
#: .././pages/options.php:281
|
| 492 |
+
msgid "Single Opt-In"
|
| 493 |
+
msgstr "シングルオプトイン"
|
| 494 |
+
|
| 495 |
+
#: .././pages/options.php:282
|
| 496 |
+
msgid "Double Opt-In"
|
| 497 |
+
msgstr "ダブルオプトイン"
|
| 498 |
+
|
| 499 |
+
#: .././pages/options.php:290
|
| 500 |
+
msgid ""
|
| 501 |
+
"A single opt-in will add the user to your list without any further "
|
| 502 |
+
"interaction."
|
| 503 |
+
msgstr ""
|
| 504 |
+
"シングルオプトインはそれ以上の操作なしにあなたのリストにユーザーを追加しま"
|
| 505 |
+
"す。"
|
| 506 |
+
|
| 507 |
+
#: .././pages/options.php:291
|
| 508 |
+
msgid ""
|
| 509 |
+
"A double opt-in will send an email to the user asking them to confirm their "
|
| 510 |
+
"subscription."
|
| 511 |
+
msgstr ""
|
| 512 |
+
"ダブルオプトインでは、サブスクリプションを確認するためにそれらを求めるユー"
|
| 513 |
+
"ザーに電子メールを送信いたします。"
|
| 514 |
+
|
| 515 |
+
#: .././pages/options.php:292
|
| 516 |
+
msgid "This will also dictate the opt-in settings for people leaving comments."
|
| 517 |
+
msgstr "また、これは、コメントを残す人々のためのオプトインの設定を決定します。"
|
| 518 |
+
|
| 519 |
+
#: .././pages/options.php:297
|
| 520 |
+
msgid "Custom Opt-In Message"
|
| 521 |
+
msgstr "カスタムオプトインのメッセージ"
|
| 522 |
+
|
| 523 |
+
#: .././pages/options.php:299
|
| 524 |
+
msgid "Double Opt-In Message"
|
| 525 |
+
msgstr "ダブルオプトインのメッセージ"
|
| 526 |
+
|
| 527 |
+
#: .././pages/options.php:301
|
| 528 |
+
msgid "Single Opt-In Message"
|
| 529 |
+
msgstr "シングルオプトインメッセージ"
|
| 530 |
+
|
| 531 |
+
#: .././pages/options.php:307
|
| 532 |
+
msgid "Interest Group Label"
|
| 533 |
+
msgstr "インタレストグループラベル"
|
| 534 |
+
|
| 535 |
+
#: .././pages/options.php:316
|
| 536 |
+
msgid ""
|
| 537 |
+
"Text to display above interest groups. Leave blank to use MailChimp interest "
|
| 538 |
+
"group names."
|
| 539 |
+
msgstr ""
|
| 540 |
+
"利益団体の上に表示されるテキスト。 MailChimp金利グループ名を使用する場合は空"
|
| 541 |
+
"白のまま。"
|
| 542 |
+
|
| 543 |
+
#: .././pages/options.php:321
|
| 544 |
+
msgid "Display opt-in checkbox on comment forms?"
|
| 545 |
+
msgstr "表示コメントフォームのチェックボックスにオプトイン?"
|
| 546 |
+
|
| 547 |
+
#: .././pages/options.php:324
|
| 548 |
+
msgid "Hide"
|
| 549 |
+
msgstr "閉じる"
|
| 550 |
+
|
| 551 |
+
#: .././pages/options.php:325
|
| 552 |
+
msgid "Show"
|
| 553 |
+
msgstr "凡例の表示"
|
| 554 |
+
|
| 555 |
+
#: .././pages/options.php:333
|
| 556 |
+
msgid ""
|
| 557 |
+
"This will display a checkbox just above the submit button on all comment "
|
| 558 |
+
"forms. If selected, any users leaving comments will also be added to the "
|
| 559 |
+
"mailing list."
|
| 560 |
+
msgstr ""
|
| 561 |
+
"これは単に、すべてのコメントフォームの送信ボタンの上にあるチェックボックスが"
|
| 562 |
+
"表示されます。選択した場合は、コメントを残してすべてのユーザーには、メーリン"
|
| 563 |
+
"グ·リストに追加されます。"
|
| 564 |
+
|
| 565 |
+
#: .././pages/options.php:338
|
| 566 |
+
msgid "Custom Comment Checkbox Text"
|
| 567 |
+
msgstr "カスタムコメントチェックボックスのテキスト"
|
| 568 |
+
|
| 569 |
+
#: .././pages/options.php:345
|
| 570 |
+
msgid "Default List"
|
| 571 |
+
msgstr "デフォルトのリスト"
|
| 572 |
+
|
| 573 |
+
#: .././pages/options.php:360
|
| 574 |
+
msgid ""
|
| 575 |
+
"This is the default list users will be subscribed to when submitting a "
|
| 576 |
+
"comment."
|
| 577 |
+
msgstr ""
|
| 578 |
+
"これはデフォルトのリストのユーザーがコメントを提出する際にサブスクライブされ"
|
| 579 |
+
"ている。"
|
| 580 |
+
|
| 581 |
+
#: .././pages/options.php:361
|
| 582 |
+
msgid ""
|
| 583 |
+
"It is best to select a form where only the email , first name and/or last "
|
| 584 |
+
"name are required or you may run into issues."
|
| 585 |
+
msgstr ""
|
| 586 |
+
"これは、電子メール、名、および/またはラストネームのみが必要とされるか、問題が"
|
| 587 |
+
"発生する可能性があり、フォームを選択することをお勧めします。"
|
| 588 |
+
|
| 589 |
+
#: .././pages/options.php:373
|
| 590 |
+
msgid "Plugin Information"
|
| 591 |
+
msgstr "プラグイン情報"
|
| 592 |
+
|
| 593 |
+
#: .././pages/options.php:376
|
| 594 |
+
msgid "If you experience any issues with our plugin, please"
|
| 595 |
+
msgstr "あなたは私たちのプラグインで問題が発生した場合は、してください"
|
| 596 |
+
|
| 597 |
+
#: .././pages/options.php:376
|
| 598 |
+
msgid "submit a New Issue on our Github Issue Tracker"
|
| 599 |
+
msgstr "私たちのGitHubの課題トラッカー上で新たな課題を提出"
|
| 600 |
+
|
| 601 |
+
#: .././pages/options.php:376
|
| 602 |
+
msgid ""
|
| 603 |
+
"Please include the information below to help us troubleshoot your problem."
|
| 604 |
+
msgstr ""
|
| 605 |
+
"私たちはあなたの問題のトラブルシューティングに役立つ以下の情報を含めてくださ"
|
| 606 |
+
"い。"
|
| 607 |
+
|
| 608 |
+
#: .././pages/options.php:384
|
| 609 |
+
msgid "Plugin Version"
|
| 610 |
+
msgstr "プラグインバージョン"
|
| 611 |
+
|
| 612 |
+
#: .././pages/options.php:388
|
| 613 |
+
msgid "Wordpress Version"
|
| 614 |
+
msgstr "Wordpressのバージョン"
|
| 615 |
+
|
| 616 |
+
#: .././pages/options.php:392
|
| 617 |
+
msgid "Browser Information"
|
| 618 |
+
msgstr "ブラウザ情報"
|
| 619 |
+
|
| 620 |
+
#: .././pages/options.php:420
|
| 621 |
+
msgid "Error"
|
| 622 |
+
msgstr "エラー"
|
| 623 |
+
|
| 624 |
+
#: .././pages/options.php:421
|
| 625 |
+
msgid ""
|
| 626 |
+
"We're sorry, but cURL is disabled on your server. The MailChimp API utilizes "
|
| 627 |
+
"cURL to send and retreive data."
|
| 628 |
+
msgstr ""
|
| 629 |
+
"申し訳ございませんが、カール、サーバーで無効になっている。 MailChimp APIは、"
|
| 630 |
+
"データを送信し、地震するカールを利用しています。"
|
| 631 |
+
|
| 632 |
+
#: .././pages/options.php:426
|
| 633 |
+
msgid "Help!"
|
| 634 |
+
msgstr "助けて"
|
| 635 |
+
|
| 636 |
+
#: .././pages/options.php:426
|
| 637 |
+
msgid "What is cURL?"
|
| 638 |
+
msgstr "カールは何ですか?"
|
| 639 |
+
|
| 640 |
+
#: .././pages/options.php:426
|
| 641 |
+
msgid "Check phpinfo()"
|
| 642 |
+
msgstr "は、phpinfoを確認してください()"
|
| 643 |
+
|
| 644 |
+
#: .././pages/options.php:428
|
| 645 |
+
msgid "Steps To Resolve The Issue"
|
| 646 |
+
msgstr "問題を解決するには、手順"
|
| 647 |
+
|
| 648 |
+
#: .././pages/options.php:430
|
| 649 |
+
msgid ""
|
| 650 |
+
"You can enable cURL by turning on the cURL module within your php.ini file"
|
| 651 |
+
msgstr ""
|
| 652 |
+
"あなたは、php.iniファイル内のcURLモジュールをオンにすることでカールを有効にす"
|
| 653 |
+
"ることができます"
|
| 654 |
+
|
| 655 |
+
#: .././pages/options.php:430
|
| 656 |
+
msgid "You should find the php.ini file located here : "
|
| 657 |
+
msgstr "あなたがここにあるphp.iniファイルを見つける必要があります。"
|
| 658 |
+
|
| 659 |
+
#: .././pages/options.php:431
|
| 660 |
+
msgid ""
|
| 661 |
+
"Once found, open up php.ini and locate the line \";extension=php_curl.dll\"."
|
| 662 |
+
msgstr "一度発見、php.iniのを開くとラインを見つけ \";拡張子= php_curl.dll \"。"
|
| 663 |
+
|
| 664 |
+
#: .././pages/options.php:432
|
| 665 |
+
msgid ""
|
| 666 |
+
"Remove the semi colon before the line, to un-comment it and make the module "
|
| 667 |
+
"active."
|
| 668 |
+
msgstr ""
|
| 669 |
+
"アンコメントして、モジュールをアクティブにするには、行の前にセミコロンを削除"
|
| 670 |
+
"してください。"
|
| 671 |
+
|
| 672 |
+
#: .././pages/options.php:433
|
| 673 |
+
msgid "Re-save and close the file."
|
| 674 |
+
msgstr "再ファイルを保存して閉じます。"
|
| 675 |
+
|
| 676 |
+
#: .././pages/options.php:434
|
| 677 |
+
msgid "Re-load this page."
|
| 678 |
+
msgstr "このページを再ロードします。"
|
| 679 |
+
|
| 680 |
+
#: .././templates/shortcode_error.php:1
|
| 681 |
+
msgid "There was an error calling the mailchimp list."
|
| 682 |
+
msgstr "mailchimpリストを呼び出してエラーが発生しました。"
|
| 683 |
+
|
| 684 |
+
#: .././templates/shortcode_error_data.php:1
|
| 685 |
+
msgid ""
|
| 686 |
+
"The list doesn't exist! Make sure you have imported the list on the \"Manage "
|
| 687 |
+
"List Forms\" page."
|
| 688 |
+
msgstr ""
|
| 689 |
+
"リストは存在しません!あなたは「リストフォームの管理\"ページをのリストをイン"
|
| 690 |
+
"ポートしたことを確認します。"
|
| 691 |
+
|
| 692 |
+
#: .././templates/shortcode_error_exists.php:1
|
| 693 |
+
msgid "This list was already placed on this page!"
|
| 694 |
+
msgstr "このリストはすでにこのページに掲載されました!"
|
| 695 |
+
|
| 696 |
+
#: .././templates/shortcode_error_no_API_key.php:1
|
| 697 |
+
msgid "Woops! No Valid API Key Found. Double check your settings."
|
| 698 |
+
msgstr ""
|
| 699 |
+
"オエーッと吐く!見つかった有効なAPIキーはありません。二重の設定を確認してくだ"
|
| 700 |
+
"さい。"
|
| 701 |
+
|
| 702 |
+
#: .././templates/shortcode_form.php:11
|
| 703 |
+
msgid "Oops.. Don't forget to fill-in the following fields"
|
| 704 |
+
msgstr "おっと..フィルイン次のフィールドを忘れてはいけない。"
|
| 705 |
+
|
| 706 |
+
#: .././templates/shortcode_form.php:74
|
| 707 |
+
msgid "required field"
|
| 708 |
+
msgstr "必要なフィールド"
|
