Version Description
(2018-12-13) =
Release Notes: Slack Support & New External Connections UI
-
New Features
- Slack support - mirror WordPress activity log for Slack.
- New UI and totally revamped the external databases & services connections module.
- Ability to mirror the WordPress activity logs to multiple destinations.
-
Improvements
- Maximum file size for WordPress file integrity scans is now configurable.
- Updated the Freemius SDK to 2.2.2 (addresses a MainWP conflict fix).
- Plugin access can now be restricted to super administrators only on a multisite network.
- Multiple scan started / stopped events per directory merged into one.
- Added 1 and 4 hours option to terminate idle users sessions setting.
- Plugin now always keeps a log a post updates, even if update is not done via the editor.
- Better handling of terminated users sessions (in hung state, blocking legit logins).
- Access to plugin now can be restricted to super admin role on multisite networks.
- User info in daily activity log summary email is now variable - the same as configured in the plugin settings.
- Limited Freemius user messages to users who can view & manage the plugin.
- Addded support for a dot in the time format (e.g: d.-m-Y G:i)
- Bug Fixes
- Better handling of data from the REST API Support ticket.
- Fixed: two daily activity log emails were being sent instead of one.
- Restricted the starter license (had access to some pro features).
- Fixed a number of minor warnings when running the plugin on PHP7.
- Logins when using the Two-Factor plugin are now logged properly.
- Fixed - first time setup wizard prompt not always showing.
Download this release
Release Info
Developer | WPWhiteSecurity |
Plugin | WP Security Audit Log |
Version | 3.3 |
Comparing to | |
See all releases |
Code changes from version 3.2.5 to 3.3
- classes/Adapters/MySQL/ActiveRecordAdapter.php +8 -8
- classes/AlertManager.php +60 -8
- classes/Autoloader.php +1 -3
- classes/Connector/MySQLDB.php +16 -8
- classes/Connector/wp-db-custom.php +24 -23
- classes/Ref.php +4 -11
- classes/SensorManager.php +13 -3
- classes/Sensors/Comments.php +16 -21
- classes/Sensors/Content.php +56 -61
- classes/Sensors/FileChanges.php +22 -36
- classes/Sensors/LogInOut.php +64 -19
- classes/Sensors/Public.php +543 -0
- classes/Sensors/System.php +72 -251
- classes/Sensors/UserProfile.php +0 -26
- classes/Sensors/WooCommerce.php +1 -40
- classes/Settings.php +159 -3
- classes/SimpleProfiler.php +0 -48
- classes/ViewManager.php +2 -1
- classes/Views/AuditLog.php +1 -3
- classes/Views/Help.php +0 -2
- classes/Views/Licensing.php +1 -1
- classes/Views/Settings.php +76 -46
- classes/Views/ToggleAlerts.php +51 -4
- css/auditlog.css +0 -1
- css/dist/wsal-wizard.build.css +2 -0
- defaults.php +507 -505
- js/select2/LICENSE +18 -0
- js/select2/select2-bootstrap.css +87 -0
- js/select2/select2-spinner.gif +0 -0
- js/select2/select2.css +704 -0
- js/select2/select2.js +3508 -0
- js/select2/select2.min.js +23 -0
- js/select2/select2.png +0 -0
- js/select2/select2x2.png +0 -0
- languages/wp-security-audit-log.pot +1671 -3163
- readme.txt +32 -16
- sdk/freemius/assets/css/admin/deactivation-feedback.css +0 -1
- sdk/freemius/assets/css/admin/dialog-boxes.css +2 -2
- sdk/freemius/assets/css/admin/license-activation.css +0 -1
- sdk/freemius/assets/scss/_colors.scss +11 -0
- sdk/freemius/assets/scss/admin/_buttons.scss +28 -0
- sdk/freemius/assets/scss/admin/_subscription-cancellation.scss +30 -0
- sdk/freemius/assets/scss/admin/dialog-boxes.scss +3 -1
- sdk/freemius/assets/scss/admin/plugin-upgrade-notice.scss +8 -0
- sdk/freemius/includes/class-freemius.php +735 -217
- sdk/freemius/includes/class-fs-plugin-updater.php +312 -68
- sdk/freemius/includes/class-fs-storage.php +1 -0
- sdk/freemius/includes/entities/class-fs-plugin.php +22 -0
- sdk/freemius/includes/entities/class-fs-site.php +2 -0
- sdk/freemius/includes/fs-essential-functions.php +4 -2
- sdk/freemius/includes/fs-plugin-info-dialog.php +37 -7
- sdk/freemius/includes/i18n.php +3 -3
- sdk/freemius/includes/managers/class-fs-admin-menu-manager.php +12 -0
- sdk/freemius/includes/managers/class-fs-admin-notice-manager.php +43 -0
- sdk/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +2 -6
- sdk/freemius/includes/supplements/fs-essential-functions-2.2.1.php +45 -0
- sdk/freemius/languages/freemius-da_DK.mo +0 -0
- sdk/freemius/languages/freemius-da_DK.po +2431 -9
- sdk/freemius/languages/freemius-en.mo +0 -0
- sdk/freemius/languages/freemius-en.po +543 -428
- sdk/freemius/languages/freemius-es_ES.mo +0 -0
- sdk/freemius/languages/freemius-es_ES.po +189 -164
classes/Adapters/MySQL/ActiveRecordAdapter.php
CHANGED
@@ -127,7 +127,7 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
|
|
127 |
*/
|
128 |
public function IsInstalled() {
|
129 |
$_wpdb = $this->connection;
|
130 |
-
$sql
|
131 |
|
132 |
// Table transient.
|
133 |
$wsal_table_transient = 'wsal_' . strtolower( $this->GetTable() ) . '_status';
|
@@ -179,7 +179,7 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
|
|
179 |
|
180 |
// Query table exists.
|
181 |
$table_exists_query = 'SHOW TABLES LIKE "' . $this->GetTable() . '"';
|
182 |
-
$result
|
183 |
return $result;
|
184 |
}
|
185 |
|
@@ -190,9 +190,9 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
|
|
190 |
* @return integer|boolean - Either the number of modified/inserted rows or false on failure.
|
191 |
*/
|
192 |
public function Save( $active_record ) {
|
193 |
-
$_wpdb
|
194 |
-
$copy
|
195 |
-
$data
|
196 |
$format = array();
|
197 |
|
198 |
foreach ( $this->GetColumns() as $index => $key ) {
|
@@ -200,7 +200,7 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
|
|
200 |
$_id_index = $index;
|
201 |
}
|
202 |
|
203 |
-
$val
|
204 |
$deffmt = '%s';
|
205 |
if ( is_int( $copy->$key ) ) {
|
206 |
$deffmt = '%d';
|
@@ -239,8 +239,8 @@ class WSAL_Adapters_MySQL_ActiveRecord implements WSAL_Adapters_ActiveRecordInte
|
|
239 |
*/
|
240 |
public function Load( $cond = '%d', $args = array( 1 ) ) {
|
241 |
$_wpdb = $this->connection;
|
242 |
-
$sql
|
243 |
-
$data
|
244 |
return $data;
|
245 |
}
|
246 |
|
127 |
*/
|
128 |
public function IsInstalled() {
|
129 |
$_wpdb = $this->connection;
|
130 |
+
$sql = 'SHOW TABLES LIKE "' . $this->GetTable() . '"';
|
131 |
|
132 |
// Table transient.
|
133 |
$wsal_table_transient = 'wsal_' . strtolower( $this->GetTable() ) . '_status';
|
179 |
|
180 |
// Query table exists.
|
181 |
$table_exists_query = 'SHOW TABLES LIKE "' . $this->GetTable() . '"';
|
182 |
+
$result = $_wpdb->query( $table_exists_query );
|
183 |
return $result;
|
184 |
}
|
185 |
|
190 |
* @return integer|boolean - Either the number of modified/inserted rows or false on failure.
|
191 |
*/
|
192 |
public function Save( $active_record ) {
|
193 |
+
$_wpdb = $this->connection;
|
194 |
+
$copy = $active_record;
|
195 |
+
$data = array();
|
196 |
$format = array();
|
197 |
|
198 |
foreach ( $this->GetColumns() as $index => $key ) {
|
200 |
$_id_index = $index;
|
201 |
}
|
202 |
|
203 |
+
$val = $copy->$key;
|
204 |
$deffmt = '%s';
|
205 |
if ( is_int( $copy->$key ) ) {
|
206 |
$deffmt = '%d';
|
239 |
*/
|
240 |
public function Load( $cond = '%d', $args = array( 1 ) ) {
|
241 |
$_wpdb = $this->connection;
|
242 |
+
$sql = $_wpdb->prepare( 'SELECT * FROM ' . $this->GetTable() . ' WHERE ' . $cond, $args );
|
243 |
+
$data = $_wpdb->get_row( $sql, ARRAY_A );
|
244 |
return $data;
|
245 |
}
|
246 |
|
classes/AlertManager.php
CHANGED
@@ -14,6 +14,15 @@ final class WSAL_AlertManager {
|
|
14 |
*/
|
15 |
protected $_alerts = array();
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
/**
|
18 |
* Array of loggers (WSAL_AbstractLogger).
|
19 |
*
|
@@ -71,6 +80,17 @@ final class WSAL_AlertManager {
|
|
71 |
|
72 |
add_action( 'shutdown', array( $this, '_CommitPipeline' ) );
|
73 |
add_action( 'wsal_init', array( $this, 'schedule_log_events' ) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
}
|
75 |
|
76 |
/**
|
@@ -105,7 +125,8 @@ final class WSAL_AlertManager {
|
|
105 |
* @param string $file Path to file.
|
106 |
*/
|
107 |
public function AddFromFile( $file ) {
|
108 |
-
$
|
|
|
109 |
}
|
110 |
|
111 |
/**
|
@@ -248,7 +269,7 @@ final class WSAL_AlertManager {
|
|
248 |
$this->Log( $type, $data );
|
249 |
} elseif ( $_retry ) {
|
250 |
// This is the last attempt at loading alerts from default file.
|
251 |
-
$this->plugin->
|
252 |
return $this->_CommitItem( $type, $data, $cond, false );
|
253 |
} else {
|
254 |
// In general this shouldn't happen, but it could, so we handle it here.
|
@@ -361,7 +382,11 @@ final class WSAL_AlertManager {
|
|
361 |
* @return boolean True if enabled, false otherwise.
|
362 |
*/
|
363 |
public function IsEnabled( $type ) {
|
364 |
-
|
|
|
|
|
|
|
|
|
365 |
}
|
366 |
|
367 |
/**
|
@@ -446,15 +471,13 @@ final class WSAL_AlertManager {
|
|
446 |
/**
|
447 |
* Return alert given alert type.
|
448 |
*
|
449 |
-
* @param integer $type
|
450 |
* @param mixed $default - Returned if alert is not found.
|
451 |
* @return WSAL_Alert
|
452 |
*/
|
453 |
public function GetAlert( $type, $default = null ) {
|
454 |
-
|
455 |
-
|
456 |
-
return $alert;
|
457 |
-
}
|
458 |
}
|
459 |
return $default;
|
460 |
}
|
@@ -468,6 +491,17 @@ final class WSAL_AlertManager {
|
|
468 |
return $this->_alerts;
|
469 |
}
|
470 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
471 |
/**
|
472 |
* Method: Returns array of alerts by category.
|
473 |
*
|
@@ -790,4 +824,22 @@ final class WSAL_AlertManager {
|
|
790 |
}
|
791 |
return $admin_bar_event;
|
792 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
793 |
}
|
14 |
*/
|
15 |
protected $_alerts = array();
|
16 |
|
17 |
+
/**
|
18 |
+
* Array of Deprecated Events
|
19 |
+
*
|
20 |
+
* @since 3.3
|
21 |
+
*
|
22 |
+
* @var array
|
23 |
+
*/
|
24 |
+
protected $deprecated_events = array();
|
25 |
+
|
26 |
/**
|
27 |
* Array of loggers (WSAL_AbstractLogger).
|
28 |
*
|
80 |
|
81 |
add_action( 'shutdown', array( $this, '_CommitPipeline' ) );
|
82 |
add_action( 'wsal_init', array( $this, 'schedule_log_events' ) );
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Filter: `wsal_deprecated_event_ids`
|
86 |
+
*
|
87 |
+
* Deprecated event ids filter.
|
88 |
+
*
|
89 |
+
* @since 3.3
|
90 |
+
*
|
91 |
+
* @param array $deprecated_events - Array of deprecated event ids.
|
92 |
+
*/
|
93 |
+
$this->deprecated_events = apply_filters( 'wsal_deprecated_event_ids', array( 2004, 2005, 2006, 2007, 2009, 2013, 2015, 2018, 2020, 2022, 2026, 2028, 2059, 2060, 2061, 2064, 2066, 2069, 2075, 2087, 2102, 2103, 2113, 2114, 2115, 2116, 2117, 2118, 5020, 5026, 2107, 2003, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2056, 2057, 2058, 2063, 2067, 2068, 2070, 2072, 2076, 2088, 2104, 2105, 5021, 5027, 2108 ) );
|
94 |
}
|
95 |
|
96 |
/**
|
125 |
* @param string $file Path to file.
|
126 |
*/
|
127 |
public function AddFromFile( $file ) {
|
128 |
+
$file = basename( $file, '.php' );
|
129 |
+
$this->AddFromClass( WSAL_CLASS_PREFIX . 'Loggers_' . $file );
|
130 |
}
|
131 |
|
132 |
/**
|
269 |
$this->Log( $type, $data );
|
270 |
} elseif ( $_retry ) {
|
271 |
// This is the last attempt at loading alerts from default file.
|
272 |
+
$this->plugin->load_defaults();
|
273 |
return $this->_CommitItem( $type, $data, $cond, false );
|
274 |
} else {
|
275 |
// In general this shouldn't happen, but it could, so we handle it here.
|
382 |
* @return boolean True if enabled, false otherwise.
|
383 |
*/
|
384 |
public function IsEnabled( $type ) {
|
385 |
+
$disabled_events = $this->GetDisabledAlerts();
|
386 |
+
if ( 'no' !== $this->plugin->GetGlobalOption( 'disable-visitor-events', 'no' ) ) {
|
387 |
+
$disabled_events = array_merge( $disabled_events, $this->get_public_events() );
|
388 |
+
}
|
389 |
+
return ! in_array( $type, $disabled_events, true );
|
390 |
}
|
391 |
|
392 |
/**
|
471 |
/**
|
472 |
* Return alert given alert type.
|
473 |
*
|
474 |
+
* @param integer $type - Alert type.
|
475 |
* @param mixed $default - Returned if alert is not found.
|
476 |
* @return WSAL_Alert
|
477 |
*/
|
478 |
public function GetAlert( $type, $default = null ) {
|
479 |
+
if ( isset( $this->_alerts[ $type ] ) ) {
|
480 |
+
return $this->_alerts[ $type ];
|
|
|
|
|
481 |
}
|
482 |
return $default;
|
483 |
}
|
491 |
return $this->_alerts;
|
492 |
}
|
493 |
|
494 |
+
/**
|
495 |
+
* Returns all deprecated events.
|
496 |
+
*
|
497 |
+
* @since 3.3
|
498 |
+
*
|
499 |
+
* @return WSAL_Alert[]
|
500 |
+
*/
|
501 |
+
public function get_deprecated_events() {
|
502 |
+
return $this->deprecated_events;
|
503 |
+
}
|
504 |
+
|
505 |
/**
|
506 |
* Method: Returns array of alerts by category.
|
507 |
*
|
824 |
}
|
825 |
return $admin_bar_event;
|
826 |
}
|
827 |
+
|
828 |
+
/**
|
829 |
+
* Return Public Event IDs.
|
830 |
+
*
|
831 |
+
* @since 3.3
|
832 |
+
*
|
833 |
+
* @return array
|
834 |
+
*/
|
835 |
+
public function get_public_events() {
|
836 |
+
/**
|
837 |
+
* Filter: `wsal_public_event_ids`
|
838 |
+
*
|
839 |
+
* Filter array of public event ids.
|
840 |
+
*
|
841 |
+
* @param array $public_events - Array of public event ids.
|
842 |
+
*/
|
843 |
+
return apply_filters( 'wsal_public_event_ids', array( 1000, 1002, 1003, 1004, 1005, 1007, 2101, 2126, 4000, 4001, 4012, 6023, 9073 ) ); // Public events.
|
844 |
+
}
|
845 |
}
|
classes/Autoloader.php
CHANGED
@@ -57,9 +57,7 @@ class WSAL_Autoloader {
|
|
57 |
if ( strstr( $class, $prefix ) !== false ) {
|
58 |
$file = $path . str_replace( '_', DIRECTORY_SEPARATOR, substr( $class, strlen( $prefix ) ) ) . '.php';
|
59 |
if ( file_exists( $file ) ) {
|
60 |
-
|
61 |
-
require_once( $file );
|
62 |
-
$s->Stop();
|
63 |
return class_exists( $class, false ) || interface_exists( $class, false );
|
64 |
}
|
65 |
}
|
57 |
if ( strstr( $class, $prefix ) !== false ) {
|
58 |
$file = $path . str_replace( '_', DIRECTORY_SEPARATOR, substr( $class, strlen( $prefix ) ) ) . '.php';
|
59 |
if ( file_exists( $file ) ) {
|
60 |
+
require_once $file;
|
|
|
|
|
61 |
return class_exists( $class, false ) || interface_exists( $class, false );
|
62 |
}
|
63 |
}
|
classes/Connector/MySQLDB.php
CHANGED
@@ -471,10 +471,10 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
|
|
471 |
* @param array $args - Archive Database and limit by date.
|
472 |
*/
|
473 |
public function MirroringAlertsToDB( $args ) {
|
474 |
-
$last_created_on
|
475 |
$first_occurrence_id = null;
|
476 |
-
$_wpdb
|
477 |
-
$mirroring_db
|
478 |
|
479 |
// Load data Occurrences from WP.
|
480 |
$occurrence = new WSAL_Adapters_MySQL_Occurrence( $_wpdb );
|
@@ -482,15 +482,23 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
|
|
482 |
return null;
|
483 |
}
|
484 |
|
485 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
486 |
$occurrences = $_wpdb->get_results( $sql, ARRAY_A );
|
487 |
|
488 |
if ( ! empty( $occurrences ) ) {
|
489 |
$occurrence_new = new WSAL_Adapters_MySQL_Occurrence( $mirroring_db );
|
490 |
|
491 |
-
$sql = 'INSERT INTO ' . $occurrence_new->GetTable() . ' (id, site_id, alert_id, created_on, is_read) VALUES '
|
492 |
foreach ( $occurrences as $entry ) {
|
493 |
-
$sql
|
494 |
$last_created_on = $entry['created_on'];
|
495 |
// Save the first id.
|
496 |
if ( empty( $first_occurrence_id ) ) {
|
@@ -507,13 +515,13 @@ class WSAL_Connector_MySQLDB extends WSAL_Connector_AbstractConnector implements
|
|
507 |
return null;
|
508 |
}
|
509 |
if ( ! empty( $first_occurrence_id ) ) {
|
510 |
-
$sql
|
511 |
$metadata = $_wpdb->get_results( $sql, ARRAY_A );
|
512 |
|
513 |
if ( ! empty( $metadata ) ) {
|
514 |
$meta_new = new WSAL_Adapters_MySQL_Meta( $mirroring_db );
|
515 |
|
516 |
-
$sql = 'INSERT INTO ' . $meta_new->GetTable() . ' (occurrence_id, name, value) VALUES '
|
517 |
foreach ( $metadata as $entry ) {
|
518 |
$sql .= '(' . $entry['occurrence_id'] . ', \'' . $entry['name'] . '\', \'' . str_replace( array( "'", "\'" ), "\'", $entry['value'] ) . '\'), ';
|
519 |
}
|
471 |
* @param array $args - Archive Database and limit by date.
|
472 |
*/
|
473 |
public function MirroringAlertsToDB( $args ) {
|
474 |
+
$last_created_on = null;
|
475 |
$first_occurrence_id = null;
|
476 |
+
$_wpdb = $this->getConnection();
|
477 |
+
$mirroring_db = $args['mirroring_db'];
|
478 |
|
479 |
// Load data Occurrences from WP.
|
480 |
$occurrence = new WSAL_Adapters_MySQL_Occurrence( $_wpdb );
|
482 |
return null;
|
483 |
}
|
484 |
|
485 |
+
if ( isset( $args['filter'] ) && 'event-codes' === $args['filter'] && isset( $args['events'] ) ) {
|
486 |
+
$sql = 'SELECT * FROM ' . $occurrence->GetTable() . ' WHERE created_on > ' . $args['last_created_on'] . ' AND alert_id IN ' . $args['events'];
|
487 |
+
} elseif ( isset( $args['filter'] ) && 'except-codes' === $args['filter'] && isset( $args['events'] ) ) {
|
488 |
+
$sql = 'SELECT * FROM ' . $occurrence->GetTable() . ' WHERE created_on > ' . $args['last_created_on'] . ' AND alert_id NOT IN ' . $args['events'];
|
489 |
+
} else {
|
490 |
+
$sql = 'SELECT * FROM ' . $occurrence->GetTable() . ' WHERE created_on > ' . $args['last_created_on'];
|
491 |
+
}
|
492 |
+
|
493 |
+
// Query the events.
|
494 |
$occurrences = $_wpdb->get_results( $sql, ARRAY_A );
|
495 |
|
496 |
if ( ! empty( $occurrences ) ) {
|
497 |
$occurrence_new = new WSAL_Adapters_MySQL_Occurrence( $mirroring_db );
|
498 |
|
499 |
+
$sql = 'INSERT INTO ' . $occurrence_new->GetTable() . ' (id, site_id, alert_id, created_on, is_read) VALUES ';
|
500 |
foreach ( $occurrences as $entry ) {
|
501 |
+
$sql .= '(' . $entry['id'] . ', ' . $entry['site_id'] . ', ' . $entry['alert_id'] . ', ' . $entry['created_on'] . ', ' . $entry['is_read'] . '), ';
|
502 |
$last_created_on = $entry['created_on'];
|
503 |
// Save the first id.
|
504 |
if ( empty( $first_occurrence_id ) ) {
|
515 |
return null;
|
516 |
}
|
517 |
if ( ! empty( $first_occurrence_id ) ) {
|
518 |
+
$sql = 'SELECT * FROM ' . $meta->GetTable() . ' WHERE occurrence_id >= ' . $first_occurrence_id;
|
519 |
$metadata = $_wpdb->get_results( $sql, ARRAY_A );
|
520 |
|
521 |
if ( ! empty( $metadata ) ) {
|
522 |
$meta_new = new WSAL_Adapters_MySQL_Meta( $mirroring_db );
|
523 |
|
524 |
+
$sql = 'INSERT INTO ' . $meta_new->GetTable() . ' (occurrence_id, name, value) VALUES ';
|
525 |
foreach ( $metadata as $entry ) {
|
526 |
$sql .= '(' . $entry['occurrence_id'] . ', \'' . $entry['name'] . '\', \'' . str_replace( array( "'", "\'" ), "\'", $entry['value'] ) . '\'), ';
|
527 |
}
|
classes/Connector/wp-db-custom.php
CHANGED
@@ -26,15 +26,15 @@ class wpdbCustom extends wpdb {
|
|
26 |
* and hide the print of the error
|
27 |
*
|
28 |
* @global string $wp_version
|
29 |
-
* @param string $dbuser
|
30 |
-
* @param string $dbpassword
|
31 |
-
* @param string $dbname
|
32 |
-
* @param string $dbhost
|
33 |
-
* @param bool $is_ssl
|
34 |
-
* @param bool $is_cc
|
35 |
-
* @param string $ssl_ca
|
36 |
-
* @param string $ssl_cert
|
37 |
-
* @param string $ssl_key
|
38 |
* @param bool $test_connection - Set to true if testing connection.
|
39 |
*/
|
40 |
public function __construct( $dbuser, $dbpassword, $dbname, $dbhost, $is_ssl, $is_cc, $ssl_ca, $ssl_cert, $ssl_key, $test_connection = false ) {
|
@@ -51,10 +51,11 @@ class wpdbCustom extends wpdb {
|
|
51 |
$this->use_mysqli = true;
|
52 |
}
|
53 |
}
|
54 |
-
$this->dbuser
|
55 |
$this->dbpassword = $dbpassword;
|
56 |
-
$this->dbname
|
57 |
-
$this->dbhost
|
|
|
58 |
// wp-config.php creation will manually connect when ready.
|
59 |
if ( defined( 'WP_SETUP_CONFIG' ) ) {
|
60 |
return;
|
@@ -102,7 +103,7 @@ class wpdbCustom extends wpdb {
|
|
102 |
* Deprecated in 3.9+ when using MySQLi. No equivalent
|
103 |
* $new_link parameter exists for mysqli_* functions.
|
104 |
*/
|
105 |
-
$new_link
|
106 |
$client_flags = defined( 'MYSQL_CLIENT_FLAGS' ) ? MYSQL_CLIENT_FLAGS : 0;
|
107 |
|
108 |
if ( $this->use_mysqli ) {
|
@@ -110,15 +111,15 @@ class wpdbCustom extends wpdb {
|
|
110 |
|
111 |
// mysqli_real_connect doesn't support the host param including a port or socket
|
112 |
// like mysql_connect does. This duplicates how mysql_connect detects a port and/or socket file.
|
113 |
-
$port
|
114 |
-
$socket
|
115 |
-
$host
|
116 |
$port_or_socket = strstr( $host, ':' );
|
117 |
if ( ! empty( $port_or_socket ) ) {
|
118 |
-
$host
|
119 |
$port_or_socket = substr( $port_or_socket, 1 );
|
120 |
if ( 0 !== strpos( $port_or_socket, '/' ) ) {
|
121 |
-
$port
|
122 |
$maybe_socket = strstr( $port_or_socket, ':' );
|
123 |
if ( ! empty( $maybe_socket ) ) {
|
124 |
$socket = substr( $maybe_socket, 1 );
|
@@ -149,11 +150,11 @@ class wpdbCustom extends wpdb {
|
|
149 |
if ( $ssl_opts_set ) {
|
150 |
mysqli_ssl_set(
|
151 |
$this->dbh,
|
152 |
-
$ssl_opts[
|
153 |
-
$ssl_opts[
|
154 |
-
$ssl_opts[
|
155 |
-
$ssl_opts[
|
156 |
-
$ssl_opts[
|
157 |
);
|
158 |
}
|
159 |
|
26 |
* and hide the print of the error
|
27 |
*
|
28 |
* @global string $wp_version
|
29 |
+
* @param string $dbuser - MySQL database user.
|
30 |
+
* @param string $dbpassword - MySQL database password.
|
31 |
+
* @param string $dbname - MySQL database name.
|
32 |
+
* @param string $dbhost - MySQL database host.
|
33 |
+
* @param bool $is_ssl - Set if connection is SSL encrypted.
|
34 |
+
* @param bool $is_cc - Set if connection has client certificates.
|
35 |
+
* @param string $ssl_ca - Certificate Authority.
|
36 |
+
* @param string $ssl_cert - Client Certificate.
|
37 |
+
* @param string $ssl_key - Client Key.
|
38 |
* @param bool $test_connection - Set to true if testing connection.
|
39 |
*/
|
40 |
public function __construct( $dbuser, $dbpassword, $dbname, $dbhost, $is_ssl, $is_cc, $ssl_ca, $ssl_cert, $ssl_key, $test_connection = false ) {
|
51 |
$this->use_mysqli = true;
|
52 |
}
|
53 |
}
|
54 |
+
$this->dbuser = $dbuser;
|
55 |
$this->dbpassword = $dbpassword;
|
56 |
+
$this->dbname = $dbname;
|
57 |
+
$this->dbhost = $dbhost;
|
58 |
+
|
59 |
// wp-config.php creation will manually connect when ready.
|
60 |
if ( defined( 'WP_SETUP_CONFIG' ) ) {
|
61 |
return;
|
103 |
* Deprecated in 3.9+ when using MySQLi. No equivalent
|
104 |
* $new_link parameter exists for mysqli_* functions.
|
105 |
*/
|
106 |
+
$new_link = defined( 'MYSQL_NEW_LINK' ) ? MYSQL_NEW_LINK : true;
|
107 |
$client_flags = defined( 'MYSQL_CLIENT_FLAGS' ) ? MYSQL_CLIENT_FLAGS : 0;
|
108 |
|
109 |
if ( $this->use_mysqli ) {
|
111 |
|
112 |
// mysqli_real_connect doesn't support the host param including a port or socket
|
113 |
// like mysql_connect does. This duplicates how mysql_connect detects a port and/or socket file.
|
114 |
+
$port = null;
|
115 |
+
$socket = null;
|
116 |
+
$host = $this->dbhost;
|
117 |
$port_or_socket = strstr( $host, ':' );
|
118 |
if ( ! empty( $port_or_socket ) ) {
|
119 |
+
$host = substr( $host, 0, strpos( $host, ':' ) );
|
120 |
$port_or_socket = substr( $port_or_socket, 1 );
|
121 |
if ( 0 !== strpos( $port_or_socket, '/' ) ) {
|
122 |
+
$port = intval( $port_or_socket );
|
123 |
$maybe_socket = strstr( $port_or_socket, ':' );
|
124 |
if ( ! empty( $maybe_socket ) ) {
|
125 |
$socket = substr( $maybe_socket, 1 );
|
150 |
if ( $ssl_opts_set ) {
|
151 |
mysqli_ssl_set(
|
152 |
$this->dbh,
|
153 |
+
$ssl_opts['KEY'],
|
154 |
+
$ssl_opts['CERT'],
|
155 |
+
$ssl_opts['CA'],
|
156 |
+
$ssl_opts['CA_PATH'],
|
157 |
+
$ssl_opts['CIPHER']
|
158 |
);
|
159 |
}
|
160 |
|
classes/Ref.php
CHANGED
@@ -1483,24 +1483,17 @@ class WSAL_Ref {
|
|
1483 |
// mysql connection (mysql extension is deprecated from php 5.4/5.5)
|
1484 |
case 'mysql link':
|
1485 |
case 'mysql link persistent':
|
1486 |
-
$dbs = array();
|
1487 |
-
$query = @mysql_list_dbs( $subject );
|
1488 |
-
while ( $row = @mysql_fetch_array( $query ) ) {
|
1489 |
-
$dbs[] = $row['Database'];
|
1490 |
-
}
|
1491 |
-
|
1492 |
$meta = array(
|
1493 |
-
'host' => ltrim( @
|
1494 |
-
'server_version' => @
|
1495 |
-
'protocol_version' => @
|
1496 |
-
'databases' => $dbs,
|
1497 |
);
|
1498 |
|
1499 |
break;
|
1500 |
|
1501 |
// mysql result
|
1502 |
case 'mysql result':
|
1503 |
-
while ( $row = @
|
1504 |
$meta[] = (array) $row;
|
1505 |
|
1506 |
if ( $this->hasInstanceTimedOut() ) {
|
1483 |
// mysql connection (mysql extension is deprecated from php 5.4/5.5)
|
1484 |
case 'mysql link':
|
1485 |
case 'mysql link persistent':
|
|
|
|
|
|
|
|
|
|
|
|
|
1486 |
$meta = array(
|
1487 |
+
'host' => ltrim( @mysqli_get_host_info( $subject ), 'MySQL host info: ' ),
|
1488 |
+
'server_version' => @mysqli_get_server_info( $subject ),
|
1489 |
+
'protocol_version' => @mysqli_get_proto_info( $subject ),
|
|
|
1490 |
);
|
1491 |
|
1492 |
break;
|
1493 |
|
1494 |
// mysql result
|
1495 |
case 'mysql result':
|
1496 |
+
while ( $row = @mysqli_fetch_object( $subject ) ) {
|
1497 |
$meta[] = (array) $row;
|
1498 |
|
1499 |
if ( $this->hasInstanceTimedOut() ) {
|
classes/SensorManager.php
CHANGED
@@ -174,6 +174,19 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
|
|
174 |
'wsal-auditlog-pricing',
|
175 |
);
|
176 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
177 |
// Get current page query argument via $_GET array.
|
178 |
$current_page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
|
179 |
|
@@ -191,9 +204,6 @@ final class WSAL_SensorManager extends WSAL_AbstractSensor {
|
|
191 |
return false;
|
192 |
}
|
193 |
|
194 |
-
// Get file name.
|
195 |
-
$filename = basename( $filepath, '.php' );
|
196 |
-
|
197 |
// If filename exists then continue.
|
198 |
if ( $filename ) {
|
199 |
// Conditional loading based on filename.
|
174 |
'wsal-auditlog-pricing',
|
175 |
);
|
176 |
|
177 |
+
// Get file name.
|
178 |
+
$filename = basename( $filepath, '.php' );
|
179 |
+
|
180 |
+
// Load LogInOut sensor on login page.
|
181 |
+
if ( 'wp-login.php' === $pagenow && 'LogInOut' === $filename ) {
|
182 |
+
return true;
|
183 |
+
}
|
184 |
+
|
185 |
+
// Only load Public sensor when the user is not on wp-admin.
|
186 |
+
if ( ! is_admin() && ! is_user_logged_in() && 'Public' !== $filename ) {
|
187 |
+
return false;
|
188 |
+
}
|
189 |
+
|
190 |
// Get current page query argument via $_GET array.
|
191 |
$current_page = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_STRING );
|
192 |
|
204 |
return false;
|
205 |
}
|
206 |
|
|
|
|
|
|
|
207 |
// If filename exists then continue.
|
208 |
if ( $filename ) {
|
209 |
// Conditional loading based on filename.
|
classes/Sensors/Comments.php
CHANGED
@@ -65,12 +65,12 @@ class WSAL_Sensors_Comments extends WSAL_AbstractSensor {
|
|
65 |
*/
|
66 |
public function EventCommentApprove( $new_status, $old_status, $comment ) {
|
67 |
if ( ! empty( $comment ) && $old_status != $new_status ) {
|
68 |
-
$post
|
69 |
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment->comment_ID;
|
70 |
-
$fields
|
71 |
-
'PostTitle'
|
72 |
-
'Author'
|
73 |
-
'Date'
|
74 |
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
75 |
);
|
76 |
|
@@ -145,22 +145,17 @@ class WSAL_Sensors_Comments extends WSAL_AbstractSensor {
|
|
145 |
$comment = get_comment( $comment_id );
|
146 |
if ( ! empty( $comment ) ) {
|
147 |
if ( 'spam' != $comment->comment_approved ) {
|
148 |
-
$post
|
149 |
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment_id;
|
150 |
-
$fields
|
151 |
-
'Date'
|
152 |
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
153 |
);
|
154 |
|
155 |
// Get user data.
|
156 |
$user_data = get_user_by( 'email', $comment->comment_author_email );
|
157 |
|
158 |
-
if (
|
159 |
-
// Set the fields.
|
160 |
-
$fields['CommentMsg'] = sprintf( 'A comment was posted in response to the post <strong>%s</strong>. The comment was posted by <strong>%s</strong>', $post->post_title, $this->CheckAuthor( $comment ) );
|
161 |
-
$fields['Username'] = 'Website Visitor';
|
162 |
-
$this->plugin->alerts->Trigger( 2126, $fields );
|
163 |
-
} else {
|
164 |
// Get user roles.
|
165 |
$user_roles = $user_data->roles;
|
166 |
|
@@ -170,9 +165,9 @@ class WSAL_Sensors_Comments extends WSAL_AbstractSensor {
|
|
170 |
}
|
171 |
|
172 |
// Set the fields.
|
173 |
-
$fields['Username']
|
174 |
$fields['CurrentUserRoles'] = $user_roles;
|
175 |
-
$fields['CommentMsg']
|
176 |
$this->plugin->alerts->Trigger( 2099, $fields );
|
177 |
}
|
178 |
}
|
@@ -189,12 +184,12 @@ class WSAL_Sensors_Comments extends WSAL_AbstractSensor {
|
|
189 |
private function EventGeneric( $comment_id, $alert_code ) {
|
190 |
$comment = get_comment( $comment_id );
|
191 |
if ( ! empty( $comment ) ) {
|
192 |
-
$post
|
193 |
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment_id;
|
194 |
-
$fields
|
195 |
-
'PostTitle'
|
196 |
-
'Author'
|
197 |
-
'Date'
|
198 |
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
199 |
);
|
200 |
|
65 |
*/
|
66 |
public function EventCommentApprove( $new_status, $old_status, $comment ) {
|
67 |
if ( ! empty( $comment ) && $old_status != $new_status ) {
|
68 |
+
$post = get_post( $comment->comment_post_ID );
|
69 |
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment->comment_ID;
|
70 |
+
$fields = array(
|
71 |
+
'PostTitle' => $post->post_title,
|
72 |
+
'Author' => $comment->comment_author,
|
73 |
+
'Date' => $comment->comment_date,
|
74 |
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
75 |
);
|
76 |
|
145 |
$comment = get_comment( $comment_id );
|
146 |
if ( ! empty( $comment ) ) {
|
147 |
if ( 'spam' != $comment->comment_approved ) {
|
148 |
+
$post = get_post( $comment->comment_post_ID );
|
149 |
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment_id;
|
150 |
+
$fields = array(
|
151 |
+
'Date' => $comment->comment_date,
|
152 |
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
153 |
);
|
154 |
|
155 |
// Get user data.
|
156 |
$user_data = get_user_by( 'email', $comment->comment_author_email );
|
157 |
|
158 |
+
if ( $user_data && $user_data instanceof WP_User ) {
|
|
|
|
|
|
|
|
|
|
|
159 |
// Get user roles.
|
160 |
$user_roles = $user_data->roles;
|
161 |
|
165 |
}
|
166 |
|
167 |
// Set the fields.
|
168 |
+
$fields['Username'] = $user_data->user_login;
|
169 |
$fields['CurrentUserRoles'] = $user_roles;
|
170 |
+
$fields['CommentMsg'] = sprintf( 'Posted a comment in response to the post <strong>%s</strong>', $post->post_title );
|
171 |
$this->plugin->alerts->Trigger( 2099, $fields );
|
172 |
}
|
173 |
}
|
184 |
private function EventGeneric( $comment_id, $alert_code ) {
|
185 |
$comment = get_comment( $comment_id );
|
186 |
if ( ! empty( $comment ) ) {
|
187 |
+
$post = get_post( $comment->comment_post_ID );
|
188 |
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment_id;
|
189 |
+
$fields = array(
|
190 |
+
'PostTitle' => $post->post_title,
|
191 |
+
'Author' => $comment->comment_author,
|
192 |
+
'Date' => $comment->comment_date,
|
193 |
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
194 |
);
|
195 |
|
classes/Sensors/Content.php
CHANGED
@@ -119,13 +119,10 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
119 |
add_action( 'edit_category', array( $this, 'EventChangedCategoryParent' ) );
|
120 |
add_action( 'wp_insert_post', array( $this, 'SetRevisionLink' ), 10, 3 );
|
121 |
add_action( 'publish_future_post', array( $this, 'EventPublishFuture' ), 10, 1 );
|
|
|
122 |
|
123 |
add_action( 'create_category', array( $this, 'EventCategoryCreation' ), 10, 1 );
|
124 |
add_action( 'create_post_tag', array( $this, 'EventTagCreation' ), 10, 1 );
|
125 |
-
|
126 |
-
add_action( 'wp_head', array( $this, 'ViewingPost' ), 10 );
|
127 |
-
add_filter( 'post_edit_form_tag', array( $this, 'EditingPost' ), 10, 1 );
|
128 |
-
|
129 |
add_filter( 'wp_update_term_data', array( $this, 'event_terms_rename' ), 10, 4 );
|
130 |
|
131 |
// Check if MainWP Child Plugin exists.
|
@@ -536,6 +533,38 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
536 |
&& ( 'unpublish' === $post_array['action'] || 'publish' === $post_array['action'] )
|
537 |
) {
|
538 |
$this->check_mainwp_status_change( $post, $old_status, $new_status );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
539 |
}
|
540 |
}
|
541 |
|
@@ -594,7 +623,11 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
594 |
} elseif ( $this->_old_post && 'mainwp' === $dashboard ) {
|
595 |
if ( 'auto-draft' === $old_status ) {
|
596 |
// Get MainWP $_POST members.
|
597 |
-
|
|
|
|
|
|
|
|
|
598 |
$new_post = maybe_unserialize( base64_decode( $new_post ) );
|
599 |
$post_catgs = filter_input( INPUT_POST, 'post_category', FILTER_SANITIZE_STRING );
|
600 |
|
@@ -893,7 +926,7 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
893 |
*/
|
894 |
protected function CheckDateChange( $oldpost, $newpost ) {
|
895 |
$from = strtotime( $oldpost->post_date );
|
896 |
-
$to
|
897 |
|
898 |
if ( 'draft' == $oldpost->post_status ) {
|
899 |
return 0;
|
@@ -903,14 +936,14 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
903 |
$editor_link = $this->GetEditorLink( $oldpost );
|
904 |
$this->plugin->alerts->Trigger(
|
905 |
2027, array(
|
906 |
-
'PostID'
|
907 |
-
'PostType'
|
908 |
-
'PostTitle'
|
909 |
-
'PostStatus'
|
910 |
-
'PostDate'
|
911 |
-
'PostUrl'
|
912 |
-
'OldDate'
|
913 |
-
'NewDate'
|
914 |
$editor_link['name'] => $editor_link['value'],
|
915 |
)
|
916 |
);
|
@@ -927,8 +960,8 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
927 |
* @param stdClass $post - The post.
|
928 |
*/
|
929 |
protected function CheckCategoriesChange( $old_cats, $new_cats, $post ) {
|
930 |
-
$old_cats = implode( ', ', $old_cats );
|
931 |
-
$new_cats = implode( ', ', $new_cats );
|
932 |
|
933 |
if ( $old_cats !== $new_cats ) {
|
934 |
$event = $this->GetEventTypeForPostType( $post, 2016, 0, 2016 );
|
@@ -1072,10 +1105,10 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
1072 |
$removed_tags = array_diff( $old_tags, $new_tags );
|
1073 |
|
1074 |
// Convert tags arrays to string.
|
1075 |
-
$old_tags = implode( ', ', $old_tags );
|
1076 |
-
$new_tags = implode( ', ', $new_tags );
|
1077 |
-
$added_tags = implode( ', ', $added_tags );
|
1078 |
-
$removed_tags = implode( ', ', $removed_tags );
|
1079 |
|
1080 |
// Declare event variables.
|
1081 |
$add_event = '';
|
@@ -1667,14 +1700,14 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
1667 |
/**
|
1668 |
* Check auto draft and the setting: Hide Plugin in Plugins Page
|
1669 |
*
|
1670 |
-
* @param integer $code
|
1671 |
* @param string $title - Title.
|
1672 |
* @return boolean
|
1673 |
*/
|
1674 |
private function CheckAutoDraft( $code, $title ) {
|
1675 |
if ( 2008 == $code && 'auto-draft' == $title ) {
|
1676 |
// To do: Check setting else return false.
|
1677 |
-
if ( $this->plugin->settings->IsWPBackend()
|
1678 |
return true;
|
1679 |
} else {
|
1680 |
return false;
|
@@ -1745,7 +1778,7 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
1745 |
* Ignore post from BBPress, WooCommerce Plugin
|
1746 |
* Triggered on the Sensors
|
1747 |
*
|
1748 |
-
* @param
|
1749 |
*/
|
1750 |
private function CheckOtherSensors( $post ) {
|
1751 |
if ( empty( $post ) || ! isset( $post->post_type ) ) {
|
@@ -1790,44 +1823,6 @@ class WSAL_Sensors_Content extends WSAL_AbstractSensor {
|
|
1790 |
}
|
1791 |
}
|
1792 |
|
1793 |
-
/**
|
1794 |
-
* Alerts for Viewing of Posts, Pages and Custom Posts.
|
1795 |
-
*/
|
1796 |
-
public function ViewingPost() {
|
1797 |
-
// Retrieve the current post object.
|
1798 |
-
$post = get_queried_object();
|
1799 |
-
if ( is_user_logged_in() && ! is_admin() ) {
|
1800 |
-
if ( $this->CheckOtherSensors( $post ) ) {
|
1801 |
-
return $post->post_title;
|
1802 |
-
}
|
1803 |
-
|
1804 |
-
// Filter $_SERVER array for security.
|
1805 |
-
$server_array = filter_input_array( INPUT_SERVER );
|
1806 |
-
|
1807 |
-
$current_path = isset( $server_array['REQUEST_URI'] ) ? $server_array['REQUEST_URI'] : false;
|
1808 |
-
if ( ! empty( $server_array['HTTP_REFERER'] )
|
1809 |
-
&& ! empty( $current_path )
|
1810 |
-
&& strpos( $server_array['HTTP_REFERER'], $current_path ) !== false ) {
|
1811 |
-
// Ignore this if we were on the same page so we avoid double audit entries.
|
1812 |
-
return;
|
1813 |
-
}
|
1814 |
-
if ( ! empty( $post->post_title ) ) {
|
1815 |
-
$editor_link = $this->GetEditorLink( $post );
|
1816 |
-
$this->plugin->alerts->Trigger(
|
1817 |
-
2101, array(
|
1818 |
-
'PostID' => $post->ID,
|
1819 |
-
'PostType' => $post->post_type,
|
1820 |
-
'PostTitle' => $post->post_title,
|
1821 |
-
'PostStatus' => $post->post_status,
|
1822 |
-
'PostDate' => $post->post_date,
|
1823 |
-
'PostUrl' => get_permalink( $post->ID ),
|
1824 |
-
$editor_link['name'] => $editor_link['value'],
|
1825 |
-
)
|
1826 |
-
);
|
1827 |
-
}
|
1828 |
-
}
|
1829 |
-
}
|
1830 |
-
|
1831 |
/**
|
1832 |
* Alerts for Editing of Posts, Pages and Custom Post Types.
|
1833 |
*
|
119 |
add_action( 'edit_category', array( $this, 'EventChangedCategoryParent' ) );
|
120 |
add_action( 'wp_insert_post', array( $this, 'SetRevisionLink' ), 10, 3 );
|
121 |
add_action( 'publish_future_post', array( $this, 'EventPublishFuture' ), 10, 1 );
|
122 |
+
add_filter( 'post_edit_form_tag', array( $this, 'EditingPost' ), 10, 1 );
|
123 |
|
124 |
add_action( 'create_category', array( $this, 'EventCategoryCreation' ), 10, 1 );
|
125 |
add_action( 'create_post_tag', array( $this, 'EventTagCreation' ), 10, 1 );
|
|
|
|
|
|
|
|
|
126 |
add_filter( 'wp_update_term_data', array( $this, 'event_terms_rename' ), 10, 4 );
|
127 |
|
128 |
// Check if MainWP Child Plugin exists.
|
533 |
&& ( 'unpublish' === $post_array['action'] || 'publish' === $post_array['action'] )
|
534 |
) {
|
535 |
$this->check_mainwp_status_change( $post, $old_status, $new_status );
|
536 |
+
} else {
|
537 |
+
// Ignore nav menu post type or post revision.
|
538 |
+
if ( 'nav_menu_item' === get_post_type( $post->ID ) || wp_is_post_revision( $post->ID ) ) {
|
539 |
+
return;
|
540 |
+
}
|
541 |
+
|
542 |
+
$event = 0;
|
543 |
+
if ( 'auto-draft' === $old_status && ( 'auto-draft' !== $new_status && 'inherit' !== $new_status ) ) {
|
544 |
+
// Post published.
|
545 |
+
$event = 2001;
|
546 |
+
} elseif ( 'auto-draft' === $new_status || ( 'new' === $old_status && 'inherit' === $new_status ) ) {
|
547 |
+
// Ignore it.
|
548 |
+
} elseif ( 'trash' === $new_status ) {
|
549 |
+
// Post deleted.
|
550 |
+
} elseif ( 'trash' === $old_status ) {
|
551 |
+
// Post restored.
|
552 |
+
} else {
|
553 |
+
// Post edited.
|
554 |
+
$event = 2002;
|
555 |
+
}
|
556 |
+
|
557 |
+
if ( $event ) {
|
558 |
+
// Get event data.
|
559 |
+
$editor_link = $this->GetEditorLink( $post ); // Editor link.
|
560 |
+
$event_data = $this->get_post_event_data( $post ); // Post event data.
|
561 |
+
|
562 |
+
// Set editor link in the event data.
|
563 |
+
$event_data[ $editor_link['name'] ] = $editor_link['value'];
|
564 |
+
|
565 |
+
// Log the event.
|
566 |
+
$this->plugin->alerts->Trigger( $event, $event_data );
|
567 |
+
}
|
568 |
}
|
569 |
}
|
570 |
|
623 |
} elseif ( $this->_old_post && 'mainwp' === $dashboard ) {
|
624 |
if ( 'auto-draft' === $old_status ) {
|
625 |
// Get MainWP $_POST members.
|
626 |
+
// @codingStandardsIgnoreStart
|
627 |
+
$new_post = isset( $_POST['new_post'] ) ? sanitize_text_field( wp_unslash( $_POST['new_post'] ) ) : false;
|
628 |
+
// @codingStandardsIgnoreEnd
|
629 |
+
|
630 |
+
// Get WordPress Post.
|
631 |
$new_post = maybe_unserialize( base64_decode( $new_post ) );
|
632 |
$post_catgs = filter_input( INPUT_POST, 'post_category', FILTER_SANITIZE_STRING );
|
633 |
|
926 |
*/
|
927 |
protected function CheckDateChange( $oldpost, $newpost ) {
|
928 |
$from = strtotime( $oldpost->post_date );
|
929 |
+
$to = strtotime( $newpost->post_date );
|
930 |
|
931 |
if ( 'draft' == $oldpost->post_status ) {
|
932 |
return 0;
|
936 |
$editor_link = $this->GetEditorLink( $oldpost );
|
937 |
$this->plugin->alerts->Trigger(
|
938 |
2027, array(
|
939 |
+
'PostID' => $oldpost->ID,
|
940 |
+
'PostType' => $oldpost->post_type,
|
941 |
+
'PostTitle' => $oldpost->post_title,
|
942 |
+
'PostStatus' => $oldpost->post_status,
|
943 |
+
'PostDate' => $newpost->post_date,
|
944 |
+
'PostUrl' => get_permalink( $oldpost->ID ),
|
945 |
+
'OldDate' => $oldpost->post_date,
|
946 |
+
'NewDate' => $newpost->post_date,
|
947 |
$editor_link['name'] => $editor_link['value'],
|
948 |
)
|
949 |
);
|
960 |
* @param stdClass $post - The post.
|
961 |
*/
|
962 |
protected function CheckCategoriesChange( $old_cats, $new_cats, $post ) {
|
963 |
+
$old_cats = implode( ', ', (array) $old_cats );
|
964 |
+
$new_cats = implode( ', ', (array) $new_cats );
|
965 |
|
966 |
if ( $old_cats !== $new_cats ) {
|
967 |
$event = $this->GetEventTypeForPostType( $post, 2016, 0, 2016 );
|
1105 |
$removed_tags = array_diff( $old_tags, $new_tags );
|
1106 |
|
1107 |
// Convert tags arrays to string.
|
1108 |
+
$old_tags = implode( ', ', (array) $old_tags );
|
1109 |
+
$new_tags = implode( ', ', (array) $new_tags );
|
1110 |
+
$added_tags = implode( ', ', (array) $added_tags );
|
1111 |
+
$removed_tags = implode( ', ', (array) $removed_tags );
|
1112 |
|
1113 |
// Declare event variables.
|
1114 |
$add_event = '';
|
1700 |
/**
|
1701 |
* Check auto draft and the setting: Hide Plugin in Plugins Page
|
1702 |
*
|
1703 |
+
* @param integer $code - Alert code.
|
1704 |
* @param string $title - Title.
|
1705 |
* @return boolean
|
1706 |
*/
|
1707 |
private function CheckAutoDraft( $code, $title ) {
|
1708 |
if ( 2008 == $code && 'auto-draft' == $title ) {
|
1709 |
// To do: Check setting else return false.
|
1710 |
+
if ( 1 == $this->plugin->settings->IsWPBackend() ) {
|
1711 |
return true;
|
1712 |
} else {
|
1713 |
return false;
|
1778 |
* Ignore post from BBPress, WooCommerce Plugin
|
1779 |
* Triggered on the Sensors
|
1780 |
*
|
1781 |
+
* @param WP_Post $post - The post.
|
1782 |
*/
|
1783 |
private function CheckOtherSensors( $post ) {
|
1784 |
if ( empty( $post ) || ! isset( $post->post_type ) ) {
|
1823 |
}
|
1824 |
}
|
1825 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1826 |
/**
|
1827 |
* Alerts for Editing of Posts, Pages and Custom Post Types.
|
1828 |
*
|
classes/Sensors/FileChanges.php
CHANGED
@@ -164,6 +164,7 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
164 |
'excluded_extensions' => $this->plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav', 'gif', 'ico', 'jpe', 'psd', 'raw', 'svg', 'tif', 'tiff', 'aif', 'flac', 'm4a', 'oga', 'ogg', 'ra', 'wma', 'asf', 'avi', 'mkv', 'mov', 'mp4', 'mpe', 'mpeg', 'mpg', 'ogv', 'qt', 'rm', 'vob', 'webm', 'wm', 'wmv' ) ),
|
165 |
'excluded_files' => $this->plugin->GetGlobalOption( 'scan_excluded_files', array() ),
|
166 |
'last_scanned' => $this->plugin->GetGlobalOption( 'last-scanned', false ),
|
|
|
167 |
);
|
168 |
|
169 |
// Set the scan hours.
|
@@ -319,13 +320,6 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
319 |
// Reset scan counter.
|
320 |
$this->reset_scan_counter();
|
321 |
|
322 |
-
// Scan started alert.
|
323 |
-
$this->plugin->alerts->Trigger( 6033, array(
|
324 |
-
'CurrentUserID' => '0',
|
325 |
-
'ScanStatus' => 'started',
|
326 |
-
'ScanLocation' => ! empty( $path_to_scan ) ? $path_to_scan : ABSPATH,
|
327 |
-
) );
|
328 |
-
|
329 |
// Scan the path.
|
330 |
$scanned_files = $this->scan_path( $path_to_scan );
|
331 |
|
@@ -481,21 +475,6 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
481 |
$this->plugin->alerts->Trigger( 6032, array(
|
482 |
'CurrentUserID' => '0',
|
483 |
) );
|
484 |
-
|
485 |
-
// Scan stopped with errors.
|
486 |
-
$this->plugin->alerts->Trigger( 6033, array(
|
487 |
-
'CurrentUserID' => '0',
|
488 |
-
'ScanStatus' => 'stopped',
|
489 |
-
'ScanLocation' => ! empty( $path_to_scan ) ? $path_to_scan : ABSPATH,
|
490 |
-
'ScanError' => 1,
|
491 |
-
) );
|
492 |
-
} else {
|
493 |
-
// Scan stopped.
|
494 |
-
$this->plugin->alerts->Trigger( 6033, array(
|
495 |
-
'CurrentUserID' => '0',
|
496 |
-
'ScanStatus' => 'stopped',
|
497 |
-
'ScanLocation' => ! empty( $path_to_scan ) ? $path_to_scan : ABSPATH,
|
498 |
-
) );
|
499 |
}
|
500 |
|
501 |
/**
|
@@ -506,13 +485,6 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
506 |
do_action( 'wsal_last_scanned_directory', $next_to_scan );
|
507 |
} else {
|
508 |
$this->plugin->SetGlobalOption( "is_initial_scan_$next_to_scan", 'no' ); // Initial scan check set to false.
|
509 |
-
|
510 |
-
// Scan stopped.
|
511 |
-
$this->plugin->alerts->Trigger( 6033, array(
|
512 |
-
'CurrentUserID' => '0',
|
513 |
-
'ScanStatus' => 'stopped',
|
514 |
-
'ScanLocation' => ! empty( $path_to_scan ) ? $path_to_scan : ABSPATH,
|
515 |
-
) );
|
516 |
}
|
517 |
|
518 |
// Store scanned files list.
|
@@ -533,6 +505,20 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
533 |
if ( ! $manual ) {
|
534 |
if ( 0 === $next_to_scan ) {
|
535 |
$this->plugin->SetGlobalOption( 'last-scanned', 'root' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
536 |
} else {
|
537 |
$this->plugin->SetGlobalOption( 'last-scanned', $next_to_scan );
|
538 |
}
|
@@ -564,9 +550,10 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
564 |
return $files; // Return if directory fails to open.
|
565 |
}
|
566 |
|
567 |
-
// Multsite checks.
|
568 |
-
$
|
569 |
-
$
|
|
|
570 |
|
571 |
// Scan the directory for files.
|
572 |
while ( false !== ( $item = @readdir( $dir_handle ) ) ) {
|
@@ -674,13 +661,13 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
674 |
break; // And break the loop.
|
675 |
}
|
676 |
|
677 |
-
//
|
678 |
-
if ( filesize( $absolute_name ) <
|
679 |
$this->scan_file_count = $this->scan_file_count + 1;
|
680 |
// File data.
|
681 |
$files[ $absolute_name ] = @md5_file( $absolute_name ); // File hash.
|
682 |
} else {
|
683 |
-
// File size is more than
|
684 |
$this->plugin->alerts->Trigger( 6031, array(
|
685 |
'FileLocation' => $absolute_name,
|
686 |
'CurrentUserID' => '0',
|
@@ -1065,4 +1052,3 @@ class WSAL_Sensors_FileChanges extends WSAL_AbstractSensor {
|
|
1065 |
}
|
1066 |
}
|
1067 |
}
|
1068 |
-
|
164 |
'excluded_extensions' => $this->plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav', 'gif', 'ico', 'jpe', 'psd', 'raw', 'svg', 'tif', 'tiff', 'aif', 'flac', 'm4a', 'oga', 'ogg', 'ra', 'wma', 'asf', 'avi', 'mkv', 'mov', 'mp4', 'mpe', 'mpeg', 'mpg', 'ogv', 'qt', 'rm', 'vob', 'webm', 'wm', 'wmv' ) ),
|
165 |
'excluded_files' => $this->plugin->GetGlobalOption( 'scan_excluded_files', array() ),
|
166 |
'last_scanned' => $this->plugin->GetGlobalOption( 'last-scanned', false ),
|
167 |
+
'file_size_limit' => $this->plugin->GetGlobalOption( 'scan-file-size-limit', 5 ),
|
168 |
);
|
169 |
|
170 |
// Set the scan hours.
|
320 |
// Reset scan counter.
|
321 |
$this->reset_scan_counter();
|
322 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
323 |
// Scan the path.
|
324 |
$scanned_files = $this->scan_path( $path_to_scan );
|
325 |
|
475 |
$this->plugin->alerts->Trigger( 6032, array(
|
476 |
'CurrentUserID' => '0',
|
477 |
) );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
}
|
479 |
|
480 |
/**
|
485 |
do_action( 'wsal_last_scanned_directory', $next_to_scan );
|
486 |
} else {
|
487 |
$this->plugin->SetGlobalOption( "is_initial_scan_$next_to_scan", 'no' ); // Initial scan check set to false.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
488 |
}
|
489 |
|
490 |
// Store scanned files list.
|
505 |
if ( ! $manual ) {
|
506 |
if ( 0 === $next_to_scan ) {
|
507 |
$this->plugin->SetGlobalOption( 'last-scanned', 'root' );
|
508 |
+
|
509 |
+
// Scan started alert.
|
510 |
+
$this->plugin->alerts->Trigger( 6033, array(
|
511 |
+
'CurrentUserID' => '0',
|
512 |
+
'ScanStatus' => 'started',
|
513 |
+
) );
|
514 |
+
} elseif ( 6 === $next_to_scan ) {
|
515 |
+
$this->plugin->SetGlobalOption( 'last-scanned', $next_to_scan );
|
516 |
+
|
517 |
+
// Scan stopped.
|
518 |
+
$this->plugin->alerts->Trigger( 6033, array(
|
519 |
+
'CurrentUserID' => '0',
|
520 |
+
'ScanStatus' => 'stopped',
|
521 |
+
) );
|
522 |
} else {
|
523 |
$this->plugin->SetGlobalOption( 'last-scanned', $next_to_scan );
|
524 |
}
|
550 |
return $files; // Return if directory fails to open.
|
551 |
}
|
552 |
|
553 |
+
$is_multisite = is_multisite(); // Multsite checks.
|
554 |
+
$directories = $this->scan_settings['scan_directories']; // Get directories to be scanned.
|
555 |
+
$file_size_limit = $this->scan_settings['file_size_limit']; // Get file size limit.
|
556 |
+
$file_size_limit = $file_size_limit * 1048576; // Calculate file size limit in bytes; 1MB = 1048576 bytes.
|
557 |
|
558 |
// Scan the directory for files.
|
559 |
while ( false !== ( $item = @readdir( $dir_handle ) ) ) {
|
661 |
break; // And break the loop.
|
662 |
}
|
663 |
|
664 |
+
// Check file size limit.
|
665 |
+
if ( filesize( $absolute_name ) < $file_size_limit ) {
|
666 |
$this->scan_file_count = $this->scan_file_count + 1;
|
667 |
// File data.
|
668 |
$files[ $absolute_name ] = @md5_file( $absolute_name ); // File hash.
|
669 |
} else {
|
670 |
+
// File size is more than the limit.
|
671 |
$this->plugin->alerts->Trigger( 6031, array(
|
672 |
'FileLocation' => $absolute_name,
|
673 |
'CurrentUserID' => '0',
|
1052 |
}
|
1053 |
}
|
1054 |
}
|
|
classes/Sensors/LogInOut.php
CHANGED
@@ -32,7 +32,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
32 |
* Transient name.
|
33 |
* WordPress will prefix the name with "_transient_" or "_transient_timeout_" in the options table.
|
34 |
*/
|
35 |
-
const TRANSIENT_FAILEDLOGINS
|
36 |
const TRANSIENT_FAILEDLOGINS_UNKNOWN = 'wsal-failedlogins-unknown';
|
37 |
|
38 |
/**
|
@@ -53,6 +53,10 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
53 |
add_action( 'clear_auth_cookie', array( $this, 'GetCurrentUser' ), 10 );
|
54 |
add_filter( 'wp_login_blocked', array( $this, 'EventLoginBlocked' ), 10, 1 );
|
55 |
|
|
|
|
|
|
|
|
|
56 |
// Directory for logged in users log files.
|
57 |
$user_upload_dir = wp_upload_dir();
|
58 |
$failed_login_dir = trailingslashit( $user_upload_dir['basedir'] . '/wp-security-audit-log/failed-logins/' );
|
@@ -90,6 +94,47 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
90 |
$this->_current_user = wp_get_current_user();
|
91 |
}
|
92 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93 |
/**
|
94 |
* Event Login.
|
95 |
*
|
@@ -151,7 +196,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
151 |
}
|
152 |
$this->plugin->alerts->Trigger(
|
153 |
1000, array(
|
154 |
-
'Username'
|
155 |
'CurrentUserRoles' => $user_roles,
|
156 |
), true
|
157 |
);
|
@@ -164,7 +209,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
164 |
if ( 0 != $this->_current_user->ID ) {
|
165 |
$this->plugin->alerts->Trigger(
|
166 |
1001, array(
|
167 |
-
'CurrentUserID'
|
168 |
'CurrentUserRoles' => $this->plugin->settings->GetCurrentUserRoles( $this->_current_user->roles ),
|
169 |
), true
|
170 |
);
|
@@ -271,14 +316,14 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
271 |
// Filter $_POST global array for security.
|
272 |
$post_array = filter_input_array( INPUT_POST );
|
273 |
|
274 |
-
$username
|
275 |
-
$username
|
276 |
$new_alert_code = 1003;
|
277 |
-
$user
|
278 |
-
$site_id
|
279 |
if ( $user ) {
|
280 |
$new_alert_code = 1002;
|
281 |
-
$user_roles
|
282 |
if ( $this->plugin->settings->IsLoginSuperAdmin( $username ) ) {
|
283 |
$user_roles[] = 'superadmin';
|
284 |
}
|
@@ -374,7 +419,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
374 |
$occ_unknown->UpdateMetaValue( 'Users', $users );
|
375 |
} else {
|
376 |
// In this case the value doesn't exist so set the value to array.
|
377 |
-
$users
|
378 |
$users[] = $username;
|
379 |
}
|
380 |
|
@@ -387,10 +432,10 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
387 |
// Log an alert for a login attempt with unknown username.
|
388 |
$this->plugin->alerts->Trigger(
|
389 |
$new_alert_code, array(
|
390 |
-
'Attempts'
|
391 |
-
'Users'
|
392 |
'LogFileText' => '',
|
393 |
-
'ClientIP'
|
394 |
)
|
395 |
);
|
396 |
}
|
@@ -408,7 +453,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
408 |
$user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
|
409 |
$this->plugin->alerts->Trigger(
|
410 |
4003, array(
|
411 |
-
'Username'
|
412 |
'CurrentUserRoles' => $user_roles,
|
413 |
), true
|
414 |
);
|
@@ -421,7 +466,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
421 |
* @param string $username - Username.
|
422 |
*/
|
423 |
public function EventLoginBlocked( $username ) {
|
424 |
-
$user
|
425 |
$user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
|
426 |
|
427 |
if ( $this->plugin->settings->IsLoginSuperAdmin( $username ) ) {
|
@@ -429,7 +474,7 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
429 |
}
|
430 |
$this->plugin->alerts->Trigger(
|
431 |
1004, array(
|
432 |
-
'Username'
|
433 |
'CurrentUserRoles' => $user_roles,
|
434 |
), true
|
435 |
);
|
@@ -443,18 +488,18 @@ class WSAL_Sensors_LogInOut extends WSAL_AbstractSensor {
|
|
443 |
* @return string $latest_filename - File name.
|
444 |
*/
|
445 |
private function GetLastModified( $uploads_dir_path, $filename ) {
|
446 |
-
$filename
|
447 |
-
$latest_mtime
|
448 |
$latest_filename = '';
|
449 |
if ( $handle = opendir( $uploads_dir_path ) ) {
|
450 |
-
while ( false !== ($entry = readdir( $handle )) ) {
|
451 |
if ( '.' != $entry && '..' != $entry ) {
|
452 |
$entry = strip_tags( $entry ); // Strip HTML Tags.
|
453 |
$entry = preg_replace( '/[\r\n\t ]+/', ' ', $entry ); // Remove Break/Tabs/Return Carriage.
|
454 |
$entry = preg_replace( '/[\"\*\/\:\<\>\?\'\|]+/', ' ', $entry ); // Remove Illegal Chars for folder and filename.
|
455 |
if ( preg_match( '/^' . $filename . '/i', $entry ) > 0 ) {
|
456 |
if ( filemtime( $uploads_dir_path . $entry ) > $latest_mtime ) {
|
457 |
-
$latest_mtime
|
458 |
$latest_filename = $entry;
|
459 |
}
|
460 |
}
|
32 |
* Transient name.
|
33 |
* WordPress will prefix the name with "_transient_" or "_transient_timeout_" in the options table.
|
34 |
*/
|
35 |
+
const TRANSIENT_FAILEDLOGINS = 'wsal-failedlogins-known';
|
36 |
const TRANSIENT_FAILEDLOGINS_UNKNOWN = 'wsal-failedlogins-unknown';
|
37 |
|
38 |
/**
|
53 |
add_action( 'clear_auth_cookie', array( $this, 'GetCurrentUser' ), 10 );
|
54 |
add_filter( 'wp_login_blocked', array( $this, 'EventLoginBlocked' ), 10, 1 );
|
55 |
|
56 |
+
if ( is_plugin_active( 'two-factor/two-factor.php' ) ) {
|
57 |
+
add_action( 'login_redirect', array( $this, 'event_2fa_login' ), 10, 1 );
|
58 |
+
}
|
59 |
+
|
60 |
// Directory for logged in users log files.
|
61 |
$user_upload_dir = wp_upload_dir();
|
62 |
$failed_login_dir = trailingslashit( $user_upload_dir['basedir'] . '/wp-security-audit-log/failed-logins/' );
|
94 |
$this->_current_user = wp_get_current_user();
|
95 |
}
|
96 |
|
97 |
+
/**
|
98 |
+
* Login Event for Two-Factor plugin.
|
99 |
+
*
|
100 |
+
* @since 3.3
|
101 |
+
*
|
102 |
+
* @param string $redirect_url – Redirect URL.
|
103 |
+
* @return string
|
104 |
+
*/
|
105 |
+
public function event_2fa_login( $redirect_url ) {
|
106 |
+
// @codingStandardsIgnoreStart
|
107 |
+
$provider = isset( $_POST['provider'] ) ? sanitize_text_field( wp_unslash( $_POST['provider'] ) ) : '';
|
108 |
+
$user_id = isset( $_POST['wp-auth-id'] ) ? (int) sanitize_text_field( wp_unslash( $_POST['wp-auth-id'] ) ) : '';
|
109 |
+
// @codingStandardsIgnoreEnd
|
110 |
+
|
111 |
+
// Default Two-Factor options.
|
112 |
+
$providers_2fa = array( 'Two_Factor_Email', 'Two_Factor_Totp', 'Two_Factor_FIDO_U2F', 'Two_Factor_Backup_Codes', 'Two_Factor_Dummy' );
|
113 |
+
|
114 |
+
// Get users.
|
115 |
+
$user = get_userdata( $user_id );
|
116 |
+
if ( ! $user ) {
|
117 |
+
return $redirect_url;
|
118 |
+
}
|
119 |
+
|
120 |
+
// If provider and user are set and provider is known then log the event.
|
121 |
+
if ( $provider && $user && in_array( $provider, $providers_2fa, true ) ) {
|
122 |
+
// Get user roles.
|
123 |
+
$user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
|
124 |
+
if ( $this->plugin->settings->IsLoginSuperAdmin( $user->user_login ) ) {
|
125 |
+
$user_roles[] = 'superadmin';
|
126 |
+
}
|
127 |
+
|
128 |
+
$this->plugin->alerts->Trigger(
|
129 |
+
1000, array(
|
130 |
+
'Username' => $user->user_login,
|
131 |
+
'CurrentUserRoles' => $user_roles,
|
132 |
+
), true
|
133 |
+
);
|
134 |
+
}
|
135 |
+
return $redirect_url;
|
136 |
+
}
|
137 |
+
|
138 |
/**
|
139 |
* Event Login.
|
140 |
*
|
196 |
}
|
197 |
$this->plugin->alerts->Trigger(
|
198 |
1000, array(
|
199 |
+
'Username' => $user_login,
|
200 |
'CurrentUserRoles' => $user_roles,
|
201 |
), true
|
202 |
);
|
209 |
if ( 0 != $this->_current_user->ID ) {
|
210 |
$this->plugin->alerts->Trigger(
|
211 |
1001, array(
|
212 |
+
'CurrentUserID' => $this->_current_user->ID,
|
213 |
'CurrentUserRoles' => $this->plugin->settings->GetCurrentUserRoles( $this->_current_user->roles ),
|
214 |
), true
|
215 |
);
|
316 |
// Filter $_POST global array for security.
|
317 |
$post_array = filter_input_array( INPUT_POST );
|
318 |
|
319 |
+
$username = isset( $post_array['log'] ) ? $post_array['log'] : $username;
|
320 |
+
$username = sanitize_user( $username );
|
321 |
$new_alert_code = 1003;
|
322 |
+
$user = get_user_by( 'login', $username );
|
323 |
+
$site_id = ( function_exists( 'get_current_blog_id' ) ? get_current_blog_id() : 0 );
|
324 |
if ( $user ) {
|
325 |
$new_alert_code = 1002;
|
326 |
+
$user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
|
327 |
if ( $this->plugin->settings->IsLoginSuperAdmin( $username ) ) {
|
328 |
$user_roles[] = 'superadmin';
|
329 |
}
|
419 |
$occ_unknown->UpdateMetaValue( 'Users', $users );
|
420 |
} else {
|
421 |
// In this case the value doesn't exist so set the value to array.
|
422 |
+
$users = array();
|
423 |
$users[] = $username;
|
424 |
}
|
425 |
|
432 |
// Log an alert for a login attempt with unknown username.
|
433 |
$this->plugin->alerts->Trigger(
|
434 |
$new_alert_code, array(
|
435 |
+
'Attempts' => 1,
|
436 |
+
'Users' => $users,
|
437 |
'LogFileText' => '',
|
438 |
+
'ClientIP' => $ip,
|
439 |
)
|
440 |
);
|
441 |
}
|
453 |
$user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
|
454 |
$this->plugin->alerts->Trigger(
|
455 |
4003, array(
|
456 |
+
'Username' => $user->user_login,
|
457 |
'CurrentUserRoles' => $user_roles,
|
458 |
), true
|
459 |
);
|
466 |
* @param string $username - Username.
|
467 |
*/
|
468 |
public function EventLoginBlocked( $username ) {
|
469 |
+
$user = get_user_by( 'login', $username );
|
470 |
$user_roles = $this->plugin->settings->GetCurrentUserRoles( $user->roles );
|
471 |
|
472 |
if ( $this->plugin->settings->IsLoginSuperAdmin( $username ) ) {
|
474 |
}
|
475 |
$this->plugin->alerts->Trigger(
|
476 |
1004, array(
|
477 |
+
'Username' => $username,
|
478 |
'CurrentUserRoles' => $user_roles,
|
479 |
), true
|
480 |
);
|
488 |
* @return string $latest_filename - File name.
|
489 |
*/
|
490 |
private function GetLastModified( $uploads_dir_path, $filename ) {
|
491 |
+
$filename = substr( $filename, 0, -4 );
|
492 |
+
$latest_mtime = 0;
|
493 |
$latest_filename = '';
|
494 |
if ( $handle = opendir( $uploads_dir_path ) ) {
|
495 |
+
while ( false !== ( $entry = readdir( $handle ) ) ) {
|
496 |
if ( '.' != $entry && '..' != $entry ) {
|
497 |
$entry = strip_tags( $entry ); // Strip HTML Tags.
|
498 |
$entry = preg_replace( '/[\r\n\t ]+/', ' ', $entry ); // Remove Break/Tabs/Return Carriage.
|
499 |
$entry = preg_replace( '/[\"\*\/\:\<\>\?\'\|]+/', ' ', $entry ); // Remove Illegal Chars for folder and filename.
|
500 |
if ( preg_match( '/^' . $filename . '/i', $entry ) > 0 ) {
|
501 |
if ( filemtime( $uploads_dir_path . $entry ) > $latest_mtime ) {
|
502 |
+
$latest_mtime = filemtime( $uploads_dir_path . $entry );
|
503 |
$latest_filename = $entry;
|
504 |
}
|
505 |
}
|
classes/Sensors/Public.php
ADDED
@@ -0,0 +1,543 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Sensor: Public Activity
|
4 |
+
*
|
5 |
+
* Public/Visitor activity sensor class file.
|
6 |
+
*
|
7 |
+
* @since 3.3
|
8 |
+
* @package Wsal
|
9 |
+
*/
|
10 |
+
|
11 |
+
// Exit if accessed directly.
|
12 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
+
exit;
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* System Activity sensor.
|
18 |
+
*
|
19 |
+
* @package Wsal
|
20 |
+
*/
|
21 |
+
class WSAL_Sensors_Public extends WSAL_AbstractSensor {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* 404 Visitor Transient.
|
25 |
+
*
|
26 |
+
* WordPress will prefix the name with "_transient_"
|
27 |
+
* or "_transient_timeout_" in the options table.
|
28 |
+
*/
|
29 |
+
const TRANSIENT_VISITOR_404 = 'wsal-visitor-404-attempts';
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Visitor Events.
|
33 |
+
*
|
34 |
+
* @var boolean
|
35 |
+
*/
|
36 |
+
protected $visitor_events;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Listening to events using WP hooks.
|
40 |
+
*/
|
41 |
+
public function HookEvents() {
|
42 |
+
// Set if visitor events is enabled/disabled.
|
43 |
+
$disabled_visitor_events = $this->plugin->GetGlobalOption( 'disable-visitor-events', 'no' );
|
44 |
+
|
45 |
+
// Viewing post event.
|
46 |
+
add_action( 'wp_head', array( $this, 'viewing_post' ), 10 );
|
47 |
+
|
48 |
+
// If user is visitor & visitor events are not disabled then hook the following events.
|
49 |
+
if ( ! is_user_logged_in() && 'no' === $disabled_visitor_events ) {
|
50 |
+
add_action( 'user_register', array( $this, 'event_user_register' ) );
|
51 |
+
add_action( 'comment_post', array( $this, 'event_comment' ), 10, 2 );
|
52 |
+
add_filter( 'template_redirect', array( $this, 'event_404' ) );
|
53 |
+
} elseif ( is_user_logged_in() ) {
|
54 |
+
add_action( 'user_register', array( $this, 'event_user_register' ) );
|
55 |
+
add_action( 'comment_post', array( $this, 'event_comment' ), 10, 2 );
|
56 |
+
add_filter( 'template_redirect', array( $this, 'event_404' ) );
|
57 |
+
}
|
58 |
+
|
59 |
+
// Check if WooCommerce plugin exists.
|
60 |
+
if ( ! is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
|
61 |
+
add_action( 'wp_head', array( $this, 'viewing_product' ), 10 );
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Triggered when a user is registered.
|
67 |
+
*
|
68 |
+
* @param int $user_id - User ID of the registered user.
|
69 |
+
*/
|
70 |
+
public function event_user_register( $user_id ) {
|
71 |
+
$user = get_userdata( $user_id );
|
72 |
+
$ismu = function_exists( 'is_multisite' ) && is_multisite();
|
73 |
+
$event = $ismu ? 4012 : ( is_user_logged_in() ? 4001 : 4000 );
|
74 |
+
$current_user = wp_get_current_user();
|
75 |
+
$this->plugin->alerts->Trigger(
|
76 |
+
$event, array(
|
77 |
+
'NewUserID' => $user_id,
|
78 |
+
'UserChanger' => ! empty( $current_user ) ? $current_user->user_login : '',
|
79 |
+
'NewUserData' => (object) array(
|
80 |
+
'Username' => $user->user_login,
|
81 |
+
'FirstName' => $user->user_firstname,
|
82 |
+
'LastName' => $user->user_lastname,
|
83 |
+
'Email' => $user->user_email,
|
84 |
+
'Roles' => is_array( $user->roles ) ? implode( ', ', $user->roles ) : $user->roles,
|
85 |
+
),
|
86 |
+
), true
|
87 |
+
);
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Post View Event.
|
92 |
+
*
|
93 |
+
* Alerts for Viewing of Posts and Custom Post Types.
|
94 |
+
*/
|
95 |
+
public function viewing_post() {
|
96 |
+
// Retrieve the current post object.
|
97 |
+
$post = get_queried_object();
|
98 |
+
if ( is_user_logged_in() && ! is_admin() ) {
|
99 |
+
if ( $this->check_other_sensors( $post ) ) {
|
100 |
+
return $post->post_title;
|
101 |
+
}
|
102 |
+
|
103 |
+
// Filter $_SERVER array for security.
|
104 |
+
$server_array = filter_input_array( INPUT_SERVER );
|
105 |
+
|
106 |
+
$current_path = isset( $server_array['REQUEST_URI'] ) ? $server_array['REQUEST_URI'] : false;
|
107 |
+
if ( ! empty( $server_array['HTTP_REFERER'] )
|
108 |
+
&& ! empty( $current_path )
|
109 |
+
&& strpos( $server_array['HTTP_REFERER'], $current_path ) !== false ) {
|
110 |
+
// Ignore this if we were on the same page so we avoid double audit entries.
|
111 |
+
return;
|
112 |
+
}
|
113 |
+
|
114 |
+
if ( ! empty( $post->post_title ) ) {
|
115 |
+
$this->plugin->alerts->Trigger(
|
116 |
+
2101, array(
|
117 |
+
'PostID' => $post->ID,
|
118 |
+
'PostType' => $post->post_type,
|
119 |
+
'PostTitle' => $post->post_title,
|
120 |
+
'PostStatus' => $post->post_status,
|
121 |
+
'PostDate' => $post->post_date,
|
122 |
+
'PostUrl' => get_permalink( $post->ID ),
|
123 |
+
'EditorLinkPost' => get_edit_post_link( $post->ID ),
|
124 |
+
)
|
125 |
+
);
|
126 |
+
}
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Ignore post from BBPress, WooCommerce Plugin
|
132 |
+
* Triggered on the Sensors
|
133 |
+
*
|
134 |
+
* @param WP_Post $post - The post.
|
135 |
+
*/
|
136 |
+
private function check_other_sensors( $post ) {
|
137 |
+
if ( empty( $post ) || ! isset( $post->post_type ) ) {
|
138 |
+
return false;
|
139 |
+
}
|
140 |
+
switch ( $post->post_type ) {
|
141 |
+
case 'forum':
|
142 |
+
case 'topic':
|
143 |
+
case 'reply':
|
144 |
+
case 'product':
|
145 |
+
return true;
|
146 |
+
default:
|
147 |
+
return false;
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
+
/**
|
152 |
+
* Fires immediately after a comment is inserted into the database.
|
153 |
+
*
|
154 |
+
* @param int $comment_id – The comment ID.
|
155 |
+
* @param mixed $comment_approved – 1 if the comment is approved, 0 if not, 'spam' if spam.
|
156 |
+
*/
|
157 |
+
public function event_comment( $comment_id, $comment_approved = null ) {
|
158 |
+
// @codingStandardsIgnoreStart
|
159 |
+
$post_comment = isset( $_POST['comment'] ) ? sanitize_text_field( wp_unslash( $_POST['comment'] ) ) : false;
|
160 |
+
// @codingStandardsIgnoreEnd
|
161 |
+
|
162 |
+
if ( $post_comment ) {
|
163 |
+
$comment = get_comment( $comment_id );
|
164 |
+
if ( ! empty( $comment ) ) {
|
165 |
+
if ( 'spam' !== $comment->comment_approved ) {
|
166 |
+
$post = get_post( $comment->comment_post_ID );
|
167 |
+
$comment_link = get_permalink( $post->ID ) . '#comment-' . $comment_id;
|
168 |
+
$fields = array(
|
169 |
+
'Date' => $comment->comment_date,
|
170 |
+
'CommentLink' => '<a target="_blank" href="' . $comment_link . '">' . $comment->comment_date . '</a>',
|
171 |
+
);
|
172 |
+
|
173 |
+
// Get user data.
|
174 |
+
$user_data = get_user_by( 'email', $comment->comment_author_email );
|
175 |
+
|
176 |
+
if ( ! $user_data ) {
|
177 |
+
// Set the fields.
|
178 |
+
/* Translators: 1: Post Title, 2: Comment Author */
|
179 |
+
$fields['CommentMsg'] = sprintf( esc_html__( 'A comment was posted in response to the post %1$s. The comment was posted by %2$s', 'wp-security-audit-log' ), '<strong>' . $post->post_title . '</strong>', '<strong>' . $this->check_author( $comment ) . '</strong>' );
|
180 |
+
$fields['Username'] = 'Website Visitor';
|
181 |
+
$this->plugin->alerts->Trigger( 2126, $fields );
|
182 |
+
}
|
183 |
+
}
|
184 |
+
}
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
/**
|
189 |
+
* Shows the username if the comment is owned by a user
|
190 |
+
* and the email if the comment was posted by a non WordPress user
|
191 |
+
*
|
192 |
+
* @param WP_Comment $comment – WP Comment object.
|
193 |
+
* @return string – Author username or email.
|
194 |
+
*/
|
195 |
+
private function check_author( $comment ) {
|
196 |
+
if ( username_exists( $comment->comment_author ) ) {
|
197 |
+
return $comment->comment_author;
|
198 |
+
} else {
|
199 |
+
return $comment->comment_author_email;
|
200 |
+
}
|
201 |
+
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* Event 404 Not found.
|
205 |
+
*/
|
206 |
+
public function event_404() {
|
207 |
+
$attempts = 1;
|
208 |
+
|
209 |
+
global $wp_query;
|
210 |
+
if ( ! $wp_query->is_404 ) {
|
211 |
+
return;
|
212 |
+
}
|
213 |
+
|
214 |
+
$msg = 'times';
|
215 |
+
list( $y, $m, $d ) = explode( '-', date( 'Y-m-d' ) );
|
216 |
+
$site_id = function_exists( 'get_current_blog_id' ) ? get_current_blog_id() : 0;
|
217 |
+
$ip = $this->plugin->settings->GetMainClientIP();
|
218 |
+
|
219 |
+
if ( ! is_user_logged_in() ) {
|
220 |
+
$username = 'Website Visitor';
|
221 |
+
} else {
|
222 |
+
$username = wp_get_current_user()->user_login;
|
223 |
+
}
|
224 |
+
|
225 |
+
// Request URL.
|
226 |
+
$request_uri = filter_input( INPUT_SERVER, 'REQUEST_URI', FILTER_SANITIZE_STRING );
|
227 |
+
if ( ! empty( $request_uri ) ) {
|
228 |
+
$url_404 = home_url() . $request_uri;
|
229 |
+
} elseif ( isset( $_SERVER['REQUEST_URI'] ) && ! empty( $_SERVER['REQUEST_URI'] ) ) {
|
230 |
+
$url_404 = home_url() . sanitize_text_field( wp_unslash( $_SERVER['REQUEST_URI'] ) );
|
231 |
+
}
|
232 |
+
|
233 |
+
// Remove forward slash from the URL.
|
234 |
+
$url_404 = untrailingslashit( $url_404 );
|
235 |
+
|
236 |
+
// Check for excluded 404 URls.
|
237 |
+
if ( $this->is_excluded_url( $url_404 ) ) {
|
238 |
+
return;
|
239 |
+
}
|
240 |
+
|
241 |
+
if ( 'Website Visitor' === $username ) {
|
242 |
+
// Check if the alert is disabled from the "Enable/Disable Alerts" section.
|
243 |
+
if ( ! $this->plugin->alerts->IsEnabled( 6023 ) ) {
|
244 |
+
return;
|
245 |
+
}
|
246 |
+
|
247 |
+
if ( $this->is_past_visitor_404_limit( $site_id, $username, $ip ) ) {
|
248 |
+
return;
|
249 |
+
}
|
250 |
+
|
251 |
+
$obj_occurrence = new WSAL_Models_Occurrence();
|
252 |
+
$occurrence = $obj_occurrence->CheckAlert404(
|
253 |
+
array(
|
254 |
+
$ip,
|
255 |
+
$username,
|
256 |
+
6023,
|
257 |
+
$site_id,
|
258 |
+
mktime( 0, 0, 0, $m, $d, $y ),
|
259 |
+
mktime( 0, 0, 0, $m, $d + 1, $y ) - 1,
|
260 |
+
)
|
261 |
+
);
|
262 |
+
|
263 |
+
$occurrence = count( $occurrence ) ? $occurrence[0] : null;
|
264 |
+
if ( ! empty( $occurrence ) ) {
|
265 |
+
// Update existing record.
|
266 |
+
$this->increment_visitor_404( $site_id, $username, $ip );
|
267 |
+
$new = ( (int) $occurrence->GetMetaValue( 'Attempts', 0 ) ) + 1;
|
268 |
+
|
269 |
+
if ( $new > $this->get_visitor_404_log_limit() ) {
|
270 |
+
$new = 'more than ' . $this->get_visitor_404_log_limit();
|
271 |
+
$msg .= ' This could possible be a scan, therefore keep an eye on the activity from this IP Address';
|
272 |
+
}
|
273 |
+
|
274 |
+
$link_file = $this->write_log( $new, $ip, $username, $url_404 );
|
275 |
+
|
276 |
+
$occurrence->UpdateMetaValue( 'Attempts', $new );
|
277 |
+
$occurrence->UpdateMetaValue( 'Username', $username );
|
278 |
+
$occurrence->UpdateMetaValue( 'Msg', $msg );
|
279 |
+
$occurrence->UpdateMetaValue( 'URL', $url_404 );
|
280 |
+
if ( ! empty( $link_file ) ) {
|
281 |
+
$occurrence->UpdateMetaValue( 'LinkFile', $link_file );
|
282 |
+
}
|
283 |
+
$occurrence->created_on = null;
|
284 |
+
$occurrence->Save();
|
285 |
+
} else {
|
286 |
+
$link_file = $this->write_log( 1, $ip, $username, $url_404 );
|
287 |
+
// Create a new record.
|
288 |
+
$fields = array(
|
289 |
+
'Attempts' => 1,
|
290 |
+
'Username' => $username,
|
291 |
+
'Msg' => $msg,
|
292 |
+
'URL' => $url_404,
|
293 |
+
);
|
294 |
+
if ( ! empty( $link_file ) ) {
|
295 |
+
$fields['LinkFile'] = $link_file;
|
296 |
+
}
|
297 |
+
$this->plugin->alerts->Trigger( 6023, $fields );
|
298 |
+
}
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
/**
|
303 |
+
* Method: Return true if URL is excluded otherwise false.
|
304 |
+
*
|
305 |
+
* @param string $url - 404 URL.
|
306 |
+
* @return boolean
|
307 |
+
*/
|
308 |
+
public function is_excluded_url( $url ) {
|
309 |
+
if ( empty( $url ) ) {
|
310 |
+
return false;
|
311 |
+
}
|
312 |
+
|
313 |
+
if ( in_array( $url, $this->plugin->settings->get_excluded_urls() ) ) {
|
314 |
+
return true;
|
315 |
+
}
|
316 |
+
}
|
317 |
+
|
318 |
+
/**
|
319 |
+
* Check visitor 404 limit.
|
320 |
+
*
|
321 |
+
* @param integer $site_id - Blog ID.
|
322 |
+
* @param string $username - Username.
|
323 |
+
* @param string $ip - IP address.
|
324 |
+
* @return boolean passed limit true|false
|
325 |
+
*/
|
326 |
+
protected function is_past_visitor_404_limit( $site_id, $username, $ip ) {
|
327 |
+
$get_fn = $this->plugin->IsMultisite() ? 'get_site_transient' : 'get_transient';
|
328 |
+
$data = $get_fn( self::TRANSIENT_VISITOR_404 );
|
329 |
+
return ( false !== $data ) && isset( $data[ $site_id . ':' . $username . ':' . $ip ] ) && ( $data[ $site_id . ':' . $username . ':' . $ip ] > $this->get_visitor_404_log_limit() );
|
330 |
+
}
|
331 |
+
|
332 |
+
/**
|
333 |
+
* Increment visitor 404 limit.
|
334 |
+
*
|
335 |
+
* @param integer $site_id - Blog ID.
|
336 |
+
* @param string $username - Username.
|
337 |
+
* @param string $ip - IP address.
|
338 |
+
*/
|
339 |
+
protected function increment_visitor_404( $site_id, $username, $ip ) {
|
340 |
+
$get_fn = $this->plugin->IsMultisite() ? 'get_site_transient' : 'get_transient';
|
341 |
+
$set_fn = $this->plugin->IsMultisite() ? 'set_site_transient' : 'set_transient';
|
342 |
+
$data = $get_fn( self::TRANSIENT_VISITOR_404 );
|
343 |
+
|
344 |
+
if ( ! $data ) {
|
345 |
+
$data = array();
|
346 |
+
}
|
347 |
+
|
348 |
+
if ( ! isset( $data[ $site_id . ':' . $username . ':' . $ip ] ) ) {
|
349 |
+
$data[ $site_id . ':' . $username . ':' . $ip ] = 1;
|
350 |
+
}
|
351 |
+
$data[ $site_id . ':' . $username . ':' . $ip ]++;
|
352 |
+
$set_fn( self::TRANSIENT_VISITOR_404, $data, DAY_IN_SECONDS );
|
353 |
+
}
|
354 |
+
|
355 |
+
/**
|
356 |
+
* 404 visitor limit count.
|
357 |
+
*
|
358 |
+
* @return integer limit
|
359 |
+
*/
|
360 |
+
protected function get_visitor_404_log_limit() {
|
361 |
+
return $this->plugin->settings->GetVisitor404LogLimit();
|
362 |
+
}
|
363 |
+
|
364 |
+
/**
|
365 |
+
* Write Log.
|
366 |
+
*
|
367 |
+
* Write a new line on 404 log file.
|
368 |
+
* Folder: /uploads/wp-security-audit-log/404s/
|
369 |
+
*
|
370 |
+
* @param int $attempts - Number of attempt.
|
371 |
+
* @param string $ip - IP address.
|
372 |
+
* @param string $username - Username.
|
373 |
+
* @param string $url - 404 URL.
|
374 |
+
*/
|
375 |
+
private function write_log( $attempts, $ip, $username = '', $url ) {
|
376 |
+
$name_file = null;
|
377 |
+
|
378 |
+
if ( 'on' === $this->plugin->GetGlobalOption( 'log-visitor-404', 'off' ) ) {
|
379 |
+
// Get option to log referrer.
|
380 |
+
$log_referrer = $this->plugin->GetGlobalOption( 'log-visitor-404-referrer' );
|
381 |
+
|
382 |
+
// Check localhost.
|
383 |
+
if ( '127.0.0.1' == $ip || '::1' == $ip ) {
|
384 |
+
$ip = 'localhost';
|
385 |
+
}
|
386 |
+
|
387 |
+
if ( 'on' === $log_referrer ) {
|
388 |
+
// Get the referer.
|
389 |
+
$referrer = filter_input( INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_STRING );
|
390 |
+
if ( empty( $referrer ) && isset( $_SERVER['HTTP_REFERER'] ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) {
|
391 |
+
$referrer = sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) );
|
392 |
+
}
|
393 |
+
|
394 |
+
// Data to write.
|
395 |
+
$data = '';
|
396 |
+
|
397 |
+
// Append IP if it exists.
|
398 |
+
$data = ( $ip ) ? $ip . ',' : '';
|
399 |
+
|
400 |
+
// Create/Append to the log file.
|
401 |
+
$data = $data . 'Request URL ' . $url . ',Referer ' . $referrer . ',';
|
402 |
+
} else {
|
403 |
+
// Data to write.
|
404 |
+
$data = '';
|
405 |
+
|
406 |
+
// Append IP if it exists.
|
407 |
+
$data = ( $ip ) ? $ip . ',' : '';
|
408 |
+
|
409 |
+
// Create/Append to the log file.
|
410 |
+
$data = $data . 'Request URL ' . $url . ',';
|
411 |
+
}
|
412 |
+
|
413 |
+
$username = '';
|
414 |
+
$upload_dir = wp_upload_dir();
|
415 |
+
$uploads_url = trailingslashit( $upload_dir['baseurl'] ) . 'wp-security-audit-log/404s/';
|
416 |
+
$uploads_dir_path = trailingslashit( $upload_dir['basedir'] ) . 'wp-security-audit-log/404s/';
|
417 |
+
|
418 |
+
// Check directory.
|
419 |
+
if ( $this->CheckDirectory( $uploads_dir_path ) ) {
|
420 |
+
$filename = '6023_' . date( 'Ymd' ) . '.log';
|
421 |
+
$fp = $uploads_dir_path . $filename;
|
422 |
+
$name_file = $uploads_url . $filename;
|
423 |
+
if ( ! $file = fopen( $fp, 'a' ) ) {
|
424 |
+
$i = 1;
|
425 |
+
$file_opened = false;
|
426 |
+
do {
|
427 |
+
$fp2 = substr( $fp, 0, -4 ) . '_' . $i . '.log';
|
428 |
+
if ( ! file_exists( $fp2 ) ) {
|
429 |
+
if ( $file = fopen( $fp2, 'a' ) ) {
|
430 |
+
$file_opened = true;
|
431 |
+
$name_file = $uploads_url . substr( $name_file, 0, -4 ) . '_' . $i . '.log';
|
432 |
+
}
|
433 |
+
} else {
|
434 |
+
$latest_filename = $this->GetLastModified( $uploads_dir_path, $filename );
|
435 |
+
$fp_last = $uploads_dir_path . $latest_filename;
|
436 |
+
if ( $file = fopen( $fp_last, 'a' ) ) {
|
437 |
+
$file_opened = true;
|
438 |
+
$name_file = $uploads_url . $latest_filename;
|
439 |
+
}
|
440 |
+
}
|
441 |
+
$i++;
|
442 |
+
} while ( ! $file_opened );
|
443 |
+
}
|
444 |
+
fwrite( $file, sprintf( "%s\n", $data ) );
|
445 |
+
fclose( $file );
|
446 |
+
}
|
447 |
+
}
|
448 |
+
return $name_file;
|
449 |
+
}
|
450 |
+
|
451 |
+
/**
|
452 |
+
* Viewing Product Event.
|
453 |
+
*
|
454 |
+
* Alerts for viewing of product post type for WooCommerce.
|
455 |
+
*/
|
456 |
+
public function viewing_product() {
|
457 |
+
// Retrieve the current post object.
|
458 |
+
$product = get_queried_object();
|
459 |
+
|
460 |
+
// Check product post type.
|
461 |
+
if ( ! empty( $product ) && $product instanceof WP_Post && 'product' !== $product->post_type ) {
|
462 |
+
return $product;
|
463 |
+
}
|
464 |
+
|
465 |
+
if ( is_user_logged_in() && ! is_admin() ) {
|
466 |
+
// Filter $_SERVER array for security.
|
467 |
+
$server_array = filter_input_array( INPUT_SERVER );
|
468 |
+
|
469 |
+
$current_path = isset( $server_array['REQUEST_URI'] ) ? $server_array['REQUEST_URI'] : false;
|
470 |
+
if ( ! empty( $server_array['HTTP_REFERER'] )
|
471 |
+
&& ! empty( $current_path )
|
472 |
+
&& strpos( $server_array['HTTP_REFERER'], $current_path ) !== false ) {
|
473 |
+
// Ignore this if we were on the same page so we avoid double audit entries.
|
474 |
+
return;
|
475 |
+
}
|
476 |
+
if ( ! empty( $product->post_title ) ) {
|
477 |
+
$editor_link = $this->get_product_editor_link( $product );
|
478 |
+
$this->plugin->alerts->Trigger(
|
479 |
+
9073, array(
|
480 |
+
'PostID' => $product->ID,
|
481 |
+
'PostType' => $product->post_type,
|
482 |
+
'ProductStatus' => $product->post_status,
|
483 |
+
'ProductTitle' => $product->post_title,
|
484 |
+
'ProductUrl' => get_permalink( $product->ID ),
|
485 |
+
$editor_link['name'] => $editor_link['value'],
|
486 |
+
)
|
487 |
+
);
|
488 |
+
}
|
489 |
+
}
|
490 |
+
}
|
491 |
+
|
492 |
+
/**
|
493 |
+
* Get editor link.
|
494 |
+
*
|
495 |
+
* @param WP_Post $post - Product post object.
|
496 |
+
* @return array $editor_link - Name and value link.
|
497 |
+
*/
|
498 |
+
private function get_product_editor_link( $post ) {
|
499 |
+
// Meta value key.
|
500 |
+
$name = 'EditorLinkProduct';
|
501 |
+
|
502 |
+
// Get editor post link URL.
|
503 |
+
$value = get_edit_post_link( $post->ID );
|
504 |
+
|
505 |
+
// If the URL is not empty then set values.
|
506 |
+
if ( ! empty( $value ) ) {
|
507 |
+
$editor_link = array(
|
508 |
+
'name' => $name, // Meta key.
|
509 |
+
'value' => $value, // Meta value.
|
510 |
+
);
|
511 |
+
} else {
|
512 |
+
// Get post object.
|
513 |
+
$post = get_post( $post->ID );
|
514 |
+
|
515 |
+
// Set URL action.
|
516 |
+
if ( 'revision' === $post->post_type ) {
|
517 |
+
$action = '';
|
518 |
+
} else {
|
519 |
+
$action = '&action=edit';
|
520 |
+
}
|
521 |
+
|
522 |
+
// Get and check post type object.
|
523 |
+
$post_type_object = get_post_type_object( $post->post_type );
|
524 |
+
if ( ! $post_type_object ) {
|
525 |
+
return;
|
526 |
+
}
|
527 |
+
|
528 |
+
// Set editor link manually.
|
529 |
+
if ( $post_type_object->_edit_link ) {
|
530 |
+
$link = admin_url( sprintf( $post_type_object->_edit_link . $action, $post->ID ) );
|
531 |
+
} else {
|
532 |
+
$link = '';
|
533 |
+
}
|
534 |
+
|
535 |
+
$editor_link = array(
|
536 |
+
'name' => $name, // Meta key.
|
537 |
+
'value' => $link, // Meta value.
|
538 |
+
);
|
539 |
+
}
|
540 |
+
|
541 |
+
return $editor_link;
|
542 |
+
}
|
543 |
+
}
|
classes/Sensors/System.php
CHANGED
@@ -47,38 +47,37 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
47 |
class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
48 |
|
49 |
/**
|
50 |
-
* Transient
|
|
|
51 |
* WordPress will prefix the name with "_transient_"
|
52 |
* or "_transient_timeout_" in the options table.
|
53 |
*/
|
54 |
-
const TRANSIENT_404
|
55 |
-
const TRANSIENT_VISITOR_404 = 'wsal-visitor-404-attempts';
|
56 |
|
57 |
/**
|
58 |
* Listening to events using WP hooks.
|
59 |
*/
|
60 |
public function HookEvents() {
|
61 |
-
|
62 |
add_action( 'wsal_prune', array( $this, 'EventPruneEvents' ), 10, 2 );
|
63 |
add_action( 'admin_init', array( $this, 'EventAdminInit' ) );
|
64 |
|
65 |
add_action( 'automatic_updates_complete', array( $this, 'WPUpdate' ), 10, 1 );
|
66 |
add_filter( 'template_redirect', array( $this, 'Event404' ) );
|
67 |
|
|
|
68 |
$upload_dir = wp_upload_dir();
|
|
|
69 |
$uploads_dir_path = trailingslashit( $upload_dir['basedir'] ) . 'wp-security-audit-log/404s/';
|
70 |
if ( ! $this->CheckDirectory( $uploads_dir_path ) ) {
|
71 |
wp_mkdir_p( $uploads_dir_path );
|
72 |
}
|
73 |
|
74 |
// Directory for logged in users log files.
|
75 |
-
$
|
76 |
-
$user_upload_path = trailingslashit( $user_upload_dir['basedir'] . '/wp-security-audit-log/404s/users/' );
|
77 |
$this->remove_sub_directories( $user_upload_path ); // Remove it.
|
78 |
|
79 |
// Directory for visitor log files.
|
80 |
-
$
|
81 |
-
$visitor_upload_path = trailingslashit( $visitor_upload_dir['basedir'] . '/wp-security-audit-log/404s/visitors/' );
|
82 |
$this->remove_sub_directories( $visitor_upload_path ); // Remove it.
|
83 |
|
84 |
// Cron Job 404 log files pruning.
|
@@ -168,15 +167,6 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
|
168 |
return $this->plugin->settings->Get404LogLimit();
|
169 |
}
|
170 |
|
171 |
-
/**
|
172 |
-
* 404 visitor limit count.
|
173 |
-
*
|
174 |
-
* @return integer limit
|
175 |
-
*/
|
176 |
-
protected function GetVisitor404LogLimit() {
|
177 |
-
return $this->plugin->settings->GetVisitor404LogLimit();
|
178 |
-
}
|
179 |
-
|
180 |
/**
|
181 |
* Expiration of the transient saved in the WP database.
|
182 |
*
|
@@ -196,24 +186,10 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
|
196 |
*/
|
197 |
protected function IsPast404Limit( $site_id, $username, $ip ) {
|
198 |
$get_fn = $this->IsMultisite() ? 'get_site_transient' : 'get_transient';
|
199 |
-
$data
|
200 |
return ( false !== $data ) && isset( $data[ $site_id . ':' . $username . ':' . $ip ] ) && ($data[ $site_id . ':' . $username . ':' . $ip ] > $this->Get404LogLimit());
|
201 |
}
|
202 |
|
203 |
-
/**
|
204 |
-
* Check visitor 404 limit.
|
205 |
-
*
|
206 |
-
* @param integer $site_id - Blog ID.
|
207 |
-
* @param string $username - Username.
|
208 |
-
* @param string $ip - IP address.
|
209 |
-
* @return boolean passed limit true|false
|
210 |
-
*/
|
211 |
-
protected function IsPastVisitor404Limit( $site_id, $username, $ip ) {
|
212 |
-
$get_fn = $this->IsMultisite() ? 'get_site_transient' : 'get_transient';
|
213 |
-
$data = $get_fn( self::TRANSIENT_VISITOR_404 );
|
214 |
-
return ( false !== $data ) && isset( $data[ $site_id . ':' . $username . ':' . $ip ] ) && ( $data[ $site_id . ':' . $username . ':' . $ip ] > $this->GetVisitor404LogLimit() );
|
215 |
-
}
|
216 |
-
|
217 |
/**
|
218 |
* Increment 404 limit.
|
219 |
*
|
@@ -236,28 +212,6 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
|
236 |
$set_fn( self::TRANSIENT_404, $data, $this->Get404Expiration() );
|
237 |
}
|
238 |
|
239 |
-
/**
|
240 |
-
* Increment visitor 404 limit.
|
241 |
-
*
|
242 |
-
* @param integer $site_id - Blog ID.
|
243 |
-
* @param string $username - Username.
|
244 |
-
* @param string $ip - IP address.
|
245 |
-
*/
|
246 |
-
protected function IncrementVisitor404( $site_id, $username, $ip ) {
|
247 |
-
$get_fn = $this->IsMultisite() ? 'get_site_transient' : 'get_transient';
|
248 |
-
$set_fn = $this->IsMultisite() ? 'set_site_transient' : 'set_transient';
|
249 |
-
|
250 |
-
$data = $get_fn( self::TRANSIENT_VISITOR_404 );
|
251 |
-
if ( ! $data ) {
|
252 |
-
$data = array();
|
253 |
-
}
|
254 |
-
if ( ! isset( $data[ $site_id . ':' . $username . ':' . $ip ] ) ) {
|
255 |
-
$data[ $site_id . ':' . $username . ':' . $ip ] = 1;
|
256 |
-
}
|
257 |
-
$data[ $site_id . ':' . $username . ':' . $ip ]++;
|
258 |
-
$set_fn( self::TRANSIENT_VISITOR_404, $data, $this->Get404Expiration() );
|
259 |
-
}
|
260 |
-
|
261 |
/**
|
262 |
* Event 404 Not found.
|
263 |
*/
|
@@ -356,65 +310,6 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
|
356 |
}
|
357 |
$this->plugin->alerts->Trigger( 6007, $fields );
|
358 |
}
|
359 |
-
} else {
|
360 |
-
// Check if the alert is disabled from the "Enable/Disable Alerts" section.
|
361 |
-
if ( ! $this->plugin->alerts->IsEnabled( 6023 ) ) {
|
362 |
-
return;
|
363 |
-
}
|
364 |
-
|
365 |
-
if ( $this->IsPastVisitor404Limit( $site_id, $username, $ip ) ) {
|
366 |
-
return;
|
367 |
-
}
|
368 |
-
|
369 |
-
$obj_occurrence = new WSAL_Models_Occurrence();
|
370 |
-
|
371 |
-
$occ = $obj_occurrence->CheckAlert404(
|
372 |
-
array(
|
373 |
-
$ip,
|
374 |
-
$username,
|
375 |
-
6023,
|
376 |
-
$site_id,
|
377 |
-
mktime( 0, 0, 0, $m, $d, $y ),
|
378 |
-
mktime( 0, 0, 0, $m, $d + 1, $y ) - 1,
|
379 |
-
)
|
380 |
-
);
|
381 |
-
|
382 |
-
$occ = count( $occ ) ? $occ[0] : null;
|
383 |
-
if ( ! empty( $occ ) ) {
|
384 |
-
// Update existing record.
|
385 |
-
$this->IncrementVisitor404( $site_id, $username, $ip );
|
386 |
-
$new = ( (int) $occ->GetMetaValue( 'Attempts', 0 ) ) + 1;
|
387 |
-
|
388 |
-
if ( $new > $this->GetVisitor404LogLimit() ) {
|
389 |
-
$new = 'more than ' . $this->GetVisitor404LogLimit();
|
390 |
-
$msg .= ' This could possible be a scan, therefore keep an eye on the activity from this IP Address';
|
391 |
-
}
|
392 |
-
|
393 |
-
$link_file = $this->WriteLog( $new, $ip, $username, false, $url_404 );
|
394 |
-
|
395 |
-
$occ->UpdateMetaValue( 'Attempts', $new );
|
396 |
-
$occ->UpdateMetaValue( 'Username', $username );
|
397 |
-
$occ->UpdateMetaValue( 'Msg', $msg );
|
398 |
-
$occ->UpdateMetaValue( 'URL', $url_404 );
|
399 |
-
if ( ! empty( $link_file ) ) {
|
400 |
-
$occ->UpdateMetaValue( 'LinkFile', $link_file );
|
401 |
-
}
|
402 |
-
$occ->created_on = null;
|
403 |
-
$occ->Save();
|
404 |
-
} else {
|
405 |
-
$link_file = $this->WriteLog( 1, $ip, $username, false, $url_404 );
|
406 |
-
// Create a new record.
|
407 |
-
$fields = array(
|
408 |
-
'Attempts' => 1,
|
409 |
-
'Username' => $username,
|
410 |
-
'Msg' => $msg,
|
411 |
-
'URL' => $url_404,
|
412 |
-
);
|
413 |
-
if ( ! empty( $link_file ) ) {
|
414 |
-
$fields['LinkFile'] = $link_file;
|
415 |
-
}
|
416 |
-
$this->plugin->alerts->Trigger( 6023, $fields );
|
417 |
-
}
|
418 |
}
|
419 |
}
|
420 |
|
@@ -858,164 +753,90 @@ class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
|
858 |
* Write a new line on 404 log file.
|
859 |
* Folder: /uploads/wp-security-audit-log/404s/
|
860 |
*
|
861 |
-
* @param int $attempts
|
862 |
-
* @param string $ip
|
863 |
-
* @param string $username
|
864 |
* @param bool $logged_in - True if logged in.
|
865 |
-
* @param string $url
|
866 |
*/
|
867 |
private function WriteLog( $attempts, $ip, $username = '', $logged_in = true, $url ) {
|
868 |
$name_file = null;
|
869 |
|
870 |
-
if ( $logged_in ) {
|
871 |
-
|
872 |
-
|
873 |
-
$log_referrer = $this->plugin->GetGlobalOption( 'log-404-referrer' );
|
874 |
-
|
875 |
-
// Check localhost.
|
876 |
-
if ( '127.0.0.1' == $ip || '::1' == $ip ) {
|
877 |
-
$ip = 'localhost';
|
878 |
-
}
|
879 |
-
|
880 |
-
if ( 'on' === $log_referrer ) {
|
881 |
-
// Get the referer.
|
882 |
-
$referrer = filter_input( INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_STRING );
|
883 |
-
if ( empty( $referrer ) && isset( $_SERVER['HTTP_REFERER'] ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) {
|
884 |
-
$referrer = sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) );
|
885 |
-
}
|
886 |
-
|
887 |
-
// Data to write.
|
888 |
-
$data = '';
|
889 |
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
// Create/Append to the log file.
|
894 |
-
$data = $data . 'Request URL ' . $url . ',Referer ' . $referrer . ',';
|
895 |
-
} else {
|
896 |
-
// Data to write.
|
897 |
-
$data = '';
|
898 |
-
|
899 |
-
// Append IP if it exists.
|
900 |
-
$data = ( $ip ) ? $ip . ',' : '';
|
901 |
-
|
902 |
-
// Create/Append to the log file.
|
903 |
-
$data = $data . 'Request URL ' . $url . ',';
|
904 |
-
}
|
905 |
-
|
906 |
-
if ( ! is_user_logged_in() ) {
|
907 |
-
$username = '';
|
908 |
-
} else {
|
909 |
-
$username = $username . '_';
|
910 |
-
}
|
911 |
-
|
912 |
-
$upload_dir = wp_upload_dir();
|
913 |
-
$uploads_url = trailingslashit( $upload_dir['baseurl'] ) . 'wp-security-audit-log/404s/';
|
914 |
-
$uploads_dir_path = trailingslashit( $upload_dir['basedir'] ) . 'wp-security-audit-log/404s/';
|
915 |
-
|
916 |
-
// Check directory.
|
917 |
-
if ( $this->CheckDirectory( $uploads_dir_path ) ) {
|
918 |
-
$filename = '6007_' . date( 'Ymd' ) . '.log';
|
919 |
-
$fp = $uploads_dir_path . $filename;
|
920 |
-
$name_file = $uploads_url . $filename;
|
921 |
-
if ( ! $file = fopen( $fp, 'a' ) ) {
|
922 |
-
$i = 1;
|
923 |
-
$file_opened = false;
|
924 |
-
do {
|
925 |
-
$fp2 = substr( $fp, 0, -4 ) . '_' . $i . '.log';
|
926 |
-
if ( ! file_exists( $fp2 ) ) {
|
927 |
-
if ( $file = fopen( $fp2, 'a' ) ) {
|
928 |
-
$file_opened = true;
|
929 |
-
$name_file = $uploads_url . substr( $name_file, 0, -4 ) . '_' . $i . '.log';
|
930 |
-
}
|
931 |
-
} else {
|
932 |
-
$latest_filename = $this->GetLastModified( $uploads_dir_path, $filename );
|
933 |
-
$fp_last = $uploads_dir_path . $latest_filename;
|
934 |
-
if ( $file = fopen( $fp_last, 'a' ) ) {
|
935 |
-
$file_opened = true;
|
936 |
-
$name_file = $uploads_url . $latest_filename;
|
937 |
-
}
|
938 |
-
}
|
939 |
-
$i++;
|
940 |
-
} while ( ! $file_opened );
|
941 |
-
}
|
942 |
-
fwrite( $file, sprintf( "%s\n", $data ) );
|
943 |
-
fclose( $file );
|
944 |
-
}
|
945 |
}
|
946 |
-
} else {
|
947 |
-
if ( 'on' === $this->plugin->GetGlobalOption( 'log-visitor-404', 'off' ) ) {
|
948 |
-
// Get option to log referrer.
|
949 |
-
$log_referrer = $this->plugin->GetGlobalOption( 'log-visitor-404-referrer' );
|
950 |
|
951 |
-
|
952 |
-
|
953 |
-
|
|
|
|
|
954 |
}
|
955 |
|
956 |
-
|
957 |
-
|
958 |
-
$referrer = filter_input( INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_STRING );
|
959 |
-
if ( empty( $referrer ) && isset( $_SERVER['HTTP_REFERER'] ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) {
|
960 |
-
$referrer = sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) );
|
961 |
-
}
|
962 |
-
|
963 |
-
// Data to write.
|
964 |
-
$data = '';
|
965 |
|
966 |
-
|
967 |
-
|
968 |
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
|
975 |
-
|
976 |
-
|
977 |
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
|
|
|
982 |
$username = '';
|
983 |
-
|
984 |
-
$
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
|
1001 |
-
|
1002 |
-
|
1003 |
-
$
|
1004 |
-
$
|
1005 |
-
if ( $file = fopen( $fp_last, 'a' ) ) {
|
1006 |
-
$file_opened = true;
|
1007 |
-
$name_file = $uploads_url . $latest_filename;
|
1008 |
-
}
|
1009 |
}
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
|
|
|
|
|
|
|
|
|
|
|
1015 |
}
|
|
|
|
|
1016 |
}
|
1017 |
}
|
1018 |
-
|
1019 |
return $name_file;
|
1020 |
}
|
1021 |
|
47 |
class WSAL_Sensors_System extends WSAL_AbstractSensor {
|
48 |
|
49 |
/**
|
50 |
+
* 404 User Transient.
|
51 |
+
*
|
52 |
* WordPress will prefix the name with "_transient_"
|
53 |
* or "_transient_timeout_" in the options table.
|
54 |
*/
|
55 |
+
const TRANSIENT_404 = 'wsal-404-attempts';
|
|
|
56 |
|
57 |
/**
|
58 |
* Listening to events using WP hooks.
|
59 |
*/
|
60 |
public function HookEvents() {
|
|
|
61 |
add_action( 'wsal_prune', array( $this, 'EventPruneEvents' ), 10, 2 );
|
62 |
add_action( 'admin_init', array( $this, 'EventAdminInit' ) );
|
63 |
|
64 |
add_action( 'automatic_updates_complete', array( $this, 'WPUpdate' ), 10, 1 );
|
65 |
add_filter( 'template_redirect', array( $this, 'Event404' ) );
|
66 |
|
67 |
+
// Get WP upload directory.
|
68 |
$upload_dir = wp_upload_dir();
|
69 |
+
|
70 |
$uploads_dir_path = trailingslashit( $upload_dir['basedir'] ) . 'wp-security-audit-log/404s/';
|
71 |
if ( ! $this->CheckDirectory( $uploads_dir_path ) ) {
|
72 |
wp_mkdir_p( $uploads_dir_path );
|
73 |
}
|
74 |
|
75 |
// Directory for logged in users log files.
|
76 |
+
$user_upload_path = trailingslashit( $upload_dir['basedir'] . '/wp-security-audit-log/404s/users/' );
|
|
|
77 |
$this->remove_sub_directories( $user_upload_path ); // Remove it.
|
78 |
|
79 |
// Directory for visitor log files.
|
80 |
+
$visitor_upload_path = trailingslashit( $upload_dir['basedir'] . '/wp-security-audit-log/404s/visitors/' );
|
|
|
81 |
$this->remove_sub_directories( $visitor_upload_path ); // Remove it.
|
82 |
|
83 |
// Cron Job 404 log files pruning.
|
167 |
return $this->plugin->settings->Get404LogLimit();
|
168 |
}
|
169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
/**
|
171 |
* Expiration of the transient saved in the WP database.
|
172 |
*
|
186 |
*/
|
187 |
protected function IsPast404Limit( $site_id, $username, $ip ) {
|
188 |
$get_fn = $this->IsMultisite() ? 'get_site_transient' : 'get_transient';
|
189 |
+
$data = $get_fn( self::TRANSIENT_404 );
|
190 |
return ( false !== $data ) && isset( $data[ $site_id . ':' . $username . ':' . $ip ] ) && ($data[ $site_id . ':' . $username . ':' . $ip ] > $this->Get404LogLimit());
|
191 |
}
|
192 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
193 |
/**
|
194 |
* Increment 404 limit.
|
195 |
*
|
212 |
$set_fn( self::TRANSIENT_404, $data, $this->Get404Expiration() );
|
213 |
}
|
214 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
/**
|
216 |
* Event 404 Not found.
|
217 |
*/
|
310 |
}
|
311 |
$this->plugin->alerts->Trigger( 6007, $fields );
|
312 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
}
|
314 |
}
|
315 |
|
753 |
* Write a new line on 404 log file.
|
754 |
* Folder: /uploads/wp-security-audit-log/404s/
|
755 |
*
|
756 |
+
* @param int $attempts - Number of attempt.
|
757 |
+
* @param string $ip - IP address.
|
758 |
+
* @param string $username - Username.
|
759 |
* @param bool $logged_in - True if logged in.
|
760 |
+
* @param string $url - 404 URL.
|
761 |
*/
|
762 |
private function WriteLog( $attempts, $ip, $username = '', $logged_in = true, $url ) {
|
763 |
$name_file = null;
|
764 |
|
765 |
+
if ( $logged_in && 'on' === $this->plugin->GetGlobalOption( 'log-404', 'off' ) ) {
|
766 |
+
// Get option to log referrer.
|
767 |
+
$log_referrer = $this->plugin->GetGlobalOption( 'log-404-referrer' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
768 |
|
769 |
+
// Check localhost.
|
770 |
+
if ( '127.0.0.1' == $ip || '::1' == $ip ) {
|
771 |
+
$ip = 'localhost';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
772 |
}
|
|
|
|
|
|
|
|
|
773 |
|
774 |
+
if ( 'on' === $log_referrer ) {
|
775 |
+
// Get the referer.
|
776 |
+
$referrer = filter_input( INPUT_SERVER, 'HTTP_REFERER', FILTER_SANITIZE_STRING );
|
777 |
+
if ( empty( $referrer ) && isset( $_SERVER['HTTP_REFERER'] ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) {
|
778 |
+
$referrer = sanitize_text_field( wp_unslash( $_SERVER['HTTP_REFERER'] ) );
|
779 |
}
|
780 |
|
781 |
+
// Data to write.
|
782 |
+
$data = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
783 |
|
784 |
+
// Append IP if it exists.
|
785 |
+
$data = ( $ip ) ? $ip . ',' : '';
|
786 |
|
787 |
+
// Create/Append to the log file.
|
788 |
+
$data = $data . 'Request URL ' . $url . ',Referer ' . $referrer . ',';
|
789 |
+
} else {
|
790 |
+
// Data to write.
|
791 |
+
$data = '';
|
792 |
|
793 |
+
// Append IP if it exists.
|
794 |
+
$data = ( $ip ) ? $ip . ',' : '';
|
795 |
|
796 |
+
// Create/Append to the log file.
|
797 |
+
$data = $data . 'Request URL ' . $url . ',';
|
798 |
+
}
|
799 |
|
800 |
+
if ( ! is_user_logged_in() ) {
|
801 |
$username = '';
|
802 |
+
} else {
|
803 |
+
$username = $username . '_';
|
804 |
+
}
|
805 |
+
|
806 |
+
$upload_dir = wp_upload_dir();
|
807 |
+
$uploads_url = trailingslashit( $upload_dir['baseurl'] ) . 'wp-security-audit-log/404s/';
|
808 |
+
$uploads_dir_path = trailingslashit( $upload_dir['basedir'] ) . 'wp-security-audit-log/404s/';
|
809 |
+
|
810 |
+
// Check directory.
|
811 |
+
if ( $this->CheckDirectory( $uploads_dir_path ) ) {
|
812 |
+
$filename = '6007_' . date( 'Ymd' ) . '.log';
|
813 |
+
$fp = $uploads_dir_path . $filename;
|
814 |
+
$name_file = $uploads_url . $filename;
|
815 |
+
if ( ! $file = fopen( $fp, 'a' ) ) {
|
816 |
+
$i = 1;
|
817 |
+
$file_opened = false;
|
818 |
+
do {
|
819 |
+
$fp2 = substr( $fp, 0, -4 ) . '_' . $i . '.log';
|
820 |
+
if ( ! file_exists( $fp2 ) ) {
|
821 |
+
if ( $file = fopen( $fp2, 'a' ) ) {
|
822 |
+
$file_opened = true;
|
823 |
+
$name_file = $uploads_url . substr( $name_file, 0, -4 ) . '_' . $i . '.log';
|
|
|
|
|
|
|
|
|
824 |
}
|
825 |
+
} else {
|
826 |
+
$latest_filename = $this->GetLastModified( $uploads_dir_path, $filename );
|
827 |
+
$fp_last = $uploads_dir_path . $latest_filename;
|
828 |
+
if ( $file = fopen( $fp_last, 'a' ) ) {
|
829 |
+
$file_opened = true;
|
830 |
+
$name_file = $uploads_url . $latest_filename;
|
831 |
+
}
|
832 |
+
}
|
833 |
+
$i++;
|
834 |
+
} while ( ! $file_opened );
|
835 |
}
|
836 |
+
fwrite( $file, sprintf( "%s\n", $data ) );
|
837 |
+
fclose( $file );
|
838 |
}
|
839 |
}
|
|
|
840 |
return $name_file;
|
841 |
}
|
842 |
|
classes/Sensors/UserProfile.php
CHANGED
@@ -39,7 +39,6 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
|
|
39 |
*/
|
40 |
public function HookEvents() {
|
41 |
add_action( 'admin_init', array( $this, 'EventAdminInit' ) );
|
42 |
-
add_action( 'user_register', array( $this, 'EventUserRegister' ) );
|
43 |
add_action( 'edit_user_profile_update', array( $this, 'EventUserChanged' ) );
|
44 |
add_action( 'personal_options_update', array( $this, 'EventUserChanged' ) );
|
45 |
add_action( 'delete_user', array( $this, 'EventUserDeleted' ) );
|
@@ -70,31 +69,6 @@ class WSAL_Sensors_UserProfile extends WSAL_AbstractSensor {
|
|
70 |
}
|
71 |
}
|
72 |
|
73 |
-
/**
|
74 |
-
* Triggered when a user is registered.
|
75 |
-
*
|
76 |
-
* @param int $user_id - User ID of the registered user.
|
77 |
-
*/
|
78 |
-
public function EventUserRegister( $user_id ) {
|
79 |
-
$user = get_userdata( $user_id );
|
80 |
-
$ismu = function_exists( 'is_multisite' ) && is_multisite();
|
81 |
-
$event = $ismu ? 4012 : ( is_user_logged_in() ? 4001 : 4000 );
|
82 |
-
$current_user = wp_get_current_user();
|
83 |
-
$this->plugin->alerts->Trigger(
|
84 |
-
$event, array(
|
85 |
-
'NewUserID' => $user_id,
|
86 |
-
'UserChanger' => ! empty( $current_user ) ? $current_user->user_login : '',
|
87 |
-
'NewUserData' => (object) array(
|
88 |
-
'Username' => $user->user_login,
|
89 |
-
'FirstName' => $user->user_firstname,
|
90 |
-
'LastName' => $user->user_lastname,
|
91 |
-
'Email' => $user->user_email,
|
92 |
-
'Roles' => is_array( $user->roles ) ? implode( ', ', $user->roles ) : $user->roles,
|
93 |
-
),
|
94 |
-
), true
|
95 |
-
);
|
96 |
-
}
|
97 |
-
|
98 |
/**
|
99 |
* Triggered when a user role is changed.
|
100 |
*
|
39 |
*/
|
40 |
public function HookEvents() {
|
41 |
add_action( 'admin_init', array( $this, 'EventAdminInit' ) );
|
|
|
42 |
add_action( 'edit_user_profile_update', array( $this, 'EventUserChanged' ) );
|
43 |
add_action( 'personal_options_update', array( $this, 'EventUserChanged' ) );
|
44 |
add_action( 'delete_user', array( $this, 'EventUserDeleted' ) );
|
69 |
}
|
70 |
}
|
71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
/**
|
73 |
* Triggered when a user role is changed.
|
74 |
*
|
classes/Sensors/WooCommerce.php
CHANGED
@@ -123,13 +123,13 @@ class WSAL_Sensors_WooCommerce extends WSAL_AbstractSensor {
|
|
123 |
add_action( 'wp_trash_post', array( $this, 'EventTrashed' ), 10, 1 );
|
124 |
add_action( 'untrash_post', array( $this, 'EventUntrashed' ) );
|
125 |
|
|
|
126 |
add_action( 'create_product_cat', array( $this, 'EventCategoryCreation' ), 10, 1 );
|
127 |
|
128 |
// Detect live change in stock.
|
129 |
add_filter( 'woocommerce_order_item_quantity', array( $this, 'set_old_stock' ), 10, 3 );
|
130 |
add_action( 'woocommerce_product_set_stock', array( $this, 'product_stock_changed' ), 10, 1 );
|
131 |
|
132 |
-
add_action( 'wp_head', array( $this, 'viewing_product' ), 10 );
|
133 |
add_filter( 'post_edit_form_tag', array( $this, 'editing_product' ), 10, 1 );
|
134 |
}
|
135 |
|
@@ -1381,45 +1381,6 @@ class WSAL_Sensors_WooCommerce extends WSAL_AbstractSensor {
|
|
1381 |
return $editor_link;
|
1382 |
}
|
1383 |
|
1384 |
-
/**
|
1385 |
-
* Alerts for viewing of product post type for WooCommerce.
|
1386 |
-
*/
|
1387 |
-
public function viewing_product() {
|
1388 |
-
// Retrieve the current post object.
|
1389 |
-
$product = get_queried_object();
|
1390 |
-
|
1391 |
-
// Check product post type.
|
1392 |
-
if ( ! empty( $product ) && $product instanceof WP_Post && 'product' !== $product->post_type ) {
|
1393 |
-
return $product;
|
1394 |
-
}
|
1395 |
-
|
1396 |
-
if ( is_user_logged_in() && ! is_admin() ) {
|
1397 |
-
// Filter $_SERVER array for security.
|
1398 |
-
$server_array = filter_input_array( INPUT_SERVER );
|
1399 |
-
|
1400 |
-
$current_path = isset( $server_array['REQUEST_URI'] ) ? $server_array['REQUEST_URI'] : false;
|
1401 |
-
if ( ! empty( $server_array['HTTP_REFERER'] )
|
1402 |
-
&& ! empty( $current_path )
|
1403 |
-
&& strpos( $server_array['HTTP_REFERER'], $current_path ) !== false ) {
|
1404 |
-
// Ignore this if we were on the same page so we avoid double audit entries.
|
1405 |
-
return;
|
1406 |
-
}
|
1407 |
-
if ( ! empty( $product->post_title ) ) {
|
1408 |
-
$editor_link = $this->GetEditorLink( $product );
|
1409 |
-
$this->plugin->alerts->Trigger(
|
1410 |
-
9073, array(
|
1411 |
-
'PostID' => $product->ID,
|
1412 |
-
'PostType' => $product->post_type,
|
1413 |
-
'ProductStatus' => $product->post_status,
|
1414 |
-
'ProductTitle' => $product->post_title,
|
1415 |
-
'ProductUrl' => get_permalink( $product->ID ),
|
1416 |
-
$editor_link['name'] => $editor_link['value'],
|
1417 |
-
)
|
1418 |
-
);
|
1419 |
-
}
|
1420 |
-
}
|
1421 |
-
}
|
1422 |
-
|
1423 |
/**
|
1424 |
* Alerts for editing of product post type for WooCommerce.
|
1425 |
*
|
123 |
add_action( 'wp_trash_post', array( $this, 'EventTrashed' ), 10, 1 );
|
124 |
add_action( 'untrash_post', array( $this, 'EventUntrashed' ) );
|
125 |
|
126 |
+
// Product category events.
|
127 |
add_action( 'create_product_cat', array( $this, 'EventCategoryCreation' ), 10, 1 );
|
128 |
|
129 |
// Detect live change in stock.
|
130 |
add_filter( 'woocommerce_order_item_quantity', array( $this, 'set_old_stock' ), 10, 3 );
|
131 |
add_action( 'woocommerce_product_set_stock', array( $this, 'product_stock_changed' ), 10, 1 );
|
132 |
|
|
|
133 |
add_filter( 'post_edit_form_tag', array( $this, 'editing_product' ), 10, 1 );
|
134 |
}
|
135 |
|
1381 |
return $editor_link;
|
1382 |
}
|
1383 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1384 |
/**
|
1385 |
* Alerts for editing of product post type for WooCommerce.
|
1386 |
*
|
classes/Settings.php
CHANGED
@@ -653,8 +653,8 @@ class WSAL_Settings {
|
|
653 |
* Returns access tokens for a particular action.
|
654 |
*
|
655 |
* @param string $action - Type of action.
|
656 |
-
* @throws Exception
|
657 |
-
* @return
|
658 |
*/
|
659 |
public function GetAccessTokens( $action ) {
|
660 |
$allowed = array();
|
@@ -662,9 +662,16 @@ class WSAL_Settings {
|
|
662 |
case 'view':
|
663 |
$allowed = $this->GetAllowedPluginViewers();
|
664 |
$allowed = array_merge( $allowed, $this->GetAllowedPluginEditors() );
|
665 |
-
if ( ! $this->IsRestrictAdmins() ) {
|
666 |
$allowed = array_merge( $allowed, $this->GetSuperAdmins() );
|
667 |
$allowed = array_merge( $allowed, $this->GetAdmins() );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
668 |
}
|
669 |
break;
|
670 |
case 'edit':
|
@@ -1620,6 +1627,17 @@ class WSAL_Settings {
|
|
1620 |
$value = str_replace( ',', ', ', $value );
|
1621 |
return $highlight_start_tag . esc_html( $value ) . $highlight_end_tag;
|
1622 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1623 |
default:
|
1624 |
return $highlight_start_tag . esc_html( $value ) . $highlight_end_tag;
|
1625 |
}
|
@@ -1687,4 +1705,142 @@ class WSAL_Settings {
|
|
1687 |
|
1688 |
return isset( $get_array['wsal-cbid'] ) ? (int) $get_array['wsal-cbid'] : 0;
|
1689 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1690 |
}
|
653 |
* Returns access tokens for a particular action.
|
654 |
*
|
655 |
* @param string $action - Type of action.
|
656 |
+
* @throws Exception - Unknown action exception.
|
657 |
+
* @return array - List of tokens (usernames, roles etc).
|
658 |
*/
|
659 |
public function GetAccessTokens( $action ) {
|
660 |
$allowed = array();
|
662 |
case 'view':
|
663 |
$allowed = $this->GetAllowedPluginViewers();
|
664 |
$allowed = array_merge( $allowed, $this->GetAllowedPluginEditors() );
|
665 |
+
if ( ! $this->_plugin->IsMultisite() && ! $this->IsRestrictAdmins() ) {
|
666 |
$allowed = array_merge( $allowed, $this->GetSuperAdmins() );
|
667 |
$allowed = array_merge( $allowed, $this->GetAdmins() );
|
668 |
+
} elseif ( $this->_plugin->IsMultisite() && ! $this->IsRestrictAdmins() ) {
|
669 |
+
if ( 'only_superadmins' === $this->get_restrict_plugin_setting() ) {
|
670 |
+
$allowed = array_merge( $allowed, $this->GetSuperAdmins() );
|
671 |
+
} else {
|
672 |
+
$allowed = array_merge( $allowed, $this->GetSuperAdmins() );
|
673 |
+
$allowed = array_merge( $allowed, $this->GetAdmins() );
|
674 |
+
}
|
675 |
}
|
676 |
break;
|
677 |
case 'edit':
|
1627 |
$value = str_replace( ',', ', ', $value );
|
1628 |
return $highlight_start_tag . esc_html( $value ) . $highlight_end_tag;
|
1629 |
|
1630 |
+
case '%FileSettings%' === $name:
|
1631 |
+
$file_settings_args = array(
|
1632 |
+
'page' => 'wsal-settings',
|
1633 |
+
'tab' => 'file-changes',
|
1634 |
+
);
|
1635 |
+
$file_settings = add_query_arg( $file_settings_args, admin_url( 'admin.php' ) );
|
1636 |
+
return '<a href="' . esc_url( $file_settings ) . '">' . esc_html__( 'plugin settings', 'wp-security-audit-log' ) . '</a>';
|
1637 |
+
|
1638 |
+
case '%ContactSupport%' === $name:
|
1639 |
+
return '<a href="https://www.wpsecurityauditlog.com/contact/" target="_blank">' . esc_html__( 'contact our support', 'wp-security-audit-log' ) . '</a>';
|
1640 |
+
|
1641 |
default:
|
1642 |
return $highlight_start_tag . esc_html( $value ) . $highlight_end_tag;
|
1643 |
}
|
1705 |
|
1706 |
return isset( $get_array['wsal-cbid'] ) ? (int) $get_array['wsal-cbid'] : 0;
|
1707 |
}
|
1708 |
+
|
1709 |
+
/**
|
1710 |
+
* Method: Meta data formater.
|
1711 |
+
*
|
1712 |
+
* @since 3.3
|
1713 |
+
*
|
1714 |
+
* @param string $name - Name of the data.
|
1715 |
+
* @param mix $value - Value of the data.
|
1716 |
+
* @param integer $occ_id - Event occurrence ID.
|
1717 |
+
* @param mixed $highlight - Highlight format.
|
1718 |
+
* @return string
|
1719 |
+
*/
|
1720 |
+
public function slack_meta_formatter( $name, $value, $occ_id, $highlight ) {
|
1721 |
+
switch ( true ) {
|
1722 |
+
case '%Message%' === $name:
|
1723 |
+
return esc_html( $value );
|
1724 |
+
|
1725 |
+
case '%PromoLink%' === $name:
|
1726 |
+
case '%CommentLink%' === $name:
|
1727 |
+
case '%CommentMsg%' === $name:
|
1728 |
+
return $value;
|
1729 |
+
|
1730 |
+
case '%MetaLink%' === $name:
|
1731 |
+
return '';
|
1732 |
+
|
1733 |
+
case '%RevisionLink%' === $name:
|
1734 |
+
$check_value = (string) $value;
|
1735 |
+
if ( 'NULL' !== $check_value ) {
|
1736 |
+
return ' Click <' . esc_url( $value ) . '|here> to see the content changes.';
|
1737 |
+
} else {
|
1738 |
+
return false;
|
1739 |
+
}
|
1740 |
+
|
1741 |
+
case '%EditorLinkPost%' === $name:
|
1742 |
+
return ' View the <' . esc_url( $value ) . '|post>';
|
1743 |
+
|
1744 |
+
case '%EditorLinkPage%' === $name:
|
1745 |
+
return ' View the <' . esc_url( $value ) . '|page>';
|
1746 |
+
|
1747 |
+
case '%CategoryLink%' === $name:
|
1748 |
+
return ' View the <' . esc_url( $value ) . '|category>';
|
1749 |
+
|
1750 |
+
case '%TagLink%' === $name:
|
1751 |
+
return ' View the <' . esc_url( $value ) . '|tag>';
|
1752 |
+
|
1753 |
+
case '%EditorLinkForum%' === $name:
|
1754 |
+
return ' View the <' . esc_url( $value ) . '|forum>';
|
1755 |
+
|
1756 |
+
case '%EditorLinkTopic%' === $name:
|
1757 |
+
return ' View the <' . esc_url( $value ) . '|topic>';
|
1758 |
+
|
1759 |
+
case in_array( $name, array( '%MetaValue%', '%MetaValueOld%', '%MetaValueNew%' ), true ):
|
1760 |
+
return '*' . ( strlen( $value ) > 50 ? ( esc_html( substr( $value, 0, 50 ) ) . '...' ) : esc_html( $value ) ) . '*';
|
1761 |
+
|
1762 |
+
case '%ClientIP%' === $name:
|
1763 |
+
if ( is_string( $value ) ) {
|
1764 |
+
return '*' . str_replace( array( '"', '[', ']' ), '', $value ) . '*';
|
1765 |
+
} else {
|
1766 |
+
return '_unknown_';
|
1767 |
+
}
|
1768 |
+
|
1769 |
+
case '%LinkFile%' === $name:
|
1770 |
+
if ( 'NULL' != $value ) {
|
1771 |
+
return '';
|
1772 |
+
} else {
|
1773 |
+
return 'Click <' . esc_url( add_query_arg( 'page', 'wsal-togglealerts', admin_url( 'admin.php' ) ) ) . '|here> to log such requests to file';
|
1774 |
+
}
|
1775 |
+
|
1776 |
+
case '%URL%' === $name:
|
1777 |
+
return '.';
|
1778 |
+
|
1779 |
+
case '%LogFileLink%' === $name: // Failed login file link.
|
1780 |
+
return '';
|
1781 |
+
|
1782 |
+
case '%Attempts%' === $name: // Failed login attempts.
|
1783 |
+
$check_value = (int) $value;
|
1784 |
+
if ( 0 === $check_value ) {
|
1785 |
+
return '';
|
1786 |
+
} else {
|
1787 |
+
return $value;
|
1788 |
+
}
|
1789 |
+
|
1790 |
+
case '%LogFileText%' === $name: // Failed login file text.
|
1791 |
+
return '';
|
1792 |
+
|
1793 |
+
case strncmp( $value, 'http://', 7 ) === 0:
|
1794 |
+
case strncmp( $value, 'https://', 7 ) === 0:
|
1795 |
+
return '<' . esc_html( $value ) . '|' . esc_html( $value ) . '>';
|
1796 |
+
|
1797 |
+
case '%PostStatus%' === $name:
|
1798 |
+
if ( ! empty( $value ) && 'publish' === $value ) {
|
1799 |
+
return '*' . esc_html__( 'published', 'wp-security-audit-log' ) . '*';
|
1800 |
+
} else {
|
1801 |
+
return '*' . esc_html( $value ) . '*';
|
1802 |
+
}
|
1803 |
+
|
1804 |
+
case '%multisite_text%' === $name:
|
1805 |
+
if ( $this->_plugin->IsMultisite() && $value ) {
|
1806 |
+
$site_info = get_blog_details( $value, true );
|
1807 |
+
if ( $site_info ) {
|
1808 |
+
return ' on site <' . esc_url( $site_info->siteurl ) . '|' . esc_html( $site_info->blogname ) . '>';
|
1809 |
+
}
|
1810 |
+
return;
|
1811 |
+
}
|
1812 |
+
return;
|
1813 |
+
|
1814 |
+
case '%ReportText%' === $name:
|
1815 |
+
return;
|
1816 |
+
|
1817 |
+
case '%ChangeText%' === $name:
|
1818 |
+
return;
|
1819 |
+
|
1820 |
+
case '%ScanError%' === $name:
|
1821 |
+
if ( 'NULL' === $value ) {
|
1822 |
+
return false;
|
1823 |
+
}
|
1824 |
+
/* translators: Mailto link for support. */
|
1825 |
+
return ' with errors. ' . sprintf( __( 'Contact us on %s for assistance', 'wp-security-audit-log' ), '<mailto:support@wpsecurityauditlog.com|support@wpsecurityauditlog.com>' );
|
1826 |
+
|
1827 |
+
case '%TableNames%' === $name:
|
1828 |
+
$value = str_replace( ',', ', ', $value );
|
1829 |
+
return '*' . esc_html( $value ) . '*';
|
1830 |
+
|
1831 |
+
case '%FileSettings%' === $name:
|
1832 |
+
$file_settings_args = array(
|
1833 |
+
'page' => 'wsal-settings',
|
1834 |
+
'tab' => 'file-changes',
|
1835 |
+
);
|
1836 |
+
$file_settings = add_query_arg( $file_settings_args, admin_url( 'admin.php' ) );
|
1837 |
+
return '<' . esc_url( $file_settings ) . '|' . esc_html__( 'plugin settings', 'wp-security-audit-log' ) . '>';
|
1838 |
+
|
1839 |
+
case '%ContactSupport%' === $name:
|
1840 |
+
return '<https://www.wpsecurityauditlog.com/contact|' . esc_html__( 'contact our support', 'wp-security-audit-log' ) . '>';
|
1841 |
+
|
1842 |
+
default:
|
1843 |
+
return '*' . esc_html( $value ) . '*';
|
1844 |
+
}
|
1845 |
+
}
|
1846 |
}
|
classes/SimpleProfiler.php
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* @package Wsal
|
4 |
-
*/
|
5 |
-
class WSAL_SimpleProfiler {
|
6 |
-
|
7 |
-
protected $_items = array();
|
8 |
-
|
9 |
-
public function Start( $name ) {
|
10 |
-
$item = new WSAL_SimpleProfiler_Item( $name );
|
11 |
-
$this->_items[] = $item;
|
12 |
-
return $item;
|
13 |
-
}
|
14 |
-
|
15 |
-
public function AsComment() {
|
16 |
-
echo '<!-- ' . esc_html( PHP_EOL );
|
17 |
-
foreach ( $this->_items as $item ) {
|
18 |
-
echo ' ' . esc_html( $item . PHP_EOL );
|
19 |
-
}
|
20 |
-
echo '-->' . esc_html( PHP_EOL );
|
21 |
-
}
|
22 |
-
|
23 |
-
public function GetItems() {
|
24 |
-
return $this->_items;
|
25 |
-
}
|
26 |
-
}
|
27 |
-
|
28 |
-
class WSAL_SimpleProfiler_Item {
|
29 |
-
|
30 |
-
public function __construct( $name ) {
|
31 |
-
$this->name = $name;
|
32 |
-
$this->t_bgn = microtime( true );
|
33 |
-
$this->m_bgn = memory_get_usage();
|
34 |
-
}
|
35 |
-
|
36 |
-
public function Stop() {
|
37 |
-
$this->t_end = microtime( true );
|
38 |
-
$this->m_end = memory_get_usage();
|
39 |
-
}
|
40 |
-
|
41 |
-
public function __toString() {
|
42 |
-
$t_diff = $this->t_end - $this->t_bgn;
|
43 |
-
$m_diff = $this->m_end - $this->m_bgn;
|
44 |
-
return number_format( $t_diff, 6 ) . 's '
|
45 |
-
. str_pad( number_format( $m_diff, 0 ), 12, ' ', STR_PAD_LEFT ) . 'b '
|
46 |
-
. $this->name;
|
47 |
-
}
|
48 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/ViewManager.php
CHANGED
@@ -137,7 +137,8 @@ class WSAL_ViewManager {
|
|
137 |
* @param string $file Path to file.
|
138 |
*/
|
139 |
public function AddFromFile( $file ) {
|
140 |
-
$
|
|
|
141 |
}
|
142 |
|
143 |
/**
|
137 |
* @param string $file Path to file.
|
138 |
*/
|
139 |
public function AddFromFile( $file ) {
|
140 |
+
$file = basename( $file, '.php' );
|
141 |
+
$this->AddFromClass( WSAL_CLASS_PREFIX . 'Views_' . $file );
|
142 |
}
|
143 |
|
144 |
/**
|
classes/Views/AuditLog.php
CHANGED
@@ -150,9 +150,7 @@ class WSAL_Views_AuditLog extends WSAL_AbstractView {
|
|
150 |
<a href="<?php echo esc_url( $buy_now ); ?>" class="button button-primary wsal_notice__btn"><?php esc_html_e( 'UPGRADE', 'wp-security-audit-log' ); ?></a>
|
151 |
<div>
|
152 |
<a href="<?php echo esc_url( $more_info ); ?>" target="_blank"><?php esc_html_e( 'Tell me more', 'wp-security-audit-log' ); ?></a>
|
153 |
-
<a href="javascript:;" data-advert="<?php echo esc_attr( $wsal_premium_advert ); ?>" onclick="wsal_dismiss_advert(this)" class="wsal_notice__btn_dismiss" title="<?php esc_attr_e( 'Dismiss the banner', 'wp-security-audit-log' ); ?>">
|
154 |
-
<span class="dashicons dashicons-dismiss"></span>
|
155 |
-
</a>
|
156 |
</div>
|
157 |
</div>
|
158 |
<!-- /.wsal_notice__btns -->
|
150 |
<a href="<?php echo esc_url( $buy_now ); ?>" class="button button-primary wsal_notice__btn"><?php esc_html_e( 'UPGRADE', 'wp-security-audit-log' ); ?></a>
|
151 |
<div>
|
152 |
<a href="<?php echo esc_url( $more_info ); ?>" target="_blank"><?php esc_html_e( 'Tell me more', 'wp-security-audit-log' ); ?></a>
|
153 |
+
<a href="javascript:;" data-advert="<?php echo esc_attr( $wsal_premium_advert ); ?>" onclick="wsal_dismiss_advert(this)" class="wsal_notice__btn_dismiss" title="<?php esc_attr_e( 'Dismiss the banner', 'wp-security-audit-log' ); ?>"><?php esc_html_e( 'Close', 'wp-security-audit-log' ); ?></a>
|
|
|
|
|
154 |
</div>
|
155 |
</div>
|
156 |
<!-- /.wsal_notice__btns -->
|
classes/Views/Help.php
CHANGED
@@ -410,8 +410,6 @@ class WSAL_Views_Help extends WSAL_AbstractView {
|
|
410 |
|
411 |
// PHP configs.
|
412 |
$sysinfo .= "\n" . '-- PHP Configuration --' . "\n\n";
|
413 |
-
$sysinfo .= 'PHP Safe Mode: ';
|
414 |
-
$sysinfo .= ini_get( 'safe_mode' ) ? 'Yes' . "\n" : 'No' . "\n";
|
415 |
$sysinfo .= 'Memory Limit: ' . ini_get( 'memory_limit' ) . "\n";
|
416 |
$sysinfo .= 'Upload Max Size: ' . ini_get( 'upload_max_filesize' ) . "\n";
|
417 |
$sysinfo .= 'Post Max Size: ' . ini_get( 'post_max_size' ) . "\n";
|
410 |
|
411 |
// PHP configs.
|
412 |
$sysinfo .= "\n" . '-- PHP Configuration --' . "\n\n";
|
|
|
|
|
413 |
$sysinfo .= 'Memory Limit: ' . ini_get( 'memory_limit' ) . "\n";
|
414 |
$sysinfo .= 'Upload Max Size: ' . ini_get( 'upload_max_filesize' ) . "\n";
|
415 |
$sysinfo .= 'Post Max Size: ' . ini_get( 'post_max_size' ) . "\n";
|
classes/Views/Licensing.php
CHANGED
@@ -105,7 +105,7 @@ class WSAL_Views_Licensing extends WSAL_AbstractView {
|
|
105 |
}
|
106 |
?>
|
107 |
<form id="audit-log-licensing" method="post">
|
108 |
-
<input type="hidden" name="page" value="<?php echo
|
109 |
<?php wp_nonce_field( 'wsal-licensing' ); ?>
|
110 |
<table class="wp-list-table widefat fixed">
|
111 |
<thead>
|
105 |
}
|
106 |
?>
|
107 |
<form id="audit-log-licensing" method="post">
|
108 |
+
<input type="hidden" name="page" value="<?php echo isset( $_GET['page'] ) ? esc_attr( sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) : false; ?>" />
|
109 |
<?php wp_nonce_field( 'wsal-licensing' ); ?>
|
110 |
<table class="wp-list-table widefat fixed">
|
111 |
<thead>
|
classes/Views/Settings.php
CHANGED
@@ -39,16 +39,18 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
39 |
/**
|
40 |
* WSAL Setting Tabs.
|
41 |
*
|
42 |
-
* @var array
|
43 |
* @since 3.2.3
|
|
|
|
|
44 |
*/
|
45 |
private $wsal_setting_tabs = array();
|
46 |
|
47 |
/**
|
48 |
* Current Setting Tab.
|
49 |
*
|
50 |
-
* @var string
|
51 |
* @since 3.2.3
|
|
|
|
|
52 |
*/
|
53 |
private $current_tab = '';
|
54 |
|
@@ -193,6 +195,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
193 |
'scan_excluded_dirs' => $this->_plugin->GetGlobalOption( 'scan-excluded-directories', array() ),
|
194 |
'scan_excluded_extensions' => $this->_plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav', 'gif', 'ico', 'jpe', 'psd', 'raw', 'svg', 'tif', 'tiff', 'aif', 'flac', 'm4a', 'oga', 'ogg', 'ra', 'wma', 'asf', 'avi', 'mkv', 'mov', 'mp4', 'mpe', 'mpeg', 'mpg', 'ogv', 'qt', 'rm', 'vob', 'webm', 'wm', 'wmv' ) ),
|
195 |
'scan_in_progress' => $this->_plugin->GetGlobalOption( 'scan-in-progress', false ),
|
|
|
196 |
);
|
197 |
}
|
198 |
|
@@ -293,9 +296,12 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
293 |
}
|
294 |
|
295 |
if ( $archiving ) {
|
296 |
-
$
|
297 |
-
|
298 |
-
|
|
|
|
|
|
|
299 |
} else {
|
300 |
if ( $items ) {
|
301 |
$redirect_args = array(
|
@@ -372,7 +378,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
372 |
</nav>
|
373 |
|
374 |
<form id="audit-log-settings" method="post">
|
375 |
-
<input type="hidden" name="page" value="<?php echo
|
376 |
<input type="hidden" id="ajaxurl" value="<?php echo esc_attr( admin_url( 'admin-ajax.php' ) ); ?>" />
|
377 |
<?php wp_nonce_field( 'wsal-settings' ); ?>
|
378 |
|
@@ -434,9 +440,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
434 |
*/
|
435 |
private function tab_general() {
|
436 |
?>
|
437 |
-
<p class="description">
|
438 |
-
<?php echo wp_kses( __( 'Need help with setting up the plugin to meet your requirements? <a href="https://www.wpsecurityauditlog.com/contact/" target="_blank">Schedule a 20 minutes consultation and setup call</a> with our experts for just $50.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?>
|
439 |
-
</p>
|
440 |
|
441 |
<h3><?php esc_html_e( 'Display latest events widget in dashboard & Admin bar', 'wp-security-audit-log' ); ?></h3>
|
442 |
<p class="description">
|
@@ -500,9 +504,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
500 |
<!-- Dashboard Widget -->
|
501 |
|
502 |
<h3><?php esc_html_e( 'Add user notification on the WordPress login page', 'wp-security-audit-log' ); ?></h3>
|
503 |
-
<p class="description">
|
504 |
-
<?php esc_html_e( 'Many compliance regulations (such as the GDRP) require website administrators to tell the users of their website that all the changes they do when logged in are being logged.', 'wp-security-audit-log' ); ?>
|
505 |
-
</p>
|
506 |
<table class="form-table wsal-tab">
|
507 |
<tbody>
|
508 |
<tr>
|
@@ -536,8 +538,8 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
536 |
// Allowed HTML tags for this setting.
|
537 |
$allowed_tags = array(
|
538 |
'a' => array(
|
539 |
-
'href'
|
540 |
-
'title'
|
541 |
'target' => array(),
|
542 |
),
|
543 |
);
|
@@ -605,9 +607,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
605 |
<!-- Reverse Proxy -->
|
606 |
|
607 |
<h3><?php esc_html_e( 'Who can change the plugin settings?', 'wp-security-audit-log' ); ?></h3>
|
608 |
-
<p class="description">
|
609 |
-
<?php esc_html_e( 'By default only users with administrator or super administrator (multisite) roles can change the settings of the plugin. Though you can change these privileges from this section.', 'wp-security-audit-log' ); ?>
|
610 |
-
</p>
|
611 |
<table class="form-table wsal-tab">
|
612 |
<tbody>
|
613 |
<tr>
|
@@ -625,20 +625,22 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
625 |
<?php esc_html_e( 'Only administrators', 'wp-security-audit-log' ); ?>
|
626 |
</label>
|
627 |
<br/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
628 |
<label for="only_selected_users">
|
629 |
<input type="radio" name="restrict-plugin-settings" id="only_selected_users" value="only_selected_users" <?php checked( $restrict_settings, 'only_selected_users' ); ?> />
|
630 |
<?php esc_html_e( 'All these users or users with these roles', 'wp-security-audit-log' ); ?>
|
631 |
</label>
|
632 |
-
|
633 |
-
<p class="description">
|
634 |
-
<?php esc_html_e( 'Specify the username or the users which can change the plugin settings. You can also specify roles.', 'wp-security-audit-log' ); ?>
|
635 |
-
</p>
|
636 |
-
|
637 |
<label>
|
638 |
<input type="text" id="EditorQueryBox" style="width: 250px;">
|
639 |
<input type="button" id="EditorQueryAdd" style="" class="button-primary" value="Add">
|
640 |
</label>
|
641 |
-
|
642 |
<div id="EditorList">
|
643 |
<?php
|
644 |
foreach ( $this->_plugin->settings->GetAllowedPluginEditors() as $item ) :
|
@@ -664,9 +666,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
664 |
<!-- Restrict Plugin Access -->
|
665 |
|
666 |
<h3><?php esc_html_e( 'Allow other users to view the activity log', 'wp-security-audit-log' ); ?></h3>
|
667 |
-
<p class="description">
|
668 |
-
<?php esc_html_e( 'By default only users with administrator and super administrator (multisite) role can view the WordPress activity log. Though you can allow other users with no admin role to view the events.', 'wp-security-audit-log' ); ?>
|
669 |
-
</p>
|
670 |
<table class="form-table wsal-tab">
|
671 |
<tbody>
|
672 |
<tr>
|
@@ -705,9 +705,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
705 |
<!-- Can View Events -->
|
706 |
|
707 |
<h3><?php esc_html_e( 'Which email address should the plugin use as a from address?', 'wp-security-audit-log' ); ?></h3>
|
708 |
-
<p class="description">
|
709 |
-
<?php esc_html_e( 'By default when the plugin sends an email notification it uses the email address specified in this website’s general settings. Though you can change the email address and display name from this section.', 'wp-security-audit-log' ); ?>
|
710 |
-
</p>
|
711 |
<table class="form-table wsal-tab">
|
712 |
<tbody>
|
713 |
<tr>
|
@@ -743,9 +741,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
743 |
<!-- From Email & Name -->
|
744 |
|
745 |
<h3><?php esc_html_e( 'Do you want to hide the plugin from the list of installed plugins?', 'wp-security-audit-log' ); ?></h3>
|
746 |
-
<p class="description">
|
747 |
-
<?php esc_html_e( 'By default all installed plugins are listed in the plugins page. If you do not want other administrators to see that you installed this plugin set this option to Yes so the WP Security Audit Log is not listed as an installed plugin on this website.', 'wp-security-audit-log' ); ?>
|
748 |
-
</p>
|
749 |
<table class="form-table wsal-tab">
|
750 |
<tbody>
|
751 |
<tr>
|
@@ -783,7 +779,10 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
783 |
$this->_plugin->settings->SetDisplayName( sanitize_text_field( $post_array['DisplayName'] ) );
|
784 |
|
785 |
$this->_plugin->settings->SetWidgetsEnabled( sanitize_text_field( $post_array['EnableDashboardWidgets'] ) );
|
786 |
-
|
|
|
|
|
|
|
787 |
|
788 |
// Get plugin viewers.
|
789 |
$viewers = isset( $post_array['Viewers'] ) ? array_map( 'sanitize_text_field', $post_array['Viewers'] ) : array();
|
@@ -792,13 +791,15 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
792 |
// Get plugin editors.
|
793 |
$editors = isset( $post_array['Editors'] ) ? array_map( 'sanitize_text_field', $post_array['Editors'] ) : array();
|
794 |
$restrict_settings = isset( $post_array['restrict-plugin-settings'] ) ? sanitize_text_field( $post_array['restrict-plugin-settings'] ) : false;
|
795 |
-
if ( ! empty( $restrict_settings )
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
|
|
|
|
802 |
}
|
803 |
$this->_plugin->settings->SetAllowedPluginEditors( $editors );
|
804 |
|
@@ -837,7 +838,11 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
837 |
<?php if ( $this->_plugin->settings->IsArchivingEnabled() ) : ?>
|
838 |
<p class="description">
|
839 |
<?php
|
840 |
-
$
|
|
|
|
|
|
|
|
|
841 |
/* translators: 1: Archive page link tag. 2: Link closing tag. */
|
842 |
echo '<span class="dashicons dashicons-warning"></span> ' . sprintf( esc_html__( 'Retention settings moved to %1$s archiving settings %2$s because archiving is enabled', 'wp-security-audit-log' ), '<a href="' . esc_url( $archiving_page ) . '" target="_blank">', '</a>' );
|
843 |
?>
|
@@ -1061,18 +1066,16 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
1061 |
<table class="form-table wsal-tab">
|
1062 |
<tbody>
|
1063 |
<tr>
|
1064 |
-
<th><label for="wp_backend_no"><?php esc_html_e( '
|
1065 |
<td>
|
1066 |
<fieldset>
|
1067 |
<label for="wp_backend_yes">
|
1068 |
-
<input type="radio" name="WPBackend" value="1" id="wp_backend_yes"
|
1069 |
-
<?php checked( $this->_plugin->settings->IsWPBackend() ); ?> />
|
1070 |
<?php esc_html_e( 'Yes', 'wp-security-audit-log' ); ?>
|
1071 |
</label>
|
1072 |
<br/>
|
1073 |
<label for="wp_backend_no">
|
1074 |
-
<input type="radio" name="WPBackend" value="0" id="wp_backend_no"
|
1075 |
-
<?php checked( $this->_plugin->settings->IsWPBackend(), false ); ?> />
|
1076 |
<?php esc_html_e( 'No', 'wp-security-audit-log' ); ?>
|
1077 |
</label>
|
1078 |
</fieldset>
|
@@ -1394,6 +1397,19 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
1394 |
</table>
|
1395 |
<!-- wsal-scan-directories -->
|
1396 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1397 |
<h3><?php esc_html_e( 'Do you want to exclude specific files or files with a particular extension from the scan?', 'wp-security-audit-log' ); ?></h3>
|
1398 |
<p class="description"><?php esc_html_e( 'The plugin will scan everything that is in the WordPress root directory or below, even if the files and directories are not part of WordPress. It is recommended to scan all source code files and only exclude files that cannot be tampered, such as text files, media files etc, most of which are already excluded by default.', 'wp-security-audit-log' ); ?></p>
|
1399 |
<table class="form-table wsal-tab">
|
@@ -1585,6 +1601,7 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
1585 |
$this->_plugin->SetGlobalOption( 'scan-hour', isset( $post_array['wsal-scan-hour'] ) ? $post_array['wsal-scan-hour'] : false );
|
1586 |
$this->_plugin->SetGlobalOption( 'scan-day', isset( $post_array['wsal-scan-day'] ) ? $post_array['wsal-scan-day'] : false );
|
1587 |
$this->_plugin->SetGlobalOption( 'scan-date', isset( $post_array['wsal-scan-date'] ) ? $post_array['wsal-scan-date'] : false );
|
|
|
1588 |
|
1589 |
// Check and save scan directories.
|
1590 |
if (
|
@@ -2382,6 +2399,19 @@ class WSAL_Views_Settings extends WSAL_AbstractView {
|
|
2382 |
// Run a manual scan on all directories.
|
2383 |
for ( $dir = 0; $dir < 7; $dir++ ) {
|
2384 |
if ( ! $this->_plugin->GetGlobalOption( 'stop-scan', false ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2385 |
$file_changes->detect_file_changes( true, $dir );
|
2386 |
} else {
|
2387 |
break;
|
39 |
/**
|
40 |
* WSAL Setting Tabs.
|
41 |
*
|
|
|
42 |
* @since 3.2.3
|
43 |
+
*
|
44 |
+
* @var array
|
45 |
*/
|
46 |
private $wsal_setting_tabs = array();
|
47 |
|
48 |
/**
|
49 |
* Current Setting Tab.
|
50 |
*
|
|
|
51 |
* @since 3.2.3
|
52 |
+
*
|
53 |
+
* @var string
|
54 |
*/
|
55 |
private $current_tab = '';
|
56 |
|
195 |
'scan_excluded_dirs' => $this->_plugin->GetGlobalOption( 'scan-excluded-directories', array() ),
|
196 |
'scan_excluded_extensions' => $this->_plugin->GetGlobalOption( 'scan-excluded-extensions', array( 'jpg', 'jpeg', 'png', 'bmp', 'pdf', 'txt', 'log', 'mo', 'po', 'mp3', 'wav', 'gif', 'ico', 'jpe', 'psd', 'raw', 'svg', 'tif', 'tiff', 'aif', 'flac', 'm4a', 'oga', 'ogg', 'ra', 'wma', 'asf', 'avi', 'mkv', 'mov', 'mp4', 'mpe', 'mpeg', 'mpg', 'ogv', 'qt', 'rm', 'vob', 'webm', 'wm', 'wmv' ) ),
|
197 |
'scan_in_progress' => $this->_plugin->GetGlobalOption( 'scan-in-progress', false ),
|
198 |
+
'scan_file_size_limit' => $this->_plugin->GetGlobalOption( 'scan-file-size-limit', 5 ),
|
199 |
);
|
200 |
}
|
201 |
|
296 |
}
|
297 |
|
298 |
if ( $archiving ) {
|
299 |
+
$archiving_args = array(
|
300 |
+
'page' => 'wsal-ext-settings',
|
301 |
+
'tab' => 'archiving',
|
302 |
+
);
|
303 |
+
$archiving_url = add_query_arg( $archiving_args, admin_url( 'admin.php' ) );
|
304 |
+
wp_safe_redirect( $archiving_url );
|
305 |
} else {
|
306 |
if ( $items ) {
|
307 |
$redirect_args = array(
|
378 |
</nav>
|
379 |
|
380 |
<form id="audit-log-settings" method="post">
|
381 |
+
<input type="hidden" name="page" value="<?php echo isset( $_GET['page'] ) ? esc_attr( sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) : false; ?>" />
|
382 |
<input type="hidden" id="ajaxurl" value="<?php echo esc_attr( admin_url( 'admin-ajax.php' ) ); ?>" />
|
383 |
<?php wp_nonce_field( 'wsal-settings' ); ?>
|
384 |
|
440 |
*/
|
441 |
private function tab_general() {
|
442 |
?>
|
443 |
+
<p class="description"><?php echo wp_kses( __( 'Need help with setting up the plugin to meet your requirements? <a href="https://www.wpsecurityauditlog.com/contact/" target="_blank">Schedule a 20 minutes consultation and setup call</a> with our experts for just $50.', 'wp-security-audit-log' ), $this->_plugin->allowed_html_tags ); ?></p>
|
|
|
|
|
444 |
|
445 |
<h3><?php esc_html_e( 'Display latest events widget in dashboard & Admin bar', 'wp-security-audit-log' ); ?></h3>
|
446 |
<p class="description">
|
504 |
<!-- Dashboard Widget -->
|
505 |
|
506 |
<h3><?php esc_html_e( 'Add user notification on the WordPress login page', 'wp-security-audit-log' ); ?></h3>
|
507 |
+
<p class="description"><?php esc_html_e( 'Many compliance regulations (such as the GDRP) require website administrators to tell the users of their website that all the changes they do when logged in are being logged.', 'wp-security-audit-log' ); ?></p>
|
|
|
|
|
508 |
<table class="form-table wsal-tab">
|
509 |
<tbody>
|
510 |
<tr>
|
538 |
// Allowed HTML tags for this setting.
|
539 |
$allowed_tags = array(
|
540 |
'a' => array(
|
541 |
+
'href' => array(),
|
542 |
+
'title' => array(),
|
543 |
'target' => array(),
|
544 |
),
|
545 |
);
|
607 |
<!-- Reverse Proxy -->
|
608 |
|
609 |
<h3><?php esc_html_e( 'Who can change the plugin settings?', 'wp-security-audit-log' ); ?></h3>
|
610 |
+
<p class="description"><?php esc_html_e( 'By default only users with administrator or super administrator (multisite) roles can change the settings of the plugin. Though you can change these privileges from this section.', 'wp-security-audit-log' ); ?></p>
|
|
|
|
|
611 |
<table class="form-table wsal-tab">
|
612 |
<tbody>
|
613 |
<tr>
|
625 |
<?php esc_html_e( 'Only administrators', 'wp-security-audit-log' ); ?>
|
626 |
</label>
|
627 |
<br/>
|
628 |
+
<?php if ( $this->_plugin->IsMultisite() ) : ?>
|
629 |
+
<label for="only_superadmins">
|
630 |
+
<input type="radio" name="restrict-plugin-settings" id="only_superadmins" value="only_superadmins" <?php checked( $restrict_settings, 'only_superadmins' ); ?> />
|
631 |
+
<?php esc_html_e( 'Only superadmins', 'wp-security-audit-log' ); ?>
|
632 |
+
</label>
|
633 |
+
<br/>
|
634 |
+
<?php endif; ?>
|
635 |
<label for="only_selected_users">
|
636 |
<input type="radio" name="restrict-plugin-settings" id="only_selected_users" value="only_selected_users" <?php checked( $restrict_settings, 'only_selected_users' ); ?> />
|
637 |
<?php esc_html_e( 'All these users or users with these roles', 'wp-security-audit-log' ); ?>
|
638 |
</label>
|
639 |
+
<p class="description"><?php esc_html_e( 'Specify the username or the users which can change the plugin settings. You can also specify roles.', 'wp-security-audit-log' ); ?></p>
|
|
|
|
|
|
|
|
|
640 |
<label>
|
641 |
<input type="text" id="EditorQueryBox" style="width: 250px;">
|
642 |
<input type="button" id="EditorQueryAdd" style="" class="button-primary" value="Add">
|
643 |
</label>
|
|
|
644 |
<div id="EditorList">
|
645 |
<?php
|
646 |
foreach ( $this->_plugin->settings->GetAllowedPluginEditors() as $item ) :
|
666 |
<!-- Restrict Plugin Access -->
|
667 |
|
668 |
<h3><?php esc_html_e( 'Allow other users to view the activity log', 'wp-security-audit-log' ); ?></h3>
|
669 |
+
<p class="description"><?php esc_html_e( 'By default only users with administrator and super administrator (multisite) role can view the WordPress activity log. Though you can allow other users with no admin role to view the events.', 'wp-security-audit-log' ); ?></p>
|
|
|
|
|
670 |
<table class="form-table wsal-tab">
|
671 |
<tbody>
|
672 |
<tr>
|
705 |
<!-- Can View Events -->
|
706 |
|
707 |
<h3><?php esc_html_e( 'Which email address should the plugin use as a from address?', 'wp-security-audit-log' ); ?></h3>
|
708 |
+
<p class="description"><?php esc_html_e( 'By default when the plugin sends an email notification it uses the email address specified in this website’s general settings. Though you can change the email address and display name from this section.', 'wp-security-audit-log' ); ?></p>
|
|
|
|
|
709 |
<table class="form-table wsal-tab">
|
710 |
<tbody>
|
711 |
<tr>
|
741 |
<!-- From Email & Name -->
|
742 |
|
743 |
<h3><?php esc_html_e( 'Do you want to hide the plugin from the list of installed plugins?', 'wp-security-audit-log' ); ?></h3>
|
744 |
+
<p class="description"><?php esc_html_e( 'By default all installed plugins are listed in the plugins page. If you do not want other administrators to see that you installed this plugin set this option to Yes so the WP Security Audit Log is not listed as an installed plugin on this website.', 'wp-security-audit-log' ); ?></p>
|
|
|
|
|
745 |
<table class="form-table wsal-tab">
|
746 |
<tbody>
|
747 |
<tr>
|
779 |
$this->_plugin->settings->SetDisplayName( sanitize_text_field( $post_array['DisplayName'] ) );
|
780 |
|
781 |
$this->_plugin->settings->SetWidgetsEnabled( sanitize_text_field( $post_array['EnableDashboardWidgets'] ) );
|
782 |
+
|
783 |
+
if ( ! wsal_freemius()->is_free_plan() ) {
|
784 |
+
$this->_plugin->settings->set_admin_bar_notif( sanitize_text_field( $post_array['admin_bar_notif'] ) );
|
785 |
+
}
|
786 |
|
787 |
// Get plugin viewers.
|
788 |
$viewers = isset( $post_array['Viewers'] ) ? array_map( 'sanitize_text_field', $post_array['Viewers'] ) : array();
|
791 |
// Get plugin editors.
|
792 |
$editors = isset( $post_array['Editors'] ) ? array_map( 'sanitize_text_field', $post_array['Editors'] ) : array();
|
793 |
$restrict_settings = isset( $post_array['restrict-plugin-settings'] ) ? sanitize_text_field( $post_array['restrict-plugin-settings'] ) : false;
|
794 |
+
if ( ! empty( $restrict_settings ) ) {
|
795 |
+
if ( 'only_me' === $restrict_settings ) {
|
796 |
+
// Add current username to plugin editors.
|
797 |
+
$editors = array(); // Empty the array to remove previous editors in restrict mode.
|
798 |
+
$editors[] = wp_get_current_user()->user_login;
|
799 |
+
} elseif ( 'only_selected_users' !== $restrict_settings ) {
|
800 |
+
// Empty the editors if option is not user or user roles.
|
801 |
+
$editors = array();
|
802 |
+
}
|
803 |
}
|
804 |
$this->_plugin->settings->SetAllowedPluginEditors( $editors );
|
805 |
|
838 |
<?php if ( $this->_plugin->settings->IsArchivingEnabled() ) : ?>
|
839 |
<p class="description">
|
840 |
<?php
|
841 |
+
$archiving_args = array(
|
842 |
+
'page' => 'wsal-ext-settings',
|
843 |
+
'tab' => 'archiving',
|
844 |
+
);
|
845 |
+
$archiving_page = add_query_arg( $archiving_args, admin_url( 'admin.php' ) );
|
846 |
/* translators: 1: Archive page link tag. 2: Link closing tag. */
|
847 |
echo '<span class="dashicons dashicons-warning"></span> ' . sprintf( esc_html__( 'Retention settings moved to %1$s archiving settings %2$s because archiving is enabled', 'wp-security-audit-log' ), '<a href="' . esc_url( $archiving_page ) . '" target="_blank">', '</a>' );
|
848 |
?>
|
1066 |
<table class="form-table wsal-tab">
|
1067 |
<tbody>
|
1068 |
<tr>
|
1069 |
+
<th><label for="wp_backend_no"><?php esc_html_e( 'Enable Events for WordPress Background Activity', 'wp-security-audit-log' ); ?></label></th>
|
1070 |
<td>
|
1071 |
<fieldset>
|
1072 |
<label for="wp_backend_yes">
|
1073 |
+
<input type="radio" name="WPBackend" value="1" id="wp_backend_yes" <?php checked( $this->_plugin->settings->IsWPBackend() ); ?> />
|
|
|
1074 |
<?php esc_html_e( 'Yes', 'wp-security-audit-log' ); ?>
|
1075 |
</label>
|
1076 |
<br/>
|
1077 |
<label for="wp_backend_no">
|
1078 |
+
<input type="radio" name="WPBackend" value="0" id="wp_backend_no" <?php checked( $this->_plugin->settings->IsWPBackend(), false ); ?> />
|
|
|
1079 |
<?php esc_html_e( 'No', 'wp-security-audit-log' ); ?>
|
1080 |
</label>
|
1081 |
</fieldset>
|
1397 |
</table>
|
1398 |
<!-- wsal-scan-directories -->
|
1399 |
|
1400 |
+
<h3><?php esc_html_e( 'What is the biggest file size the plugin should scan?', 'wp-security-audit-log' ); ?></h3>
|
1401 |
+
<p class="description"><?php esc_html_e( 'By default the plugin does not scan files that are bigger than 5MB. Such files are not common, hence typically not a target. Though if you are getting a lot of 6032 Events, it is recommended to increase the file size limit from the below option.', 'wp-security-audit-log' ); ?></p>
|
1402 |
+
<table class="form-table wsal-tab">
|
1403 |
+
<tr>
|
1404 |
+
<th><label for="wsal-scan-file-size"><?php esc_html_e( 'File Size Limit', 'wp-security-audit-log' ); ?></label></th>
|
1405 |
+
<td>
|
1406 |
+
<fieldset>
|
1407 |
+
<input type="number" id="wsal-scan-file-size" name="wsal-scan-file-size" min="1" max="100" value="<?php echo isset( $this->scan_settings['scan_file_size_limit'] ) ? esc_attr( $this->scan_settings['scan_file_size_limit'] ) : false ?>" /> <?php esc_html_e( 'MB', 'wp-security-audit-log' ); ?>
|
1408 |
+
</fieldset>
|
1409 |
+
</td>
|
1410 |
+
</tr>
|
1411 |
+
</table>
|
1412 |
+
|
1413 |
<h3><?php esc_html_e( 'Do you want to exclude specific files or files with a particular extension from the scan?', 'wp-security-audit-log' ); ?></h3>
|
1414 |
<p class="description"><?php esc_html_e( 'The plugin will scan everything that is in the WordPress root directory or below, even if the files and directories are not part of WordPress. It is recommended to scan all source code files and only exclude files that cannot be tampered, such as text files, media files etc, most of which are already excluded by default.', 'wp-security-audit-log' ); ?></p>
|
1415 |
<table class="form-table wsal-tab">
|
1601 |
$this->_plugin->SetGlobalOption( 'scan-hour', isset( $post_array['wsal-scan-hour'] ) ? $post_array['wsal-scan-hour'] : false );
|
1602 |
$this->_plugin->SetGlobalOption( 'scan-day', isset( $post_array['wsal-scan-day'] ) ? $post_array['wsal-scan-day'] : false );
|
1603 |
$this->_plugin->SetGlobalOption( 'scan-date', isset( $post_array['wsal-scan-date'] ) ? $post_array['wsal-scan-date'] : false );
|
1604 |
+
$this->_plugin->SetGlobalOption( 'scan-file-size-limit', isset( $post_array['wsal-scan-file-size'] ) ? $post_array['wsal-scan-file-size'] : false );
|
1605 |
|
1606 |
// Check and save scan directories.
|
1607 |
if (
|
2399 |
// Run a manual scan on all directories.
|
2400 |
for ( $dir = 0; $dir < 7; $dir++ ) {
|
2401 |
if ( ! $this->_plugin->GetGlobalOption( 'stop-scan', false ) ) {
|
2402 |
+
if ( 0 === $dir ) {
|
2403 |
+
// Scan started alert.
|
2404 |
+
$this->_plugin->alerts->Trigger( 6033, array(
|
2405 |
+
'CurrentUserID' => '0',
|
2406 |
+
'ScanStatus' => 'started',
|
2407 |
+
) );
|
2408 |
+
} elseif ( 6 === $dir ) {
|
2409 |
+
// Scan stopped.
|
2410 |
+
$this->_plugin->alerts->Trigger( 6033, array(
|
2411 |
+
'CurrentUserID' => '0',
|
2412 |
+
'ScanStatus' => 'stopped',
|
2413 |
+
) );
|
2414 |
+
}
|
2415 |
$file_changes->detect_file_changes( true, $dir );
|
2416 |
} else {
|
2417 |
break;
|
classes/Views/ToggleAlerts.php
CHANGED
@@ -130,6 +130,9 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
|
|
130 |
|
131 |
// Set the option.
|
132 |
$this->_plugin->SetGlobalOption( 'scan-file-changes', $file_change_toggle );
|
|
|
|
|
|
|
133 |
}
|
134 |
|
135 |
// Log level form submission.
|
@@ -153,7 +156,8 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
|
|
153 |
$is_custom = ! empty( $events_diff ) ? true : false; // If difference is not empty then mode is custom.
|
154 |
$log_details = $this->_plugin->GetGlobalOption( 'details-level', false ); // Get log level option.
|
155 |
|
156 |
-
$subcat_alerts = array( 1004, 2010, 6007, 2111, 2119, 2016, 2053, 7000, 8009, 8014, 9007, 9027, 9002, 8809, 8813, 6000, 6001, 6019 );
|
|
|
157 |
?>
|
158 |
<p>
|
159 |
<form method="post" id="wsal-alerts-level">
|
@@ -182,12 +186,19 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
|
|
182 |
</form>
|
183 |
</p>
|
184 |
<h2 id="wsal-tabs" class="nav-tab-wrapper">
|
185 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
<a href="#tab-<?php echo esc_attr( $safe ); ?>" class="nav-tab"><?php echo esc_html( $name ); ?></a>
|
187 |
<?php endforeach; ?>
|
188 |
</h2>
|
189 |
<form id="audit-log-viewer" method="post">
|
190 |
-
<input type="hidden" name="page" value="<?php echo
|
191 |
<?php wp_nonce_field( 'wsal-togglealerts' ); ?>
|
192 |
|
193 |
<div class="nav-tabs">
|
@@ -419,6 +430,8 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
|
|
419 |
esc_html_e( 'Settings', 'wp-security-audit-log' );
|
420 |
} elseif ( 6019 === $alert->type ) {
|
421 |
esc_html_e( 'Cron Jobs', 'wp-security-audit-log' );
|
|
|
|
|
422 |
}
|
423 |
?>
|
424 |
</h3>
|
@@ -435,7 +448,13 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
|
|
435 |
class="alert"
|
436 |
<?php checked( $active[ $alert->type ] ); ?>
|
437 |
value="<?php echo esc_attr( (int) $alert->type ); ?>"
|
438 |
-
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
439 |
<?php echo ( __( 'File Changes', 'wp-security-audit-log' ) === $subname ) ? 'onclick="wsal_toggle_file_changes(this)"' : false; ?>
|
440 |
/>
|
441 |
</th>
|
@@ -580,6 +599,34 @@ class WSAL_Views_ToggleAlerts extends WSAL_AbstractView {
|
|
580 |
?>
|
581 |
</div>
|
582 |
<?php endforeach; ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
583 |
</div>
|
584 |
<p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php echo esc_attr( __( 'Save Changes', 'wp-security-audit-log' ) ); ?>"></p>
|
585 |
</form>
|
130 |
|
131 |
// Set the option.
|
132 |
$this->_plugin->SetGlobalOption( 'scan-file-changes', $file_change_toggle );
|
133 |
+
|
134 |
+
// Set the visitor events option.
|
135 |
+
$this->_plugin->SetGlobalOption( 'disable-visitor-events', isset( $post_array['disable-visitor-events'] ) ? 'no' : 'yes' );
|
136 |
}
|
137 |
|
138 |
// Log level form submission.
|
156 |
$is_custom = ! empty( $events_diff ) ? true : false; // If difference is not empty then mode is custom.
|
157 |
$log_details = $this->_plugin->GetGlobalOption( 'details-level', false ); // Get log level option.
|
158 |
|
159 |
+
$subcat_alerts = array( 1004, 2010, 6007, 2111, 2119, 2016, 2053, 7000, 8009, 8014, 9007, 9027, 9002, 8809, 8813, 6000, 6001, 6019, 6028 );
|
160 |
+
$public_events = $this->_plugin->alerts->get_public_events(); // Get public events.
|
161 |
?>
|
162 |
<p>
|
163 |
<form method="post" id="wsal-alerts-level">
|
186 |
</form>
|
187 |
</p>
|
188 |
<h2 id="wsal-tabs" class="nav-tab-wrapper">
|
189 |
+
<?php
|
190 |
+
foreach ( $safe_names as $name => $safe ) :
|
191 |
+
if ( __( 'Third Party Plugins', 'wp-security-audit-log' ) === $name ) :
|
192 |
+
?>
|
193 |
+
<a href="#tab-visitor-events" class="nav-tab">
|
194 |
+
<?php esc_html_e( 'Visitor Events', 'wp-security-audit-log' ); ?>
|
195 |
+
</a>
|
196 |
+
<?php endif; ?>
|
197 |
<a href="#tab-<?php echo esc_attr( $safe ); ?>" class="nav-tab"><?php echo esc_html( $name ); ?></a>
|
198 |
<?php endforeach; ?>
|
199 |
</h2>
|
200 |
<form id="audit-log-viewer" method="post">
|
201 |
+
<input type="hidden" name="page" value="<?php echo isset( $_GET['page'] ) ? esc_attr( sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) : false; ?>" />
|
202 |
<?php wp_nonce_field( 'wsal-togglealerts' ); ?>
|
203 |
|
204 |
<div class="nav-tabs">
|
430 |
esc_html_e( 'Settings', 'wp-security-audit-log' );
|
431 |
} elseif ( 6019 === $alert->type ) {
|
432 |
esc_html_e( 'Cron Jobs', 'wp-security-audit-log' );
|
433 |
+
} elseif ( 6028 === $alert->type ) {
|
434 |
+
esc_html_e( 'File Changes Scanning', 'wp-security-audit-log' );
|
435 |
}
|
436 |
?>
|
437 |
</h3>
|
448 |
class="alert"
|
449 |
<?php checked( $active[ $alert->type ] ); ?>
|
450 |
value="<?php echo esc_attr( (int) $alert->type ); ?>"
|
451 |
+
<?php
|
452 |
+
if ( ! empty( $disabled ) ) {
|
453 |
+
echo esc_attr( $disabled );
|
454 |
+
} elseif ( 'no' !== $this->_plugin->GetGlobalOption( 'disable-visitor-events', 'no' ) && in_array( $alert->type, $public_events, true ) ) {
|
455 |
+
echo 'disabled';
|
456 |
+
}
|
457 |
+
?>
|
458 |
<?php echo ( __( 'File Changes', 'wp-security-audit-log' ) === $subname ) ? 'onclick="wsal_toggle_file_changes(this)"' : false; ?>
|
459 |
/>
|
460 |
</th>
|
599 |
?>
|
600 |
</div>
|
601 |
<?php endforeach; ?>
|
602 |
+
<div class="wsal-tab" id="tab-visitor-events">
|
603 |
+
<h4><?php esc_html_e( 'The plugin also keeps a log of some events that website visitors (non-logged in users) do because it is typically required by site admins. You can disable these events from here:', 'wp-security-audit-log' ); ?></h4>
|
604 |
+
<table class="form-table">
|
605 |
+
<th><label for="enable-visitor-events"><?php esc_html_e( 'Enable website visitors events', 'wp-security-audit-log' ); ?></label></th>
|
606 |
+
<td>
|
607 |
+
<fieldset>
|
608 |
+
<?php $disable_visitor_events = $this->_plugin->GetGlobalOption( 'disable-visitor-events', 'no' ); ?>
|
609 |
+
<label for="disable-visitor-events">
|
610 |
+
<input type="checkbox" id="disable-visitor-events" name="disable-visitor-events" <?php checked( $disable_visitor_events, 'no' ); ?> value="no" />
|
611 |
+
<?php esc_html_e( 'Enable', 'wp-security-audit-log' ); ?>
|
612 |
+
</label>
|
613 |
+
</fieldset>
|
614 |
+
</td>
|
615 |
+
</table>
|
616 |
+
<p class="description"><?php esc_html_e( 'Below is the list of the events which are disabled when the above option is disabled:', 'wp-security-audit-log' ); ?></p>
|
617 |
+
<ul>
|
618 |
+
<?php
|
619 |
+
$wsal_alerts = $this->_plugin->alerts->GetAlerts(); // Get alerts list.
|
620 |
+
foreach ( $public_events as $public_event ) :
|
621 |
+
if ( isset( $wsal_alerts[ $public_event ] ) ) :
|
622 |
+
?>
|
623 |
+
<li><?php echo esc_html( $wsal_alerts[ $public_event ]->type . ' — ' . $wsal_alerts[ $public_event ]->desc ); ?></li>
|
624 |
+
<?php
|
625 |
+
endif;
|
626 |
+
endforeach;
|
627 |
+
?>
|
628 |
+
</ul>
|
629 |
+
</div>
|
630 |
</div>
|
631 |
<p class="submit"><input type="submit" name="submit" id="submit" class="button button-primary" value="<?php echo esc_attr( __( 'Save Changes', 'wp-security-audit-log' ) ); ?>"></p>
|
632 |
</form>
|
css/auditlog.css
CHANGED
@@ -305,7 +305,6 @@ td.column-user {
|
|
305 |
.wsal_notice__btns a.wsal_notice__btn_dismiss {
|
306 |
color: #AAA;
|
307 |
margin-left: 2px;
|
308 |
-
text-decoration: none;
|
309 |
}
|
310 |
|
311 |
.wsal_notice__wrapper img {
|
305 |
.wsal_notice__btns a.wsal_notice__btn_dismiss {
|
306 |
color: #AAA;
|
307 |
margin-left: 2px;
|
|
|
308 |
}
|
309 |
|
310 |
.wsal_notice__wrapper img {
|
css/dist/wsal-wizard.build.css
CHANGED
@@ -167,3 +167,5 @@
|
|
167 |
.sectoken-other {
|
168 |
background: #FFE;
|
169 |
border-color: #ED5; }
|
|
|
|
167 |
.sectoken-other {
|
168 |
background: #FFE;
|
169 |
border-color: #ED5; }
|
170 |
+
|
171 |
+
/*# sourceMappingURL=wsal-wizard.build.css.map*/
|
defaults.php
CHANGED
@@ -52,544 +52,546 @@ function load_include_custom_file( $wsal ) {
|
|
52 |
* Define Default Alerts.
|
53 |
*
|
54 |
* Define default alerts for the plugin.
|
55 |
-
*
|
56 |
-
* @param WpSecurityAuditLog $wsal - Instance of main plugin.
|
57 |
*/
|
58 |
-
function wsaldefaults_wsal_init(
|
59 |
-
$wsal
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
'name' => 'E_ERROR',
|
64 |
-
'description' => __( 'Fatal run-time error.', 'wp-security-audit-log' ),
|
65 |
-
),
|
66 |
-
array(
|
67 |
-
'name' => 'E_WARNING',
|
68 |
-
'description' => __( 'Run-time warning (non-fatal error).', 'wp-security-audit-log' ),
|
69 |
-
),
|
70 |
-
array(
|
71 |
-
'name' => 'E_PARSE',
|
72 |
-
'description' => __( 'Compile-time parse error.', 'wp-security-audit-log' ),
|
73 |
-
),
|
74 |
-
array(
|
75 |
-
'name' => 'E_NOTICE',
|
76 |
-
'description' => __( 'Run-time notice.', 'wp-security-audit-log' ),
|
77 |
-
),
|
78 |
-
array(
|
79 |
-
'name' => 'E_CORE_ERROR',
|
80 |
-
'description' => __( 'Fatal error that occurred during startup.', 'wp-security-audit-log' ),
|
81 |
-
),
|
82 |
-
array(
|
83 |
-
'name' => 'E_CORE_WARNING',
|
84 |
-
'description' => __( 'Warnings that occurred during startup.', 'wp-security-audit-log' ),
|
85 |
-
),
|
86 |
-
array(
|
87 |
-
'name' => 'E_COMPILE_ERROR',
|
88 |
-
'description' => __( 'Fatal compile-time error.', 'wp-security-audit-log' ),
|
89 |
-
),
|
90 |
-
array(
|
91 |
-
'name' => 'E_COMPILE_WARNING',
|
92 |
-
'description' => __( 'Compile-time warning.', 'wp-security-audit-log' ),
|
93 |
-
),
|
94 |
-
array(
|
95 |
-
'name' => 'E_USER_ERROR',
|
96 |
-
'description' => __( 'User-generated error message.', 'wp-security-audit-log' ),
|
97 |
-
),
|
98 |
-
array(
|
99 |
-
'name' => 'E_USER_WARNING',
|
100 |
-
'description' => __( 'User-generated warning message.', 'wp-security-audit-log' ),
|
101 |
-
),
|
102 |
-
array(
|
103 |
-
'name' => 'E_USER_NOTICE',
|
104 |
-
'description' => __( 'User-generated notice message.', 'wp-security-audit-log' ),
|
105 |
-
),
|
106 |
-
array(
|
107 |
-
'name' => 'E_STRICT',
|
108 |
-
'description' => __( 'Non-standard/optimal code warning.', 'wp-security-audit-log' ),
|
109 |
-
),
|
110 |
-
array(
|
111 |
-
'name' => 'E_RECOVERABLE_ERROR',
|
112 |
-
'description' => __( 'Catchable fatal error.', 'wp-security-audit-log' ),
|
113 |
-
),
|
114 |
-
array(
|
115 |
-
'name' => 'E_DEPRECATED',
|
116 |
-
'description' => __( 'Run-time deprecation notices.', 'wp-security-audit-log' ),
|
117 |
-
),
|
118 |
-
array(
|
119 |
-
'name' => 'E_USER_DEPRECATED',
|
120 |
-
'description' => __( 'Run-time user deprecation notices.', 'wp-security-audit-log' ),
|
121 |
-
),
|
122 |
-
// Custom constants.
|
123 |
array(
|
124 |
-
|
125 |
-
|
126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
array(
|
128 |
-
'name' => 'E_DEBUG',
|
129 |
-
'description' => __( 'Debug informational messages.', 'wp-security-audit-log' ),
|
130 |
-
),
|
131 |
-
)
|
132 |
-
);
|
133 |
-
// Create list of default alerts.
|
134 |
-
$wsal->alerts->RegisterGroup(
|
135 |
-
array(
|
136 |
-
/**
|
137 |
-
* Section: Users Profiles & Activity
|
138 |
-
*/
|
139 |
-
__( 'Users Profiles & Activity', 'wp-security-audit-log' ) => array(
|
140 |
/**
|
141 |
-
*
|
142 |
*/
|
143 |
-
__( '
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
|
|
|
|
|
|
|
|
157 |
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
|
|
177 |
),
|
178 |
-
),
|
179 |
|
180 |
-
/**
|
181 |
-
* Section: Content & Comments
|
182 |
-
*/
|
183 |
-
__( 'Content & Comments', 'wp-security-audit-log' ) => array(
|
184 |
/**
|
185 |
-
*
|
186 |
*/
|
187 |
-
__( 'Content', 'wp-security-audit-log' ) => array(
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
|
|
|
|
|
|
|
|
230 |
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
|
|
328 |
),
|
329 |
-
),
|
330 |
|
331 |
-
/**
|
332 |
-
* Section: WordPress Install
|
333 |
-
*/
|
334 |
-
__( 'WordPress Install', 'wp-security-audit-log' ) => array(
|
335 |
/**
|
336 |
-
*
|
337 |
*/
|
338 |
-
__( '
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
|
|
|
|
|
|
|
|
343 |
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
|
|
451 |
),
|
452 |
-
),
|
453 |
|
454 |
-
/**
|
455 |
-
* Section: Multisite Network
|
456 |
-
*/
|
457 |
-
__( 'Multisite Network', 'wp-security-audit-log' ) => array(
|
458 |
/**
|
459 |
-
*
|
460 |
*/
|
461 |
-
__( '
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
|
|
|
|
|
|
|
|
|
|
474 |
),
|
475 |
-
),
|
476 |
|
477 |
-
/**
|
478 |
-
* Section: Third Party Support
|
479 |
-
*/
|
480 |
-
__( 'Third Party Plugins', 'wp-security-audit-log' ) => array(
|
481 |
/**
|
482 |
-
*
|
483 |
*/
|
484 |
-
__( '
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
|
|
|
|
|
|
|
|
509 |
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
|
|
588 |
),
|
589 |
-
)
|
590 |
-
)
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
}
|
595 |
-
add_action( '
|
52 |
* Define Default Alerts.
|
53 |
*
|
54 |
* Define default alerts for the plugin.
|
|
|
|
|
55 |
*/
|
56 |
+
function wsaldefaults_wsal_init() {
|
57 |
+
$wsal = WpSecurityAuditLog::GetInstance();
|
58 |
+
|
59 |
+
if ( is_admin() || $wsal->load_wsal_on_frontend() ) {
|
60 |
+
$wsal->constants->UseConstants(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
array(
|
62 |
+
// Default PHP constants.
|
63 |
+
array(
|
64 |
+
'name' => 'E_ERROR',
|
65 |
+
'description' => __( 'Fatal run-time error.', 'wp-security-audit-log' ),
|
66 |
+
),
|
67 |
+
array(
|
68 |
+
'name' => 'E_WARNING',
|
69 |
+
'description' => __( 'Run-time warning (non-fatal error).', 'wp-security-audit-log' ),
|
70 |
+
),
|
71 |
+
array(
|
72 |
+
'name' => 'E_PARSE',
|
73 |
+
'description' => __( 'Compile-time parse error.', 'wp-security-audit-log' ),
|
74 |
+
),
|
75 |
+
array(
|
76 |
+
'name' => 'E_NOTICE',
|
77 |
+
'description' => __( 'Run-time notice.', 'wp-security-audit-log' ),
|
78 |
+
),
|
79 |
+
array(
|
80 |
+
'name' => 'E_CORE_ERROR',
|
81 |
+
'description' => __( 'Fatal error that occurred during startup.', 'wp-security-audit-log' ),
|
82 |
+
),
|
83 |
+
array(
|
84 |
+
'name' => 'E_CORE_WARNING',
|
85 |
+
'description' => __( 'Warnings that occurred during startup.', 'wp-security-audit-log' ),
|
86 |
+
),
|
87 |
+
array(
|
88 |
+
'name' => 'E_COMPILE_ERROR',
|
89 |
+
'description' => __( 'Fatal compile-time error.', 'wp-security-audit-log' ),
|
90 |
+
),
|
91 |
+
array(
|
92 |
+
'name' => 'E_COMPILE_WARNING',
|
93 |
+
'description' => __( 'Compile-time warning.', 'wp-security-audit-log' ),
|
94 |
+
),
|
95 |
+
array(
|
96 |
+
'name' => 'E_USER_ERROR',
|
97 |
+
'description' => __( 'User-generated error message.', 'wp-security-audit-log' ),
|
98 |
+
),
|
99 |
+
array(
|
100 |
+
'name' => 'E_USER_WARNING',
|
101 |
+
'description' => __( 'User-generated warning message.', 'wp-security-audit-log' ),
|
102 |
+
),
|
103 |
+
array(
|
104 |
+
'name' => 'E_USER_NOTICE',
|
105 |
+
'description' => __( 'User-generated notice message.', 'wp-security-audit-log' ),
|
106 |
+
),
|
107 |
+
array(
|
108 |
+
'name' => 'E_STRICT',
|
109 |
+
'description' => __( 'Non-standard/optimal code warning.', 'wp-security-audit-log' ),
|
110 |
+
),
|
111 |
+
array(
|
112 |
+
'name' => 'E_RECOVERABLE_ERROR',
|
113 |
+
'description' => __( 'Catchable fatal error.', 'wp-security-audit-log' ),
|
114 |
+
),
|
115 |
+
array(
|
116 |
+
'name' => 'E_DEPRECATED',
|
117 |
+
'description' => __( 'Run-time deprecation notices.', 'wp-security-audit-log' ),
|
118 |
+
),
|
119 |
+
array(
|
120 |
+
'name' => 'E_USER_DEPRECATED',
|
121 |
+
'description' => __( 'Run-time user deprecation notices.', 'wp-security-audit-log' ),
|
122 |
+
),
|
123 |
+
// Custom constants.
|
124 |
+
array(
|
125 |
+
'name' => 'E_CRITICAL',
|
126 |
+
'description' => __( 'Critical, high-impact messages.', 'wp-security-audit-log' ),
|
127 |
+
),
|
128 |
+
array(
|
129 |
+
'name' => 'E_DEBUG',
|
130 |
+
'description' => __( 'Debug informational messages.', 'wp-security-audit-log' ),
|
131 |
+
),
|
132 |
+
)
|
133 |
+
);
|
134 |
+
// Create list of default alerts.
|
135 |
+
$wsal->alerts->RegisterGroup(
|
136 |
array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
137 |
/**
|
138 |
+
* Section: Users Profiles & Activity
|
139 |
*/
|
140 |
+
__( 'Users Profiles & Activity', 'wp-security-audit-log' ) => array(
|
141 |
+
/**
|
142 |
+
* Alerts: Other User Activity
|
143 |
+
*/
|
144 |
+
__( 'Other User Activity', 'wp-security-audit-log' ) => array(
|
145 |
+
array( 1000, E_NOTICE, __( 'User logged in', 'wp-security-audit-log' ), __( 'Successfully logged in.', 'wp-security-audit-log' ) ),
|
146 |
+
array( 1001, E_NOTICE, __( 'User logged out', 'wp-security-audit-log' ), __( 'Successfully logged out.', 'wp-security-audit-log' ) ),
|
147 |
+
array( 1002, E_WARNING, __( 'Login failed', 'wp-security-audit-log' ), __( '%Attempts% failed login(s) detected.', 'wp-security-audit-log' ) ),
|
148 |
+
array( 1003, E_WARNING, __( 'Login failed / non existing user', 'wp-security-audit-log' ), __( '%Attempts% failed login(s) detected using non existing user. %LogFileText%', 'wp-security-audit-log' ) ),
|
149 |
+
array( 1004, E_WARNING, __( 'Login blocked', 'wp-security-audit-log' ), __( 'Blocked from logging in because the same WordPress user is logged in from %ClientIP%.', 'wp-security-audit-log' ) ),
|
150 |
+
array( 1005, E_WARNING, __( 'User logged in with existing session(s)', 'wp-security-audit-log' ), __( 'Successfully logged in. Another session from %IPAddress% for this user already exist.', 'wp-security-audit-log' ) ),
|
151 |
+
array( 1006, E_CRITICAL, __( 'User logged out all other sessions with the same username', 'wp-security-audit-log' ), __( 'Logged out all other sessions with the same username.', 'wp-security-audit-log' ) ),
|
152 |
+
array( 1007, E_CRITICAL, __( 'User session destroyed and logged out', 'wp-security-audit-log' ), __( 'Logged out session %TargetSessionID% which belonged to %TargetUserName%', 'wp-security-audit-log' ) ),
|
153 |
+
array( 2010, E_NOTICE, __( 'User uploaded file from Uploads directory', 'wp-security-audit-log' ), __( 'Uploaded the file %FileName% in %FilePath%.', 'wp-security-audit-log' ) ),
|
154 |
+
array( 2011, E_WARNING, __( 'User deleted file from Uploads directory', 'wp-security-audit-log' ), __( 'Deleted the file %FileName% from %FilePath%.', 'wp-security-audit-log' ) ),
|
155 |
+
array( 6007, E_NOTICE, __( 'User requests non-existing pages (404 Error Pages)', 'wp-security-audit-log' ), __( 'Has requested a non existing page (404 Error Pages) %Attempts% %Msg%. %LinkFile%%URL%', 'wp-security-audit-log' ) ),
|
156 |
+
array( 6023, E_NOTICE, __( 'Website Visitor User requests non-existing pages (404 Error Pages)', 'wp-security-audit-log' ), __( 'Website Visitor Has requested a non existing page (404 Error Pages) %Attempts% %Msg%. %LinkFile%%URL%', 'wp-security-audit-log' ) ),
|
157 |
+
),
|
158 |
|
159 |
+
/**
|
160 |
+
* Alerts: User Profiles
|
161 |
+
*/
|
162 |
+
__( 'User Profiles', 'wp-security-audit-log' ) => array(
|
163 |
+
array( 4000, E_CRITICAL, __( 'New user was created on WordPress', 'wp-security-audit-log' ), __( 'A new user %NewUserData->Username% was created with role of %NewUserData->Roles%.', 'wp-security-audit-log' ) ),
|
164 |
+
array( 4001, E_CRITICAL, __( 'User created another WordPress user', 'wp-security-audit-log' ), __( '%UserChanger% created a new user %NewUserData->Username% with the role of %NewUserData->Roles%.', 'wp-security-audit-log' ) ),
|
165 |
+
array( 4002, E_CRITICAL, __( 'The role of a user was changed by another WordPress user', 'wp-security-audit-log' ), __( 'Changed the role of the user %TargetUsername% from %OldRole% to %NewRole%%multisite_text%.', 'wp-security-audit-log' ) ),
|
166 |
+
array( 4003, E_CRITICAL, __( 'User has changed his or her password', 'wp-security-audit-log' ), __( 'Changed the password.', 'wp-security-audit-log' ) ),
|
167 |
+
array( 4004, E_CRITICAL, __( 'User changed another user\'s password', 'wp-security-audit-log' ), __( 'Changed the password for the user %TargetUserData->Username% with the role of %TargetUserData->Roles%.', 'wp-security-audit-log' ) ),
|
168 |
+
array( 4005, E_NOTICE, __( 'User changed his or her email address', 'wp-security-audit-log' ), __( 'Changed the email address from %OldEmail% to %NewEmail%.', 'wp-security-audit-log' ) ),
|
169 |
+
array( 4006, E_NOTICE, __( 'User changed another user\'s email address', 'wp-security-audit-log' ), __( 'Changed the email address of the user %TargetUsername% from %OldEmail% to %NewEmail%.', 'wp-security-audit-log' ) ),
|
170 |
+
array( 4007, E_CRITICAL, __( 'User was deleted by another user', 'wp-security-audit-log' ), __( 'Deleted the user %TargetUserData->Username% with the role of %TargetUserData->Roles%.', 'wp-security-audit-log' ) ),
|
171 |
+
array( 4014, E_NOTICE, __( 'User opened the profile page of another user', 'wp-security-audit-log' ), __( '%UserChanger% opened the profile page of the user %TargetUsername%.', 'wp-security-audit-log' ) ),
|
172 |
+
array( 4015, E_NOTICE, __( 'User updated a custom field value for a user', 'wp-security-audit-log' ), __( 'Changed the value of the custom field %custom_field_name%%ReportText% for the user %TargetUsername%.%ChangeText%', 'wp-security-audit-log' ) ),
|
173 |
+
array( 4016, E_NOTICE, __( 'User created a custom field value for a user', 'wp-security-audit-log' ), __( 'Created the value of the custom field %custom_field_name% with %new_value% for the user %TargetUsername%.', 'wp-security-audit-log' ) ),
|
174 |
+
array( 4017, E_NOTICE, __( 'User changed first name for a user', 'wp-security-audit-log' ), __( 'Changed the first name of the user %TargetUsername% from %old_firstname% to %new_firstname%', 'wp-security-audit-log' ) ),
|
175 |
+
array( 4018, E_NOTICE, __( 'User changed last name for a user', 'wp-security-audit-log' ), __( 'Changed the last name of the user %TargetUsername% from %old_lastname% to %new_lastname%', 'wp-security-audit-log' ) ),
|
176 |
+
array( 4019, E_NOTICE, __( 'User changed nickname for a user', 'wp-security-audit-log' ), __( 'Changed the nickname of the user %TargetUsername% from %old_nickname% to %new_nickname%', 'wp-security-audit-log' ) ),
|
177 |
+
array( 4020, E_WARNING, __( 'User changed the display name for a user', 'wp-security-audit-log' ), __( 'Changed the Display name publicly of user %TargetUsername% from %old_displayname% to %new_displayname%', 'wp-security-audit-log' ) ),
|
178 |
+
),
|
179 |
),
|
|
|
180 |
|
|
|
|
|
|
|
|
|
181 |
/**
|
182 |
+
* Section: Content & Comments
|
183 |
*/
|
184 |
+
__( 'Content & Comments', 'wp-security-audit-log' ) => array(
|
185 |
+
/**
|
186 |
+
* Alerts: Content
|
187 |
+
*/
|
188 |
+
__( 'Content', 'wp-security-audit-log' ) => array(
|
189 |
+
array( 2000, E_NOTICE, __( 'User created a new post and saved it as draft', 'wp-security-audit-log' ), __( 'Created a new %PostType% titled %PostTitle% and saved it as draft. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
190 |
+
array( 2001, E_NOTICE, __( 'User published a post', 'wp-security-audit-log' ), __( 'Published a %PostType% titled %PostTitle%. URL is %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
191 |
+
array( 2002, E_NOTICE, __( 'User modified a post', 'wp-security-audit-log' ), __( 'Modified the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
192 |
+
array( 2008, E_WARNING, __( 'User permanently deleted a post from the trash', 'wp-security-audit-log' ), __( 'Permanently deleted the %PostType% titled %PostTitle%. URL was %PostUrl%.', 'wp-security-audit-log' ) ),
|
193 |
+
array( 2012, E_WARNING, __( 'User moved a post to the trash', 'wp-security-audit-log' ), __( 'Moved the %PostStatus% %PostType% titled %PostTitle% to trash. URL is %PostUrl%.', 'wp-security-audit-log' ) ),
|
194 |
+
array( 2014, E_CRITICAL, __( 'User restored a post from trash', 'wp-security-audit-log' ), __( 'The %PostStatus% %PostType% titled %PostTitle% has been restored from trash. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
195 |
+
array( 2017, E_NOTICE, __( 'User changed post URL', 'wp-security-audit-log' ), __( 'Changed the URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
196 |
+
array( 2019, E_NOTICE, __( 'User changed post author', 'wp-security-audit-log' ), __( 'Changed the author of the %PostStatus% %PostType% titled %PostTitle% from %OldAuthor% to %NewAuthor%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
197 |
+
array( 2021, E_NOTICE, __( 'User changed post status', 'wp-security-audit-log' ), __( 'Changed the status of the %PostType% titled %PostTitle% from %OldStatus% to %NewStatus%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
198 |
+
array( 2025, E_WARNING, __( 'User changed the visibility of a post', 'wp-security-audit-log' ), __( 'Changed the visibility of the %PostStatus% %PostType% titled %PostTitle% from %OldVisibility% to %NewVisibility%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
199 |
+
array( 2027, E_NOTICE, __( 'User changed the date of a post', 'wp-security-audit-log' ), __( 'Changed the date of the %PostStatus% %PostType% titled %PostTitle% from %OldDate% to %NewDate%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
200 |
+
array( 2047, E_NOTICE, __( 'User changed the parent of a page', 'wp-security-audit-log' ), __( 'Changed the parent of the %PostStatus% %PostType% titled %PostTitle% from %OldParentName% to %NewParentName%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
201 |
+
array( 2048, E_CRITICAL, __( 'User changed the template of a page', 'wp-security-audit-log' ), __( 'Changed the template of the %PostStatus% %PostType% titled %PostTitle% from %OldTemplate% to %NewTemplate%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
202 |
+
array( 2049, E_NOTICE, __( 'User set a post as sticky', 'wp-security-audit-log' ), __( 'Set the post %PostTitle% as Sticky. Post URL is %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
203 |
+
array( 2050, E_NOTICE, __( 'User removed post from sticky', 'wp-security-audit-log' ), __( 'Removed the post %PostTitle% from Sticky. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
204 |
+
array( 2065, E_WARNING, __( 'User modified the content of a post', 'wp-security-audit-log' ), __( 'Modified the content of the %PostStatus% %PostType% titled %PostTitle%. Post URL is %PostUrl%. %RevisionLink% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
205 |
+
array( 2073, E_NOTICE, __( 'User submitted a post for review', 'wp-security-audit-log' ), __( 'Submitted the %PostType% titled %PostTitle% for review. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
206 |
+
array( 2074, E_NOTICE, __( 'User scheduled a post', 'wp-security-audit-log' ), __( 'Scheduled the %PostType% titled %PostTitle% to be published on %PublishingDate%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
207 |
+
array( 2086, E_NOTICE, __( 'User changed title of a post', 'wp-security-audit-log' ), __( 'Changed the title of the %PostStatus% %PostType% from %OldTitle% to %NewTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
208 |
+
array( 2100, E_NOTICE, __( 'User opened a post in the editor', 'wp-security-audit-log' ), __( 'Opened the %PostStatus% %PostType% titled %PostTitle% in the editor. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
209 |
+
array( 2101, E_NOTICE, __( 'User viewed a post', 'wp-security-audit-log' ), __( 'Viewed the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
210 |
+
array( 2106, E_NOTICE, __( 'A plugin modified a post', 'wp-security-audit-log' ), __( 'Plugin modified the %PostStatus% %PostType% titled %PostTitle% of type %PostType%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
211 |
+
array( 2111, E_NOTICE, __( 'User disabled Comments/Trackbacks and Pingbacks in a post', 'wp-security-audit-log' ), __( 'Disabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
212 |
+
array( 2112, E_NOTICE, __( 'User enabled Comments/Trackbacks and Pingbacks in a post', 'wp-security-audit-log' ), __( 'Enabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
213 |
+
array( 2119, E_NOTICE, __( 'User added post tag', 'wp-security-audit-log' ), __( 'Added the tag %tag% to the %PostStatus% post titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
214 |
+
array( 2120, E_NOTICE, __( 'User removed post tag', 'wp-security-audit-log' ), __( 'Removed the tag %tag% from the %PostStatus% post titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
215 |
+
array( 2121, E_NOTICE, __( 'User created new tag', 'wp-security-audit-log' ), __( 'Added a new tag called %TagName%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
|
216 |
+
array( 2122, E_NOTICE, __( 'User deleted tag', 'wp-security-audit-log' ), __( 'Deleted the tag %TagName%.', 'wp-security-audit-log' ) ),
|
217 |
+
array( 2123, E_NOTICE, __( 'User renamed tag', 'wp-security-audit-log' ), __( 'Renamed a tag from %old_name% to %new_name%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
|
218 |
+
array( 2124, E_NOTICE, __( 'User changed tag slug', 'wp-security-audit-log' ), __( 'Changed the slug of tag %tag% from %old_slug% to %new_slug%. View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
|
219 |
+
array( 2125, E_NOTICE, __( 'User changed tag description', 'wp-security-audit-log' ), __( 'Changed the description of the tag %tag%%ReportText%.%ChangeText% View the tag: %TagLink%.', 'wp-security-audit-log' ) ),
|
220 |
+
array( 2016, E_NOTICE, __( 'User changed post category', 'wp-security-audit-log' ), __( 'Changed the category of the %PostStatus% %PostType% titled %PostTitle% from %OldCategories% to %NewCategories%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
221 |
+
array( 2023, E_NOTICE, __( 'User created new category', 'wp-security-audit-log' ), __( 'Created a new category called %CategoryName%. Category slug is %Slug%. %CategoryLink%.', 'wp-security-audit-log' ) ),
|
222 |
+
array( 2024, E_WARNING, __( 'User deleted category', 'wp-security-audit-log' ), __( 'Deleted the %CategoryName% category. Category slug was %Slug%. %CategoryLink%.', 'wp-security-audit-log' ) ),
|
223 |
+
array( 2052, E_NOTICE, __( 'Changed the parent of a category', 'wp-security-audit-log' ), __( 'Changed the parent of the category %CategoryName% from %OldParent% to %NewParent%. %CategoryLink%.', 'wp-security-audit-log' ) ),
|
224 |
+
array( 2127, E_WARNING, __( 'User changed category name', 'wp-security-audit-log' ), __( 'Changed the name of the category %old_name% to %new_name%.', 'wp-security-audit-log' ) ),
|
225 |
+
array( 2128, E_CRITICAL, __( 'User changed category slug', 'wp-security-audit-log' ), __( 'Changed the slug of the category %CategoryName% from %old_slug% to %new_slug%.', 'wp-security-audit-log' ) ),
|
226 |
+
array( 2053, E_CRITICAL, __( 'User created a custom field for a post', 'wp-security-audit-log' ), __( 'Created a new custom field called %MetaKey% with value %MetaValue% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
227 |
+
array( 2054, E_CRITICAL, __( 'User updated a custom field value for a post', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey%%ReportText% in the %PostStatus% %PostType% titled %PostTitle%.%ChangeText% URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
228 |
+
array( 2055, E_CRITICAL, __( 'User deleted a custom field from a post', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% with value %MetaValue% from %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
229 |
+
array( 2062, E_CRITICAL, __( 'User updated a custom field name for a post', 'wp-security-audit-log' ), __( 'Changed the custom field\'s name from %MetaKeyOld% to %MetaKeyNew% in the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%.<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
230 |
+
),
|
231 |
|
232 |
+
/**
|
233 |
+
* Alerts: Comments
|
234 |
+
*/
|
235 |
+
__( 'Comments', 'wp-security-audit-log' ) => array(
|
236 |
+
array( 2090, E_NOTICE, __( 'User approved a comment', 'wp-security-audit-log' ), __( 'Approved the comment posted in response to the post %PostTitle% by %Author% on %CommentLink%.', 'wp-security-audit-log' ) ),
|
237 |
+
array( 2091, E_NOTICE, __( 'User unapproved a comment', 'wp-security-audit-log' ), __( 'Unapproved the comment posted in response to the post %PostTitle% by %Author% on %CommentLink%.', 'wp-security-audit-log' ) ),
|
238 |
+
array( 2092, E_NOTICE, __( 'User replied to a comment', 'wp-security-audit-log' ), __( 'Replied to the comment posted in response to the post %PostTitle% by %Author% on %CommentLink%.', 'wp-security-audit-log' ) ),
|
239 |
+
array( 2093, E_NOTICE, __( 'User edited a comment', 'wp-security-audit-log' ), __( 'Edited a comment posted in response to the post %PostTitle% by %Author% on %CommentLink%.', 'wp-security-audit-log' ) ),
|
240 |
+
array( 2094, E_NOTICE, __( 'User marked a comment as Spam', 'wp-security-audit-log' ), __( 'Marked the comment posted in response to the post %PostTitle% by %Author% on %CommentLink% as Spam.', 'wp-security-audit-log' ) ),
|
241 |
+
array( 2095, E_NOTICE, __( 'User marked a comment as Not Spam', 'wp-security-audit-log' ), __( 'Marked the comment posted in response to the post %PostTitle% by %Author% on %CommentLink% as Not Spam.', 'wp-security-audit-log' ) ),
|
242 |
+
array( 2096, E_NOTICE, __( 'User moved a comment to trash', 'wp-security-audit-log' ), __( 'Moved the comment posted in response to the post %PostTitle% by %Author% on %Date% to trash.', 'wp-security-audit-log' ) ),
|
243 |
+
array( 2097, E_NOTICE, __( 'User restored a comment from the trash', 'wp-security-audit-log' ), __( 'Restored the comment posted in response to the post %PostTitle% by %Author% on %CommentLink% from the trash.', 'wp-security-audit-log' ) ),
|
244 |
+
array( 2098, E_NOTICE, __( 'User permanently deleted a comment', 'wp-security-audit-log' ), __( 'Permanently deleted the comment posted in response to the post %PostTitle% by %Author% on %Date%.', 'wp-security-audit-log' ) ),
|
245 |
+
array( 2099, E_NOTICE, __( 'User posted a comment', 'wp-security-audit-log' ), __( '%CommentMsg% on %CommentLink%.', 'wp-security-audit-log' ) ),
|
246 |
+
array( 2126, E_NOTICE, __( 'Visitor posted a comment', 'wp-security-audit-log' ), __( '%CommentMsg% on %CommentLink%.', 'wp-security-audit-log' ) ),
|
247 |
+
),
|
248 |
|
249 |
+
/**
|
250 |
+
* Alerts: Custom Post Types
|
251 |
+
*
|
252 |
+
* IMPORTANT: These alerts should not be removed from here
|
253 |
+
* for backwards compatibilty.
|
254 |
+
*
|
255 |
+
* @deprecated 3.1.0
|
256 |
+
*/
|
257 |
+
__( 'Custom Post Types', 'wp-security-audit-log' ) => array(
|
258 |
+
array( 2003, E_NOTICE, __( 'User modified a draft blog post', 'wp-security-audit-log' ), __( 'Modified the draft post with the %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
259 |
+
array( 2029, E_NOTICE, __( 'User created a new post with custom post type and saved it as draft', 'wp-security-audit-log' ), __( 'Created a new custom post called %PostTitle% of type %PostType%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
260 |
+
array( 2030, E_NOTICE, __( 'User published a post with custom post type', 'wp-security-audit-log' ), __( 'Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
261 |
+
array( 2031, E_NOTICE, __( 'User modified a post with custom post type', 'wp-security-audit-log' ), __( 'Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
262 |
+
array( 2032, E_NOTICE, __( 'User modified a draft post with custom post type', 'wp-security-audit-log' ), __( 'Modified the draft custom post %PostTitle% of type is %PostType%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
263 |
+
array( 2033, E_WARNING, __( 'User permanently deleted post with custom post type', 'wp-security-audit-log' ), __( 'Permanently Deleted the custom post %PostTitle% of type %PostType%.', 'wp-security-audit-log' ) ),
|
264 |
+
array( 2034, E_WARNING, __( 'User moved post with custom post type to trash', 'wp-security-audit-log' ), __( 'Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was %PostUrl%.', 'wp-security-audit-log' ) ),
|
265 |
+
array( 2035, E_CRITICAL, __( 'User restored post with custom post type from trash', 'wp-security-audit-log' ), __( 'The custom post %PostTitle% of type %PostType% has been restored from trash. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
266 |
+
array( 2036, E_NOTICE, __( 'User changed the category of a post with custom post type', 'wp-security-audit-log' ), __( 'Changed the category(ies) of the custom post %PostTitle% of type %PostType% from %OldCategories% to %NewCategories%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
267 |
+
array( 2037, E_NOTICE, __( 'User changed the URL of a post with custom post type', 'wp-security-audit-log' ), __( 'Changed the URL of the custom post %PostTitle% of type %PostType% from %OldUrl% to %NewUrl%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
268 |
+
array( 2038, E_NOTICE, __( 'User changed the author or post with custom post type', 'wp-security-audit-log' ), __( 'Changed the author of custom post %PostTitle% of type %PostType% from %OldAuthor% to %NewAuthor%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
269 |
+
array( 2039, E_NOTICE, __( 'User changed the status of post with custom post type', 'wp-security-audit-log' ), __( 'Changed the status of custom post %PostTitle% of type %PostType% from %OldStatus% to %NewStatus%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
270 |
+
array( 2040, E_WARNING, __( 'User changed the visibility of a post with custom post type', 'wp-security-audit-log' ), __( 'Changed the visibility of the custom post %PostTitle% of type %PostType% from %OldVisibility% to %NewVisibility%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
271 |
+
array( 2041, E_NOTICE, __( 'User changed the date of post with custom post type', 'wp-security-audit-log' ), __( 'Changed the date of the custom post %PostTitle% of type %PostType% from %OldDate% to %NewDate%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
272 |
+
array( 2056, E_CRITICAL, __( 'User created a custom field for a custom post type', 'wp-security-audit-log' ), __( 'Created a new custom field %MetaKey% with value %MetaValue% in custom post %PostTitle% of type %PostType%.' . ' %EditorLinkPost%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
273 |
+
array( 2057, E_CRITICAL, __( 'User updated a custom field for a custom post type', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in custom post %PostTitle% of type %PostType%' . ' %EditorLinkPost%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
274 |
+
array( 2058, E_CRITICAL, __( 'User deleted a custom field from a custom post type', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% with id %MetaID% from custom post %PostTitle% of type %PostType%' . ' %EditorLinkPost%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
275 |
+
array( 2063, E_CRITICAL, __( 'User updated a custom field name for a custom post type', 'wp-security-audit-log' ), __( 'Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom post %PostTitle% of type %PostType%' . ' %EditorLinkPost%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
276 |
+
array( 2067, E_WARNING, __( 'User modified content for a published custom post type', 'wp-security-audit-log' ), __( 'Modified the content of the published custom post type %PostTitle%. Post URL is %PostUrl%.' . '%EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
277 |
+
array( 2068, E_NOTICE, __( 'User modified content for a draft post', 'wp-security-audit-log' ), __( 'Modified the content of the draft post %PostTitle%.' . '%RevisionLink%' . ' %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
278 |
+
array( 2070, E_NOTICE, __( 'User modified content for a draft custom post type', 'wp-security-audit-log' ), __( 'Modified the content of the draft custom post type %PostTitle%.' . '%EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
279 |
+
array( 2072, E_NOTICE, __( 'User modified content of a post', 'wp-security-audit-log' ), __( 'Modified the content of post %PostTitle% which is submitted for review.' . '%RevisionLink%' . ' %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
280 |
+
array( 2076, E_NOTICE, __( 'User scheduled a custom post type', 'wp-security-audit-log' ), __( 'Scheduled the custom post type %PostTitle% to be published %PublishingDate%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
281 |
+
array( 2088, E_NOTICE, __( 'User changed title of a custom post type', 'wp-security-audit-log' ), __( 'Changed the title of the custom post %OldTitle% to %NewTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
282 |
+
array( 2104, E_NOTICE, __( 'User opened a custom post type in the editor', 'wp-security-audit-log' ), __( 'Opened the custom post %PostTitle% of type %PostType% in the editor. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
283 |
+
array( 2105, E_NOTICE, __( 'User viewed a custom post type', 'wp-security-audit-log' ), __( 'Viewed the custom post %PostTitle% of type %PostType%. View the post: %PostUrl%.', 'wp-security-audit-log' ) ),
|
284 |
+
array( 5021, E_CRITICAL, __( 'A plugin created a custom post', 'wp-security-audit-log' ), __( 'A plugin automatically created the following custom post: %PostTitle%.', 'wp-security-audit-log' ) ),
|
285 |
+
array( 5027, E_CRITICAL, __( 'A plugin deleted a custom post', 'wp-security-audit-log' ), __( 'A plugin automatically deleted the following custom post: %PostTitle%.', 'wp-security-audit-log' ) ),
|
286 |
+
array( 2108, E_NOTICE, __( 'A plugin modified a custom post', 'wp-security-audit-log' ), __( 'Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
287 |
+
),
|
288 |
|
289 |
+
/**
|
290 |
+
* Alerts: Pages
|
291 |
+
*
|
292 |
+
* IMPORTANT: These alerts should not be removed from here
|
293 |
+
* for backwards compatibilty.
|
294 |
+
*
|
295 |
+
* @deprecated 3.1.0
|
296 |
+
*/
|
297 |
+
__( 'Pages', 'wp-security-audit-log' ) => array(
|
298 |
+
array( 2004, E_NOTICE, __( 'User created a new WordPress page and saved it as draft', 'wp-security-audit-log' ), __( 'Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
299 |
+
array( 2005, E_NOTICE, __( 'User published a WordPress page', 'wp-security-audit-log' ), __( 'Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
300 |
+
array( 2006, E_NOTICE, __( 'User modified a published WordPress page', 'wp-security-audit-log' ), __( 'Modified the published page %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
301 |
+
array( 2007, E_NOTICE, __( 'User modified a draft WordPress page', 'wp-security-audit-log' ), __( 'Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
302 |
+
array( 2009, E_WARNING, __( 'User permanently deleted a page from the trash', 'wp-security-audit-log' ), __( 'Permanently deleted the page %PostTitle%.', 'wp-security-audit-log' ) ),
|
303 |
+
array( 2013, E_WARNING, __( 'User moved WordPress page to the trash', 'wp-security-audit-log' ), __( 'Moved the page %PostTitle% to trash. Page URL was %PostUrl%.', 'wp-security-audit-log' ) ),
|
304 |
+
array( 2015, E_CRITICAL, __( 'User restored a WordPress page from trash', 'wp-security-audit-log' ), __( 'Page %PostTitle% has been restored from trash. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
305 |
+
array( 2018, E_NOTICE, __( 'User changed page URL', 'wp-security-audit-log' ), __( 'Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
306 |
+
array( 2020, E_NOTICE, __( 'User changed page author', 'wp-security-audit-log' ), __( 'Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
307 |
+
array( 2022, E_NOTICE, __( 'User changed page status', 'wp-security-audit-log' ), __( 'Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
308 |
+
array( 2026, E_WARNING, __( 'User changed the visibility of a page post', 'wp-security-audit-log' ), __( 'Changed the visibility of the page %PostTitle% from %OldVisibility% to %NewVisibility%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
309 |
+
array( 2028, E_NOTICE, __( 'User changed the date of a page post', 'wp-security-audit-log' ), __( 'Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
310 |
+
array( 2059, E_CRITICAL, __( 'User created a custom field for a page', 'wp-security-audit-log' ), __( 'Created a new custom field called %MetaKey% with value %MetaValue% in the page %PostTitle%' . ' %EditorLinkPage%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
311 |
+
array( 2060, E_CRITICAL, __( 'User updated a custom field value for a page', 'wp-security-audit-log' ), __( 'Modified the value of the custom field %MetaKey% from %MetaValueOld% to %MetaValueNew% in the page %PostTitle%' . ' %EditorLinkPage%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
312 |
+
array( 2061, E_CRITICAL, __( 'User deleted a custom field from a page', 'wp-security-audit-log' ), __( 'Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle%' . ' %EditorLinkPage%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
313 |
+
array( 2064, E_CRITICAL, __( 'User updated a custom field name for a page', 'wp-security-audit-log' ), __( 'Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the page %PostTitle%' . ' %EditorLinkPage%.' . '<br>%MetaLink%.', 'wp-security-audit-log' ) ),
|
314 |
+
array( 2066, E_WARNING, __( 'User modified content for a published page', 'wp-security-audit-log' ), __( 'Modified the content of the published page %PostTitle%. Page URL is %PostUrl%. %RevisionLink% %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
315 |
+
array( 2069, E_NOTICE, __( 'User modified content for a draft page', 'wp-security-audit-log' ), __( 'Modified the content of draft page %PostTitle%.' . '%RevisionLink%' . ' %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
316 |
+
array( 2075, E_NOTICE, __( 'User scheduled a page', 'wp-security-audit-log' ), __( 'Scheduled the page %PostTitle% to be published %PublishingDate%.' . ' %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
317 |
+
array( 2087, E_NOTICE, __( 'User changed title of a page', 'wp-security-audit-log' ), __( 'Changed the title of the page %OldTitle% to %NewTitle%.' . ' %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
318 |
+
array( 2102, E_NOTICE, __( 'User opened a page in the editor', 'wp-security-audit-log' ), __( 'Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
319 |
+
array( 2103, E_NOTICE, __( 'User viewed a page', 'wp-security-audit-log' ), __( 'Viewed the page %PostTitle%. View the page: %PostUrl%.', 'wp-security-audit-log' ) ),
|
320 |
+
array( 2113, E_NOTICE, __( 'User disabled Comments/Trackbacks and Pingbacks on a draft post', 'wp-security-audit-log' ), __( 'Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%.', 'wp-security-audit-log' ) ),
|
321 |
+
array( 2114, E_NOTICE, __( 'User enabled Comments/Trackbacks and Pingbacks on a draft post', 'wp-security-audit-log' ), __( 'Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%.', 'wp-security-audit-log' ) ),
|
322 |
+
array( 2115, E_NOTICE, __( 'User disabled Comments/Trackbacks and Pingbacks on a published page', 'wp-security-audit-log' ), __( 'Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%.', 'wp-security-audit-log' ) ),
|
323 |
+
array( 2116, E_NOTICE, __( 'User enabled Comments/Trackbacks and Pingbacks on a published page', 'wp-security-audit-log' ), __( 'Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%.', 'wp-security-audit-log' ) ),
|
324 |
+
array( 2117, E_NOTICE, __( 'User disabled Comments/Trackbacks and Pingbacks on a draft page', 'wp-security-audit-log' ), __( 'Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%.', 'wp-security-audit-log' ) ),
|
325 |
+
array( 2118, E_NOTICE, __( 'User enabled Comments/Trackbacks and Pingbacks on a draft page', 'wp-security-audit-log' ), __( 'Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%.', 'wp-security-audit-log' ) ),
|
326 |
+
array( 5020, E_CRITICAL, __( 'A plugin created a page', 'wp-security-audit-log' ), __( 'A plugin automatically created the following page: %PostTitle%.', 'wp-security-audit-log' ) ),
|
327 |
+
array( 5026, E_CRITICAL, __( 'A plugin deleted a page', 'wp-security-audit-log' ), __( 'A plugin automatically deleted the following page: %PostTitle%.', 'wp-security-audit-log' ) ),
|
328 |
+
array( 2107, E_NOTICE, __( 'A plugin modified a page', 'wp-security-audit-log' ), __( 'Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%.', 'wp-security-audit-log' ) ),
|
329 |
+
),
|
330 |
),
|
|
|
331 |
|
|
|
|
|
|
|
|
|
332 |
/**
|
333 |
+
* Section: WordPress Install
|
334 |
*/
|
335 |
+
__( 'WordPress Install', 'wp-security-audit-log' ) => array(
|
336 |
+
/**
|
337 |
+
* Alerts: Database
|
338 |
+
*/
|
339 |
+
__( 'Database', 'wp-security-audit-log' ) => array(
|
340 |
+
array( 5016, E_CRITICAL, __( 'Unknown component created tables', 'wp-security-audit-log' ), __( 'An unknown component created these tables in the database: %TableNames%.', 'wp-security-audit-log' ) ),
|
341 |
+
array( 5017, E_CRITICAL, __( 'Unknown component modified tables structure', 'wp-security-audit-log' ), __( 'An unknown component modified the structure of these database tables: %TableNames%.', 'wp-security-audit-log' ) ),
|
342 |
+
array( 5018, E_CRITICAL, __( 'Unknown component deleted tables', 'wp-security-audit-log' ), __( 'An unknown component deleted the following tables from the database: %TableNames%.', 'wp-security-audit-log' ) ),
|
343 |
+
),
|
344 |
|
345 |
+
/**
|
346 |
+
* Alerts: Plugins
|
347 |
+
*/
|
348 |
+
__( 'Plugins', 'wp-security-audit-log' ) => array(
|
349 |
+
array( 5000, E_CRITICAL, __( 'User installed a plugin', 'wp-security-audit-log' ), __( 'Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%.', 'wp-security-audit-log' ) ),
|
350 |
+
array( 5001, E_CRITICAL, __( 'User activated a WordPress plugin', 'wp-security-audit-log' ), __( 'Activated the plugin %PluginData->Name% installed in %PluginFile%.', 'wp-security-audit-log' ) ),
|
351 |
+
array( 5002, E_CRITICAL, __( 'User deactivated a WordPress plugin', 'wp-security-audit-log' ), __( 'Deactivated the plugin %PluginData->Name% installed in %PluginFile%.', 'wp-security-audit-log' ) ),
|
352 |
+
array( 5003, E_CRITICAL, __( 'User uninstalled a plugin', 'wp-security-audit-log' ), __( 'Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile%.', 'wp-security-audit-log' ) ),
|
353 |
+
array( 5004, E_WARNING, __( 'User upgraded a plugin', 'wp-security-audit-log' ), __( 'Upgraded the plugin %PluginData->Name% installed in %PluginFile%.', 'wp-security-audit-log' ) ),
|
354 |
+
array( 5010, E_CRITICAL, __( 'Plugin created tables', 'wp-security-audit-log' ), __( 'Plugin %Plugin->Name% created these tables in the database: %TableNames%.', 'wp-security-audit-log' ) ),
|
355 |
+
array( 5011, E_CRITICAL, __( 'Plugin modified tables structure', 'wp-security-audit-log' ), __( 'Plugin %Plugin->Name% modified the structure of these database tables: %TableNames%.', 'wp-security-audit-log' ) ),
|
356 |
+
array( 5012, E_CRITICAL, __( 'Plugin deleted tables', 'wp-security-audit-log' ), __( 'Plugin %Plugin->Name% deleted the following tables from the database: %TableNames%.', 'wp-security-audit-log' ) ),
|
357 |
+
array( 5019, E_CRITICAL, __( 'A plugin created a post', 'wp-security-audit-log' ), __( 'A plugin automatically created the following %PostType% called %PostTitle%. View the post: %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
358 |
+
array( 5025, E_CRITICAL, __( 'A plugin deleted a post', 'wp-security-audit-log' ), __( 'A plugin automatically deleted the following %PostType% called %PostTitle%.', 'wp-security-audit-log' ) ),
|
359 |
+
array( 2051, E_CRITICAL, __( 'User changed a file using the plugin editor', 'wp-security-audit-log' ), __( 'Modified %File% with the Plugin Editor.', 'wp-security-audit-log' ) ),
|
360 |
+
),
|
361 |
|
362 |
+
/**
|
363 |
+
* Alerts: Themes
|
364 |
+
*/
|
365 |
+
__( 'Themes', 'wp-security-audit-log' ) => array(
|
366 |
+
array( 5005, E_WARNING, __( 'User installed a theme', 'wp-security-audit-log' ), __( 'Installed the theme "%Theme->Name%" in %Theme->get_template_directory%.', 'wp-security-audit-log' ) ),
|
367 |
+
array( 5006, E_CRITICAL, __( 'User activated a theme', 'wp-security-audit-log' ), __( 'Activated the theme "%Theme->Name%", installed in %Theme->get_template_directory%.', 'wp-security-audit-log' ) ),
|
368 |
+
array( 5007, E_CRITICAL, __( 'User uninstalled a theme', 'wp-security-audit-log' ), __( 'Deleted the theme "%Theme->Name%" installed in %Theme->get_template_directory%.', 'wp-security-audit-log' ) ),
|
369 |
+
array( 5008, E_CRITICAL, __( 'Activated theme on network', 'wp-security-audit-log' ), __( 'Network activated the theme %Theme->Name% installed in %Theme->get_template_directory%.', 'wp-security-audit-log' ) ),
|
370 |
+
array( 5009, E_CRITICAL, __( 'Deactivated theme from network', 'wp-security-audit-log' ), __( 'Network deactivated the theme %Theme->Name% installed in %Theme->get_template_directory%.', 'wp-security-audit-log' ) ),
|
371 |
+
array( 5013, E_CRITICAL, __( 'Theme created tables', 'wp-security-audit-log' ), __( 'Theme %Theme->Name% created these tables in the database: %TableNames%.', 'wp-security-audit-log' ) ),
|
372 |
+
array( 5014, E_CRITICAL, __( 'Theme modified tables structure', 'wp-security-audit-log' ), __( 'Theme %Theme->Name% modified the structure of these database tables: %TableNames%.', 'wp-security-audit-log' ) ),
|
373 |
+
array( 5015, E_CRITICAL, __( 'Theme deleted tables', 'wp-security-audit-log' ), __( 'Theme %Theme->Name% deleted the following tables from the database: %TableNames%.', 'wp-security-audit-log' ) ),
|
374 |
+
array( 5031, E_WARNING, __( 'User updated a theme', 'wp-security-audit-log' ), __( 'Updated the theme "%Theme->Name%" installed in %Theme->get_template_directory%.', 'wp-security-audit-log' ) ),
|
375 |
+
array( 2046, E_CRITICAL, __( 'User changed a file using the theme editor', 'wp-security-audit-log' ), __( 'Modified %File% with the Theme Editor.', 'wp-security-audit-log' ) ),
|
376 |
+
),
|
377 |
|
378 |
+
/**
|
379 |
+
* Alerts: System
|
380 |
+
*/
|
381 |
+
__( 'System', 'wp-security-audit-log' ) => array(
|
382 |
+
array( 0000, E_CRITICAL, __( 'Unknown Error', 'wp-security-audit-log' ), __( 'An unexpected error has occurred .', 'wp-security-audit-log' ) ),
|
383 |
+
array( 0001, E_CRITICAL, __( 'PHP error', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
|
384 |
+
array( 0002, E_WARNING, __( 'PHP warning', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
|
385 |
+
array( 0003, E_NOTICE, __( 'PHP notice', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
|
386 |
+
array( 0004, E_CRITICAL, __( 'PHP exception', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
|
387 |
+
array( 0005, E_CRITICAL, __( 'PHP shutdown error', 'wp-security-audit-log' ), __( '%Message%.', 'wp-security-audit-log' ) ),
|
388 |
+
array( 6000, E_NOTICE, __( 'Events automatically pruned by system', 'wp-security-audit-log' ), __( 'System automatically deleted %EventCount% event(s).', 'wp-security-audit-log' ) ),
|
389 |
+
array( 6004, E_CRITICAL, __( 'WordPress was updated', 'wp-security-audit-log' ), __( 'Updated WordPress from version %OldVersion% to %NewVersion%.', 'wp-security-audit-log' ) ),
|
390 |
+
array( 6006, E_NOTICE, __( 'Reset plugin\'s settings to default', 'wp-security-audit-log' ), __( 'Reset plugin\'s settings to default.', 'wp-security-audit-log' ) ),
|
391 |
+
array( 6034, E_NOTICE, __( 'Purged the activity log', 'wp-security-audit-log' ), __( 'Purged the activity log.', 'wp-security-audit-log' ) ),
|
392 |
+
array( 6028, E_CRITICAL, __( 'File content has been modified', 'wp-security-audit-log' ), __( 'The content of the file %FileLocation% has been modified.', 'wp-security-audit-log' ) ),
|
393 |
+
array( 6029, E_CRITICAL, __( 'File added to the site', 'wp-security-audit-log' ), __( 'The file %FileLocation% has been added to your website.', 'wp-security-audit-log' ) ),
|
394 |
+
array( 6030, E_CRITICAL, __( 'File deleted from the site', 'wp-security-audit-log' ), __( 'The file %FileLocation% has been deleted from your website.', 'wp-security-audit-log' ) ),
|
395 |
+
array( 6031, E_CRITICAL, __( 'File not scanned because it is bigger than the maximum file size limit', 'wp-security-audit-log' ), __( 'The file %FileLocation% was not scanned because it is bigger than the maximum file size limit. If you want to include these files in the scan increase the file size limit from the %FileSettings%.', 'wp-security-audit-log' ) ),
|
396 |
+
array( 6032, E_CRITICAL, __( 'File integrity scan stopped due to the limit of 1 million files', 'wp-security-audit-log' ), __( 'The file changes scanning engine has reached the limit of 1 million files and stopped the scan. Please %ContactSupport% for more information.', 'wp-security-audit-log' ) ),
|
397 |
+
array( 6033, E_NOTICE, __( 'File integrity scan started/stopped', 'wp-security-audit-log' ), __( 'The file integrity scanner has %ScanStatus%.', 'wp-security-audit-log' ) ),
|
398 |
+
array( 9999, E_CRITICAL, __( 'Advertising Add-ons', 'wp-security-audit-log' ), __( '%PromoName% %PromoMessage%', 'wp-security-audit-log' ) ),
|
399 |
+
),
|
400 |
|
401 |
+
/**
|
402 |
+
* Alerts: Menus
|
403 |
+
*/
|
404 |
+
__( 'Menus', 'wp-security-audit-log' ) => array(
|
405 |
+
array( 2078, E_NOTICE, __( 'User created new menu', 'wp-security-audit-log' ), __( 'Created a new menu called %MenuName%.', 'wp-security-audit-log' ) ),
|
406 |
+
array( 2079, E_WARNING, __( 'User added content to a menu', 'wp-security-audit-log' ), __( 'Added the %ContentType% called %ContentName% to menu %MenuName%.', 'wp-security-audit-log' ) ),
|
407 |
+
array( 2080, E_WARNING, __( 'User removed content from a menu', 'wp-security-audit-log' ), __( 'Removed the %ContentType% called %ContentName% from the menu %MenuName%.', 'wp-security-audit-log' ) ),
|
408 |
+
array( 2081, E_CRITICAL, __( 'User deleted menu', 'wp-security-audit-log' ), __( 'Deleted the menu %MenuName%.', 'wp-security-audit-log' ) ),
|
409 |
+
array( 2082, E_WARNING, __( 'User changed menu setting', 'wp-security-audit-log' ), __( '%Status% the menu setting %MenuSetting% in %MenuName%.', 'wp-security-audit-log' ) ),
|
410 |
+
array( 2083, E_NOTICE, __( 'User modified content in a menu', 'wp-security-audit-log' ), __( 'Modified the %ContentType% called %ContentName% in menu %MenuName%.', 'wp-security-audit-log' ) ),
|
411 |
+
array( 2084, E_WARNING, __( 'User changed name of a menu', 'wp-security-audit-log' ), __( 'Changed the name of menu %OldMenuName% to %NewMenuName%.', 'wp-security-audit-log' ) ),
|
412 |
+
array( 2085, E_NOTICE, __( 'User changed order of the objects in a menu', 'wp-security-audit-log' ), __( 'Changed the order of the %ItemName% in menu %MenuName%.', 'wp-security-audit-log' ) ),
|
413 |
+
array( 2089, E_NOTICE, __( 'User moved objects as a sub-item', 'wp-security-audit-log' ), __( 'Moved %ItemName% as a sub-item of %ParentName% in menu %MenuName%.', 'wp-security-audit-log' ) ),
|
414 |
+
),
|
415 |
|
416 |
+
/**
|
417 |
+
* Alerts: Widgets
|
418 |
+
*/
|
419 |
+
__( 'Widgets', 'wp-security-audit-log' ) => array(
|
420 |
+
array( 2042, E_CRITICAL, __( 'User added a new widget', 'wp-security-audit-log' ), __( 'Added a new %WidgetName% widget in %Sidebar%.', 'wp-security-audit-log' ) ),
|
421 |
+
array( 2043, E_WARNING, __( 'User modified a widget', 'wp-security-audit-log' ), __( 'Modified the %WidgetName% widget in %Sidebar%.', 'wp-security-audit-log' ) ),
|
422 |
+
array( 2044, E_CRITICAL, __( 'User deleted widget', 'wp-security-audit-log' ), __( 'Deleted the %WidgetName% widget from %Sidebar%.', 'wp-security-audit-log' ) ),
|
423 |
+
array( 2045, E_NOTICE, __( 'User moved widget', 'wp-security-audit-log' ), __( 'Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%.', 'wp-security-audit-log' ) ),
|
424 |
+
array( 2071, E_NOTICE, __( 'User changed widget position', 'wp-security-audit-log' ), __( 'Changed the position of the widget %WidgetName% in sidebar %Sidebar%.', 'wp-security-audit-log' ) ),
|
425 |
+
),
|
426 |
|
427 |
+
/**
|
428 |
+
* Alerts: WordPress Settings
|
429 |
+
*/
|
430 |
+
__( 'WordPress Settings', 'wp-security-audit-log' ) => array(
|
431 |
+
array( 6001, E_CRITICAL, __( 'Option Anyone Can Register in WordPress settings changed', 'wp-security-audit-log' ), __( '%NewValue% the option "Anyone can register".', 'wp-security-audit-log' ) ),
|
432 |
+
array( 6002, E_CRITICAL, __( 'New User Default Role changed', 'wp-security-audit-log' ), __( 'Changed the New User Default Role from %OldRole% to %NewRole%.', 'wp-security-audit-log' ) ),
|
433 |
+
array( 6003, E_CRITICAL, __( 'WordPress Administrator Notification email changed', 'wp-security-audit-log' ), __( 'Changed the WordPress administrator notifications email address from %OldEmail% to %NewEmail%.', 'wp-security-audit-log' ) ),
|
434 |
+
array( 6005, E_CRITICAL, __( 'User changes the WordPress Permalinks', 'wp-security-audit-log' ), __( 'Changed the WordPress permalinks from %OldPattern% to %NewPattern%.', 'wp-security-audit-log' ) ),
|
435 |
+
array( 6008, E_CRITICAL, __( 'Enabled/Disabled the option Discourage search engines from indexing this site', 'wp-security-audit-log' ), __( '%Status% the option Discourage search engines from indexing this site.', 'wp-security-audit-log' ) ),
|
436 |
+
array( 6009, E_CRITICAL, __( 'Enabled/Disabled comments on all the website', 'wp-security-audit-log' ), __( '%Status% comments on all the website.', 'wp-security-audit-log' ) ),
|
437 |
+
array( 6010, E_CRITICAL, __( 'Enabled/Disabled the option Comment author must fill out name and email', 'wp-security-audit-log' ), __( '%Status% the option Comment author must fill out name and email.', 'wp-security-audit-log' ) ),
|
438 |
+
array( 6011, E_CRITICAL, __( 'Enabled/Disabled the option Users must be logged in and registered to comment', 'wp-security-audit-log' ), __( '%Status% the option Users must be logged in and registered to comment.', 'wp-security-audit-log' ) ),
|
439 |
+
array( 6012, E_CRITICAL, __( 'Enabled/Disabled the option to automatically close comments', 'wp-security-audit-log' ), __( '%Status% the option to automatically close comments after %Value% days.', 'wp-security-audit-log' ) ),
|
440 |
+
array( 6013, E_NOTICE, __( 'Changed the value of the option Automatically close comments', 'wp-security-audit-log' ), __( 'Changed the value of the option Automatically close comments from %OldValue% to %NewValue% days.', 'wp-security-audit-log' ) ),
|
441 |
+
array( 6014, E_CRITICAL, __( 'Enabled/Disabled the option for comments to be manually approved', 'wp-security-audit-log' ), __( '%Status% the option for comments to be manually approved.', 'wp-security-audit-log' ) ),
|
442 |
+
array( 6015, E_CRITICAL, __( 'Enabled/Disabled the option for an author to have previously approved comments for the comments to appear', 'wp-security-audit-log' ), __( '%Status% the option for an author to have previously approved comments for the comments to appear.', 'wp-security-audit-log' ) ),
|
443 |
+
array( 6016, E_CRITICAL, __( 'Changed the number of links that a comment must have to be held in the queue', 'wp-security-audit-log' ), __( 'Changed the number of links from %OldValue% to %NewValue% that a comment must have to be held in the queue.', 'wp-security-audit-log' ) ),
|
444 |
+
array( 6017, E_CRITICAL, __( 'Modified the list of keywords for comments moderation', 'wp-security-audit-log' ), __( 'Modified the list of keywords for comments moderation.', 'wp-security-audit-log' ) ),
|
445 |
+
array( 6018, E_CRITICAL, __( 'Modified the list of keywords for comments blacklisting', 'wp-security-audit-log' ), __( 'Modified the list of keywords for comments blacklisting.', 'wp-security-audit-log' ) ),
|
446 |
+
array( 6024, E_CRITICAL, __( 'Option WordPress Address (URL) in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the WordPress address (URL) from %old_url% to %new_url%.', 'wp-security-audit-log' ) ),
|
447 |
+
array( 6025, E_CRITICAL, __( 'Option Site Address (URL) in WordPress settings changed', 'wp-security-audit-log' ), __( 'Changed the site address (URL) from %old_url% to %new_url%.', 'wp-security-audit-log' ) ),
|
448 |
+
array( 6019, E_CRITICAL, __( 'Created a New cron job', 'wp-security-audit-log' ), __( 'A new cron job called %name% was created and is scheduled to run %schedule%.', 'wp-security-audit-log' ) ),
|
449 |
+
array( 6020, E_CRITICAL, __( 'Changed status of the cron job', 'wp-security-audit-log' ), __( 'The cron job %name% was %status%.', 'wp-security-audit-log' ) ),
|
450 |
+
array( 6021, E_CRITICAL, __( 'Deleted the cron job', 'wp-security-audit-log' ), __( 'The cron job %name% was deleted.', 'wp-security-audit-log' ) ),
|
451 |
+
array( 6022, E_NOTICE, __( 'Started the cron job', 'wp-security-audit-log' ), __( 'The cron job %name% has just started.', 'wp-security-audit-log' ) ),
|
452 |
+
),
|
453 |
),
|
|
|
454 |
|
|
|
|
|
|
|
|
|
455 |
/**
|
456 |
+
* Section: Multisite Network
|
457 |
*/
|
458 |
+
__( 'Multisite Network', 'wp-security-audit-log' ) => array(
|
459 |
+
/**
|
460 |
+
* Alerts: MultiSite
|
461 |
+
*/
|
462 |
+
__( 'MultiSite', 'wp-security-audit-log' ) => array(
|
463 |
+
array( 4008, E_CRITICAL, __( 'User granted Super Admin privileges', 'wp-security-audit-log' ), __( 'Granted Super Admin privileges to %TargetUsername%.', 'wp-security-audit-log' ) ),
|
464 |
+
array( 4009, E_CRITICAL, __( 'User revoked from Super Admin privileges', 'wp-security-audit-log' ), __( 'Revoked Super Admin privileges from %TargetUsername%.', 'wp-security-audit-log' ) ),
|
465 |
+
array( 4010, E_CRITICAL, __( 'Existing user added to a site', 'wp-security-audit-log' ), __( 'Added the existing user %TargetUsername% with %TargetUserRole% role to site %SiteName%.', 'wp-security-audit-log' ) ),
|
466 |
+
array( 4011, E_CRITICAL, __( 'User removed from site', 'wp-security-audit-log' ), __( 'Removed the user %TargetUsername% with role %TargetUserRole% from %SiteName% site.', 'wp-security-audit-log' ) ),
|
467 |
+
array( 4012, E_CRITICAL, __( 'New network user created', 'wp-security-audit-log' ), __( 'Created a new network user %NewUserData->Username%.', 'wp-security-audit-log' ) ),
|
468 |
+
array( 4013, E_CRITICAL, __( 'The forum role of a user was changed by another WordPress user', 'wp-security-audit-log' ), __( 'Change the forum role of the user %TargetUsername% from %OldRole% to %NewRole% by %UserChanger%.', 'wp-security-audit-log' ) ),
|
469 |
+
array( 7000, E_CRITICAL, __( 'New site added on the network', 'wp-security-audit-log' ), __( 'Added the site %SiteName% to the network.', 'wp-security-audit-log' ) ),
|
470 |
+
array( 7001, E_CRITICAL, __( 'Existing site archived', 'wp-security-audit-log' ), __( 'Archived the site %SiteName%.', 'wp-security-audit-log' ) ),
|
471 |
+
array( 7002, E_CRITICAL, __( 'Archived site has been unarchived', 'wp-security-audit-log' ), __( 'Unarchived the site %SiteName%.', 'wp-security-audit-log' ) ),
|
472 |
+
array( 7003, E_CRITICAL, __( 'Deactivated site has been activated', 'wp-security-audit-log' ), __( 'Activated the site %SiteName%.', 'wp-security-audit-log' ) ),
|
473 |
+
array( 7004, E_CRITICAL, __( 'Site has been deactivated', 'wp-security-audit-log' ), __( 'Deactivated the site %SiteName%.', 'wp-security-audit-log' ) ),
|
474 |
+
array( 7005, E_CRITICAL, __( 'Existing site deleted from network', 'wp-security-audit-log' ), __( 'Deleted the site %SiteName%.', 'wp-security-audit-log' ) ),
|
475 |
+
),
|
476 |
),
|
|
|
477 |
|
|
|
|
|
|
|
|
|
478 |
/**
|
479 |
+
* Section: Third Party Support
|
480 |
*/
|
481 |
+
__( 'Third Party Plugins', 'wp-security-audit-log' ) => array(
|
482 |
+
/**
|
483 |
+
* Alerts: BBPress Forum
|
484 |
+
*/
|
485 |
+
__( 'BBPress Forum', 'wp-security-audit-log' ) => array(
|
486 |
+
array( 8000, E_CRITICAL, __( 'User created new forum', 'wp-security-audit-log' ), __( 'Created new forum %ForumName%. Forum URL is %ForumURL%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
487 |
+
array( 8001, E_NOTICE, __( 'User changed status of a forum', 'wp-security-audit-log' ), __( 'Changed the status of the forum %ForumName% from %OldStatus% to %NewStatus%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
488 |
+
array( 8002, E_NOTICE, __( 'User changed visibility of a forum', 'wp-security-audit-log' ), __( 'Changed the visibility of the forum %ForumName% from %OldVisibility% to %NewVisibility%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
489 |
+
array( 8003, E_CRITICAL, __( 'User changed the URL of a forum', 'wp-security-audit-log' ), __( 'Changed the URL of the forum %ForumName% from %OldUrl% to %NewUrl%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
490 |
+
array( 8004, E_NOTICE, __( 'User changed order of a forum', 'wp-security-audit-log' ), __( 'Changed the order of the forum %ForumName% from %OldOrder% to %NewOrder%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
491 |
+
array( 8005, E_CRITICAL, __( 'User moved forum to trash', 'wp-security-audit-log' ), __( 'Moved the forum %ForumName% to trash.', 'wp-security-audit-log' ) ),
|
492 |
+
array( 8006, E_WARNING, __( 'User permanently deleted forum', 'wp-security-audit-log' ), __( 'Permanently deleted the forum %ForumName%.', 'wp-security-audit-log' ) ),
|
493 |
+
array( 8007, E_WARNING, __( 'User restored forum from trash', 'wp-security-audit-log' ), __( 'Restored the forum %ForumName% from trash.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
494 |
+
array( 8008, E_NOTICE, __( 'User changed the parent of a forum', 'wp-security-audit-log' ), __( 'Changed the parent of the forum %ForumName% from %OldParent% to %NewParent%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
495 |
+
array( 8011, E_NOTICE, __( 'User changed type of a forum', 'wp-security-audit-log' ), __( 'Changed the type of the forum %ForumName% from %OldType% to %NewType%.' . ' %EditorLinkForum%.', 'wp-security-audit-log' ) ),
|
496 |
+
array( 8009, E_WARNING, __( 'User changed forum\'s role', 'wp-security-audit-log' ), __( 'Changed the forum\'s auto role from %OldRole% to %NewRole%.', 'wp-security-audit-log' ) ),
|
497 |
+
array( 8010, E_WARNING, __( 'User changed option of a forum', 'wp-security-audit-log' ), __( '%Status% the option for anonymous posting on forum.', 'wp-security-audit-log' ) ),
|
498 |
+
array( 8012, E_NOTICE, __( 'User changed time to disallow post editing', 'wp-security-audit-log' ), __( 'Changed the time to disallow post editing from %OldTime% to %NewTime% minutes in the forums.', 'wp-security-audit-log' ) ),
|
499 |
+
array( 8013, E_WARNING, __( 'User changed the forum setting posting throttle time', 'wp-security-audit-log' ), __( 'Changed the posting throttle time from %OldTime% to %NewTime% seconds in the forums.', 'wp-security-audit-log' ) ),
|
500 |
+
array( 8014, E_NOTICE, __( 'User created new topic', 'wp-security-audit-log' ), __( 'Created a new topic %TopicName%.' . ' %EditorLinkTopic%.', 'wp-security-audit-log' ) ),
|
501 |
+
array( 8015, E_NOTICE, __( 'User changed status of a topic', 'wp-security-audit-log' ), __( 'Changed the status of the topic %TopicName% from %OldStatus% to %NewStatus%.' . ' %EditorLinkTopic%.', 'wp-security-audit-log' ) ),
|
502 |
+
array( 8016, E_NOTICE, __( 'User changed type of a topic', 'wp-security-audit-log' ), __( 'Changed the type of the topic %TopicName% from %OldType% to %NewType%.' . ' %EditorLinkTopic%.', 'wp-security-audit-log' ) ),
|
503 |
+
array( 8017, E_CRITICAL, __( 'User changed URL of a topic', 'wp-security-audit-log' ), __( 'Changed the URL of the topic %TopicName% from %OldUrl% to %NewUrl%.', 'wp-security-audit-log' ) ),
|
504 |
+
array( 8018, E_NOTICE, __( 'User changed the forum of a topic', 'wp-security-audit-log' ), __( 'Changed the forum of the topic %TopicName% from %OldForum% to %NewForum%.' . ' %EditorLinkTopic%.', 'wp-security-audit-log' ) ),
|
505 |
+
array( 8019, E_CRITICAL, __( 'User moved topic to trash', 'wp-security-audit-log' ), __( 'Moved the topic %TopicName% to trash.', 'wp-security-audit-log' ) ),
|
506 |
+
array( 8020, E_WARNING, __( 'User permanently deleted topic', 'wp-security-audit-log' ), __( 'Permanently deleted the topic %TopicName%.', 'wp-security-audit-log' ) ),
|
507 |
+
array( 8021, E_WARNING, __( 'User restored topic from trash', 'wp-security-audit-log' ), __( 'Restored the topic %TopicName% from trash.' . ' %EditorLinkTopic%.', 'wp-security-audit-log' ) ),
|
508 |
+
array( 8022, E_NOTICE, __( 'User changed visibility of a topic', 'wp-security-audit-log' ), __( 'Changed the visibility of the topic %TopicName% from %OldVisibility% to %NewVisibility%.' . ' %EditorLinkTopic%.', 'wp-security-audit-log' ) ),
|
509 |
+
),
|
510 |
|
511 |
+
/**
|
512 |
+
* Alerts: WooCommerce Products
|
513 |
+
*/
|
514 |
+
__( 'WooCommerce Products', 'wp-security-audit-log' ) => array(
|
515 |
+
array( 9000, E_NOTICE, __( 'User created a new product', 'wp-security-audit-log' ), __( 'Created a new product called %ProductTitle% and saved it as draft. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
516 |
+
array( 9001, E_NOTICE, __( 'User published a product', 'wp-security-audit-log' ), __( 'Published a product called %ProductTitle%. Product URL is %ProductUrl%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
517 |
+
array( 9003, E_NOTICE, __( 'User changed the category of a product', 'wp-security-audit-log' ), __( 'Changed the category of the product %ProductTitle% from %OldCategories% to %NewCategories%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
518 |
+
array( 9004, E_NOTICE, __( 'User modified the short description of a product', 'wp-security-audit-log' ), __( 'Modified the short description of the product %ProductTitle%.%ChangeText% View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
519 |
+
array( 9005, E_NOTICE, __( 'User modified the text of a product', 'wp-security-audit-log' ), __( 'Modified the text of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
520 |
+
array( 9006, E_NOTICE, __( 'User changed the URL of a product', 'wp-security-audit-log' ), __( 'Changed the URL of the product %ProductTitle%%ReportText%.%ChangeText% View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
521 |
+
array( 9008, E_NOTICE, __( 'User changed the date of a product', 'wp-security-audit-log' ), __( 'Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
522 |
+
array( 9009, E_NOTICE, __( 'User changed the visibility of a product', 'wp-security-audit-log' ), __( 'Changed the visibility of the product %ProductTitle% from %OldVisibility% to %NewVisibility%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
523 |
+
array( 9010, E_NOTICE, __( 'User modified the published product', 'wp-security-audit-log' ), __( 'Modified the published product %ProductTitle%. Product URL is %ProductUrl%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
524 |
+
array( 9011, E_NOTICE, __( 'User modified the draft product', 'wp-security-audit-log' ), __( 'Modified the draft product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
525 |
+
array( 9012, E_WARNING, __( 'User moved a product to trash', 'wp-security-audit-log' ), __( 'Moved the product %ProductTitle% to trash. Product URL was %ProductUrl%.', 'wp-security-audit-log' ) ),
|
526 |
+
array( 9013, E_WARNING, __( 'User permanently deleted a product', 'wp-security-audit-log' ), __( 'Permanently deleted the product %ProductTitle%.', 'wp-security-audit-log' ) ),
|
527 |
+
array( 9014, E_CRITICAL, __( 'User restored a product from the trash', 'wp-security-audit-log' ), __( 'Product %ProductTitle% has been restored from trash. View product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
528 |
+
array( 9015, E_NOTICE, __( 'User changed status of a product', 'wp-security-audit-log' ), __( 'Changed the status of the product %ProductTitle% from %OldStatus% to %NewStatus%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
529 |
+
array( 9072, E_NOTICE, __( 'User opened a product in the editor', 'wp-security-audit-log' ), __( 'Opened the %ProductStatus% product page %ProductTitle% in editor. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
530 |
+
array( 9073, E_NOTICE, __( 'User viewed a product', 'wp-security-audit-log' ), __( 'Viewed the %ProductStatus% product page %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
531 |
+
array( 9007, E_NOTICE, __( 'User changed the Product Data of a product', 'wp-security-audit-log' ), __( 'Changed the Product Data of the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
532 |
+
array( 9016, E_WARNING, __( 'User changed type of a price', 'wp-security-audit-log' ), __( 'Changed the %PriceType% of the product %ProductTitle% from %OldPrice% to %NewPrice%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
533 |
+
array( 9017, E_WARNING, __( 'User changed the SKU of a product', 'wp-security-audit-log' ), __( 'Changed the SKU of the product %ProductTitle% from %OldSku% to %NewSku%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
534 |
+
array( 9018, E_CRITICAL, __( 'User changed the stock status of a product', 'wp-security-audit-log' ), __( 'Changed the stock status of the product %ProductTitle% from %OldStatus% to %NewStatus%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
535 |
+
array( 9019, E_WARNING, __( 'User changed the stock quantity', 'wp-security-audit-log' ), __( 'Changed the stock quantity of the product %ProductTitle% from %OldValue% to %NewValue%. View the product: %EditorLinkProduct%', 'wp-security-audit-log' ) ),
|
536 |
+
array( 9020, E_WARNING, __( 'User set a product type', 'wp-security-audit-log' ), __( 'Set the product %ProductTitle% as %Type%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
537 |
+
array( 9021, E_WARNING, __( 'User changed the weight of a product', 'wp-security-audit-log' ), __( 'Changed the weight of the product %ProductTitle% from %OldWeight% to %NewWeight%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
538 |
+
array( 9022, E_WARNING, __( 'User changed the dimensions of a product', 'wp-security-audit-log' ), __( 'Changed the %DimensionType% dimensions of the product %ProductTitle% from %OldDimension% to %NewDimension%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
539 |
+
array( 9023, E_WARNING, __( 'User added the Downloadable File to a product', 'wp-security-audit-log' ), __( 'Added the Downloadable File %FileName% with File URL %FileUrl% to the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
540 |
+
array( 9024, E_WARNING, __( 'User Removed the Downloadable File from a product', 'wp-security-audit-log' ), __( 'Removed the Downloadable File %FileName% with File URL %FileUrl% from the product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
541 |
+
array( 9025, E_WARNING, __( 'User changed the name of a Downloadable File in a product', 'wp-security-audit-log' ), __( 'Changed the name of a Downloadable File from %OldName% to %NewName% in product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
542 |
+
array( 9026, E_WARNING, __( 'User changed the URL of the Downloadable File in a product', 'wp-security-audit-log' ), __( 'Changed the URL of the Downloadable File %FileName% from %OldUrl% to %NewUrl% in product %ProductTitle%. View the product: %EditorLinkProduct%.', 'wp-security-audit-log' ) ),
|
543 |
+
),
|
544 |
|
545 |
+
/**
|
546 |
+
* Alerts: WooCommerce
|
547 |
+
*/
|
548 |
+
__( 'WooCommerce', 'wp-security-audit-log' ) => array(
|
549 |
+
array( 9027, E_WARNING, __( 'User changed the Weight Unit', 'wp-security-audit-log' ), __( 'Changed the Weight Unit from %OldUnit% to %NewUnit% in WooCommerce.', 'wp-security-audit-log' ) ),
|
550 |
+
array( 9028, E_WARNING, __( 'User changed the Dimensions Unit', 'wp-security-audit-log' ), __( 'Changed the Dimensions Unit from %OldUnit% to %NewUnit% in WooCommerce.', 'wp-security-audit-log' ) ),
|
551 |
+
array( 9029, E_CRITICAL, __( 'User changed the Base Location', 'wp-security-audit-log' ), __( 'Changed the Base Location from %OldLocation% to %NewLocation% in WooCommerce.', 'wp-security-audit-log' ) ),
|
552 |
+
array( 9030, E_CRITICAL, __( 'User Enabled/Disabled taxes', 'wp-security-audit-log' ), __( '%Status% taxes in the WooCommerce store.', 'wp-security-audit-log' ) ),
|
553 |
+
array( 9031, E_CRITICAL, __( 'User changed the currency', 'wp-security-audit-log' ), __( 'Changed the currency from %OldCurrency% to %NewCurrency% in WooCommerce.', 'wp-security-audit-log' ) ),
|
554 |
+
array( 9032, E_CRITICAL, __( 'User Enabled/Disabled the use of coupons during checkout', 'wp-security-audit-log' ), __( '%Status% the use of coupons during checkout in WooCommerce.', 'wp-security-audit-log' ) ),
|
555 |
+
array( 9033, E_CRITICAL, __( 'User Enabled/Disabled guest checkout', 'wp-security-audit-log' ), __( '%Status% guest checkout in WooCommerce.', 'wp-security-audit-log' ) ),
|
556 |
+
array( 9034, E_CRITICAL, __( 'User Enabled/Disabled cash on delivery', 'wp-security-audit-log' ), __( '%Status% the option Enable cash on delivery in WooCommerce.', 'wp-security-audit-log' ) ),
|
557 |
+
array( 9002, E_NOTICE, __( 'User created a new product category', 'wp-security-audit-log' ), __( 'Created a new product category called %CategoryName% in WooCommerce. Product category slug is %Slug%.', 'wp-security-audit-log' ) ),
|
558 |
+
),
|
559 |
|
560 |
+
/**
|
561 |
+
* Alerts: Yoast SEO
|
562 |
+
*/
|
563 |
+
__( 'Yoast SEO', 'wp-security-audit-log' ) => array(
|
564 |
+
array( 8801, E_NOTICE, __( 'User changed title of a SEO post', 'wp-security-audit-log' ), __( 'Changed the SEO title of the %PostStatus% %PostType%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
565 |
+
array( 8802, E_NOTICE, __( 'User changed the meta description of a SEO post', 'wp-security-audit-log' ), __( 'Changed the Meta description of the %PostStatus% %PostType% titled %PostTitle%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
566 |
+
array( 8803, E_NOTICE, __( 'User changed setting to allow search engines to show post in search results of a SEO post', 'wp-security-audit-log' ), __( 'Changed the setting to allow search engines to show post in search results from %OldStatus% to %NewStatus% in the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
567 |
+
array( 8804, E_NOTICE, __( 'User Enabled/Disabled the option for search engine to follow links of a SEO post', 'wp-security-audit-log' ), __( '%NewStatus% the option for search engine to follow links in the %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
568 |
+
array( 8805, E_NOTICE, __( 'User set the meta robots advanced setting of a SEO post', 'wp-security-audit-log' ), __( 'Set the Meta Robots Advanced setting to %NewStatus% in the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
569 |
+
array( 8806, E_NOTICE, __( 'User changed the canonical URL of a SEO post', 'wp-security-audit-log' ), __( 'Changed the Canonical URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText%.%ChangeText% %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
570 |
+
array( 8807, E_NOTICE, __( 'User changed the focus keyword of a SEO post', 'wp-security-audit-log' ), __( 'Changed the focus keyword of the %PostStatus% %PostType% titled %PostTitle% from %old_keywords% to %new_keywords%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
571 |
+
array( 8808, E_NOTICE, __( 'User Enabled/Disabled the option Cornerston Content of a SEO post', 'wp-security-audit-log' ), __( '%Status% the option Cornerston Content on the %PostStatus% %PostType% titled %PostTitle%. %EditorLinkPost%.', 'wp-security-audit-log' ) ),
|
572 |
+
array( 8809, E_WARNING, __( 'User changed the Title Separator setting', 'wp-security-audit-log' ), __( 'Changed the Title Separator from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
573 |
+
array( 8810, E_WARNING, __( 'User changed the Homepage Title setting', 'wp-security-audit-log' ), __( 'Changed the Homepage Title%ReportText% in the Yoast SEO plugin settings.%ChangeText%', 'wp-security-audit-log' ) ),
|
574 |
+
array( 8811, E_WARNING, __( 'User changed the Homepage Meta description setting', 'wp-security-audit-log' ), __( 'Changed the Homepage Meta description%ReportText% in the Yoast SEO plugin settings.%ChangeText%', 'wp-security-audit-log' ) ),
|
575 |
+
array( 8812, E_WARNING, __( 'User changed the Company or Person setting', 'wp-security-audit-log' ), __( 'Changed the Company or Person setting from %old% to %new% in the YOAST SEO plugin settings.', 'wp-security-audit-log' ) ),
|
576 |
+
array( 8813, E_WARNING, __( 'User Enabled/Disabled the option Show Posts/Pages in Search Results in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the option Show %SEOPostType% in Search Results in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
577 |
+
array( 8814, E_WARNING, __( 'User changed the Posts/Pages title template in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( 'Changed the %SEOPostType% title template from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
578 |
+
array( 8815, E_WARNING, __( 'User Enabled/Disabled SEO analysis in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% SEO analysis in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
579 |
+
array( 8816, E_WARNING, __( 'User Enabled/Disabled readability analysis in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% Readability analysis in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
580 |
+
array( 8817, E_WARNING, __( 'User Enabled/Disabled cornerstone content in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% Cornerstone content in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
581 |
+
array( 8818, E_WARNING, __( 'User Enabled/Disabled the text link counter in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the Text link counter in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
582 |
+
array( 8819, E_WARNING, __( 'User Enabled/Disabled XML sitemaps in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% XML Sitemaps in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
583 |
+
array( 8820, E_WARNING, __( 'User Enabled/Disabled ryte integration in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% Ryte Integration in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
584 |
+
array( 8821, E_WARNING, __( 'User Enabled/Disabled the admin bar menu in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the Admin bar menu in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
585 |
+
array( 8822, E_WARNING, __( 'User changed the Posts/Pages meta description template in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( 'Changed the %SEOPostType% meta description template from %old% to %new% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
586 |
+
array( 8823, E_WARNING, __( 'User set the option Date in Snippet Preview for Posts/Pages in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the option Date in Snippet Preview for %SEOPostType% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
587 |
+
array( 8824, E_WARNING, __( 'User set the option Yoast SEO Meta Box for Posts/Pages in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the option Yoast SEO Meta Box for %SEOPostType% in the Yoast SEO plugin settings.', 'wp-security-audit-log' ) ),
|
588 |
+
array( 8825, E_WARNING, __( 'User Enabled/Disabled the advanced settings for authors in the Yoast SEO plugin settings', 'wp-security-audit-log' ), __( '%Status% the advanced settings for authors in the Yoast SEO settings.', 'wp-security-audit-log' ) ),
|
589 |
+
),
|
590 |
),
|
591 |
+
)
|
592 |
+
);
|
593 |
+
// Load Custom alerts.
|
594 |
+
load_include_custom_file( $wsal );
|
595 |
+
}
|
596 |
}
|
597 |
+
add_action( 'init', 'wsaldefaults_wsal_init' );
|
js/select2/LICENSE
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Copyright 2014 Igor Vaynberg
|
2 |
+
|
3 |
+
Version: @@ver@@ Timestamp: @@timestamp@@
|
4 |
+
|
5 |
+
This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
|
6 |
+
General Public License version 2 (the "GPL License"). You may choose either license to govern your
|
7 |
+
use of this software only upon the condition that you accept all of the terms of either the Apache
|
8 |
+
License or the GPL License.
|
9 |
+
|
10 |
+
You may obtain a copy of the Apache License and the GPL License at:
|
11 |
+
|
12 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
13 |
+
http://www.gnu.org/licenses/gpl-2.0.html
|
14 |
+
|
15 |
+
Unless required by applicable law or agreed to in writing, software distributed under the Apache License
|
16 |
+
or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
17 |
+
either express or implied. See the Apache License and the GPL License for the specific language governing
|
18 |
+
permissions and limitations under the Apache License and the GPL License.
|
js/select2/select2-bootstrap.css
ADDED
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.form-control .select2-choice {
|
2 |
+
border: 0;
|
3 |
+
border-radius: 2px;
|
4 |
+
}
|
5 |
+
|
6 |
+
.form-control .select2-choice .select2-arrow {
|
7 |
+
border-radius: 0 2px 2px 0;
|
8 |
+
}
|
9 |
+
|
10 |
+
.form-control.select2-container {
|
11 |
+
height: auto !important;
|
12 |
+
padding: 0;
|
13 |
+
}
|
14 |
+
|
15 |
+
.form-control.select2-container.select2-dropdown-open {
|
16 |
+
border-color: #5897FB;
|
17 |
+
border-radius: 3px 3px 0 0;
|
18 |
+
}
|
19 |
+
|
20 |
+
.form-control .select2-container.select2-dropdown-open .select2-choices {
|
21 |
+
border-radius: 3px 3px 0 0;
|
22 |
+
}
|
23 |
+
|
24 |
+
.form-control.select2-container .select2-choices {
|
25 |
+
border: 0 !important;
|
26 |
+
border-radius: 3px;
|
27 |
+
}
|
28 |
+
|
29 |
+
.control-group.warning .select2-container .select2-choice,
|
30 |
+
.control-group.warning .select2-container .select2-choices,
|
31 |
+
.control-group.warning .select2-container-active .select2-choice,
|
32 |
+
.control-group.warning .select2-container-active .select2-choices,
|
33 |
+
.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,
|
34 |
+
.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,
|
35 |
+
.control-group.warning .select2-container-multi.select2-container-active .select2-choices {
|
36 |
+
border: 1px solid #C09853 !important;
|
37 |
+
}
|
38 |
+
|
39 |
+
.control-group.warning .select2-container .select2-choice div {
|
40 |
+
border-left: 1px solid #C09853 !important;
|
41 |
+
background: #FCF8E3 !important;
|
42 |
+
}
|
43 |
+
|
44 |
+
.control-group.error .select2-container .select2-choice,
|
45 |
+
.control-group.error .select2-container .select2-choices,
|
46 |
+
.control-group.error .select2-container-active .select2-choice,
|
47 |
+
.control-group.error .select2-container-active .select2-choices,
|
48 |
+
.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,
|
49 |
+
.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,
|
50 |
+
.control-group.error .select2-container-multi.select2-container-active .select2-choices {
|
51 |
+
border: 1px solid #B94A48 !important;
|
52 |
+
}
|
53 |
+
|
54 |
+
.control-group.error .select2-container .select2-choice div {
|
55 |
+
border-left: 1px solid #B94A48 !important;
|
56 |
+
background: #F2DEDE !important;
|
57 |
+
}
|
58 |
+
|
59 |
+
.control-group.info .select2-container .select2-choice,
|
60 |
+
.control-group.info .select2-container .select2-choices,
|
61 |
+
.control-group.info .select2-container-active .select2-choice,
|
62 |
+
.control-group.info .select2-container-active .select2-choices,
|
63 |
+
.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,
|
64 |
+
.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,
|
65 |
+
.control-group.info .select2-container-multi.select2-container-active .select2-choices {
|
66 |
+
border: 1px solid #3A87AD !important;
|
67 |
+
}
|
68 |
+
|
69 |
+
.control-group.info .select2-container .select2-choice div {
|
70 |
+
border-left: 1px solid #3A87AD !important;
|
71 |
+
background: #D9EDF7 !important;
|
72 |
+
}
|
73 |
+
|
74 |
+
.control-group.success .select2-container .select2-choice,
|
75 |
+
.control-group.success .select2-container .select2-choices,
|
76 |
+
.control-group.success .select2-container-active .select2-choice,
|
77 |
+
.control-group.success .select2-container-active .select2-choices,
|
78 |
+
.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,
|
79 |
+
.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,
|
80 |
+
.control-group.success .select2-container-multi.select2-container-active .select2-choices {
|
81 |
+
border: 1px solid #468847 !important;
|
82 |
+
}
|
83 |
+
|
84 |
+
.control-group.success .select2-container .select2-choice div {
|
85 |
+
border-left: 1px solid #468847 !important;
|
86 |
+
background: #DFF0D8 !important;
|
87 |
+
}
|
js/select2/select2-spinner.gif
ADDED
Binary file
|
js/select2/select2.css
ADDED
@@ -0,0 +1,704 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
Version: 3.5.1 Timestamp: Tue Jul 22 18:58:56 EDT 2014
|
3 |
+
*/
|
4 |
+
.select2-container {
|
5 |
+
margin: 0;
|
6 |
+
position: relative;
|
7 |
+
display: inline-block;
|
8 |
+
/* inline-block for ie7 */
|
9 |
+
zoom: 1;
|
10 |
+
*display: inline;
|
11 |
+
vertical-align: middle;
|
12 |
+
}
|
13 |
+
|
14 |
+
.select2-container,
|
15 |
+
.select2-drop,
|
16 |
+
.select2-search,
|
17 |
+
.select2-search input {
|
18 |
+
/*
|
19 |
+
Force border-box so that % widths fit the parent
|
20 |
+
container without overlap because of margin/padding.
|
21 |
+
More Info : http://www.quirksmode.org/css/box.html
|
22 |
+
*/
|
23 |
+
-webkit-box-sizing: border-box; /* webkit */
|
24 |
+
-moz-box-sizing: border-box; /* firefox */
|
25 |
+
box-sizing: border-box; /* css3 */
|
26 |
+
}
|
27 |
+
|
28 |
+
.select2-container .select2-choice {
|
29 |
+
display: block;
|
30 |
+
height: 26px;
|
31 |
+
padding: 0 0 0 8px;
|
32 |
+
overflow: hidden;
|
33 |
+
position: relative;
|
34 |
+
|
35 |
+
border: 1px solid #aaa;
|
36 |
+
white-space: nowrap;
|
37 |
+
line-height: 26px;
|
38 |
+
color: #444;
|
39 |
+
text-decoration: none;
|
40 |
+
|
41 |
+
border-radius: 4px;
|
42 |
+
|
43 |
+
background-clip: padding-box;
|
44 |
+
|
45 |
+
-webkit-touch-callout: none;
|
46 |
+
-webkit-user-select: none;
|
47 |
+
-moz-user-select: none;
|
48 |
+
-ms-user-select: none;
|
49 |
+
user-select: none;
|
50 |
+
|
51 |
+
background-color: #fff;
|
52 |
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff));
|
53 |
+
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%);
|
54 |
+
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%);
|
55 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0);
|
56 |
+
background-image: linear-gradient(to top, #eee 0%, #fff 50%);
|
57 |
+
}
|
58 |
+
|
59 |
+
html[dir="rtl"] .select2-container .select2-choice {
|
60 |
+
padding: 0 8px 0 0;
|
61 |
+
}
|
62 |
+
|
63 |
+
.select2-container.select2-drop-above .select2-choice {
|
64 |
+
border-bottom-color: #aaa;
|
65 |
+
|
66 |
+
border-radius: 0 0 4px 4px;
|
67 |
+
|
68 |
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff));
|
69 |
+
background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%);
|
70 |
+
background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%);
|
71 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0);
|
72 |
+
background-image: linear-gradient(to bottom, #eee 0%, #fff 90%);
|
73 |
+
}
|
74 |
+
|
75 |
+
.select2-container.select2-allowclear .select2-choice .select2-chosen {
|
76 |
+
margin-right: 42px;
|
77 |
+
}
|
78 |
+
|
79 |
+
.select2-container .select2-choice > .select2-chosen {
|
80 |
+
margin-right: 26px;
|
81 |
+
display: block;
|
82 |
+
overflow: hidden;
|
83 |
+
|
84 |
+
white-space: nowrap;
|
85 |
+
|
86 |
+
text-overflow: ellipsis;
|
87 |
+
float: none;
|
88 |
+
width: auto;
|
89 |
+
}
|
90 |
+
|
91 |
+
html[dir="rtl"] .select2-container .select2-choice > .select2-chosen {
|
92 |
+
margin-left: 26px;
|
93 |
+
margin-right: 0;
|
94 |
+
}
|
95 |
+
|
96 |
+
.select2-container .select2-choice abbr {
|
97 |
+
display: none;
|
98 |
+
width: 12px;
|
99 |
+
height: 12px;
|
100 |
+
position: absolute;
|
101 |
+
right: 24px;
|
102 |
+
top: 8px;
|
103 |
+
|
104 |
+
font-size: 1px;
|
105 |
+
text-decoration: none;
|
106 |
+
|
107 |
+
border: 0;
|
108 |
+
background: url('select2.png') right top no-repeat;
|
109 |
+
cursor: pointer;
|
110 |
+
outline: 0;
|
111 |
+
}
|
112 |
+
|
113 |
+
.select2-container.select2-allowclear .select2-choice abbr {
|
114 |
+
display: inline-block;
|
115 |
+
}
|
116 |
+
|
117 |
+
.select2-container .select2-choice abbr:hover {
|
118 |
+
background-position: right -11px;
|
119 |
+
cursor: pointer;
|
120 |
+
}
|
121 |
+
|
122 |
+
.select2-drop-mask {
|
123 |
+
border: 0;
|
124 |
+
margin: 0;
|
125 |
+
padding: 0;
|
126 |
+
position: fixed;
|
127 |
+
left: 0;
|
128 |
+
top: 0;
|
129 |
+
min-height: 100%;
|
130 |
+
min-width: 100%;
|
131 |
+
height: auto;
|
132 |
+
width: auto;
|
133 |
+
opacity: 0;
|
134 |
+
z-index: 9998;
|
135 |
+
/* styles required for IE to work */
|
136 |
+
background-color: #fff;
|
137 |
+
filter: alpha(opacity=0);
|
138 |
+
}
|
139 |
+
|
140 |
+
.select2-drop {
|
141 |
+
width: 100%;
|
142 |
+
margin-top: -1px;
|
143 |
+
position: absolute;
|
144 |
+
z-index: 9999;
|
145 |
+
top: 100%;
|
146 |
+
|
147 |
+
background: #fff;
|
148 |
+
color: #000;
|
149 |
+
border: 1px solid #aaa;
|
150 |
+
border-top: 0;
|
151 |
+
|
152 |
+
border-radius: 0 0 4px 4px;
|
153 |
+
|
154 |
+
-webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
|
155 |
+
box-shadow: 0 4px 5px rgba(0, 0, 0, .15);
|
156 |
+
}
|
157 |
+
|
158 |
+
.select2-drop.select2-drop-above {
|
159 |
+
margin-top: 1px;
|
160 |
+
border-top: 1px solid #aaa;
|
161 |
+
border-bottom: 0;
|
162 |
+
|
163 |
+
border-radius: 4px 4px 0 0;
|
164 |
+
|
165 |
+
-webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
|
166 |
+
box-shadow: 0 -4px 5px rgba(0, 0, 0, .15);
|
167 |
+
}
|
168 |
+
|
169 |
+
.select2-drop-active {
|
170 |
+
border: 1px solid #5897fb;
|
171 |
+
border-top: none;
|
172 |
+
}
|
173 |
+
|
174 |
+
.select2-drop.select2-drop-above.select2-drop-active {
|
175 |
+
border-top: 1px solid #5897fb;
|
176 |
+
}
|
177 |
+
|
178 |
+
.select2-drop-auto-width {
|
179 |
+
border-top: 1px solid #aaa;
|
180 |
+
width: auto;
|
181 |
+
}
|
182 |
+
|
183 |
+
.select2-drop-auto-width .select2-search {
|
184 |
+
padding-top: 4px;
|
185 |
+
}
|
186 |
+
|
187 |
+
.select2-container .select2-choice .select2-arrow {
|
188 |
+
display: inline-block;
|
189 |
+
width: 18px;
|
190 |
+
height: 100%;
|
191 |
+
position: absolute;
|
192 |
+
right: 0;
|
193 |
+
top: 0;
|
194 |
+
|
195 |
+
border-left: 1px solid #aaa;
|
196 |
+
border-radius: 0 4px 4px 0;
|
197 |
+
|
198 |
+
background-clip: padding-box;
|
199 |
+
|
200 |
+
background: #ccc;
|
201 |
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee));
|
202 |
+
background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%);
|
203 |
+
background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%);
|
204 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0);
|
205 |
+
background-image: linear-gradient(to top, #ccc 0%, #eee 60%);
|
206 |
+
}
|
207 |
+
|
208 |
+
html[dir="rtl"] .select2-container .select2-choice .select2-arrow {
|
209 |
+
left: 0;
|
210 |
+
right: auto;
|
211 |
+
|
212 |
+
border-left: none;
|
213 |
+
border-right: 1px solid #aaa;
|
214 |
+
border-radius: 4px 0 0 4px;
|
215 |
+
}
|
216 |
+
|
217 |
+
.select2-container .select2-choice .select2-arrow b {
|
218 |
+
display: block;
|
219 |
+
width: 100%;
|
220 |
+
height: 100%;
|
221 |
+
background: url('select2.png') no-repeat 0 1px;
|
222 |
+
}
|
223 |
+
|
224 |
+
html[dir="rtl"] .select2-container .select2-choice .select2-arrow b {
|
225 |
+
background-position: 2px 1px;
|
226 |
+
}
|
227 |
+
|
228 |
+
.select2-search {
|
229 |
+
display: inline-block;
|
230 |
+
width: 100%;
|
231 |
+
min-height: 26px;
|
232 |
+
margin: 0;
|
233 |
+
padding-left: 4px;
|
234 |
+
padding-right: 4px;
|
235 |
+
|
236 |
+
position: relative;
|
237 |
+
z-index: 10000;
|
238 |
+
|
239 |
+
white-space: nowrap;
|
240 |
+
}
|
241 |
+
|
242 |
+
.select2-search input {
|
243 |
+
width: 100%;
|
244 |
+
height: auto !important;
|
245 |
+
min-height: 26px;
|
246 |
+
padding: 4px 20px 4px 5px;
|
247 |
+
margin: 0;
|
248 |
+
|
249 |
+
outline: 0;
|
250 |
+
font-family: sans-serif;
|
251 |
+
font-size: 1em;
|
252 |
+
|
253 |
+
border: 1px solid #aaa;
|
254 |
+
border-radius: 0;
|
255 |
+
|
256 |
+
-webkit-box-shadow: none;
|
257 |
+
box-shadow: none;
|
258 |
+
|
259 |
+
background: #fff url('select2.png') no-repeat 100% -22px;
|
260 |
+
background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
|
261 |
+
background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
|
262 |
+
background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
|
263 |
+
background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
|
264 |
+
}
|
265 |
+
|
266 |
+
html[dir="rtl"] .select2-search input {
|
267 |
+
padding: 4px 5px 4px 20px;
|
268 |
+
|
269 |
+
background: #fff url('select2.png') no-repeat -37px -22px;
|
270 |
+
background: url('select2.png') no-repeat -37px -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
|
271 |
+
background: url('select2.png') no-repeat -37px -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
|
272 |
+
background: url('select2.png') no-repeat -37px -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
|
273 |
+
background: url('select2.png') no-repeat -37px -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
|
274 |
+
}
|
275 |
+
|
276 |
+
.select2-drop.select2-drop-above .select2-search input {
|
277 |
+
margin-top: 4px;
|
278 |
+
}
|
279 |
+
|
280 |
+
.select2-search input.select2-active {
|
281 |
+
background: #fff url('select2-spinner.gif') no-repeat 100%;
|
282 |
+
background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee));
|
283 |
+
background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%);
|
284 |
+
background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%);
|
285 |
+
background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0;
|
286 |
+
}
|
287 |
+
|
288 |
+
.select2-container-active .select2-choice,
|
289 |
+
.select2-container-active .select2-choices {
|
290 |
+
border: 1px solid #5897fb;
|
291 |
+
outline: none;
|
292 |
+
|
293 |
+
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
|
294 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, .3);
|
295 |
+
}
|
296 |
+
|
297 |
+
.select2-dropdown-open .select2-choice {
|
298 |
+
border-bottom-color: transparent;
|
299 |
+
-webkit-box-shadow: 0 1px 0 #fff inset;
|
300 |
+
box-shadow: 0 1px 0 #fff inset;
|
301 |
+
|
302 |
+
border-bottom-left-radius: 0;
|
303 |
+
border-bottom-right-radius: 0;
|
304 |
+
|
305 |
+
background-color: #eee;
|
306 |
+
background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee));
|
307 |
+
background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%);
|
308 |
+
background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%);
|
309 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
|
310 |
+
background-image: linear-gradient(to top, #fff 0%, #eee 50%);
|
311 |
+
}
|
312 |
+
|
313 |
+
.select2-dropdown-open.select2-drop-above .select2-choice,
|
314 |
+
.select2-dropdown-open.select2-drop-above .select2-choices {
|
315 |
+
border: 1px solid #5897fb;
|
316 |
+
border-top-color: transparent;
|
317 |
+
|
318 |
+
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee));
|
319 |
+
background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%);
|
320 |
+
background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%);
|
321 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0);
|
322 |
+
background-image: linear-gradient(to bottom, #fff 0%, #eee 50%);
|
323 |
+
}
|
324 |
+
|
325 |
+
.select2-dropdown-open .select2-choice .select2-arrow {
|
326 |
+
background: transparent;
|
327 |
+
border-left: none;
|
328 |
+
filter: none;
|
329 |
+
}
|
330 |
+
html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow {
|
331 |
+
border-right: none;
|
332 |
+
}
|
333 |
+
|
334 |
+
.select2-dropdown-open .select2-choice .select2-arrow b {
|
335 |
+
background-position: -18px 1px;
|
336 |
+
}
|
337 |
+
|
338 |
+
html[dir="rtl"] .select2-dropdown-open .select2-choice .select2-arrow b {
|
339 |
+
background-position: -16px 1px;
|
340 |
+
}
|
341 |
+
|
342 |
+
.select2-hidden-accessible {
|
343 |
+
border: 0;
|
344 |
+
clip: rect(0 0 0 0);
|
345 |
+
height: 1px;
|
346 |
+
margin: -1px;
|
347 |
+
overflow: hidden;
|
348 |
+
padding: 0;
|
349 |
+
position: absolute;
|
350 |
+
width: 1px;
|
351 |
+
}
|
352 |
+
|
353 |
+
/* results */
|
354 |
+
.select2-results {
|
355 |
+
max-height: 200px;
|
356 |
+
padding: 0 0 0 4px;
|
357 |
+
margin: 4px 4px 4px 0;
|
358 |
+
position: relative;
|
359 |
+
overflow-x: hidden;
|
360 |
+
overflow-y: auto;
|
361 |
+
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
362 |
+
}
|
363 |
+
|
364 |
+
html[dir="rtl"] .select2-results {
|
365 |
+
padding: 0 4px 0 0;
|
366 |
+
margin: 4px 0 4px 4px;
|
367 |
+
}
|
368 |
+
|
369 |
+
.select2-results ul.select2-result-sub {
|
370 |
+
margin: 0;
|
371 |
+
padding-left: 0;
|
372 |
+
}
|
373 |
+
|
374 |
+
.select2-results li {
|
375 |
+
list-style: none;
|
376 |
+
display: list-item;
|
377 |
+
background-image: none;
|
378 |
+
}
|
379 |
+
|
380 |
+
.select2-results li.select2-result-with-children > .select2-result-label {
|
381 |
+
font-weight: bold;
|
382 |
+
}
|
383 |
+
|
384 |
+
.select2-results .select2-result-label {
|
385 |
+
padding: 3px 7px 4px;
|
386 |
+
margin: 0;
|
387 |
+
cursor: pointer;
|
388 |
+
|
389 |
+
min-height: 1em;
|
390 |
+
|
391 |
+
-webkit-touch-callout: none;
|
392 |
+
-webkit-user-select: none;
|
393 |
+
-moz-user-select: none;
|
394 |
+
-ms-user-select: none;
|
395 |
+
user-select: none;
|
396 |
+
}
|
397 |
+
|
398 |
+
.select2-results-dept-1 .select2-result-label { padding-left: 20px }
|
399 |
+
.select2-results-dept-2 .select2-result-label { padding-left: 40px }
|
400 |
+
.select2-results-dept-3 .select2-result-label { padding-left: 60px }
|
401 |
+
.select2-results-dept-4 .select2-result-label { padding-left: 80px }
|
402 |
+
.select2-results-dept-5 .select2-result-label { padding-left: 100px }
|
403 |
+
.select2-results-dept-6 .select2-result-label { padding-left: 110px }
|
404 |
+
.select2-results-dept-7 .select2-result-label { padding-left: 120px }
|
405 |
+
|
406 |
+
.select2-results .select2-highlighted {
|
407 |
+
background: #3875d7;
|
408 |
+
color: #fff;
|
409 |
+
}
|
410 |
+
|
411 |
+
.select2-results li em {
|
412 |
+
background: #feffde;
|
413 |
+
font-style: normal;
|
414 |
+
}
|
415 |
+
|
416 |
+
.select2-results .select2-highlighted em {
|
417 |
+
background: transparent;
|
418 |
+
}
|
419 |
+
|
420 |
+
.select2-results .select2-highlighted ul {
|
421 |
+
background: #fff;
|
422 |
+
color: #000;
|
423 |
+
}
|
424 |
+
|
425 |
+
.select2-results .select2-no-results,
|
426 |
+
.select2-results .select2-searching,
|
427 |
+
.select2-results .select2-ajax-error,
|
428 |
+
.select2-results .select2-selection-limit {
|
429 |
+
background: #f4f4f4;
|
430 |
+
display: list-item;
|
431 |
+
padding-left: 5px;
|
432 |
+
}
|
433 |
+
|
434 |
+
/*
|
435 |
+
disabled look for disabled choices in the results dropdown
|
436 |
+
*/
|
437 |
+
.select2-results .select2-disabled.select2-highlighted {
|
438 |
+
color: #666;
|
439 |
+
background: #f4f4f4;
|
440 |
+
display: list-item;
|
441 |
+
cursor: default;
|
442 |
+
}
|
443 |
+
.select2-results .select2-disabled {
|
444 |
+
background: #f4f4f4;
|
445 |
+
display: list-item;
|
446 |
+
cursor: default;
|
447 |
+
}
|
448 |
+
|
449 |
+
.select2-results .select2-selected {
|
450 |
+
display: none;
|
451 |
+
}
|
452 |
+
|
453 |
+
.select2-more-results.select2-active {
|
454 |
+
background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%;
|
455 |
+
}
|
456 |
+
|
457 |
+
.select2-results .select2-ajax-error {
|
458 |
+
background: rgba(255, 50, 50, .2);
|
459 |
+
}
|
460 |
+
|
461 |
+
.select2-more-results {
|
462 |
+
background: #f4f4f4;
|
463 |
+
display: list-item;
|
464 |
+
}
|
465 |
+
|
466 |
+
/* disabled styles */
|
467 |
+
|
468 |
+
.select2-container.select2-container-disabled .select2-choice {
|
469 |
+
background-color: #f4f4f4;
|
470 |
+
background-image: none;
|
471 |
+
border: 1px solid #ddd;
|
472 |
+
cursor: default;
|
473 |
+
}
|
474 |
+
|
475 |
+
.select2-container.select2-container-disabled .select2-choice .select2-arrow {
|
476 |
+
background-color: #f4f4f4;
|
477 |
+
background-image: none;
|
478 |
+
border-left: 0;
|
479 |
+
}
|
480 |
+
|
481 |
+
.select2-container.select2-container-disabled .select2-choice abbr {
|
482 |
+
display: none;
|
483 |
+
}
|
484 |
+
|
485 |
+
|
486 |
+
/* multiselect */
|
487 |
+
|
488 |
+
.select2-container-multi .select2-choices {
|
489 |
+
height: auto !important;
|
490 |
+
height: 1%;
|
491 |
+
margin: 0;
|
492 |
+
padding: 0 5px 0 0;
|
493 |
+
position: relative;
|
494 |
+
|
495 |
+
border: 1px solid #aaa;
|
496 |
+
cursor: text;
|
497 |
+
overflow: hidden;
|
498 |
+
|
499 |
+
background-color: #fff;
|
500 |
+
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff));
|
501 |
+
background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%);
|
502 |
+
background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%);
|
503 |
+
background-image: linear-gradient(to bottom, #eee 1%, #fff 15%);
|
504 |
+
}
|
505 |
+
|
506 |
+
html[dir="rtl"] .select2-container-multi .select2-choices {
|
507 |
+
padding: 0 0 0 5px;
|
508 |
+
}
|
509 |
+
|
510 |
+
.select2-locked {
|
511 |
+
padding: 3px 5px 3px 5px !important;
|
512 |
+
}
|
513 |
+
|
514 |
+
.select2-container-multi .select2-choices {
|
515 |
+
min-height: 26px;
|
516 |
+
}
|
517 |
+
|
518 |
+
.select2-container-multi.select2-container-active .select2-choices {
|
519 |
+
border: 1px solid #5897fb;
|
520 |
+
outline: none;
|
521 |
+
|
522 |
+
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3);
|
523 |
+
box-shadow: 0 0 5px rgba(0, 0, 0, .3);
|
524 |
+
}
|
525 |
+
.select2-container-multi .select2-choices li {
|
526 |
+
float: left;
|
527 |
+
list-style: none;
|
528 |
+
}
|
529 |
+
html[dir="rtl"] .select2-container-multi .select2-choices li
|
530 |
+
{
|
531 |
+
float: right;
|
532 |
+
}
|
533 |
+
.select2-container-multi .select2-choices .select2-search-field {
|
534 |
+
margin: 0;
|
535 |
+
padding: 0;
|
536 |
+
white-space: nowrap;
|
537 |
+
}
|
538 |
+
|
539 |
+
.select2-container-multi .select2-choices .select2-search-field input {
|
540 |
+
padding: 5px;
|
541 |
+
margin: 1px 0;
|
542 |
+
|
543 |
+
font-family: sans-serif;
|
544 |
+
font-size: 100%;
|
545 |
+
color: #666;
|
546 |
+
outline: 0;
|
547 |
+
border: 0;
|
548 |
+
-webkit-box-shadow: none;
|
549 |
+
box-shadow: none;
|
550 |
+
background: transparent !important;
|
551 |
+
}
|
552 |
+
|
553 |
+
.select2-container-multi .select2-choices .select2-search-field input.select2-active {
|
554 |
+
background: #fff url('select2-spinner.gif') no-repeat 100% !important;
|
555 |
+
}
|
556 |
+
|
557 |
+
.select2-default {
|
558 |
+
color: #999 !important;
|
559 |
+
}
|
560 |
+
|
561 |
+
.select2-container-multi .select2-choices .select2-search-choice {
|
562 |
+
padding: 3px 5px 3px 18px;
|
563 |
+
margin: 3px 0 3px 5px;
|
564 |
+
position: relative;
|
565 |
+
|
566 |
+
line-height: 13px;
|
567 |
+
color: #333;
|
568 |
+
cursor: default;
|
569 |
+
border: 1px solid #aaaaaa;
|
570 |
+
|
571 |
+
border-radius: 3px;
|
572 |
+
|
573 |
+
-webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
574 |
+
box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05);
|
575 |
+
|
576 |
+
background-clip: padding-box;
|
577 |
+
|
578 |
+
-webkit-touch-callout: none;
|
579 |
+
-webkit-user-select: none;
|
580 |
+
-moz-user-select: none;
|
581 |
+
-ms-user-select: none;
|
582 |
+
user-select: none;
|
583 |
+
|
584 |
+
background-color: #e4e4e4;
|
585 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0);
|
586 |
+
background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee));
|
587 |
+
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
|
588 |
+
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
|
589 |
+
background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);
|
590 |
+
}
|
591 |
+
html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice
|
592 |
+
{
|
593 |
+
margin: 3px 5px 3px 0;
|
594 |
+
padding: 3px 18px 3px 5px;
|
595 |
+
}
|
596 |
+
.select2-container-multi .select2-choices .select2-search-choice .select2-chosen {
|
597 |
+
cursor: default;
|
598 |
+
}
|
599 |
+
.select2-container-multi .select2-choices .select2-search-choice-focus {
|
600 |
+
background: #d4d4d4;
|
601 |
+
}
|
602 |
+
|
603 |
+
.select2-search-choice-close {
|
604 |
+
display: block;
|
605 |
+
width: 12px;
|
606 |
+
height: 13px;
|
607 |
+
position: absolute;
|
608 |
+
right: 3px;
|
609 |
+
top: 4px;
|
610 |
+
|
611 |
+
font-size: 1px;
|
612 |
+
outline: none;
|
613 |
+
background: url('select2.png') right top no-repeat;
|
614 |
+
}
|
615 |
+
html[dir="rtl"] .select2-search-choice-close {
|
616 |
+
right: auto;
|
617 |
+
left: 3px;
|
618 |
+
}
|
619 |
+
|
620 |
+
.select2-container-multi .select2-search-choice-close {
|
621 |
+
left: 3px;
|
622 |
+
}
|
623 |
+
|
624 |
+
html[dir="rtl"] .select2-container-multi .select2-search-choice-close {
|
625 |
+
left: auto;
|
626 |
+
right: 2px;
|
627 |
+
}
|
628 |
+
|
629 |
+
.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover {
|
630 |
+
background-position: right -11px;
|
631 |
+
}
|
632 |
+
.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close {
|
633 |
+
background-position: right -11px;
|
634 |
+
}
|
635 |
+
|
636 |
+
/* disabled styles */
|
637 |
+
.select2-container-multi.select2-container-disabled .select2-choices {
|
638 |
+
background-color: #f4f4f4;
|
639 |
+
background-image: none;
|
640 |
+
border: 1px solid #ddd;
|
641 |
+
cursor: default;
|
642 |
+
}
|
643 |
+
|
644 |
+
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice {
|
645 |
+
padding: 3px 5px 3px 5px;
|
646 |
+
border: 1px solid #ddd;
|
647 |
+
background-image: none;
|
648 |
+
background-color: #f4f4f4;
|
649 |
+
}
|
650 |
+
|
651 |
+
.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none;
|
652 |
+
background: none;
|
653 |
+
}
|
654 |
+
/* end multiselect */
|
655 |
+
|
656 |
+
|
657 |
+
.select2-result-selectable .select2-match,
|
658 |
+
.select2-result-unselectable .select2-match {
|
659 |
+
text-decoration: underline;
|
660 |
+
}
|
661 |
+
|
662 |
+
.select2-offscreen, .select2-offscreen:focus {
|
663 |
+
clip: rect(0 0 0 0) !important;
|
664 |
+
width: 1px !important;
|
665 |
+
height: 1px !important;
|
666 |
+
border: 0 !important;
|
667 |
+
margin: 0 !important;
|
668 |
+
padding: 0 !important;
|
669 |
+
overflow: hidden !important;
|
670 |
+
position: absolute !important;
|
671 |
+
outline: 0 !important;
|
672 |
+
left: 0px !important;
|
673 |
+
top: 0px !important;
|
674 |
+
}
|
675 |
+
|
676 |
+
.select2-display-none {
|
677 |
+
display: none;
|
678 |
+
}
|
679 |
+
|
680 |
+
.select2-measure-scrollbar {
|
681 |
+
position: absolute;
|
682 |
+
top: -10000px;
|
683 |
+
left: -10000px;
|
684 |
+
width: 100px;
|
685 |
+
height: 100px;
|
686 |
+
overflow: scroll;
|
687 |
+
}
|
688 |
+
|
689 |
+
/* Retina-ize icons */
|
690 |
+
|
691 |
+
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) {
|
692 |
+
.select2-search input,
|
693 |
+
.select2-search-choice-close,
|
694 |
+
.select2-container .select2-choice abbr,
|
695 |
+
.select2-container .select2-choice .select2-arrow b {
|
696 |
+
background-image: url('select2x2.png') !important;
|
697 |
+
background-repeat: no-repeat !important;
|
698 |
+
background-size: 60px 40px !important;
|
699 |
+
}
|
700 |
+
|
701 |
+
.select2-search input {
|
702 |
+
background-position: 100% -21px !important;
|
703 |
+
}
|
704 |
+
}
|
js/select2/select2.js
ADDED
@@ -0,0 +1,3508 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
Copyright 2012 Igor Vaynberg
|
3 |
+
|
4 |
+
Version: 3.5.1 Timestamp: Tue Jul 22 18:58:56 EDT 2014
|
5 |
+
|
6 |
+
This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
|
7 |
+
General Public License version 2 (the "GPL License"). You may choose either license to govern your
|
8 |
+
use of this software only upon the condition that you accept all of the terms of either the Apache
|
9 |
+
License or the GPL License.
|
10 |
+
|
11 |
+
You may obtain a copy of the Apache License and the GPL License at:
|
12 |
+
|
13 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
http://www.gnu.org/licenses/gpl-2.0.html
|
15 |
+
|
16 |
+
Unless required by applicable law or agreed to in writing, software distributed under the
|
17 |
+
Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
18 |
+
CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for
|
19 |
+
the specific language governing permissions and limitations under the Apache License and the GPL License.
|
20 |
+
*/
|
21 |
+
(function ($) {
|
22 |
+
if(typeof $.fn.each2 == "undefined") {
|
23 |
+
$.extend($.fn, {
|
24 |
+
/*
|
25 |
+
* 4-10 times faster .each replacement
|
26 |
+
* use it carefully, as it overrides jQuery context of element on each iteration
|
27 |
+
*/
|
28 |
+
each2 : function (c) {
|
29 |
+
var j = $([0]), i = -1, l = this.length;
|
30 |
+
while (
|
31 |
+
++i < l
|
32 |
+
&& (j.context = j[0] = this[i])
|
33 |
+
&& c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object
|
34 |
+
);
|
35 |
+
return this;
|
36 |
+
}
|
37 |
+
});
|
38 |
+
}
|
39 |
+
})(jQuery);
|
40 |
+
|
41 |
+
(function ($, undefined) {
|
42 |
+
"use strict";
|
43 |
+
/*global document, window, jQuery, console */
|
44 |
+
|
45 |
+
if (window.Select2 !== undefined) {
|
46 |
+
return;
|
47 |
+
}
|
48 |
+
|
49 |
+
var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer,
|
50 |
+
lastMousePosition={x:0,y:0}, $document, scrollBarDimensions,
|
51 |
+
|
52 |
+
KEY = {
|
53 |
+
TAB: 9,
|
54 |
+
ENTER: 13,
|
55 |
+
ESC: 27,
|
56 |
+
SPACE: 32,
|
57 |
+
LEFT: 37,
|
58 |
+
UP: 38,
|
59 |
+
RIGHT: 39,
|
60 |
+
DOWN: 40,
|
61 |
+
SHIFT: 16,
|
62 |
+
CTRL: 17,
|
63 |
+
ALT: 18,
|
64 |
+
PAGE_UP: 33,
|
65 |
+
PAGE_DOWN: 34,
|
66 |
+
HOME: 36,
|
67 |
+
END: 35,
|
68 |
+
BACKSPACE: 8,
|
69 |
+
DELETE: 46,
|
70 |
+
isArrow: function (k) {
|
71 |
+
k = k.which ? k.which : k;
|
72 |
+
switch (k) {
|
73 |
+
case KEY.LEFT:
|
74 |
+
case KEY.RIGHT:
|
75 |
+
case KEY.UP:
|
76 |
+
case KEY.DOWN:
|
77 |
+
return true;
|
78 |
+
}
|
79 |
+
return false;
|
80 |
+
},
|
81 |
+
isControl: function (e) {
|
82 |
+
var k = e.which;
|
83 |
+
switch (k) {
|
84 |
+
case KEY.SHIFT:
|
85 |
+
case KEY.CTRL:
|
86 |
+
case KEY.ALT:
|
87 |
+
return true;
|
88 |
+
}
|
89 |
+
|
90 |
+
if (e.metaKey) return true;
|
91 |
+
|
92 |
+
return false;
|
93 |
+
},
|
94 |
+
isFunctionKey: function (k) {
|
95 |
+
k = k.which ? k.which : k;
|
96 |
+
return k >= 112 && k <= 123;
|
97 |
+
}
|
98 |
+
},
|
99 |
+
MEASURE_SCROLLBAR_TEMPLATE = "<div class='select2-measure-scrollbar'></div>",
|
100 |
+
|
101 |
+
DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z","\u0386":"\u0391","\u0388":"\u0395","\u0389":"\u0397","\u038A":"\u0399","\u03AA":"\u0399","\u038C":"\u039F","\u038E":"\u03A5","\u03AB":"\u03A5","\u038F":"\u03A9","\u03AC":"\u03B1","\u03AD":"\u03B5","\u03AE":"\u03B7","\u03AF":"\u03B9","\u03CA":"\u03B9","\u0390":"\u03B9","\u03CC":"\u03BF","\u03CD":"\u03C5","\u03CB":"\u03C5","\u03B0":"\u03C5","\u03C9":"\u03C9","\u03C2":"\u03C3"};
|
102 |
+
|
103 |
+
$document = $(document);
|
104 |
+
|
105 |
+
nextUid=(function() { var counter=1; return function() { return counter++; }; }());
|
106 |
+
|
107 |
+
|
108 |
+
function reinsertElement(element) {
|
109 |
+
var placeholder = $(document.createTextNode(''));
|
110 |
+
|
111 |
+
element.before(placeholder);
|
112 |
+
placeholder.before(element);
|
113 |
+
placeholder.remove();
|
114 |
+
}
|
115 |
+
|
116 |
+
function stripDiacritics(str) {
|
117 |
+
// Used 'uni range + named function' from http://jsperf.com/diacritics/18
|
118 |
+
function match(a) {
|
119 |
+
return DIACRITICS[a] || a;
|
120 |
+
}
|
121 |
+
|
122 |
+
return str.replace(/[^\u0000-\u007E]/g, match);
|
123 |
+
}
|
124 |
+
|
125 |
+
function indexOf(value, array) {
|
126 |
+
var i = 0, l = array.length;
|
127 |
+
for (; i < l; i = i + 1) {
|
128 |
+
if (equal(value, array[i])) return i;
|
129 |
+
}
|
130 |
+
return -1;
|
131 |
+
}
|
132 |
+
|
133 |
+
function measureScrollbar () {
|
134 |
+
var $template = $( MEASURE_SCROLLBAR_TEMPLATE );
|
135 |
+
$template.appendTo('body');
|
136 |
+
|
137 |
+
var dim = {
|
138 |
+
width: $template.width() - $template[0].clientWidth,
|
139 |
+
height: $template.height() - $template[0].clientHeight
|
140 |
+
};
|
141 |
+
$template.remove();
|
142 |
+
|
143 |
+
return dim;
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* Compares equality of a and b
|
148 |
+
* @param a
|
149 |
+
* @param b
|
150 |
+
*/
|
151 |
+
function equal(a, b) {
|
152 |
+
if (a === b) return true;
|
153 |
+
if (a === undefined || b === undefined) return false;
|
154 |
+
if (a === null || b === null) return false;
|
155 |
+
// Check whether 'a' or 'b' is a string (primitive or object).
|
156 |
+
// The concatenation of an empty string (+'') converts its argument to a string's primitive.
|
157 |
+
if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object
|
158 |
+
if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object
|
159 |
+
return false;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty
|
164 |
+
* strings
|
165 |
+
* @param string
|
166 |
+
* @param separator
|
167 |
+
*/
|
168 |
+
function splitVal(string, separator) {
|
169 |
+
var val, i, l;
|
170 |
+
if (string === null || string.length < 1) return [];
|
171 |
+
val = string.split(separator);
|
172 |
+
for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]);
|
173 |
+
return val;
|
174 |
+
}
|
175 |
+
|
176 |
+
function getSideBorderPadding(element) {
|
177 |
+
return element.outerWidth(false) - element.width();
|
178 |
+
}
|
179 |
+
|
180 |
+
function installKeyUpChangeEvent(element) {
|
181 |
+
var key="keyup-change-value";
|
182 |
+
element.on("keydown", function () {
|
183 |
+
if ($.data(element, key) === undefined) {
|
184 |
+
$.data(element, key, element.val());
|
185 |
+
}
|
186 |
+
});
|
187 |
+
element.on("keyup", function () {
|
188 |
+
var val= $.data(element, key);
|
189 |
+
if (val !== undefined && element.val() !== val) {
|
190 |
+
$.removeData(element, key);
|
191 |
+
element.trigger("keyup-change");
|
192 |
+
}
|
193 |
+
});
|
194 |
+
}
|
195 |
+
|
196 |
+
|
197 |
+
/**
|
198 |
+
* filters mouse events so an event is fired only if the mouse moved.
|
199 |
+
*
|
200 |
+
* filters out mouse events that occur when mouse is stationary but
|
201 |
+
* the elements under the pointer are scrolled.
|
202 |
+
*/
|
203 |
+
function installFilteredMouseMove(element) {
|
204 |
+
element.on("mousemove", function (e) {
|
205 |
+
var lastpos = lastMousePosition;
|
206 |
+
if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) {
|
207 |
+
$(e.target).trigger("mousemove-filtered", e);
|
208 |
+
}
|
209 |
+
});
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
* Debounces a function. Returns a function that calls the original fn function only if no invocations have been made
|
214 |
+
* within the last quietMillis milliseconds.
|
215 |
+
*
|
216 |
+
* @param quietMillis number of milliseconds to wait before invoking fn
|
217 |
+
* @param fn function to be debounced
|
218 |
+
* @param ctx object to be used as this reference within fn
|
219 |
+
* @return debounced version of fn
|
220 |
+
*/
|
221 |
+
function debounce(quietMillis, fn, ctx) {
|
222 |
+
ctx = ctx || undefined;
|
223 |
+
var timeout;
|
224 |
+
return function () {
|
225 |
+
var args = arguments;
|
226 |
+
window.clearTimeout(timeout);
|
227 |
+
timeout = window.setTimeout(function() {
|
228 |
+
fn.apply(ctx, args);
|
229 |
+
}, quietMillis);
|
230 |
+
};
|
231 |
+
}
|
232 |
+
|
233 |
+
function installDebouncedScroll(threshold, element) {
|
234 |
+
var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);});
|
235 |
+
element.on("scroll", function (e) {
|
236 |
+
if (indexOf(e.target, element.get()) >= 0) notify(e);
|
237 |
+
});
|
238 |
+
}
|
239 |
+
|
240 |
+
function focus($el) {
|
241 |
+
if ($el[0] === document.activeElement) return;
|
242 |
+
|
243 |
+
/* set the focus in a 0 timeout - that way the focus is set after the processing
|
244 |
+
of the current event has finished - which seems like the only reliable way
|
245 |
+
to set focus */
|
246 |
+
window.setTimeout(function() {
|
247 |
+
var el=$el[0], pos=$el.val().length, range;
|
248 |
+
|
249 |
+
$el.focus();
|
250 |
+
|
251 |
+
/* make sure el received focus so we do not error out when trying to manipulate the caret.
|
252 |
+
sometimes modals or others listeners may steal it after its set */
|
253 |
+
var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0);
|
254 |
+
if (isVisible && el === document.activeElement) {
|
255 |
+
|
256 |
+
/* after the focus is set move the caret to the end, necessary when we val()
|
257 |
+
just before setting focus */
|
258 |
+
if(el.setSelectionRange)
|
259 |
+
{
|
260 |
+
el.setSelectionRange(pos, pos);
|
261 |
+
}
|
262 |
+
else if (el.createTextRange) {
|
263 |
+
range = el.createTextRange();
|
264 |
+
range.collapse(false);
|
265 |
+
range.select();
|
266 |
+
}
|
267 |
+
}
|
268 |
+
}, 0);
|
269 |
+
}
|
270 |
+
|
271 |
+
function getCursorInfo(el) {
|
272 |
+
el = $(el)[0];
|
273 |
+
var offset = 0;
|
274 |
+
var length = 0;
|
275 |
+
if ('selectionStart' in el) {
|
276 |
+
offset = el.selectionStart;
|
277 |
+
length = el.selectionEnd - offset;
|
278 |
+
} else if ('selection' in document) {
|
279 |
+
el.focus();
|
280 |
+
var sel = document.selection.createRange();
|
281 |
+
length = document.selection.createRange().text.length;
|
282 |
+
sel.moveStart('character', -el.value.length);
|
283 |
+
offset = sel.text.length - length;
|
284 |
+
}
|
285 |
+
return { offset: offset, length: length };
|
286 |
+
}
|
287 |
+
|
288 |
+
function killEvent(event) {
|
289 |
+
event.preventDefault();
|
290 |
+
event.stopPropagation();
|
291 |
+
}
|
292 |
+
function killEventImmediately(event) {
|
293 |
+
event.preventDefault();
|
294 |
+
event.stopImmediatePropagation();
|
295 |
+
}
|
296 |
+
|
297 |
+
function measureTextWidth(e) {
|
298 |
+
if (!sizer){
|
299 |
+
var style = e[0].currentStyle || window.getComputedStyle(e[0], null);
|
300 |
+
sizer = $(document.createElement("div")).css({
|
301 |
+
position: "absolute",
|
302 |
+
left: "-10000px",
|
303 |
+
top: "-10000px",
|
304 |
+
display: "none",
|
305 |
+
fontSize: style.fontSize,
|
306 |
+
fontFamily: style.fontFamily,
|
307 |
+
fontStyle: style.fontStyle,
|
308 |
+
fontWeight: style.fontWeight,
|
309 |
+
letterSpacing: style.letterSpacing,
|
310 |
+
textTransform: style.textTransform,
|
311 |
+
whiteSpace: "nowrap"
|
312 |
+
});
|
313 |
+
sizer.attr("class","select2-sizer");
|
314 |
+
$("body").append(sizer);
|
315 |
+
}
|
316 |
+
sizer.text(e.val());
|
317 |
+
return sizer.width();
|
318 |
+
}
|
319 |
+
|
320 |
+
function syncCssClasses(dest, src, adapter) {
|
321 |
+
var classes, replacements = [], adapted;
|
322 |
+
|
323 |
+
classes = $.trim(dest.attr("class"));
|
324 |
+
|
325 |
+
if (classes) {
|
326 |
+
classes = '' + classes; // for IE which returns object
|
327 |
+
|
328 |
+
$(classes.split(/\s+/)).each2(function() {
|
329 |
+
if (this.indexOf("select2-") === 0) {
|
330 |
+
replacements.push(this);
|
331 |
+
}
|
332 |
+
});
|
333 |
+
}
|
334 |
+
|
335 |
+
classes = $.trim(src.attr("class"));
|
336 |
+
|
337 |
+
if (classes) {
|
338 |
+
classes = '' + classes; // for IE which returns object
|
339 |
+
|
340 |
+
$(classes.split(/\s+/)).each2(function() {
|
341 |
+
if (this.indexOf("select2-") !== 0) {
|
342 |
+
adapted = adapter(this);
|
343 |
+
|
344 |
+
if (adapted) {
|
345 |
+
replacements.push(adapted);
|
346 |
+
}
|
347 |
+
}
|
348 |
+
});
|
349 |
+
}
|
350 |
+
|
351 |
+
dest.attr("class", replacements.join(" "));
|
352 |
+
}
|
353 |
+
|
354 |
+
|
355 |
+
function markMatch(text, term, markup, escapeMarkup) {
|
356 |
+
var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())),
|
357 |
+
tl=term.length;
|
358 |
+
|
359 |
+
if (match<0) {
|
360 |
+
markup.push(escapeMarkup(text));
|
361 |
+
return;
|
362 |
+
}
|
363 |
+
|
364 |
+
markup.push(escapeMarkup(text.substring(0, match)));
|
365 |
+
markup.push("<span class='select2-match'>");
|
366 |
+
markup.push(escapeMarkup(text.substring(match, match + tl)));
|
367 |
+
markup.push("</span>");
|
368 |
+
markup.push(escapeMarkup(text.substring(match + tl, text.length)));
|
369 |
+
}
|
370 |
+
|
371 |
+
function defaultEscapeMarkup(markup) {
|
372 |
+
var replace_map = {
|
373 |
+
'\\': '\',
|
374 |
+
'&': '&',
|
375 |
+
'<': '<',
|
376 |
+
'>': '>',
|
377 |
+
'"': '"',
|
378 |
+
"'": ''',
|
379 |
+
"/": '/'
|
380 |
+
};
|
381 |
+
|
382 |
+
return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
|
383 |
+
return replace_map[match];
|
384 |
+
});
|
385 |
+
}
|
386 |
+
|
387 |
+
/**
|
388 |
+
* Produces an ajax-based query function
|
389 |
+
*
|
390 |
+
* @param options object containing configuration parameters
|
391 |
+
* @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax
|
392 |
+
* @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax
|
393 |
+
* @param options.url url for the data
|
394 |
+
* @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url.
|
395 |
+
* @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified
|
396 |
+
* @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often
|
397 |
+
* @param options.results a function(remoteData, pageNumber, query) that converts data returned form the remote request to the format expected by Select2.
|
398 |
+
* The expected format is an object containing the following keys:
|
399 |
+
* results array of objects that will be used as choices
|
400 |
+
* more (optional) boolean indicating whether there are more results available
|
401 |
+
* Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true}
|
402 |
+
*/
|
403 |
+
function ajax(options) {
|
404 |
+
var timeout, // current scheduled but not yet executed request
|
405 |
+
handler = null,
|
406 |
+
quietMillis = options.quietMillis || 100,
|
407 |
+
ajaxUrl = options.url,
|
408 |
+
self = this;
|
409 |
+
|
410 |
+
return function (query) {
|
411 |
+
window.clearTimeout(timeout);
|
412 |
+
timeout = window.setTimeout(function () {
|
413 |
+
var data = options.data, // ajax data function
|
414 |
+
url = ajaxUrl, // ajax url string or function
|
415 |
+
transport = options.transport || $.fn.select2.ajaxDefaults.transport,
|
416 |
+
// deprecated - to be removed in 4.0 - use params instead
|
417 |
+
deprecated = {
|
418 |
+
type: options.type || 'GET', // set type of request (GET or POST)
|
419 |
+
cache: options.cache || false,
|
420 |
+
jsonpCallback: options.jsonpCallback||undefined,
|
421 |
+
dataType: options.dataType||"json"
|
422 |
+
},
|
423 |
+
params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated);
|
424 |
+
|
425 |
+
data = data ? data.call(self, query.term, query.page, query.context) : null;
|
426 |
+
url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url;
|
427 |
+
|
428 |
+
if (handler && typeof handler.abort === "function") { handler.abort(); }
|
429 |
+
|
430 |
+
if (options.params) {
|
431 |
+
if ($.isFunction(options.params)) {
|
432 |
+
$.extend(params, options.params.call(self));
|
433 |
+
} else {
|
434 |
+
$.extend(params, options.params);
|
435 |
+
}
|
436 |
+
}
|
437 |
+
|
438 |
+
$.extend(params, {
|
439 |
+
url: url,
|
440 |
+
dataType: options.dataType,
|
441 |
+
data: data,
|
442 |
+
success: function (data) {
|
443 |
+
// TODO - replace query.page with query so users have access to term, page, etc.
|
444 |
+
// added query as third paramter to keep backwards compatibility
|
445 |
+
var results = options.results(data, query.page, query);
|
446 |
+
query.callback(results);
|
447 |
+
},
|
448 |
+
error: function(jqXHR, textStatus, errorThrown){
|
449 |
+
var results = {
|
450 |
+
hasError: true,
|
451 |
+
jqXHR: jqXHR,
|
452 |
+
textStatus: textStatus,
|
453 |
+
errorThrown: errorThrown,
|
454 |
+
};
|
455 |
+
|
456 |
+
query.callback(results);
|
457 |
+
}
|
458 |
+
});
|
459 |
+
handler = transport.call(self, params);
|
460 |
+
}, quietMillis);
|
461 |
+
};
|
462 |
+
}
|
463 |
+
|
464 |
+
/**
|
465 |
+
* Produces a query function that works with a local array
|
466 |
+
*
|
467 |
+
* @param options object containing configuration parameters. The options parameter can either be an array or an
|
468 |
+
* object.
|
469 |
+
*
|
470 |
+
* If the array form is used it is assumed that it contains objects with 'id' and 'text' keys.
|
471 |
+
*
|
472 |
+
* If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain
|
473 |
+
* an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text'
|
474 |
+
* key can either be a String in which case it is expected that each element in the 'data' array has a key with the
|
475 |
+
* value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract
|
476 |
+
* the text.
|
477 |
+
*/
|
478 |
+
function local(options) {
|
479 |
+
var data = options, // data elements
|
480 |
+
dataText,
|
481 |
+
tmp,
|
482 |
+
text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search
|
483 |
+
|
484 |
+
if ($.isArray(data)) {
|
485 |
+
tmp = data;
|
486 |
+
data = { results: tmp };
|
487 |
+
}
|
488 |
+
|
489 |
+
if ($.isFunction(data) === false) {
|
490 |
+
tmp = data;
|
491 |
+
data = function() { return tmp; };
|
492 |
+
}
|
493 |
+
|
494 |
+
var dataItem = data();
|
495 |
+
if (dataItem.text) {
|
496 |
+
text = dataItem.text;
|
497 |
+
// if text is not a function we assume it to be a key name
|
498 |
+
if (!$.isFunction(text)) {
|
499 |
+
dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available
|
500 |
+
text = function (item) { return item[dataText]; };
|
501 |
+
}
|
502 |
+
}
|
503 |
+
|
504 |
+
return function (query) {
|
505 |
+
var t = query.term, filtered = { results: [] }, process;
|
506 |
+
if (t === "") {
|
507 |
+
query.callback(data());
|
508 |
+
return;
|
509 |
+
}
|
510 |
+
|
511 |
+
process = function(datum, collection) {
|
512 |
+
var group, attr;
|
513 |
+
datum = datum[0];
|
514 |
+
if (datum.children) {
|
515 |
+
group = {};
|
516 |
+
for (attr in datum) {
|
517 |
+
if (datum.hasOwnProperty(attr)) group[attr]=datum[attr];
|
518 |
+
}
|
519 |
+
group.children=[];
|
520 |
+
$(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); });
|
521 |
+
if (group.children.length || query.matcher(t, text(group), datum)) {
|
522 |
+
collection.push(group);
|
523 |
+
}
|
524 |
+
} else {
|
525 |
+
if (query.matcher(t, text(datum), datum)) {
|
526 |
+
collection.push(datum);
|
527 |
+
}
|
528 |
+
}
|
529 |
+
};
|
530 |
+
|
531 |
+
$(data().results).each2(function(i, datum) { process(datum, filtered.results); });
|
532 |
+
query.callback(filtered);
|
533 |
+
};
|
534 |
+
}
|
535 |
+
|
536 |
+
// TODO javadoc
|
537 |
+
function tags(data) {
|
538 |
+
var isFunc = $.isFunction(data);
|
539 |
+
return function (query) {
|
540 |
+
var t = query.term, filtered = {results: []};
|
541 |
+
var result = isFunc ? data(query) : data;
|
542 |
+
if ($.isArray(result)) {
|
543 |
+
$(result).each(function () {
|
544 |
+
var isObject = this.text !== undefined,
|
545 |
+
text = isObject ? this.text : this;
|
546 |
+
if (t === "" || query.matcher(t, text)) {
|
547 |
+
filtered.results.push(isObject ? this : {id: this, text: this});
|
548 |
+
}
|
549 |
+
});
|
550 |
+
query.callback(filtered);
|
551 |
+
}
|
552 |
+
};
|
553 |
+
}
|
554 |
+
|
555 |
+
/**
|
556 |
+
* Checks if the formatter function should be used.
|
557 |
+
*
|
558 |
+
* Throws an error if it is not a function. Returns true if it should be used,
|
559 |
+
* false if no formatting should be performed.
|
560 |
+
*
|
561 |
+
* @param formatter
|
562 |
+
*/
|
563 |
+
function checkFormatter(formatter, formatterName) {
|
564 |
+
if ($.isFunction(formatter)) return true;
|
565 |
+
if (!formatter) return false;
|
566 |
+
if (typeof(formatter) === 'string') return true;
|
567 |
+
throw new Error(formatterName +" must be a string, function, or falsy value");
|
568 |
+
}
|
569 |
+
|
570 |
+
/**
|
571 |
+
* Returns a given value
|
572 |
+
* If given a function, returns its output
|
573 |
+
*
|
574 |
+
* @param val string|function
|
575 |
+
* @param context value of "this" to be passed to function
|
576 |
+
* @returns {*}
|
577 |
+
*/
|
578 |
+
function evaluate(val, context) {
|
579 |
+
if ($.isFunction(val)) {
|
580 |
+
var args = Array.prototype.slice.call(arguments, 2);
|
581 |
+
return val.apply(context, args);
|
582 |
+
}
|
583 |
+
return val;
|
584 |
+
}
|
585 |
+
|
586 |
+
function countResults(results) {
|
587 |
+
var count = 0;
|
588 |
+
$.each(results, function(i, item) {
|
589 |
+
if (item.children) {
|
590 |
+
count += countResults(item.children);
|
591 |
+
} else {
|
592 |
+
count++;
|
593 |
+
}
|
594 |
+
});
|
595 |
+
return count;
|
596 |
+
}
|
597 |
+
|
598 |
+
/**
|
599 |
+
* Default tokenizer. This function uses breaks the input on substring match of any string from the
|
600 |
+
* opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those
|
601 |
+
* two options have to be defined in order for the tokenizer to work.
|
602 |
+
*
|
603 |
+
* @param input text user has typed so far or pasted into the search field
|
604 |
+
* @param selection currently selected choices
|
605 |
+
* @param selectCallback function(choice) callback tho add the choice to selection
|
606 |
+
* @param opts select2's opts
|
607 |
+
* @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value
|
608 |
+
*/
|
609 |
+
function defaultTokenizer(input, selection, selectCallback, opts) {
|
610 |
+
var original = input, // store the original so we can compare and know if we need to tell the search to update its text
|
611 |
+
dupe = false, // check for whether a token we extracted represents a duplicate selected choice
|
612 |
+
token, // token
|
613 |
+
index, // position at which the separator was found
|
614 |
+
i, l, // looping variables
|
615 |
+
separator; // the matched separator
|
616 |
+
|
617 |
+
if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined;
|
618 |
+
|
619 |
+
while (true) {
|
620 |
+
index = -1;
|
621 |
+
|
622 |
+
for (i = 0, l = opts.tokenSeparators.length; i < l; i++) {
|
623 |
+
separator = opts.tokenSeparators[i];
|
624 |
+
index = input.indexOf(separator);
|
625 |
+
if (index >= 0) break;
|
626 |
+
}
|
627 |
+
|
628 |
+
if (index < 0) break; // did not find any token separator in the input string, bail
|
629 |
+
|
630 |
+
token = input.substring(0, index);
|
631 |
+
input = input.substring(index + separator.length);
|
632 |
+
|
633 |
+
if (token.length > 0) {
|
634 |
+
token = opts.createSearchChoice.call(this, token, selection);
|
635 |
+
if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) {
|
636 |
+
dupe = false;
|
637 |
+
for (i = 0, l = selection.length; i < l; i++) {
|
638 |
+
if (equal(opts.id(token), opts.id(selection[i]))) {
|
639 |
+
dupe = true; break;
|
640 |
+
}
|
641 |
+
}
|
642 |
+
|
643 |
+
if (!dupe) selectCallback(token);
|
644 |
+
}
|
645 |
+
}
|
646 |
+
}
|
647 |
+
|
648 |
+
if (original!==input) return input;
|
649 |
+
}
|
650 |
+
|
651 |
+
function cleanupJQueryElements() {
|
652 |
+
var self = this;
|
653 |
+
|
654 |
+
$.each(arguments, function (i, element) {
|
655 |
+
self[element].remove();
|
656 |
+
self[element] = null;
|
657 |
+
});
|
658 |
+
}
|
659 |
+
|
660 |
+
/**
|
661 |
+
* Creates a new class
|
662 |
+
*
|
663 |
+
* @param superClass
|
664 |
+
* @param methods
|
665 |
+
*/
|
666 |
+
function clazz(SuperClass, methods) {
|
667 |
+
var constructor = function () {};
|
668 |
+
constructor.prototype = new SuperClass;
|
669 |
+
constructor.prototype.constructor = constructor;
|
670 |
+
constructor.prototype.parent = SuperClass.prototype;
|
671 |
+
constructor.prototype = $.extend(constructor.prototype, methods);
|
672 |
+
return constructor;
|
673 |
+
}
|
674 |
+
|
675 |
+
AbstractSelect2 = clazz(Object, {
|
676 |
+
|
677 |
+
// abstract
|
678 |
+
bind: function (func) {
|
679 |
+
var self = this;
|
680 |
+
return function () {
|
681 |
+
func.apply(self, arguments);
|
682 |
+
};
|
683 |
+
},
|
684 |
+
|
685 |
+
// abstract
|
686 |
+
init: function (opts) {
|
687 |
+
var results, search, resultsSelector = ".select2-results";
|
688 |
+
|
689 |
+
// prepare options
|
690 |
+
this.opts = opts = this.prepareOpts(opts);
|
691 |
+
|
692 |
+
this.id=opts.id;
|
693 |
+
|
694 |
+
// destroy if called on an existing component
|
695 |
+
if (opts.element.data("select2") !== undefined &&
|
696 |
+
opts.element.data("select2") !== null) {
|
697 |
+
opts.element.data("select2").destroy();
|
698 |
+
}
|
699 |
+
|
700 |
+
this.container = this.createContainer();
|
701 |
+
|
702 |
+
this.liveRegion = $("<span>", {
|
703 |
+
role: "status",
|
704 |
+
"aria-live": "polite"
|
705 |
+
})
|
706 |
+
.addClass("select2-hidden-accessible")
|
707 |
+
.appendTo(document.body);
|
708 |
+
|
709 |
+
this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid());
|
710 |
+
this.containerEventName= this.containerId
|
711 |
+
.replace(/([.])/g, '_')
|
712 |
+
.replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1');
|
713 |
+
this.container.attr("id", this.containerId);
|
714 |
+
|
715 |
+
this.container.attr("title", opts.element.attr("title"));
|
716 |
+
|
717 |
+
this.body = $("body");
|
718 |
+
|
719 |
+
syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
|
720 |
+
|
721 |
+
this.container.attr("style", opts.element.attr("style"));
|
722 |
+
this.container.css(evaluate(opts.containerCss, this.opts.element));
|
723 |
+
this.container.addClass(evaluate(opts.containerCssClass, this.opts.element));
|
724 |
+
|
725 |
+
this.elementTabIndex = this.opts.element.attr("tabindex");
|
726 |
+
|
727 |
+
// swap container for the element
|
728 |
+
this.opts.element
|
729 |
+
.data("select2", this)
|
730 |
+
.attr("tabindex", "-1")
|
731 |
+
.before(this.container)
|
732 |
+
.on("click.select2", killEvent); // do not leak click events
|
733 |
+
|
734 |
+
this.container.data("select2", this);
|
735 |
+
|
736 |
+
this.dropdown = this.container.find(".select2-drop");
|
737 |
+
|
738 |
+
syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
|
739 |
+
|
740 |
+
this.dropdown.addClass(evaluate(opts.dropdownCssClass, this.opts.element));
|
741 |
+
this.dropdown.data("select2", this);
|
742 |
+
this.dropdown.on("click", killEvent);
|
743 |
+
|
744 |
+
this.results = results = this.container.find(resultsSelector);
|
745 |
+
this.search = search = this.container.find("input.select2-input");
|
746 |
+
|
747 |
+
this.queryCount = 0;
|
748 |
+
this.resultsPage = 0;
|
749 |
+
this.context = null;
|
750 |
+
|
751 |
+
// initialize the container
|
752 |
+
this.initContainer();
|
753 |
+
|
754 |
+
this.container.on("click", killEvent);
|
755 |
+
|
756 |
+
installFilteredMouseMove(this.results);
|
757 |
+
|
758 |
+
this.dropdown.on("mousemove-filtered", resultsSelector, this.bind(this.highlightUnderEvent));
|
759 |
+
this.dropdown.on("touchstart touchmove touchend", resultsSelector, this.bind(function (event) {
|
760 |
+
this._touchEvent = true;
|
761 |
+
this.highlightUnderEvent(event);
|
762 |
+
}));
|
763 |
+
this.dropdown.on("touchmove", resultsSelector, this.bind(this.touchMoved));
|
764 |
+
this.dropdown.on("touchstart touchend", resultsSelector, this.bind(this.clearTouchMoved));
|
765 |
+
|
766 |
+
// Waiting for a click event on touch devices to select option and hide dropdown
|
767 |
+
// otherwise click will be triggered on an underlying element
|
768 |
+
this.dropdown.on('click', this.bind(function (event) {
|
769 |
+
if (this._touchEvent) {
|
770 |
+
this._touchEvent = false;
|
771 |
+
this.selectHighlighted();
|
772 |
+
}
|
773 |
+
}));
|
774 |
+
|
775 |
+
installDebouncedScroll(80, this.results);
|
776 |
+
this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded));
|
777 |
+
|
778 |
+
// do not propagate change event from the search field out of the component
|
779 |
+
$(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();});
|
780 |
+
$(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();});
|
781 |
+
|
782 |
+
// if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel
|
783 |
+
if ($.fn.mousewheel) {
|
784 |
+
results.mousewheel(function (e, delta, deltaX, deltaY) {
|
785 |
+
var top = results.scrollTop();
|
786 |
+
if (deltaY > 0 && top - deltaY <= 0) {
|
787 |
+
results.scrollTop(0);
|
788 |
+
killEvent(e);
|
789 |
+
} else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) {
|
790 |
+
results.scrollTop(results.get(0).scrollHeight - results.height());
|
791 |
+
killEvent(e);
|
792 |
+
}
|
793 |
+
});
|
794 |
+
}
|
795 |
+
|
796 |
+
installKeyUpChangeEvent(search);
|
797 |
+
search.on("keyup-change input paste", this.bind(this.updateResults));
|
798 |
+
search.on("focus", function () { search.addClass("select2-focused"); });
|
799 |
+
search.on("blur", function () { search.removeClass("select2-focused");});
|
800 |
+
|
801 |
+
this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) {
|
802 |
+
if ($(e.target).closest(".select2-result-selectable").length > 0) {
|
803 |
+
this.highlightUnderEvent(e);
|
804 |
+
this.selectHighlighted(e);
|
805 |
+
}
|
806 |
+
}));
|
807 |
+
|
808 |
+
// trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening
|
809 |
+
// for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's
|
810 |
+
// dom it will trigger the popup close, which is not what we want
|
811 |
+
// focusin can cause focus wars between modals and select2 since the dropdown is outside the modal.
|
812 |
+
this.dropdown.on("click mouseup mousedown touchstart touchend focusin", function (e) { e.stopPropagation(); });
|
813 |
+
|
814 |
+
this.nextSearchTerm = undefined;
|
815 |
+
|
816 |
+
if ($.isFunction(this.opts.initSelection)) {
|
817 |
+
// initialize selection based on the current value of the source element
|
818 |
+
this.initSelection();
|
819 |
+
|
820 |
+
// if the user has provided a function that can set selection based on the value of the source element
|
821 |
+
// we monitor the change event on the element and trigger it, allowing for two way synchronization
|
822 |
+
this.monitorSource();
|
823 |
+
}
|
824 |
+
|
825 |
+
if (opts.maximumInputLength !== null) {
|
826 |
+
this.search.attr("maxlength", opts.maximumInputLength);
|
827 |
+
}
|
828 |
+
|
829 |
+
var disabled = opts.element.prop("disabled");
|
830 |
+
if (disabled === undefined) disabled = false;
|
831 |
+
this.enable(!disabled);
|
832 |
+
|
833 |
+
var readonly = opts.element.prop("readonly");
|
834 |
+
if (readonly === undefined) readonly = false;
|
835 |
+
this.readonly(readonly);
|
836 |
+
|
837 |
+
// Calculate size of scrollbar
|
838 |
+
scrollBarDimensions = scrollBarDimensions || measureScrollbar();
|
839 |
+
|
840 |
+
this.autofocus = opts.element.prop("autofocus");
|
841 |
+
opts.element.prop("autofocus", false);
|
842 |
+
if (this.autofocus) this.focus();
|
843 |
+
|
844 |
+
this.search.attr("placeholder", opts.searchInputPlaceholder);
|
845 |
+
},
|
846 |
+
|
847 |
+
// abstract
|
848 |
+
destroy: function () {
|
849 |
+
var element=this.opts.element, select2 = element.data("select2"), self = this;
|
850 |
+
|
851 |
+
this.close();
|
852 |
+
|
853 |
+
if (element.length && element[0].detachEvent) {
|
854 |
+
element.each(function () {
|
855 |
+
this.detachEvent("onpropertychange", self._sync);
|
856 |
+
});
|
857 |
+
}
|
858 |
+
if (this.propertyObserver) {
|
859 |
+
this.propertyObserver.disconnect();
|
860 |
+
this.propertyObserver = null;
|
861 |
+
}
|
862 |
+
this._sync = null;
|
863 |
+
|
864 |
+
if (select2 !== undefined) {
|
865 |
+
select2.container.remove();
|
866 |
+
select2.liveRegion.remove();
|
867 |
+
select2.dropdown.remove();
|
868 |
+
element
|
869 |
+
.removeClass("select2-offscreen")
|
870 |
+
.removeData("select2")
|
871 |
+
.off(".select2")
|
872 |
+
.prop("autofocus", this.autofocus || false);
|
873 |
+
if (this.elementTabIndex) {
|
874 |
+
element.attr({tabindex: this.elementTabIndex});
|
875 |
+
} else {
|
876 |
+
element.removeAttr("tabindex");
|
877 |
+
}
|
878 |
+
element.show();
|
879 |
+
}
|
880 |
+
|
881 |
+
cleanupJQueryElements.call(this,
|
882 |
+
"container",
|
883 |
+
"liveRegion",
|
884 |
+
"dropdown",
|
885 |
+
"results",
|
886 |
+
"search"
|
887 |
+
);
|
888 |
+
},
|
889 |
+
|
890 |
+
// abstract
|
891 |
+
optionToData: function(element) {
|
892 |
+
if (element.is("option")) {
|
893 |
+
return {
|
894 |
+
id:element.prop("value"),
|
895 |
+
text:element.text(),
|
896 |
+
element: element.get(),
|
897 |
+
css: element.attr("class"),
|
898 |
+
disabled: element.prop("disabled"),
|
899 |
+
locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true)
|
900 |
+
};
|
901 |
+
} else if (element.is("optgroup")) {
|
902 |
+
return {
|
903 |
+
text:element.attr("label"),
|
904 |
+
children:[],
|
905 |
+
element: element.get(),
|
906 |
+
css: element.attr("class")
|
907 |
+
};
|
908 |
+
}
|
909 |
+
},
|
910 |
+
|
911 |
+
// abstract
|
912 |
+
prepareOpts: function (opts) {
|
913 |
+
var element, select, idKey, ajaxUrl, self = this;
|
914 |
+
|
915 |
+
element = opts.element;
|
916 |
+
|
917 |
+
if (element.get(0).tagName.toLowerCase() === "select") {
|
918 |
+
this.select = select = opts.element;
|
919 |
+
}
|
920 |
+
|
921 |
+
if (select) {
|
922 |
+
// these options are not allowed when attached to a select because they are picked up off the element itself
|
923 |
+
$.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () {
|
924 |
+
if (this in opts) {
|
925 |
+
throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a <select> element.");
|
926 |
+
}
|
927 |
+
});
|
928 |
+
}
|
929 |
+
|
930 |
+
opts = $.extend({}, {
|
931 |
+
populateResults: function(container, results, query) {
|
932 |
+
var populate, id=this.opts.id, liveRegion=this.liveRegion;
|
933 |
+
|
934 |
+
populate=function(results, container, depth) {
|
935 |
+
|
936 |
+
var i, l, result, selectable, disabled, compound, node, label, innerContainer, formatted;
|
937 |
+
|
938 |
+
results = opts.sortResults(results, container, query);
|
939 |
+
|
940 |
+
// collect the created nodes for bulk append
|
941 |
+
var nodes = [];
|
942 |
+
for (i = 0, l = results.length; i < l; i = i + 1) {
|
943 |
+
|
944 |
+
result=results[i];
|
945 |
+
|
946 |
+
disabled = (result.disabled === true);
|
947 |
+
selectable = (!disabled) && (id(result) !== undefined);
|
948 |
+
|
949 |
+
compound=result.children && result.children.length > 0;
|
950 |
+
|
951 |
+
node=$("<li></li>");
|
952 |
+
node.addClass("select2-results-dept-"+depth);
|
953 |
+
node.addClass("select2-result");
|
954 |
+
node.addClass(selectable ? "select2-result-selectable" : "select2-result-unselectable");
|
955 |
+
if (disabled) { node.addClass("select2-disabled"); }
|
956 |
+
if (compound) { node.addClass("select2-result-with-children"); }
|
957 |
+
node.addClass(self.opts.formatResultCssClass(result));
|
958 |
+
node.attr("role", "presentation");
|
959 |
+
|
960 |
+
label=$(document.createElement("div"));
|
961 |
+
label.addClass("select2-result-label");
|
962 |
+
label.attr("id", "select2-result-label-" + nextUid());
|
963 |
+
label.attr("role", "option");
|
964 |
+
|
965 |
+
formatted=opts.formatResult(result, label, query, self.opts.escapeMarkup);
|
966 |
+
if (formatted!==undefined) {
|
967 |
+
label.html(formatted);
|
968 |
+
node.append(label);
|
969 |
+
}
|
970 |
+
|
971 |
+
|
972 |
+
if (compound) {
|
973 |
+
|
974 |
+
innerContainer=$("<ul></ul>");
|
975 |
+
innerContainer.addClass("select2-result-sub");
|
976 |
+
populate(result.children, innerContainer, depth+1);
|
977 |
+
node.append(innerContainer);
|
978 |
+
}
|
979 |
+
|
980 |
+
node.data("select2-data", result);
|
981 |
+
nodes.push(node[0]);
|
982 |
+
}
|
983 |
+
|
984 |
+
// bulk append the created nodes
|
985 |
+
container.append(nodes);
|
986 |
+
liveRegion.text(opts.formatMatches(results.length));
|
987 |
+
};
|
988 |
+
|
989 |
+
populate(results, container, 0);
|
990 |
+
}
|
991 |
+
}, $.fn.select2.defaults, opts);
|
992 |
+
|
993 |
+
if (typeof(opts.id) !== "function") {
|
994 |
+
idKey = opts.id;
|
995 |
+
opts.id = function (e) { return e[idKey]; };
|
996 |
+
}
|
997 |
+
|
998 |
+
if ($.isArray(opts.element.data("select2Tags"))) {
|
999 |
+
if ("tags" in opts) {
|
1000 |
+
throw "tags specified as both an attribute 'data-select2-tags' and in options of Select2 " + opts.element.attr("id");
|
1001 |
+
}
|
1002 |
+
opts.tags=opts.element.data("select2Tags");
|
1003 |
+
}
|
1004 |
+
|
1005 |
+
if (select) {
|
1006 |
+
opts.query = this.bind(function (query) {
|
1007 |
+
var data = { results: [], more: false },
|
1008 |
+
term = query.term,
|
1009 |
+
children, placeholderOption, process;
|
1010 |
+
|
1011 |
+
process=function(element, collection) {
|
1012 |
+
var group;
|
1013 |
+
if (element.is("option")) {
|
1014 |
+
if (query.matcher(term, element.text(), element)) {
|
1015 |
+
collection.push(self.optionToData(element));
|
1016 |
+
}
|
1017 |
+
} else if (element.is("optgroup")) {
|
1018 |
+
group=self.optionToData(element);
|
1019 |
+
element.children().each2(function(i, elm) { process(elm, group.children); });
|
1020 |
+
if (group.children.length>0) {
|
1021 |
+
collection.push(group);
|
1022 |
+
}
|
1023 |
+
}
|
1024 |
+
};
|
1025 |
+
|
1026 |
+
children=element.children();
|
1027 |
+
|
1028 |
+
// ignore the placeholder option if there is one
|
1029 |
+
if (this.getPlaceholder() !== undefined && children.length > 0) {
|
1030 |
+
placeholderOption = this.getPlaceholderOption();
|
1031 |
+
if (placeholderOption) {
|
1032 |
+
children=children.not(placeholderOption);
|
1033 |
+
}
|
1034 |
+
}
|
1035 |
+
|
1036 |
+
children.each2(function(i, elm) { process(elm, data.results); });
|
1037 |
+
|
1038 |
+
query.callback(data);
|
1039 |
+
});
|
1040 |
+
// this is needed because inside val() we construct choices from options and their id is hardcoded
|
1041 |
+
opts.id=function(e) { return e.id; };
|
1042 |
+
} else {
|
1043 |
+
if (!("query" in opts)) {
|
1044 |
+
|
1045 |
+
if ("ajax" in opts) {
|
1046 |
+
ajaxUrl = opts.element.data("ajax-url");
|
1047 |
+
if (ajaxUrl && ajaxUrl.length > 0) {
|
1048 |
+
opts.ajax.url = ajaxUrl;
|
1049 |
+
}
|
1050 |
+
opts.query = ajax.call(opts.element, opts.ajax);
|
1051 |
+
} else if ("data" in opts) {
|
1052 |
+
opts.query = local(opts.data);
|
1053 |
+
} else if ("tags" in opts) {
|
1054 |
+
opts.query = tags(opts.tags);
|
1055 |
+
if (opts.createSearchChoice === undefined) {
|
1056 |
+
opts.createSearchChoice = function (term) { return {id: $.trim(term), text: $.trim(term)}; };
|
1057 |
+
}
|
1058 |
+
if (opts.initSelection === undefined) {
|
1059 |
+
opts.initSelection = function (element, callback) {
|
1060 |
+
var data = [];
|
1061 |
+
$(splitVal(element.val(), opts.separator)).each(function () {
|
1062 |
+
var obj = { id: this, text: this },
|
1063 |
+
tags = opts.tags;
|
1064 |
+
if ($.isFunction(tags)) tags=tags();
|
1065 |
+
$(tags).each(function() { if (equal(this.id, obj.id)) { obj = this; return false; } });
|
1066 |
+
data.push(obj);
|
1067 |
+
});
|
1068 |
+
|
1069 |
+
callback(data);
|
1070 |
+
};
|
1071 |
+
}
|
1072 |
+
}
|
1073 |
+
}
|
1074 |
+
}
|
1075 |
+
if (typeof(opts.query) !== "function") {
|
1076 |
+
throw "query function not defined for Select2 " + opts.element.attr("id");
|
1077 |
+
}
|
1078 |
+
|
1079 |
+
if (opts.createSearchChoicePosition === 'top') {
|
1080 |
+
opts.createSearchChoicePosition = function(list, item) { list.unshift(item); };
|
1081 |
+
}
|
1082 |
+
else if (opts.createSearchChoicePosition === 'bottom') {
|
1083 |
+
opts.createSearchChoicePosition = function(list, item) { list.push(item); };
|
1084 |
+
}
|
1085 |
+
else if (typeof(opts.createSearchChoicePosition) !== "function") {
|
1086 |
+
throw "invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function";
|
1087 |
+
}
|
1088 |
+
|
1089 |
+
return opts;
|
1090 |
+
},
|
1091 |
+
|
1092 |
+
/**
|
1093 |
+
* Monitor the original element for changes and update select2 accordingly
|
1094 |
+
*/
|
1095 |
+
// abstract
|
1096 |
+
monitorSource: function () {
|
1097 |
+
var el = this.opts.element, observer, self = this;
|
1098 |
+
|
1099 |
+
el.on("change.select2", this.bind(function (e) {
|
1100 |
+
if (this.opts.element.data("select2-change-triggered") !== true) {
|
1101 |
+
this.initSelection();
|
1102 |
+
}
|
1103 |
+
}));
|
1104 |
+
|
1105 |
+
this._sync = this.bind(function () {
|
1106 |
+
|
1107 |
+
// sync enabled state
|
1108 |
+
var disabled = el.prop("disabled");
|
1109 |
+
if (disabled === undefined) disabled = false;
|
1110 |
+
this.enable(!disabled);
|
1111 |
+
|
1112 |
+
var readonly = el.prop("readonly");
|
1113 |
+
if (readonly === undefined) readonly = false;
|
1114 |
+
this.readonly(readonly);
|
1115 |
+
|
1116 |
+
syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass);
|
1117 |
+
this.container.addClass(evaluate(this.opts.containerCssClass, this.opts.element));
|
1118 |
+
|
1119 |
+
syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass);
|
1120 |
+
this.dropdown.addClass(evaluate(this.opts.dropdownCssClass, this.opts.element));
|
1121 |
+
|
1122 |
+
});
|
1123 |
+
|
1124 |
+
// IE8-10 (IE9/10 won't fire propertyChange via attachEventListener)
|
1125 |
+
if (el.length && el[0].attachEvent) {
|
1126 |
+
el.each(function() {
|
1127 |
+
this.attachEvent("onpropertychange", self._sync);
|
1128 |
+
});
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
// safari, chrome, firefox, IE11
|
1132 |
+
observer = window.MutationObserver || window.WebKitMutationObserver|| window.MozMutationObserver;
|
1133 |
+
if (observer !== undefined) {
|
1134 |
+
if (this.propertyObserver) { delete this.propertyObserver; this.propertyObserver = null; }
|
1135 |
+
this.propertyObserver = new observer(function (mutations) {
|
1136 |
+
$.each(mutations, self._sync);
|
1137 |
+
});
|
1138 |
+
this.propertyObserver.observe(el.get(0), { attributes:true, subtree:false });
|
1139 |
+
}
|
1140 |
+
},
|
1141 |
+
|
1142 |
+
// abstract
|
1143 |
+
triggerSelect: function(data) {
|
1144 |
+
var evt = $.Event("select2-selecting", { val: this.id(data), object: data, choice: data });
|
1145 |
+
this.opts.element.trigger(evt);
|
1146 |
+
return !evt.isDefaultPrevented();
|
1147 |
+
},
|
1148 |
+
|
1149 |
+
/**
|
1150 |
+
* Triggers the change event on the source element
|
1151 |
+
*/
|
1152 |
+
// abstract
|
1153 |
+
triggerChange: function (details) {
|
1154 |
+
|
1155 |
+
details = details || {};
|
1156 |
+
details= $.extend({}, details, { type: "change", val: this.val() });
|
1157 |
+
// prevents recursive triggering
|
1158 |
+
this.opts.element.data("select2-change-triggered", true);
|
1159 |
+
this.opts.element.trigger(details);
|
1160 |
+
this.opts.element.data("select2-change-triggered", false);
|
1161 |
+
|
1162 |
+
// some validation frameworks ignore the change event and listen instead to keyup, click for selects
|
1163 |
+
// so here we trigger the click event manually
|
1164 |
+
this.opts.element.click();
|
1165 |
+
|
1166 |
+
// ValidationEngine ignores the change event and listens instead to blur
|
1167 |
+
// so here we trigger the blur event manually if so desired
|
1168 |
+
if (this.opts.blurOnChange)
|
1169 |
+
this.opts.element.blur();
|
1170 |
+
},
|
1171 |
+
|
1172 |
+
//abstract
|
1173 |
+
isInterfaceEnabled: function()
|
1174 |
+
{
|
1175 |
+
return this.enabledInterface === true;
|
1176 |
+
},
|
1177 |
+
|
1178 |
+
// abstract
|
1179 |
+
enableInterface: function() {
|
1180 |
+
var enabled = this._enabled && !this._readonly,
|
1181 |
+
disabled = !enabled;
|
1182 |
+
|
1183 |
+
if (enabled === this.enabledInterface) return false;
|
1184 |
+
|
1185 |
+
this.container.toggleClass("select2-container-disabled", disabled);
|
1186 |
+
this.close();
|
1187 |
+
this.enabledInterface = enabled;
|
1188 |
+
|
1189 |
+
return true;
|
1190 |
+
},
|
1191 |
+
|
1192 |
+
// abstract
|
1193 |
+
enable: function(enabled) {
|
1194 |
+
if (enabled === undefined) enabled = true;
|
1195 |
+
if (this._enabled === enabled) return;
|
1196 |
+
this._enabled = enabled;
|
1197 |
+
|
1198 |
+
this.opts.element.prop("disabled", !enabled);
|
1199 |
+
this.enableInterface();
|
1200 |
+
},
|
1201 |
+
|
1202 |
+
// abstract
|
1203 |
+
disable: function() {
|
1204 |
+
this.enable(false);
|
1205 |
+
},
|
1206 |
+
|
1207 |
+
// abstract
|
1208 |
+
readonly: function(enabled) {
|
1209 |
+
if (enabled === undefined) enabled = false;
|
1210 |
+
if (this._readonly === enabled) return;
|
1211 |
+
this._readonly = enabled;
|
1212 |
+
|
1213 |
+
this.opts.element.prop("readonly", enabled);
|
1214 |
+
this.enableInterface();
|
1215 |
+
},
|
1216 |
+
|
1217 |
+
// abstract
|
1218 |
+
opened: function () {
|
1219 |
+
return (this.container) ? this.container.hasClass("select2-dropdown-open") : false;
|
1220 |
+
},
|
1221 |
+
|
1222 |
+
// abstract
|
1223 |
+
positionDropdown: function() {
|
1224 |
+
var $dropdown = this.dropdown,
|
1225 |
+
offset = this.container.offset(),
|
1226 |
+
height = this.container.outerHeight(false),
|
1227 |
+
width = this.container.outerWidth(false),
|
1228 |
+
dropHeight = $dropdown.outerHeight(false),
|
1229 |
+
$window = $(window),
|
1230 |
+
windowWidth = $window.width(),
|
1231 |
+
windowHeight = $window.height(),
|
1232 |
+
viewPortRight = $window.scrollLeft() + windowWidth,
|
1233 |
+
viewportBottom = $window.scrollTop() + windowHeight,
|
1234 |
+
dropTop = offset.top + height,
|
1235 |
+
dropLeft = offset.left,
|
1236 |
+
enoughRoomBelow = dropTop + dropHeight <= viewportBottom,
|
1237 |
+
enoughRoomAbove = (offset.top - dropHeight) >= $window.scrollTop(),
|
1238 |
+
dropWidth = $dropdown.outerWidth(false),
|
1239 |
+
enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight,
|
1240 |
+
aboveNow = $dropdown.hasClass("select2-drop-above"),
|
1241 |
+
bodyOffset,
|
1242 |
+
above,
|
1243 |
+
changeDirection,
|
1244 |
+
css,
|
1245 |
+
resultsListNode;
|
1246 |
+
|
1247 |
+
// always prefer the current above/below alignment, unless there is not enough room
|
1248 |
+
if (aboveNow) {
|
1249 |
+
above = true;
|
1250 |
+
if (!enoughRoomAbove && enoughRoomBelow) {
|
1251 |
+
changeDirection = true;
|
1252 |
+
above = false;
|
1253 |
+
}
|
1254 |
+
} else {
|
1255 |
+
above = false;
|
1256 |
+
if (!enoughRoomBelow && enoughRoomAbove) {
|
1257 |
+
changeDirection = true;
|
1258 |
+
above = true;
|
1259 |
+
}
|
1260 |
+
}
|
1261 |
+
|
1262 |
+
//if we are changing direction we need to get positions when dropdown is hidden;
|
1263 |
+
if (changeDirection) {
|
1264 |
+
$dropdown.hide();
|
1265 |
+
offset = this.container.offset();
|
1266 |
+
height = this.container.outerHeight(false);
|
1267 |
+
width = this.container.outerWidth(false);
|
1268 |
+
dropHeight = $dropdown.outerHeight(false);
|
1269 |
+
viewPortRight = $window.scrollLeft() + windowWidth;
|
1270 |
+
viewportBottom = $window.scrollTop() + windowHeight;
|
1271 |
+
dropTop = offset.top + height;
|
1272 |
+
dropLeft = offset.left;
|
1273 |
+
dropWidth = $dropdown.outerWidth(false);
|
1274 |
+
enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
|
1275 |
+
$dropdown.show();
|
1276 |
+
|
1277 |
+
// fix so the cursor does not move to the left within the search-textbox in IE
|
1278 |
+
this.focusSearch();
|
1279 |
+
}
|
1280 |
+
|
1281 |
+
if (this.opts.dropdownAutoWidth) {
|
1282 |
+
resultsListNode = $('.select2-results', $dropdown)[0];
|
1283 |
+
$dropdown.addClass('select2-drop-auto-width');
|
1284 |
+
$dropdown.css('width', '');
|
1285 |
+
// Add scrollbar width to dropdown if vertical scrollbar is present
|
1286 |
+
dropWidth = $dropdown.outerWidth(false) + (resultsListNode.scrollHeight === resultsListNode.clientHeight ? 0 : scrollBarDimensions.width);
|
1287 |
+
dropWidth > width ? width = dropWidth : dropWidth = width;
|
1288 |
+
dropHeight = $dropdown.outerHeight(false);
|
1289 |
+
enoughRoomOnRight = dropLeft + dropWidth <= viewPortRight;
|
1290 |
+
}
|
1291 |
+
else {
|
1292 |
+
this.container.removeClass('select2-drop-auto-width');
|
1293 |
+
}
|
1294 |
+
|
1295 |
+
//console.log("below/ droptop:", dropTop, "dropHeight", dropHeight, "sum", (dropTop+dropHeight)+" viewport bottom", viewportBottom, "enough?", enoughRoomBelow);
|
1296 |
+
//console.log("above/ offset.top", offset.top, "dropHeight", dropHeight, "top", (offset.top-dropHeight), "scrollTop", this.body.scrollTop(), "enough?", enoughRoomAbove);
|
1297 |
+
|
1298 |
+
// fix positioning when body has an offset and is not position: static
|
1299 |
+
if (this.body.css('position') !== 'static') {
|
1300 |
+
bodyOffset = this.body.offset();
|
1301 |
+
dropTop -= bodyOffset.top;
|
1302 |
+
dropLeft -= bodyOffset.left;
|
1303 |
+
}
|
1304 |
+
|
1305 |
+
if (!enoughRoomOnRight) {
|
1306 |
+
dropLeft = offset.left + this.container.outerWidth(false) - dropWidth;
|
1307 |
+
}
|
1308 |
+
|
1309 |
+
css = {
|
1310 |
+
left: dropLeft,
|
1311 |
+
width: width
|
1312 |
+
};
|
1313 |
+
|
1314 |
+
if (above) {
|
1315 |
+
css.top = offset.top - dropHeight;
|
1316 |
+
css.bottom = 'auto';
|
1317 |
+
this.container.addClass("select2-drop-above");
|
1318 |
+
$dropdown.addClass("select2-drop-above");
|
1319 |
+
}
|
1320 |
+
else {
|
1321 |
+
css.top = dropTop;
|
1322 |
+
css.bottom = 'auto';
|
1323 |
+
this.container.removeClass("select2-drop-above");
|
1324 |
+
$dropdown.removeClass("select2-drop-above");
|
1325 |
+
}
|
1326 |
+
css = $.extend(css, evaluate(this.opts.dropdownCss, this.opts.element));
|
1327 |
+
|
1328 |
+
$dropdown.css(css);
|
1329 |
+
},
|
1330 |
+
|
1331 |
+
// abstract
|
1332 |
+
shouldOpen: function() {
|
1333 |
+
var event;
|
1334 |
+
|
1335 |
+
if (this.opened()) return false;
|
1336 |
+
|
1337 |
+
if (this._enabled === false || this._readonly === true) return false;
|
1338 |
+
|
1339 |
+
event = $.Event("select2-opening");
|
1340 |
+
this.opts.element.trigger(event);
|
1341 |
+
return !event.isDefaultPrevented();
|
1342 |
+
},
|
1343 |
+
|
1344 |
+
// abstract
|
1345 |
+
clearDropdownAlignmentPreference: function() {
|
1346 |
+
// clear the classes used to figure out the preference of where the dropdown should be opened
|
1347 |
+
this.container.removeClass("select2-drop-above");
|
1348 |
+
this.dropdown.removeClass("select2-drop-above");
|
1349 |
+
},
|
1350 |
+
|
1351 |
+
/**
|
1352 |
+
* Opens the dropdown
|
1353 |
+
*
|
1354 |
+
* @return {Boolean} whether or not dropdown was opened. This method will return false if, for example,
|
1355 |
+
* the dropdown is already open, or if the 'open' event listener on the element called preventDefault().
|
1356 |
+
*/
|
1357 |
+
// abstract
|
1358 |
+
open: function () {
|
1359 |
+
|
1360 |
+
if (!this.shouldOpen()) return false;
|
1361 |
+
|
1362 |
+
this.opening();
|
1363 |
+
|
1364 |
+
// Only bind the document mousemove when the dropdown is visible
|
1365 |
+
$document.on("mousemove.select2Event", function (e) {
|
1366 |
+
lastMousePosition.x = e.pageX;
|
1367 |
+
lastMousePosition.y = e.pageY;
|
1368 |
+
});
|
1369 |
+
|
1370 |
+
return true;
|
1371 |
+
},
|
1372 |
+
|
1373 |
+
/**
|
1374 |
+
* Performs the opening of the dropdown
|
1375 |
+
*/
|
1376 |
+
// abstract
|
1377 |
+
opening: function() {
|
1378 |
+
var cid = this.containerEventName,
|
1379 |
+
scroll = "scroll." + cid,
|
1380 |
+
resize = "resize."+cid,
|
1381 |
+
orient = "orientationchange."+cid,
|
1382 |
+
mask;
|
1383 |
+
|
1384 |
+
this.container.addClass("select2-dropdown-open").addClass("select2-container-active");
|
1385 |
+
|
1386 |
+
this.clearDropdownAlignmentPreference();
|
1387 |
+
|
1388 |
+
if(this.dropdown[0] !== this.body.children().last()[0]) {
|
1389 |
+
this.dropdown.detach().appendTo(this.body);
|
1390 |
+
}
|
1391 |
+
|
1392 |
+
// create the dropdown mask if doesn't already exist
|
1393 |
+
mask = $("#select2-drop-mask");
|
1394 |
+
if (mask.length == 0) {
|
1395 |
+
mask = $(document.createElement("div"));
|
1396 |
+
mask.attr("id","select2-drop-mask").attr("class","select2-drop-mask");
|
1397 |
+
mask.hide();
|
1398 |
+
mask.appendTo(this.body);
|
1399 |
+
mask.on("mousedown touchstart click", function (e) {
|
1400 |
+
// Prevent IE from generating a click event on the body
|
1401 |
+
reinsertElement(mask);
|
1402 |
+
|
1403 |
+
var dropdown = $("#select2-drop"), self;
|
1404 |
+
if (dropdown.length > 0) {
|
1405 |
+
self=dropdown.data("select2");
|
1406 |
+
if (self.opts.selectOnBlur) {
|
1407 |
+
self.selectHighlighted({noFocus: true});
|
1408 |
+
}
|
1409 |
+
self.close();
|
1410 |
+
e.preventDefault();
|
1411 |
+
e.stopPropagation();
|
1412 |
+
}
|
1413 |
+
});
|
1414 |
+
}
|
1415 |
+
|
1416 |
+
// ensure the mask is always right before the dropdown
|
1417 |
+
if (this.dropdown.prev()[0] !== mask[0]) {
|
1418 |
+
this.dropdown.before(mask);
|
1419 |
+
}
|
1420 |
+
|
1421 |
+
// move the global id to the correct dropdown
|
1422 |
+
$("#select2-drop").removeAttr("id");
|
1423 |
+
this.dropdown.attr("id", "select2-drop");
|
1424 |
+
|
1425 |
+
// show the elements
|
1426 |
+
mask.show();
|
1427 |
+
|
1428 |
+
this.positionDropdown();
|
1429 |
+
this.dropdown.show();
|
1430 |
+
this.positionDropdown();
|
1431 |
+
|
1432 |
+
this.dropdown.addClass("select2-drop-active");
|
1433 |
+
|
1434 |
+
// attach listeners to events that can change the position of the container and thus require
|
1435 |
+
// the position of the dropdown to be updated as well so it does not come unglued from the container
|
1436 |
+
var that = this;
|
1437 |
+
this.container.parents().add(window).each(function () {
|
1438 |
+
$(this).on(resize+" "+scroll+" "+orient, function (e) {
|
1439 |
+
if (that.opened()) that.positionDropdown();
|
1440 |
+
});
|
1441 |
+
});
|
1442 |
+
|
1443 |
+
|
1444 |
+
},
|
1445 |
+
|
1446 |
+
// abstract
|
1447 |
+
close: function () {
|
1448 |
+
if (!this.opened()) return;
|
1449 |
+
|
1450 |
+
var cid = this.containerEventName,
|
1451 |
+
scroll = "scroll." + cid,
|
1452 |
+
resize = "resize."+cid,
|
1453 |
+
orient = "orientationchange."+cid;
|
1454 |
+
|
1455 |
+
// unbind event listeners
|
1456 |
+
this.container.parents().add(window).each(function () { $(this).off(scroll).off(resize).off(orient); });
|
1457 |
+
|
1458 |
+
this.clearDropdownAlignmentPreference();
|
1459 |
+
|
1460 |
+
$("#select2-drop-mask").hide();
|
1461 |
+
this.dropdown.removeAttr("id"); // only the active dropdown has the select2-drop id
|
1462 |
+
this.dropdown.hide();
|
1463 |
+
this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active");
|
1464 |
+
this.results.empty();
|
1465 |
+
|
1466 |
+
// Now that the dropdown is closed, unbind the global document mousemove event
|
1467 |
+
$document.off("mousemove.select2Event");
|
1468 |
+
|
1469 |
+
this.clearSearch();
|
1470 |
+
this.search.removeClass("select2-active");
|
1471 |
+
this.opts.element.trigger($.Event("select2-close"));
|
1472 |
+
},
|
1473 |
+
|
1474 |
+
/**
|
1475 |
+
* Opens control, sets input value, and updates results.
|
1476 |
+
*/
|
1477 |
+
// abstract
|
1478 |
+
externalSearch: function (term) {
|
1479 |
+
this.open();
|
1480 |
+
this.search.val(term);
|
1481 |
+
this.updateResults(false);
|
1482 |
+
},
|
1483 |
+
|
1484 |
+
// abstract
|
1485 |
+
clearSearch: function () {
|
1486 |
+
|
1487 |
+
},
|
1488 |
+
|
1489 |
+
//abstract
|
1490 |
+
getMaximumSelectionSize: function() {
|
1491 |
+
return evaluate(this.opts.maximumSelectionSize, this.opts.element);
|
1492 |
+
},
|
1493 |
+
|
1494 |
+
// abstract
|
1495 |
+
ensureHighlightVisible: function () {
|
1496 |
+
var results = this.results, children, index, child, hb, rb, y, more, topOffset;
|
1497 |
+
|
1498 |
+
index = this.highlight();
|
1499 |
+
|
1500 |
+
if (index < 0) return;
|
1501 |
+
|
1502 |
+
if (index == 0) {
|
1503 |
+
|
1504 |
+
// if the first element is highlighted scroll all the way to the top,
|
1505 |
+
// that way any unselectable headers above it will also be scrolled
|
1506 |
+
// into view
|
1507 |
+
|
1508 |
+
results.scrollTop(0);
|
1509 |
+
return;
|
1510 |
+
}
|
1511 |
+
|
1512 |
+
children = this.findHighlightableChoices().find('.select2-result-label');
|
1513 |
+
|
1514 |
+
child = $(children[index]);
|
1515 |
+
|
1516 |
+
topOffset = (child.offset() || {}).top || 0;
|
1517 |
+
|
1518 |
+
hb = topOffset + child.outerHeight(true);
|
1519 |
+
|
1520 |
+
// if this is the last child lets also make sure select2-more-results is visible
|
1521 |
+
if (index === children.length - 1) {
|
1522 |
+
more = results.find("li.select2-more-results");
|
1523 |
+
if (more.length > 0) {
|
1524 |
+
hb = more.offset().top + more.outerHeight(true);
|
1525 |
+
}
|
1526 |
+
}
|
1527 |
+
|
1528 |
+
rb = results.offset().top + results.outerHeight(true);
|
1529 |
+
if (hb > rb) {
|
1530 |
+
results.scrollTop(results.scrollTop() + (hb - rb));
|
1531 |
+
}
|
1532 |
+
y = topOffset - results.offset().top;
|
1533 |
+
|
1534 |
+
// make sure the top of the element is visible
|
1535 |
+
if (y < 0 && child.css('display') != 'none' ) {
|
1536 |
+
results.scrollTop(results.scrollTop() + y); // y is negative
|
1537 |
+
}
|
1538 |
+
},
|
1539 |
+
|
1540 |
+
// abstract
|
1541 |
+
findHighlightableChoices: function() {
|
1542 |
+
return this.results.find(".select2-result-selectable:not(.select2-disabled):not(.select2-selected)");
|
1543 |
+
},
|
1544 |
+
|
1545 |
+
// abstract
|
1546 |
+
moveHighlight: function (delta) {
|
1547 |
+
var choices = this.findHighlightableChoices(),
|
1548 |
+
index = this.highlight();
|
1549 |
+
|
1550 |
+
while (index > -1 && index < choices.length) {
|
1551 |
+
index += delta;
|
1552 |
+
var choice = $(choices[index]);
|
1553 |
+
if (choice.hasClass("select2-result-selectable") && !choice.hasClass("select2-disabled") && !choice.hasClass("select2-selected")) {
|
1554 |
+
this.highlight(index);
|
1555 |
+
break;
|
1556 |
+
}
|
1557 |
+
}
|
1558 |
+
},
|
1559 |
+
|
1560 |
+
// abstract
|
1561 |
+
highlight: function (index) {
|
1562 |
+
var choices = this.findHighlightableChoices(),
|
1563 |
+
choice,
|
1564 |
+
data;
|
1565 |
+
|
1566 |
+
if (arguments.length === 0) {
|
1567 |
+
return indexOf(choices.filter(".select2-highlighted")[0], choices.get());
|
1568 |
+
}
|
1569 |
+
|
1570 |
+
if (index >= choices.length) index = choices.length - 1;
|
1571 |
+
if (index < 0) index = 0;
|
1572 |
+
|
1573 |
+
this.removeHighlight();
|
1574 |
+
|
1575 |
+
choice = $(choices[index]);
|
1576 |
+
choice.addClass("select2-highlighted");
|
1577 |
+
|
1578 |
+
// ensure assistive technology can determine the active choice
|
1579 |
+
this.search.attr("aria-activedescendant", choice.find(".select2-result-label").attr("id"));
|
1580 |
+
|
1581 |
+
this.ensureHighlightVisible();
|
1582 |
+
|
1583 |
+
this.liveRegion.text(choice.text());
|
1584 |
+
|
1585 |
+
data = choice.data("select2-data");
|
1586 |
+
if (data) {
|
1587 |
+
this.opts.element.trigger({ type: "select2-highlight", val: this.id(data), choice: data });
|
1588 |
+
}
|
1589 |
+
},
|
1590 |
+
|
1591 |
+
removeHighlight: function() {
|
1592 |
+
this.results.find(".select2-highlighted").removeClass("select2-highlighted");
|
1593 |
+
},
|
1594 |
+
|
1595 |
+
touchMoved: function() {
|
1596 |
+
this._touchMoved = true;
|
1597 |
+
},
|
1598 |
+
|
1599 |
+
clearTouchMoved: function() {
|
1600 |
+
this._touchMoved = false;
|
1601 |
+
},
|
1602 |
+
|
1603 |
+
// abstract
|
1604 |
+
countSelectableResults: function() {
|
1605 |
+
return this.findHighlightableChoices().length;
|
1606 |
+
},
|
1607 |
+
|
1608 |
+
// abstract
|
1609 |
+
highlightUnderEvent: function (event) {
|
1610 |
+
var el = $(event.target).closest(".select2-result-selectable");
|
1611 |
+
if (el.length > 0 && !el.is(".select2-highlighted")) {
|
1612 |
+
var choices = this.findHighlightableChoices();
|
1613 |
+
this.highlight(choices.index(el));
|
1614 |
+
} else if (el.length == 0) {
|
1615 |
+
// if we are over an unselectable item remove all highlights
|
1616 |
+
this.removeHighlight();
|
1617 |
+
}
|
1618 |
+
},
|
1619 |
+
|
1620 |
+
// abstract
|
1621 |
+
loadMoreIfNeeded: function () {
|
1622 |
+
var results = this.results,
|
1623 |
+
more = results.find("li.select2-more-results"),
|
1624 |
+
below, // pixels the element is below the scroll fold, below==0 is when the element is starting to be visible
|
1625 |
+
page = this.resultsPage + 1,
|
1626 |
+
self=this,
|
1627 |
+
term=this.search.val(),
|
1628 |
+
context=this.context;
|
1629 |
+
|
1630 |
+
if (more.length === 0) return;
|
1631 |
+
below = more.offset().top - results.offset().top - results.height();
|
1632 |
+
|
1633 |
+
if (below <= this.opts.loadMorePadding) {
|
1634 |
+
more.addClass("select2-active");
|
1635 |
+
this.opts.query({
|
1636 |
+
element: this.opts.element,
|
1637 |
+
term: term,
|
1638 |
+
page: page,
|
1639 |
+
context: context,
|
1640 |
+
matcher: this.opts.matcher,
|
1641 |
+
callback: this.bind(function (data) {
|
1642 |
+
|
1643 |
+
// ignore a response if the select2 has been closed before it was received
|
1644 |
+
if (!self.opened()) return;
|
1645 |
+
|
1646 |
+
|
1647 |
+
self.opts.populateResults.call(this, results, data.results, {term: term, page: page, context:context});
|
1648 |
+
self.postprocessResults(data, false, false);
|
1649 |
+
|
1650 |
+
if (data.more===true) {
|
1651 |
+
more.detach().appendTo(results).text(evaluate(self.opts.formatLoadMore, self.opts.element, page+1));
|
1652 |
+
window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
|
1653 |
+
} else {
|
1654 |
+
more.remove();
|
1655 |
+
}
|
1656 |
+
self.positionDropdown();
|
1657 |
+
self.resultsPage = page;
|
1658 |
+
self.context = data.context;
|
1659 |
+
this.opts.element.trigger({ type: "select2-loaded", items: data });
|
1660 |
+
})});
|
1661 |
+
}
|
1662 |
+
},
|
1663 |
+
|
1664 |
+
/**
|
1665 |
+
* Default tokenizer function which does nothing
|
1666 |
+
*/
|
1667 |
+
tokenize: function() {
|
1668 |
+
|
1669 |
+
},
|
1670 |
+
|
1671 |
+
/**
|
1672 |
+
* @param initial whether or not this is the call to this method right after the dropdown has been opened
|
1673 |
+
*/
|
1674 |
+
// abstract
|
1675 |
+
updateResults: function (initial) {
|
1676 |
+
var search = this.search,
|
1677 |
+
results = this.results,
|
1678 |
+
opts = this.opts,
|
1679 |
+
data,
|
1680 |
+
self = this,
|
1681 |
+
input,
|
1682 |
+
term = search.val(),
|
1683 |
+
lastTerm = $.data(this.container, "select2-last-term"),
|
1684 |
+
// sequence number used to drop out-of-order responses
|
1685 |
+
queryNumber;
|
1686 |
+
|
1687 |
+
// prevent duplicate queries against the same term
|
1688 |
+
if (initial !== true && lastTerm && equal(term, lastTerm)) return;
|
1689 |
+
|
1690 |
+
$.data(this.container, "select2-last-term", term);
|
1691 |
+
|
1692 |
+
// if the search is currently hidden we do not alter the results
|
1693 |
+
if (initial !== true && (this.showSearchInput === false || !this.opened())) {
|
1694 |
+
return;
|
1695 |
+
}
|
1696 |
+
|
1697 |
+
function postRender() {
|
1698 |
+
search.removeClass("select2-active");
|
1699 |
+
self.positionDropdown();
|
1700 |
+
if (results.find('.select2-no-results,.select2-selection-limit,.select2-searching').length) {
|
1701 |
+
self.liveRegion.text(results.text());
|
1702 |
+
}
|
1703 |
+
else {
|
1704 |
+
self.liveRegion.text(self.opts.formatMatches(results.find('.select2-result-selectable').length));
|
1705 |
+
}
|
1706 |
+
}
|
1707 |
+
|
1708 |
+
function render(html) {
|
1709 |
+
results.html(html);
|
1710 |
+
postRender();
|
1711 |
+
}
|
1712 |
+
|
1713 |
+
queryNumber = ++this.queryCount;
|
1714 |
+
|
1715 |
+
var maxSelSize = this.getMaximumSelectionSize();
|
1716 |
+
if (maxSelSize >=1) {
|
1717 |
+
data = this.data();
|
1718 |
+
if ($.isArray(data) && data.length >= maxSelSize && checkFormatter(opts.formatSelectionTooBig, "formatSelectionTooBig")) {
|
1719 |
+
render("<li class='select2-selection-limit'>" + evaluate(opts.formatSelectionTooBig, opts.element, maxSelSize) + "</li>");
|
1720 |
+
return;
|
1721 |
+
}
|
1722 |
+
}
|
1723 |
+
|
1724 |
+
if (search.val().length < opts.minimumInputLength) {
|
1725 |
+
if (checkFormatter(opts.formatInputTooShort, "formatInputTooShort")) {
|
1726 |
+
render("<li class='select2-no-results'>" + evaluate(opts.formatInputTooShort, opts.element, search.val(), opts.minimumInputLength) + "</li>");
|
1727 |
+
} else {
|
1728 |
+
render("");
|
1729 |
+
}
|
1730 |
+
if (initial && this.showSearch) this.showSearch(true);
|
1731 |
+
return;
|
1732 |
+
}
|
1733 |
+
|
1734 |
+
if (opts.maximumInputLength && search.val().length > opts.maximumInputLength) {
|
1735 |
+
if (checkFormatter(opts.formatInputTooLong, "formatInputTooLong")) {
|
1736 |
+
render("<li class='select2-no-results'>" + evaluate(opts.formatInputTooLong, opts.element, search.val(), opts.maximumInputLength) + "</li>");
|
1737 |
+
} else {
|
1738 |
+
render("");
|
1739 |
+
}
|
1740 |
+
return;
|
1741 |
+
}
|
1742 |
+
|
1743 |
+
if (opts.formatSearching && this.findHighlightableChoices().length === 0) {
|
1744 |
+
render("<li class='select2-searching'>" + evaluate(opts.formatSearching, opts.element) + "</li>");
|
1745 |
+
}
|
1746 |
+
|
1747 |
+
search.addClass("select2-active");
|
1748 |
+
|
1749 |
+
this.removeHighlight();
|
1750 |
+
|
1751 |
+
// give the tokenizer a chance to pre-process the input
|
1752 |
+
input = this.tokenize();
|
1753 |
+
if (input != undefined && input != null) {
|
1754 |
+
search.val(input);
|
1755 |
+
}
|
1756 |
+
|
1757 |
+
this.resultsPage = 1;
|
1758 |
+
|
1759 |
+
opts.query({
|
1760 |
+
element: opts.element,
|
1761 |
+
term: search.val(),
|
1762 |
+
page: this.resultsPage,
|
1763 |
+
context: null,
|
1764 |
+
matcher: opts.matcher,
|
1765 |
+
callback: this.bind(function (data) {
|
1766 |
+
var def; // default choice
|
1767 |
+
|
1768 |
+
// ignore old responses
|
1769 |
+
if (queryNumber != this.queryCount) {
|
1770 |
+
return;
|
1771 |
+
}
|
1772 |
+
|
1773 |
+
// ignore a response if the select2 has been closed before it was received
|
1774 |
+
if (!this.opened()) {
|
1775 |
+
this.search.removeClass("select2-active");
|
1776 |
+
return;
|
1777 |
+
}
|
1778 |
+
|
1779 |
+
// handle ajax error
|
1780 |
+
if(data.hasError !== undefined && checkFormatter(opts.formatAjaxError, "formatAjaxError")) {
|
1781 |
+
render("<li class='select2-ajax-error'>" + evaluate(opts.formatAjaxError, opts.element, data.jqXHR, data.textStatus, data.errorThrown) + "</li>");
|
1782 |
+
return;
|
1783 |
+
}
|
1784 |
+
|
1785 |
+
// save context, if any
|
1786 |
+
this.context = (data.context===undefined) ? null : data.context;
|
1787 |
+
// create a default choice and prepend it to the list
|
1788 |
+
if (this.opts.createSearchChoice && search.val() !== "") {
|
1789 |
+
def = this.opts.createSearchChoice.call(self, search.val(), data.results);
|
1790 |
+
if (def !== undefined && def !== null && self.id(def) !== undefined && self.id(def) !== null) {
|
1791 |
+
if ($(data.results).filter(
|
1792 |
+
function () {
|
1793 |
+
return equal(self.id(this), self.id(def));
|
1794 |
+
}).length === 0) {
|
1795 |
+
this.opts.createSearchChoicePosition(data.results, def);
|
1796 |
+
}
|
1797 |
+
}
|
1798 |
+
}
|
1799 |
+
|
1800 |
+
if (data.results.length === 0 && checkFormatter(opts.formatNoMatches, "formatNoMatches")) {
|
1801 |
+
render("<li class='select2-no-results'>" + evaluate(opts.formatNoMatches, opts.element, search.val()) + "</li>");
|
1802 |
+
return;
|
1803 |
+
}
|
1804 |
+
|
1805 |
+
results.empty();
|
1806 |
+
self.opts.populateResults.call(this, results, data.results, {term: search.val(), page: this.resultsPage, context:null});
|
1807 |
+
|
1808 |
+
if (data.more === true && checkFormatter(opts.formatLoadMore, "formatLoadMore")) {
|
1809 |
+
results.append("<li class='select2-more-results'>" + opts.escapeMarkup(evaluate(opts.formatLoadMore, opts.element, this.resultsPage)) + "</li>");
|
1810 |
+
window.setTimeout(function() { self.loadMoreIfNeeded(); }, 10);
|
1811 |
+
}
|
1812 |
+
|
1813 |
+
this.postprocessResults(data, initial);
|
1814 |
+
|
1815 |
+
postRender();
|
1816 |
+
|
1817 |
+
this.opts.element.trigger({ type: "select2-loaded", items: data });
|
1818 |
+
})});
|
1819 |
+
},
|
1820 |
+
|
1821 |
+
// abstract
|
1822 |
+
cancel: function () {
|
1823 |
+
this.close();
|
1824 |
+
},
|
1825 |
+
|
1826 |
+
// abstract
|
1827 |
+
blur: function () {
|
1828 |
+
// if selectOnBlur == true, select the currently highlighted option
|
1829 |
+
if (this.opts.selectOnBlur)
|
1830 |
+
this.selectHighlighted({noFocus: true});
|
1831 |
+
|
1832 |
+
this.close();
|
1833 |
+
this.container.removeClass("select2-container-active");
|
1834 |
+
// synonymous to .is(':focus'), which is available in jquery >= 1.6
|
1835 |
+
if (this.search[0] === document.activeElement) { this.search.blur(); }
|
1836 |
+
this.clearSearch();
|
1837 |
+
this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
|
1838 |
+
},
|
1839 |
+
|
1840 |
+
// abstract
|
1841 |
+
focusSearch: function () {
|
1842 |
+
focus(this.search);
|
1843 |
+
},
|
1844 |
+
|
1845 |
+
// abstract
|
1846 |
+
selectHighlighted: function (options) {
|
1847 |
+
if (this._touchMoved) {
|
1848 |
+
this.clearTouchMoved();
|
1849 |
+
return;
|
1850 |
+
}
|
1851 |
+
var index=this.highlight(),
|
1852 |
+
highlighted=this.results.find(".select2-highlighted"),
|
1853 |
+
data = highlighted.closest('.select2-result').data("select2-data");
|
1854 |
+
|
1855 |
+
if (data) {
|
1856 |
+
this.highlight(index);
|
1857 |
+
this.onSelect(data, options);
|
1858 |
+
} else if (options && options.noFocus) {
|
1859 |
+
this.close();
|
1860 |
+
}
|
1861 |
+
},
|
1862 |
+
|
1863 |
+
// abstract
|
1864 |
+
getPlaceholder: function () {
|
1865 |
+
var placeholderOption;
|
1866 |
+
return this.opts.element.attr("placeholder") ||
|
1867 |
+
this.opts.element.attr("data-placeholder") || // jquery 1.4 compat
|
1868 |
+
this.opts.element.data("placeholder") ||
|
1869 |
+
this.opts.placeholder ||
|
1870 |
+
((placeholderOption = this.getPlaceholderOption()) !== undefined ? placeholderOption.text() : undefined);
|
1871 |
+
},
|
1872 |
+
|
1873 |
+
// abstract
|
1874 |
+
getPlaceholderOption: function() {
|
1875 |
+
if (this.select) {
|
1876 |
+
var firstOption = this.select.children('option').first();
|
1877 |
+
if (this.opts.placeholderOption !== undefined ) {
|
1878 |
+
//Determine the placeholder option based on the specified placeholderOption setting
|
1879 |
+
return (this.opts.placeholderOption === "first" && firstOption) ||
|
1880 |
+
(typeof this.opts.placeholderOption === "function" && this.opts.placeholderOption(this.select));
|
1881 |
+
} else if ($.trim(firstOption.text()) === "" && firstOption.val() === "") {
|
1882 |
+
//No explicit placeholder option specified, use the first if it's blank
|
1883 |
+
return firstOption;
|
1884 |
+
}
|
1885 |
+
}
|
1886 |
+
},
|
1887 |
+
|
1888 |
+
/**
|
1889 |
+
* Get the desired width for the container element. This is
|
1890 |
+
* derived first from option `width` passed to select2, then
|
1891 |
+
* the inline 'style' on the original element, and finally
|
1892 |
+
* falls back to the jQuery calculated element width.
|
1893 |
+
*/
|
1894 |
+
// abstract
|
1895 |
+
initContainerWidth: function () {
|
1896 |
+
function resolveContainerWidth() {
|
1897 |
+
var style, attrs, matches, i, l, attr;
|
1898 |
+
|
1899 |
+
if (this.opts.width === "off") {
|
1900 |
+
return null;
|
1901 |
+
} else if (this.opts.width === "element"){
|
1902 |
+
return this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px';
|
1903 |
+
} else if (this.opts.width === "copy" || this.opts.width === "resolve") {
|
1904 |
+
// check if there is inline style on the element that contains width
|
1905 |
+
style = this.opts.element.attr('style');
|
1906 |
+
if (style !== undefined) {
|
1907 |
+
attrs = style.split(';');
|
1908 |
+
for (i = 0, l = attrs.length; i < l; i = i + 1) {
|
1909 |
+
attr = attrs[i].replace(/\s/g, '');
|
1910 |
+
matches = attr.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i);
|
1911 |
+
if (matches !== null && matches.length >= 1)
|
1912 |
+
return matches[1];
|
1913 |
+
}
|
1914 |
+
}
|
1915 |
+
|
1916 |
+
if (this.opts.width === "resolve") {
|
1917 |
+
// next check if css('width') can resolve a width that is percent based, this is sometimes possible
|
1918 |
+
// when attached to input type=hidden or elements hidden via css
|
1919 |
+
style = this.opts.element.css('width');
|
1920 |
+
if (style.indexOf("%") > 0) return style;
|
1921 |
+
|
1922 |
+
// finally, fallback on the calculated width of the element
|
1923 |
+
return (this.opts.element.outerWidth(false) === 0 ? 'auto' : this.opts.element.outerWidth(false) + 'px');
|
1924 |
+
}
|
1925 |
+
|
1926 |
+
return null;
|
1927 |
+
} else if ($.isFunction(this.opts.width)) {
|
1928 |
+
return this.opts.width();
|
1929 |
+
} else {
|
1930 |
+
return this.opts.width;
|
1931 |
+
}
|
1932 |
+
};
|
1933 |
+
|
1934 |
+
var width = resolveContainerWidth.call(this);
|
1935 |
+
if (width !== null) {
|
1936 |
+
this.container.css("width", width);
|
1937 |
+
}
|
1938 |
+
}
|
1939 |
+
});
|
1940 |
+
|
1941 |
+
SingleSelect2 = clazz(AbstractSelect2, {
|
1942 |
+
|
1943 |
+
// single
|
1944 |
+
|
1945 |
+
createContainer: function () {
|
1946 |
+
var container = $(document.createElement("div")).attr({
|
1947 |
+
"class": "select2-container"
|
1948 |
+
}).html([
|
1949 |
+
"<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>",
|
1950 |
+
" <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>",
|
1951 |
+
" <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>",
|
1952 |
+
"</a>",
|
1953 |
+
"<label for='' class='select2-offscreen'></label>",
|
1954 |
+
"<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />",
|
1955 |
+
"<div class='select2-drop select2-display-none'>",
|
1956 |
+
" <div class='select2-search'>",
|
1957 |
+
" <label for='' class='select2-offscreen'></label>",
|
1958 |
+
" <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'",
|
1959 |
+
" aria-autocomplete='list' />",
|
1960 |
+
" </div>",
|
1961 |
+
" <ul class='select2-results' role='listbox'>",
|
1962 |
+
" </ul>",
|
1963 |
+
"</div>"].join(""));
|
1964 |
+
return container;
|
1965 |
+
},
|
1966 |
+
|
1967 |
+
// single
|
1968 |
+
enableInterface: function() {
|
1969 |
+
if (this.parent.enableInterface.apply(this, arguments)) {
|
1970 |
+
this.focusser.prop("disabled", !this.isInterfaceEnabled());
|
1971 |
+
}
|
1972 |
+
},
|
1973 |
+
|
1974 |
+
// single
|
1975 |
+
opening: function () {
|
1976 |
+
var el, range, len;
|
1977 |
+
|
1978 |
+
if (this.opts.minimumResultsForSearch >= 0) {
|
1979 |
+
this.showSearch(true);
|
1980 |
+
}
|
1981 |
+
|
1982 |
+
this.parent.opening.apply(this, arguments);
|
1983 |
+
|
1984 |
+
if (this.showSearchInput !== false) {
|
1985 |
+
// IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range
|
1986 |
+
// all other browsers handle this just fine
|
1987 |
+
|
1988 |
+
this.search.val(this.focusser.val());
|
1989 |
+
}
|
1990 |
+
if (this.opts.shouldFocusInput(this)) {
|
1991 |
+
this.search.focus();
|
1992 |
+
// move the cursor to the end after focussing, otherwise it will be at the beginning and
|
1993 |
+
// new text will appear *before* focusser.val()
|
1994 |
+
el = this.search.get(0);
|
1995 |
+
if (el.createTextRange) {
|
1996 |
+
range = el.createTextRange();
|
1997 |
+
range.collapse(false);
|
1998 |
+
range.select();
|
1999 |
+
} else if (el.setSelectionRange) {
|
2000 |
+
len = this.search.val().length;
|
2001 |
+
el.setSelectionRange(len, len);
|
2002 |
+
}
|
2003 |
+
}
|
2004 |
+
|
2005 |
+
// initializes search's value with nextSearchTerm (if defined by user)
|
2006 |
+
// ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
|
2007 |
+
if(this.search.val() === "") {
|
2008 |
+
if(this.nextSearchTerm != undefined){
|
2009 |
+
this.search.val(this.nextSearchTerm);
|
2010 |
+
this.search.select();
|
2011 |
+
}
|
2012 |
+
}
|
2013 |
+
|
2014 |
+
this.focusser.prop("disabled", true).val("");
|
2015 |
+
this.updateResults(true);
|
2016 |
+
this.opts.element.trigger($.Event("select2-open"));
|
2017 |
+
},
|
2018 |
+
|
2019 |
+
// single
|
2020 |
+
close: function () {
|
2021 |
+
if (!this.opened()) return;
|
2022 |
+
this.parent.close.apply(this, arguments);
|
2023 |
+
|
2024 |
+
this.focusser.prop("disabled", false);
|
2025 |
+
|
2026 |
+
if (this.opts.shouldFocusInput(this)) {
|
2027 |
+
this.focusser.focus();
|
2028 |
+
}
|
2029 |
+
},
|
2030 |
+
|
2031 |
+
// single
|
2032 |
+
focus: function () {
|
2033 |
+
if (this.opened()) {
|
2034 |
+
this.close();
|
2035 |
+
} else {
|
2036 |
+
this.focusser.prop("disabled", false);
|
2037 |
+
if (this.opts.shouldFocusInput(this)) {
|
2038 |
+
this.focusser.focus();
|
2039 |
+
}
|
2040 |
+
}
|
2041 |
+
},
|
2042 |
+
|
2043 |
+
// single
|
2044 |
+
isFocused: function () {
|
2045 |
+
return this.container.hasClass("select2-container-active");
|
2046 |
+
},
|
2047 |
+
|
2048 |
+
// single
|
2049 |
+
cancel: function () {
|
2050 |
+
this.parent.cancel.apply(this, arguments);
|
2051 |
+
this.focusser.prop("disabled", false);
|
2052 |
+
|
2053 |
+
if (this.opts.shouldFocusInput(this)) {
|
2054 |
+
this.focusser.focus();
|
2055 |
+
}
|
2056 |
+
},
|
2057 |
+
|
2058 |
+
// single
|
2059 |
+
destroy: function() {
|
2060 |
+
$("label[for='" + this.focusser.attr('id') + "']")
|
2061 |
+
.attr('for', this.opts.element.attr("id"));
|
2062 |
+
this.parent.destroy.apply(this, arguments);
|
2063 |
+
|
2064 |
+
cleanupJQueryElements.call(this,
|
2065 |
+
"selection",
|
2066 |
+
"focusser"
|
2067 |
+
);
|
2068 |
+
},
|
2069 |
+
|
2070 |
+
// single
|
2071 |
+
initContainer: function () {
|
2072 |
+
|
2073 |
+
var selection,
|
2074 |
+
container = this.container,
|
2075 |
+
dropdown = this.dropdown,
|
2076 |
+
idSuffix = nextUid(),
|
2077 |
+
elementLabel;
|
2078 |
+
|
2079 |
+
if (this.opts.minimumResultsForSearch < 0) {
|
2080 |
+
this.showSearch(false);
|
2081 |
+
} else {
|
2082 |
+
this.showSearch(true);
|
2083 |
+
}
|
2084 |
+
|
2085 |
+
this.selection = selection = container.find(".select2-choice");
|
2086 |
+
|
2087 |
+
this.focusser = container.find(".select2-focusser");
|
2088 |
+
|
2089 |
+
// add aria associations
|
2090 |
+
selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix);
|
2091 |
+
this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix);
|
2092 |
+
this.results.attr("id", "select2-results-"+idSuffix);
|
2093 |
+
this.search.attr("aria-owns", "select2-results-"+idSuffix);
|
2094 |
+
|
2095 |
+
// rewrite labels from original element to focusser
|
2096 |
+
this.focusser.attr("id", "s2id_autogen"+idSuffix);
|
2097 |
+
|
2098 |
+
elementLabel = $("label[for='" + this.opts.element.attr("id") + "']");
|
2099 |
+
|
2100 |
+
this.focusser.prev()
|
2101 |
+
.text(elementLabel.text())
|
2102 |
+
.attr('for', this.focusser.attr('id'));
|
2103 |
+
|
2104 |
+
// Ensure the original element retains an accessible name
|
2105 |
+
var originalTitle = this.opts.element.attr("title");
|
2106 |
+
this.opts.element.attr("title", (originalTitle || elementLabel.text()));
|
2107 |
+
|
2108 |
+
this.focusser.attr("tabindex", this.elementTabIndex);
|
2109 |
+
|
2110 |
+
// write label for search field using the label from the focusser element
|
2111 |
+
this.search.attr("id", this.focusser.attr('id') + '_search');
|
2112 |
+
|
2113 |
+
this.search.prev()
|
2114 |
+
.text($("label[for='" + this.focusser.attr('id') + "']").text())
|
2115 |
+
.attr('for', this.search.attr('id'));
|
2116 |
+
|
2117 |
+
this.search.on("keydown", this.bind(function (e) {
|
2118 |
+
if (!this.isInterfaceEnabled()) return;
|
2119 |
+
|
2120 |
+
// filter 229 keyCodes (input method editor is processing key input)
|
2121 |
+
if (229 == e.keyCode) return;
|
2122 |
+
|
2123 |
+
if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
|
2124 |
+
// prevent the page from scrolling
|
2125 |
+
killEvent(e);
|
2126 |
+
return;
|
2127 |
+
}
|
2128 |
+
|
2129 |
+
switch (e.which) {
|
2130 |
+
case KEY.UP:
|
2131 |
+
case KEY.DOWN:
|
2132 |
+
this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
|
2133 |
+
killEvent(e);
|
2134 |
+
return;
|
2135 |
+
case KEY.ENTER:
|
2136 |
+
this.selectHighlighted();
|
2137 |
+
killEvent(e);
|
2138 |
+
return;
|
2139 |
+
case KEY.TAB:
|
2140 |
+
this.selectHighlighted({noFocus: true});
|
2141 |
+
return;
|
2142 |
+
case KEY.ESC:
|
2143 |
+
this.cancel(e);
|
2144 |
+
killEvent(e);
|
2145 |
+
return;
|
2146 |
+
}
|
2147 |
+
}));
|
2148 |
+
|
2149 |
+
this.search.on("blur", this.bind(function(e) {
|
2150 |
+
// a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown.
|
2151 |
+
// without this the search field loses focus which is annoying
|
2152 |
+
if (document.activeElement === this.body.get(0)) {
|
2153 |
+
window.setTimeout(this.bind(function() {
|
2154 |
+
if (this.opened()) {
|
2155 |
+
this.search.focus();
|
2156 |
+
}
|
2157 |
+
}), 0);
|
2158 |
+
}
|
2159 |
+
}));
|
2160 |
+
|
2161 |
+
this.focusser.on("keydown", this.bind(function (e) {
|
2162 |
+
if (!this.isInterfaceEnabled()) return;
|
2163 |
+
|
2164 |
+
if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
|
2165 |
+
return;
|
2166 |
+
}
|
2167 |
+
|
2168 |
+
if (this.opts.openOnEnter === false && e.which === KEY.ENTER) {
|
2169 |
+
killEvent(e);
|
2170 |
+
return;
|
2171 |
+
}
|
2172 |
+
|
2173 |
+
if (e.which == KEY.DOWN || e.which == KEY.UP
|
2174 |
+
|| (e.which == KEY.ENTER && this.opts.openOnEnter)) {
|
2175 |
+
|
2176 |
+
if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return;
|
2177 |
+
|
2178 |
+
this.open();
|
2179 |
+
killEvent(e);
|
2180 |
+
return;
|
2181 |
+
}
|
2182 |
+
|
2183 |
+
if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) {
|
2184 |
+
if (this.opts.allowClear) {
|
2185 |
+
this.clear();
|
2186 |
+
}
|
2187 |
+
killEvent(e);
|
2188 |
+
return;
|
2189 |
+
}
|
2190 |
+
}));
|
2191 |
+
|
2192 |
+
|
2193 |
+
installKeyUpChangeEvent(this.focusser);
|
2194 |
+
this.focusser.on("keyup-change input", this.bind(function(e) {
|
2195 |
+
if (this.opts.minimumResultsForSearch >= 0) {
|
2196 |
+
e.stopPropagation();
|
2197 |
+
if (this.opened()) return;
|
2198 |
+
this.open();
|
2199 |
+
}
|
2200 |
+
}));
|
2201 |
+
|
2202 |
+
selection.on("mousedown touchstart", "abbr", this.bind(function (e) {
|
2203 |
+
if (!this.isInterfaceEnabled()) return;
|
2204 |
+
this.clear();
|
2205 |
+
killEventImmediately(e);
|
2206 |
+
this.close();
|
2207 |
+
this.selection.focus();
|
2208 |
+
}));
|
2209 |
+
|
2210 |
+
selection.on("mousedown touchstart", this.bind(function (e) {
|
2211 |
+
// Prevent IE from generating a click event on the body
|
2212 |
+
reinsertElement(selection);
|
2213 |
+
|
2214 |
+
if (!this.container.hasClass("select2-container-active")) {
|
2215 |
+
this.opts.element.trigger($.Event("select2-focus"));
|
2216 |
+
}
|
2217 |
+
|
2218 |
+
if (this.opened()) {
|
2219 |
+
this.close();
|
2220 |
+
} else if (this.isInterfaceEnabled()) {
|
2221 |
+
this.open();
|
2222 |
+
}
|
2223 |
+
|
2224 |
+
killEvent(e);
|
2225 |
+
}));
|
2226 |
+
|
2227 |
+
dropdown.on("mousedown touchstart", this.bind(function() {
|
2228 |
+
if (this.opts.shouldFocusInput(this)) {
|
2229 |
+
this.search.focus();
|
2230 |
+
}
|
2231 |
+
}));
|
2232 |
+
|
2233 |
+
selection.on("focus", this.bind(function(e) {
|
2234 |
+
killEvent(e);
|
2235 |
+
}));
|
2236 |
+
|
2237 |
+
this.focusser.on("focus", this.bind(function(){
|
2238 |
+
if (!this.container.hasClass("select2-container-active")) {
|
2239 |
+
this.opts.element.trigger($.Event("select2-focus"));
|
2240 |
+
}
|
2241 |
+
this.container.addClass("select2-container-active");
|
2242 |
+
})).on("blur", this.bind(function() {
|
2243 |
+
if (!this.opened()) {
|
2244 |
+
this.container.removeClass("select2-container-active");
|
2245 |
+
this.opts.element.trigger($.Event("select2-blur"));
|
2246 |
+
}
|
2247 |
+
}));
|
2248 |
+
this.search.on("focus", this.bind(function(){
|
2249 |
+
if (!this.container.hasClass("select2-container-active")) {
|
2250 |
+
this.opts.element.trigger($.Event("select2-focus"));
|
2251 |
+
}
|
2252 |
+
this.container.addClass("select2-container-active");
|
2253 |
+
}));
|
2254 |
+
|
2255 |
+
this.initContainerWidth();
|
2256 |
+
this.opts.element.addClass("select2-offscreen");
|
2257 |
+
this.setPlaceholder();
|
2258 |
+
|
2259 |
+
},
|
2260 |
+
|
2261 |
+
// single
|
2262 |
+
clear: function(triggerChange) {
|
2263 |
+
var data=this.selection.data("select2-data");
|
2264 |
+
if (data) { // guard against queued quick consecutive clicks
|
2265 |
+
var evt = $.Event("select2-clearing");
|
2266 |
+
this.opts.element.trigger(evt);
|
2267 |
+
if (evt.isDefaultPrevented()) {
|
2268 |
+
return;
|
2269 |
+
}
|
2270 |
+
var placeholderOption = this.getPlaceholderOption();
|
2271 |
+
this.opts.element.val(placeholderOption ? placeholderOption.val() : "");
|
2272 |
+
this.selection.find(".select2-chosen").empty();
|
2273 |
+
this.selection.removeData("select2-data");
|
2274 |
+
this.setPlaceholder();
|
2275 |
+
|
2276 |
+
if (triggerChange !== false){
|
2277 |
+
this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
|
2278 |
+
this.triggerChange({removed:data});
|
2279 |
+
}
|
2280 |
+
}
|
2281 |
+
},
|
2282 |
+
|
2283 |
+
/**
|
2284 |
+
* Sets selection based on source element's value
|
2285 |
+
*/
|
2286 |
+
// single
|
2287 |
+
initSelection: function () {
|
2288 |
+
var selected;
|
2289 |
+
if (this.isPlaceholderOptionSelected()) {
|
2290 |
+
this.updateSelection(null);
|
2291 |
+
this.close();
|
2292 |
+
this.setPlaceholder();
|
2293 |
+
} else {
|
2294 |
+
var self = this;
|
2295 |
+
this.opts.initSelection.call(null, this.opts.element, function(selected){
|
2296 |
+
if (selected !== undefined && selected !== null) {
|
2297 |
+
self.updateSelection(selected);
|
2298 |
+
self.close();
|
2299 |
+
self.setPlaceholder();
|
2300 |
+
self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val());
|
2301 |
+
}
|
2302 |
+
});
|
2303 |
+
}
|
2304 |
+
},
|
2305 |
+
|
2306 |
+
isPlaceholderOptionSelected: function() {
|
2307 |
+
var placeholderOption;
|
2308 |
+
if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered
|
2309 |
+
return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected"))
|
2310 |
+
|| (this.opts.element.val() === "")
|
2311 |
+
|| (this.opts.element.val() === undefined)
|
2312 |
+
|| (this.opts.element.val() === null);
|
2313 |
+
},
|
2314 |
+
|
2315 |
+
// single
|
2316 |
+
prepareOpts: function () {
|
2317 |
+
var opts = this.parent.prepareOpts.apply(this, arguments),
|
2318 |
+
self=this;
|
2319 |
+
|
2320 |
+
if (opts.element.get(0).tagName.toLowerCase() === "select") {
|
2321 |
+
// install the selection initializer
|
2322 |
+
opts.initSelection = function (element, callback) {
|
2323 |
+
var selected = element.find("option").filter(function() { return this.selected && !this.disabled });
|
2324 |
+
// a single select box always has a value, no need to null check 'selected'
|
2325 |
+
callback(self.optionToData(selected));
|
2326 |
+
};
|
2327 |
+
} else if ("data" in opts) {
|
2328 |
+
// install default initSelection when applied to hidden input and data is local
|
2329 |
+
opts.initSelection = opts.initSelection || function (element, callback) {
|
2330 |
+
var id = element.val();
|
2331 |
+
//search in data by id, storing the actual matching item
|
2332 |
+
var match = null;
|
2333 |
+
opts.query({
|
2334 |
+
matcher: function(term, text, el){
|
2335 |
+
var is_match = equal(id, opts.id(el));
|
2336 |
+
if (is_match) {
|
2337 |
+
match = el;
|
2338 |
+
}
|
2339 |
+
return is_match;
|
2340 |
+
},
|
2341 |
+
callback: !$.isFunction(callback) ? $.noop : function() {
|
2342 |
+
callback(match);
|
2343 |
+
}
|
2344 |
+
});
|
2345 |
+
};
|
2346 |
+
}
|
2347 |
+
|
2348 |
+
return opts;
|
2349 |
+
},
|
2350 |
+
|
2351 |
+
// single
|
2352 |
+
getPlaceholder: function() {
|
2353 |
+
// if a placeholder is specified on a single select without a valid placeholder option ignore it
|
2354 |
+
if (this.select) {
|
2355 |
+
if (this.getPlaceholderOption() === undefined) {
|
2356 |
+
return undefined;
|
2357 |
+
}
|
2358 |
+
}
|
2359 |
+
|
2360 |
+
return this.parent.getPlaceholder.apply(this, arguments);
|
2361 |
+
},
|
2362 |
+
|
2363 |
+
// single
|
2364 |
+
setPlaceholder: function () {
|
2365 |
+
var placeholder = this.getPlaceholder();
|
2366 |
+
|
2367 |
+
if (this.isPlaceholderOptionSelected() && placeholder !== undefined) {
|
2368 |
+
|
2369 |
+
// check for a placeholder option if attached to a select
|
2370 |
+
if (this.select && this.getPlaceholderOption() === undefined) return;
|
2371 |
+
|
2372 |
+
this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder));
|
2373 |
+
|
2374 |
+
this.selection.addClass("select2-default");
|
2375 |
+
|
2376 |
+
this.container.removeClass("select2-allowclear");
|
2377 |
+
}
|
2378 |
+
},
|
2379 |
+
|
2380 |
+
// single
|
2381 |
+
postprocessResults: function (data, initial, noHighlightUpdate) {
|
2382 |
+
var selected = 0, self = this, showSearchInput = true;
|
2383 |
+
|
2384 |
+
// find the selected element in the result list
|
2385 |
+
|
2386 |
+
this.findHighlightableChoices().each2(function (i, elm) {
|
2387 |
+
if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) {
|
2388 |
+
selected = i;
|
2389 |
+
return false;
|
2390 |
+
}
|
2391 |
+
});
|
2392 |
+
|
2393 |
+
// and highlight it
|
2394 |
+
if (noHighlightUpdate !== false) {
|
2395 |
+
if (initial === true && selected >= 0) {
|
2396 |
+
this.highlight(selected);
|
2397 |
+
} else {
|
2398 |
+
this.highlight(0);
|
2399 |
+
}
|
2400 |
+
}
|
2401 |
+
|
2402 |
+
// hide the search box if this is the first we got the results and there are enough of them for search
|
2403 |
+
|
2404 |
+
if (initial === true) {
|
2405 |
+
var min = this.opts.minimumResultsForSearch;
|
2406 |
+
if (min >= 0) {
|
2407 |
+
this.showSearch(countResults(data.results) >= min);
|
2408 |
+
}
|
2409 |
+
}
|
2410 |
+
},
|
2411 |
+
|
2412 |
+
// single
|
2413 |
+
showSearch: function(showSearchInput) {
|
2414 |
+
if (this.showSearchInput === showSearchInput) return;
|
2415 |
+
|
2416 |
+
this.showSearchInput = showSearchInput;
|
2417 |
+
|
2418 |
+
this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput);
|
2419 |
+
this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput);
|
2420 |
+
//add "select2-with-searchbox" to the container if search box is shown
|
2421 |
+
$(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput);
|
2422 |
+
},
|
2423 |
+
|
2424 |
+
// single
|
2425 |
+
onSelect: function (data, options) {
|
2426 |
+
|
2427 |
+
if (!this.triggerSelect(data)) { return; }
|
2428 |
+
|
2429 |
+
var old = this.opts.element.val(),
|
2430 |
+
oldData = this.data();
|
2431 |
+
|
2432 |
+
this.opts.element.val(this.id(data));
|
2433 |
+
this.updateSelection(data);
|
2434 |
+
|
2435 |
+
this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data });
|
2436 |
+
|
2437 |
+
this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
|
2438 |
+
this.close();
|
2439 |
+
|
2440 |
+
if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) {
|
2441 |
+
this.focusser.focus();
|
2442 |
+
}
|
2443 |
+
|
2444 |
+
if (!equal(old, this.id(data))) {
|
2445 |
+
this.triggerChange({ added: data, removed: oldData });
|
2446 |
+
}
|
2447 |
+
},
|
2448 |
+
|
2449 |
+
// single
|
2450 |
+
updateSelection: function (data) {
|
2451 |
+
|
2452 |
+
var container=this.selection.find(".select2-chosen"), formatted, cssClass;
|
2453 |
+
|
2454 |
+
this.selection.data("select2-data", data);
|
2455 |
+
|
2456 |
+
container.empty();
|
2457 |
+
if (data !== null) {
|
2458 |
+
formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup);
|
2459 |
+
}
|
2460 |
+
if (formatted !== undefined) {
|
2461 |
+
container.append(formatted);
|
2462 |
+
}
|
2463 |
+
cssClass=this.opts.formatSelectionCssClass(data, container);
|
2464 |
+
if (cssClass !== undefined) {
|
2465 |
+
container.addClass(cssClass);
|
2466 |
+
}
|
2467 |
+
|
2468 |
+
this.selection.removeClass("select2-default");
|
2469 |
+
|
2470 |
+
if (this.opts.allowClear && this.getPlaceholder() !== undefined) {
|
2471 |
+
this.container.addClass("select2-allowclear");
|
2472 |
+
}
|
2473 |
+
},
|
2474 |
+
|
2475 |
+
// single
|
2476 |
+
val: function () {
|
2477 |
+
var val,
|
2478 |
+
triggerChange = false,
|
2479 |
+
data = null,
|
2480 |
+
self = this,
|
2481 |
+
oldData = this.data();
|
2482 |
+
|
2483 |
+
if (arguments.length === 0) {
|
2484 |
+
return this.opts.element.val();
|
2485 |
+
}
|
2486 |
+
|
2487 |
+
val = arguments[0];
|
2488 |
+
|
2489 |
+
if (arguments.length > 1) {
|
2490 |
+
triggerChange = arguments[1];
|
2491 |
+
}
|
2492 |
+
|
2493 |
+
if (this.select) {
|
2494 |
+
this.select
|
2495 |
+
.val(val)
|
2496 |
+
.find("option").filter(function() { return this.selected }).each2(function (i, elm) {
|
2497 |
+
data = self.optionToData(elm);
|
2498 |
+
return false;
|
2499 |
+
});
|
2500 |
+
this.updateSelection(data);
|
2501 |
+
this.setPlaceholder();
|
2502 |
+
if (triggerChange) {
|
2503 |
+
this.triggerChange({added: data, removed:oldData});
|
2504 |
+
}
|
2505 |
+
} else {
|
2506 |
+
// val is an id. !val is true for [undefined,null,'',0] - 0 is legal
|
2507 |
+
if (!val && val !== 0) {
|
2508 |
+
this.clear(triggerChange);
|
2509 |
+
return;
|
2510 |
+
}
|
2511 |
+
if (this.opts.initSelection === undefined) {
|
2512 |
+
throw new Error("cannot call val() if initSelection() is not defined");
|
2513 |
+
}
|
2514 |
+
this.opts.element.val(val);
|
2515 |
+
this.opts.initSelection(this.opts.element, function(data){
|
2516 |
+
self.opts.element.val(!data ? "" : self.id(data));
|
2517 |
+
self.updateSelection(data);
|
2518 |
+
self.setPlaceholder();
|
2519 |
+
if (triggerChange) {
|
2520 |
+
self.triggerChange({added: data, removed:oldData});
|
2521 |
+
}
|
2522 |
+
});
|
2523 |
+
}
|
2524 |
+
},
|
2525 |
+
|
2526 |
+
// single
|
2527 |
+
clearSearch: function () {
|
2528 |
+
this.search.val("");
|
2529 |
+
this.focusser.val("");
|
2530 |
+
},
|
2531 |
+
|
2532 |
+
// single
|
2533 |
+
data: function(value) {
|
2534 |
+
var data,
|
2535 |
+
triggerChange = false;
|
2536 |
+
|
2537 |
+
if (arguments.length === 0) {
|
2538 |
+
data = this.selection.data("select2-data");
|
2539 |
+
if (data == undefined) data = null;
|
2540 |
+
return data;
|
2541 |
+
} else {
|
2542 |
+
if (arguments.length > 1) {
|
2543 |
+
triggerChange = arguments[1];
|
2544 |
+
}
|
2545 |
+
if (!value) {
|
2546 |
+
this.clear(triggerChange);
|
2547 |
+
} else {
|
2548 |
+
data = this.data();
|
2549 |
+
this.opts.element.val(!value ? "" : this.id(value));
|
2550 |
+
this.updateSelection(value);
|
2551 |
+
if (triggerChange) {
|
2552 |
+
this.triggerChange({added: value, removed:data});
|
2553 |
+
}
|
2554 |
+
}
|
2555 |
+
}
|
2556 |
+
}
|
2557 |
+
});
|
2558 |
+
|
2559 |
+
MultiSelect2 = clazz(AbstractSelect2, {
|
2560 |
+
|
2561 |
+
// multi
|
2562 |
+
createContainer: function () {
|
2563 |
+
var container = $(document.createElement("div")).attr({
|
2564 |
+
"class": "select2-container select2-container-multi"
|
2565 |
+
}).html([
|
2566 |
+
"<ul class='select2-choices'>",
|
2567 |
+
" <li class='select2-search-field'>",
|
2568 |
+
" <label for='' class='select2-offscreen'></label>",
|
2569 |
+
" <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>",
|
2570 |
+
" </li>",
|
2571 |
+
"</ul>",
|
2572 |
+
"<div class='select2-drop select2-drop-multi select2-display-none'>",
|
2573 |
+
" <ul class='select2-results'>",
|
2574 |
+
" </ul>",
|
2575 |
+
"</div>"].join(""));
|
2576 |
+
return container;
|
2577 |
+
},
|
2578 |
+
|
2579 |
+
// multi
|
2580 |
+
prepareOpts: function () {
|
2581 |
+
var opts = this.parent.prepareOpts.apply(this, arguments),
|
2582 |
+
self=this;
|
2583 |
+
|
2584 |
+
// TODO validate placeholder is a string if specified
|
2585 |
+
|
2586 |
+
if (opts.element.get(0).tagName.toLowerCase() === "select") {
|
2587 |
+
// install the selection initializer
|
2588 |
+
opts.initSelection = function (element, callback) {
|
2589 |
+
|
2590 |
+
var data = [];
|
2591 |
+
|
2592 |
+
element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) {
|
2593 |
+
data.push(self.optionToData(elm));
|
2594 |
+
});
|
2595 |
+
callback(data);
|
2596 |
+
};
|
2597 |
+
} else if ("data" in opts) {
|
2598 |
+
// install default initSelection when applied to hidden input and data is local
|
2599 |
+
opts.initSelection = opts.initSelection || function (element, callback) {
|
2600 |
+
var ids = splitVal(element.val(), opts.separator);
|
2601 |
+
//search in data by array of ids, storing matching items in a list
|
2602 |
+
var matches = [];
|
2603 |
+
opts.query({
|
2604 |
+
matcher: function(term, text, el){
|
2605 |
+
var is_match = $.grep(ids, function(id) {
|
2606 |
+
return equal(id, opts.id(el));
|
2607 |
+
}).length;
|
2608 |
+
if (is_match) {
|
2609 |
+
matches.push(el);
|
2610 |
+
}
|
2611 |
+
return is_match;
|
2612 |
+
},
|
2613 |
+
callback: !$.isFunction(callback) ? $.noop : function() {
|
2614 |
+
// reorder matches based on the order they appear in the ids array because right now
|
2615 |
+
// they are in the order in which they appear in data array
|
2616 |
+
var ordered = [];
|
2617 |
+
for (var i = 0; i < ids.length; i++) {
|
2618 |
+
var id = ids[i];
|
2619 |
+
for (var j = 0; j < matches.length; j++) {
|
2620 |
+
var match = matches[j];
|
2621 |
+
if (equal(id, opts.id(match))) {
|
2622 |
+
ordered.push(match);
|
2623 |
+
matches.splice(j, 1);
|
2624 |
+
break;
|
2625 |
+
}
|
2626 |
+
}
|
2627 |
+
}
|
2628 |
+
callback(ordered);
|
2629 |
+
}
|
2630 |
+
});
|
2631 |
+
};
|
2632 |
+
}
|
2633 |
+
|
2634 |
+
return opts;
|
2635 |
+
},
|
2636 |
+
|
2637 |
+
// multi
|
2638 |
+
selectChoice: function (choice) {
|
2639 |
+
|
2640 |
+
var selected = this.container.find(".select2-search-choice-focus");
|
2641 |
+
if (selected.length && choice && choice[0] == selected[0]) {
|
2642 |
+
|
2643 |
+
} else {
|
2644 |
+
if (selected.length) {
|
2645 |
+
this.opts.element.trigger("choice-deselected", selected);
|
2646 |
+
}
|
2647 |
+
selected.removeClass("select2-search-choice-focus");
|
2648 |
+
if (choice && choice.length) {
|
2649 |
+
this.close();
|
2650 |
+
choice.addClass("select2-search-choice-focus");
|
2651 |
+
this.opts.element.trigger("choice-selected", choice);
|
2652 |
+
}
|
2653 |
+
}
|
2654 |
+
},
|
2655 |
+
|
2656 |
+
// multi
|
2657 |
+
destroy: function() {
|
2658 |
+
$("label[for='" + this.search.attr('id') + "']")
|
2659 |
+
.attr('for', this.opts.element.attr("id"));
|
2660 |
+
this.parent.destroy.apply(this, arguments);
|
2661 |
+
|
2662 |
+
cleanupJQueryElements.call(this,
|
2663 |
+
"searchContainer",
|
2664 |
+
"selection"
|
2665 |
+
);
|
2666 |
+
},
|
2667 |
+
|
2668 |
+
// multi
|
2669 |
+
initContainer: function () {
|
2670 |
+
|
2671 |
+
var selector = ".select2-choices", selection;
|
2672 |
+
|
2673 |
+
this.searchContainer = this.container.find(".select2-search-field");
|
2674 |
+
this.selection = selection = this.container.find(selector);
|
2675 |
+
|
2676 |
+
var _this = this;
|
2677 |
+
this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) {
|
2678 |
+
//killEvent(e);
|
2679 |
+
_this.search[0].focus();
|
2680 |
+
_this.selectChoice($(this));
|
2681 |
+
});
|
2682 |
+
|
2683 |
+
// rewrite labels from original element to focusser
|
2684 |
+
this.search.attr("id", "s2id_autogen"+nextUid());
|
2685 |
+
|
2686 |
+
this.search.prev()
|
2687 |
+
.text($("label[for='" + this.opts.element.attr("id") + "']").text())
|
2688 |
+
.attr('for', this.search.attr('id'));
|
2689 |
+
|
2690 |
+
this.search.on("input paste", this.bind(function() {
|
2691 |
+
if (this.search.attr('placeholder') && this.search.val().length == 0) return;
|
2692 |
+
if (!this.isInterfaceEnabled()) return;
|
2693 |
+
if (!this.opened()) {
|
2694 |
+
this.open();
|
2695 |
+
}
|
2696 |
+
}));
|
2697 |
+
|
2698 |
+
this.search.attr("tabindex", this.elementTabIndex);
|
2699 |
+
|
2700 |
+
this.keydowns = 0;
|
2701 |
+
this.search.on("keydown", this.bind(function (e) {
|
2702 |
+
if (!this.isInterfaceEnabled()) return;
|
2703 |
+
|
2704 |
+
++this.keydowns;
|
2705 |
+
var selected = selection.find(".select2-search-choice-focus");
|
2706 |
+
var prev = selected.prev(".select2-search-choice:not(.select2-locked)");
|
2707 |
+
var next = selected.next(".select2-search-choice:not(.select2-locked)");
|
2708 |
+
var pos = getCursorInfo(this.search);
|
2709 |
+
|
2710 |
+
if (selected.length &&
|
2711 |
+
(e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) {
|
2712 |
+
var selectedChoice = selected;
|
2713 |
+
if (e.which == KEY.LEFT && prev.length) {
|
2714 |
+
selectedChoice = prev;
|
2715 |
+
}
|
2716 |
+
else if (e.which == KEY.RIGHT) {
|
2717 |
+
selectedChoice = next.length ? next : null;
|
2718 |
+
}
|
2719 |
+
else if (e.which === KEY.BACKSPACE) {
|
2720 |
+
if (this.unselect(selected.first())) {
|
2721 |
+
this.search.width(10);
|
2722 |
+
selectedChoice = prev.length ? prev : next;
|
2723 |
+
}
|
2724 |
+
} else if (e.which == KEY.DELETE) {
|
2725 |
+
if (this.unselect(selected.first())) {
|
2726 |
+
this.search.width(10);
|
2727 |
+
selectedChoice = next.length ? next : null;
|
2728 |
+
}
|
2729 |
+
} else if (e.which == KEY.ENTER) {
|
2730 |
+
selectedChoice = null;
|
2731 |
+
}
|
2732 |
+
|
2733 |
+
this.selectChoice(selectedChoice);
|
2734 |
+
killEvent(e);
|
2735 |
+
if (!selectedChoice || !selectedChoice.length) {
|
2736 |
+
this.open();
|
2737 |
+
}
|
2738 |
+
return;
|
2739 |
+
} else if (((e.which === KEY.BACKSPACE && this.keydowns == 1)
|
2740 |
+
|| e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) {
|
2741 |
+
|
2742 |
+
this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last());
|
2743 |
+
killEvent(e);
|
2744 |
+
return;
|
2745 |
+
} else {
|
2746 |
+
this.selectChoice(null);
|
2747 |
+
}
|
2748 |
+
|
2749 |
+
if (this.opened()) {
|
2750 |
+
switch (e.which) {
|
2751 |
+
case KEY.UP:
|
2752 |
+
case KEY.DOWN:
|
2753 |
+
this.moveHighlight((e.which === KEY.UP) ? -1 : 1);
|
2754 |
+
killEvent(e);
|
2755 |
+
return;
|
2756 |
+
case KEY.ENTER:
|
2757 |
+
this.selectHighlighted();
|
2758 |
+
killEvent(e);
|
2759 |
+
return;
|
2760 |
+
case KEY.TAB:
|
2761 |
+
this.selectHighlighted({noFocus:true});
|
2762 |
+
this.close();
|
2763 |
+
return;
|
2764 |
+
case KEY.ESC:
|
2765 |
+
this.cancel(e);
|
2766 |
+
killEvent(e);
|
2767 |
+
return;
|
2768 |
+
}
|
2769 |
+
}
|
2770 |
+
|
2771 |
+
if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e)
|
2772 |
+
|| e.which === KEY.BACKSPACE || e.which === KEY.ESC) {
|
2773 |
+
return;
|
2774 |
+
}
|
2775 |
+
|
2776 |
+
if (e.which === KEY.ENTER) {
|
2777 |
+
if (this.opts.openOnEnter === false) {
|
2778 |
+
return;
|
2779 |
+
} else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) {
|
2780 |
+
return;
|
2781 |
+
}
|
2782 |
+
}
|
2783 |
+
|
2784 |
+
this.open();
|
2785 |
+
|
2786 |
+
if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
|
2787 |
+
// prevent the page from scrolling
|
2788 |
+
killEvent(e);
|
2789 |
+
}
|
2790 |
+
|
2791 |
+
if (e.which === KEY.ENTER) {
|
2792 |
+
// prevent form from being submitted
|
2793 |
+
killEvent(e);
|
2794 |
+
}
|
2795 |
+
|
2796 |
+
}));
|
2797 |
+
|
2798 |
+
this.search.on("keyup", this.bind(function (e) {
|
2799 |
+
this.keydowns = 0;
|
2800 |
+
this.resizeSearch();
|
2801 |
+
})
|
2802 |
+
);
|
2803 |
+
|
2804 |
+
this.search.on("blur", this.bind(function(e) {
|
2805 |
+
this.container.removeClass("select2-container-active");
|
2806 |
+
this.search.removeClass("select2-focused");
|
2807 |
+
this.selectChoice(null);
|
2808 |
+
if (!this.opened()) this.clearSearch();
|
2809 |
+
e.stopImmediatePropagation();
|
2810 |
+
this.opts.element.trigger($.Event("select2-blur"));
|
2811 |
+
}));
|
2812 |
+
|
2813 |
+
this.container.on("click", selector, this.bind(function (e) {
|
2814 |
+
if (!this.isInterfaceEnabled()) return;
|
2815 |
+
if ($(e.target).closest(".select2-search-choice").length > 0) {
|
2816 |
+
// clicked inside a select2 search choice, do not open
|
2817 |
+
return;
|
2818 |
+
}
|
2819 |
+
this.selectChoice(null);
|
2820 |
+
this.clearPlaceholder();
|
2821 |
+
if (!this.container.hasClass("select2-container-active")) {
|
2822 |
+
this.opts.element.trigger($.Event("select2-focus"));
|
2823 |
+
}
|
2824 |
+
this.open();
|
2825 |
+
this.focusSearch();
|
2826 |
+
e.preventDefault();
|
2827 |
+
}));
|
2828 |
+
|
2829 |
+
this.container.on("focus", selector, this.bind(function () {
|
2830 |
+
if (!this.isInterfaceEnabled()) return;
|
2831 |
+
if (!this.container.hasClass("select2-container-active")) {
|
2832 |
+
this.opts.element.trigger($.Event("select2-focus"));
|
2833 |
+
}
|
2834 |
+
this.container.addClass("select2-container-active");
|
2835 |
+
this.dropdown.addClass("select2-drop-active");
|
2836 |
+
this.clearPlaceholder();
|
2837 |
+
}));
|
2838 |
+
|
2839 |
+
this.initContainerWidth();
|
2840 |
+
this.opts.element.addClass("select2-offscreen");
|
2841 |
+
|
2842 |
+
// set the placeholder if necessary
|
2843 |
+
this.clearSearch();
|
2844 |
+
},
|
2845 |
+
|
2846 |
+
// multi
|
2847 |
+
enableInterface: function() {
|
2848 |
+
if (this.parent.enableInterface.apply(this, arguments)) {
|
2849 |
+
this.search.prop("disabled", !this.isInterfaceEnabled());
|
2850 |
+
}
|
2851 |
+
},
|
2852 |
+
|
2853 |
+
// multi
|
2854 |
+
initSelection: function () {
|
2855 |
+
var data;
|
2856 |
+
if (this.opts.element.val() === "" && this.opts.element.text() === "") {
|
2857 |
+
this.updateSelection([]);
|
2858 |
+
this.close();
|
2859 |
+
// set the placeholder if necessary
|
2860 |
+
this.clearSearch();
|
2861 |
+
}
|
2862 |
+
if (this.select || this.opts.element.val() !== "") {
|
2863 |
+
var self = this;
|
2864 |
+
this.opts.initSelection.call(null, this.opts.element, function(data){
|
2865 |
+
if (data !== undefined && data !== null) {
|
2866 |
+
self.updateSelection(data);
|
2867 |
+
self.close();
|
2868 |
+
// set the placeholder if necessary
|
2869 |
+
self.clearSearch();
|
2870 |
+
}
|
2871 |
+
});
|
2872 |
+
}
|
2873 |
+
},
|
2874 |
+
|
2875 |
+
// multi
|
2876 |
+
clearSearch: function () {
|
2877 |
+
var placeholder = this.getPlaceholder(),
|
2878 |
+
maxWidth = this.getMaxSearchWidth();
|
2879 |
+
|
2880 |
+
if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) {
|
2881 |
+
this.search.val(placeholder).addClass("select2-default");
|
2882 |
+
// stretch the search box to full width of the container so as much of the placeholder is visible as possible
|
2883 |
+
// we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944
|
2884 |
+
this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width"));
|
2885 |
+
} else {
|
2886 |
+
this.search.val("").width(10);
|
2887 |
+
}
|
2888 |
+
},
|
2889 |
+
|
2890 |
+
// multi
|
2891 |
+
clearPlaceholder: function () {
|
2892 |
+
if (this.search.hasClass("select2-default")) {
|
2893 |
+
this.search.val("").removeClass("select2-default");
|
2894 |
+
}
|
2895 |
+
},
|
2896 |
+
|
2897 |
+
// multi
|
2898 |
+
opening: function () {
|
2899 |
+
this.clearPlaceholder(); // should be done before super so placeholder is not used to search
|
2900 |
+
this.resizeSearch();
|
2901 |
+
|
2902 |
+
this.parent.opening.apply(this, arguments);
|
2903 |
+
|
2904 |
+
this.focusSearch();
|
2905 |
+
|
2906 |
+
// initializes search's value with nextSearchTerm (if defined by user)
|
2907 |
+
// ignore nextSearchTerm if the dropdown is opened by the user pressing a letter
|
2908 |
+
if(this.search.val() === "") {
|
2909 |
+
if(this.nextSearchTerm != undefined){
|
2910 |
+
this.search.val(this.nextSearchTerm);
|
2911 |
+
this.search.select();
|
2912 |
+
}
|
2913 |
+
}
|
2914 |
+
|
2915 |
+
this.updateResults(true);
|
2916 |
+
if (this.opts.shouldFocusInput(this)) {
|
2917 |
+
this.search.focus();
|
2918 |
+
}
|
2919 |
+
this.opts.element.trigger($.Event("select2-open"));
|
2920 |
+
},
|
2921 |
+
|
2922 |
+
// multi
|
2923 |
+
close: function () {
|
2924 |
+
if (!this.opened()) return;
|
2925 |
+
this.parent.close.apply(this, arguments);
|
2926 |
+
},
|
2927 |
+
|
2928 |
+
// multi
|
2929 |
+
focus: function () {
|
2930 |
+
this.close();
|
2931 |
+
this.search.focus();
|
2932 |
+
},
|
2933 |
+
|
2934 |
+
// multi
|
2935 |
+
isFocused: function () {
|
2936 |
+
return this.search.hasClass("select2-focused");
|
2937 |
+
},
|
2938 |
+
|
2939 |
+
// multi
|
2940 |
+
updateSelection: function (data) {
|
2941 |
+
var ids = [], filtered = [], self = this;
|
2942 |
+
|
2943 |
+
// filter out duplicates
|
2944 |
+
$(data).each(function () {
|
2945 |
+
if (indexOf(self.id(this), ids) < 0) {
|
2946 |
+
ids.push(self.id(this));
|
2947 |
+
filtered.push(this);
|
2948 |
+
}
|
2949 |
+
});
|
2950 |
+
data = filtered;
|
2951 |
+
|
2952 |
+
this.selection.find(".select2-search-choice").remove();
|
2953 |
+
$(data).each(function () {
|
2954 |
+
self.addSelectedChoice(this);
|
2955 |
+
});
|
2956 |
+
self.postprocessResults();
|
2957 |
+
},
|
2958 |
+
|
2959 |
+
// multi
|
2960 |
+
tokenize: function() {
|
2961 |
+
var input = this.search.val();
|
2962 |
+
input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts);
|
2963 |
+
if (input != null && input != undefined) {
|
2964 |
+
this.search.val(input);
|
2965 |
+
if (input.length > 0) {
|
2966 |
+
this.open();
|
2967 |
+
}
|
2968 |
+
}
|
2969 |
+
|
2970 |
+
},
|
2971 |
+
|
2972 |
+
// multi
|
2973 |
+
onSelect: function (data, options) {
|
2974 |
+
|
2975 |
+
if (!this.triggerSelect(data) || data.text === "") { return; }
|
2976 |
+
|
2977 |
+
this.addSelectedChoice(data);
|
2978 |
+
|
2979 |
+
this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data });
|
2980 |
+
|
2981 |
+
// keep track of the search's value before it gets cleared
|
2982 |
+
this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val());
|
2983 |
+
|
2984 |
+
this.clearSearch();
|
2985 |
+
this.updateResults();
|
2986 |
+
|
2987 |
+
if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true);
|
2988 |
+
|
2989 |
+
if (this.opts.closeOnSelect) {
|
2990 |
+
this.close();
|
2991 |
+
this.search.width(10);
|
2992 |
+
} else {
|
2993 |
+
if (this.countSelectableResults()>0) {
|
2994 |
+
this.search.width(10);
|
2995 |
+
this.resizeSearch();
|
2996 |
+
if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) {
|
2997 |
+
// if we reached max selection size repaint the results so choices
|
2998 |
+
// are replaced with the max selection reached message
|
2999 |
+
this.updateResults(true);
|
3000 |
+
} else {
|
3001 |
+
// initializes search's value with nextSearchTerm and update search result
|
3002 |
+
if(this.nextSearchTerm != undefined){
|
3003 |
+
this.search.val(this.nextSearchTerm);
|
3004 |
+
this.updateResults();
|
3005 |
+
this.search.select();
|
3006 |
+
}
|
3007 |
+
}
|
3008 |
+
this.positionDropdown();
|
3009 |
+
} else {
|
3010 |
+
// if nothing left to select close
|
3011 |
+
this.close();
|
3012 |
+
this.search.width(10);
|
3013 |
+
}
|
3014 |
+
}
|
3015 |
+
|
3016 |
+
// since its not possible to select an element that has already been
|
3017 |
+
// added we do not need to check if this is a new element before firing change
|
3018 |
+
this.triggerChange({ added: data });
|
3019 |
+
|
3020 |
+
if (!options || !options.noFocus)
|
3021 |
+
this.focusSearch();
|
3022 |
+
},
|
3023 |
+
|
3024 |
+
// multi
|
3025 |
+
cancel: function () {
|
3026 |
+
this.close();
|
3027 |
+
this.focusSearch();
|
3028 |
+
},
|
3029 |
+
|
3030 |
+
addSelectedChoice: function (data) {
|
3031 |
+
var enableChoice = !data.locked,
|
3032 |
+
enabledItem = $(
|
3033 |
+
"<li class='select2-search-choice'>" +
|
3034 |
+
" <div></div>" +
|
3035 |
+
" <a href='#' class='select2-search-choice-close' tabindex='-1'></a>" +
|
3036 |
+
"</li>"),
|
3037 |
+
disabledItem = $(
|
3038 |
+
"<li class='select2-search-choice select2-locked'>" +
|
3039 |
+
"<div></div>" +
|
3040 |
+
"</li>");
|
3041 |
+
var choice = enableChoice ? enabledItem : disabledItem,
|
3042 |
+
id = this.id(data),
|
3043 |
+
val = this.getVal(),
|
3044 |
+
formatted,
|
3045 |
+
cssClass;
|
3046 |
+
|
3047 |
+
formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup);
|
3048 |
+
if (formatted != undefined) {
|
3049 |
+
choice.find("div").replaceWith("<div>"+formatted+"</div>");
|
3050 |
+
}
|
3051 |
+
cssClass=this.opts.formatSelectionCssClass(data, choice.find("div"));
|
3052 |
+
if (cssClass != undefined) {
|
3053 |
+
choice.addClass(cssClass);
|
3054 |
+
}
|
3055 |
+
|
3056 |
+
if(enableChoice){
|
3057 |
+
choice.find(".select2-search-choice-close")
|
3058 |
+
.on("mousedown", killEvent)
|
3059 |
+
.on("click dblclick", this.bind(function (e) {
|
3060 |
+
if (!this.isInterfaceEnabled()) return;
|
3061 |
+
|
3062 |
+
this.unselect($(e.target));
|
3063 |
+
this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus");
|
3064 |
+
killEvent(e);
|
3065 |
+
this.close();
|
3066 |
+
this.focusSearch();
|
3067 |
+
})).on("focus", this.bind(function () {
|
3068 |
+
if (!this.isInterfaceEnabled()) return;
|
3069 |
+
this.container.addClass("select2-container-active");
|
3070 |
+
this.dropdown.addClass("select2-drop-active");
|
3071 |
+
}));
|
3072 |
+
}
|
3073 |
+
|
3074 |
+
choice.data("select2-data", data);
|
3075 |
+
choice.insertBefore(this.searchContainer);
|
3076 |
+
|
3077 |
+
val.push(id);
|
3078 |
+
this.setVal(val);
|
3079 |
+
},
|
3080 |
+
|
3081 |
+
// multi
|
3082 |
+
unselect: function (selected) {
|
3083 |
+
var val = this.getVal(),
|
3084 |
+
data,
|
3085 |
+
index;
|
3086 |
+
selected = selected.closest(".select2-search-choice");
|
3087 |
+
|
3088 |
+
if (selected.length === 0) {
|
3089 |
+
throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
|
3090 |
+
}
|
3091 |
+
|
3092 |
+
data = selected.data("select2-data");
|
3093 |
+
|
3094 |
+
if (!data) {
|
3095 |
+
// prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
|
3096 |
+
// and invoked on an element already removed
|
3097 |
+
return;
|
3098 |
+
}
|
3099 |
+
|
3100 |
+
var evt = $.Event("select2-removing");
|
3101 |
+
evt.val = this.id(data);
|
3102 |
+
evt.choice = data;
|
3103 |
+
this.opts.element.trigger(evt);
|
3104 |
+
|
3105 |
+
if (evt.isDefaultPrevented()) {
|
3106 |
+
return false;
|
3107 |
+
}
|
3108 |
+
|
3109 |
+
while((index = indexOf(this.id(data), val)) >= 0) {
|
3110 |
+
val.splice(index, 1);
|
3111 |
+
this.setVal(val);
|
3112 |
+
if (this.select) this.postprocessResults();
|
3113 |
+
}
|
3114 |
+
|
3115 |
+
selected.remove();
|
3116 |
+
|
3117 |
+
this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data });
|
3118 |
+
this.triggerChange({ removed: data });
|
3119 |
+
|
3120 |
+
return true;
|
3121 |
+
},
|
3122 |
+
|
3123 |
+
// multi
|
3124 |
+
postprocessResults: function (data, initial, noHighlightUpdate) {
|
3125 |
+
var val = this.getVal(),
|
3126 |
+
choices = this.results.find(".select2-result"),
|
3127 |
+
compound = this.results.find(".select2-result-with-children"),
|
3128 |
+
self = this;
|
3129 |
+
|
3130 |
+
choices.each2(function (i, choice) {
|
3131 |
+
var id = self.id(choice.data("select2-data"));
|
3132 |
+
if (indexOf(id, val) >= 0) {
|
3133 |
+
choice.addClass("select2-selected");
|
3134 |
+
// mark all children of the selected parent as selected
|
3135 |
+
choice.find(".select2-result-selectable").addClass("select2-selected");
|
3136 |
+
}
|
3137 |
+
});
|
3138 |
+
|
3139 |
+
compound.each2(function(i, choice) {
|
3140 |
+
// hide an optgroup if it doesn't have any selectable children
|
3141 |
+
if (!choice.is('.select2-result-selectable')
|
3142 |
+
&& choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) {
|
3143 |
+
choice.addClass("select2-selected");
|
3144 |
+
}
|
3145 |
+
});
|
3146 |
+
|
3147 |
+
if (this.highlight() == -1 && noHighlightUpdate !== false){
|
3148 |
+
self.highlight(0);
|
3149 |
+
}
|
3150 |
+
|
3151 |
+
//If all results are chosen render formatNoMatches
|
3152 |
+
if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){
|
3153 |
+
if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) {
|
3154 |
+
if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) {
|
3155 |
+
this.results.append("<li class='select2-no-results'>" + evaluate(self.opts.formatNoMatches, self.opts.element, self.search.val()) + "</li>");
|
3156 |
+
}
|
3157 |
+
}
|
3158 |
+
}
|
3159 |
+
|
3160 |
+
},
|
3161 |
+
|
3162 |
+
// multi
|
3163 |
+
getMaxSearchWidth: function() {
|
3164 |
+
return this.selection.width() - getSideBorderPadding(this.search);
|
3165 |
+
},
|
3166 |
+
|
3167 |
+
// multi
|
3168 |
+
resizeSearch: function () {
|
3169 |
+
var minimumWidth, left, maxWidth, containerLeft, searchWidth,
|
3170 |
+
sideBorderPadding = getSideBorderPadding(this.search);
|
3171 |
+
|
3172 |
+
minimumWidth = measureTextWidth(this.search) + 10;
|
3173 |
+
|
3174 |
+
left = this.search.offset().left;
|
3175 |
+
|
3176 |
+
maxWidth = this.selection.width();
|
3177 |
+
containerLeft = this.selection.offset().left;
|
3178 |
+
|
3179 |
+
searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding;
|
3180 |
+
|
3181 |
+
if (searchWidth < minimumWidth) {
|
3182 |
+
searchWidth = maxWidth - sideBorderPadding;
|
3183 |
+
}
|
3184 |
+
|
3185 |
+
if (searchWidth < 40) {
|
3186 |
+
searchWidth = maxWidth - sideBorderPadding;
|
3187 |
+
}
|
3188 |
+
|
3189 |
+
if (searchWidth <= 0) {
|
3190 |
+
searchWidth = minimumWidth;
|
3191 |
+
}
|
3192 |
+
|
3193 |
+
this.search.width(Math.floor(searchWidth));
|
3194 |
+
},
|
3195 |
+
|
3196 |
+
// multi
|
3197 |
+
getVal: function () {
|
3198 |
+
var val;
|
3199 |
+
if (this.select) {
|
3200 |
+
val = this.select.val();
|
3201 |
+
return val === null ? [] : val;
|
3202 |
+
} else {
|
3203 |
+
val = this.opts.element.val();
|
3204 |
+
return splitVal(val, this.opts.separator);
|
3205 |
+
}
|
3206 |
+
},
|
3207 |
+
|
3208 |
+
// multi
|
3209 |
+
setVal: function (val) {
|
3210 |
+
var unique;
|
3211 |
+
if (this.select) {
|
3212 |
+
this.select.val(val);
|
3213 |
+
} else {
|
3214 |
+
unique = [];
|
3215 |
+
// filter out duplicates
|
3216 |
+
$(val).each(function () {
|
3217 |
+
if (indexOf(this, unique) < 0) unique.push(this);
|
3218 |
+
});
|
3219 |
+
this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator));
|
3220 |
+
}
|
3221 |
+
},
|
3222 |
+
|
3223 |
+
// multi
|
3224 |
+
buildChangeDetails: function (old, current) {
|
3225 |
+
var current = current.slice(0),
|
3226 |
+
old = old.slice(0);
|
3227 |
+
|
3228 |
+
// remove intersection from each array
|
3229 |
+
for (var i = 0; i < current.length; i++) {
|
3230 |
+
for (var j = 0; j < old.length; j++) {
|
3231 |
+
if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) {
|
3232 |
+
current.splice(i, 1);
|
3233 |
+
if(i>0){
|
3234 |
+
i--;
|
3235 |
+
}
|
3236 |
+
old.splice(j, 1);
|
3237 |
+
j--;
|
3238 |
+
}
|
3239 |
+
}
|
3240 |
+
}
|
3241 |
+
|
3242 |
+
return {added: current, removed: old};
|
3243 |
+
},
|
3244 |
+
|
3245 |
+
|
3246 |
+
// multi
|
3247 |
+
val: function (val, triggerChange) {
|
3248 |
+
var oldData, self=this;
|
3249 |
+
|
3250 |
+
if (arguments.length === 0) {
|
3251 |
+
return this.getVal();
|
3252 |
+
}
|
3253 |
+
|
3254 |
+
oldData=this.data();
|
3255 |
+
if (!oldData.length) oldData=[];
|
3256 |
+
|
3257 |
+
// val is an id. !val is true for [undefined,null,'',0] - 0 is legal
|
3258 |
+
if (!val && val !== 0) {
|
3259 |
+
this.opts.element.val("");
|
3260 |
+
this.updateSelection([]);
|
3261 |
+
this.clearSearch();
|
3262 |
+
if (triggerChange) {
|
3263 |
+
this.triggerChange({added: this.data(), removed: oldData});
|
3264 |
+
}
|
3265 |
+
return;
|
3266 |
+
}
|
3267 |
+
|
3268 |
+
// val is a list of ids
|
3269 |
+
this.setVal(val);
|
3270 |
+
|
3271 |
+
if (this.select) {
|
3272 |
+
this.opts.initSelection(this.select, this.bind(this.updateSelection));
|
3273 |
+
if (triggerChange) {
|
3274 |
+
this.triggerChange(this.buildChangeDetails(oldData, this.data()));
|
3275 |
+
}
|
3276 |
+
} else {
|
3277 |
+
if (this.opts.initSelection === undefined) {
|
3278 |
+
throw new Error("val() cannot be called if initSelection() is not defined");
|
3279 |
+
}
|
3280 |
+
|
3281 |
+
this.opts.initSelection(this.opts.element, function(data){
|
3282 |
+
var ids=$.map(data, self.id);
|
3283 |
+
self.setVal(ids);
|
3284 |
+
self.updateSelection(data);
|
3285 |
+
self.clearSearch();
|
3286 |
+
if (triggerChange) {
|
3287 |
+
self.triggerChange(self.buildChangeDetails(oldData, self.data()));
|
3288 |
+
}
|
3289 |
+
});
|
3290 |
+
}
|
3291 |
+
this.clearSearch();
|
3292 |
+
},
|
3293 |
+
|
3294 |
+
// multi
|
3295 |
+
onSortStart: function() {
|
3296 |
+
if (this.select) {
|
3297 |
+
throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");
|
3298 |
+
}
|
3299 |
+
|
3300 |
+
// collapse search field into 0 width so its container can be collapsed as well
|
3301 |
+
this.search.width(0);
|
3302 |
+
// hide the container
|
3303 |
+
this.searchContainer.hide();
|
3304 |
+
},
|
3305 |
+
|
3306 |
+
// multi
|
3307 |
+
onSortEnd:function() {
|
3308 |
+
|
3309 |
+
var val=[], self=this;
|
3310 |
+
|
3311 |
+
// show search and move it to the end of the list
|
3312 |
+
this.searchContainer.show();
|
3313 |
+
// make sure the search container is the last item in the list
|
3314 |
+
this.searchContainer.appendTo(this.searchContainer.parent());
|
3315 |
+
// since we collapsed the width in dragStarted, we resize it here
|
3316 |
+
this.resizeSearch();
|
3317 |
+
|
3318 |
+
// update selection
|
3319 |
+
this.selection.find(".select2-search-choice").each(function() {
|
3320 |
+
val.push(self.opts.id($(this).data("select2-data")));
|
3321 |
+
});
|
3322 |
+
this.setVal(val);
|
3323 |
+
this.triggerChange();
|
3324 |
+
},
|
3325 |
+
|
3326 |
+
// multi
|
3327 |
+
data: function(values, triggerChange) {
|
3328 |
+
var self=this, ids, old;
|
3329 |
+
if (arguments.length === 0) {
|
3330 |
+
return this.selection
|
3331 |
+
.children(".select2-search-choice")
|
3332 |
+
.map(function() { return $(this).data("select2-data"); })
|
3333 |
+
.get();
|
3334 |
+
} else {
|
3335 |
+
old = this.data();
|
3336 |
+
if (!values) { values = []; }
|
3337 |
+
ids = $.map(values, function(e) { return self.opts.id(e); });
|
3338 |
+
this.setVal(ids);
|
3339 |
+
this.updateSelection(values);
|
3340 |
+
this.clearSearch();
|
3341 |
+
if (triggerChange) {
|
3342 |
+
this.triggerChange(this.buildChangeDetails(old, this.data()));
|
3343 |
+
}
|
3344 |
+
}
|
3345 |
+
}
|
3346 |
+
});
|
3347 |
+
|
3348 |
+
$.fn.select2 = function () {
|
3349 |
+
|
3350 |
+
var args = Array.prototype.slice.call(arguments, 0),
|
3351 |
+
opts,
|
3352 |
+
select2,
|
3353 |
+
method, value, multiple,
|
3354 |
+
allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"],
|
3355 |
+
valueMethods = ["opened", "isFocused", "container", "dropdown"],
|
3356 |
+
propertyMethods = ["val", "data"],
|
3357 |
+
methodsMap = { search: "externalSearch" };
|
3358 |
+
|
3359 |
+
this.each(function () {
|
3360 |
+
if (args.length === 0 || typeof(args[0]) === "object") {
|
3361 |
+
opts = args.length === 0 ? {} : $.extend({}, args[0]);
|
3362 |
+
opts.element = $(this);
|
3363 |
+
|
3364 |
+
if (opts.element.get(0).tagName.toLowerCase() === "select") {
|
3365 |
+
multiple = opts.element.prop("multiple");
|
3366 |
+
} else {
|
3367 |
+
multiple = opts.multiple || false;
|
3368 |
+
if ("tags" in opts) {opts.multiple = multiple = true;}
|
3369 |
+
}
|
3370 |
+
|
3371 |
+
select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single();
|
3372 |
+
select2.init(opts);
|
3373 |
+
} else if (typeof(args[0]) === "string") {
|
3374 |
+
|
3375 |
+
if (indexOf(args[0], allowedMethods) < 0) {
|
3376 |
+
throw "Unknown method: " + args[0];
|
3377 |
+
}
|
3378 |
+
|
3379 |
+
value = undefined;
|
3380 |
+
select2 = $(this).data("select2");
|
3381 |
+
if (select2 === undefined) return;
|
3382 |
+
|
3383 |
+
method=args[0];
|
3384 |
+
|
3385 |
+
if (method === "container") {
|
3386 |
+
value = select2.container;
|
3387 |
+
} else if (method === "dropdown") {
|
3388 |
+
value = select2.dropdown;
|
3389 |
+
} else {
|
3390 |
+
if (methodsMap[method]) method = methodsMap[method];
|
3391 |
+
|
3392 |
+
value = select2[method].apply(select2, args.slice(1));
|
3393 |
+
}
|
3394 |
+
if (indexOf(args[0], valueMethods) >= 0
|
3395 |
+
|| (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) {
|
3396 |
+
return false; // abort the iteration, ready to return first matched value
|
3397 |
+
}
|
3398 |
+
} else {
|
3399 |
+
throw "Invalid arguments to select2 plugin: " + args;
|
3400 |
+
}
|
3401 |
+
});
|
3402 |
+
return (value === undefined) ? this : value;
|
3403 |
+
};
|
3404 |
+
|
3405 |
+
// plugin defaults, accessible to users
|
3406 |
+
$.fn.select2.defaults = {
|
3407 |
+
width: "copy",
|
3408 |
+
loadMorePadding: 0,
|
3409 |
+
closeOnSelect: true,
|
3410 |
+
openOnEnter: true,
|
3411 |
+
containerCss: {},
|
3412 |
+
dropdownCss: {},
|
3413 |
+
containerCssClass: "",
|
3414 |
+
dropdownCssClass: "",
|
3415 |
+
formatResult: function(result, container, query, escapeMarkup) {
|
3416 |
+
var markup=[];
|
3417 |
+
markMatch(result.text, query.term, markup, escapeMarkup);
|
3418 |
+
return markup.join("");
|
3419 |
+
},
|
3420 |
+
formatSelection: function (data, container, escapeMarkup) {
|
3421 |
+
return data ? escapeMarkup(data.text) : undefined;
|
3422 |
+
},
|
3423 |
+
sortResults: function (results, container, query) {
|
3424 |
+
return results;
|
3425 |
+
},
|
3426 |
+
formatResultCssClass: function(data) {return data.css;},
|
3427 |
+
formatSelectionCssClass: function(data, container) {return undefined;},
|
3428 |
+
minimumResultsForSearch: 0,
|
3429 |
+
minimumInputLength: 0,
|
3430 |
+
maximumInputLength: null,
|
3431 |
+
maximumSelectionSize: 0,
|
3432 |
+
id: function (e) { return e == undefined ? null : e.id; },
|
3433 |
+
matcher: function(term, text) {
|
3434 |
+
return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0;
|
3435 |
+
},
|
3436 |
+
separator: ",",
|
3437 |
+
tokenSeparators: [],
|
3438 |
+
tokenizer: defaultTokenizer,
|
3439 |
+
escapeMarkup: defaultEscapeMarkup,
|
3440 |
+
blurOnChange: false,
|
3441 |
+
selectOnBlur: false,
|
3442 |
+
adaptContainerCssClass: function(c) { return c; },
|
3443 |
+
adaptDropdownCssClass: function(c) { return null; },
|
3444 |
+
nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; },
|
3445 |
+
searchInputPlaceholder: '',
|
3446 |
+
createSearchChoicePosition: 'top',
|
3447 |
+
shouldFocusInput: function (instance) {
|
3448 |
+
// Attempt to detect touch devices
|
3449 |
+
var supportsTouchEvents = (('ontouchstart' in window) ||
|
3450 |
+
(navigator.msMaxTouchPoints > 0));
|
3451 |
+
|
3452 |
+
// Only devices which support touch events should be special cased
|
3453 |
+
if (!supportsTouchEvents) {
|
3454 |
+
return true;
|
3455 |
+
}
|
3456 |
+
|
3457 |
+
// Never focus the input if search is disabled
|
3458 |
+
if (instance.opts.minimumResultsForSearch < 0) {
|
3459 |
+
return false;
|
3460 |
+
}
|
3461 |
+
|
3462 |
+
return true;
|
3463 |
+
}
|
3464 |
+
};
|
3465 |
+
|
3466 |
+
$.fn.select2.locales = [];
|
3467 |
+
|
3468 |
+
$.fn.select2.locales['en'] = {
|
3469 |
+
formatMatches: function (matches) { if (matches === 1) { return "One result is available, press enter to select it."; } return matches + " results are available, use up and down arrow keys to navigate."; },
|
3470 |
+
formatNoMatches: function () { return "No matches found"; },
|
3471 |
+
formatAjaxError: function (jqXHR, textStatus, errorThrown) { return "Loading failed"; },
|
3472 |
+
formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1 ? "" : "s"); },
|
3473 |
+
formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); },
|
3474 |
+
formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); },
|
3475 |
+
formatLoadMore: function (pageNumber) { return "Loading more results…"; },
|
3476 |
+
formatSearching: function () { return "Searching…"; },
|
3477 |
+
};
|
3478 |
+
|
3479 |
+
$.extend($.fn.select2.defaults, $.fn.select2.locales['en']);
|
3480 |
+
|
3481 |
+
$.fn.select2.ajaxDefaults = {
|
3482 |
+
transport: $.ajax,
|
3483 |
+
params: {
|
3484 |
+
type: "GET",
|
3485 |
+
cache: false,
|
3486 |
+
dataType: "json"
|
3487 |
+
}
|
3488 |
+
};
|
3489 |
+
|
3490 |
+
// exports
|
3491 |
+
window.Select2 = {
|
3492 |
+
query: {
|
3493 |
+
ajax: ajax,
|
3494 |
+
local: local,
|
3495 |
+
tags: tags
|
3496 |
+
}, util: {
|
3497 |
+
debounce: debounce,
|
3498 |
+
markMatch: markMatch,
|
3499 |
+
escapeMarkup: defaultEscapeMarkup,
|
3500 |
+
stripDiacritics: stripDiacritics
|
3501 |
+
}, "class": {
|
3502 |
+
"abstract": AbstractSelect2,
|
3503 |
+
"single": SingleSelect2,
|
3504 |
+
"multi": MultiSelect2
|
3505 |
+
}
|
3506 |
+
};
|
3507 |
+
|
3508 |
+
}(jQuery));
|
js/select2/select2.min.js
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
Copyright 2014 Igor Vaynberg
|
3 |
+
|
4 |
+
Version: 3.5.1 Timestamp: Tue Jul 22 18:58:56 EDT 2014
|
5 |
+
|
6 |
+
This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU
|
7 |
+
General Public License version 2 (the "GPL License"). You may choose either license to govern your
|
8 |
+
use of this software only upon the condition that you accept all of the terms of either the Apache
|
9 |
+
License or the GPL License.
|
10 |
+
|
11 |
+
You may obtain a copy of the Apache License and the GPL License at:
|
12 |
+
|
13 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
14 |
+
http://www.gnu.org/licenses/gpl-2.0.html
|
15 |
+
|
16 |
+
Unless required by applicable law or agreed to in writing, software distributed under the Apache License
|
17 |
+
or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
18 |
+
either express or implied. See the Apache License and the GPL License for the specific language governing
|
19 |
+
permissions and limitations under the Apache License and the GPL License.
|
20 |
+
*/
|
21 |
+
!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++d<e&&(c.context=c[0]=this[d])&&b.call(c[0],d,c)!==!1;);return this}})}(jQuery),function(a,b){"use strict";function n(b){var c=a(document.createTextNode(""));b.before(c),c.before(b),c.remove()}function o(a){function b(a){return m[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function p(a,b){for(var c=0,d=b.length;d>c;c+=1)if(r(a,b[c]))return c;return-1}function q(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function r(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function s(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function t(a){return a.outerWidth(!1)-a.width()}function u(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function v(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function w(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function x(a,b){var c=w(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){p(a.target,b.get())>=0&&c(a)})}function y(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus();var e=b.offsetWidth>0||b.offsetHeight>0;e&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function z(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function A(a){a.preventDefault(),a.stopPropagation()}function B(a){a.preventDefault(),a.stopImmediatePropagation()}function C(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function D(b,c,d){var e,g,f=[];e=a.trim(b.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=a.trim(c.attr("class")),e&&(e=""+e,a(e.split(/\s+/)).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function E(a,b,c,d){var e=o(a.toUpperCase()).indexOf(o(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push("<span class='select2-match'>"),c.push(d(a.substring(e,e+f))),c.push("</span>"),c.push(d(a.substring(e+f,a.length))),void 0)}function F(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function G(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page,i);i.callback(b)},error:function(a,b,c){var d={hasError:!0,jqXHR:a,textStatus:b,errorThrown:c};i.callback(d)}}),e=j.call(h,l)},f)}}function H(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function I(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]},h=d?c(e):c;a.isArray(h)&&(a(h).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g))}}function J(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function K(b,c){if(a.isFunction(b)){var d=Array.prototype.slice.call(arguments,2);return b.apply(c,d)}return b}function L(b){var c=0;return a.each(b,function(a,b){b.children?c+=L(b.children):c++}),c}function M(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(r(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function N(){var b=this;a.each(arguments,function(a,c){b[c].remove(),b[c]=null})}function O(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="<div class='select2-measure-scrollbar'></div>",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z","\u0386":"\u0391","\u0388":"\u0395","\u0389":"\u0397","\u038a":"\u0399","\u03aa":"\u0399","\u038c":"\u039f","\u038e":"\u03a5","\u03ab":"\u03a5","\u038f":"\u03a9","\u03ac":"\u03b1","\u03ad":"\u03b5","\u03ae":"\u03b7","\u03af":"\u03b9","\u03ca":"\u03b9","\u0390":"\u03b9","\u03cc":"\u03bf","\u03cd":"\u03c5","\u03cb":"\u03c5","\u03b0":"\u03c5","\u03c9":"\u03c9","\u03c2":"\u03c3"};j=a(document),g=function(){var a=1;return function(){return a++}}(),d=O(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a("<span>",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",c.element.attr("title")),this.body=a("body"),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(K(c.containerCss,this.opts.element)),this.container.addClass(K(c.containerCssClass,this.opts.element)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",A),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(c.dropdownCssClass,this.opts.element)),this.dropdown.data("select2",this),this.dropdown.on("click",A),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",A),v(this.results),this.dropdown.on("mousemove-filtered",f,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",f,this.bind(function(a){this._touchEvent=!0,this.highlightUnderEvent(a)})),this.dropdown.on("touchmove",f,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",f,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),x(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),A(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),A(a))}),u(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||q(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2"),d=this;this.close(),a.length&&a[0].detachEvent&&a.each(function(){this.detachEvent("onpropertychange",d._sync)}),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),this._sync=null,c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show()),N.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:r(a.attr("locked"),"locked")||r(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,h,i=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a <select> element.")}),c=a.extend({},{populateResults:function(d,e,f){var h,j=this.opts.id,k=this.liveRegion;h=function(d,e,l){var m,n,o,p,q,r,s,t,u,v;d=c.sortResults(d,e,f);var w=[];for(m=0,n=d.length;n>m;m+=1)o=d[m],q=o.disabled===!0,p=!q&&j(o)!==b,r=o.children&&o.children.length>0,s=a("<li></li>"),s.addClass("select2-results-dept-"+l),s.addClass("select2-result"),s.addClass(p?"select2-result-selectable":"select2-result-unselectable"),q&&s.addClass("select2-disabled"),r&&s.addClass("select2-result-with-children"),s.addClass(i.opts.formatResultCssClass(o)),s.attr("role","presentation"),t=a(document.createElement("div")),t.addClass("select2-result-label"),t.attr("id","select2-result-label-"+g()),t.attr("role","option"),v=c.formatResult(o,t,f,i.opts.escapeMarkup),v!==b&&(t.html(v),s.append(t)),r&&(u=a("<ul></ul>"),u.addClass("select2-result-sub"),h(o.children,u,l+1),s.append(u)),s.data("select2-data",o),w.push(s[0]);e.append(w),k.text(c.formatMatches(d.length))},h(e,d,0)}},a.fn.select2.defaults,c),"function"!=typeof c.id&&(f=c.id,c.id=function(a){return a[f]}),a.isArray(c.element.data("select2Tags"))){if("tags"in c)throw"tags specified as both an attribute 'data-select2-tags' and in options of Select2 "+c.element.attr("id");c.tags=c.element.data("select2Tags")}if(e?(c.query=this.bind(function(a){var f,g,h,c={results:[],more:!1},e=a.term;h=function(b,c){var d;b.is("option")?a.matcher(e,b.text(),b)&&c.push(i.optionToData(b)):b.is("optgroup")&&(d=i.optionToData(b),b.children().each2(function(a,b){h(b,d.children)}),d.children.length>0&&c.push(d))},f=d.children(),this.getPlaceholder()!==b&&f.length>0&&(g=this.getPlaceholderOption(),g&&(f=f.not(g))),f.each2(function(a,b){h(b,c.results)}),a.callback(c)}),c.id=function(a){return a.id}):"query"in c||("ajax"in c?(h=c.element.data("ajax-url"),h&&h.length>0&&(c.ajax.url=h),c.query=G.call(c.element,c.ajax)):"data"in c?c.query=H(c.data):"tags"in c&&(c.query=I(c.tags),c.createSearchChoice===b&&(c.createSearchChoice=function(b){return{id:a.trim(b),text:a.trim(b)}}),c.initSelection===b&&(c.initSelection=function(b,d){var e=[];a(s(b.val(),c.separator)).each(function(){var b={id:this,text:this},d=c.tags;a.isFunction(d)&&(d=d()),a(d).each(function(){return r(this.id,b.id)?(b=this,!1):void 0}),e.push(b)}),d(e)}))),"function"!=typeof c.query)throw"query function not defined for Select2 "+c.element.attr("id");if("top"===c.createSearchChoicePosition)c.createSearchChoicePosition=function(a,b){a.unshift(b)};else if("bottom"===c.createSearchChoicePosition)c.createSearchChoicePosition=function(a,b){a.push(b)};else if("function"!=typeof c.createSearchChoicePosition)throw"invalid createSearchChoicePosition option must be 'top', 'bottom' or a custom function";return c},monitorSource:function(){var d,c=this.opts.element,e=this;c.on("change.select2",this.bind(function(){this.opts.element.data("select2-change-triggered")!==!0&&this.initSelection()})),this._sync=this.bind(function(){var a=c.prop("disabled");a===b&&(a=!1),this.enable(!a);var d=c.prop("readonly");d===b&&(d=!1),this.readonly(d),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.addClass(K(this.opts.containerCssClass,this.opts.element)),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(this.opts.dropdownCssClass,this.opts.element))}),c.length&&c[0].attachEvent&&c.each(function(){this.attachEvent("onpropertychange",e._sync)}),d=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,d!==b&&(this.propertyObserver&&(delete this.propertyObserver,this.propertyObserver=null),this.propertyObserver=new d(function(b){a.each(b,e._sync)}),this.propertyObserver.observe(c.get(0),{attributes:!0,subtree:!1}))},triggerSelect:function(b){var c=a.Event("select2-selecting",{val:this.id(b),object:b,choice:b});return this.opts.element.trigger(c),!c.isDefaultPrevented()},triggerChange:function(b){b=b||{},b=a.extend({},b,{type:"change",val:this.val()}),this.opts.element.data("select2-change-triggered",!0),this.opts.element.trigger(b),this.opts.element.data("select2-change-triggered",!1),this.opts.element.click(),this.opts.blurOnChange&&this.opts.element.blur()},isInterfaceEnabled:function(){return this.enabledInterface===!0},enableInterface:function(){var a=this._enabled&&!this._readonly,b=!a;return a===this.enabledInterface?!1:(this.container.toggleClass("select2-container-disabled",b),this.close(),this.enabledInterface=a,!0)},enable:function(a){a===b&&(a=!0),this._enabled!==a&&(this._enabled=a,this.opts.element.prop("disabled",!a),this.enableInterface())},disable:function(){this.enable(!1)},readonly:function(a){a===b&&(a=!1),this._readonly!==a&&(this._readonly=a,this.opts.element.prop("readonly",a),this.enableInterface())},opened:function(){return this.container?this.container.hasClass("select2-dropdown-open"):!1},positionDropdown:function(){var t,u,v,w,x,b=this.dropdown,c=this.container.offset(),d=this.container.outerHeight(!1),e=this.container.outerWidth(!1),f=b.outerHeight(!1),g=a(window),h=g.width(),i=g.height(),j=g.scrollLeft()+h,l=g.scrollTop()+i,m=c.top+d,n=c.left,o=l>=m+f,p=c.top-f>=g.scrollTop(),q=b.outerWidth(!1),r=j>=n+q,s=b.hasClass("select2-drop-above");s?(u=!0,!p&&o&&(v=!0,u=!1)):(u=!1,!o&&p&&(v=!0,u=!0)),v&&(b.hide(),c=this.container.offset(),d=this.container.outerHeight(!1),e=this.container.outerWidth(!1),f=b.outerHeight(!1),j=g.scrollLeft()+h,l=g.scrollTop()+i,m=c.top+d,n=c.left,q=b.outerWidth(!1),r=j>=n+q,b.show(),this.focusSearch()),this.opts.dropdownAutoWidth?(x=a(".select2-results",b)[0],b.addClass("select2-drop-auto-width"),b.css("width",""),q=b.outerWidth(!1)+(x.scrollHeight===x.clientHeight?0:k.width),q>e?e=q:q=e,f=b.outerHeight(!1),r=j>=n+q):this.container.removeClass("select2-drop-auto-width"),"static"!==this.body.css("position")&&(t=this.body.offset(),m-=t.top,n-=t.left),r||(n=c.left+this.container.outerWidth(!1)-q),w={left:n,width:e},u?(w.top=c.top-f,w.bottom="auto",this.container.addClass("select2-drop-above"),b.addClass("select2-drop-above")):(w.top=m,w.bottom="auto",this.container.removeClass("select2-drop-above"),b.removeClass("select2-drop-above")),w=a.extend(w,K(this.opts.dropdownCss,this.opts.element)),b.css(w)},shouldOpen:function(){var b;return this.opened()?!1:this._enabled===!1||this._readonly===!0?!1:(b=a.Event("select2-opening"),this.opts.element.trigger(b),!b.isDefaultPrevented())},clearDropdownAlignmentPreference:function(){this.container.removeClass("select2-drop-above"),this.dropdown.removeClass("select2-drop-above")},open:function(){return this.shouldOpen()?(this.opening(),j.on("mousemove.select2Event",function(a){i.x=a.pageX,i.y=a.pageY}),!0):!1},opening:function(){var f,b=this.containerEventName,c="scroll."+b,d="resize."+b,e="orientationchange."+b;this.container.addClass("select2-dropdown-open").addClass("select2-container-active"),this.clearDropdownAlignmentPreference(),this.dropdown[0]!==this.body.children().last()[0]&&this.dropdown.detach().appendTo(this.body),f=a("#select2-drop-mask"),0==f.length&&(f=a(document.createElement("div")),f.attr("id","select2-drop-mask").attr("class","select2-drop-mask"),f.hide(),f.appendTo(this.body),f.on("mousedown touchstart click",function(b){n(f);var d,c=a("#select2-drop");c.length>0&&(d=c.data("select2"),d.opts.selectOnBlur&&d.selectHighlighted({noFocus:!0}),d.close(),b.preventDefault(),b.stopPropagation())})),this.dropdown.prev()[0]!==f[0]&&this.dropdown.before(f),a("#select2-drop").removeAttr("id"),this.dropdown.attr("id","select2-drop"),f.show(),this.positionDropdown(),this.dropdown.show(),this.positionDropdown(),this.dropdown.addClass("select2-drop-active");var g=this;this.container.parents().add(window).each(function(){a(this).on(d+" "+c+" "+e,function(){g.opened()&&g.positionDropdown()})})},close:function(){if(this.opened()){var b=this.containerEventName,c="scroll."+b,d="resize."+b,e="orientationchange."+b;this.container.parents().add(window).each(function(){a(this).off(c).off(d).off(e)}),this.clearDropdownAlignmentPreference(),a("#select2-drop-mask").hide(),this.dropdown.removeAttr("id"),this.dropdown.hide(),this.container.removeClass("select2-dropdown-open").removeClass("select2-container-active"),this.results.empty(),j.off("mousemove.select2Event"),this.clearSearch(),this.search.removeClass("select2-active"),this.opts.element.trigger(a.Event("select2-close"))}},externalSearch:function(a){this.open(),this.search.val(a),this.updateResults(!1)},clearSearch:function(){},getMaximumSelectionSize:function(){return K(this.opts.maximumSelectionSize,this.opts.element)},ensureHighlightVisible:function(){var c,d,e,f,g,h,i,j,b=this.results;if(d=this.highlight(),!(0>d)){if(0==d)return b.scrollTop(0),void 0;c=this.findHighlightableChoices().find(".select2-result-label"),e=a(c[d]),j=(e.offset()||{}).top||0,f=j+e.outerHeight(!0),d===c.length-1&&(i=b.find("li.select2-more-results"),i.length>0&&(f=i.offset().top+i.outerHeight(!0))),g=b.offset().top+b.outerHeight(!0),f>g&&b.scrollTop(b.scrollTop()+(f-g)),h=j-b.offset().top,0>h&&"none"!=e.css("display")&&b.scrollTop(b.scrollTop()+h)}},findHighlightableChoices:function(){return this.results.find(".select2-result-selectable:not(.select2-disabled):not(.select2-selected)")},moveHighlight:function(b){for(var c=this.findHighlightableChoices(),d=this.highlight();d>-1&&d<c.length;){d+=b;var e=a(c[d]);if(e.hasClass("select2-result-selectable")&&!e.hasClass("select2-disabled")&&!e.hasClass("select2-selected")){this.highlight(d);
|
22 |
+
break}}},highlight:function(b){var d,e,c=this.findHighlightableChoices();return 0===arguments.length?p(c.filter(".select2-highlighted")[0],c.get()):(b>=c.length&&(b=c.length-1),0>b&&(b=0),this.removeHighlight(),d=a(c[b]),d.addClass("select2-highlighted"),this.search.attr("aria-activedescendant",d.find(".select2-result-label").attr("id")),this.ensureHighlightVisible(),this.liveRegion.text(d.text()),e=d.data("select2-data"),e&&this.opts.element.trigger({type:"select2-highlight",val:this.id(e),choice:e}),void 0)},removeHighlight:function(){this.results.find(".select2-highlighted").removeClass("select2-highlighted")},touchMoved:function(){this._touchMoved=!0},clearTouchMoved:function(){this._touchMoved=!1},countSelectableResults:function(){return this.findHighlightableChoices().length},highlightUnderEvent:function(b){var c=a(b.target).closest(".select2-result-selectable");if(c.length>0&&!c.is(".select2-highlighted")){var d=this.findHighlightableChoices();this.highlight(d.index(c))}else 0==c.length&&this.removeHighlight()},loadMoreIfNeeded:function(){var c,a=this.results,b=a.find("li.select2-more-results"),d=this.resultsPage+1,e=this,f=this.search.val(),g=this.context;0!==b.length&&(c=b.offset().top-a.offset().top-a.height(),c<=this.opts.loadMorePadding&&(b.addClass("select2-active"),this.opts.query({element:this.opts.element,term:f,page:d,context:g,matcher:this.opts.matcher,callback:this.bind(function(c){e.opened()&&(e.opts.populateResults.call(this,a,c.results,{term:f,page:d,context:g}),e.postprocessResults(c,!1,!1),c.more===!0?(b.detach().appendTo(a).text(K(e.opts.formatLoadMore,e.opts.element,d+1)),window.setTimeout(function(){e.loadMoreIfNeeded()},10)):b.remove(),e.positionDropdown(),e.resultsPage=d,e.context=c.context,this.opts.element.trigger({type:"select2-loaded",items:c}))})})))},tokenize:function(){},updateResults:function(c){function m(){d.removeClass("select2-active"),h.positionDropdown(),e.find(".select2-no-results,.select2-selection-limit,.select2-searching").length?h.liveRegion.text(e.text()):h.liveRegion.text(h.opts.formatMatches(e.find(".select2-result-selectable").length))}function n(a){e.html(a),m()}var g,i,l,d=this.search,e=this.results,f=this.opts,h=this,j=d.val(),k=a.data(this.container,"select2-last-term");if((c===!0||!k||!r(j,k))&&(a.data(this.container,"select2-last-term",j),c===!0||this.showSearchInput!==!1&&this.opened())){l=++this.queryCount;var o=this.getMaximumSelectionSize();if(o>=1&&(g=this.data(),a.isArray(g)&&g.length>=o&&J(f.formatSelectionTooBig,"formatSelectionTooBig")))return n("<li class='select2-selection-limit'>"+K(f.formatSelectionTooBig,f.element,o)+"</li>"),void 0;if(d.val().length<f.minimumInputLength)return J(f.formatInputTooShort,"formatInputTooShort")?n("<li class='select2-no-results'>"+K(f.formatInputTooShort,f.element,d.val(),f.minimumInputLength)+"</li>"):n(""),c&&this.showSearch&&this.showSearch(!0),void 0;if(f.maximumInputLength&&d.val().length>f.maximumInputLength)return J(f.formatInputTooLong,"formatInputTooLong")?n("<li class='select2-no-results'>"+K(f.formatInputTooLong,f.element,d.val(),f.maximumInputLength)+"</li>"):n(""),void 0;f.formatSearching&&0===this.findHighlightableChoices().length&&n("<li class='select2-searching'>"+K(f.formatSearching,f.element)+"</li>"),d.addClass("select2-active"),this.removeHighlight(),i=this.tokenize(),i!=b&&null!=i&&d.val(i),this.resultsPage=1,f.query({element:f.element,term:d.val(),page:this.resultsPage,context:null,matcher:f.matcher,callback:this.bind(function(g){var i;if(l==this.queryCount){if(!this.opened())return this.search.removeClass("select2-active"),void 0;if(g.hasError!==b&&J(f.formatAjaxError,"formatAjaxError"))return n("<li class='select2-ajax-error'>"+K(f.formatAjaxError,f.element,g.jqXHR,g.textStatus,g.errorThrown)+"</li>"),void 0;if(this.context=g.context===b?null:g.context,this.opts.createSearchChoice&&""!==d.val()&&(i=this.opts.createSearchChoice.call(h,d.val(),g.results),i!==b&&null!==i&&h.id(i)!==b&&null!==h.id(i)&&0===a(g.results).filter(function(){return r(h.id(this),h.id(i))}).length&&this.opts.createSearchChoicePosition(g.results,i)),0===g.results.length&&J(f.formatNoMatches,"formatNoMatches"))return n("<li class='select2-no-results'>"+K(f.formatNoMatches,f.element,d.val())+"</li>"),void 0;e.empty(),h.opts.populateResults.call(this,e,g.results,{term:d.val(),page:this.resultsPage,context:null}),g.more===!0&&J(f.formatLoadMore,"formatLoadMore")&&(e.append("<li class='select2-more-results'>"+f.escapeMarkup(K(f.formatLoadMore,f.element,this.resultsPage))+"</li>"),window.setTimeout(function(){h.loadMoreIfNeeded()},10)),this.postprocessResults(g,c),m(),this.opts.element.trigger({type:"select2-loaded",items:g})}})})}},cancel:function(){this.close()},blur:function(){this.opts.selectOnBlur&&this.selectHighlighted({noFocus:!0}),this.close(),this.container.removeClass("select2-container-active"),this.search[0]===document.activeElement&&this.search.blur(),this.clearSearch(),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus")},focusSearch:function(){y(this.search)},selectHighlighted:function(a){if(this._touchMoved)return this.clearTouchMoved(),void 0;var b=this.highlight(),c=this.results.find(".select2-highlighted"),d=c.closest(".select2-result").data("select2-data");d?(this.highlight(b),this.onSelect(d,a)):a&&a.noFocus&&this.close()},getPlaceholder:function(){var a;return this.opts.element.attr("placeholder")||this.opts.element.attr("data-placeholder")||this.opts.element.data("placeholder")||this.opts.placeholder||((a=this.getPlaceholderOption())!==b?a.text():b)},getPlaceholderOption:function(){if(this.select){var c=this.select.children("option").first();if(this.opts.placeholderOption!==b)return"first"===this.opts.placeholderOption&&c||"function"==typeof this.opts.placeholderOption&&this.opts.placeholderOption(this.select);if(""===a.trim(c.text())&&""===c.val())return c}},initContainerWidth:function(){function c(){var c,d,e,f,g,h;if("off"===this.opts.width)return null;if("element"===this.opts.width)return 0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px";if("copy"===this.opts.width||"resolve"===this.opts.width){if(c=this.opts.element.attr("style"),c!==b)for(d=c.split(";"),f=0,g=d.length;g>f;f+=1)if(h=d[f].replace(/\s/g,""),e=h.match(/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i),null!==e&&e.length>=1)return e[1];return"resolve"===this.opts.width?(c=this.opts.element.css("width"),c.indexOf("%")>0?c:0===this.opts.element.outerWidth(!1)?"auto":this.opts.element.outerWidth(!1)+"px"):null}return a.isFunction(this.opts.width)?this.opts.width():this.opts.width}var d=c.call(this);null!==d&&this.container.css("width",d)}}),e=O(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container"}).html(["<a href='javascript:void(0)' class='select2-choice' tabindex='-1'>"," <span class='select2-chosen'> </span><abbr class='select2-search-choice-close'></abbr>"," <span class='select2-arrow' role='presentation'><b role='presentation'></b></span>","</a>","<label for='' class='select2-offscreen'></label>","<input class='select2-focusser select2-offscreen' type='text' aria-haspopup='true' role='button' />","<div class='select2-drop select2-display-none'>"," <div class='select2-search'>"," <label for='' class='select2-offscreen'></label>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input' role='combobox' aria-expanded='true'"," aria-autocomplete='list' />"," </div>"," <ul class='select2-results' role='listbox'>"," </ul>","</div>"].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e))),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),N.call(this,"selection","focusser")},initContainer:function(){var b,h,d=this.container,e=this.dropdown,f=g();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+f),this.focusser.attr("aria-labelledby","select2-chosen-"+f),this.results.attr("id","select2-results-"+f),this.search.attr("aria-owns","select2-results-"+f),this.focusser.attr("id","s2id_autogen"+f),h=a("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(h.text()).attr("for",this.focusser.attr("id"));var i=this.opts.element.attr("title");this.opts.element.attr("title",i||h.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&229!=a.keyCode){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return A(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),A(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return A(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),A(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),A(a),void 0):void 0}})),u(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),B(a),this.close(),this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(c){n(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),A(c)})),e.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),b.on("focus",this.bind(function(a){A(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder(),c.nextSearchTerm=c.opts.nextSearchTerm(a,c.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()===b?!1:(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val()},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=r(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return r(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(L(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),r(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=O(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["<ul class='select2-choices'>"," <li class='select2-search-field'>"," <label for='' class='select2-offscreen'></label>"," <input type='text' autocomplete='off' autocorrect='off' autocapitalize='off' spellcheck='false' class='select2-input'>"," </li>","</ul>","<div class='select2-drop select2-drop-multi select2-display-none'>"," <ul class='select2-results'>"," </ul>","</div>"].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=s(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return r(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c<e.length;c++)for(var g=e[c],h=0;h<f.length;h++){var i=f[h];if(r(g,b.id(i))){a.push(i),f.splice(h,1);break}}d(a)}:a.noop})}),b},selectChoice:function(a){var b=this.container.find(".select2-search-choice-focus");b.length&&a&&a[0]==b[0]||(b.length&&this.opts.element.trigger("choice-deselected",b),b.removeClass("select2-search-choice-focus"),a&&a.length&&(this.close(),a.addClass("select2-search-choice-focus"),this.opts.element.trigger("choice-selected",a)))},destroy:function(){a("label[for='"+this.search.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),N.call(this,"searchContainer","selection")},initContainer:function(){var d,b=".select2-choices";this.searchContainer=this.container.find(".select2-search-field"),this.selection=d=this.container.find(b);var e=this;this.selection.on("click",".select2-search-choice:not(.select2-locked)",function(){e.search[0].focus(),e.selectChoice(a(this))}),this.search.attr("id","s2id_autogen"+g()),this.search.prev().text(a("label[for='"+this.opts.element.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("input paste",this.bind(function(){this.search.attr("placeholder")&&0==this.search.val().length||this.isInterfaceEnabled()&&(this.opened()||this.open())})),this.search.attr("tabindex",this.elementTabIndex),this.keydowns=0,this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){++this.keydowns;var b=d.find(".select2-search-choice-focus"),e=b.prev(".select2-search-choice:not(.select2-locked)"),f=b.next(".select2-search-choice:not(.select2-locked)"),g=z(this.search);if(b.length&&(a.which==c.LEFT||a.which==c.RIGHT||a.which==c.BACKSPACE||a.which==c.DELETE||a.which==c.ENTER)){var h=b;return a.which==c.LEFT&&e.length?h=e:a.which==c.RIGHT?h=f.length?f:null:a.which===c.BACKSPACE?this.unselect(b.first())&&(this.search.width(10),h=e.length?e:f):a.which==c.DELETE?this.unselect(b.first())&&(this.search.width(10),h=f.length?f:null):a.which==c.ENTER&&(h=null),this.selectChoice(h),A(a),h&&h.length||this.open(),void 0}if((a.which===c.BACKSPACE&&1==this.keydowns||a.which==c.LEFT)&&0==g.offset&&!g.length)return this.selectChoice(d.find(".select2-search-choice:not(.select2-locked)").last()),A(a),void 0;if(this.selectChoice(null),this.opened())switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),this.close(),void 0;case c.ESC:return this.cancel(a),A(a),void 0}if(a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.BACKSPACE&&a.which!==c.ESC){if(a.which===c.ENTER){if(this.opts.openOnEnter===!1)return;if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return}this.open(),(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)&&A(a),a.which===c.ENTER&&A(a)}}})),this.search.on("keyup",this.bind(function(){this.keydowns=0,this.resizeSearch()})),this.search.on("blur",this.bind(function(b){this.container.removeClass("select2-container-active"),this.search.removeClass("select2-focused"),this.selectChoice(null),this.opened()||this.clearSearch(),b.stopImmediatePropagation(),this.opts.element.trigger(a.Event("select2-blur"))})),this.container.on("click",b,this.bind(function(b){this.isInterfaceEnabled()&&(a(b.target).closest(".select2-search-choice").length>0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){p(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&""!==a.text&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.clearSearch(),this.updateResults(),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("<li class='select2-search-choice'> <div></div> <a href='#' class='select2-search-choice-close' tabindex='-1'></a></li>"),f=a("<li class='select2-search-choice select2-locked'><div></div></li>"),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("<div>"+j+"</div>"),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",A).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),A(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){var f=a.Event("select2-removing");if(f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented())return!1;for(;(e=p(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));p(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&J(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("<li class='select2-no-results'>"+K(g.opts.formatNoMatches,g.opts.element,g.search.val())+"</li>")},getMaxSearchWidth:function(){return this.selection.width()-t(this.search)},resizeSearch:function(){var a,b,c,d,e,f=t(this.search);a=C(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),s(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){p(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c<b.length;c++)for(var d=0;d<a.length;d++)r(this.opts.id(b[c]),this.opts.id(a[d]))&&(b.splice(c,1),c>0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to <select>. Attach to <input type='hidden'/> instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,e,f,g,h,c=Array.prototype.slice.call(arguments,0),i=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],j=["opened","isFocused","container","dropdown"],k=["val","data"],l={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?h=d.element.prop("multiple"):(h=d.multiple||!1,"tags"in d&&(d.multiple=h=!0)),e=h?new window.Select2["class"].multi:new window.Select2["class"].single,e.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(p(c[0],i)<0)throw"Unknown method: "+c[0];if(g=b,e=a(this).data("select2"),e===b)return;if(f=c[0],"container"===f?g=e.container:"dropdown"===f?g=e.dropdown:(l[f]&&(f=l[f]),g=e[f].apply(e,c.slice(1))),p(c[0],j)>=0||p(c[0],k)>=0&&1==c.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return E(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},matcher:function(a,b){return o(""+b).toUpperCase().indexOf(o(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:M,escapeMarkup:F,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){var b="ontouchstart"in window||navigator.msMaxTouchPoints>0;return b?a.opts.minimumResultsForSearch<0?!1:!0:!0}},a.fn.select2.locales=[],a.fn.select2.locales.en={formatMatches:function(a){return 1===a?"One result is available, press enter to select it.":a+" results are available, use up and down arrow keys to navigate."
|
23 |
+
},formatNoMatches:function(){return"No matches found"},formatAjaxError:function(){return"Loading failed"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results\u2026"},formatSearching:function(){return"Searching\u2026"}},a.extend(a.fn.select2.defaults,a.fn.select2.locales.en),a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:G,local:H,tags:I},util:{debounce:w,markMatch:E,escapeMarkup:F,stripDiacritics:o},"class":{"abstract":d,single:e,multi:f}}}}(jQuery);
|
js/select2/select2.png
ADDED
Binary file
|
js/select2/select2x2.png
ADDED
Binary file
|
languages/wp-security-audit-log.pot
CHANGED
@@ -3,14 +3,14 @@ msgid ""
|
|
3 |
msgstr ""
|
4 |
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
5 |
"Project-Id-Version: WP Security Audit Log\n"
|
6 |
-
"POT-Creation-Date: 2018-
|
7 |
-
"PO-Revision-Date: 2018-
|
8 |
"Last-Translator: \n"
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
-
"X-Generator: Poedit 2.
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
|
16 |
"X-Poedit-WPHeader: wp-security-audit-log.php\n"
|
@@ -21,428 +21,226 @@ msgstr ""
|
|
21 |
"X-Poedit-SearchPath-0: .\n"
|
22 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
23 |
|
24 |
-
|
25 |
-
#: classes/AlertManager.php:256
|
26 |
-
#, php-format
|
27 |
-
msgid "Event with code %d has not be registered."
|
28 |
-
msgstr ""
|
29 |
-
|
30 |
-
#: classes/AlertManager.php:311
|
31 |
-
#, php-format
|
32 |
-
msgid "Event %s already registered with WP Security Audit Log."
|
33 |
-
msgstr ""
|
34 |
-
|
35 |
-
#: classes/AlertManager.php:346
|
36 |
-
msgid ""
|
37 |
-
"You have custom events that are using the same ID or IDs which are already "
|
38 |
-
"registered in the plugin, so they have been disabled."
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: classes/AlertManager.php:349
|
42 |
-
#, php-format
|
43 |
-
msgid "%4$s to help you solve this issue."
|
44 |
-
msgstr ""
|
45 |
-
|
46 |
-
#: classes/AlertManager.php:351
|
47 |
-
msgid "ERROR:"
|
48 |
-
msgstr ""
|
49 |
-
|
50 |
-
#: classes/AlertManager.php:353
|
51 |
-
msgid "Contact us"
|
52 |
-
msgstr ""
|
53 |
-
|
54 |
-
#: classes/AuditLogListView.php:92
|
55 |
msgid "No events so far."
|
56 |
msgstr ""
|
57 |
|
58 |
-
#: classes/AuditLogListView.php:
|
59 |
msgid "Show "
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: classes/AuditLogListView.php:
|
63 |
msgid " Items"
|
64 |
msgstr ""
|
65 |
|
66 |
-
#: classes/AuditLogListView.php:
|
67 |
-
#: classes/Views/AuditLog.php:
|
68 |
msgid "All Sites"
|
69 |
msgstr ""
|
70 |
|
71 |
-
#: classes/AuditLogListView.php:
|
72 |
msgid "Live Database"
|
73 |
msgstr ""
|
74 |
|
75 |
-
#: classes/AuditLogListView.php:
|
76 |
msgid "Archive Database"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: classes/AuditLogListView.php:
|
80 |
-
#: classes/WidgetManager.php:86
|
81 |
msgid "User"
|
82 |
msgstr ""
|
83 |
|
84 |
-
#: classes/AuditLogListView.php:
|
85 |
msgid "Username"
|
86 |
msgstr ""
|
87 |
|
88 |
-
#: classes/AuditLogListView.php:
|
89 |
-
|
90 |
-
msgid "Event ID"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: classes/AuditLogListView.php:
|
94 |
-
#: classes/Views/Settings.php:1008 classes/Views/ToggleAlerts.php:289
|
95 |
msgid "Severity"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: classes/AuditLogListView.php:
|
99 |
msgid "Date"
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: classes/AuditLogListView.php:
|
103 |
msgid "Source IP"
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: classes/AuditLogListView.php:
|
107 |
msgid "Site"
|
108 |
msgstr ""
|
109 |
|
110 |
-
#: classes/AuditLogListView.php:
|
111 |
msgid "Message"
|
112 |
msgstr ""
|
113 |
|
114 |
-
#: classes/AuditLogListView.php:
|
115 |
msgid "Click to toggle."
|
116 |
msgstr ""
|
117 |
|
118 |
-
#: classes/AuditLogListView.php:
|
119 |
-
msgid "Disable this type of
|
120 |
msgstr ""
|
121 |
|
122 |
-
#: classes/AuditLogListView.php:
|
123 |
msgid "Unknown error code."
|
124 |
msgstr ""
|
125 |
|
126 |
-
#: classes/AuditLogListView.php:
|
127 |
-
msgid "
|
128 |
-
msgstr ""
|
129 |
-
|
130 |
-
#: classes/AuditLogListView.php:383
|
131 |
-
msgid "Warning"
|
132 |
-
msgstr ""
|
133 |
-
|
134 |
-
#: classes/AuditLogListView.php:385
|
135 |
-
msgid "Notification"
|
136 |
msgstr ""
|
137 |
|
138 |
-
#: classes/AuditLogListView.php:
|
139 |
msgid "Unknown"
|
140 |
msgstr ""
|
141 |
|
142 |
-
#: classes/AuditLogListView.php:
|
143 |
-
msgid "Show me all activity by this User"
|
144 |
-
msgstr ""
|
145 |
-
|
146 |
-
#: classes/AuditLogListView.php:438 classes/Views/Licensing.php:113
|
147 |
#: classes/Views/Licensing.php:153
|
148 |
msgid "Plugin"
|
149 |
msgstr ""
|
150 |
|
151 |
-
#: classes/AuditLogListView.php:
|
152 |
msgid "Plugins"
|
153 |
msgstr ""
|
154 |
|
155 |
-
#: classes/AuditLogListView.php:
|
156 |
msgid "Website Visitor"
|
157 |
msgstr ""
|
158 |
|
159 |
-
#: classes/AuditLogListView.php:
|
160 |
-
#: classes/Views/ToggleAlerts.php:417 defaults.php:380
|
161 |
msgid "System"
|
162 |
msgstr ""
|
163 |
|
164 |
-
#: classes/AuditLogListView.php:
|
165 |
msgid "Show me all activity originating from this IP Address"
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: classes/AuditLogListView.php:
|
169 |
msgid "View all details of this change"
|
170 |
msgstr ""
|
171 |
|
172 |
-
#: classes/AuditLogListView.php:
|
173 |
-
#: classes/Settings.php:1606
|
174 |
msgid "Alert Data Inspector"
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: classes/AuditLogListView.php:
|
178 |
-
msgid "Download the log file"
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: classes/AuditLogListView.php:634 classes/Settings.php:1570
|
182 |
msgid "Download the log file."
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: classes/AuditLogListView.php:
|
186 |
msgid "published"
|
187 |
msgstr ""
|
188 |
|
189 |
-
|
190 |
-
#: classes/AuditLogListView.php:670 classes/Settings.php:1617
|
191 |
-
#, php-format
|
192 |
-
msgid "Contact us on %s for assistance"
|
193 |
-
msgstr ""
|
194 |
-
|
195 |
-
#: classes/AuditLogListView.php:868
|
196 |
-
msgid "Select All"
|
197 |
-
msgstr ""
|
198 |
-
|
199 |
-
#: classes/Connector/wp-db-custom.php:207
|
200 |
-
msgid "Error establishing a database connection"
|
201 |
-
msgstr ""
|
202 |
-
|
203 |
-
#. translators: 1: wp-config.php. 2: database host
|
204 |
-
#: classes/Connector/wp-db-custom.php:211
|
205 |
-
#, php-format
|
206 |
-
msgid ""
|
207 |
-
"This either means that the username and password information in your %1$s "
|
208 |
-
"file is incorrect or we can’t contact the database server at %2$s. "
|
209 |
-
"This could mean your host’s database server is down."
|
210 |
-
msgstr ""
|
211 |
-
|
212 |
-
#: classes/Connector/wp-db-custom.php:217
|
213 |
-
msgid "Are you sure you have the correct username and password?"
|
214 |
-
msgstr ""
|
215 |
-
|
216 |
-
#: classes/Connector/wp-db-custom.php:218
|
217 |
-
msgid "Are you sure that you have typed the correct hostname?"
|
218 |
-
msgstr ""
|
219 |
-
|
220 |
-
#: classes/Connector/wp-db-custom.php:219
|
221 |
-
msgid "Are you sure that the database server is running?"
|
222 |
-
msgstr ""
|
223 |
-
|
224 |
-
#. translators: %s: support forums URL
|
225 |
-
#: classes/Connector/wp-db-custom.php:224
|
226 |
-
#, php-format
|
227 |
-
msgid ""
|
228 |
-
"If you’re unsure what these terms mean you should probably contact "
|
229 |
-
"your host. If you still need help you can always visit the <a href=\"%s"
|
230 |
-
"\">WordPress Support Forums</a>."
|
231 |
-
msgstr ""
|
232 |
-
|
233 |
-
#: classes/Connector/wp-db-custom.php:225
|
234 |
-
msgid "https://wordpress.org/support/"
|
235 |
-
msgstr ""
|
236 |
-
|
237 |
-
#: classes/Loggers/Database.php:243 classes/Views/EmailNotifications.php:153
|
238 |
#: classes/Views/EmailNotifications.php:185 classes/Views/ExternalDB.php:152
|
239 |
-
#: classes/Views/ExternalDB.php:184 classes/Views/Help.php:
|
240 |
-
#: classes/Views/Help.php:
|
241 |
#: classes/Views/LogInUsers.php:186 classes/Views/Reports.php:153
|
242 |
#: classes/Views/Reports.php:185 classes/Views/Search.php:153
|
243 |
#: classes/Views/Search.php:178
|
244 |
msgid "Upgrade to Premium"
|
245 |
msgstr ""
|
246 |
|
247 |
-
#: classes/Loggers/Database.php:
|
|
|
248 |
#: classes/Views/EmailNotifications.php:186 classes/Views/ExternalDB.php:153
|
249 |
-
#: classes/Views/ExternalDB.php:185 classes/Views/Help.php:
|
250 |
#: classes/Views/LogInUsers.php:155 classes/Views/LogInUsers.php:187
|
251 |
#: classes/Views/Reports.php:154 classes/Views/Reports.php:186
|
252 |
#: classes/Views/Search.php:154 classes/Views/Search.php:179
|
253 |
msgid "More Information"
|
254 |
msgstr ""
|
255 |
|
256 |
-
#: classes/Sensors/Content.php:
|
257 |
-
#: classes/Sensors/WooCommerce.php:
|
258 |
msgid "Password Protected"
|
259 |
msgstr ""
|
260 |
|
261 |
-
#: classes/Sensors/Content.php:
|
262 |
msgid "Public"
|
263 |
msgstr ""
|
264 |
|
265 |
-
#: classes/Sensors/Content.php:
|
266 |
msgid "Private"
|
267 |
msgstr ""
|
268 |
|
269 |
-
#: classes/Sensors/WooCommerce.php:
|
270 |
msgid "In stock"
|
271 |
msgstr ""
|
272 |
|
273 |
-
#: classes/Sensors/WooCommerce.php:
|
274 |
msgid "Out of stock"
|
275 |
msgstr ""
|
276 |
|
277 |
-
#: classes/Settings.php:
|
278 |
msgid "This function is deprecated"
|
279 |
msgstr ""
|
280 |
|
281 |
#: classes/Views/AuditLog.php:78
|
282 |
msgid ""
|
283 |
-
"Get instantly alerted of important changes via email, do text based searches "
|
284 |
-
"and filter results, generate reports, see who is logged in and more!"
|
285 |
-
msgstr ""
|
286 |
-
|
287 |
-
#: classes/Views/AuditLog.php:79
|
288 |
-
msgid "Upgrade to premium to unlock these powerful activity log features."
|
289 |
-
msgstr ""
|
290 |
-
|
291 |
-
#: classes/Views/AuditLog.php:82
|
292 |
-
msgid ""
|
293 |
-
"Instant email notifications, search & filters, reports, users sessions "
|
294 |
-
"management, integration tools and more!"
|
295 |
-
msgstr ""
|
296 |
-
|
297 |
-
#: classes/Views/AuditLog.php:83
|
298 |
-
msgid ""
|
299 |
-
"Upgrade to unlock these powerful features and gain more from your activity "
|
300 |
-
"logs."
|
301 |
-
msgstr ""
|
302 |
-
|
303 |
-
#: classes/Views/AuditLog.php:86
|
304 |
-
msgid ""
|
305 |
"See who is logged in to your WordPress, create user productivity reports, "
|
306 |
"get alerted via email of important changes and more!"
|
307 |
msgstr ""
|
308 |
|
309 |
-
#: classes/Views/AuditLog.php:
|
310 |
msgid ""
|
311 |
"Unlock these powerful features and much more with the premium edition of WP "
|
312 |
"Security Audit Log."
|
313 |
msgstr ""
|
314 |
|
315 |
-
#: classes/Views/AuditLog.php:
|
316 |
-
msgid "
|
317 |
msgstr ""
|
318 |
|
319 |
-
#: classes/Views/AuditLog.php:
|
320 |
-
msgid "Tell me more"
|
321 |
-
msgstr ""
|
322 |
-
|
323 |
-
#: classes/Views/AuditLog.php:153
|
324 |
-
msgid "Dismiss the banner"
|
325 |
-
msgstr ""
|
326 |
-
|
327 |
-
#: classes/Views/AuditLog.php:181
|
328 |
msgid ""
|
329 |
"There are connectivity issues with the database where the WordPress activity "
|
330 |
"log is stored. The logs will be temporary buffered in the WordPress database "
|
331 |
"until the connection is fully restored."
|
332 |
msgstr ""
|
333 |
|
334 |
-
#: classes/Views/AuditLog.php:
|
335 |
-
msgid ""
|
336 |
-
"Help us improve WP Security Audit Log! Opt-in to sending us diagnostic non-"
|
337 |
-
"sensitive data about your plugin usage (<strong>no activity log data is "
|
338 |
-
"sent</strong>) and subscribe to our newsletter."
|
339 |
-
msgstr ""
|
340 |
-
|
341 |
-
#: classes/Views/AuditLog.php:201
|
342 |
-
msgid "Opt-In"
|
343 |
-
msgstr ""
|
344 |
-
|
345 |
-
#: classes/Views/AuditLog.php:203
|
346 |
-
msgid "Learn More"
|
347 |
-
msgstr ""
|
348 |
-
|
349 |
-
#: classes/Views/AuditLog.php:205 classes/Views/AuditLog.php:384
|
350 |
-
#: classes/Views/Settings.php:465 classes/Views/Settings.php:492
|
351 |
-
#: classes/Views/Settings.php:558 classes/Views/Settings.php:596
|
352 |
-
#: classes/Views/Settings.php:1076 classes/Views/Settings.php:1144
|
353 |
-
#: classes/Views/Settings.php:1790 classes/Views/Settings.php:1853
|
354 |
-
#: classes/Views/Settings.php:1881 classes/Views/Settings.php:1896
|
355 |
-
#: classes/Views/Settings.php:1906 classes/Views/SetupWizard.php:520
|
356 |
-
msgid "No"
|
357 |
-
msgstr ""
|
358 |
-
|
359 |
-
#: classes/Views/AuditLog.php:245 classes/Views/AuditLog.php:261
|
360 |
msgid "Audit Log Viewer"
|
361 |
msgstr ""
|
362 |
|
363 |
-
#: classes/Views/AuditLog.php:
|
364 |
-
#: classes/Views/Settings.php:
|
365 |
msgid "You do not have sufficient permissions to access this page."
|
366 |
msgstr ""
|
367 |
|
368 |
-
#: classes/Views/AuditLog.php:
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
"
|
373 |
-
msgstr ""
|
374 |
-
|
375 |
-
#: classes/Views/AuditLog.php:383 classes/Views/Settings.php:460
|
376 |
-
#: classes/Views/Settings.php:487 classes/Views/Settings.php:528
|
377 |
-
#: classes/Views/Settings.php:586 classes/Views/Settings.php:1070
|
378 |
-
#: classes/Views/Settings.php:1137 classes/Views/Settings.php:1785
|
379 |
-
#: classes/Views/Settings.php:1846 classes/Views/Settings.php:1874
|
380 |
-
#: classes/Views/Settings.php:1895 classes/Views/Settings.php:1905
|
381 |
-
#: classes/Views/SetupWizard.php:525
|
382 |
-
msgid "Yes"
|
383 |
msgstr ""
|
384 |
|
385 |
-
#: classes/Views/AuditLog.php:
|
386 |
msgid "Please enter the number of alerts you would like to see on one page:"
|
387 |
msgstr ""
|
388 |
|
389 |
-
#: classes/Views/AuditLog.php:
|
390 |
msgid "No Results"
|
391 |
msgstr ""
|
392 |
|
393 |
-
#: classes/Views/AuditLog.php:
|
394 |
msgid "No users found."
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: classes/Views/AuditLog.php:
|
398 |
-
#: classes/Views/AuditLog.php:734 classes/Views/AuditLog.php:1024
|
399 |
-
#: classes/Views/Licensing.php:90 classes/Views/Settings.php:238
|
400 |
-
#: classes/Views/Settings.php:324 classes/Views/Settings.php:2052
|
401 |
-
#: classes/Views/Settings.php:2080 classes/Views/Settings.php:2110
|
402 |
-
#: classes/Views/Settings.php:2149 classes/Views/Settings.php:2151
|
403 |
-
#: classes/Views/Settings.php:2153 classes/Views/Settings.php:2260
|
404 |
-
#: classes/Views/Settings.php:2262 classes/Views/Settings.php:2264
|
405 |
-
#: classes/Views/Settings.php:2354 classes/Views/Settings.php:2421
|
406 |
-
#: classes/Views/SetupWizard.php:81
|
407 |
-
msgid "Nonce verification failed."
|
408 |
-
msgstr ""
|
409 |
-
|
410 |
-
#: classes/Views/AuditLog.php:650
|
411 |
msgid "Log file does not exist."
|
412 |
msgstr ""
|
413 |
|
414 |
-
#: classes/Views/AuditLog.php:
|
415 |
msgid "Request to get log file failed."
|
416 |
msgstr ""
|
417 |
|
418 |
-
#: classes/Views/AuditLog.php:
|
419 |
-
msgid "
|
420 |
-
msgstr ""
|
421 |
-
|
422 |
-
#: classes/Views/AuditLog.php:781
|
423 |
-
msgid "Freemius opt choice not found."
|
424 |
-
msgstr ""
|
425 |
-
|
426 |
-
#: classes/Views/AuditLog.php:938
|
427 |
-
msgid "WordPress Activity Log"
|
428 |
-
msgstr ""
|
429 |
-
|
430 |
-
#: classes/Views/AuditLog.php:939
|
431 |
-
msgid ""
|
432 |
-
"When a user makes a change on your website the plugin will keep a record of "
|
433 |
-
"that event here. Right now there is nothing because this is a new install."
|
434 |
-
msgstr ""
|
435 |
-
|
436 |
-
#: classes/Views/AuditLog.php:940
|
437 |
-
msgid "Thank you for using WP Security Audit Log"
|
438 |
-
msgstr ""
|
439 |
-
|
440 |
-
#: classes/Views/AuditLog.php:961
|
441 |
-
msgid "Error: You do not have sufficient permissions to exclude this URL."
|
442 |
-
msgstr ""
|
443 |
-
|
444 |
-
#: classes/Views/AuditLog.php:1007
|
445 |
-
msgid "You do not have sufficient permissions to dismiss this notice."
|
446 |
msgstr ""
|
447 |
|
448 |
#: classes/Views/EmailNotifications.php:28
|
@@ -539,7 +337,7 @@ msgstr ""
|
|
539 |
|
540 |
#: classes/Views/ExternalDB.php:121
|
541 |
msgid ""
|
542 |
-
"Configure archiving rules to archive old
|
543 |
msgstr ""
|
544 |
|
545 |
#: classes/Views/ExternalDB.php:167 classes/Views/ExternalDB.php:168
|
@@ -555,19 +353,14 @@ msgid ""
|
|
555 |
msgstr ""
|
556 |
|
557 |
#: classes/Views/Help.php:30 classes/Views/Help.php:44
|
558 |
-
#: classes/Views/Help.php:86
|
559 |
msgid "Help"
|
560 |
msgstr ""
|
561 |
|
562 |
-
#: classes/Views/Help.php:
|
563 |
-
msgid "System Info"
|
564 |
-
msgstr ""
|
565 |
-
|
566 |
-
#: classes/Views/Help.php:97
|
567 |
msgid "Getting Started"
|
568 |
msgstr ""
|
569 |
|
570 |
-
#: classes/Views/Help.php:
|
571 |
msgid ""
|
572 |
"Getting started with WP Security Audit Log is really easy; once the plugin "
|
573 |
"is installed it will automatically keep a log of everything that is "
|
@@ -575,126 +368,126 @@ msgid ""
|
|
575 |
"video below for a quick overview of the plugin."
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: classes/Views/Help.php:
|
579 |
msgid "Plugin Support"
|
580 |
msgstr ""
|
581 |
|
582 |
-
#: classes/Views/Help.php:
|
583 |
msgid ""
|
584 |
"Have you encountered or noticed any issues while using WP Security Audit Log "
|
585 |
"plugin?"
|
586 |
msgstr ""
|
587 |
|
588 |
-
#: classes/Views/Help.php:
|
589 |
msgid ""
|
590 |
"Or you want to report something to us? Click any of the options below to "
|
591 |
"post on the plugin's forum or contact our support directly."
|
592 |
msgstr ""
|
593 |
|
594 |
-
#: classes/Views/Help.php:
|
595 |
msgid "Free Support Forum"
|
596 |
msgstr ""
|
597 |
|
598 |
-
#: classes/Views/Help.php:
|
599 |
msgid "Free Support Email"
|
600 |
msgstr ""
|
601 |
|
602 |
-
#: classes/Views/Help.php:
|
603 |
msgid "Plugin Documentation"
|
604 |
msgstr ""
|
605 |
|
606 |
-
#: classes/Views/Help.php:
|
607 |
msgid ""
|
608 |
"For more technical information about the WP Security Audit Log plugin please "
|
609 |
"visit the plugin’s knowledge base."
|
610 |
msgstr ""
|
611 |
|
612 |
-
#: classes/Views/Help.php:
|
613 |
msgid ""
|
614 |
-
"Refer to the list of WordPress security
|
615 |
"and IDs that the plugin uses to keep a log of all the changes in the "
|
616 |
"WordPress audit log."
|
617 |
msgstr ""
|
618 |
|
619 |
-
#: classes/Views/Help.php:
|
620 |
msgid "Plugin Website"
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: classes/Views/Help.php:
|
624 |
msgid "Knowledge Base"
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: classes/Views/Help.php:
|
628 |
-
msgid "List of WordPress Security
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: classes/Views/Help.php:
|
632 |
msgid "Rate WP Security Audit Log"
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: classes/Views/Help.php:
|
636 |
msgid ""
|
637 |
"We work really hard to deliver a plugin that enables you to keep a record of "
|
638 |
"all the changes that are happening on your WordPress."
|
639 |
msgstr ""
|
640 |
|
641 |
-
#: classes/Views/Help.php:
|
642 |
msgid ""
|
643 |
"It takes thousands of man-hours every year and endless amount of dedication "
|
644 |
"to research, develop and maintain the free edition of WP Security Audit Log."
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: classes/Views/Help.php:
|
648 |
msgid ""
|
649 |
"Therefore if you like what you see, and find WP Security Audit Log useful we "
|
650 |
"ask you nothing more than to please rate our plugin."
|
651 |
msgstr ""
|
652 |
|
653 |
-
#: classes/Views/Help.php:
|
654 |
msgid "We appreciate every star!"
|
655 |
msgstr ""
|
656 |
|
657 |
-
#: classes/Views/Help.php:
|
658 |
msgid "Rate Plugin"
|
659 |
msgstr ""
|
660 |
|
661 |
-
#: classes/Views/Help.php:
|
662 |
msgid "See who is logged in"
|
663 |
msgstr ""
|
664 |
|
665 |
-
#: classes/Views/Help.php:
|
666 |
msgid "And remotely terminate sessions"
|
667 |
msgstr ""
|
668 |
|
669 |
-
#: classes/Views/Help.php:
|
670 |
msgid "Generate reports"
|
671 |
msgstr ""
|
672 |
|
673 |
-
#: classes/Views/Help.php:
|
674 |
msgid "Or configure automated email reports"
|
675 |
msgstr ""
|
676 |
|
677 |
-
#: classes/Views/Help.php:
|
678 |
msgid "Configure email notifications"
|
679 |
msgstr ""
|
680 |
|
681 |
-
#: classes/Views/Help.php:
|
682 |
msgid "Get instantly notified of important changes"
|
683 |
msgstr ""
|
684 |
|
685 |
-
#: classes/Views/Help.php:
|
686 |
msgid "Add Search"
|
687 |
msgstr ""
|
688 |
|
689 |
-
#: classes/Views/Help.php:
|
690 |
msgid "Easily track down suspicious behaviour"
|
691 |
msgstr ""
|
692 |
|
693 |
-
#: classes/Views/Help.php:
|
694 |
msgid "Integrate & Centralise"
|
695 |
msgstr ""
|
696 |
|
697 |
-
#: classes/Views/Help.php:
|
698 |
msgid "Export the logs to your centralised logging system"
|
699 |
msgstr ""
|
700 |
|
@@ -702,12 +495,12 @@ msgstr ""
|
|
702 |
msgid "Licensing"
|
703 |
msgstr ""
|
704 |
|
705 |
-
#: classes/Views/Licensing.php:96 classes/Views/Settings.php:
|
706 |
#: classes/Views/ToggleAlerts.php:92
|
707 |
msgid "Settings have been saved."
|
708 |
msgstr ""
|
709 |
|
710 |
-
#: classes/Views/Licensing.php:101 classes/Views/Settings.php:
|
711 |
#: classes/Views/ToggleAlerts.php:98
|
712 |
msgid "Error: "
|
713 |
msgstr ""
|
@@ -867,99 +660,117 @@ msgid ""
|
|
867 |
"to fine tune the search results."
|
868 |
msgstr ""
|
869 |
|
870 |
-
#: classes/Views/Settings.php:
|
871 |
-
msgid "
|
872 |
msgstr ""
|
873 |
|
874 |
-
#: classes/Views/Settings.php:
|
875 |
-
msgid "
|
876 |
msgstr ""
|
877 |
|
878 |
-
#: classes/Views/Settings.php:
|
879 |
-
msgid "
|
880 |
msgstr ""
|
881 |
|
882 |
-
#: classes/Views/Settings.php:
|
883 |
msgid "Exclude Objects"
|
884 |
msgstr ""
|
885 |
|
886 |
-
#: classes/Views/Settings.php:
|
887 |
-
msgid "
|
888 |
msgstr ""
|
889 |
|
890 |
-
#: classes/Views/Settings.php:
|
891 |
-
|
892 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
893 |
msgstr ""
|
894 |
|
895 |
-
#: classes/Views/Settings.php:
|
896 |
-
msgid "
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: classes/Views/Settings.php:
|
900 |
-
|
901 |
-
msgid "Access Denied."
|
902 |
msgstr ""
|
903 |
|
904 |
-
#: classes/Views/Settings.php:
|
905 |
-
msgid "
|
906 |
msgstr ""
|
907 |
|
908 |
-
#: classes/Views/Settings.php:
|
909 |
-
|
|
|
|
|
|
|
|
|
|
|
910 |
msgstr ""
|
911 |
|
912 |
-
#: classes/Views/Settings.php:
|
913 |
-
msgid "
|
914 |
msgstr ""
|
915 |
|
916 |
-
#: classes/Views/Settings.php:
|
917 |
msgid ""
|
918 |
-
"
|
919 |
-
"
|
920 |
-
"
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: classes/Views/Settings.php:
|
924 |
-
msgid "
|
925 |
msgstr ""
|
926 |
|
927 |
-
|
928 |
-
#: classes/Views/Settings.php:446
|
929 |
-
#, php-format
|
930 |
msgid ""
|
931 |
-
"
|
932 |
-
"and the admin bar notification displays the latest event."
|
933 |
msgstr ""
|
934 |
|
935 |
-
#: classes/Views/Settings.php:
|
936 |
-
msgid "
|
937 |
msgstr ""
|
938 |
|
939 |
-
#: classes/Views/Settings.php:
|
940 |
-
msgid "
|
941 |
msgstr ""
|
942 |
|
943 |
-
#: classes/Views/Settings.php:
|
944 |
-
msgid "
|
945 |
msgstr ""
|
946 |
|
947 |
-
#: classes/Views/Settings.php:
|
948 |
-
msgid "
|
|
|
|
|
949 |
msgstr ""
|
950 |
|
951 |
-
#: classes/Views/Settings.php:
|
952 |
msgid ""
|
953 |
-
"
|
954 |
-
"
|
955 |
-
"
|
956 |
msgstr ""
|
957 |
|
958 |
-
#: classes/Views/Settings.php:
|
959 |
msgid "Login Page Notification"
|
960 |
msgstr ""
|
961 |
|
962 |
-
#: classes/Views/Settings.php:
|
963 |
msgid ""
|
964 |
"For security and auditing purposes, a record of all of your logged-in "
|
965 |
"actions and changes within the WordPress dashboard will be recorded in an "
|
@@ -968,4562 +779,3297 @@ msgid ""
|
|
968 |
"IP address where you accessed this site from."
|
969 |
msgstr ""
|
970 |
|
971 |
-
#: classes/Views/Settings.php:
|
972 |
-
msgid "<strong>Note: </strong>"
|
973 |
-
msgstr ""
|
974 |
-
|
975 |
-
#: classes/Views/Settings.php:552
|
976 |
msgid ""
|
977 |
-
"
|
978 |
-
"
|
|
|
979 |
msgstr ""
|
980 |
|
981 |
-
#: classes/Views/Settings.php:
|
982 |
-
msgid "
|
983 |
msgstr ""
|
984 |
|
985 |
-
|
986 |
-
#: classes/Views/Settings.php:573
|
987 |
-
#, php-format
|
988 |
msgid ""
|
989 |
-
"
|
990 |
-
"
|
991 |
msgstr ""
|
992 |
|
993 |
-
#: classes/Views/Settings.php:
|
994 |
-
msgid "
|
995 |
msgstr ""
|
996 |
|
997 |
-
#: classes/Views/Settings.php:
|
998 |
-
msgid "
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: classes/Views/Settings.php:
|
1002 |
msgid ""
|
1003 |
-
"
|
1004 |
-
"
|
1005 |
-
"
|
1006 |
-
msgstr ""
|
1007 |
-
|
1008 |
-
#: classes/Views/Settings.php:607
|
1009 |
-
msgid "Who can change the plugin settings?"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
-
#: classes/Views/Settings.php:
|
1013 |
-
msgid ""
|
1014 |
-
"By default only users with administrator or super administrator (multisite) "
|
1015 |
-
"roles can change the settings of the plugin. Though you can change these "
|
1016 |
-
"privileges from this section."
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: classes/Views/Settings.php:
|
1020 |
-
msgid "
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: classes/Views/Settings.php:
|
1024 |
-
msgid "
|
|
|
|
|
1025 |
msgstr ""
|
1026 |
|
1027 |
-
#: classes/Views/Settings.php:
|
1028 |
-
msgid "
|
1029 |
msgstr ""
|
1030 |
|
1031 |
-
#: classes/Views/Settings.php:
|
1032 |
-
msgid "
|
1033 |
msgstr ""
|
1034 |
|
1035 |
-
#: classes/Views/Settings.php:
|
1036 |
msgid ""
|
1037 |
-
"
|
1038 |
-
"
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: classes/Views/Settings.php:
|
1042 |
-
msgid "
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: classes/Views/Settings.php:
|
1046 |
msgid ""
|
1047 |
-
"
|
1048 |
-
"role can view the WordPress activity log. Though you can allow other users "
|
1049 |
-
"with no admin role to view the events."
|
1050 |
-
msgstr ""
|
1051 |
-
|
1052 |
-
#: classes/Views/Settings.php:673
|
1053 |
-
msgid "Can View Events"
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: classes/Views/Settings.php:
|
1057 |
msgid ""
|
1058 |
-
"
|
1059 |
-
"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: classes/Views/Settings.php:
|
1063 |
-
msgid "
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: classes/Views/Settings.php:
|
1067 |
-
msgid ""
|
1068 |
-
"By default when the plugin sends an email notification it uses the email "
|
1069 |
-
"address specified in this website’s general settings. Though you can change "
|
1070 |
-
"the email address and display name from this section."
|
1071 |
msgstr ""
|
1072 |
|
1073 |
-
#: classes/Views/Settings.php:
|
1074 |
-
msgid "
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: classes/Views/Settings.php:
|
1078 |
-
msgid "
|
1079 |
msgstr ""
|
1080 |
|
1081 |
-
#: classes/Views/Settings.php:
|
1082 |
-
msgid "
|
1083 |
msgstr ""
|
1084 |
|
1085 |
-
#: classes/Views/Settings.php:
|
1086 |
-
msgid "
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: classes/Views/Settings.php:
|
1090 |
-
msgid "
|
1091 |
msgstr ""
|
1092 |
|
1093 |
-
#: classes/Views/Settings.php:
|
1094 |
-
msgid "
|
1095 |
msgstr ""
|
1096 |
|
1097 |
-
#: classes/Views/Settings.php:
|
1098 |
-
msgid ""
|
1099 |
-
"By default all installed plugins are listed in the plugins page. If you do "
|
1100 |
-
"not want other administrators to see that you installed this plugin set this "
|
1101 |
-
"option to Yes so the WP Security Audit Log is not listed as an installed "
|
1102 |
-
"plugin on this website."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: classes/Views/Settings.php:
|
1106 |
-
msgid "
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: classes/Views/Settings.php:
|
1110 |
-
|
|
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: classes/Views/Settings.php:
|
1114 |
-
msgid "
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: classes/Views/Settings.php:
|
1118 |
-
msgid ""
|
1119 |
-
"For how long do you want to keep the activity log events (Retention "
|
1120 |
-
"settings) ?"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: classes/Views/Settings.php:
|
1124 |
-
msgid ""
|
1125 |
-
"The plugin uses an efficient way to store the activity log data in the "
|
1126 |
-
"WordPress database, though the more data you keep the more disk space will "
|
1127 |
-
"be required. "
|
1128 |
msgstr ""
|
1129 |
|
1130 |
-
#: classes/Views/Settings.php:
|
1131 |
-
msgid ""
|
1132 |
-
"<a href=\"https://www.wpsecurityauditlog.com/pricing/\" target=\"_blank"
|
1133 |
-
"\">Upgrade to Premium</a> to store the activity log data in an external "
|
1134 |
-
"database."
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
|
1138 |
-
|
1139 |
-
#, php-format
|
1140 |
-
msgid ""
|
1141 |
-
"Retention settings moved to %1$s archiving settings %2$s because archiving "
|
1142 |
-
"is enabled"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: classes/Views/Settings.php:
|
1146 |
-
msgid "Audit Log
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: classes/Views/Settings.php:
|
1150 |
-
msgid "
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: classes/Views/Settings.php:
|
1154 |
-
msgid "
|
1155 |
msgstr ""
|
1156 |
|
1157 |
-
#: classes/Views/Settings.php:
|
1158 |
-
msgid "
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#: classes/Views/Settings.php:
|
1162 |
-
msgid "
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: classes/Views/Settings.php:
|
1166 |
-
msgid "
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: classes/Views/Settings.php:
|
1170 |
-
msgid "
|
|
|
|
|
1171 |
msgstr ""
|
1172 |
|
1173 |
-
#: classes/Views/Settings.php:
|
1174 |
-
msgid "
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: classes/Views/Settings.php:
|
1178 |
-
msgid "
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: classes/Views/Settings.php:
|
1182 |
msgid ""
|
1183 |
-
"
|
1184 |
-
"
|
1185 |
-
"you might notice a big difference."
|
1186 |
msgstr ""
|
1187 |
|
1188 |
-
#: classes/Views/Settings.php:
|
1189 |
-
msgid "
|
1190 |
msgstr ""
|
1191 |
|
1192 |
-
#: classes/Views/Settings.php:
|
1193 |
-
msgid "
|
|
|
|
|
|
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: classes/Views/Settings.php:
|
1197 |
-
msgid "
|
1198 |
msgstr ""
|
1199 |
|
1200 |
-
#: classes/Views/Settings.php:
|
1201 |
-
msgid ""
|
1202 |
-
"What user information should be displayed in the WordPress activity log?"
|
1203 |
msgstr ""
|
1204 |
|
1205 |
-
#: classes/Views/Settings.php:
|
1206 |
msgid ""
|
1207 |
-
"
|
1208 |
-
"difficult to recognize whose user was that did a change. When there is no "
|
1209 |
-
"first & last name or public display name configured the plugin will revert "
|
1210 |
-
"back to the WordPress username."
|
1211 |
msgstr ""
|
1212 |
|
1213 |
-
#: classes/Views/Settings.php:
|
1214 |
-
msgid "
|
1215 |
msgstr ""
|
1216 |
|
1217 |
-
#: classes/Views/Settings.php:
|
1218 |
-
msgid "
|
|
|
|
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: classes/Views/Settings.php:
|
1222 |
-
msgid "
|
1223 |
msgstr ""
|
1224 |
|
1225 |
-
#: classes/Views/Settings.php:
|
1226 |
-
msgid "
|
1227 |
msgstr ""
|
1228 |
|
1229 |
-
#: classes/Views/Settings.php:
|
1230 |
-
msgid "
|
1231 |
msgstr ""
|
1232 |
|
1233 |
-
#: classes/Views/Settings.php:
|
1234 |
msgid ""
|
1235 |
-
"
|
1236 |
-
"
|
1237 |
-
"
|
1238 |
msgstr ""
|
1239 |
|
1240 |
-
#: classes/Views/Settings.php:
|
1241 |
-
msgid "
|
|
|
|
|
|
|
1242 |
msgstr ""
|
1243 |
|
1244 |
-
#: classes/Views/Settings.php:
|
1245 |
-
msgid "
|
1246 |
msgstr ""
|
1247 |
|
1248 |
-
#: classes/Views/Settings.php:
|
1249 |
-
msgid "
|
1250 |
msgstr ""
|
1251 |
|
1252 |
-
#: classes/Views/Settings.php:
|
1253 |
-
msgid "
|
|
|
|
|
1254 |
msgstr ""
|
1255 |
|
1256 |
-
#: classes/Views/Settings.php:
|
1257 |
-
msgid ""
|
1258 |
-
"The activity log viewer auto refreshes every 30 seconds when opened so you "
|
1259 |
-
"can see the latest events as they happen almost in real time."
|
1260 |
msgstr ""
|
1261 |
|
1262 |
-
#: classes/Views/Settings.php:
|
1263 |
-
msgid "
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: classes/Views/Settings.php:
|
1267 |
-
msgid "
|
|
|
|
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: classes/Views/Settings.php:
|
1271 |
-
msgid "
|
1272 |
msgstr ""
|
1273 |
|
1274 |
-
#: classes/Views/
|
1275 |
-
msgid "
|
1276 |
msgstr ""
|
1277 |
|
1278 |
-
#: classes/Views/
|
1279 |
-
msgid ""
|
1280 |
-
"WordPress does a lot of things in the background that you do not necessarily "
|
1281 |
-
"need to know about, such as; deletion of post revisions, deletion of auto "
|
1282 |
-
"saved drafts etc. By default the plugin does not report them since there "
|
1283 |
-
"might be a lot and are irrelevant to the user."
|
1284 |
msgstr ""
|
1285 |
|
1286 |
-
#: classes/Views/
|
1287 |
-
msgid "
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: classes/Views/
|
1291 |
-
msgid ""
|
1292 |
-
"The plugin runs file integrity scans on your website so it keeps a log when "
|
1293 |
-
"a file is added, modified or deleted. All the settings for the file "
|
1294 |
-
"integrity scans can be found in this page."
|
1295 |
msgstr ""
|
1296 |
|
1297 |
-
#: classes/Views/
|
1298 |
msgid ""
|
1299 |
-
"<
|
1300 |
-
"
|
1301 |
-
"WordPress file integrity scans feature page</a> for more information."
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: classes/Views/
|
1305 |
-
msgid "
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: classes/Views/
|
1309 |
-
msgid "
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: classes/Views/
|
1313 |
msgid ""
|
1314 |
-
"
|
|
|
1315 |
msgstr ""
|
1316 |
|
1317 |
-
#: classes/Views/
|
1318 |
-
msgid ""
|
1319 |
-
"By default the plugin will keep a log whenever a file has been added, "
|
1320 |
-
"modified or deleted. It will also log an event in the activity log when a "
|
1321 |
-
"file is too big to scan or there are too many files to scan. Click on the "
|
1322 |
-
"link to specify which of these events the plugin should keep a log of."
|
1323 |
msgstr ""
|
1324 |
|
1325 |
-
#: classes/Views/
|
1326 |
-
msgid "
|
|
|
|
|
|
|
1327 |
msgstr ""
|
1328 |
|
1329 |
-
#: classes/Views/
|
1330 |
-
msgid "
|
1331 |
msgstr ""
|
1332 |
|
1333 |
-
#: classes/Views/
|
1334 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: classes/Views/
|
1338 |
msgid ""
|
1339 |
-
"
|
1340 |
-
"
|
1341 |
-
"
|
1342 |
-
"Though if you have a fairly large website we recommend you to scan it when "
|
1343 |
-
"it is the least busy. The scan process should only take a few seconds to "
|
1344 |
-
"complete."
|
1345 |
msgstr ""
|
1346 |
|
1347 |
-
#: classes/Views/
|
1348 |
-
msgid "
|
1349 |
msgstr ""
|
1350 |
|
1351 |
-
#: classes/
|
1352 |
-
msgid "
|
1353 |
msgstr ""
|
1354 |
|
1355 |
-
#: classes/
|
1356 |
-
msgid "
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#:
|
1360 |
-
msgid "
|
1361 |
msgstr ""
|
1362 |
|
1363 |
-
#:
|
1364 |
-
msgid "
|
1365 |
msgstr ""
|
1366 |
|
1367 |
-
#:
|
1368 |
-
msgid "
|
1369 |
msgstr ""
|
1370 |
|
1371 |
-
#:
|
1372 |
-
msgid "
|
1373 |
msgstr ""
|
1374 |
|
1375 |
-
#:
|
1376 |
-
msgid "
|
1377 |
msgstr ""
|
1378 |
|
1379 |
-
#:
|
1380 |
-
msgid "
|
1381 |
msgstr ""
|
1382 |
|
1383 |
-
#:
|
1384 |
-
msgid "
|
1385 |
msgstr ""
|
1386 |
|
1387 |
-
#:
|
1388 |
-
msgid "
|
1389 |
msgstr ""
|
1390 |
|
1391 |
-
#:
|
1392 |
-
msgid "
|
1393 |
msgstr ""
|
1394 |
|
1395 |
-
#:
|
1396 |
-
msgid "
|
1397 |
msgstr ""
|
1398 |
|
1399 |
-
#:
|
1400 |
-
msgid "
|
1401 |
msgstr ""
|
1402 |
|
1403 |
-
#:
|
1404 |
-
msgid "
|
1405 |
msgstr ""
|
1406 |
|
1407 |
-
#:
|
1408 |
-
msgid "
|
1409 |
msgstr ""
|
1410 |
|
1411 |
-
#:
|
1412 |
-
msgid "
|
1413 |
msgstr ""
|
1414 |
|
1415 |
-
#:
|
1416 |
-
msgid "
|
1417 |
-
msgstr ""
|
1418 |
-
|
1419 |
-
#: classes/Views/Settings.php:1235
|
1420 |
-
msgid "13:00"
|
1421 |
-
msgstr ""
|
1422 |
-
|
1423 |
-
#: classes/Views/Settings.php:1236
|
1424 |
-
msgid "14:00"
|
1425 |
msgstr ""
|
1426 |
|
1427 |
-
#:
|
1428 |
-
msgid "
|
1429 |
msgstr ""
|
1430 |
|
1431 |
-
#:
|
1432 |
-
msgid "
|
1433 |
msgstr ""
|
1434 |
|
1435 |
-
#:
|
1436 |
-
msgid "
|
1437 |
msgstr ""
|
1438 |
|
1439 |
-
#:
|
1440 |
-
msgid "
|
1441 |
msgstr ""
|
1442 |
|
1443 |
-
#:
|
1444 |
-
msgid "
|
1445 |
msgstr ""
|
1446 |
|
1447 |
-
#:
|
1448 |
-
msgid "
|
|
|
|
|
1449 |
msgstr ""
|
1450 |
|
1451 |
-
#:
|
1452 |
-
msgid "
|
1453 |
msgstr ""
|
1454 |
|
1455 |
-
#:
|
1456 |
-
msgid "
|
|
|
|
|
1457 |
msgstr ""
|
1458 |
|
1459 |
-
#:
|
1460 |
-
msgid "
|
1461 |
msgstr ""
|
1462 |
|
1463 |
-
#:
|
1464 |
-
msgid "
|
|
|
|
|
1465 |
msgstr ""
|
1466 |
|
1467 |
-
#:
|
1468 |
-
msgid "
|
1469 |
msgstr ""
|
1470 |
|
1471 |
-
#:
|
1472 |
-
msgid "
|
|
|
1473 |
msgstr ""
|
1474 |
|
1475 |
-
#:
|
1476 |
-
msgid "
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#:
|
1480 |
-
msgid "
|
|
|
|
|
1481 |
msgstr ""
|
1482 |
|
1483 |
-
#:
|
1484 |
-
msgid "
|
1485 |
msgstr ""
|
1486 |
|
1487 |
-
#:
|
1488 |
-
msgid "
|
|
|
|
|
1489 |
msgstr ""
|
1490 |
|
1491 |
-
#:
|
1492 |
-
msgid "
|
1493 |
msgstr ""
|
1494 |
|
1495 |
-
#:
|
1496 |
-
msgid "
|
|
|
|
|
1497 |
msgstr ""
|
1498 |
|
1499 |
-
#:
|
1500 |
-
msgid "
|
1501 |
msgstr ""
|
1502 |
|
1503 |
-
#:
|
1504 |
-
msgid "
|
|
|
|
|
1505 |
msgstr ""
|
1506 |
|
1507 |
-
#:
|
1508 |
-
msgid "
|
1509 |
msgstr ""
|
1510 |
|
1511 |
-
#:
|
1512 |
-
msgid "
|
|
|
|
|
1513 |
msgstr ""
|
1514 |
|
1515 |
-
#:
|
1516 |
-
msgid "
|
1517 |
msgstr ""
|
1518 |
|
1519 |
-
#:
|
1520 |
-
msgid "
|
|
|
|
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
#:
|
1524 |
-
msgid "
|
1525 |
msgstr ""
|
1526 |
|
1527 |
-
#:
|
1528 |
-
msgid "
|
|
|
|
|
1529 |
msgstr ""
|
1530 |
|
1531 |
-
#:
|
1532 |
-
msgid "
|
1533 |
msgstr ""
|
1534 |
|
1535 |
-
#:
|
1536 |
-
msgid "
|
|
|
|
|
1537 |
msgstr ""
|
1538 |
|
1539 |
-
#:
|
1540 |
-
msgid "
|
1541 |
msgstr ""
|
1542 |
|
1543 |
-
#:
|
1544 |
-
msgid "
|
|
|
|
|
1545 |
msgstr ""
|
1546 |
|
1547 |
-
#:
|
1548 |
-
msgid "
|
1549 |
msgstr ""
|
1550 |
|
1551 |
-
#:
|
1552 |
-
msgid "
|
|
|
|
|
1553 |
msgstr ""
|
1554 |
|
1555 |
-
#:
|
1556 |
-
msgid "
|
1557 |
msgstr ""
|
1558 |
|
1559 |
-
#:
|
1560 |
-
msgid "
|
|
|
|
|
1561 |
msgstr ""
|
1562 |
|
1563 |
-
#:
|
1564 |
-
msgid "
|
1565 |
msgstr ""
|
1566 |
|
1567 |
-
#:
|
1568 |
-
msgid "
|
|
|
|
|
1569 |
msgstr ""
|
1570 |
|
1571 |
-
#:
|
1572 |
-
msgid "
|
1573 |
msgstr ""
|
1574 |
|
1575 |
-
#:
|
1576 |
-
msgid "
|
|
|
1577 |
msgstr ""
|
1578 |
|
1579 |
-
#:
|
1580 |
-
msgid "
|
1581 |
msgstr ""
|
1582 |
|
1583 |
-
#:
|
1584 |
-
msgid "
|
1585 |
msgstr ""
|
1586 |
|
1587 |
-
#:
|
1588 |
-
msgid "
|
1589 |
msgstr ""
|
1590 |
|
1591 |
-
#:
|
1592 |
-
msgid "
|
|
|
|
|
1593 |
msgstr ""
|
1594 |
|
1595 |
-
#:
|
1596 |
-
msgid "
|
1597 |
msgstr ""
|
1598 |
|
1599 |
-
#:
|
1600 |
-
msgid "
|
|
|
|
|
|
|
1601 |
msgstr ""
|
1602 |
|
1603 |
-
#:
|
1604 |
-
msgid "
|
1605 |
msgstr ""
|
1606 |
|
1607 |
-
#:
|
1608 |
-
msgid "
|
|
|
|
|
|
|
1609 |
msgstr ""
|
1610 |
|
1611 |
-
#:
|
1612 |
-
msgid "
|
1613 |
msgstr ""
|
1614 |
|
1615 |
-
#:
|
1616 |
-
msgid "
|
|
|
|
|
1617 |
msgstr ""
|
1618 |
|
1619 |
-
#:
|
1620 |
-
msgid "
|
1621 |
msgstr ""
|
1622 |
|
1623 |
-
#:
|
1624 |
msgid ""
|
1625 |
-
"
|
1626 |
-
"
|
1627 |
-
"
|
1628 |
-
"them from the below list."
|
1629 |
-
msgstr ""
|
1630 |
-
|
1631 |
-
#: classes/Views/Settings.php:1356
|
1632 |
-
msgid "Directories to scan"
|
1633 |
msgstr ""
|
1634 |
|
1635 |
-
#:
|
1636 |
-
msgid "
|
1637 |
msgstr ""
|
1638 |
|
1639 |
-
#:
|
1640 |
-
msgid "
|
|
|
|
|
1641 |
msgstr ""
|
1642 |
|
1643 |
-
#:
|
1644 |
-
msgid "
|
1645 |
msgstr ""
|
1646 |
|
1647 |
-
#:
|
1648 |
msgid ""
|
1649 |
-
"
|
|
|
1650 |
msgstr ""
|
1651 |
|
1652 |
-
#:
|
1653 |
-
msgid "
|
1654 |
msgstr ""
|
1655 |
|
1656 |
-
#:
|
1657 |
-
msgid "
|
|
|
|
|
1658 |
msgstr ""
|
1659 |
|
1660 |
-
#:
|
1661 |
-
msgid "
|
1662 |
msgstr ""
|
1663 |
|
1664 |
-
#:
|
1665 |
msgid ""
|
1666 |
-
"
|
|
|
1667 |
msgstr ""
|
1668 |
|
1669 |
-
#:
|
1670 |
-
msgid ""
|
1671 |
-
"Do you want to exclude specific files or files with a particular extension "
|
1672 |
-
"from the scan?"
|
1673 |
msgstr ""
|
1674 |
|
1675 |
-
#:
|
1676 |
msgid ""
|
1677 |
-
"
|
1678 |
-
"
|
1679 |
-
"recommended to scan all source code files and only exclude files that cannot "
|
1680 |
-
"be tampered, such as text files, media files etc, most of which are already "
|
1681 |
-
"excluded by default."
|
1682 |
msgstr ""
|
1683 |
|
1684 |
-
#:
|
1685 |
-
msgid "
|
1686 |
msgstr ""
|
1687 |
|
1688 |
-
#:
|
1689 |
-
|
1690 |
-
|
|
|
1691 |
msgstr ""
|
1692 |
|
1693 |
-
#:
|
1694 |
-
|
1695 |
-
#: classes/Views/SetupWizard.php:542 classes/Views/SetupWizard.php:627
|
1696 |
-
#: classes/Views/SetupWizard.php:646 classes/Views/SetupWizard.php:665
|
1697 |
-
msgid "ADD"
|
1698 |
msgstr ""
|
1699 |
|
1700 |
-
#:
|
1701 |
msgid ""
|
1702 |
-
"
|
1703 |
-
"
|
1704 |
-
"sub directory dir1/dir2 specify the following:"
|
1705 |
msgstr ""
|
1706 |
|
1707 |
-
#:
|
1708 |
-
msgid "
|
1709 |
msgstr ""
|
1710 |
|
1711 |
-
#:
|
1712 |
msgid ""
|
1713 |
-
"
|
1714 |
-
"
|
1715 |
msgstr ""
|
1716 |
|
1717 |
-
#:
|
1718 |
-
msgid "
|
1719 |
msgstr ""
|
1720 |
|
1721 |
-
#:
|
1722 |
msgid ""
|
1723 |
-
"
|
1724 |
-
"
|
1725 |
msgstr ""
|
1726 |
|
1727 |
-
#:
|
1728 |
-
msgid "
|
1729 |
msgstr ""
|
1730 |
|
1731 |
-
#:
|
1732 |
msgid ""
|
1733 |
-
"
|
1734 |
-
"
|
1735 |
-
"Note that the instant scan can be more resource intensive than scheduled "
|
1736 |
-
"scans."
|
1737 |
msgstr ""
|
1738 |
|
1739 |
-
#:
|
1740 |
-
msgid "
|
1741 |
msgstr ""
|
1742 |
|
1743 |
-
#:
|
1744 |
-
msgid "
|
|
|
|
|
1745 |
msgstr ""
|
1746 |
|
1747 |
-
#:
|
1748 |
-
msgid "
|
1749 |
msgstr ""
|
1750 |
|
1751 |
-
#:
|
1752 |
-
msgid "
|
1753 |
msgstr ""
|
1754 |
|
1755 |
-
#:
|
1756 |
-
msgid ""
|
1757 |
-
"By default the plugin keeps a log of all user changes done on your WordPress "
|
1758 |
-
"website. Use the setting below to exclude any objects from the activity log. "
|
1759 |
-
"When an object is excluded from the activity log, any event in which that "
|
1760 |
-
"object is referred will not be logged in the activity log."
|
1761 |
msgstr ""
|
1762 |
|
1763 |
-
#:
|
1764 |
-
msgid "
|
1765 |
msgstr ""
|
1766 |
|
1767 |
-
#:
|
1768 |
-
msgid "
|
1769 |
msgstr ""
|
1770 |
|
1771 |
-
#:
|
1772 |
-
msgid "
|
1773 |
msgstr ""
|
1774 |
|
1775 |
-
#:
|
1776 |
-
msgid "
|
1777 |
msgstr ""
|
1778 |
|
1779 |
-
#:
|
1780 |
msgid ""
|
1781 |
-
"
|
1782 |
-
"
|
1783 |
-
"types, including the default WordPress ones."
|
1784 |
msgstr ""
|
1785 |
|
1786 |
-
#:
|
1787 |
-
msgid "
|
1788 |
msgstr ""
|
1789 |
|
1790 |
-
#:
|
1791 |
msgid ""
|
1792 |
-
"
|
1793 |
-
"
|
1794 |
-
msgstr ""
|
1795 |
-
|
1796 |
-
#: classes/Views/Settings.php:1715
|
1797 |
-
msgid "Exclude Non-Existing URLs:"
|
1798 |
msgstr ""
|
1799 |
|
1800 |
-
#:
|
1801 |
-
msgid ""
|
1802 |
-
"Add the non existing URLs for which you do not want to be alerted of HTTP "
|
1803 |
-
"404 errors in the activity log by specifying the complete URL.\tExamples "
|
1804 |
-
"below:"
|
1805 |
msgstr ""
|
1806 |
|
1807 |
-
#:
|
1808 |
-
msgid "
|
1809 |
msgstr ""
|
1810 |
|
1811 |
-
#:
|
1812 |
-
msgid "
|
|
|
|
|
1813 |
msgstr ""
|
1814 |
|
1815 |
-
#:
|
1816 |
-
msgid "
|
1817 |
msgstr ""
|
1818 |
|
1819 |
-
#:
|
1820 |
msgid ""
|
1821 |
-
"
|
1822 |
-
"
|
1823 |
msgstr ""
|
1824 |
|
1825 |
-
#:
|
1826 |
-
msgid ""
|
1827 |
-
"Troubleshooting setting: Keep a debug log of all the requests this website "
|
1828 |
-
"receives"
|
1829 |
msgstr ""
|
1830 |
|
1831 |
-
#:
|
1832 |
msgid ""
|
1833 |
-
"
|
1834 |
-
"
|
1835 |
-
"request logging on a live website may degrade the performance of the website."
|
1836 |
msgstr ""
|
1837 |
|
1838 |
-
#:
|
1839 |
-
msgid "
|
1840 |
msgstr ""
|
1841 |
|
1842 |
-
#:
|
1843 |
msgid ""
|
1844 |
-
"
|
1845 |
-
"
|
1846 |
msgstr ""
|
1847 |
|
1848 |
-
#:
|
1849 |
-
msgid "
|
1850 |
msgstr ""
|
1851 |
|
1852 |
-
#:
|
1853 |
msgid ""
|
1854 |
-
"
|
1855 |
-
"
|
1856 |
-
"reset. To purge the data of the activity log use the setting below."
|
1857 |
msgstr ""
|
1858 |
|
1859 |
-
#:
|
1860 |
-
msgid "
|
1861 |
msgstr ""
|
1862 |
|
1863 |
-
#:
|
1864 |
-
msgid "
|
|
|
|
|
1865 |
msgstr ""
|
1866 |
|
1867 |
-
#:
|
1868 |
-
msgid "
|
1869 |
msgstr ""
|
1870 |
|
1871 |
-
#:
|
1872 |
msgid ""
|
1873 |
-
"
|
1874 |
-
"
|
1875 |
msgstr ""
|
1876 |
|
1877 |
-
#:
|
1878 |
-
msgid "
|
1879 |
msgstr ""
|
1880 |
|
1881 |
-
#:
|
1882 |
-
msgid "
|
|
|
|
|
1883 |
msgstr ""
|
1884 |
|
1885 |
-
#:
|
1886 |
-
msgid "
|
1887 |
msgstr ""
|
1888 |
|
1889 |
-
#:
|
1890 |
msgid ""
|
1891 |
-
"
|
1892 |
-
"
|
1893 |
-
"restricted to the administrator who installs the plugin, the plugin is not "
|
1894 |
-
"shown in the list of installed plugins and no admin notifications are shown. "
|
1895 |
-
"Disable this option to change the plugin to the default setup."
|
1896 |
msgstr ""
|
1897 |
|
1898 |
-
#:
|
1899 |
-
msgid "
|
1900 |
msgstr ""
|
1901 |
|
1902 |
-
#:
|
1903 |
-
msgid "
|
1904 |
msgstr ""
|
1905 |
|
1906 |
-
#:
|
1907 |
-
msgid ""
|
1908 |
-
"The plugin saves the activity log data and settings in the WordPress "
|
1909 |
-
"database. By default upon uninstalling the plugin the data is kept in the "
|
1910 |
-
"database so if it is installed again, you can still access the data. If the "
|
1911 |
-
"data is deleted it is not possible to recover it so you won't be able to "
|
1912 |
-
"access it again even when you reinstall the plugin."
|
1913 |
-
msgstr ""
|
1914 |
-
|
1915 |
-
#: classes/Views/Settings.php:1867
|
1916 |
-
msgid "Remove Data on Uninstall"
|
1917 |
msgstr ""
|
1918 |
|
1919 |
-
#:
|
1920 |
-
msgid "
|
1921 |
msgstr ""
|
1922 |
|
1923 |
-
#:
|
1924 |
-
msgid "
|
1925 |
msgstr ""
|
1926 |
|
1927 |
-
#:
|
1928 |
-
msgid "
|
1929 |
msgstr ""
|
1930 |
|
1931 |
-
#:
|
1932 |
-
msgid "
|
|
|
|
|
1933 |
msgstr ""
|
1934 |
|
1935 |
-
#:
|
1936 |
-
msgid "
|
1937 |
msgstr ""
|
1938 |
|
1939 |
-
#:
|
1940 |
-
msgid "
|
|
|
|
|
1941 |
msgstr ""
|
1942 |
|
1943 |
-
#:
|
1944 |
-
msgid "
|
1945 |
msgstr ""
|
1946 |
|
1947 |
-
#:
|
1948 |
-
msgid "
|
|
|
|
|
1949 |
msgstr ""
|
1950 |
|
1951 |
-
#:
|
1952 |
-
msgid "
|
1953 |
msgstr ""
|
1954 |
|
1955 |
-
#:
|
1956 |
-
msgid "
|
|
|
|
|
1957 |
msgstr ""
|
1958 |
|
1959 |
-
#:
|
1960 |
-
msgid "
|
1961 |
msgstr ""
|
1962 |
|
1963 |
-
#:
|
1964 |
-
msgid "
|
1965 |
msgstr ""
|
1966 |
|
1967 |
-
#:
|
1968 |
-
msgid "
|
1969 |
msgstr ""
|
1970 |
|
1971 |
-
#:
|
1972 |
-
msgid "
|
|
|
|
|
1973 |
msgstr ""
|
1974 |
|
1975 |
-
#:
|
1976 |
-
msgid "
|
1977 |
msgstr ""
|
1978 |
|
1979 |
-
#:
|
1980 |
-
msgid "
|
|
|
|
|
1981 |
msgstr ""
|
1982 |
|
1983 |
-
#:
|
1984 |
-
msgid "
|
1985 |
msgstr ""
|
1986 |
|
1987 |
-
#:
|
1988 |
-
msgid "
|
|
|
|
|
1989 |
msgstr ""
|
1990 |
|
1991 |
-
#:
|
1992 |
-
msgid "
|
1993 |
msgstr ""
|
1994 |
|
1995 |
-
#:
|
1996 |
-
msgid "
|
|
|
|
|
1997 |
msgstr ""
|
1998 |
|
1999 |
-
#:
|
2000 |
-
msgid "
|
2001 |
msgstr ""
|
2002 |
|
2003 |
-
#:
|
2004 |
-
msgid "
|
|
|
|
|
2005 |
msgstr ""
|
2006 |
|
2007 |
-
#:
|
2008 |
-
msgid "
|
2009 |
msgstr ""
|
2010 |
|
2011 |
-
#:
|
2012 |
-
msgid "
|
|
|
|
|
2013 |
msgstr ""
|
2014 |
|
2015 |
-
#:
|
2016 |
-
msgid "
|
2017 |
msgstr ""
|
2018 |
|
2019 |
-
#:
|
2020 |
-
msgid "
|
|
|
|
|
2021 |
msgstr ""
|
2022 |
|
2023 |
-
#:
|
2024 |
-
msgid "
|
2025 |
msgstr ""
|
2026 |
|
2027 |
-
#:
|
2028 |
-
msgid "
|
|
|
|
|
2029 |
msgstr ""
|
2030 |
|
2031 |
-
#:
|
2032 |
-
msgid "
|
2033 |
msgstr ""
|
2034 |
|
2035 |
-
#:
|
2036 |
-
|
2037 |
-
|
|
|
2038 |
msgstr ""
|
2039 |
|
2040 |
-
#:
|
2041 |
-
msgid "
|
2042 |
msgstr ""
|
2043 |
|
2044 |
-
#:
|
2045 |
-
msgid "
|
|
|
|
|
|
|
2046 |
msgstr ""
|
2047 |
|
2048 |
-
#:
|
2049 |
-
msgid "
|
2050 |
msgstr ""
|
2051 |
|
2052 |
-
#:
|
2053 |
-
msgid "
|
|
|
|
|
2054 |
msgstr ""
|
2055 |
|
2056 |
-
#:
|
2057 |
-
msgid "
|
2058 |
msgstr ""
|
2059 |
|
2060 |
-
#:
|
2061 |
-
msgid "
|
|
|
|
|
2062 |
msgstr ""
|
2063 |
|
2064 |
-
#:
|
2065 |
-
msgid ""
|
2066 |
-
"This wizard will help you configure your WordPress activity log plugin and "
|
2067 |
-
"get you started quickly."
|
2068 |
msgstr ""
|
2069 |
|
2070 |
-
#:
|
2071 |
msgid ""
|
2072 |
-
"
|
2073 |
-
"
|
2074 |
-
"plugin you can exit this wizard and configure all the settings manually."
|
2075 |
msgstr ""
|
2076 |
|
2077 |
-
#:
|
2078 |
-
msgid "
|
2079 |
msgstr ""
|
2080 |
|
2081 |
-
#:
|
2082 |
-
msgid "
|
|
|
|
|
2083 |
msgstr ""
|
2084 |
|
2085 |
-
#:
|
2086 |
-
msgid "
|
2087 |
msgstr ""
|
2088 |
|
2089 |
-
#:
|
2090 |
msgid ""
|
2091 |
-
"
|
|
|
2092 |
msgstr ""
|
2093 |
|
2094 |
-
#:
|
2095 |
-
msgid "
|
2096 |
msgstr ""
|
2097 |
|
2098 |
-
#:
|
2099 |
msgid ""
|
2100 |
-
"
|
2101 |
-
"
|
2102 |
msgstr ""
|
2103 |
|
2104 |
-
#:
|
2105 |
-
|
2106 |
-
#: classes/Views/SetupWizard.php:567 classes/Views/SetupWizard.php:568
|
2107 |
-
#: classes/Views/SetupWizard.php:687 classes/Views/SetupWizard.php:688
|
2108 |
-
msgid "Next"
|
2109 |
msgstr ""
|
2110 |
|
2111 |
-
#:
|
2112 |
-
msgid "
|
|
|
|
|
2113 |
msgstr ""
|
2114 |
|
2115 |
-
#:
|
2116 |
-
msgid "
|
2117 |
msgstr ""
|
2118 |
|
2119 |
-
#:
|
2120 |
-
msgid "
|
|
|
|
|
2121 |
msgstr ""
|
2122 |
|
2123 |
-
#:
|
2124 |
-
msgid "
|
2125 |
msgstr ""
|
2126 |
|
2127 |
-
#:
|
2128 |
msgid ""
|
2129 |
-
"
|
2130 |
-
"
|
2131 |
msgstr ""
|
2132 |
|
2133 |
-
#:
|
2134 |
-
msgid ""
|
2135 |
-
"The plugin stores the data in the WordPress database in a very efficient "
|
2136 |
-
"way, though the more data you keep the more hard disk space it will consume. "
|
2137 |
-
"If you need need to retain a lot of data we would recommend you to <a href="
|
2138 |
-
"\"https://www.wpsecurityauditlog.com/premium-features/\" target=\"_blank"
|
2139 |
-
"\">upgrade to Premium</a> and use the Database tools to store the WordPress "
|
2140 |
-
"activity log in an external database."
|
2141 |
msgstr ""
|
2142 |
|
2143 |
-
#:
|
2144 |
msgid ""
|
2145 |
-
"
|
2146 |
-
"
|
2147 |
-
"access the WordPress activity log?"
|
2148 |
msgstr ""
|
2149 |
|
2150 |
-
#:
|
2151 |
-
msgid "
|
2152 |
msgstr ""
|
2153 |
|
2154 |
-
#:
|
2155 |
-
msgid "
|
2156 |
msgstr ""
|
2157 |
|
2158 |
-
#:
|
2159 |
msgid ""
|
2160 |
-
"
|
2161 |
-
"
|
2162 |
msgstr ""
|
2163 |
|
2164 |
-
#:
|
2165 |
-
msgid ""
|
2166 |
-
"The WordPress activity log contains sensitive data such as who logged in, "
|
2167 |
-
"from where, when, and what they did."
|
2168 |
msgstr ""
|
2169 |
|
2170 |
-
#:
|
2171 |
msgid ""
|
2172 |
-
"
|
2173 |
-
"website. If you would like to exclude a particular user, users with a role "
|
2174 |
-
"or an IP address from the log specify them below. If not just click the Next "
|
2175 |
-
"button."
|
2176 |
-
msgstr ""
|
2177 |
-
|
2178 |
-
#: classes/Views/SetupWizard.php:662
|
2179 |
-
msgid "IP Address: "
|
2180 |
msgstr ""
|
2181 |
|
2182 |
-
#:
|
2183 |
-
msgid "
|
2184 |
msgstr ""
|
2185 |
|
2186 |
-
#:
|
2187 |
msgid ""
|
2188 |
-
"
|
2189 |
-
"
|
2190 |
msgstr ""
|
2191 |
|
2192 |
-
#:
|
2193 |
-
msgid ""
|
2194 |
-
"Your plugin is all set and it is ready to start keeping a record of "
|
2195 |
-
"everything that is happening on your WordPress in a WordPress activity log."
|
2196 |
msgstr ""
|
2197 |
|
2198 |
-
#:
|
2199 |
-
msgid "
|
|
|
2200 |
msgstr ""
|
2201 |
|
2202 |
-
#:
|
2203 |
-
msgid "
|
2204 |
msgstr ""
|
2205 |
|
2206 |
-
#:
|
2207 |
-
msgid "
|
2208 |
msgstr ""
|
2209 |
|
2210 |
-
#:
|
2211 |
-
msgid "
|
2212 |
msgstr ""
|
2213 |
|
2214 |
-
#:
|
2215 |
-
msgid ""
|
2216 |
-
"We trust this plugin meets all your activity log requirements. Should you "
|
2217 |
-
"encounter any problems, have feature requests or would like to share some "
|
2218 |
-
"feedback, <a href=\"https://www.wpsecurityauditlog.com/contact/\" target="
|
2219 |
-
"\"_blank\">please get in touch!</a>"
|
2220 |
msgstr ""
|
2221 |
|
2222 |
-
#:
|
2223 |
-
msgid "
|
2224 |
msgstr ""
|
2225 |
|
2226 |
-
#:
|
2227 |
-
msgid "
|
2228 |
msgstr ""
|
2229 |
|
2230 |
-
#:
|
2231 |
-
msgid "
|
2232 |
msgstr ""
|
2233 |
|
2234 |
-
#:
|
2235 |
-
msgid "
|
|
|
|
|
2236 |
msgstr ""
|
2237 |
|
2238 |
-
#:
|
2239 |
-
msgid "
|
2240 |
msgstr ""
|
2241 |
|
2242 |
-
#:
|
2243 |
msgid ""
|
2244 |
-
"
|
2245 |
-
"
|
2246 |
-
"the below tabs. Refer to <a href=\"https://www.wpsecurityauditlog.com/"
|
2247 |
-
"support-documentation/list-wordpress-audit-trail-alerts/\" target=\"_blank"
|
2248 |
-
"\">the complete list of WordPress activity log event IDs</a> for reference "
|
2249 |
-
"on all the events the plugin can keep a log of."
|
2250 |
msgstr ""
|
2251 |
|
2252 |
-
#:
|
2253 |
-
|
2254 |
-
msgid "Custom Post Types"
|
2255 |
msgstr ""
|
2256 |
|
2257 |
-
#:
|
2258 |
-
|
2259 |
-
|
|
|
2260 |
msgstr ""
|
2261 |
|
2262 |
-
#:
|
2263 |
-
|
2264 |
-
msgid "BBPress Forum"
|
2265 |
msgstr ""
|
2266 |
|
2267 |
-
#:
|
2268 |
-
|
2269 |
-
|
|
|
2270 |
msgstr ""
|
2271 |
|
2272 |
-
#:
|
2273 |
-
|
2274 |
-
#: defaults.php:513
|
2275 |
-
msgid "WooCommerce Products"
|
2276 |
msgstr ""
|
2277 |
|
2278 |
-
#:
|
2279 |
-
|
2280 |
-
|
|
|
2281 |
msgstr ""
|
2282 |
|
2283 |
-
#:
|
2284 |
-
|
2285 |
-
msgid "MultiSite"
|
2286 |
msgstr ""
|
2287 |
|
2288 |
-
#:
|
2289 |
-
msgid "
|
|
|
|
|
2290 |
msgstr ""
|
2291 |
|
2292 |
-
#:
|
2293 |
-
msgid "
|
2294 |
msgstr ""
|
2295 |
|
2296 |
-
#:
|
2297 |
-
|
2298 |
-
|
|
|
2299 |
msgstr ""
|
2300 |
|
2301 |
-
#:
|
2302 |
-
msgid "
|
2303 |
msgstr ""
|
2304 |
|
2305 |
-
#:
|
2306 |
msgid ""
|
2307 |
-
"
|
2308 |
-
"
|
|
|
|
|
|
|
|
|
2309 |
msgstr ""
|
2310 |
|
2311 |
-
#:
|
2312 |
msgid ""
|
2313 |
-
"
|
2314 |
-
"
|
2315 |
msgstr ""
|
2316 |
|
2317 |
-
#:
|
2318 |
-
msgid "
|
2319 |
msgstr ""
|
2320 |
|
2321 |
-
#:
|
2322 |
msgid ""
|
2323 |
-
"
|
2324 |
-
"
|
2325 |
msgstr ""
|
2326 |
|
2327 |
-
#:
|
2328 |
-
msgid "
|
2329 |
msgstr ""
|
2330 |
|
2331 |
-
#:
|
2332 |
msgid ""
|
2333 |
-
"
|
2334 |
-
"
|
2335 |
msgstr ""
|
2336 |
|
2337 |
-
#:
|
2338 |
-
msgid "
|
2339 |
msgstr ""
|
2340 |
|
2341 |
-
#:
|
2342 |
msgid ""
|
2343 |
-
"
|
|
|
2344 |
msgstr ""
|
2345 |
|
2346 |
-
#:
|
2347 |
-
msgid "User
|
2348 |
msgstr ""
|
2349 |
|
2350 |
-
#:
|
2351 |
-
msgid "
|
|
|
2352 |
msgstr ""
|
2353 |
|
2354 |
-
#:
|
2355 |
-
msgid "
|
2356 |
-
msgstr ""
|
2357 |
-
|
2358 |
-
#: classes/Views/ToggleAlerts.php:374
|
2359 |
-
msgid "Not Implemented"
|
2360 |
-
msgstr ""
|
2361 |
-
|
2362 |
-
#: classes/Views/ToggleAlerts.php:377
|
2363 |
-
msgid "Not Available"
|
2364 |
-
msgstr ""
|
2365 |
-
|
2366 |
-
#: classes/Views/ToggleAlerts.php:387
|
2367 |
-
msgid "User Sessions"
|
2368 |
-
msgstr ""
|
2369 |
-
|
2370 |
-
#: classes/Views/ToggleAlerts.php:389
|
2371 |
-
msgid "Files"
|
2372 |
-
msgstr ""
|
2373 |
-
|
2374 |
-
#: classes/Views/ToggleAlerts.php:393
|
2375 |
-
msgid "Post Settings"
|
2376 |
-
msgstr ""
|
2377 |
-
|
2378 |
-
#: classes/Views/ToggleAlerts.php:395
|
2379 |
-
msgid "Tags"
|
2380 |
-
msgstr ""
|
2381 |
-
|
2382 |
-
#: classes/Views/ToggleAlerts.php:397 classes/Views/ToggleAlerts.php:411
|
2383 |
-
msgid "Categories"
|
2384 |
-
msgstr ""
|
2385 |
-
|
2386 |
-
#: classes/Views/ToggleAlerts.php:399
|
2387 |
-
msgid "Custom Fields"
|
2388 |
-
msgstr ""
|
2389 |
-
|
2390 |
-
#: classes/Views/ToggleAlerts.php:401
|
2391 |
-
msgid "Sites"
|
2392 |
-
msgstr ""
|
2393 |
-
|
2394 |
-
#: classes/Views/ToggleAlerts.php:405
|
2395 |
-
msgid "Topics"
|
2396 |
-
msgstr ""
|
2397 |
-
|
2398 |
-
#: classes/Views/ToggleAlerts.php:407
|
2399 |
-
msgid "Product Admin"
|
2400 |
-
msgstr ""
|
2401 |
-
|
2402 |
-
#: classes/Views/ToggleAlerts.php:409
|
2403 |
-
msgid "Store Admin"
|
2404 |
-
msgstr ""
|
2405 |
-
|
2406 |
-
#: classes/Views/ToggleAlerts.php:413
|
2407 |
-
msgid "Website Changes"
|
2408 |
-
msgstr ""
|
2409 |
-
|
2410 |
-
#: classes/Views/ToggleAlerts.php:415
|
2411 |
-
msgid "Plugin Settings"
|
2412 |
-
msgstr ""
|
2413 |
-
|
2414 |
-
#: classes/Views/ToggleAlerts.php:421
|
2415 |
-
msgid "Cron Jobs"
|
2416 |
-
msgstr ""
|
2417 |
-
|
2418 |
-
#: classes/Views/ToggleAlerts.php:458 classes/Views/ToggleAlerts.php:491
|
2419 |
-
msgid ""
|
2420 |
-
"Capture 404 requests to file (the log file are created in the /wp-content/"
|
2421 |
-
"uploads/wp-security-audit-log/404s/ directory)"
|
2422 |
-
msgstr ""
|
2423 |
-
|
2424 |
-
#: classes/Views/ToggleAlerts.php:466 classes/Views/ToggleAlerts.php:499
|
2425 |
-
msgid "Purge log files older than one month"
|
2426 |
-
msgstr ""
|
2427 |
-
|
2428 |
-
#: classes/Views/ToggleAlerts.php:471
|
2429 |
-
msgid ""
|
2430 |
-
"Number of 404 Requests to Log. By default the plugin keeps up to 99 requests "
|
2431 |
-
"to non-existing pages from the same IP address. Increase the value in this "
|
2432 |
-
"setting to the desired amount to keep a log of more or less requests."
|
2433 |
-
msgstr ""
|
2434 |
-
|
2435 |
-
#: classes/Views/ToggleAlerts.php:476 classes/Views/ToggleAlerts.php:509
|
2436 |
-
msgid "Record the referrer that generated the 404 error."
|
2437 |
-
msgstr ""
|
2438 |
-
|
2439 |
-
#: classes/Views/ToggleAlerts.php:504
|
2440 |
-
msgid ""
|
2441 |
-
"Number of 404 Requests to Log. By default the plugin keeps up to 99 requests "
|
2442 |
-
"to non-existing pages from the same IP address. Increase the value in this "
|
2443 |
-
"setting to the desired amount to keep a log of more or less requests. Note "
|
2444 |
-
"that by increasing this value to a high number, should your website be "
|
2445 |
-
"scanned the plugin will consume more resources to log all the requests."
|
2446 |
-
msgstr ""
|
2447 |
-
|
2448 |
-
#: classes/Views/ToggleAlerts.php:521 classes/Views/ToggleAlerts.php:534
|
2449 |
-
msgid ""
|
2450 |
-
"Number of login attempts to log. Enter 0 to log all failed login attempts. "
|
2451 |
-
"(By default the plugin only logs up to 10 failed login because the process "
|
2452 |
-
"can be very resource intensive in case of a brute force attack)"
|
2453 |
-
msgstr ""
|
2454 |
-
|
2455 |
-
#: classes/Views/ToggleAlerts.php:547
|
2456 |
-
msgid ""
|
2457 |
-
"Log all stock changes. Disable this setting to only keep a log of stock "
|
2458 |
-
"changes done manually via the WooCommerce dashboard. Therefore automated "
|
2459 |
-
"stock changes typically done via customers placing orders or via other "
|
2460 |
-
"plugins will not be logged."
|
2461 |
-
msgstr ""
|
2462 |
-
|
2463 |
-
#: classes/Views/ToggleAlerts.php:569
|
2464 |
-
msgid "Configure the file integrity scan settings."
|
2465 |
-
msgstr ""
|
2466 |
-
|
2467 |
-
#: classes/Views/ToggleAlerts.php:584
|
2468 |
-
msgid "Save Changes"
|
2469 |
-
msgstr ""
|
2470 |
-
|
2471 |
-
#: classes/Views/ToggleAlerts.php:591
|
2472 |
-
msgid "Log Level Updated"
|
2473 |
-
msgstr ""
|
2474 |
-
|
2475 |
-
#. translators: Alerts log level.
|
2476 |
-
#: classes/Views/ToggleAlerts.php:595
|
2477 |
-
#, php-format
|
2478 |
-
msgid "The %s log level has been successfully loaded and applied."
|
2479 |
-
msgstr ""
|
2480 |
-
|
2481 |
-
#: classes/Views/ToggleAlerts.php:599
|
2482 |
-
msgid "OK"
|
2483 |
-
msgstr ""
|
2484 |
-
|
2485 |
-
#: classes/Views/ToggleAlerts.php:613
|
2486 |
-
msgid "Enable File Integrity Scanner"
|
2487 |
-
msgstr ""
|
2488 |
-
|
2489 |
-
#: classes/Views/ToggleAlerts.php:615
|
2490 |
-
msgid ""
|
2491 |
-
"The file integrity scanner is switched off. To enable this event it has to "
|
2492 |
-
"be switched on."
|
2493 |
-
msgstr ""
|
2494 |
-
|
2495 |
-
#: classes/Views/ToggleAlerts.php:619
|
2496 |
-
msgid "SWITCH ON"
|
2497 |
-
msgstr ""
|
2498 |
-
|
2499 |
-
#: classes/Views/ToggleAlerts.php:620
|
2500 |
-
msgid "DISABLE EVENT"
|
2501 |
-
msgstr ""
|
2502 |
-
|
2503 |
-
#: classes/WidgetManager.php:55
|
2504 |
-
msgid "Latest Events"
|
2505 |
-
msgstr ""
|
2506 |
-
|
2507 |
-
#: classes/WidgetManager.php:79
|
2508 |
-
msgid "No alerts found."
|
2509 |
-
msgstr ""
|
2510 |
-
|
2511 |
-
#: defaults.php:64
|
2512 |
-
msgid "Fatal run-time error."
|
2513 |
-
msgstr ""
|
2514 |
-
|
2515 |
-
#: defaults.php:68
|
2516 |
-
msgid "Run-time warning (non-fatal error)."
|
2517 |
-
msgstr ""
|
2518 |
-
|
2519 |
-
#: defaults.php:72
|
2520 |
-
msgid "Compile-time parse error."
|
2521 |
-
msgstr ""
|
2522 |
-
|
2523 |
-
#: defaults.php:76
|
2524 |
-
msgid "Run-time notice."
|
2525 |
-
msgstr ""
|
2526 |
-
|
2527 |
-
#: defaults.php:80
|
2528 |
-
msgid "Fatal error that occurred during startup."
|
2529 |
-
msgstr ""
|
2530 |
-
|
2531 |
-
#: defaults.php:84
|
2532 |
-
msgid "Warnings that occurred during startup."
|
2533 |
-
msgstr ""
|
2534 |
-
|
2535 |
-
#: defaults.php:88
|
2536 |
-
msgid "Fatal compile-time error."
|
2537 |
-
msgstr ""
|
2538 |
-
|
2539 |
-
#: defaults.php:92
|
2540 |
-
msgid "Compile-time warning."
|
2541 |
-
msgstr ""
|
2542 |
-
|
2543 |
-
#: defaults.php:96
|
2544 |
-
msgid "User-generated error message."
|
2545 |
-
msgstr ""
|
2546 |
-
|
2547 |
-
#: defaults.php:100
|
2548 |
-
msgid "User-generated warning message."
|
2549 |
-
msgstr ""
|
2550 |
-
|
2551 |
-
#: defaults.php:104
|
2552 |
-
msgid "User-generated notice message."
|
2553 |
-
msgstr ""
|
2554 |
-
|
2555 |
-
#: defaults.php:108
|
2556 |
-
msgid "Non-standard/optimal code warning."
|
2557 |
-
msgstr ""
|
2558 |
-
|
2559 |
-
#: defaults.php:112
|
2560 |
-
msgid "Catchable fatal error."
|
2561 |
-
msgstr ""
|
2562 |
-
|
2563 |
-
#: defaults.php:116
|
2564 |
-
msgid "Run-time deprecation notices."
|
2565 |
-
msgstr ""
|
2566 |
-
|
2567 |
-
#: defaults.php:120
|
2568 |
-
msgid "Run-time user deprecation notices."
|
2569 |
-
msgstr ""
|
2570 |
-
|
2571 |
-
#: defaults.php:125
|
2572 |
-
msgid "Critical, high-impact messages."
|
2573 |
-
msgstr ""
|
2574 |
-
|
2575 |
-
#: defaults.php:129
|
2576 |
-
msgid "Debug informational messages."
|
2577 |
-
msgstr ""
|
2578 |
-
|
2579 |
-
#: defaults.php:139
|
2580 |
-
msgid "Users Profiles & Activity"
|
2581 |
-
msgstr ""
|
2582 |
-
|
2583 |
-
#: defaults.php:144
|
2584 |
-
msgid "User logged in"
|
2585 |
-
msgstr ""
|
2586 |
-
|
2587 |
-
#: defaults.php:144
|
2588 |
-
msgid "Successfully logged in."
|
2589 |
-
msgstr ""
|
2590 |
-
|
2591 |
-
#: defaults.php:145
|
2592 |
-
msgid "User logged out"
|
2593 |
-
msgstr ""
|
2594 |
-
|
2595 |
-
#: defaults.php:145
|
2596 |
-
msgid "Successfully logged out."
|
2597 |
-
msgstr ""
|
2598 |
-
|
2599 |
-
#: defaults.php:146
|
2600 |
-
msgid "Login failed"
|
2601 |
-
msgstr ""
|
2602 |
-
|
2603 |
-
#: defaults.php:146
|
2604 |
-
msgid "%Attempts% failed login(s) detected."
|
2605 |
-
msgstr ""
|
2606 |
-
|
2607 |
-
#: defaults.php:147
|
2608 |
-
msgid "Login failed / non existing user"
|
2609 |
-
msgstr ""
|
2610 |
-
|
2611 |
-
#: defaults.php:147
|
2612 |
-
msgid ""
|
2613 |
-
"%Attempts% failed login(s) detected using non existing user. %LogFileText%"
|
2614 |
-
msgstr ""
|
2615 |
-
|
2616 |
-
#: defaults.php:148
|
2617 |
-
msgid "Login blocked"
|
2618 |
-
msgstr ""
|
2619 |
-
|
2620 |
-
#: defaults.php:148
|
2621 |
-
msgid ""
|
2622 |
-
"Blocked from logging in because the same WordPress user is logged in from "
|
2623 |
-
"%ClientIP%."
|
2624 |
-
msgstr ""
|
2625 |
-
|
2626 |
-
#: defaults.php:149
|
2627 |
-
msgid "User logged in with existing session(s)"
|
2628 |
-
msgstr ""
|
2629 |
-
|
2630 |
-
#: defaults.php:149
|
2631 |
-
msgid ""
|
2632 |
-
"Successfully logged in. Another session from %IPAddress% for this user "
|
2633 |
-
"already exist."
|
2634 |
-
msgstr ""
|
2635 |
-
|
2636 |
-
#: defaults.php:150
|
2637 |
-
msgid "User logged out all other sessions with the same username"
|
2638 |
-
msgstr ""
|
2639 |
-
|
2640 |
-
#: defaults.php:150
|
2641 |
-
msgid "Logged out all other sessions with the same username."
|
2642 |
-
msgstr ""
|
2643 |
-
|
2644 |
-
#: defaults.php:151
|
2645 |
-
msgid "User session destroyed and logged out"
|
2646 |
-
msgstr ""
|
2647 |
-
|
2648 |
-
#: defaults.php:151
|
2649 |
-
msgid "Logged out session %TargetSessionID% which belonged to %TargetUserName%"
|
2650 |
-
msgstr ""
|
2651 |
-
|
2652 |
-
#: defaults.php:152
|
2653 |
-
msgid "User uploaded file from Uploads directory"
|
2654 |
-
msgstr ""
|
2655 |
-
|
2656 |
-
#: defaults.php:152
|
2657 |
-
msgid "Uploaded the file %FileName% in %FilePath%."
|
2658 |
-
msgstr ""
|
2659 |
-
|
2660 |
-
#: defaults.php:153
|
2661 |
-
msgid "User deleted file from Uploads directory"
|
2662 |
-
msgstr ""
|
2663 |
-
|
2664 |
-
#: defaults.php:153
|
2665 |
-
msgid "Deleted the file %FileName% from %FilePath%."
|
2666 |
-
msgstr ""
|
2667 |
-
|
2668 |
-
#: defaults.php:154
|
2669 |
-
msgid "User requests non-existing pages (404 Error Pages)"
|
2670 |
-
msgstr ""
|
2671 |
-
|
2672 |
-
#: defaults.php:154
|
2673 |
-
msgid ""
|
2674 |
-
"Has requested a non existing page (404 Error Pages) %Attempts% %Msg%. "
|
2675 |
-
"%LinkFile%%URL%"
|
2676 |
-
msgstr ""
|
2677 |
-
|
2678 |
-
#: defaults.php:155
|
2679 |
-
msgid "Website Visitor User requests non-existing pages (404 Error Pages)"
|
2680 |
-
msgstr ""
|
2681 |
-
|
2682 |
-
#: defaults.php:155
|
2683 |
-
msgid ""
|
2684 |
-
"Website Visitor Has requested a non existing page (404 Error Pages) %Attempts"
|
2685 |
-
"% %Msg%. %LinkFile%%URL%"
|
2686 |
-
msgstr ""
|
2687 |
-
|
2688 |
-
#: defaults.php:162
|
2689 |
-
msgid "New user was created on WordPress"
|
2690 |
-
msgstr ""
|
2691 |
-
|
2692 |
-
#: defaults.php:162
|
2693 |
-
msgid ""
|
2694 |
-
"A new user %NewUserData->Username% was created with role of %NewUserData-"
|
2695 |
-
">Roles%."
|
2696 |
-
msgstr ""
|
2697 |
-
|
2698 |
-
#: defaults.php:163
|
2699 |
-
msgid "User created another WordPress user"
|
2700 |
-
msgstr ""
|
2701 |
-
|
2702 |
-
#: defaults.php:163
|
2703 |
-
msgid ""
|
2704 |
-
"%UserChanger% created a new user %NewUserData->Username% with the role of "
|
2705 |
-
"%NewUserData->Roles%."
|
2706 |
-
msgstr ""
|
2707 |
-
|
2708 |
-
#: defaults.php:164
|
2709 |
-
msgid "The role of a user was changed by another WordPress user"
|
2710 |
-
msgstr ""
|
2711 |
-
|
2712 |
-
#: defaults.php:164
|
2713 |
-
msgid ""
|
2714 |
-
"Changed the role of the user %TargetUsername% from %OldRole% to %NewRole%"
|
2715 |
-
"%multisite_text%."
|
2716 |
-
msgstr ""
|
2717 |
-
|
2718 |
-
#: defaults.php:165
|
2719 |
-
msgid "User has changed his or her password"
|
2720 |
-
msgstr ""
|
2721 |
-
|
2722 |
-
#: defaults.php:165
|
2723 |
-
msgid "Changed the password."
|
2724 |
-
msgstr ""
|
2725 |
-
|
2726 |
-
#: defaults.php:166
|
2727 |
-
msgid "User changed another user's password"
|
2728 |
-
msgstr ""
|
2729 |
-
|
2730 |
-
#: defaults.php:166
|
2731 |
-
msgid ""
|
2732 |
-
"Changed the password for the user %TargetUserData->Username% with the role "
|
2733 |
-
"of %TargetUserData->Roles%."
|
2734 |
-
msgstr ""
|
2735 |
-
|
2736 |
-
#: defaults.php:167
|
2737 |
-
msgid "User changed his or her email address"
|
2738 |
-
msgstr ""
|
2739 |
-
|
2740 |
-
#: defaults.php:167
|
2741 |
-
msgid "Changed the email address from %OldEmail% to %NewEmail%."
|
2742 |
-
msgstr ""
|
2743 |
-
|
2744 |
-
#: defaults.php:168
|
2745 |
-
msgid "User changed another user's email address"
|
2746 |
-
msgstr ""
|
2747 |
-
|
2748 |
-
#: defaults.php:168
|
2749 |
-
msgid ""
|
2750 |
-
"Changed the email address of the user %TargetUsername% from %OldEmail% to "
|
2751 |
-
"%NewEmail%."
|
2752 |
-
msgstr ""
|
2753 |
-
|
2754 |
-
#: defaults.php:169
|
2755 |
-
msgid "User was deleted by another user"
|
2756 |
-
msgstr ""
|
2757 |
-
|
2758 |
-
#: defaults.php:169
|
2759 |
-
msgid ""
|
2760 |
-
"Deleted the user %TargetUserData->Username% with the role of %TargetUserData-"
|
2761 |
-
">Roles%."
|
2762 |
-
msgstr ""
|
2763 |
-
|
2764 |
-
#: defaults.php:170
|
2765 |
-
msgid "User opened the profile page of another user"
|
2766 |
-
msgstr ""
|
2767 |
-
|
2768 |
-
#: defaults.php:170
|
2769 |
-
msgid "%UserChanger% opened the profile page of the user %TargetUsername%."
|
2770 |
-
msgstr ""
|
2771 |
-
|
2772 |
-
#: defaults.php:171
|
2773 |
-
msgid "User updated a custom field value for a user"
|
2774 |
-
msgstr ""
|
2775 |
-
|
2776 |
-
#: defaults.php:171
|
2777 |
-
msgid ""
|
2778 |
-
"Changed the value of the custom field %custom_field_name%%ReportText% for "
|
2779 |
-
"the user %TargetUsername%.%ChangeText%"
|
2780 |
-
msgstr ""
|
2781 |
-
|
2782 |
-
#: defaults.php:172
|
2783 |
-
msgid "User created a custom field value for a user"
|
2784 |
-
msgstr ""
|
2785 |
-
|
2786 |
-
#: defaults.php:172
|
2787 |
-
msgid ""
|
2788 |
-
"Created the value of the custom field %custom_field_name% with %new_value% "
|
2789 |
-
"for the user %TargetUsername%."
|
2790 |
-
msgstr ""
|
2791 |
-
|
2792 |
-
#: defaults.php:173
|
2793 |
-
msgid "User changed first name for a user"
|
2794 |
-
msgstr ""
|
2795 |
-
|
2796 |
-
#: defaults.php:173
|
2797 |
-
msgid ""
|
2798 |
-
"Changed the first name of the user %TargetUsername% from %old_firstname% to "
|
2799 |
-
"%new_firstname%"
|
2800 |
-
msgstr ""
|
2801 |
-
|
2802 |
-
#: defaults.php:174
|
2803 |
-
msgid "User changed last name for a user"
|
2804 |
-
msgstr ""
|
2805 |
-
|
2806 |
-
#: defaults.php:174
|
2807 |
-
msgid ""
|
2808 |
-
"Changed the last name of the user %TargetUsername% from %old_lastname% to "
|
2809 |
-
"%new_lastname%"
|
2810 |
-
msgstr ""
|
2811 |
-
|
2812 |
-
#: defaults.php:175
|
2813 |
-
msgid "User changed nickname for a user"
|
2814 |
-
msgstr ""
|
2815 |
-
|
2816 |
-
#: defaults.php:175
|
2817 |
-
msgid ""
|
2818 |
-
"Changed the nickname of the user %TargetUsername% from %old_nickname% to "
|
2819 |
-
"%new_nickname%"
|
2820 |
-
msgstr ""
|
2821 |
-
|
2822 |
-
#: defaults.php:176
|
2823 |
-
msgid "User changed the display name for a user"
|
2824 |
-
msgstr ""
|
2825 |
-
|
2826 |
-
#: defaults.php:176
|
2827 |
-
msgid ""
|
2828 |
-
"Changed the Display name publicly of user %TargetUsername% from "
|
2829 |
-
"%old_displayname% to %new_displayname%"
|
2830 |
-
msgstr ""
|
2831 |
-
|
2832 |
-
#: defaults.php:183
|
2833 |
-
msgid "Content & Comments"
|
2834 |
-
msgstr ""
|
2835 |
-
|
2836 |
-
#: defaults.php:188
|
2837 |
-
msgid "User created a new post and saved it as draft"
|
2838 |
-
msgstr ""
|
2839 |
-
|
2840 |
-
#: defaults.php:188
|
2841 |
-
msgid ""
|
2842 |
-
"Created a new %PostType% titled %PostTitle% and saved it as draft. "
|
2843 |
-
"%EditorLinkPost%."
|
2844 |
-
msgstr ""
|
2845 |
-
|
2846 |
-
#: defaults.php:189
|
2847 |
-
msgid "User published a post"
|
2848 |
-
msgstr ""
|
2849 |
-
|
2850 |
-
#: defaults.php:189
|
2851 |
-
msgid ""
|
2852 |
-
"Published a %PostType% titled %PostTitle%. URL is %PostUrl%. %EditorLinkPost"
|
2853 |
-
"%."
|
2854 |
-
msgstr ""
|
2855 |
-
|
2856 |
-
#: defaults.php:190
|
2857 |
-
msgid "User modified a post"
|
2858 |
-
msgstr ""
|
2859 |
-
|
2860 |
-
#: defaults.php:190
|
2861 |
-
msgid ""
|
2862 |
-
"Modified the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
2863 |
-
"%EditorLinkPost%."
|
2864 |
-
msgstr ""
|
2865 |
-
|
2866 |
-
#: defaults.php:191
|
2867 |
-
msgid "User permanently deleted a post from the trash"
|
2868 |
-
msgstr ""
|
2869 |
-
|
2870 |
-
#: defaults.php:191
|
2871 |
-
msgid ""
|
2872 |
-
"Permanently deleted the %PostType% titled %PostTitle%. URL was %PostUrl%."
|
2873 |
-
msgstr ""
|
2874 |
-
|
2875 |
-
#: defaults.php:192
|
2876 |
-
msgid "User moved a post to the trash"
|
2877 |
-
msgstr ""
|
2878 |
-
|
2879 |
-
#: defaults.php:192
|
2880 |
-
msgid ""
|
2881 |
-
"Moved the %PostStatus% %PostType% titled %PostTitle% to trash. URL is "
|
2882 |
-
"%PostUrl%."
|
2883 |
-
msgstr ""
|
2884 |
-
|
2885 |
-
#: defaults.php:193
|
2886 |
-
msgid "User restored a post from trash"
|
2887 |
-
msgstr ""
|
2888 |
-
|
2889 |
-
#: defaults.php:193
|
2890 |
-
msgid ""
|
2891 |
-
"The %PostStatus% %PostType% titled %PostTitle% has been restored from trash. "
|
2892 |
-
"URL is: %PostUrl%. %EditorLinkPost%."
|
2893 |
-
msgstr ""
|
2894 |
-
|
2895 |
-
#: defaults.php:194
|
2896 |
-
msgid "User changed post URL"
|
2897 |
-
msgstr ""
|
2898 |
-
|
2899 |
-
#: defaults.php:194
|
2900 |
-
msgid ""
|
2901 |
-
"Changed the URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText"
|
2902 |
-
"%.%ChangeText% %EditorLinkPost%."
|
2903 |
-
msgstr ""
|
2904 |
-
|
2905 |
-
#: defaults.php:195
|
2906 |
-
msgid "User changed post author"
|
2907 |
-
msgstr ""
|
2908 |
-
|
2909 |
-
#: defaults.php:195
|
2910 |
-
msgid ""
|
2911 |
-
"Changed the author of the %PostStatus% %PostType% titled %PostTitle% from "
|
2912 |
-
"%OldAuthor% to %NewAuthor%. URL is: %PostUrl%. %EditorLinkPost%."
|
2913 |
-
msgstr ""
|
2914 |
-
|
2915 |
-
#: defaults.php:196
|
2916 |
-
msgid "User changed post status"
|
2917 |
-
msgstr ""
|
2918 |
-
|
2919 |
-
#: defaults.php:196
|
2920 |
-
msgid ""
|
2921 |
-
"Changed the status of the %PostType% titled %PostTitle% from %OldStatus% to "
|
2922 |
-
"%NewStatus%. URL is: %PostUrl%. %EditorLinkPost%."
|
2923 |
-
msgstr ""
|
2924 |
-
|
2925 |
-
#: defaults.php:197
|
2926 |
-
msgid "User changed the visibility of a post"
|
2927 |
-
msgstr ""
|
2928 |
-
|
2929 |
-
#: defaults.php:197
|
2930 |
-
msgid ""
|
2931 |
-
"Changed the visibility of the %PostStatus% %PostType% titled %PostTitle% "
|
2932 |
-
"from %OldVisibility% to %NewVisibility%. URL is: %PostUrl%. %EditorLinkPost%."
|
2933 |
-
msgstr ""
|
2934 |
-
|
2935 |
-
#: defaults.php:198
|
2936 |
-
msgid "User changed the date of a post"
|
2937 |
-
msgstr ""
|
2938 |
-
|
2939 |
-
#: defaults.php:198
|
2940 |
-
msgid ""
|
2941 |
-
"Changed the date of the %PostStatus% %PostType% titled %PostTitle% from "
|
2942 |
-
"%OldDate% to %NewDate%. URL is: %PostUrl%. %EditorLinkPost%."
|
2943 |
-
msgstr ""
|
2944 |
-
|
2945 |
-
#: defaults.php:199
|
2946 |
-
msgid "User changed the parent of a page"
|
2947 |
-
msgstr ""
|
2948 |
-
|
2949 |
-
#: defaults.php:199
|
2950 |
-
msgid ""
|
2951 |
-
"Changed the parent of the %PostStatus% %PostType% titled %PostTitle% from "
|
2952 |
-
"%OldParentName% to %NewParentName%. %EditorLinkPost%."
|
2953 |
-
msgstr ""
|
2954 |
-
|
2955 |
-
#: defaults.php:200
|
2956 |
-
msgid "User changed the template of a page"
|
2957 |
-
msgstr ""
|
2958 |
-
|
2959 |
-
#: defaults.php:200
|
2960 |
-
msgid ""
|
2961 |
-
"Changed the template of the %PostStatus% %PostType% titled %PostTitle% from "
|
2962 |
-
"%OldTemplate% to %NewTemplate%. %EditorLinkPost%."
|
2963 |
-
msgstr ""
|
2964 |
-
|
2965 |
-
#: defaults.php:201
|
2966 |
-
msgid "User set a post as sticky"
|
2967 |
-
msgstr ""
|
2968 |
-
|
2969 |
-
#: defaults.php:201
|
2970 |
-
msgid ""
|
2971 |
-
"Set the post %PostTitle% as Sticky. Post URL is %PostUrl%. %EditorLinkPost%."
|
2972 |
-
msgstr ""
|
2973 |
-
|
2974 |
-
#: defaults.php:202
|
2975 |
-
msgid "User removed post from sticky"
|
2976 |
-
msgstr ""
|
2977 |
-
|
2978 |
-
#: defaults.php:202
|
2979 |
-
msgid "Removed the post %PostTitle% from Sticky. %EditorLinkPost%."
|
2980 |
-
msgstr ""
|
2981 |
-
|
2982 |
-
#: defaults.php:203
|
2983 |
-
msgid "User modified the content of a post"
|
2984 |
-
msgstr ""
|
2985 |
-
|
2986 |
-
#: defaults.php:203
|
2987 |
-
msgid ""
|
2988 |
-
"Modified the content of the %PostStatus% %PostType% titled %PostTitle%. Post "
|
2989 |
-
"URL is %PostUrl%. %RevisionLink% %EditorLinkPost%."
|
2990 |
-
msgstr ""
|
2991 |
-
|
2992 |
-
#: defaults.php:204
|
2993 |
-
msgid "User submitted a post for review"
|
2994 |
-
msgstr ""
|
2995 |
-
|
2996 |
-
#: defaults.php:204
|
2997 |
-
msgid ""
|
2998 |
-
"Submitted the %PostType% titled %PostTitle% for review. URL is: %PostUrl%. "
|
2999 |
-
"%EditorLinkPost%."
|
3000 |
-
msgstr ""
|
3001 |
-
|
3002 |
-
#: defaults.php:205
|
3003 |
-
msgid "User scheduled a post"
|
3004 |
-
msgstr ""
|
3005 |
-
|
3006 |
-
#: defaults.php:205
|
3007 |
-
msgid ""
|
3008 |
-
"Scheduled the %PostType% titled %PostTitle% to be published on "
|
3009 |
-
"%PublishingDate%. URL is: %PostUrl%. %EditorLinkPost%."
|
3010 |
-
msgstr ""
|
3011 |
-
|
3012 |
-
#: defaults.php:206
|
3013 |
-
msgid "User changed title of a post"
|
3014 |
-
msgstr ""
|
3015 |
-
|
3016 |
-
#: defaults.php:206
|
3017 |
-
msgid ""
|
3018 |
-
"Changed the title of the %PostStatus% %PostType% from %OldTitle% to %NewTitle"
|
3019 |
-
"%. URL is: %PostUrl%. %EditorLinkPost%."
|
3020 |
-
msgstr ""
|
3021 |
-
|
3022 |
-
#: defaults.php:207
|
3023 |
-
msgid "User opened a post in the editor"
|
3024 |
-
msgstr ""
|
3025 |
-
|
3026 |
-
#: defaults.php:207
|
3027 |
-
msgid ""
|
3028 |
-
"Opened the %PostStatus% %PostType% titled %PostTitle% in the editor. URL is: "
|
3029 |
-
"%PostUrl%. %EditorLinkPost%."
|
3030 |
-
msgstr ""
|
3031 |
-
|
3032 |
-
#: defaults.php:208
|
3033 |
-
msgid "User viewed a post"
|
3034 |
-
msgstr ""
|
3035 |
-
|
3036 |
-
#: defaults.php:208
|
3037 |
-
msgid ""
|
3038 |
-
"Viewed the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
3039 |
-
"%EditorLinkPost%."
|
3040 |
-
msgstr ""
|
3041 |
-
|
3042 |
-
#: defaults.php:209
|
3043 |
-
msgid "A plugin modified a post"
|
3044 |
-
msgstr ""
|
3045 |
-
|
3046 |
-
#: defaults.php:209
|
3047 |
-
msgid ""
|
3048 |
-
"Plugin modified the %PostStatus% %PostType% titled %PostTitle% of type "
|
3049 |
-
"%PostType%. URL is: %PostUrl%. %EditorLinkPost%."
|
3050 |
-
msgstr ""
|
3051 |
-
|
3052 |
-
#: defaults.php:210
|
3053 |
-
msgid "User disabled Comments/Trackbacks and Pingbacks in a post"
|
3054 |
-
msgstr ""
|
3055 |
-
|
3056 |
-
#: defaults.php:210
|
3057 |
-
msgid ""
|
3058 |
-
"Disabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: "
|
3059 |
-
"%PostUrl%. %EditorLinkPost%."
|
3060 |
-
msgstr ""
|
3061 |
-
|
3062 |
-
#: defaults.php:211
|
3063 |
-
msgid "User enabled Comments/Trackbacks and Pingbacks in a post"
|
3064 |
-
msgstr ""
|
3065 |
-
|
3066 |
-
#: defaults.php:211
|
3067 |
-
msgid ""
|
3068 |
-
"Enabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: "
|
3069 |
-
"%PostUrl%. %EditorLinkPost%."
|
3070 |
-
msgstr ""
|
3071 |
-
|
3072 |
-
#: defaults.php:212
|
3073 |
-
msgid "User added post tag"
|
3074 |
-
msgstr ""
|
3075 |
-
|
3076 |
-
#: defaults.php:212
|
3077 |
-
msgid ""
|
3078 |
-
"Added the tag %tag% to the %PostStatus% post titled %PostTitle%. URL is: "
|
3079 |
-
"%PostUrl%. %EditorLinkPost%."
|
3080 |
-
msgstr ""
|
3081 |
-
|
3082 |
-
#: defaults.php:213
|
3083 |
-
msgid "User removed post tag"
|
3084 |
-
msgstr ""
|
3085 |
-
|
3086 |
-
#: defaults.php:213
|
3087 |
-
msgid ""
|
3088 |
-
"Removed the tag %tag% from the %PostStatus% post titled %PostTitle%. URL is: "
|
3089 |
-
"%PostUrl%. %EditorLinkPost%."
|
3090 |
-
msgstr ""
|
3091 |
-
|
3092 |
-
#: defaults.php:214
|
3093 |
-
msgid "User created new tag"
|
3094 |
-
msgstr ""
|
3095 |
-
|
3096 |
-
#: defaults.php:214
|
3097 |
-
msgid "Added a new tag called %TagName%. View the tag: %TagLink%."
|
3098 |
-
msgstr ""
|
3099 |
-
|
3100 |
-
#: defaults.php:215
|
3101 |
-
msgid "User deleted tag"
|
3102 |
-
msgstr ""
|
3103 |
-
|
3104 |
-
#: defaults.php:215
|
3105 |
-
msgid "Deleted the tag %TagName%."
|
3106 |
-
msgstr ""
|
3107 |
-
|
3108 |
-
#: defaults.php:216
|
3109 |
-
msgid "User renamed tag"
|
3110 |
-
msgstr ""
|
3111 |
-
|
3112 |
-
#: defaults.php:216
|
3113 |
-
msgid "Renamed a tag from %old_name% to %new_name%. View the tag: %TagLink%."
|
3114 |
-
msgstr ""
|
3115 |
-
|
3116 |
-
#: defaults.php:217
|
3117 |
-
msgid "User changed tag slug"
|
3118 |
-
msgstr ""
|
3119 |
-
|
3120 |
-
#: defaults.php:217
|
3121 |
-
msgid ""
|
3122 |
-
"Changed the slug of tag %tag% from %old_slug% to %new_slug%. View the tag: "
|
3123 |
-
"%TagLink%."
|
3124 |
-
msgstr ""
|
3125 |
-
|
3126 |
-
#: defaults.php:218
|
3127 |
-
msgid "User changed tag description"
|
3128 |
-
msgstr ""
|
3129 |
-
|
3130 |
-
#: defaults.php:218
|
3131 |
-
msgid ""
|
3132 |
-
"Changed the description of the tag %tag%%ReportText%.%ChangeText% View the "
|
3133 |
-
"tag: %TagLink%."
|
3134 |
-
msgstr ""
|
3135 |
-
|
3136 |
-
#: defaults.php:219
|
3137 |
-
msgid "User changed post category"
|
3138 |
-
msgstr ""
|
3139 |
-
|
3140 |
-
#: defaults.php:219
|
3141 |
-
msgid ""
|
3142 |
-
"Changed the category of the %PostStatus% %PostType% titled %PostTitle% from "
|
3143 |
-
"%OldCategories% to %NewCategories%. URL is: %PostUrl%. %EditorLinkPost%."
|
3144 |
-
msgstr ""
|
3145 |
-
|
3146 |
-
#: defaults.php:220
|
3147 |
-
msgid "User created new category"
|
3148 |
-
msgstr ""
|
3149 |
-
|
3150 |
-
#: defaults.php:220
|
3151 |
-
msgid ""
|
3152 |
-
"Created a new category called %CategoryName%. Category slug is %Slug%. "
|
3153 |
-
"%CategoryLink%."
|
3154 |
-
msgstr ""
|
3155 |
-
|
3156 |
-
#: defaults.php:221
|
3157 |
-
msgid "User deleted category"
|
3158 |
-
msgstr ""
|
3159 |
-
|
3160 |
-
#: defaults.php:221
|
3161 |
-
msgid ""
|
3162 |
-
"Deleted the %CategoryName% category. Category slug was %Slug%. %CategoryLink"
|
3163 |
-
"%."
|
3164 |
-
msgstr ""
|
3165 |
-
|
3166 |
-
#: defaults.php:222
|
3167 |
-
msgid "Changed the parent of a category"
|
3168 |
-
msgstr ""
|
3169 |
-
|
3170 |
-
#: defaults.php:222
|
3171 |
-
msgid ""
|
3172 |
-
"Changed the parent of the category %CategoryName% from %OldParent% to "
|
3173 |
-
"%NewParent%. %CategoryLink%."
|
3174 |
-
msgstr ""
|
3175 |
-
|
3176 |
-
#: defaults.php:223
|
3177 |
-
msgid "User changed category name"
|
3178 |
-
msgstr ""
|
3179 |
-
|
3180 |
-
#: defaults.php:223
|
3181 |
-
msgid "Changed the name of the category %old_name% to %new_name%."
|
3182 |
-
msgstr ""
|
3183 |
-
|
3184 |
-
#: defaults.php:224
|
3185 |
-
msgid "User changed category slug"
|
3186 |
-
msgstr ""
|
3187 |
-
|
3188 |
-
#: defaults.php:224
|
3189 |
-
msgid ""
|
3190 |
-
"Changed the slug of the category %CategoryName% from %old_slug% to %new_slug"
|
3191 |
-
"%."
|
3192 |
-
msgstr ""
|
3193 |
-
|
3194 |
-
#: defaults.php:225
|
3195 |
-
msgid "User created a custom field for a post"
|
3196 |
-
msgstr ""
|
3197 |
-
|
3198 |
-
#: defaults.php:225
|
3199 |
-
msgid ""
|
3200 |
-
"Created a new custom field called %MetaKey% with value %MetaValue% in the "
|
3201 |
-
"%PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
3202 |
-
"%EditorLinkPost%.<br>%MetaLink%."
|
3203 |
-
msgstr ""
|
3204 |
-
|
3205 |
-
#: defaults.php:226
|
3206 |
-
msgid "User updated a custom field value for a post"
|
3207 |
-
msgstr ""
|
3208 |
-
|
3209 |
-
#: defaults.php:226
|
3210 |
-
msgid ""
|
3211 |
-
"Modified the value of the custom field %MetaKey%%ReportText% in the "
|
3212 |
-
"%PostStatus% %PostType% titled %PostTitle%.%ChangeText% URL is: %PostUrl%. "
|
3213 |
-
"%EditorLinkPost%.<br>%MetaLink%."
|
3214 |
-
msgstr ""
|
3215 |
-
|
3216 |
-
#: defaults.php:227
|
3217 |
-
msgid "User deleted a custom field from a post"
|
3218 |
-
msgstr ""
|
3219 |
-
|
3220 |
-
#: defaults.php:227
|
3221 |
-
msgid ""
|
3222 |
-
"Deleted the custom field %MetaKey% with value %MetaValue% from %PostStatus% "
|
3223 |
-
"%PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%."
|
3224 |
-
msgstr ""
|
3225 |
-
|
3226 |
-
#: defaults.php:228
|
3227 |
-
msgid "User updated a custom field name for a post"
|
3228 |
-
msgstr ""
|
3229 |
-
|
3230 |
-
#: defaults.php:228
|
3231 |
-
msgid ""
|
3232 |
-
"Changed the custom field's name from %MetaKeyOld% to %MetaKeyNew% in the "
|
3233 |
-
"%PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
3234 |
-
"%EditorLinkPost%.<br>%MetaLink%."
|
3235 |
-
msgstr ""
|
3236 |
-
|
3237 |
-
#: defaults.php:234
|
3238 |
-
msgid "Comments"
|
3239 |
-
msgstr ""
|
3240 |
-
|
3241 |
-
#: defaults.php:235
|
3242 |
-
msgid "User approved a comment"
|
3243 |
-
msgstr ""
|
3244 |
-
|
3245 |
-
#: defaults.php:235
|
3246 |
-
msgid ""
|
3247 |
-
"Approved the comment posted in response to the post %PostTitle% by %Author% "
|
3248 |
-
"on %CommentLink%."
|
3249 |
-
msgstr ""
|
3250 |
-
|
3251 |
-
#: defaults.php:236
|
3252 |
-
msgid "User unapproved a comment"
|
3253 |
-
msgstr ""
|
3254 |
-
|
3255 |
-
#: defaults.php:236
|
3256 |
-
msgid ""
|
3257 |
-
"Unapproved the comment posted in response to the post %PostTitle% by %Author"
|
3258 |
-
"% on %CommentLink%."
|
3259 |
-
msgstr ""
|
3260 |
-
|
3261 |
-
#: defaults.php:237
|
3262 |
-
msgid "User replied to a comment"
|
3263 |
-
msgstr ""
|
3264 |
-
|
3265 |
-
#: defaults.php:237
|
3266 |
-
msgid ""
|
3267 |
-
"Replied to the comment posted in response to the post %PostTitle% by %Author"
|
3268 |
-
"% on %CommentLink%."
|
3269 |
-
msgstr ""
|
3270 |
-
|
3271 |
-
#: defaults.php:238
|
3272 |
-
msgid "User edited a comment"
|
3273 |
-
msgstr ""
|
3274 |
-
|
3275 |
-
#: defaults.php:238
|
3276 |
-
msgid ""
|
3277 |
-
"Edited a comment posted in response to the post %PostTitle% by %Author% on "
|
3278 |
-
"%CommentLink%."
|
3279 |
-
msgstr ""
|
3280 |
-
|
3281 |
-
#: defaults.php:239
|
3282 |
-
msgid "User marked a comment as Spam"
|
3283 |
-
msgstr ""
|
3284 |
-
|
3285 |
-
#: defaults.php:239
|
3286 |
-
msgid ""
|
3287 |
-
"Marked the comment posted in response to the post %PostTitle% by %Author% on "
|
3288 |
-
"%CommentLink% as Spam."
|
3289 |
-
msgstr ""
|
3290 |
-
|
3291 |
-
#: defaults.php:240
|
3292 |
-
msgid "User marked a comment as Not Spam"
|
3293 |
-
msgstr ""
|
3294 |
-
|
3295 |
-
#: defaults.php:240
|
3296 |
-
msgid ""
|
3297 |
-
"Marked the comment posted in response to the post %PostTitle% by %Author% on "
|
3298 |
-
"%CommentLink% as Not Spam."
|
3299 |
-
msgstr ""
|
3300 |
-
|
3301 |
-
#: defaults.php:241
|
3302 |
-
msgid "User moved a comment to trash"
|
3303 |
-
msgstr ""
|
3304 |
-
|
3305 |
-
#: defaults.php:241
|
3306 |
-
msgid ""
|
3307 |
-
"Moved the comment posted in response to the post %PostTitle% by %Author% on "
|
3308 |
-
"%Date% to trash."
|
3309 |
-
msgstr ""
|
3310 |
-
|
3311 |
-
#: defaults.php:242
|
3312 |
-
msgid "User restored a comment from the trash"
|
3313 |
-
msgstr ""
|
3314 |
-
|
3315 |
-
#: defaults.php:242
|
3316 |
-
msgid ""
|
3317 |
-
"Restored the comment posted in response to the post %PostTitle% by %Author% "
|
3318 |
-
"on %CommentLink% from the trash."
|
3319 |
-
msgstr ""
|
3320 |
-
|
3321 |
-
#: defaults.php:243
|
3322 |
-
msgid "User permanently deleted a comment"
|
3323 |
-
msgstr ""
|
3324 |
-
|
3325 |
-
#: defaults.php:243
|
3326 |
-
msgid ""
|
3327 |
-
"Permanently deleted the comment posted in response to the post %PostTitle% "
|
3328 |
-
"by %Author% on %Date%."
|
3329 |
-
msgstr ""
|
3330 |
-
|
3331 |
-
#: defaults.php:244
|
3332 |
-
msgid "User posted a comment"
|
3333 |
-
msgstr ""
|
3334 |
-
|
3335 |
-
#: defaults.php:244 defaults.php:245
|
3336 |
-
msgid "%CommentMsg% on %CommentLink%."
|
3337 |
-
msgstr ""
|
3338 |
-
|
3339 |
-
#: defaults.php:245
|
3340 |
-
msgid "Visitor posted a comment"
|
3341 |
-
msgstr ""
|
3342 |
-
|
3343 |
-
#: defaults.php:257
|
3344 |
-
msgid "User modified a draft blog post"
|
3345 |
-
msgstr ""
|
3346 |
-
|
3347 |
-
#: defaults.php:257
|
3348 |
-
msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
|
3349 |
-
msgstr ""
|
3350 |
-
|
3351 |
-
#: defaults.php:258
|
3352 |
-
msgid "User created a new post with custom post type and saved it as draft"
|
3353 |
-
msgstr ""
|
3354 |
-
|
3355 |
-
#: defaults.php:258
|
3356 |
-
msgid ""
|
3357 |
-
"Created a new custom post called %PostTitle% of type %PostType%. "
|
3358 |
-
"%EditorLinkPost%."
|
3359 |
-
msgstr ""
|
3360 |
-
|
3361 |
-
#: defaults.php:259
|
3362 |
-
msgid "User published a post with custom post type"
|
3363 |
-
msgstr ""
|
3364 |
-
|
3365 |
-
#: defaults.php:259
|
3366 |
-
msgid ""
|
3367 |
-
"Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
|
3368 |
-
"%. %EditorLinkPost%."
|
3369 |
-
msgstr ""
|
3370 |
-
|
3371 |
-
#: defaults.php:260
|
3372 |
-
msgid "User modified a post with custom post type"
|
3373 |
-
msgstr ""
|
3374 |
-
|
3375 |
-
#: defaults.php:260
|
3376 |
-
msgid ""
|
3377 |
-
"Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
|
3378 |
-
"%. %EditorLinkPost%."
|
3379 |
-
msgstr ""
|
3380 |
-
|
3381 |
-
#: defaults.php:261
|
3382 |
-
msgid "User modified a draft post with custom post type"
|
3383 |
-
msgstr ""
|
3384 |
-
|
3385 |
-
#: defaults.php:261
|
3386 |
-
msgid ""
|
3387 |
-
"Modified the draft custom post %PostTitle% of type is %PostType%. "
|
3388 |
-
"%EditorLinkPost%."
|
3389 |
-
msgstr ""
|
3390 |
-
|
3391 |
-
#: defaults.php:262
|
3392 |
-
msgid "User permanently deleted post with custom post type"
|
3393 |
-
msgstr ""
|
3394 |
-
|
3395 |
-
#: defaults.php:262
|
3396 |
-
msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
|
3397 |
-
msgstr ""
|
3398 |
-
|
3399 |
-
#: defaults.php:263
|
3400 |
-
msgid "User moved post with custom post type to trash"
|
3401 |
-
msgstr ""
|
3402 |
-
|
3403 |
-
#: defaults.php:263
|
3404 |
-
msgid ""
|
3405 |
-
"Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was "
|
3406 |
-
"%PostUrl%."
|
3407 |
-
msgstr ""
|
3408 |
-
|
3409 |
-
#: defaults.php:264
|
3410 |
-
msgid "User restored post with custom post type from trash"
|
3411 |
-
msgstr ""
|
3412 |
-
|
3413 |
-
#: defaults.php:264
|
3414 |
-
msgid ""
|
3415 |
-
"The custom post %PostTitle% of type %PostType% has been restored from trash. "
|
3416 |
-
"%EditorLinkPost%."
|
3417 |
-
msgstr ""
|
3418 |
-
|
3419 |
-
#: defaults.php:265
|
3420 |
-
msgid "User changed the category of a post with custom post type"
|
3421 |
-
msgstr ""
|
3422 |
-
|
3423 |
-
#: defaults.php:265
|
3424 |
-
msgid ""
|
3425 |
-
"Changed the category(ies) of the custom post %PostTitle% of type %PostType% "
|
3426 |
-
"from %OldCategories% to %NewCategories%. %EditorLinkPost%."
|
3427 |
-
msgstr ""
|
3428 |
-
|
3429 |
-
#: defaults.php:266
|
3430 |
-
msgid "User changed the URL of a post with custom post type"
|
3431 |
-
msgstr ""
|
3432 |
-
|
3433 |
-
#: defaults.php:266
|
3434 |
-
msgid ""
|
3435 |
-
"Changed the URL of the custom post %PostTitle% of type %PostType% from "
|
3436 |
-
"%OldUrl% to %NewUrl%. %EditorLinkPost%."
|
3437 |
-
msgstr ""
|
3438 |
-
|
3439 |
-
#: defaults.php:267
|
3440 |
-
msgid "User changed the author or post with custom post type"
|
3441 |
-
msgstr ""
|
3442 |
-
|
3443 |
-
#: defaults.php:267
|
3444 |
-
msgid ""
|
3445 |
-
"Changed the author of custom post %PostTitle% of type %PostType% from "
|
3446 |
-
"%OldAuthor% to %NewAuthor%. %EditorLinkPost%."
|
3447 |
-
msgstr ""
|
3448 |
-
|
3449 |
-
#: defaults.php:268
|
3450 |
-
msgid "User changed the status of post with custom post type"
|
3451 |
-
msgstr ""
|
3452 |
-
|
3453 |
-
#: defaults.php:268
|
3454 |
-
msgid ""
|
3455 |
-
"Changed the status of custom post %PostTitle% of type %PostType% from "
|
3456 |
-
"%OldStatus% to %NewStatus%. %EditorLinkPost%."
|
3457 |
-
msgstr ""
|
3458 |
-
|
3459 |
-
#: defaults.php:269
|
3460 |
-
msgid "User changed the visibility of a post with custom post type"
|
3461 |
-
msgstr ""
|
3462 |
-
|
3463 |
-
#: defaults.php:269
|
3464 |
-
msgid ""
|
3465 |
-
"Changed the visibility of the custom post %PostTitle% of type %PostType% "
|
3466 |
-
"from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
|
3467 |
-
msgstr ""
|
3468 |
-
|
3469 |
-
#: defaults.php:270
|
3470 |
-
msgid "User changed the date of post with custom post type"
|
3471 |
-
msgstr ""
|
3472 |
-
|
3473 |
-
#: defaults.php:270
|
3474 |
-
msgid ""
|
3475 |
-
"Changed the date of the custom post %PostTitle% of type %PostType% from "
|
3476 |
-
"%OldDate% to %NewDate%. %EditorLinkPost%."
|
3477 |
-
msgstr ""
|
3478 |
-
|
3479 |
-
#: defaults.php:271
|
3480 |
-
msgid "User created a custom field for a custom post type"
|
3481 |
-
msgstr ""
|
3482 |
-
|
3483 |
-
#: defaults.php:271
|
3484 |
-
msgid ""
|
3485 |
-
"Created a new custom field %MetaKey% with value %MetaValue% in custom post "
|
3486 |
-
"%PostTitle% of type %PostType%. %EditorLinkPost%.<br>%MetaLink%."
|
3487 |
-
msgstr ""
|
3488 |
-
|
3489 |
-
#: defaults.php:272
|
3490 |
-
msgid "User updated a custom field for a custom post type"
|
3491 |
-
msgstr ""
|
3492 |
-
|
3493 |
-
#: defaults.php:272
|
3494 |
-
msgid ""
|
3495 |
-
"Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
|
3496 |
-
"%MetaValueNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost"
|
3497 |
-
"%.<br>%MetaLink%."
|
3498 |
-
msgstr ""
|
3499 |
-
|
3500 |
-
#: defaults.php:273
|
3501 |
-
msgid "User deleted a custom field from a custom post type"
|
3502 |
-
msgstr ""
|
3503 |
-
|
3504 |
-
#: defaults.php:273
|
3505 |
-
msgid ""
|
3506 |
-
"Deleted the custom field %MetaKey% with id %MetaID% from custom post "
|
3507 |
-
"%PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
|
3508 |
-
msgstr ""
|
3509 |
-
|
3510 |
-
#: defaults.php:274
|
3511 |
-
msgid "User updated a custom field name for a custom post type"
|
3512 |
-
msgstr ""
|
3513 |
-
|
3514 |
-
#: defaults.php:274
|
3515 |
-
msgid ""
|
3516 |
-
"Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom "
|
3517 |
-
"post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
|
3518 |
-
msgstr ""
|
3519 |
-
|
3520 |
-
#: defaults.php:275
|
3521 |
-
msgid "User modified content for a published custom post type"
|
3522 |
-
msgstr ""
|
3523 |
-
|
3524 |
-
#: defaults.php:275
|
3525 |
-
msgid ""
|
3526 |
-
"Modified the content of the published custom post type %PostTitle%. Post URL "
|
3527 |
-
"is %PostUrl%.%EditorLinkPost%."
|
3528 |
-
msgstr ""
|
3529 |
-
|
3530 |
-
#: defaults.php:276
|
3531 |
-
msgid "User modified content for a draft post"
|
3532 |
-
msgstr ""
|
3533 |
-
|
3534 |
-
#: defaults.php:276
|
3535 |
-
msgid ""
|
3536 |
-
"Modified the content of the draft post %PostTitle%.%RevisionLink% "
|
3537 |
-
"%EditorLinkPost%."
|
3538 |
-
msgstr ""
|
3539 |
-
|
3540 |
-
#: defaults.php:277
|
3541 |
-
msgid "User modified content for a draft custom post type"
|
3542 |
-
msgstr ""
|
3543 |
-
|
3544 |
-
#: defaults.php:277
|
3545 |
-
msgid ""
|
3546 |
-
"Modified the content of the draft custom post type %PostTitle%."
|
3547 |
-
"%EditorLinkPost%."
|
3548 |
-
msgstr ""
|
3549 |
-
|
3550 |
-
#: defaults.php:278
|
3551 |
-
msgid "User modified content of a post"
|
3552 |
-
msgstr ""
|
3553 |
-
|
3554 |
-
#: defaults.php:278
|
3555 |
-
msgid ""
|
3556 |
-
"Modified the content of post %PostTitle% which is submitted for review."
|
3557 |
-
"%RevisionLink% %EditorLinkPost%."
|
3558 |
-
msgstr ""
|
3559 |
-
|
3560 |
-
#: defaults.php:279
|
3561 |
-
msgid "User scheduled a custom post type"
|
3562 |
-
msgstr ""
|
3563 |
-
|
3564 |
-
#: defaults.php:279
|
3565 |
-
msgid ""
|
3566 |
-
"Scheduled the custom post type %PostTitle% to be published %PublishingDate%. "
|
3567 |
-
"%EditorLinkPost%."
|
3568 |
-
msgstr ""
|
3569 |
-
|
3570 |
-
#: defaults.php:280
|
3571 |
-
msgid "User changed title of a custom post type"
|
3572 |
-
msgstr ""
|
3573 |
-
|
3574 |
-
#: defaults.php:280
|
3575 |
-
msgid ""
|
3576 |
-
"Changed the title of the custom post %OldTitle% to %NewTitle%. "
|
3577 |
-
"%EditorLinkPost%."
|
3578 |
-
msgstr ""
|
3579 |
-
|
3580 |
-
#: defaults.php:281
|
3581 |
-
msgid "User opened a custom post type in the editor"
|
3582 |
-
msgstr ""
|
3583 |
-
|
3584 |
-
#: defaults.php:281
|
3585 |
-
msgid ""
|
3586 |
-
"Opened the custom post %PostTitle% of type %PostType% in the editor. View "
|
3587 |
-
"the post: %EditorLinkPost%."
|
3588 |
-
msgstr ""
|
3589 |
-
|
3590 |
-
#: defaults.php:282
|
3591 |
-
msgid "User viewed a custom post type"
|
3592 |
-
msgstr ""
|
3593 |
-
|
3594 |
-
#: defaults.php:282
|
3595 |
-
msgid ""
|
3596 |
-
"Viewed the custom post %PostTitle% of type %PostType%. View the post: "
|
3597 |
-
"%PostUrl%."
|
3598 |
-
msgstr ""
|
3599 |
-
|
3600 |
-
#: defaults.php:283
|
3601 |
-
msgid "A plugin created a custom post"
|
3602 |
-
msgstr ""
|
3603 |
-
|
3604 |
-
#: defaults.php:283
|
3605 |
-
msgid "A plugin automatically created the following custom post: %PostTitle%."
|
3606 |
-
msgstr ""
|
3607 |
-
|
3608 |
-
#: defaults.php:284
|
3609 |
-
msgid "A plugin deleted a custom post"
|
3610 |
-
msgstr ""
|
3611 |
-
|
3612 |
-
#: defaults.php:284
|
3613 |
-
msgid "A plugin automatically deleted the following custom post: %PostTitle%."
|
3614 |
-
msgstr ""
|
3615 |
-
|
3616 |
-
#: defaults.php:285
|
3617 |
-
msgid "A plugin modified a custom post"
|
3618 |
msgstr ""
|
3619 |
|
3620 |
-
#: defaults.php:
|
3621 |
msgid ""
|
3622 |
-
"
|
3623 |
msgstr ""
|
3624 |
|
3625 |
-
#: defaults.php:
|
3626 |
-
msgid "User
|
3627 |
msgstr ""
|
3628 |
|
3629 |
-
#: defaults.php:
|
3630 |
-
msgid ""
|
3631 |
-
"Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage"
|
3632 |
-
"%."
|
3633 |
msgstr ""
|
3634 |
|
3635 |
-
#: defaults.php:
|
3636 |
-
msgid "User
|
3637 |
msgstr ""
|
3638 |
|
3639 |
-
#: defaults.php:
|
3640 |
msgid ""
|
3641 |
-
"
|
3642 |
msgstr ""
|
3643 |
|
3644 |
-
#: defaults.php:
|
3645 |
-
msgid "User
|
3646 |
msgstr ""
|
3647 |
|
3648 |
-
#: defaults.php:
|
3649 |
-
msgid ""
|
3650 |
-
"Modified the published page %PostTitle%. Page URL is %PostUrl%. "
|
3651 |
-
"%EditorLinkPage%."
|
3652 |
msgstr ""
|
3653 |
|
3654 |
-
#: defaults.php:
|
3655 |
-
msgid "User
|
3656 |
msgstr ""
|
3657 |
|
3658 |
-
#: defaults.php:
|
3659 |
msgid ""
|
3660 |
-
"
|
3661 |
-
msgstr ""
|
3662 |
-
|
3663 |
-
#: defaults.php:301
|
3664 |
-
msgid "User permanently deleted a page from the trash"
|
3665 |
-
msgstr ""
|
3666 |
-
|
3667 |
-
#: defaults.php:301
|
3668 |
-
msgid "Permanently deleted the page %PostTitle%."
|
3669 |
-
msgstr ""
|
3670 |
-
|
3671 |
-
#: defaults.php:302
|
3672 |
-
msgid "User moved WordPress page to the trash"
|
3673 |
-
msgstr ""
|
3674 |
-
|
3675 |
-
#: defaults.php:302
|
3676 |
-
msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
|
3677 |
-
msgstr ""
|
3678 |
-
|
3679 |
-
#: defaults.php:303
|
3680 |
-
msgid "User restored a WordPress page from trash"
|
3681 |
-
msgstr ""
|
3682 |
-
|
3683 |
-
#: defaults.php:303
|
3684 |
-
msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
|
3685 |
msgstr ""
|
3686 |
|
3687 |
-
#: defaults.php:
|
3688 |
-
msgid "User
|
3689 |
msgstr ""
|
3690 |
|
3691 |
-
#: defaults.php:
|
3692 |
msgid ""
|
3693 |
-
"
|
3694 |
-
"%EditorLinkPage%."
|
3695 |
msgstr ""
|
3696 |
|
3697 |
-
#: defaults.php:
|
3698 |
-
msgid "User
|
3699 |
msgstr ""
|
3700 |
|
3701 |
-
#: defaults.php:
|
3702 |
msgid ""
|
3703 |
-
"
|
3704 |
-
"%EditorLinkPage%."
|
3705 |
msgstr ""
|
3706 |
|
3707 |
-
#: defaults.php:
|
3708 |
-
msgid "User
|
3709 |
msgstr ""
|
3710 |
|
3711 |
-
#: defaults.php:
|
3712 |
-
msgid ""
|
3713 |
-
"Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. "
|
3714 |
-
"%EditorLinkPage%."
|
3715 |
msgstr ""
|
3716 |
|
3717 |
-
#: defaults.php:
|
3718 |
-
msgid "
|
3719 |
msgstr ""
|
3720 |
|
3721 |
-
#: defaults.php:
|
3722 |
-
msgid ""
|
3723 |
-
"Changed the visibility of the page %PostTitle% from %OldVisibility% to "
|
3724 |
-
"%NewVisibility%. %EditorLinkPage%."
|
3725 |
msgstr ""
|
3726 |
|
3727 |
-
#: defaults.php:
|
3728 |
-
msgid "
|
3729 |
msgstr ""
|
3730 |
|
3731 |
-
#: defaults.php:
|
3732 |
msgid ""
|
3733 |
-
"
|
3734 |
-
"%EditorLinkPage%."
|
3735 |
msgstr ""
|
3736 |
|
3737 |
-
#: defaults.php:
|
3738 |
-
msgid "
|
3739 |
msgstr ""
|
3740 |
|
3741 |
-
#: defaults.php:
|
3742 |
msgid ""
|
3743 |
-
"
|
3744 |
-
"
|
3745 |
msgstr ""
|
3746 |
|
3747 |
-
#: defaults.php:
|
3748 |
-
msgid "
|
3749 |
msgstr ""
|
3750 |
|
3751 |
-
#: defaults.php:
|
3752 |
msgid ""
|
3753 |
-
"
|
3754 |
-
"%
|
3755 |
msgstr ""
|
3756 |
|
3757 |
-
#: defaults.php:
|
3758 |
-
msgid "
|
3759 |
msgstr ""
|
3760 |
|
3761 |
-
#: defaults.php:
|
3762 |
-
msgid ""
|
3763 |
-
"Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle% "
|
3764 |
-
"%EditorLinkPage%.<br>%MetaLink%."
|
3765 |
msgstr ""
|
3766 |
|
3767 |
-
#: defaults.php:
|
3768 |
-
msgid "
|
3769 |
msgstr ""
|
3770 |
|
3771 |
-
#: defaults.php:
|
3772 |
msgid ""
|
3773 |
-
"
|
3774 |
-
"%
|
3775 |
msgstr ""
|
3776 |
|
3777 |
-
#: defaults.php:
|
3778 |
-
msgid "
|
3779 |
msgstr ""
|
3780 |
|
3781 |
-
#: defaults.php:
|
3782 |
msgid ""
|
3783 |
-
"
|
3784 |
-
"
|
3785 |
msgstr ""
|
3786 |
|
3787 |
-
#: defaults.php:
|
3788 |
-
msgid "
|
3789 |
msgstr ""
|
3790 |
|
3791 |
-
#: defaults.php:
|
3792 |
msgid ""
|
3793 |
-
"
|
3794 |
-
"%."
|
3795 |
msgstr ""
|
3796 |
|
3797 |
-
#: defaults.php:
|
3798 |
-
msgid "
|
3799 |
msgstr ""
|
3800 |
|
3801 |
-
#: defaults.php:
|
3802 |
msgid ""
|
3803 |
-
"
|
3804 |
-
"%
|
3805 |
msgstr ""
|
3806 |
|
3807 |
-
#: defaults.php:
|
3808 |
-
msgid "
|
3809 |
msgstr ""
|
3810 |
|
3811 |
-
#: defaults.php:
|
3812 |
msgid ""
|
3813 |
-
"
|
3814 |
-
|
3815 |
-
|
3816 |
-
#: defaults.php:317
|
3817 |
-
msgid "User opened a page in the editor"
|
3818 |
msgstr ""
|
3819 |
|
3820 |
-
#: defaults.php:
|
3821 |
-
msgid ""
|
3822 |
-
"Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
|
3823 |
msgstr ""
|
3824 |
|
3825 |
-
#: defaults.php:
|
3826 |
-
msgid "User
|
3827 |
msgstr ""
|
3828 |
|
3829 |
-
#: defaults.php:
|
3830 |
-
msgid "
|
3831 |
msgstr ""
|
3832 |
|
3833 |
-
#: defaults.php:
|
3834 |
-
msgid "User
|
3835 |
msgstr ""
|
3836 |
|
3837 |
-
#: defaults.php:
|
3838 |
-
msgid ""
|
3839 |
-
"Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
|
3840 |
msgstr ""
|
3841 |
|
3842 |
-
#: defaults.php:
|
3843 |
-
msgid "
|
3844 |
msgstr ""
|
3845 |
|
3846 |
-
#: defaults.php:
|
3847 |
-
msgid "
|
|
|
|
|
3848 |
msgstr ""
|
3849 |
|
3850 |
-
#: defaults.php:
|
3851 |
-
msgid "User
|
3852 |
msgstr ""
|
3853 |
|
3854 |
-
#: defaults.php:
|
3855 |
msgid ""
|
3856 |
-
"
|
|
|
3857 |
msgstr ""
|
3858 |
|
3859 |
-
#: defaults.php:
|
3860 |
-
msgid "
|
3861 |
msgstr ""
|
3862 |
|
3863 |
-
#: defaults.php:
|
3864 |
-
msgid ""
|
3865 |
-
"Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
|
3866 |
msgstr ""
|
3867 |
|
3868 |
-
#: defaults.php:
|
3869 |
-
msgid "
|
3870 |
msgstr ""
|
3871 |
|
3872 |
-
#: defaults.php:
|
3873 |
msgid ""
|
3874 |
-
"
|
|
|
3875 |
msgstr ""
|
3876 |
|
3877 |
-
#: defaults.php:
|
3878 |
-
msgid "
|
3879 |
msgstr ""
|
3880 |
|
3881 |
-
#: defaults.php:
|
3882 |
-
msgid "
|
3883 |
msgstr ""
|
3884 |
|
3885 |
-
#: defaults.php:
|
3886 |
-
msgid "
|
3887 |
msgstr ""
|
3888 |
|
3889 |
-
#: defaults.php:
|
3890 |
-
msgid "
|
3891 |
msgstr ""
|
3892 |
|
3893 |
-
#: defaults.php:
|
3894 |
-
msgid "
|
3895 |
msgstr ""
|
3896 |
|
3897 |
-
#: defaults.php:
|
3898 |
-
msgid "
|
3899 |
msgstr ""
|
3900 |
|
3901 |
-
#: defaults.php:
|
3902 |
-
msgid "
|
3903 |
msgstr ""
|
3904 |
|
3905 |
-
#: defaults.php:
|
3906 |
-
msgid "
|
3907 |
msgstr ""
|
3908 |
|
3909 |
-
#: defaults.php:
|
3910 |
-
msgid "
|
3911 |
msgstr ""
|
3912 |
|
3913 |
-
#: defaults.php:
|
3914 |
-
msgid "
|
3915 |
msgstr ""
|
3916 |
|
3917 |
-
#: defaults.php:
|
3918 |
-
msgid "
|
3919 |
msgstr ""
|
3920 |
|
3921 |
-
#: defaults.php:
|
3922 |
-
msgid ""
|
3923 |
-
"An unknown component created these tables in the database: %TableNames%."
|
3924 |
msgstr ""
|
3925 |
|
3926 |
-
#: defaults.php:
|
3927 |
-
msgid "
|
3928 |
msgstr ""
|
3929 |
|
3930 |
-
#: defaults.php:
|
3931 |
msgid ""
|
3932 |
-
"
|
3933 |
-
"
|
3934 |
msgstr ""
|
3935 |
|
3936 |
-
#: defaults.php:
|
3937 |
-
msgid "
|
3938 |
msgstr ""
|
3939 |
|
3940 |
-
#: defaults.php:
|
3941 |
msgid ""
|
3942 |
-
"
|
3943 |
-
"
|
3944 |
msgstr ""
|
3945 |
|
3946 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
3947 |
msgid "User installed a plugin"
|
3948 |
msgstr ""
|
3949 |
|
3950 |
-
#: defaults.php:
|
3951 |
msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%."
|
3952 |
msgstr ""
|
3953 |
|
3954 |
-
#: defaults.php:
|
3955 |
msgid "User activated a WordPress plugin"
|
3956 |
msgstr ""
|
3957 |
|
3958 |
-
#: defaults.php:
|
3959 |
msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%."
|
3960 |
msgstr ""
|
3961 |
|
3962 |
-
#: defaults.php:
|
3963 |
msgid "User deactivated a WordPress plugin"
|
3964 |
msgstr ""
|
3965 |
|
3966 |
-
#: defaults.php:
|
3967 |
msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%."
|
3968 |
msgstr ""
|
3969 |
|
3970 |
-
#: defaults.php:
|
3971 |
msgid "User uninstalled a plugin"
|
3972 |
msgstr ""
|
3973 |
|
3974 |
-
#: defaults.php:
|
3975 |
msgid ""
|
3976 |
"Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile"
|
3977 |
"%."
|
3978 |
msgstr ""
|
3979 |
|
3980 |
-
#: defaults.php:
|
3981 |
msgid "User upgraded a plugin"
|
3982 |
msgstr ""
|
3983 |
|
3984 |
-
#: defaults.php:
|
3985 |
msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%."
|
3986 |
msgstr ""
|
3987 |
|
3988 |
-
#: defaults.php:
|
3989 |
-
msgid "
|
3990 |
msgstr ""
|
3991 |
|
3992 |
-
#: defaults.php:
|
3993 |
msgid ""
|
3994 |
-
"
|
3995 |
msgstr ""
|
3996 |
|
3997 |
-
#: defaults.php:
|
3998 |
-
msgid "
|
3999 |
msgstr ""
|
4000 |
|
4001 |
-
#: defaults.php:
|
4002 |
msgid ""
|
4003 |
-
"
|
4004 |
-
"
|
4005 |
msgstr ""
|
4006 |
|
4007 |
-
#: defaults.php:
|
4008 |
-
msgid "
|
4009 |
msgstr ""
|
4010 |
|
4011 |
-
#: defaults.php:
|
4012 |
msgid ""
|
4013 |
-
"
|
4014 |
-
"
|
4015 |
msgstr ""
|
4016 |
|
4017 |
-
#: defaults.php:
|
4018 |
msgid "A plugin created a post"
|
4019 |
msgstr ""
|
4020 |
|
4021 |
-
#: defaults.php:
|
4022 |
msgid ""
|
4023 |
"A plugin automatically created the following %PostType% called %PostTitle%. "
|
4024 |
"View the post: %EditorLinkPost%."
|
4025 |
msgstr ""
|
4026 |
|
4027 |
-
#: defaults.php:
|
4028 |
-
msgid "A plugin
|
4029 |
-
msgstr ""
|
4030 |
-
|
4031 |
-
#: defaults.php:357
|
4032 |
-
msgid ""
|
4033 |
-
"A plugin automatically deleted the following %PostType% called %PostTitle%."
|
4034 |
-
msgstr ""
|
4035 |
-
|
4036 |
-
#: defaults.php:358
|
4037 |
-
msgid "User changed a file using the plugin editor"
|
4038 |
-
msgstr ""
|
4039 |
-
|
4040 |
-
#: defaults.php:358
|
4041 |
-
msgid "Modified %File% with the Plugin Editor."
|
4042 |
msgstr ""
|
4043 |
|
4044 |
-
#: defaults.php:
|
4045 |
-
msgid "
|
4046 |
msgstr ""
|
4047 |
|
4048 |
-
#: defaults.php:
|
4049 |
-
msgid "
|
4050 |
msgstr ""
|
4051 |
|
4052 |
-
#: defaults.php:
|
4053 |
-
msgid ""
|
4054 |
-
"Installed the theme \"%Theme->Name%\" in %Theme->get_template_directory%."
|
4055 |
msgstr ""
|
4056 |
|
4057 |
-
#: defaults.php:
|
4058 |
-
msgid "
|
4059 |
msgstr ""
|
4060 |
|
4061 |
-
#: defaults.php:
|
4062 |
msgid ""
|
4063 |
-
"
|
4064 |
-
">get_template_directory%."
|
4065 |
msgstr ""
|
4066 |
|
4067 |
-
#: defaults.php:
|
4068 |
-
msgid "
|
4069 |
msgstr ""
|
4070 |
|
4071 |
-
#: defaults.php:
|
4072 |
-
msgid ""
|
4073 |
-
"Deleted the theme \"%Theme->Name%\" installed in %Theme-"
|
4074 |
-
">get_template_directory%."
|
4075 |
msgstr ""
|
4076 |
|
4077 |
-
#: defaults.php:
|
4078 |
-
msgid "
|
4079 |
msgstr ""
|
4080 |
|
4081 |
-
#: defaults.php:
|
4082 |
-
msgid ""
|
4083 |
-
"Network activated the theme %Theme->Name% installed in %Theme-"
|
4084 |
-
">get_template_directory%."
|
4085 |
msgstr ""
|
4086 |
|
4087 |
-
#: defaults.php:
|
4088 |
-
msgid "
|
4089 |
msgstr ""
|
4090 |
|
4091 |
-
#: defaults.php:
|
4092 |
msgid ""
|
4093 |
-
"
|
4094 |
">get_template_directory%."
|
4095 |
msgstr ""
|
4096 |
|
4097 |
-
#: defaults.php:
|
4098 |
-
msgid "
|
4099 |
msgstr ""
|
4100 |
|
4101 |
-
#: defaults.php:
|
4102 |
-
msgid "
|
4103 |
msgstr ""
|
4104 |
|
4105 |
-
#: defaults.php:
|
4106 |
-
msgid "
|
4107 |
msgstr ""
|
4108 |
|
4109 |
-
#: defaults.php:
|
4110 |
-
msgid ""
|
4111 |
-
"Theme %Theme->Name% modified the structure of these database tables: "
|
4112 |
-
"%TableNames%."
|
4113 |
msgstr ""
|
4114 |
|
4115 |
-
#: defaults.php:
|
4116 |
-
msgid "
|
4117 |
msgstr ""
|
4118 |
|
4119 |
-
#: defaults.php:
|
4120 |
-
msgid ""
|
4121 |
-
"Theme %Theme->Name% deleted the following tables from the database: "
|
4122 |
-
"%TableNames%."
|
4123 |
msgstr ""
|
4124 |
|
4125 |
-
#: defaults.php:
|
4126 |
-
msgid "
|
4127 |
msgstr ""
|
4128 |
|
4129 |
-
#: defaults.php:
|
4130 |
msgid ""
|
4131 |
-
"
|
4132 |
-
">get_template_directory%."
|
4133 |
-
msgstr ""
|
4134 |
-
|
4135 |
-
#: defaults.php:374
|
4136 |
-
msgid "User changed a file using the theme editor"
|
4137 |
msgstr ""
|
4138 |
|
4139 |
-
#: defaults.php:
|
4140 |
-
msgid "
|
4141 |
msgstr ""
|
4142 |
|
4143 |
-
#: defaults.php:
|
4144 |
msgid "Unknown Error"
|
4145 |
msgstr ""
|
4146 |
|
4147 |
-
#: defaults.php:
|
4148 |
msgid "An unexpected error has occurred ."
|
4149 |
msgstr ""
|
4150 |
|
4151 |
-
#: defaults.php:
|
4152 |
msgid "PHP error"
|
4153 |
msgstr ""
|
4154 |
|
4155 |
-
#: defaults.php:
|
4156 |
-
#: defaults.php:
|
4157 |
msgid "%Message%."
|
4158 |
msgstr ""
|
4159 |
|
4160 |
-
#: defaults.php:
|
4161 |
msgid "PHP warning"
|
4162 |
msgstr ""
|
4163 |
|
4164 |
-
#: defaults.php:
|
4165 |
msgid "PHP notice"
|
4166 |
msgstr ""
|
4167 |
|
4168 |
-
#: defaults.php:
|
4169 |
msgid "PHP exception"
|
4170 |
msgstr ""
|
4171 |
|
4172 |
-
#: defaults.php:
|
4173 |
msgid "PHP shutdown error"
|
4174 |
msgstr ""
|
4175 |
|
4176 |
-
#: defaults.php:
|
4177 |
msgid "Events automatically pruned by system"
|
4178 |
msgstr ""
|
4179 |
|
4180 |
-
#: defaults.php:
|
4181 |
-
msgid "System automatically deleted %EventCount%
|
4182 |
msgstr ""
|
4183 |
|
4184 |
-
#: defaults.php:
|
4185 |
-
msgid "WordPress
|
4186 |
msgstr ""
|
4187 |
|
4188 |
-
#: defaults.php:
|
4189 |
-
msgid "
|
4190 |
msgstr ""
|
4191 |
|
4192 |
-
#: defaults.php:
|
4193 |
-
msgid "
|
4194 |
msgstr ""
|
4195 |
|
4196 |
-
#: defaults.php:
|
4197 |
-
msgid "
|
4198 |
msgstr ""
|
4199 |
|
4200 |
-
#: defaults.php:
|
4201 |
-
msgid "
|
4202 |
msgstr ""
|
4203 |
|
4204 |
-
#: defaults.php:
|
4205 |
-
msgid "
|
|
|
|
|
4206 |
msgstr ""
|
4207 |
|
4208 |
-
#: defaults.php:
|
4209 |
-
msgid "
|
4210 |
msgstr ""
|
4211 |
|
4212 |
-
#: defaults.php:
|
4213 |
-
msgid "
|
4214 |
msgstr ""
|
4215 |
|
4216 |
-
#: defaults.php:
|
4217 |
-
msgid "
|
4218 |
msgstr ""
|
4219 |
|
4220 |
-
#: defaults.php:
|
4221 |
-
msgid "
|
4222 |
msgstr ""
|
4223 |
|
4224 |
-
#: defaults.php:
|
4225 |
-
msgid "
|
4226 |
msgstr ""
|
4227 |
|
4228 |
-
#: defaults.php:
|
4229 |
msgid ""
|
4230 |
-
"
|
4231 |
-
"
|
4232 |
-
"\"_blank\">contact our support</a> for more information."
|
4233 |
msgstr ""
|
4234 |
|
4235 |
-
#: defaults.php:
|
4236 |
-
msgid "
|
4237 |
msgstr ""
|
4238 |
|
4239 |
-
#: defaults.php:
|
4240 |
msgid ""
|
4241 |
-
"
|
4242 |
-
"
|
4243 |
-
"contact/\" target=\"_blank\">contact our support</a> for more information."
|
4244 |
msgstr ""
|
4245 |
|
4246 |
-
#: defaults.php:
|
4247 |
-
msgid "
|
4248 |
msgstr ""
|
4249 |
|
4250 |
-
#: defaults.php:
|
4251 |
-
msgid ""
|
4252 |
-
"The file integrity scanner has %ScanStatus% scanning %ScanLocation%%ScanError"
|
4253 |
-
"%."
|
4254 |
msgstr ""
|
4255 |
|
4256 |
-
#: defaults.php:
|
4257 |
-
msgid "
|
4258 |
msgstr ""
|
4259 |
|
4260 |
-
#: defaults.php:
|
4261 |
-
msgid "
|
4262 |
msgstr ""
|
4263 |
|
4264 |
-
#: defaults.php:
|
4265 |
-
msgid "Advertising Add-ons"
|
4266 |
msgstr ""
|
4267 |
|
4268 |
-
#: defaults.php:
|
4269 |
msgid "%PromoName% %PromoMessage%"
|
4270 |
msgstr ""
|
4271 |
|
4272 |
-
#: defaults.php:
|
4273 |
msgid "Menus"
|
4274 |
msgstr ""
|
4275 |
|
4276 |
-
#: defaults.php:
|
4277 |
msgid "User created new menu"
|
4278 |
msgstr ""
|
4279 |
|
4280 |
-
#: defaults.php:
|
4281 |
msgid "Created a new menu called %MenuName%."
|
4282 |
msgstr ""
|
4283 |
|
4284 |
-
#: defaults.php:
|
4285 |
msgid "User added content to a menu"
|
4286 |
msgstr ""
|
4287 |
|
4288 |
-
#: defaults.php:
|
4289 |
msgid "Added the %ContentType% called %ContentName% to menu %MenuName%."
|
4290 |
msgstr ""
|
4291 |
|
4292 |
-
#: defaults.php:
|
4293 |
msgid "User removed content from a menu"
|
4294 |
msgstr ""
|
4295 |
|
4296 |
-
#: defaults.php:
|
4297 |
msgid ""
|
4298 |
"Removed the %ContentType% called %ContentName% from the menu %MenuName%."
|
4299 |
msgstr ""
|
4300 |
|
4301 |
-
#: defaults.php:
|
4302 |
msgid "User deleted menu"
|
4303 |
msgstr ""
|
4304 |
|
4305 |
-
#: defaults.php:
|
4306 |
msgid "Deleted the menu %MenuName%."
|
4307 |
msgstr ""
|
4308 |
|
4309 |
-
#: defaults.php:
|
4310 |
msgid "User changed menu setting"
|
4311 |
msgstr ""
|
4312 |
|
4313 |
-
#: defaults.php:
|
4314 |
msgid "%Status% the menu setting %MenuSetting% in %MenuName%."
|
4315 |
msgstr ""
|
4316 |
|
4317 |
-
#: defaults.php:
|
4318 |
msgid "User modified content in a menu"
|
4319 |
msgstr ""
|
4320 |
|
4321 |
-
#: defaults.php:
|
4322 |
msgid "Modified the %ContentType% called %ContentName% in menu %MenuName%."
|
4323 |
msgstr ""
|
4324 |
|
4325 |
-
#: defaults.php:
|
4326 |
msgid "User changed name of a menu"
|
4327 |
msgstr ""
|
4328 |
|
4329 |
-
#: defaults.php:
|
4330 |
msgid "Changed the name of menu %OldMenuName% to %NewMenuName%."
|
4331 |
msgstr ""
|
4332 |
|
4333 |
-
#: defaults.php:
|
4334 |
msgid "User changed order of the objects in a menu"
|
4335 |
msgstr ""
|
4336 |
|
4337 |
-
#: defaults.php:
|
4338 |
msgid "Changed the order of the %ItemName% in menu %MenuName%."
|
4339 |
msgstr ""
|
4340 |
|
4341 |
-
#: defaults.php:
|
4342 |
msgid "User moved objects as a sub-item"
|
4343 |
msgstr ""
|
4344 |
|
4345 |
-
#: defaults.php:
|
4346 |
msgid "Moved %ItemName% as a sub-item of %ParentName% in menu %MenuName%."
|
4347 |
msgstr ""
|
4348 |
|
4349 |
-
#: defaults.php:
|
4350 |
msgid "Widgets"
|
4351 |
msgstr ""
|
4352 |
|
4353 |
-
#: defaults.php:
|
4354 |
msgid "User added a new widget"
|
4355 |
msgstr ""
|
4356 |
|
4357 |
-
#: defaults.php:
|
4358 |
msgid "Added a new %WidgetName% widget in %Sidebar%."
|
4359 |
msgstr ""
|
4360 |
|
4361 |
-
#: defaults.php:
|
4362 |
msgid "User modified a widget"
|
4363 |
msgstr ""
|
4364 |
|
4365 |
-
#: defaults.php:
|
4366 |
msgid "Modified the %WidgetName% widget in %Sidebar%."
|
4367 |
msgstr ""
|
4368 |
|
4369 |
-
#: defaults.php:
|
4370 |
msgid "User deleted widget"
|
4371 |
msgstr ""
|
4372 |
|
4373 |
-
#: defaults.php:
|
4374 |
msgid "Deleted the %WidgetName% widget from %Sidebar%."
|
4375 |
msgstr ""
|
4376 |
|
4377 |
-
#: defaults.php:
|
4378 |
msgid "User moved widget"
|
4379 |
msgstr ""
|
4380 |
|
4381 |
-
#: defaults.php:
|
4382 |
msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%."
|
4383 |
msgstr ""
|
4384 |
|
4385 |
-
#: defaults.php:
|
4386 |
msgid "User changed widget position"
|
4387 |
msgstr ""
|
4388 |
|
4389 |
-
#: defaults.php:
|
4390 |
msgid "Changed the position of the widget %WidgetName% in sidebar %Sidebar%."
|
4391 |
msgstr ""
|
4392 |
|
4393 |
-
#: defaults.php:
|
4394 |
-
msgid "
|
4395 |
msgstr ""
|
4396 |
|
4397 |
-
#: defaults.php:
|
4398 |
-
msgid "
|
|
|
4399 |
msgstr ""
|
4400 |
|
4401 |
-
#: defaults.php:
|
4402 |
-
msgid "%
|
4403 |
msgstr ""
|
4404 |
|
4405 |
-
#: defaults.php:
|
4406 |
-
msgid "
|
4407 |
msgstr ""
|
4408 |
|
4409 |
-
#: defaults.php:
|
4410 |
-
msgid "
|
4411 |
msgstr ""
|
4412 |
|
4413 |
-
#: defaults.php:
|
4414 |
-
msgid "
|
|
|
|
|
|
|
|
|
4415 |
msgstr ""
|
4416 |
|
4417 |
-
#: defaults.php:
|
4418 |
msgid ""
|
4419 |
-
"
|
4420 |
-
"%OldEmail% to %NewEmail%."
|
4421 |
msgstr ""
|
4422 |
|
4423 |
-
#: defaults.php:
|
4424 |
-
msgid "
|
4425 |
msgstr ""
|
4426 |
|
4427 |
-
#: defaults.php:
|
4428 |
-
msgid "
|
4429 |
msgstr ""
|
4430 |
|
4431 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4432 |
msgid ""
|
4433 |
-
"
|
|
|
4434 |
msgstr ""
|
4435 |
|
4436 |
-
#: defaults.php:
|
4437 |
-
msgid "
|
4438 |
msgstr ""
|
4439 |
|
4440 |
-
#: defaults.php:
|
4441 |
-
msgid "
|
4442 |
msgstr ""
|
4443 |
|
4444 |
-
#: defaults.php:
|
4445 |
-
msgid "
|
|
|
|
|
4446 |
msgstr ""
|
4447 |
|
4448 |
-
#: defaults.php:
|
4449 |
-
msgid "
|
|
|
|
|
4450 |
msgstr ""
|
4451 |
|
4452 |
-
#: defaults.php:
|
4453 |
-
msgid "
|
|
|
4454 |
msgstr ""
|
4455 |
|
4456 |
-
#: defaults.php:
|
4457 |
msgid ""
|
4458 |
-
"
|
|
|
4459 |
msgstr ""
|
4460 |
|
4461 |
-
#: defaults.php:
|
4462 |
-
msgid "
|
4463 |
msgstr ""
|
4464 |
|
4465 |
-
#: defaults.php:
|
4466 |
-
msgid "
|
4467 |
msgstr ""
|
4468 |
|
4469 |
-
#: defaults.php:
|
4470 |
-
msgid "
|
4471 |
msgstr ""
|
4472 |
|
4473 |
-
#: defaults.php:
|
4474 |
-
msgid "
|
4475 |
msgstr ""
|
4476 |
|
4477 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
4478 |
msgid ""
|
4479 |
-
"
|
4480 |
-
"to %NewValue% days."
|
4481 |
msgstr ""
|
4482 |
|
4483 |
-
#: defaults.php:
|
4484 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4485 |
msgstr ""
|
4486 |
|
4487 |
-
#: defaults.php:
|
4488 |
-
msgid "
|
4489 |
msgstr ""
|
4490 |
|
4491 |
-
#: defaults.php:
|
4492 |
msgid ""
|
4493 |
-
"
|
4494 |
-
"
|
4495 |
msgstr ""
|
4496 |
|
4497 |
-
#: defaults.php:
|
4498 |
-
msgid ""
|
4499 |
-
"%Status% the option for an author to have previously approved comments for "
|
4500 |
-
"the comments to appear."
|
4501 |
msgstr ""
|
4502 |
|
4503 |
-
#: defaults.php:
|
4504 |
msgid ""
|
4505 |
-
"
|
|
|
4506 |
msgstr ""
|
4507 |
|
4508 |
-
#: defaults.php:
|
4509 |
-
msgid ""
|
4510 |
-
"Changed the number of links from %OldValue% to %NewValue% that a comment "
|
4511 |
-
"must have to be held in the queue."
|
4512 |
msgstr ""
|
4513 |
|
4514 |
-
#: defaults.php:
|
4515 |
-
msgid "
|
4516 |
msgstr ""
|
4517 |
|
4518 |
-
#: defaults.php:
|
4519 |
-
msgid "
|
4520 |
msgstr ""
|
4521 |
|
4522 |
-
#: defaults.php:
|
4523 |
-
msgid "
|
4524 |
msgstr ""
|
4525 |
|
4526 |
-
#: defaults.php:
|
4527 |
-
msgid "
|
4528 |
msgstr ""
|
4529 |
|
4530 |
-
#: defaults.php:
|
4531 |
-
msgid "
|
4532 |
msgstr ""
|
4533 |
|
4534 |
-
#: defaults.php:
|
4535 |
-
msgid "
|
4536 |
msgstr ""
|
4537 |
|
4538 |
-
#: defaults.php:
|
4539 |
-
msgid "
|
4540 |
msgstr ""
|
4541 |
|
4542 |
-
#: defaults.php:
|
4543 |
-
msgid "
|
4544 |
msgstr ""
|
4545 |
|
4546 |
-
#: defaults.php:
|
4547 |
-
msgid "
|
4548 |
msgstr ""
|
4549 |
|
4550 |
-
#: defaults.php:
|
4551 |
msgid ""
|
4552 |
-
"A new
|
4553 |
-
|
4554 |
-
|
4555 |
-
#: defaults.php:448
|
4556 |
-
msgid "Changed status of the cron job"
|
4557 |
msgstr ""
|
4558 |
|
4559 |
-
#: defaults.php:
|
4560 |
-
msgid "
|
4561 |
msgstr ""
|
4562 |
|
4563 |
-
#: defaults.php:
|
4564 |
-
msgid "
|
|
|
|
|
4565 |
msgstr ""
|
4566 |
|
4567 |
-
#: defaults.php:
|
4568 |
-
msgid "The
|
4569 |
msgstr ""
|
4570 |
|
4571 |
-
#: defaults.php:
|
4572 |
-
msgid "
|
|
|
|
|
4573 |
msgstr ""
|
4574 |
|
4575 |
-
#: defaults.php:
|
4576 |
-
msgid "
|
4577 |
msgstr ""
|
4578 |
|
4579 |
-
#: defaults.php:
|
4580 |
-
msgid "
|
4581 |
msgstr ""
|
4582 |
|
4583 |
-
#: defaults.php:
|
4584 |
-
msgid "User
|
4585 |
msgstr ""
|
4586 |
|
4587 |
-
#: defaults.php:
|
4588 |
-
msgid "
|
|
|
|
|
4589 |
msgstr ""
|
4590 |
|
4591 |
-
#: defaults.php:
|
4592 |
-
msgid "User
|
4593 |
msgstr ""
|
4594 |
|
4595 |
-
#: defaults.php:
|
4596 |
-
msgid "
|
4597 |
msgstr ""
|
4598 |
|
4599 |
-
#: defaults.php:
|
4600 |
-
msgid "
|
4601 |
msgstr ""
|
4602 |
|
4603 |
-
#: defaults.php:
|
4604 |
msgid ""
|
4605 |
-
"
|
4606 |
-
"%
|
4607 |
msgstr ""
|
4608 |
|
4609 |
-
#: defaults.php:
|
4610 |
-
msgid "User
|
4611 |
msgstr ""
|
4612 |
|
4613 |
-
#: defaults.php:
|
4614 |
msgid ""
|
4615 |
-
"
|
4616 |
-
"
|
4617 |
msgstr ""
|
4618 |
|
4619 |
-
#: defaults.php:
|
4620 |
-
msgid "
|
4621 |
msgstr ""
|
4622 |
|
4623 |
-
#: defaults.php:
|
4624 |
-
msgid "
|
4625 |
msgstr ""
|
4626 |
|
4627 |
-
#: defaults.php:
|
4628 |
-
msgid "
|
4629 |
msgstr ""
|
4630 |
|
4631 |
-
#: defaults.php:
|
4632 |
msgid ""
|
4633 |
-
"
|
4634 |
-
"
|
4635 |
-
msgstr ""
|
4636 |
-
|
4637 |
-
#: defaults.php:468
|
4638 |
-
msgid "New site added on the network"
|
4639 |
msgstr ""
|
4640 |
|
4641 |
-
#: defaults.php:
|
4642 |
-
msgid "
|
4643 |
msgstr ""
|
4644 |
|
4645 |
-
#: defaults.php:
|
4646 |
-
msgid "
|
|
|
|
|
4647 |
msgstr ""
|
4648 |
|
4649 |
-
#: defaults.php:
|
4650 |
-
msgid "
|
4651 |
msgstr ""
|
4652 |
|
4653 |
-
#: defaults.php:
|
4654 |
-
msgid "
|
|
|
|
|
4655 |
msgstr ""
|
4656 |
|
4657 |
-
#: defaults.php:
|
4658 |
-
msgid "
|
4659 |
msgstr ""
|
4660 |
|
4661 |
-
#: defaults.php:
|
4662 |
-
msgid "
|
|
|
|
|
4663 |
msgstr ""
|
4664 |
|
4665 |
-
#: defaults.php:
|
4666 |
-
msgid "
|
4667 |
msgstr ""
|
4668 |
|
4669 |
-
#: defaults.php:
|
4670 |
-
msgid "
|
|
|
|
|
4671 |
msgstr ""
|
4672 |
|
4673 |
-
#: defaults.php:
|
4674 |
-
msgid "
|
4675 |
msgstr ""
|
4676 |
|
4677 |
-
#: defaults.php:
|
4678 |
-
msgid "
|
|
|
|
|
4679 |
msgstr ""
|
4680 |
|
4681 |
-
#: defaults.php:
|
4682 |
-
msgid "
|
4683 |
msgstr ""
|
4684 |
|
4685 |
-
#: defaults.php:
|
4686 |
-
msgid "
|
4687 |
msgstr ""
|
4688 |
|
4689 |
-
#: defaults.php:
|
4690 |
msgid "User created new forum"
|
4691 |
msgstr ""
|
4692 |
|
4693 |
-
#: defaults.php:
|
4694 |
msgid ""
|
4695 |
"Created new forum %ForumName%. Forum URL is %ForumURL%. %EditorLinkForum%."
|
4696 |
msgstr ""
|
4697 |
|
4698 |
-
#: defaults.php:
|
4699 |
msgid "User changed status of a forum"
|
4700 |
msgstr ""
|
4701 |
|
4702 |
-
#: defaults.php:
|
4703 |
msgid ""
|
4704 |
"Changed the status of the forum %ForumName% from %OldStatus% to %NewStatus%. "
|
4705 |
"%EditorLinkForum%."
|
4706 |
msgstr ""
|
4707 |
|
4708 |
-
#: defaults.php:
|
4709 |
msgid "User changed visibility of a forum"
|
4710 |
msgstr ""
|
4711 |
|
4712 |
-
#: defaults.php:
|
4713 |
msgid ""
|
4714 |
"Changed the visibility of the forum %ForumName% from %OldVisibility% to "
|
4715 |
"%NewVisibility%. %EditorLinkForum%."
|
4716 |
msgstr ""
|
4717 |
|
4718 |
-
#: defaults.php:
|
4719 |
msgid "User changed the URL of a forum"
|
4720 |
msgstr ""
|
4721 |
|
4722 |
-
#: defaults.php:
|
4723 |
msgid ""
|
4724 |
"Changed the URL of the forum %ForumName% from %OldUrl% to %NewUrl%. "
|
4725 |
"%EditorLinkForum%."
|
4726 |
msgstr ""
|
4727 |
|
4728 |
-
#: defaults.php:
|
4729 |
msgid "User changed order of a forum"
|
4730 |
msgstr ""
|
4731 |
|
4732 |
-
#: defaults.php:
|
4733 |
msgid ""
|
4734 |
"Changed the order of the forum %ForumName% from %OldOrder% to %NewOrder%. "
|
4735 |
"%EditorLinkForum%."
|
4736 |
msgstr ""
|
4737 |
|
4738 |
-
#: defaults.php:
|
4739 |
msgid "User moved forum to trash"
|
4740 |
msgstr ""
|
4741 |
|
4742 |
-
#: defaults.php:
|
4743 |
msgid "Moved the forum %ForumName% to trash."
|
4744 |
msgstr ""
|
4745 |
|
4746 |
-
#: defaults.php:
|
4747 |
msgid "User permanently deleted forum"
|
4748 |
msgstr ""
|
4749 |
|
4750 |
-
#: defaults.php:
|
4751 |
msgid "Permanently deleted the forum %ForumName%."
|
4752 |
msgstr ""
|
4753 |
|
4754 |
-
#: defaults.php:
|
4755 |
msgid "User restored forum from trash"
|
4756 |
msgstr ""
|
4757 |
|
4758 |
-
#: defaults.php:
|
4759 |
msgid "Restored the forum %ForumName% from trash. %EditorLinkForum%."
|
4760 |
msgstr ""
|
4761 |
|
4762 |
-
#: defaults.php:
|
4763 |
msgid "User changed the parent of a forum"
|
4764 |
msgstr ""
|
4765 |
|
4766 |
-
#: defaults.php:
|
4767 |
msgid ""
|
4768 |
"Changed the parent of the forum %ForumName% from %OldParent% to %NewParent%. "
|
4769 |
"%EditorLinkForum%."
|
4770 |
msgstr ""
|
4771 |
|
4772 |
-
#: defaults.php:
|
4773 |
-
msgid "User changed type of a forum"
|
4774 |
-
msgstr ""
|
4775 |
-
|
4776 |
-
#: defaults.php:494
|
4777 |
-
msgid ""
|
4778 |
-
"Changed the type of the forum %ForumName% from %OldType% to %NewType%. "
|
4779 |
-
"%EditorLinkForum%."
|
4780 |
-
msgstr ""
|
4781 |
-
|
4782 |
-
#: defaults.php:495
|
4783 |
msgid "User changed forum's role"
|
4784 |
msgstr ""
|
4785 |
|
4786 |
-
#: defaults.php:
|
4787 |
msgid "Changed the forum's auto role from %OldRole% to %NewRole%."
|
4788 |
msgstr ""
|
4789 |
|
4790 |
-
#: defaults.php:
|
4791 |
msgid "User changed option of a forum"
|
4792 |
msgstr ""
|
4793 |
|
4794 |
-
#: defaults.php:
|
4795 |
msgid "%Status% the option for anonymous posting on forum."
|
4796 |
msgstr ""
|
4797 |
|
4798 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4799 |
msgid "User changed time to disallow post editing"
|
4800 |
msgstr ""
|
4801 |
|
4802 |
-
#: defaults.php:
|
4803 |
msgid ""
|
4804 |
"Changed the time to disallow post editing from %OldTime% to %NewTime% "
|
4805 |
"minutes in the forums."
|
4806 |
msgstr ""
|
4807 |
|
4808 |
-
#: defaults.php:
|
4809 |
msgid "User changed the forum setting posting throttle time"
|
4810 |
msgstr ""
|
4811 |
|
4812 |
-
#: defaults.php:
|
4813 |
msgid ""
|
4814 |
"Changed the posting throttle time from %OldTime% to %NewTime% seconds in the "
|
4815 |
"forums."
|
4816 |
msgstr ""
|
4817 |
|
4818 |
-
#: defaults.php:
|
4819 |
msgid "User created new topic"
|
4820 |
msgstr ""
|
4821 |
|
4822 |
-
#: defaults.php:
|
4823 |
msgid "Created a new topic %TopicName%. %EditorLinkTopic%."
|
4824 |
msgstr ""
|
4825 |
|
4826 |
-
#: defaults.php:
|
4827 |
msgid "User changed status of a topic"
|
4828 |
msgstr ""
|
4829 |
|
4830 |
-
#: defaults.php:
|
4831 |
msgid ""
|
4832 |
"Changed the status of the topic %TopicName% from %OldStatus% to %NewStatus%. "
|
4833 |
"%EditorLinkTopic%."
|
4834 |
msgstr ""
|
4835 |
|
4836 |
-
#: defaults.php:
|
4837 |
msgid "User changed type of a topic"
|
4838 |
msgstr ""
|
4839 |
|
4840 |
-
#: defaults.php:
|
4841 |
msgid ""
|
4842 |
"Changed the type of the topic %TopicName% from %OldType% to %NewType%. "
|
4843 |
"%EditorLinkTopic%."
|
4844 |
msgstr ""
|
4845 |
|
4846 |
-
#: defaults.php:
|
4847 |
msgid "User changed URL of a topic"
|
4848 |
msgstr ""
|
4849 |
|
4850 |
-
#: defaults.php:
|
4851 |
msgid "Changed the URL of the topic %TopicName% from %OldUrl% to %NewUrl%."
|
4852 |
msgstr ""
|
4853 |
|
4854 |
-
#: defaults.php:
|
4855 |
msgid "User changed the forum of a topic"
|
4856 |
msgstr ""
|
4857 |
|
4858 |
-
#: defaults.php:
|
4859 |
msgid ""
|
4860 |
"Changed the forum of the topic %TopicName% from %OldForum% to %NewForum%. "
|
4861 |
"%EditorLinkTopic%."
|
4862 |
msgstr ""
|
4863 |
|
4864 |
-
#: defaults.php:
|
4865 |
msgid "User moved topic to trash"
|
4866 |
msgstr ""
|
4867 |
|
4868 |
-
#: defaults.php:
|
4869 |
msgid "Moved the topic %TopicName% to trash."
|
4870 |
msgstr ""
|
4871 |
|
4872 |
-
#: defaults.php:
|
4873 |
msgid "User permanently deleted topic"
|
4874 |
msgstr ""
|
4875 |
|
4876 |
-
#: defaults.php:
|
4877 |
msgid "Permanently deleted the topic %TopicName%."
|
4878 |
msgstr ""
|
4879 |
|
4880 |
-
#: defaults.php:
|
4881 |
msgid "User restored topic from trash"
|
4882 |
msgstr ""
|
4883 |
|
4884 |
-
#: defaults.php:
|
4885 |
msgid "Restored the topic %TopicName% from trash. %EditorLinkTopic%."
|
4886 |
msgstr ""
|
4887 |
|
4888 |
-
#: defaults.php:
|
4889 |
msgid "User changed visibility of a topic"
|
4890 |
msgstr ""
|
4891 |
|
4892 |
-
#: defaults.php:
|
4893 |
msgid ""
|
4894 |
"Changed the visibility of the topic %TopicName% from %OldVisibility% to "
|
4895 |
"%NewVisibility%. %EditorLinkTopic%."
|
4896 |
msgstr ""
|
4897 |
|
4898 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
4899 |
msgid "User created a new product"
|
4900 |
msgstr ""
|
4901 |
|
4902 |
-
#: defaults.php:
|
4903 |
msgid ""
|
4904 |
"Created a new product called %ProductTitle% and saved it as draft. View the "
|
4905 |
"product: %EditorLinkProduct%."
|
4906 |
msgstr ""
|
4907 |
|
4908 |
-
#: defaults.php:
|
4909 |
msgid "User published a product"
|
4910 |
msgstr ""
|
4911 |
|
4912 |
-
#: defaults.php:
|
4913 |
msgid ""
|
4914 |
"Published a product called %ProductTitle%. Product URL is %ProductUrl%. View "
|
4915 |
"the product: %EditorLinkProduct%."
|
4916 |
msgstr ""
|
4917 |
|
4918 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4919 |
msgid "User changed the category of a product"
|
4920 |
msgstr ""
|
4921 |
|
4922 |
-
#: defaults.php:
|
4923 |
msgid ""
|
4924 |
"Changed the category of the product %ProductTitle% from %OldCategories% to "
|
4925 |
"%NewCategories%. View the product: %EditorLinkProduct%."
|
4926 |
msgstr ""
|
4927 |
|
4928 |
-
#: defaults.php:
|
4929 |
msgid "User modified the short description of a product"
|
4930 |
msgstr ""
|
4931 |
|
4932 |
-
#: defaults.php:
|
4933 |
msgid ""
|
4934 |
"Modified the short description of the product %ProductTitle%.%ChangeText% "
|
4935 |
"View the product: %EditorLinkProduct%."
|
4936 |
msgstr ""
|
4937 |
|
4938 |
-
#: defaults.php:
|
4939 |
msgid "User modified the text of a product"
|
4940 |
msgstr ""
|
4941 |
|
4942 |
-
#: defaults.php:
|
4943 |
msgid ""
|
4944 |
"Modified the text of the product %ProductTitle%. View the product: "
|
4945 |
"%EditorLinkProduct%."
|
4946 |
msgstr ""
|
4947 |
|
4948 |
-
#: defaults.php:
|
4949 |
msgid "User changed the URL of a product"
|
4950 |
msgstr ""
|
4951 |
|
4952 |
-
#: defaults.php:
|
4953 |
msgid ""
|
4954 |
"Changed the URL of the product %ProductTitle%%ReportText%.%ChangeText% View "
|
4955 |
"the product: %EditorLinkProduct%."
|
4956 |
msgstr ""
|
4957 |
|
4958 |
-
#: defaults.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4959 |
msgid "User changed the date of a product"
|
4960 |
msgstr ""
|
4961 |
|
4962 |
-
#: defaults.php:
|
4963 |
msgid ""
|
4964 |
"Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. "
|
4965 |
"View the product: %EditorLinkProduct%."
|
4966 |
msgstr ""
|
4967 |
|
4968 |
-
#: defaults.php:
|
4969 |
msgid "User changed the visibility of a product"
|
4970 |
msgstr ""
|
4971 |
|
4972 |
-
#: defaults.php:
|
4973 |
msgid ""
|
4974 |
"Changed the visibility of the product %ProductTitle% from %OldVisibility% to "
|
4975 |
"%NewVisibility%. View the product: %EditorLinkProduct%."
|
4976 |
msgstr ""
|
4977 |
|
4978 |
-
#: defaults.php:
|
4979 |
msgid "User modified the published product"
|
4980 |
msgstr ""
|
4981 |
|
4982 |
-
#: defaults.php:
|
4983 |
msgid ""
|
4984 |
"Modified the published product %ProductTitle%. Product URL is %ProductUrl%. "
|
4985 |
"View the product: %EditorLinkProduct%."
|
4986 |
msgstr ""
|
4987 |
|
4988 |
-
#: defaults.php:
|
4989 |
msgid "User modified the draft product"
|
4990 |
msgstr ""
|
4991 |
|
4992 |
-
#: defaults.php:
|
4993 |
msgid ""
|
4994 |
"Modified the draft product %ProductTitle%. View the product: "
|
4995 |
"%EditorLinkProduct%."
|
4996 |
msgstr ""
|
4997 |
|
4998 |
-
#: defaults.php:
|
4999 |
msgid "User moved a product to trash"
|
5000 |
msgstr ""
|
5001 |
|
5002 |
-
#: defaults.php:
|
5003 |
msgid ""
|
5004 |
"Moved the product %ProductTitle% to trash. Product URL was %ProductUrl%."
|
5005 |
msgstr ""
|
5006 |
|
5007 |
-
#: defaults.php:
|
5008 |
msgid "User permanently deleted a product"
|
5009 |
msgstr ""
|
5010 |
|
5011 |
-
#: defaults.php:
|
5012 |
msgid "Permanently deleted the product %ProductTitle%."
|
5013 |
msgstr ""
|
5014 |
|
5015 |
-
#: defaults.php:
|
5016 |
msgid "User restored a product from the trash"
|
5017 |
msgstr ""
|
5018 |
|
5019 |
-
#: defaults.php:
|
5020 |
msgid ""
|
5021 |
"Product %ProductTitle% has been restored from trash. View product: "
|
5022 |
"%EditorLinkProduct%."
|
5023 |
msgstr ""
|
5024 |
|
5025 |
-
#: defaults.php:
|
5026 |
msgid "User changed status of a product"
|
5027 |
msgstr ""
|
5028 |
|
5029 |
-
#: defaults.php:
|
5030 |
msgid ""
|
5031 |
"Changed the status of the product %ProductTitle% from %OldStatus% to "
|
5032 |
"%NewStatus%. View the product: %EditorLinkProduct%."
|
5033 |
msgstr ""
|
5034 |
|
5035 |
-
#: defaults.php:
|
5036 |
-
msgid "User opened a product in the editor"
|
5037 |
-
msgstr ""
|
5038 |
-
|
5039 |
-
#: defaults.php:528
|
5040 |
-
msgid ""
|
5041 |
-
"Opened the %ProductStatus% product page %ProductTitle% in editor. View the "
|
5042 |
-
"product: %EditorLinkProduct%."
|
5043 |
-
msgstr ""
|
5044 |
-
|
5045 |
-
#: defaults.php:529
|
5046 |
-
msgid "User viewed a product"
|
5047 |
-
msgstr ""
|
5048 |
-
|
5049 |
-
#: defaults.php:529
|
5050 |
-
msgid ""
|
5051 |
-
"Viewed the %ProductStatus% product page %ProductTitle%. View the product: "
|
5052 |
-
"%EditorLinkProduct%."
|
5053 |
-
msgstr ""
|
5054 |
-
|
5055 |
-
#: defaults.php:530
|
5056 |
-
msgid "User changed the Product Data of a product"
|
5057 |
-
msgstr ""
|
5058 |
-
|
5059 |
-
#: defaults.php:530
|
5060 |
-
msgid ""
|
5061 |
-
"Changed the Product Data of the product %ProductTitle%. View the product: "
|
5062 |
-
"%EditorLinkProduct%."
|
5063 |
-
msgstr ""
|
5064 |
-
|
5065 |
-
#: defaults.php:531
|
5066 |
msgid "User changed type of a price"
|
5067 |
msgstr ""
|
5068 |
|
5069 |
-
#: defaults.php:
|
5070 |
msgid ""
|
5071 |
"Changed the %PriceType% of the product %ProductTitle% from %OldPrice% to "
|
5072 |
"%NewPrice%. View the product: %EditorLinkProduct%."
|
5073 |
msgstr ""
|
5074 |
|
5075 |
-
#: defaults.php:
|
5076 |
msgid "User changed the SKU of a product"
|
5077 |
msgstr ""
|
5078 |
|
5079 |
-
#: defaults.php:
|
5080 |
msgid ""
|
5081 |
"Changed the SKU of the product %ProductTitle% from %OldSku% to %NewSku%. "
|
5082 |
"View the product: %EditorLinkProduct%."
|
5083 |
msgstr ""
|
5084 |
|
5085 |
-
#: defaults.php:
|
5086 |
msgid "User changed the stock status of a product"
|
5087 |
msgstr ""
|
5088 |
|
5089 |
-
#: defaults.php:
|
5090 |
msgid ""
|
5091 |
"Changed the stock status of the product %ProductTitle% from %OldStatus% to "
|
5092 |
"%NewStatus%. View the product: %EditorLinkProduct%."
|
5093 |
msgstr ""
|
5094 |
|
5095 |
-
#: defaults.php:
|
5096 |
msgid "User changed the stock quantity"
|
5097 |
msgstr ""
|
5098 |
|
5099 |
-
#: defaults.php:
|
5100 |
msgid ""
|
5101 |
"Changed the stock quantity of the product %ProductTitle% from %OldValue% to "
|
5102 |
"%NewValue%. View the product: %EditorLinkProduct%"
|
5103 |
msgstr ""
|
5104 |
|
5105 |
-
#: defaults.php:
|
5106 |
msgid "User set a product type"
|
5107 |
msgstr ""
|
5108 |
|
5109 |
-
#: defaults.php:
|
5110 |
msgid ""
|
5111 |
"Set the product %ProductTitle% as %Type%. View the product: "
|
5112 |
"%EditorLinkProduct%."
|
5113 |
msgstr ""
|
5114 |
|
5115 |
-
#: defaults.php:
|
5116 |
msgid "User changed the weight of a product"
|
5117 |
msgstr ""
|
5118 |
|
5119 |
-
#: defaults.php:
|
5120 |
msgid ""
|
5121 |
"Changed the weight of the product %ProductTitle% from %OldWeight% to "
|
5122 |
"%NewWeight%. View the product: %EditorLinkProduct%."
|
5123 |
msgstr ""
|
5124 |
|
5125 |
-
#: defaults.php:
|
5126 |
msgid "User changed the dimensions of a product"
|
5127 |
msgstr ""
|
5128 |
|
5129 |
-
#: defaults.php:
|
5130 |
msgid ""
|
5131 |
"Changed the %DimensionType% dimensions of the product %ProductTitle% from "
|
5132 |
"%OldDimension% to %NewDimension%. View the product: %EditorLinkProduct%."
|
5133 |
msgstr ""
|
5134 |
|
5135 |
-
#: defaults.php:
|
5136 |
msgid "User added the Downloadable File to a product"
|
5137 |
msgstr ""
|
5138 |
|
5139 |
-
#: defaults.php:
|
5140 |
msgid ""
|
5141 |
"Added the Downloadable File %FileName% with File URL %FileUrl% to the "
|
5142 |
"product %ProductTitle%. View the product: %EditorLinkProduct%."
|
5143 |
msgstr ""
|
5144 |
|
5145 |
-
#: defaults.php:
|
5146 |
msgid "User Removed the Downloadable File from a product"
|
5147 |
msgstr ""
|
5148 |
|
5149 |
-
#: defaults.php:
|
5150 |
msgid ""
|
5151 |
"Removed the Downloadable File %FileName% with File URL %FileUrl% from the "
|
5152 |
"product %ProductTitle%. View the product: %EditorLinkProduct%."
|
5153 |
msgstr ""
|
5154 |
|
5155 |
-
#: defaults.php:
|
5156 |
msgid "User changed the name of a Downloadable File in a product"
|
5157 |
msgstr ""
|
5158 |
|
5159 |
-
#: defaults.php:
|
5160 |
msgid ""
|
5161 |
"Changed the name of a Downloadable File from %OldName% to %NewName% in "
|
5162 |
"product %ProductTitle%. View the product: %EditorLinkProduct%."
|
5163 |
msgstr ""
|
5164 |
|
5165 |
-
#: defaults.php:
|
5166 |
msgid "User changed the URL of the Downloadable File in a product"
|
5167 |
msgstr ""
|
5168 |
|
5169 |
-
#: defaults.php:
|
5170 |
msgid ""
|
5171 |
"Changed the URL of the Downloadable File %FileName% from %OldUrl% to %NewUrl"
|
5172 |
"% in product %ProductTitle%. View the product: %EditorLinkProduct%."
|
5173 |
msgstr ""
|
5174 |
|
5175 |
-
#: defaults.php:
|
5176 |
msgid "User changed the Weight Unit"
|
5177 |
msgstr ""
|
5178 |
|
5179 |
-
#: defaults.php:
|
5180 |
msgid "Changed the Weight Unit from %OldUnit% to %NewUnit% in WooCommerce."
|
5181 |
msgstr ""
|
5182 |
|
5183 |
-
#: defaults.php:
|
5184 |
msgid "User changed the Dimensions Unit"
|
5185 |
msgstr ""
|
5186 |
|
5187 |
-
#: defaults.php:
|
5188 |
msgid "Changed the Dimensions Unit from %OldUnit% to %NewUnit% in WooCommerce."
|
5189 |
msgstr ""
|
5190 |
|
5191 |
-
#: defaults.php:
|
5192 |
msgid "User changed the Base Location"
|
5193 |
msgstr ""
|
5194 |
|
5195 |
-
#: defaults.php:
|
5196 |
msgid ""
|
5197 |
"Changed the Base Location from %OldLocation% to %NewLocation% in WooCommerce."
|
5198 |
msgstr ""
|
5199 |
|
5200 |
-
#: defaults.php:
|
5201 |
msgid "User Enabled/Disabled taxes"
|
5202 |
msgstr ""
|
5203 |
|
5204 |
-
#: defaults.php:
|
5205 |
msgid "%Status% taxes in the WooCommerce store."
|
5206 |
msgstr ""
|
5207 |
|
5208 |
-
#: defaults.php:
|
5209 |
msgid "User changed the currency"
|
5210 |
msgstr ""
|
5211 |
|
5212 |
-
#: defaults.php:
|
5213 |
msgid ""
|
5214 |
"Changed the currency from %OldCurrency% to %NewCurrency% in WooCommerce."
|
5215 |
msgstr ""
|
5216 |
|
5217 |
-
#: defaults.php:
|
5218 |
msgid "User Enabled/Disabled the use of coupons during checkout"
|
5219 |
msgstr ""
|
5220 |
|
5221 |
-
#: defaults.php:
|
5222 |
msgid "%Status% the use of coupons during checkout in WooCommerce."
|
5223 |
msgstr ""
|
5224 |
|
5225 |
-
#: defaults.php:
|
5226 |
msgid "User Enabled/Disabled guest checkout"
|
5227 |
msgstr ""
|
5228 |
|
5229 |
-
#: defaults.php:
|
5230 |
msgid "%Status% guest checkout in WooCommerce."
|
5231 |
msgstr ""
|
5232 |
|
5233 |
-
#: defaults.php:
|
5234 |
msgid "User Enabled/Disabled cash on delivery"
|
5235 |
msgstr ""
|
5236 |
|
5237 |
-
#: defaults.php:
|
5238 |
msgid "%Status% the option Enable cash on delivery in WooCommerce."
|
5239 |
msgstr ""
|
5240 |
|
5241 |
-
#: defaults.php:
|
5242 |
-
msgid "
|
5243 |
-
msgstr ""
|
5244 |
-
|
5245 |
-
#: defaults.php:556
|
5246 |
-
msgid ""
|
5247 |
-
"Created a new product category called %CategoryName% in WooCommerce. Product "
|
5248 |
-
"category slug is %Slug%."
|
5249 |
msgstr ""
|
5250 |
|
5251 |
-
#: defaults.php:
|
5252 |
msgid "User changed title of a SEO post"
|
5253 |
msgstr ""
|
5254 |
|
5255 |
-
#: defaults.php:
|
5256 |
msgid ""
|
5257 |
"Changed the SEO title of the %PostStatus% %PostType%%ReportText%.%ChangeText"
|
5258 |
"% %EditorLinkPost%."
|
5259 |
msgstr ""
|
5260 |
|
5261 |
-
#: defaults.php:
|
5262 |
msgid "User changed the meta description of a SEO post"
|
5263 |
msgstr ""
|
5264 |
|
5265 |
-
#: defaults.php:
|
5266 |
msgid ""
|
5267 |
"Changed the Meta description of the %PostStatus% %PostType% titled %PostTitle"
|
5268 |
"%%ReportText%.%ChangeText% %EditorLinkPost%."
|
5269 |
msgstr ""
|
5270 |
|
5271 |
-
#: defaults.php:
|
5272 |
msgid ""
|
5273 |
"User changed setting to allow search engines to show post in search results "
|
5274 |
"of a SEO post"
|
5275 |
msgstr ""
|
5276 |
|
5277 |
-
#: defaults.php:
|
5278 |
msgid ""
|
5279 |
"Changed the setting to allow search engines to show post in search results "
|
5280 |
"from %OldStatus% to %NewStatus% in the %PostStatus% %PostType% titled "
|
5281 |
"%PostTitle%. %EditorLinkPost%."
|
5282 |
msgstr ""
|
5283 |
|
5284 |
-
#: defaults.php:
|
5285 |
msgid ""
|
5286 |
"User Enabled/Disabled the option for search engine to follow links of a SEO "
|
5287 |
"post"
|
5288 |
msgstr ""
|
5289 |
|
5290 |
-
#: defaults.php:
|
5291 |
msgid ""
|
5292 |
"%NewStatus% the option for search engine to follow links in the %PostType% "
|
5293 |
"titled %PostTitle%. %EditorLinkPost%."
|
5294 |
msgstr ""
|
5295 |
|
5296 |
-
#: defaults.php:
|
5297 |
msgid "User set the meta robots advanced setting of a SEO post"
|
5298 |
msgstr ""
|
5299 |
|
5300 |
-
#: defaults.php:
|
5301 |
msgid ""
|
5302 |
"Set the Meta Robots Advanced setting to %NewStatus% in the %PostStatus% "
|
5303 |
"%PostType% titled %PostTitle%. %EditorLinkPost%."
|
5304 |
msgstr ""
|
5305 |
|
5306 |
-
#: defaults.php:
|
5307 |
msgid "User changed the canonical URL of a SEO post"
|
5308 |
msgstr ""
|
5309 |
|
5310 |
-
#: defaults.php:
|
5311 |
msgid ""
|
5312 |
"Changed the Canonical URL of the %PostStatus% %PostType% titled %PostTitle%"
|
5313 |
"%ReportText%.%ChangeText% %EditorLinkPost%."
|
5314 |
msgstr ""
|
5315 |
|
5316 |
-
#: defaults.php:
|
5317 |
msgid "User changed the focus keyword of a SEO post"
|
5318 |
msgstr ""
|
5319 |
|
5320 |
-
#: defaults.php:
|
5321 |
msgid ""
|
5322 |
"Changed the focus keyword of the %PostStatus% %PostType% titled %PostTitle% "
|
5323 |
"from %old_keywords% to %new_keywords%. %EditorLinkPost%."
|
5324 |
msgstr ""
|
5325 |
|
5326 |
-
#: defaults.php:
|
5327 |
msgid "User Enabled/Disabled the option Cornerston Content of a SEO post"
|
5328 |
msgstr ""
|
5329 |
|
5330 |
-
#: defaults.php:
|
5331 |
msgid ""
|
5332 |
"%Status% the option Cornerston Content on the %PostStatus% %PostType% titled "
|
5333 |
"%PostTitle%. %EditorLinkPost%."
|
5334 |
msgstr ""
|
5335 |
|
5336 |
-
#: defaults.php:
|
5337 |
msgid "User changed the Title Separator setting"
|
5338 |
msgstr ""
|
5339 |
|
5340 |
-
#: defaults.php:
|
5341 |
msgid ""
|
5342 |
"Changed the Title Separator from %old% to %new% in the Yoast SEO plugin "
|
5343 |
"settings."
|
5344 |
msgstr ""
|
5345 |
|
5346 |
-
#: defaults.php:
|
5347 |
msgid "User changed the Homepage Title setting"
|
5348 |
msgstr ""
|
5349 |
|
5350 |
-
#: defaults.php:
|
5351 |
msgid ""
|
5352 |
"Changed the Homepage Title%ReportText% in the Yoast SEO plugin settings."
|
5353 |
"%ChangeText%"
|
5354 |
msgstr ""
|
5355 |
|
5356 |
-
#: defaults.php:
|
5357 |
msgid "User changed the Homepage Meta description setting"
|
5358 |
msgstr ""
|
5359 |
|
5360 |
-
#: defaults.php:
|
5361 |
msgid ""
|
5362 |
"Changed the Homepage Meta description%ReportText% in the Yoast SEO plugin "
|
5363 |
"settings.%ChangeText%"
|
5364 |
msgstr ""
|
5365 |
|
5366 |
-
#: defaults.php:
|
5367 |
msgid "User changed the Company or Person setting"
|
5368 |
msgstr ""
|
5369 |
|
5370 |
-
#: defaults.php:
|
5371 |
msgid ""
|
5372 |
"Changed the Company or Person setting from %old% to %new% in the YOAST SEO "
|
5373 |
"plugin settings."
|
5374 |
msgstr ""
|
5375 |
|
5376 |
-
#: defaults.php:
|
5377 |
msgid ""
|
5378 |
"User Enabled/Disabled the option Show Posts/Pages in Search Results in the "
|
5379 |
"Yoast SEO plugin settings"
|
5380 |
msgstr ""
|
5381 |
|
5382 |
-
#: defaults.php:
|
5383 |
msgid ""
|
5384 |
"%Status% the option Show %SEOPostType% in Search Results in the Yoast SEO "
|
5385 |
"plugin settings."
|
5386 |
msgstr ""
|
5387 |
|
5388 |
-
#: defaults.php:
|
5389 |
msgid ""
|
5390 |
"User changed the Posts/Pages title template in the Yoast SEO plugin settings"
|
5391 |
msgstr ""
|
5392 |
|
5393 |
-
#: defaults.php:
|
5394 |
msgid ""
|
5395 |
"Changed the %SEOPostType% title template from %old% to %new% in the Yoast "
|
5396 |
"SEO plugin settings."
|
5397 |
msgstr ""
|
5398 |
|
5399 |
-
#: defaults.php:
|
5400 |
msgid "User Enabled/Disabled SEO analysis in the Yoast SEO plugin settings"
|
5401 |
msgstr ""
|
5402 |
|
5403 |
-
#: defaults.php:
|
5404 |
msgid "%Status% SEO analysis in the Yoast SEO plugin settings."
|
5405 |
msgstr ""
|
5406 |
|
5407 |
-
#: defaults.php:
|
5408 |
msgid ""
|
5409 |
"User Enabled/Disabled readability analysis in the Yoast SEO plugin settings"
|
5410 |
msgstr ""
|
5411 |
|
5412 |
-
#: defaults.php:
|
5413 |
msgid "%Status% Readability analysis in the Yoast SEO plugin settings."
|
5414 |
msgstr ""
|
5415 |
|
5416 |
-
#: defaults.php:
|
5417 |
msgid ""
|
5418 |
"User Enabled/Disabled cornerstone content in the Yoast SEO plugin settings"
|
5419 |
msgstr ""
|
5420 |
|
5421 |
-
#: defaults.php:
|
5422 |
msgid "%Status% Cornerstone content in the Yoast SEO plugin settings."
|
5423 |
msgstr ""
|
5424 |
|
5425 |
-
#: defaults.php:
|
5426 |
msgid ""
|
5427 |
"User Enabled/Disabled the text link counter in the Yoast SEO plugin settings"
|
5428 |
msgstr ""
|
5429 |
|
5430 |
-
#: defaults.php:
|
5431 |
msgid "%Status% the Text link counter in the Yoast SEO plugin settings."
|
5432 |
msgstr ""
|
5433 |
|
5434 |
-
#: defaults.php:
|
5435 |
msgid "User Enabled/Disabled XML sitemaps in the Yoast SEO plugin settings"
|
5436 |
msgstr ""
|
5437 |
|
5438 |
-
#: defaults.php:
|
5439 |
msgid "%Status% XML Sitemaps in the Yoast SEO plugin settings."
|
5440 |
msgstr ""
|
5441 |
|
5442 |
-
#: defaults.php:
|
5443 |
msgid "User Enabled/Disabled ryte integration in the Yoast SEO plugin settings"
|
5444 |
msgstr ""
|
5445 |
|
5446 |
-
#: defaults.php:
|
5447 |
msgid "%Status% Ryte Integration in the Yoast SEO plugin settings."
|
5448 |
msgstr ""
|
5449 |
|
5450 |
-
#: defaults.php:
|
5451 |
msgid ""
|
5452 |
"User Enabled/Disabled the admin bar menu in the Yoast SEO plugin settings"
|
5453 |
msgstr ""
|
5454 |
|
5455 |
-
#: defaults.php:
|
5456 |
msgid "%Status% the Admin bar menu in the Yoast SEO plugin settings."
|
5457 |
msgstr ""
|
5458 |
|
5459 |
-
#: defaults.php:
|
5460 |
msgid ""
|
5461 |
"User changed the Posts/Pages meta description template in the Yoast SEO "
|
5462 |
"plugin settings"
|
5463 |
msgstr ""
|
5464 |
|
5465 |
-
#: defaults.php:
|
5466 |
msgid ""
|
5467 |
"Changed the %SEOPostType% meta description template from %old% to %new% in "
|
5468 |
"the Yoast SEO plugin settings."
|
5469 |
msgstr ""
|
5470 |
|
5471 |
-
#: defaults.php:
|
5472 |
msgid ""
|
5473 |
"User set the option Date in Snippet Preview for Posts/Pages in the Yoast SEO "
|
5474 |
"plugin settings"
|
5475 |
msgstr ""
|
5476 |
|
5477 |
-
#: defaults.php:
|
5478 |
msgid ""
|
5479 |
"%Status% the option Date in Snippet Preview for %SEOPostType% in the Yoast "
|
5480 |
"SEO plugin settings."
|
5481 |
msgstr ""
|
5482 |
|
5483 |
-
#: defaults.php:
|
5484 |
msgid ""
|
5485 |
"User set the option Yoast SEO Meta Box for Posts/Pages in the Yoast SEO "
|
5486 |
"plugin settings"
|
5487 |
msgstr ""
|
5488 |
|
5489 |
-
#: defaults.php:
|
5490 |
msgid ""
|
5491 |
"%Status% the option Yoast SEO Meta Box for %SEOPostType% in the Yoast SEO "
|
5492 |
"plugin settings."
|
5493 |
msgstr ""
|
5494 |
|
5495 |
-
#: defaults.php:
|
5496 |
msgid ""
|
5497 |
"User Enabled/Disabled the advanced settings for authors in the Yoast SEO "
|
5498 |
"plugin settings"
|
5499 |
msgstr ""
|
5500 |
|
5501 |
-
#: defaults.php:
|
5502 |
msgid "%Status% the advanced settings for authors in the Yoast SEO settings."
|
5503 |
msgstr ""
|
5504 |
|
5505 |
-
|
5506 |
-
#: wp-security-audit-log.php:392 wp-security-audit-log.php:419
|
5507 |
#, php-format
|
5508 |
msgid "Hey %1$s"
|
5509 |
msgstr ""
|
5510 |
|
5511 |
-
#: wp-security-audit-log.php:
|
5512 |
msgid ""
|
5513 |
"Never miss an important update! Opt-in to our security and feature updates "
|
5514 |
"notifications, and non-sensitive diagnostic tracking with freemius.com."
|
5515 |
msgstr ""
|
5516 |
|
5517 |
-
#: wp-security-audit-log.php:
|
5518 |
msgid "Note: "
|
5519 |
msgstr ""
|
5520 |
|
5521 |
-
#: wp-security-audit-log.php:
|
5522 |
msgid "NO AUDIT LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
|
5523 |
msgstr ""
|
5524 |
|
5525 |
-
|
5526 |
-
#: wp-security-audit-log.php:421
|
5527 |
#, php-format
|
5528 |
msgid ""
|
5529 |
"Please help us improve %2$s! If you opt-in, some non-sensitive data about "
|
@@ -5531,69 +4077,35 @@ msgid ""
|
|
5531 |
"use. If you skip this, that's okay! %2$s will still work just fine."
|
5532 |
msgstr ""
|
5533 |
|
5534 |
-
|
5535 |
-
#: wp-security-audit-log.php:443
|
5536 |
-
#, php-format
|
5537 |
-
msgid ""
|
5538 |
-
"Get a free 7-day trial of the premium edition of %s. No credit card "
|
5539 |
-
"required, no commitments!"
|
5540 |
-
msgstr ""
|
5541 |
-
|
5542 |
-
#. Plugin Name of the plugin/theme
|
5543 |
-
#: wp-security-audit-log.php:444
|
5544 |
-
msgid "WP Security Audit Log"
|
5545 |
-
msgstr ""
|
5546 |
-
|
5547 |
-
#: wp-security-audit-log.php:448
|
5548 |
-
msgid "Start free trial"
|
5549 |
-
msgstr ""
|
5550 |
-
|
5551 |
-
#: wp-security-audit-log.php:518
|
5552 |
msgid ""
|
5553 |
"Error: You do not have sufficient permissions to disable this custom field."
|
5554 |
msgstr ""
|
5555 |
|
5556 |
-
#: wp-security-audit-log.php:
|
5557 |
msgid "Error: You do not have sufficient permissions to disable this alert."
|
5558 |
msgstr ""
|
5559 |
|
5560 |
-
#: wp-security-audit-log.php:
|
5561 |
#, php-format
|
5562 |
msgid ""
|
5563 |
"You are using a version of PHP that is older than %s, which is no longer "
|
5564 |
"supported."
|
5565 |
msgstr ""
|
5566 |
|
5567 |
-
#: wp-security-audit-log.php:
|
5568 |
msgid ""
|
5569 |
"Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
|
5570 |
"\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you "
|
5571 |
"are using."
|
5572 |
msgstr ""
|
5573 |
|
5574 |
-
|
5575 |
-
msgid "
|
5576 |
-
msgstr ""
|
5577 |
-
|
5578 |
-
#: wp-security-audit-log.php:1371
|
5579 |
-
msgid "Every 30 minutes"
|
5580 |
-
msgstr ""
|
5581 |
-
|
5582 |
-
#: wp-security-audit-log.php:1375
|
5583 |
-
msgid "Every 10 minutes"
|
5584 |
-
msgstr ""
|
5585 |
-
|
5586 |
-
#: wp-security-audit-log.php:1379
|
5587 |
-
msgid "Every 1 minute"
|
5588 |
-
msgstr ""
|
5589 |
-
|
5590 |
-
#. translators: 1. Deprecated method name 2. Version since deprecated
|
5591 |
-
#: wp-security-audit-log.php:1393
|
5592 |
-
#, php-format
|
5593 |
-
msgid "Method %1$s is deprecated since version %2$s!"
|
5594 |
msgstr ""
|
5595 |
|
5596 |
#. Plugin URI of the plugin/theme
|
|
|
5597 |
msgid "http://www.wpsecurityauditlog.com/"
|
5598 |
msgstr ""
|
5599 |
|
@@ -5610,7 +4122,3 @@ msgstr ""
|
|
5610 |
#. Author of the plugin/theme
|
5611 |
msgid "WP White Security"
|
5612 |
msgstr ""
|
5613 |
-
|
5614 |
-
#. Author URI of the plugin/theme
|
5615 |
-
msgid "http://www.wpwhitesecurity.com/"
|
5616 |
-
msgstr ""
|
3 |
msgstr ""
|
4 |
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
5 |
"Project-Id-Version: WP Security Audit Log\n"
|
6 |
+
"POT-Creation-Date: 2018-05-02 11:30+0100\n"
|
7 |
+
"PO-Revision-Date: 2018-05-02 11:30+0100\n"
|
8 |
"Last-Translator: \n"
|
9 |
"Language-Team: \n"
|
10 |
"MIME-Version: 1.0\n"
|
11 |
"Content-Type: text/plain; charset=UTF-8\n"
|
12 |
"Content-Transfer-Encoding: 8bit\n"
|
13 |
+
"X-Generator: Poedit 2.0.7\n"
|
14 |
"X-Poedit-Basepath: ..\n"
|
15 |
"X-Poedit-Flags-xgettext: --add-comments=translators:\n"
|
16 |
"X-Poedit-WPHeader: wp-security-audit-log.php\n"
|
21 |
"X-Poedit-SearchPath-0: .\n"
|
22 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
23 |
|
24 |
+
#: classes/AuditLogListView.php:80
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
msgid "No events so far."
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: classes/AuditLogListView.php:98
|
29 |
msgid "Show "
|
30 |
msgstr ""
|
31 |
|
32 |
+
#: classes/AuditLogListView.php:108
|
33 |
msgid " Items"
|
34 |
msgstr ""
|
35 |
|
36 |
+
#: classes/AuditLogListView.php:123 classes/Views/AuditLog.php:221
|
37 |
+
#: classes/Views/AuditLog.php:244
|
38 |
msgid "All Sites"
|
39 |
msgstr ""
|
40 |
|
41 |
+
#: classes/AuditLogListView.php:147
|
42 |
msgid "Live Database"
|
43 |
msgstr ""
|
44 |
|
45 |
+
#: classes/AuditLogListView.php:150
|
46 |
msgid "Archive Database"
|
47 |
msgstr ""
|
48 |
|
49 |
+
#: classes/AuditLogListView.php:203 classes/WidgetManager.php:67
|
|
|
50 |
msgid "User"
|
51 |
msgstr ""
|
52 |
|
53 |
+
#: classes/AuditLogListView.php:205 classes/Views/Settings.php:650
|
54 |
msgid "Username"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: classes/AuditLogListView.php:208 classes/AuditLogListView.php:225
|
58 |
+
msgid "Alert ID"
|
|
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: classes/AuditLogListView.php:209 classes/AuditLogListView.php:228
|
|
|
62 |
msgid "Severity"
|
63 |
msgstr ""
|
64 |
|
65 |
+
#: classes/AuditLogListView.php:210 classes/AuditLogListView.php:231
|
66 |
msgid "Date"
|
67 |
msgstr ""
|
68 |
|
69 |
+
#: classes/AuditLogListView.php:212 classes/AuditLogListView.php:237
|
70 |
msgid "Source IP"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: classes/AuditLogListView.php:215 classes/AuditLogListView.php:240
|
74 |
msgid "Site"
|
75 |
msgstr ""
|
76 |
|
77 |
+
#: classes/AuditLogListView.php:217 classes/AuditLogListView.php:243
|
78 |
msgid "Message"
|
79 |
msgstr ""
|
80 |
|
81 |
+
#: classes/AuditLogListView.php:295
|
82 |
msgid "Click to toggle."
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: classes/AuditLogListView.php:314
|
86 |
+
msgid "Disable this type of alerts."
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: classes/AuditLogListView.php:322
|
90 |
msgid "Unknown error code."
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: classes/AuditLogListView.php:357
|
94 |
+
msgid "Show me all activity by this User"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
msgstr ""
|
96 |
|
97 |
+
#: classes/AuditLogListView.php:372
|
98 |
msgid "Unknown"
|
99 |
msgstr ""
|
100 |
|
101 |
+
#: classes/AuditLogListView.php:376 classes/Views/Licensing.php:113
|
|
|
|
|
|
|
|
|
102 |
#: classes/Views/Licensing.php:153
|
103 |
msgid "Plugin"
|
104 |
msgstr ""
|
105 |
|
106 |
+
#: classes/AuditLogListView.php:380
|
107 |
msgid "Plugins"
|
108 |
msgstr ""
|
109 |
|
110 |
+
#: classes/AuditLogListView.php:384
|
111 |
msgid "Website Visitor"
|
112 |
msgstr ""
|
113 |
|
114 |
+
#: classes/AuditLogListView.php:388
|
|
|
115 |
msgid "System"
|
116 |
msgstr ""
|
117 |
|
118 |
+
#: classes/AuditLogListView.php:408 classes/AuditLogListView.php:421
|
119 |
msgid "Show me all activity originating from this IP Address"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: classes/AuditLogListView.php:450
|
123 |
msgid "View all details of this change"
|
124 |
msgstr ""
|
125 |
|
126 |
+
#: classes/AuditLogListView.php:451 classes/AuditLogListView.php:597
|
|
|
127 |
msgid "Alert Data Inspector"
|
128 |
msgstr ""
|
129 |
|
130 |
+
#: classes/AuditLogListView.php:552 classes/AuditLogListView.php:569
|
|
|
|
|
|
|
|
|
131 |
msgid "Download the log file."
|
132 |
msgstr ""
|
133 |
|
134 |
+
#: classes/AuditLogListView.php:577
|
135 |
msgid "published"
|
136 |
msgstr ""
|
137 |
|
138 |
+
#: classes/Loggers/Database.php:182 classes/Views/EmailNotifications.php:153
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
#: classes/Views/EmailNotifications.php:185 classes/Views/ExternalDB.php:152
|
140 |
+
#: classes/Views/ExternalDB.php:184 classes/Views/Help.php:144
|
141 |
+
#: classes/Views/Help.php:195 classes/Views/LogInUsers.php:154
|
142 |
#: classes/Views/LogInUsers.php:186 classes/Views/Reports.php:153
|
143 |
#: classes/Views/Reports.php:185 classes/Views/Search.php:153
|
144 |
#: classes/Views/Search.php:178
|
145 |
msgid "Upgrade to Premium"
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: classes/Loggers/Database.php:183 classes/Views/AuditLog.php:105
|
149 |
+
#: classes/Views/EmailNotifications.php:154
|
150 |
#: classes/Views/EmailNotifications.php:186 classes/Views/ExternalDB.php:153
|
151 |
+
#: classes/Views/ExternalDB.php:185 classes/Views/Help.php:196
|
152 |
#: classes/Views/LogInUsers.php:155 classes/Views/LogInUsers.php:187
|
153 |
#: classes/Views/Reports.php:154 classes/Views/Reports.php:186
|
154 |
#: classes/Views/Search.php:154 classes/Views/Search.php:179
|
155 |
msgid "More Information"
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: classes/Sensors/Content.php:941 classes/Sensors/Content.php:949
|
159 |
+
#: classes/Sensors/WooCommerce.php:608 classes/Sensors/WooCommerce.php:614
|
160 |
msgid "Password Protected"
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: classes/Sensors/Content.php:943 classes/Sensors/Content.php:951
|
164 |
msgid "Public"
|
165 |
msgstr ""
|
166 |
|
167 |
+
#: classes/Sensors/Content.php:945 classes/Sensors/Content.php:953
|
168 |
msgid "Private"
|
169 |
msgstr ""
|
170 |
|
171 |
+
#: classes/Sensors/WooCommerce.php:1270
|
172 |
msgid "In stock"
|
173 |
msgstr ""
|
174 |
|
175 |
+
#: classes/Sensors/WooCommerce.php:1272
|
176 |
msgid "Out of stock"
|
177 |
msgstr ""
|
178 |
|
179 |
+
#: classes/Settings.php:363
|
180 |
msgid "This function is deprecated"
|
181 |
msgstr ""
|
182 |
|
183 |
#: classes/Views/AuditLog.php:78
|
184 |
msgid ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
185 |
"See who is logged in to your WordPress, create user productivity reports, "
|
186 |
"get alerted via email of important changes and more!"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: classes/Views/AuditLog.php:79
|
190 |
msgid ""
|
191 |
"Unlock these powerful features and much more with the premium edition of WP "
|
192 |
"Security Audit Log."
|
193 |
msgstr ""
|
194 |
|
195 |
+
#: classes/Views/AuditLog.php:104
|
196 |
+
msgid "Buy Now"
|
197 |
msgstr ""
|
198 |
|
199 |
+
#: classes/Views/AuditLog.php:123
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
msgid ""
|
201 |
"There are connectivity issues with the database where the WordPress activity "
|
202 |
"log is stored. The logs will be temporary buffered in the WordPress database "
|
203 |
"until the connection is fully restored."
|
204 |
msgstr ""
|
205 |
|
206 |
+
#: classes/Views/AuditLog.php:140 classes/Views/AuditLog.php:156
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
msgid "Audit Log Viewer"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: classes/Views/AuditLog.php:183 classes/Views/Licensing.php:82
|
211 |
+
#: classes/Views/Settings.php:211 classes/Views/ToggleAlerts.php:68
|
212 |
msgid "You do not have sufficient permissions to access this page."
|
213 |
msgstr ""
|
214 |
|
215 |
+
#: classes/Views/AuditLog.php:191 classes/Views/AuditLog.php:422
|
216 |
+
#: classes/Views/Licensing.php:90 classes/Views/Settings.php:207
|
217 |
+
#: classes/Views/Settings.php:968 classes/Views/Settings.php:996
|
218 |
+
#: classes/Views/Settings.php:1026
|
219 |
+
msgid "Nonce verification failed."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
220 |
msgstr ""
|
221 |
|
222 |
+
#: classes/Views/AuditLog.php:220 classes/Views/AuditLog.php:243
|
223 |
msgid "Please enter the number of alerts you would like to see on one page:"
|
224 |
msgstr ""
|
225 |
|
226 |
+
#: classes/Views/AuditLog.php:222 classes/Views/AuditLog.php:245
|
227 |
msgid "No Results"
|
228 |
msgstr ""
|
229 |
|
230 |
+
#: classes/Views/AuditLog.php:419
|
231 |
msgid "No users found."
|
232 |
msgstr ""
|
233 |
|
234 |
+
#: classes/Views/AuditLog.php:441
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
235 |
msgid "Log file does not exist."
|
236 |
msgstr ""
|
237 |
|
238 |
+
#: classes/Views/AuditLog.php:482
|
239 |
msgid "Request to get log file failed."
|
240 |
msgstr ""
|
241 |
|
242 |
+
#: classes/Views/AuditLog.php:489
|
243 |
+
msgid "Nonce verification failed!"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
msgstr ""
|
245 |
|
246 |
#: classes/Views/EmailNotifications.php:28
|
337 |
|
338 |
#: classes/Views/ExternalDB.php:121
|
339 |
msgid ""
|
340 |
+
"Configure archiving rules to archive old alerts in an archiving database,"
|
341 |
msgstr ""
|
342 |
|
343 |
#: classes/Views/ExternalDB.php:167 classes/Views/ExternalDB.php:168
|
353 |
msgstr ""
|
354 |
|
355 |
#: classes/Views/Help.php:30 classes/Views/Help.php:44
|
|
|
356 |
msgid "Help"
|
357 |
msgstr ""
|
358 |
|
359 |
+
#: classes/Views/Help.php:75
|
|
|
|
|
|
|
|
|
360 |
msgid "Getting Started"
|
361 |
msgstr ""
|
362 |
|
363 |
+
#: classes/Views/Help.php:77
|
364 |
msgid ""
|
365 |
"Getting started with WP Security Audit Log is really easy; once the plugin "
|
366 |
"is installed it will automatically keep a log of everything that is "
|
368 |
"video below for a quick overview of the plugin."
|
369 |
msgstr ""
|
370 |
|
371 |
+
#: classes/Views/Help.php:86
|
372 |
msgid "Plugin Support"
|
373 |
msgstr ""
|
374 |
|
375 |
+
#: classes/Views/Help.php:88
|
376 |
msgid ""
|
377 |
"Have you encountered or noticed any issues while using WP Security Audit Log "
|
378 |
"plugin?"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: classes/Views/Help.php:89
|
382 |
msgid ""
|
383 |
"Or you want to report something to us? Click any of the options below to "
|
384 |
"post on the plugin's forum or contact our support directly."
|
385 |
msgstr ""
|
386 |
|
387 |
+
#: classes/Views/Help.php:91
|
388 |
msgid "Free Support Forum"
|
389 |
msgstr ""
|
390 |
|
391 |
+
#: classes/Views/Help.php:93
|
392 |
msgid "Free Support Email"
|
393 |
msgstr ""
|
394 |
|
395 |
+
#: classes/Views/Help.php:99
|
396 |
msgid "Plugin Documentation"
|
397 |
msgstr ""
|
398 |
|
399 |
+
#: classes/Views/Help.php:101
|
400 |
msgid ""
|
401 |
"For more technical information about the WP Security Audit Log plugin please "
|
402 |
"visit the plugin’s knowledge base."
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: classes/Views/Help.php:102
|
406 |
msgid ""
|
407 |
+
"Refer to the list of WordPress security alerts for a complete list of Alerts "
|
408 |
"and IDs that the plugin uses to keep a log of all the changes in the "
|
409 |
"WordPress audit log."
|
410 |
msgstr ""
|
411 |
|
412 |
+
#: classes/Views/Help.php:104
|
413 |
msgid "Plugin Website"
|
414 |
msgstr ""
|
415 |
|
416 |
+
#: classes/Views/Help.php:106
|
417 |
msgid "Knowledge Base"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: classes/Views/Help.php:108
|
421 |
+
msgid "List of WordPress Security Alerts"
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: classes/Views/Help.php:114
|
425 |
msgid "Rate WP Security Audit Log"
|
426 |
msgstr ""
|
427 |
|
428 |
+
#: classes/Views/Help.php:116
|
429 |
msgid ""
|
430 |
"We work really hard to deliver a plugin that enables you to keep a record of "
|
431 |
"all the changes that are happening on your WordPress."
|
432 |
msgstr ""
|
433 |
|
434 |
+
#: classes/Views/Help.php:117
|
435 |
msgid ""
|
436 |
"It takes thousands of man-hours every year and endless amount of dedication "
|
437 |
"to research, develop and maintain the free edition of WP Security Audit Log."
|
438 |
msgstr ""
|
439 |
|
440 |
+
#: classes/Views/Help.php:118
|
441 |
msgid ""
|
442 |
"Therefore if you like what you see, and find WP Security Audit Log useful we "
|
443 |
"ask you nothing more than to please rate our plugin."
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: classes/Views/Help.php:119
|
447 |
msgid "We appreciate every star!"
|
448 |
msgstr ""
|
449 |
|
450 |
+
#: classes/Views/Help.php:129
|
451 |
msgid "Rate Plugin"
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: classes/Views/Help.php:148
|
455 |
msgid "See who is logged in"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: classes/Views/Help.php:149
|
459 |
msgid "And remotely terminate sessions"
|
460 |
msgstr ""
|
461 |
|
462 |
+
#: classes/Views/Help.php:152
|
463 |
msgid "Generate reports"
|
464 |
msgstr ""
|
465 |
|
466 |
+
#: classes/Views/Help.php:153
|
467 |
msgid "Or configure automated email reports"
|
468 |
msgstr ""
|
469 |
|
470 |
+
#: classes/Views/Help.php:156
|
471 |
msgid "Configure email notifications"
|
472 |
msgstr ""
|
473 |
|
474 |
+
#: classes/Views/Help.php:157
|
475 |
msgid "Get instantly notified of important changes"
|
476 |
msgstr ""
|
477 |
|
478 |
+
#: classes/Views/Help.php:160
|
479 |
msgid "Add Search"
|
480 |
msgstr ""
|
481 |
|
482 |
+
#: classes/Views/Help.php:161
|
483 |
msgid "Easily track down suspicious behaviour"
|
484 |
msgstr ""
|
485 |
|
486 |
+
#: classes/Views/Help.php:164
|
487 |
msgid "Integrate & Centralise"
|
488 |
msgstr ""
|
489 |
|
490 |
+
#: classes/Views/Help.php:165
|
491 |
msgid "Export the logs to your centralised logging system"
|
492 |
msgstr ""
|
493 |
|
495 |
msgid "Licensing"
|
496 |
msgstr ""
|
497 |
|
498 |
+
#: classes/Views/Licensing.php:96 classes/Views/Settings.php:218
|
499 |
#: classes/Views/ToggleAlerts.php:92
|
500 |
msgid "Settings have been saved."
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: classes/Views/Licensing.php:101 classes/Views/Settings.php:223
|
504 |
#: classes/Views/ToggleAlerts.php:98
|
505 |
msgid "Error: "
|
506 |
msgstr ""
|
660 |
"to fine tune the search results."
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: classes/Views/Settings.php:57 classes/Views/Settings.php:71
|
664 |
+
msgid "Settings"
|
665 |
msgstr ""
|
666 |
|
667 |
+
#: classes/Views/Settings.php:229
|
668 |
+
msgid "General"
|
669 |
msgstr ""
|
670 |
|
671 |
+
#: classes/Views/Settings.php:230
|
672 |
+
msgid "Audit Log"
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: classes/Views/Settings.php:231
|
676 |
msgid "Exclude Objects"
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: classes/Views/Settings.php:247
|
680 |
+
msgid "From Email & Name"
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: classes/Views/Settings.php:250
|
684 |
+
msgid "Email Address"
|
685 |
+
msgstr ""
|
686 |
+
|
687 |
+
#: classes/Views/Settings.php:253
|
688 |
+
msgid "Display Name"
|
689 |
+
msgstr ""
|
690 |
+
|
691 |
+
#: classes/Views/Settings.php:259
|
692 |
+
#, php-format
|
693 |
+
msgid ""
|
694 |
+
"These email address and display name will be used as From details in the "
|
695 |
+
"emails sent by the %s . Please ensure the mail server can relay emails with "
|
696 |
+
"the domain of the specified email address."
|
697 |
+
msgstr ""
|
698 |
+
|
699 |
+
#: classes/Views/Settings.php:260
|
700 |
+
msgid "(premium add-ons)"
|
701 |
msgstr ""
|
702 |
|
703 |
+
#: classes/Views/Settings.php:268
|
704 |
+
msgid "Alerts Dashboard Widget"
|
705 |
msgstr ""
|
706 |
|
707 |
+
#: classes/Views/Settings.php:274
|
708 |
+
msgid "On"
|
|
|
709 |
msgstr ""
|
710 |
|
711 |
+
#: classes/Views/Settings.php:279
|
712 |
+
msgid "Off"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: classes/Views/Settings.php:285
|
716 |
+
#, php-format
|
717 |
+
msgid "Display a dashboard widget with the latest %d security alerts."
|
718 |
+
msgstr ""
|
719 |
+
|
720 |
+
#: classes/Views/Settings.php:295
|
721 |
+
msgid "Reverse Proxy / Firewall Options"
|
722 |
msgstr ""
|
723 |
|
724 |
+
#: classes/Views/Settings.php:300
|
725 |
+
msgid "WordPress running behind firewall or proxy"
|
726 |
msgstr ""
|
727 |
|
728 |
+
#: classes/Views/Settings.php:303
|
729 |
msgid ""
|
730 |
+
"Enable this option if your WordPress is running behind a firewall or reverse "
|
731 |
+
"proxy. When this option is enabled the plugin will retrieve the user's IP "
|
732 |
+
"address from the proxy header."
|
733 |
msgstr ""
|
734 |
|
735 |
+
#: classes/Views/Settings.php:307
|
736 |
+
msgid "Filter Internal IP Addresses"
|
737 |
msgstr ""
|
738 |
|
739 |
+
#: classes/Views/Settings.php:310
|
|
|
|
|
740 |
msgid ""
|
741 |
+
"Enable this option to filter internal IP addresses from the proxy headers."
|
|
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: classes/Views/Settings.php:316
|
745 |
+
msgid "Can Manage Plugin"
|
746 |
msgstr ""
|
747 |
|
748 |
+
#: classes/Views/Settings.php:323
|
749 |
+
msgid "Users and Roles in this list can manage the plugin settings"
|
750 |
msgstr ""
|
751 |
|
752 |
+
#: classes/Views/Settings.php:341
|
753 |
+
msgid "Restrict Plugin Access"
|
754 |
msgstr ""
|
755 |
|
756 |
+
#: classes/Views/Settings.php:351
|
757 |
+
msgid ""
|
758 |
+
"If this option is disabled all the administrators on this WordPress have "
|
759 |
+
"access to manage this plugin."
|
760 |
msgstr ""
|
761 |
|
762 |
+
#: classes/Views/Settings.php:352
|
763 |
msgid ""
|
764 |
+
"By enabling this option only <strong>You</strong> and the users specified in "
|
765 |
+
"the <strong>Can Manage Plugin</strong> and <strong>Can View Alerts</strong> "
|
766 |
+
"can configure this plugin or view the alerts in the WordPress audit trail."
|
767 |
msgstr ""
|
768 |
|
769 |
+
#: classes/Views/Settings.php:359
|
770 |
msgid "Login Page Notification"
|
771 |
msgstr ""
|
772 |
|
773 |
+
#: classes/Views/Settings.php:383 wp-security-audit-log.php:1122
|
774 |
msgid ""
|
775 |
"For security and auditing purposes, a record of all of your logged-in "
|
776 |
"actions and changes within the WordPress dashboard will be recorded in an "
|
779 |
"IP address where you accessed this site from."
|
780 |
msgstr ""
|
781 |
|
782 |
+
#: classes/Views/Settings.php:401
|
|
|
|
|
|
|
|
|
783 |
msgid ""
|
784 |
+
"Many compliance regulations (such as the GDRP) require website "
|
785 |
+
"administrators to tell the users of this website that a log is kept of all "
|
786 |
+
"the changes they do when logged in."
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: classes/Views/Settings.php:403
|
790 |
+
msgid "<strong>Note: </strong>"
|
791 |
msgstr ""
|
792 |
|
793 |
+
#: classes/Views/Settings.php:403
|
|
|
|
|
794 |
msgid ""
|
795 |
+
"The only HTML code allowed in the login page notification is for links ( < a "
|
796 |
+
"href >...< /a > )."
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: classes/Views/Settings.php:410
|
800 |
+
msgid "Developer Options"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: classes/Views/Settings.php:416
|
804 |
+
msgid "Show Developer Options"
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: classes/Views/Settings.php:420
|
808 |
msgid ""
|
809 |
+
"Only enable these options on testing, staging and development websites. "
|
810 |
+
"Enabling any of the settings below on LIVE websites may cause unintended "
|
811 |
+
"side-effects including degraded performance."
|
|
|
|
|
|
|
|
|
812 |
msgstr ""
|
813 |
|
814 |
+
#: classes/Views/Settings.php:434
|
815 |
+
msgid "Request Log"
|
|
|
|
|
|
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: classes/Views/Settings.php:435
|
819 |
+
msgid "Enables logging request to file."
|
820 |
msgstr ""
|
821 |
|
822 |
+
#: classes/Views/Settings.php:459
|
823 |
+
msgid ""
|
824 |
+
"The request log file is saved in the /wp-content/uploads/wp-security-audit-"
|
825 |
+
"log/ directory."
|
826 |
msgstr ""
|
827 |
|
828 |
+
#: classes/Views/Settings.php:467
|
829 |
+
msgid "Hide Plugin in Plugins Page"
|
830 |
msgstr ""
|
831 |
|
832 |
+
#: classes/Views/Settings.php:472
|
833 |
+
msgid "Hide"
|
834 |
msgstr ""
|
835 |
|
836 |
+
#: classes/Views/Settings.php:476
|
837 |
msgid ""
|
838 |
+
"To manually revert this setting set the value of option wsal-hide-plugin to "
|
839 |
+
"0 in the wp_wsal_options table."
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: classes/Views/Settings.php:483
|
843 |
+
msgid "Remove Data on Uninstall"
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: classes/Views/Settings.php:490
|
847 |
msgid ""
|
848 |
+
"Check this box if you would like remove all data when the plugin is deleted."
|
|
|
|
|
|
|
|
|
|
|
|
|
849 |
msgstr ""
|
850 |
|
851 |
+
#: classes/Views/Settings.php:509
|
852 |
msgid ""
|
853 |
+
"The options below are disabled because you enabled archiving of alerts to "
|
854 |
+
"the archiving table from"
|
855 |
msgstr ""
|
856 |
|
857 |
+
#: classes/Views/Settings.php:514
|
858 |
+
msgid "Audit Log Retention"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: classes/Views/Settings.php:517
|
862 |
+
msgid "(eg: 1 month)"
|
|
|
|
|
|
|
863 |
msgstr ""
|
864 |
|
865 |
+
#: classes/Views/Settings.php:523
|
866 |
+
msgid "None"
|
867 |
msgstr ""
|
868 |
|
869 |
+
#: classes/Views/Settings.php:527
|
870 |
+
msgid "(Leave empty or enter 0 to disable automatic pruning.)"
|
871 |
msgstr ""
|
872 |
|
873 |
+
#: classes/Views/Settings.php:533
|
874 |
+
msgid "Delete alerts older than"
|
875 |
msgstr ""
|
876 |
|
877 |
+
#: classes/Views/Settings.php:542
|
878 |
+
msgid "months"
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: classes/Views/Settings.php:546
|
882 |
+
msgid "(eg: 80)"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: classes/Views/Settings.php:552
|
886 |
+
msgid "Keep up to"
|
887 |
msgstr ""
|
888 |
|
889 |
+
#: classes/Views/Settings.php:557
|
890 |
+
msgid "alerts"
|
|
|
|
|
|
|
|
|
891 |
msgstr ""
|
892 |
|
893 |
+
#: classes/Views/Settings.php:563
|
894 |
+
msgid "Next Scheduled Cleanup is in "
|
895 |
msgstr ""
|
896 |
|
897 |
+
#: classes/Views/Settings.php:567
|
898 |
+
#, php-format
|
899 |
+
msgid "(or %s)"
|
900 |
msgstr ""
|
901 |
|
902 |
+
#: classes/Views/Settings.php:568
|
903 |
+
msgid "Run Manually"
|
904 |
msgstr ""
|
905 |
|
906 |
+
#: classes/Views/Settings.php:576
|
907 |
+
msgid "Can View Alerts"
|
|
|
|
|
908 |
msgstr ""
|
909 |
|
910 |
+
#: classes/Views/Settings.php:583
|
911 |
+
msgid "Users and Roles in this list can view the security alerts"
|
|
|
|
|
|
|
912 |
msgstr ""
|
913 |
|
914 |
+
#: classes/Views/Settings.php:599
|
915 |
+
msgid "Refresh Audit Log Viewer"
|
|
|
|
|
|
|
916 |
msgstr ""
|
917 |
|
918 |
+
#: classes/Views/Settings.php:606
|
919 |
+
msgid "Automatic"
|
|
|
|
|
|
|
|
|
920 |
msgstr ""
|
921 |
|
922 |
+
#: classes/Views/Settings.php:608
|
923 |
+
msgid "Refresh Audit Log Viewer as soon as there are new alerts."
|
924 |
msgstr ""
|
925 |
|
926 |
+
#: classes/Views/Settings.php:613
|
927 |
+
msgid "Manual"
|
928 |
msgstr ""
|
929 |
|
930 |
+
#: classes/Views/Settings.php:615
|
931 |
+
msgid "Refresh Audit Log Viewer only when the page is reloaded."
|
932 |
msgstr ""
|
933 |
|
934 |
+
#: classes/Views/Settings.php:622
|
935 |
+
msgid "Alerts Timestamp"
|
936 |
msgstr ""
|
937 |
|
938 |
+
#: classes/Views/Settings.php:629
|
939 |
+
msgid "UTC"
|
940 |
msgstr ""
|
941 |
|
942 |
+
#: classes/Views/Settings.php:635
|
943 |
+
msgid "WordPress' timezone"
|
944 |
msgstr ""
|
945 |
|
946 |
+
#: classes/Views/Settings.php:638
|
947 |
+
msgid ""
|
948 |
+
"Select which timestamp the alerts should have in the Audit Log viewer. Note "
|
949 |
+
"that the WordPress' timezone might be different from that of the server."
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: classes/Views/Settings.php:644
|
953 |
+
msgid "User Information in Audit Log"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: classes/Views/Settings.php:655
|
957 |
+
msgid "First Name & Last Name"
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: classes/Views/Settings.php:658
|
961 |
msgid ""
|
962 |
+
"Select the type of user information that should be displayed in the audit "
|
963 |
+
"log."
|
|
|
964 |
msgstr ""
|
965 |
|
966 |
+
#: classes/Views/Settings.php:664
|
967 |
+
msgid "Audit Log Columns Selection"
|
968 |
msgstr ""
|
969 |
|
970 |
+
#: classes/Views/Settings.php:680
|
971 |
+
msgid ""
|
972 |
+
"When you disable any of the above such details won’t be shown in the Audit "
|
973 |
+
"Log viewer though the plugin will still record such information in the "
|
974 |
+
"database."
|
975 |
msgstr ""
|
976 |
|
977 |
+
#: classes/Views/Settings.php:686
|
978 |
+
msgid "Disable Alerts for WordPress Background Activity"
|
979 |
msgstr ""
|
980 |
|
981 |
+
#: classes/Views/Settings.php:692
|
982 |
+
msgid "Hide activity"
|
|
|
983 |
msgstr ""
|
984 |
|
985 |
+
#: classes/Views/Settings.php:696
|
986 |
msgid ""
|
987 |
+
"For example do not raise an alert when WordPress deletes the auto drafts."
|
|
|
|
|
|
|
988 |
msgstr ""
|
989 |
|
990 |
+
#: classes/Views/Settings.php:707
|
991 |
+
msgid "Users & Roles"
|
992 |
msgstr ""
|
993 |
|
994 |
+
#: classes/Views/Settings.php:710
|
995 |
+
msgid ""
|
996 |
+
"Any of the users and roles listed in the below options will be excluded from "
|
997 |
+
"monitoring. This means that any change they do will not be logged."
|
998 |
msgstr ""
|
999 |
|
1000 |
+
#: classes/Views/Settings.php:714
|
1001 |
+
msgid "Excluded Users"
|
1002 |
msgstr ""
|
1003 |
|
1004 |
+
#: classes/Views/Settings.php:734
|
1005 |
+
msgid "Excluded Roles"
|
1006 |
msgstr ""
|
1007 |
|
1008 |
+
#: classes/Views/Settings.php:753
|
1009 |
+
msgid "Custom Fields"
|
1010 |
msgstr ""
|
1011 |
|
1012 |
+
#: classes/Views/Settings.php:757
|
1013 |
msgid ""
|
1014 |
+
"All of the custom fields listed below will be excluded from monitoring. This "
|
1015 |
+
"means that if they are changed or updated the plugin will not log such "
|
1016 |
+
"activity."
|
1017 |
msgstr ""
|
1018 |
|
1019 |
+
#: classes/Views/Settings.php:758
|
1020 |
+
msgid ""
|
1021 |
+
"You can use the * wildcard to exclude more than one Custom Field. For "
|
1022 |
+
"example, to exclude all the Custom Fields that start with wp123 specify "
|
1023 |
+
"wp123*."
|
1024 |
msgstr ""
|
1025 |
|
1026 |
+
#: classes/Views/Settings.php:763
|
1027 |
+
msgid "Excluded Custom Fields"
|
1028 |
msgstr ""
|
1029 |
|
1030 |
+
#: classes/Views/Settings.php:782
|
1031 |
+
msgid "IP Addresses"
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: classes/Views/Settings.php:785
|
1035 |
+
msgid ""
|
1036 |
+
"Any of the IP addresses listed below will be excluded from monitoring. This "
|
1037 |
+
"means that all activity from such IP address will not be recorded."
|
1038 |
msgstr ""
|
1039 |
|
1040 |
+
#: classes/Views/Settings.php:789
|
1041 |
+
msgid "Excluded IP Addresses"
|
|
|
|
|
1042 |
msgstr ""
|
1043 |
|
1044 |
+
#: classes/Views/Settings.php:808 defaults.php:206
|
1045 |
+
msgid "Custom Post Types"
|
1046 |
msgstr ""
|
1047 |
|
1048 |
+
#: classes/Views/Settings.php:811
|
1049 |
+
msgid ""
|
1050 |
+
"The below list of Custom Post Types are excluded from monitoring. This means "
|
1051 |
+
"that all activity related to these Custom Post Types will not be recorded."
|
1052 |
msgstr ""
|
1053 |
|
1054 |
+
#: classes/Views/Settings.php:814
|
1055 |
+
msgid "Exclude Custom Post Type from monitoring"
|
1056 |
msgstr ""
|
1057 |
|
1058 |
+
#: classes/Views/ToggleAlerts.php:27 classes/Views/ToggleAlerts.php:41
|
1059 |
+
msgid "Enable/Disable Alerts"
|
1060 |
msgstr ""
|
1061 |
|
1062 |
+
#: classes/Views/ToggleAlerts.php:175
|
1063 |
+
msgid "Code"
|
|
|
|
|
|
|
|
|
1064 |
msgstr ""
|
1065 |
|
1066 |
+
#: classes/Views/ToggleAlerts.php:176
|
1067 |
+
msgid "Type"
|
1068 |
msgstr ""
|
1069 |
|
1070 |
+
#: classes/Views/ToggleAlerts.php:177 classes/WidgetManager.php:68
|
1071 |
+
msgid "Description"
|
|
|
|
|
|
|
1072 |
msgstr ""
|
1073 |
|
1074 |
+
#: classes/Views/ToggleAlerts.php:186
|
1075 |
msgid ""
|
1076 |
+
"<strong>Note:</strong> Post refers to any type of content, i.e. blog post, "
|
1077 |
+
"page or a post with a custom post type."
|
|
|
1078 |
msgstr ""
|
1079 |
|
1080 |
+
#: classes/Views/ToggleAlerts.php:201
|
1081 |
+
msgid "Not Implemented"
|
1082 |
msgstr ""
|
1083 |
|
1084 |
+
#: classes/Views/ToggleAlerts.php:204
|
1085 |
+
msgid "Not Available"
|
1086 |
msgstr ""
|
1087 |
|
1088 |
+
#: classes/Views/ToggleAlerts.php:230 classes/Views/ToggleAlerts.php:263
|
1089 |
msgid ""
|
1090 |
+
"Capture 404 requests to file (the log file are created in the /wp-content/"
|
1091 |
+
"uploads/wp-security-audit-log/404s/ directory)"
|
1092 |
msgstr ""
|
1093 |
|
1094 |
+
#: classes/Views/ToggleAlerts.php:238 classes/Views/ToggleAlerts.php:271
|
1095 |
+
msgid "Purge log files older than one month"
|
|
|
|
|
|
|
|
|
1096 |
msgstr ""
|
1097 |
|
1098 |
+
#: classes/Views/ToggleAlerts.php:243
|
1099 |
+
msgid ""
|
1100 |
+
"Number of 404 Requests to Log. By default the plugin keeps up to 99 requests "
|
1101 |
+
"to non-existing pages from the same IP address. Increase the value in this "
|
1102 |
+
"setting to the desired amount to keep a log of more or less requests."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#: classes/Views/ToggleAlerts.php:248 classes/Views/ToggleAlerts.php:281
|
1106 |
+
msgid "Record the referrer that generated the 404 error."
|
1107 |
msgstr ""
|
1108 |
|
1109 |
+
#: classes/Views/ToggleAlerts.php:276
|
1110 |
+
msgid ""
|
1111 |
+
"Number of 404 Requests to Log. By default the plugin keeps up to 99 requests "
|
1112 |
+
"to non-existing pages from the same IP address. Increase the value in this "
|
1113 |
+
"setting to the desired amount to keep a log of more or less requests. Note "
|
1114 |
+
"that by increasing this value to a high number, should your website be "
|
1115 |
+
"scanned the plugin will consume more resources to log all the requests."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: classes/Views/ToggleAlerts.php:293 classes/Views/ToggleAlerts.php:306
|
1119 |
msgid ""
|
1120 |
+
"Number of login attempts to log. Enter 0 to log all failed login attempts. "
|
1121 |
+
"(By default the plugin only logs up to 10 failed login because the process "
|
1122 |
+
"can be very resource intensive in case of a brute force attack)"
|
|
|
|
|
|
|
1123 |
msgstr ""
|
1124 |
|
1125 |
+
#: classes/Views/ToggleAlerts.php:321
|
1126 |
+
msgid "Save Changes"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: classes/WidgetManager.php:36
|
1130 |
+
msgid "Latest Alerts"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
+
#: classes/WidgetManager.php:60
|
1134 |
+
msgid "No alerts found."
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: defaults.php:60
|
1138 |
+
msgid "Fatal run-time error."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: defaults.php:64
|
1142 |
+
msgid "Run-time warning (non-fatal error)."
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: defaults.php:68
|
1146 |
+
msgid "Compile-time parse error."
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: defaults.php:72
|
1150 |
+
msgid "Run-time notice."
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: defaults.php:76
|
1154 |
+
msgid "Fatal error that occurred during startup."
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: defaults.php:80
|
1158 |
+
msgid "Warnings that occurred during startup."
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: defaults.php:84
|
1162 |
+
msgid "Fatal compile-time error."
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
#: defaults.php:88
|
1166 |
+
msgid "Compile-time warning."
|
1167 |
msgstr ""
|
1168 |
|
1169 |
+
#: defaults.php:92
|
1170 |
+
msgid "User-generated error message."
|
1171 |
msgstr ""
|
1172 |
|
1173 |
+
#: defaults.php:96
|
1174 |
+
msgid "User-generated warning message."
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
#: defaults.php:100
|
1178 |
+
msgid "User-generated notice message."
|
1179 |
msgstr ""
|
1180 |
|
1181 |
+
#: defaults.php:104
|
1182 |
+
msgid "Non-standard/optimal code warning."
|
1183 |
msgstr ""
|
1184 |
|
1185 |
+
#: defaults.php:108
|
1186 |
+
msgid "Catchable fatal error."
|
1187 |
msgstr ""
|
1188 |
|
1189 |
+
#: defaults.php:112
|
1190 |
+
msgid "Run-time deprecation notices."
|
1191 |
msgstr ""
|
1192 |
|
1193 |
+
#: defaults.php:116
|
1194 |
+
msgid "Run-time user deprecation notices."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1195 |
msgstr ""
|
1196 |
|
1197 |
+
#: defaults.php:121
|
1198 |
+
msgid "Critical, high-impact messages."
|
1199 |
msgstr ""
|
1200 |
|
1201 |
+
#: defaults.php:125
|
1202 |
+
msgid "Debug informational messages."
|
1203 |
msgstr ""
|
1204 |
|
1205 |
+
#: defaults.php:135
|
1206 |
+
msgid "Content & Comments"
|
1207 |
msgstr ""
|
1208 |
|
1209 |
+
#: defaults.php:139
|
1210 |
+
msgid "Content"
|
1211 |
msgstr ""
|
1212 |
|
1213 |
+
#: defaults.php:140
|
1214 |
+
msgid "User created a new post and saved it as draft"
|
1215 |
msgstr ""
|
1216 |
|
1217 |
+
#: defaults.php:140
|
1218 |
+
msgid ""
|
1219 |
+
"Created a new %PostType% titled %PostTitle% and saved it as draft. "
|
1220 |
+
"%EditorLinkPost%."
|
1221 |
msgstr ""
|
1222 |
|
1223 |
+
#: defaults.php:141
|
1224 |
+
msgid "User published a post"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
#: defaults.php:141
|
1228 |
+
msgid ""
|
1229 |
+
"Published a %PostType% titled %PostTitle%. URL is %PostUrl%. %EditorLinkPost"
|
1230 |
+
"%."
|
1231 |
msgstr ""
|
1232 |
|
1233 |
+
#: defaults.php:142
|
1234 |
+
msgid "User modified a post"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
+
#: defaults.php:142
|
1238 |
+
msgid ""
|
1239 |
+
"Modified the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
1240 |
+
"%EditorLinkPost%."
|
1241 |
msgstr ""
|
1242 |
|
1243 |
+
#: defaults.php:143
|
1244 |
+
msgid "User permanently deleted a post from the trash"
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: defaults.php:143
|
1248 |
+
msgid ""
|
1249 |
+
"Permanently deleted the %PostType% titled %PostTitle%. URL was %PostUrl%."
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: defaults.php:144
|
1253 |
+
msgid "User moved a post to the trash"
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: defaults.php:144
|
1257 |
+
msgid ""
|
1258 |
+
"Moved the %PostStatus% %PostType% titled %PostTitle% to trash. URL is "
|
1259 |
+
"%PostUrl%."
|
1260 |
msgstr ""
|
1261 |
|
1262 |
+
#: defaults.php:145
|
1263 |
+
msgid "User restored a post from trash"
|
1264 |
msgstr ""
|
1265 |
|
1266 |
+
#: defaults.php:145
|
1267 |
+
msgid ""
|
1268 |
+
"The %PostStatus% %PostType% titled %PostTitle% has been restored from trash. "
|
1269 |
+
"URL is: %PostUrl%. %EditorLinkPost%."
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
#: defaults.php:146
|
1273 |
+
msgid "User changed post category"
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: defaults.php:146
|
1277 |
+
msgid ""
|
1278 |
+
"Changed the category of the %PostStatus% %PostType% titled %PostTitle% from "
|
1279 |
+
"%OldCategories% to %NewCategories%. URL is: %PostUrl%. %EditorLinkPost%."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
+
#: defaults.php:147
|
1283 |
+
msgid "User changed post URL"
|
1284 |
msgstr ""
|
1285 |
|
1286 |
+
#: defaults.php:147
|
1287 |
+
msgid ""
|
1288 |
+
"Changed the URL of the %PostStatus% %PostType% titled %PostTitle%%ReportText"
|
1289 |
+
"%.%ChangeText% %EditorLinkPost%."
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: defaults.php:148
|
1293 |
+
msgid "User changed post author"
|
1294 |
msgstr ""
|
1295 |
|
1296 |
+
#: defaults.php:148
|
1297 |
+
msgid ""
|
1298 |
+
"Changed the author of the %PostStatus% %PostType% titled %PostTitle% from "
|
1299 |
+
"%OldAuthor% to %NewAuthor%. URL is: %PostUrl%. %EditorLinkPost%."
|
1300 |
msgstr ""
|
1301 |
|
1302 |
+
#: defaults.php:149
|
1303 |
+
msgid "User changed post status"
|
1304 |
msgstr ""
|
1305 |
|
1306 |
+
#: defaults.php:149
|
1307 |
+
msgid ""
|
1308 |
+
"Changed the status of the %PostType% titled %PostTitle% from %OldStatus% to "
|
1309 |
+
"%NewStatus%. URL is: %PostUrl%. %EditorLinkPost%."
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: defaults.php:150
|
1313 |
+
msgid "User created new category"
|
1314 |
msgstr ""
|
1315 |
|
1316 |
+
#: defaults.php:150
|
1317 |
+
msgid ""
|
1318 |
+
"Created a new category called %CategoryName%. Category slug is %Slug%. "
|
1319 |
+
"%CategoryLink%."
|
1320 |
msgstr ""
|
1321 |
|
1322 |
+
#: defaults.php:151
|
1323 |
+
msgid "User deleted category"
|
1324 |
msgstr ""
|
1325 |
|
1326 |
+
#: defaults.php:151
|
1327 |
+
msgid ""
|
1328 |
+
"Deleted the %CategoryName% category. Category slug was %Slug%. %CategoryLink"
|
1329 |
+
"%."
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: defaults.php:152
|
1333 |
+
msgid "User changed the visibility of a post"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
+
#: defaults.php:152
|
1337 |
+
msgid ""
|
1338 |
+
"Changed the visibility of the %PostStatus% %PostType% titled %PostTitle% "
|
1339 |
+
"from %OldVisibility% to %NewVisibility%. URL is: %PostUrl%. %EditorLinkPost%."
|
1340 |
msgstr ""
|
1341 |
|
1342 |
+
#: defaults.php:153
|
1343 |
+
msgid "User changed the date of a post"
|
1344 |
msgstr ""
|
1345 |
|
1346 |
+
#: defaults.php:153
|
1347 |
+
msgid ""
|
1348 |
+
"Changed the date of the %PostStatus% %PostType% titled %PostTitle% from "
|
1349 |
+
"%OldDate% to %NewDate%. URL is: %PostUrl%. %EditorLinkPost%."
|
1350 |
msgstr ""
|
1351 |
|
1352 |
+
#: defaults.php:154
|
1353 |
+
msgid "User changed the parent of a page"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: defaults.php:154
|
1357 |
+
msgid ""
|
1358 |
+
"Changed the parent of the %PostStatus% %PostType% titled %PostTitle% from "
|
1359 |
+
"%OldParentName% to %NewParentName%. %EditorLinkPost%."
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: defaults.php:155
|
1363 |
+
msgid "User changed the template of a page"
|
1364 |
msgstr ""
|
1365 |
|
1366 |
+
#: defaults.php:155
|
1367 |
+
msgid ""
|
1368 |
+
"Changed the template of the %PostStatus% %PostType% titled %PostTitle% from "
|
1369 |
+
"%OldTemplate% to %NewTemplate%. %EditorLinkPost%."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
+
#: defaults.php:156
|
1373 |
+
msgid "User set a post as sticky"
|
1374 |
msgstr ""
|
1375 |
|
1376 |
+
#: defaults.php:156
|
1377 |
+
msgid ""
|
1378 |
+
"Set the post %PostTitle% as Sticky. Post URL is %PostUrl%. %EditorLinkPost%."
|
1379 |
msgstr ""
|
1380 |
|
1381 |
+
#: defaults.php:157
|
1382 |
+
msgid "User removed post from sticky"
|
1383 |
msgstr ""
|
1384 |
|
1385 |
+
#: defaults.php:157
|
1386 |
+
msgid "Removed the post %PostTitle% from Sticky. %EditorLinkPost%."
|
1387 |
msgstr ""
|
1388 |
|
1389 |
+
#: defaults.php:158
|
1390 |
+
msgid "Changed the parent of a category."
|
1391 |
msgstr ""
|
1392 |
|
1393 |
+
#: defaults.php:158
|
1394 |
+
msgid ""
|
1395 |
+
"Changed the parent of the category %CategoryName% from %OldParent% to "
|
1396 |
+
"%NewParent%. %CategoryLink%."
|
1397 |
msgstr ""
|
1398 |
|
1399 |
+
#: defaults.php:159
|
1400 |
+
msgid "User created a custom field for a post"
|
1401 |
msgstr ""
|
1402 |
|
1403 |
+
#: defaults.php:159
|
1404 |
+
msgid ""
|
1405 |
+
"Created a new custom field called %MetaKey% with value %MetaValue% in the "
|
1406 |
+
"%PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
1407 |
+
"%EditorLinkPost%.<br>%MetaLink%."
|
1408 |
msgstr ""
|
1409 |
|
1410 |
+
#: defaults.php:160
|
1411 |
+
msgid "User updated a custom field value for a post"
|
1412 |
msgstr ""
|
1413 |
|
1414 |
+
#: defaults.php:160
|
1415 |
+
msgid ""
|
1416 |
+
"Modified the value of the custom field %MetaKey%%ReportText% in the "
|
1417 |
+
"%PostStatus% %PostType% titled %PostTitle%.%ChangeText% URL is: %PostUrl%. "
|
1418 |
+
"%EditorLinkPost%.<br>%MetaLink%."
|
1419 |
msgstr ""
|
1420 |
|
1421 |
+
#: defaults.php:161
|
1422 |
+
msgid "User deleted a custom field from a post"
|
1423 |
msgstr ""
|
1424 |
|
1425 |
+
#: defaults.php:161
|
1426 |
+
msgid ""
|
1427 |
+
"Deleted the custom field %MetaKey% with value %MetaValue% from %PostStatus% "
|
1428 |
+
"%PostType% titled %PostTitle%. URL is: %PostUrl%. %EditorLinkPost%."
|
1429 |
msgstr ""
|
1430 |
|
1431 |
+
#: defaults.php:162
|
1432 |
+
msgid "User updated a custom field name for a post"
|
1433 |
msgstr ""
|
1434 |
|
1435 |
+
#: defaults.php:162
|
1436 |
msgid ""
|
1437 |
+
"Changed the custom field's name from %MetaKeyOld% to %MetaKeyNew% in the "
|
1438 |
+
"%PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
1439 |
+
"%EditorLinkPost%.<br>%MetaLink%."
|
|
|
|
|
|
|
|
|
|
|
1440 |
msgstr ""
|
1441 |
|
1442 |
+
#: defaults.php:163
|
1443 |
+
msgid "User modified the content of a post."
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: defaults.php:163
|
1447 |
+
msgid ""
|
1448 |
+
"Modified the content of the %PostStatus% %PostType% titled %PostTitle%. Post "
|
1449 |
+
"URL is %PostUrl%. %RevisionLink% %EditorLinkPost%."
|
1450 |
msgstr ""
|
1451 |
|
1452 |
+
#: defaults.php:164
|
1453 |
+
msgid "User submitted a post for review"
|
1454 |
msgstr ""
|
1455 |
|
1456 |
+
#: defaults.php:164
|
1457 |
msgid ""
|
1458 |
+
"Submitted the %PostType% titled %PostTitle% for review. URL is: %PostUrl%. "
|
1459 |
+
"%EditorLinkPost%."
|
1460 |
msgstr ""
|
1461 |
|
1462 |
+
#: defaults.php:165
|
1463 |
+
msgid "User scheduled a post"
|
1464 |
msgstr ""
|
1465 |
|
1466 |
+
#: defaults.php:165
|
1467 |
+
msgid ""
|
1468 |
+
"Scheduled the %PostType% titled %PostTitle% to be published on "
|
1469 |
+
"%PublishingDate%. URL is: %PostUrl%. %EditorLinkPost%."
|
1470 |
msgstr ""
|
1471 |
|
1472 |
+
#: defaults.php:166
|
1473 |
+
msgid "User changed title of a post"
|
1474 |
msgstr ""
|
1475 |
|
1476 |
+
#: defaults.php:166
|
1477 |
msgid ""
|
1478 |
+
"Changed the title of the %PostStatus% %PostType% from %OldTitle% to %NewTitle"
|
1479 |
+
"%. URL is: %PostUrl%. %EditorLinkPost%."
|
1480 |
msgstr ""
|
1481 |
|
1482 |
+
#: defaults.php:167
|
1483 |
+
msgid "User opened a post in the editor"
|
|
|
|
|
1484 |
msgstr ""
|
1485 |
|
1486 |
+
#: defaults.php:167
|
1487 |
msgid ""
|
1488 |
+
"Opened the %PostStatus% %PostType% titled %PostTitle% in the editor. URL is: "
|
1489 |
+
"%PostUrl%. %EditorLinkPost%."
|
|
|
|
|
|
|
1490 |
msgstr ""
|
1491 |
|
1492 |
+
#: defaults.php:168
|
1493 |
+
msgid "User viewed a post"
|
1494 |
msgstr ""
|
1495 |
|
1496 |
+
#: defaults.php:168
|
1497 |
+
msgid ""
|
1498 |
+
"Viewed the %PostStatus% %PostType% titled %PostTitle%. URL is: %PostUrl%. "
|
1499 |
+
"%EditorLinkPost%."
|
1500 |
msgstr ""
|
1501 |
|
1502 |
+
#: defaults.php:169
|
1503 |
+
msgid "A plugin modified a post"
|
|
|
|
|
|
|
1504 |
msgstr ""
|
1505 |
|
1506 |
+
#: defaults.php:169
|
1507 |
msgid ""
|
1508 |
+
"Plugin modified the %PostStatus% %PostType% titled %PostTitle% of type "
|
1509 |
+
"%PostType%. URL is: %PostUrl%. %EditorLinkPost%."
|
|
|
1510 |
msgstr ""
|
1511 |
|
1512 |
+
#: defaults.php:170
|
1513 |
+
msgid "User disabled Comments/Trackbacks and Pingbacks in a post."
|
1514 |
msgstr ""
|
1515 |
|
1516 |
+
#: defaults.php:170
|
1517 |
msgid ""
|
1518 |
+
"Disabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: "
|
1519 |
+
"%PostUrl%. %EditorLinkPost%."
|
1520 |
msgstr ""
|
1521 |
|
1522 |
+
#: defaults.php:171
|
1523 |
+
msgid "User enabled Comments/Trackbacks and Pingbacks in a post."
|
1524 |
msgstr ""
|
1525 |
|
1526 |
+
#: defaults.php:171
|
1527 |
msgid ""
|
1528 |
+
"Enabled %Type% on the %PostStatus% %PostType% titled %PostTitle%. URL is: "
|
1529 |
+
"%PostUrl%. %EditorLinkPost%."
|
1530 |
msgstr ""
|
1531 |
|
1532 |
+
#: defaults.php:172
|
1533 |
+
msgid "User added post tag"
|
1534 |
msgstr ""
|
1535 |
|
1536 |
+
#: defaults.php:172
|
1537 |
msgid ""
|
1538 |
+
"Added the tag %tag% to the %PostStatus% post titled %PostTitle%. URL is: "
|
1539 |
+
"%PostUrl%. %EditorLinkPost%."
|
|
|
|
|
1540 |
msgstr ""
|
1541 |
|
1542 |
+
#: defaults.php:173
|
1543 |
+
msgid "User removed post tag"
|
1544 |
msgstr ""
|
1545 |
|
1546 |
+
#: defaults.php:173
|
1547 |
+
msgid ""
|
1548 |
+
"Removed the tag %tag% from the %PostStatus% post titled %PostTitle%. URL is: "
|
1549 |
+
"%PostUrl%. %EditorLinkPost%."
|
1550 |
msgstr ""
|
1551 |
|
1552 |
+
#: defaults.php:174
|
1553 |
+
msgid "User created new tag"
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: defaults.php:174
|
1557 |
+
msgid "Added a new tag called %TagName%. View the tag: %TagLink%."
|
1558 |
msgstr ""
|
1559 |
|
1560 |
+
#: defaults.php:175
|
1561 |
+
msgid "User deleted tag"
|
|
|
|
|
|
|
|
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: defaults.php:175
|
1565 |
+
msgid "Deleted the tag %TagName%."
|
1566 |
msgstr ""
|
1567 |
|
1568 |
+
#: defaults.php:176
|
1569 |
+
msgid "User renamed tag"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: defaults.php:176
|
1573 |
+
msgid "Renamed a tag from %old_name% to %new_name%. View the tag: %TagLink%."
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: defaults.php:177
|
1577 |
+
msgid "User changed tag slug"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: defaults.php:177
|
1581 |
msgid ""
|
1582 |
+
"Changed the slug of tag %tag% from %old_slug% to %new_slug%. View the tag: "
|
1583 |
+
"%TagLink%."
|
|
|
1584 |
msgstr ""
|
1585 |
|
1586 |
+
#: defaults.php:178
|
1587 |
+
msgid "User changed tag description"
|
1588 |
msgstr ""
|
1589 |
|
1590 |
+
#: defaults.php:178
|
1591 |
msgid ""
|
1592 |
+
"Changed the description of the tag %tag%%ReportText%.%ChangeText% View the "
|
1593 |
+
"tag: %TagLink%."
|
|
|
|
|
|
|
|
|
1594 |
msgstr ""
|
1595 |
|
1596 |
+
#: defaults.php:184
|
1597 |
+
msgid "Comments"
|
|
|
|
|
|
|
1598 |
msgstr ""
|
1599 |
|
1600 |
+
#: defaults.php:185
|
1601 |
+
msgid "User approved a comment"
|
1602 |
msgstr ""
|
1603 |
|
1604 |
+
#: defaults.php:185
|
1605 |
+
msgid ""
|
1606 |
+
"Approved the comment posted in response to the post %PostTitle% by %Author% "
|
1607 |
+
"on %CommentLink%."
|
1608 |
msgstr ""
|
1609 |
|
1610 |
+
#: defaults.php:186
|
1611 |
+
msgid "User unapproved a comment"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: defaults.php:186
|
1615 |
msgid ""
|
1616 |
+
"Unapproved the comment posted in response to the post %PostTitle% by %Author"
|
1617 |
+
"% on %CommentLink%."
|
1618 |
msgstr ""
|
1619 |
|
1620 |
+
#: defaults.php:187
|
1621 |
+
msgid "User replied to a comment"
|
|
|
|
|
1622 |
msgstr ""
|
1623 |
|
1624 |
+
#: defaults.php:187
|
1625 |
msgid ""
|
1626 |
+
"Replied to the comment posted in response to the post %PostTitle% by %Author"
|
1627 |
+
"% on %CommentLink%."
|
|
|
1628 |
msgstr ""
|
1629 |
|
1630 |
+
#: defaults.php:188
|
1631 |
+
msgid "User edited a comment"
|
1632 |
msgstr ""
|
1633 |
|
1634 |
+
#: defaults.php:188
|
1635 |
msgid ""
|
1636 |
+
"Edited a comment posted in response to the post %PostTitle% by %Author% on "
|
1637 |
+
"%CommentLink%."
|
1638 |
msgstr ""
|
1639 |
|
1640 |
+
#: defaults.php:189
|
1641 |
+
msgid "User marked a comment as Spam"
|
1642 |
msgstr ""
|
1643 |
|
1644 |
+
#: defaults.php:189
|
1645 |
msgid ""
|
1646 |
+
"Marked the comment posted in response to the post %PostTitle% by %Author% on "
|
1647 |
+
"%CommentLink% as Spam."
|
|
|
1648 |
msgstr ""
|
1649 |
|
1650 |
+
#: defaults.php:190
|
1651 |
+
msgid "User marked a comment as Not Spam"
|
1652 |
msgstr ""
|
1653 |
|
1654 |
+
#: defaults.php:190
|
1655 |
+
msgid ""
|
1656 |
+
"Marked the comment posted in response to the post %PostTitle% by %Author% on "
|
1657 |
+
"%CommentLink% as Not Spam."
|
1658 |
msgstr ""
|
1659 |
|
1660 |
+
#: defaults.php:191
|
1661 |
+
msgid "User moved a comment to trash"
|
1662 |
msgstr ""
|
1663 |
|
1664 |
+
#: defaults.php:191
|
1665 |
msgid ""
|
1666 |
+
"Moved the comment posted in response to the post %PostTitle% by %Author% on "
|
1667 |
+
"%Date% to trash."
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: defaults.php:192
|
1671 |
+
msgid "User restored a comment from the trash"
|
1672 |
msgstr ""
|
1673 |
|
1674 |
+
#: defaults.php:192
|
1675 |
+
msgid ""
|
1676 |
+
"Restored the comment posted in response to the post %PostTitle% by %Author% "
|
1677 |
+
"on %CommentLink% from the trash."
|
1678 |
msgstr ""
|
1679 |
|
1680 |
+
#: defaults.php:193
|
1681 |
+
msgid "User permanently deleted a comment"
|
1682 |
msgstr ""
|
1683 |
|
1684 |
+
#: defaults.php:193
|
1685 |
msgid ""
|
1686 |
+
"Permanently deleted the comment posted in response to the post %PostTitle% "
|
1687 |
+
"by %Author% on %Date%."
|
|
|
|
|
|
|
1688 |
msgstr ""
|
1689 |
|
1690 |
+
#: defaults.php:194
|
1691 |
+
msgid "User posted a comment"
|
1692 |
msgstr ""
|
1693 |
|
1694 |
+
#: defaults.php:194 defaults.php:195
|
1695 |
+
msgid "%CommentMsg% on %CommentLink%."
|
1696 |
msgstr ""
|
1697 |
|
1698 |
+
#: defaults.php:195
|
1699 |
+
msgid "Visitor posted a comment"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1700 |
msgstr ""
|
1701 |
|
1702 |
+
#: defaults.php:207
|
1703 |
+
msgid "User modified a draft blog post"
|
1704 |
msgstr ""
|
1705 |
|
1706 |
+
#: defaults.php:207
|
1707 |
+
msgid "Modified the draft post with the %PostTitle%. %EditorLinkPost%."
|
1708 |
msgstr ""
|
1709 |
|
1710 |
+
#: defaults.php:208
|
1711 |
+
msgid "User created a new post with custom post type and saved it as draft"
|
1712 |
msgstr ""
|
1713 |
|
1714 |
+
#: defaults.php:208
|
1715 |
+
msgid ""
|
1716 |
+
"Created a new custom post called %PostTitle% of type %PostType%. "
|
1717 |
+
"%EditorLinkPost%."
|
1718 |
msgstr ""
|
1719 |
|
1720 |
+
#: defaults.php:209
|
1721 |
+
msgid "User published a post with custom post type"
|
1722 |
msgstr ""
|
1723 |
|
1724 |
+
#: defaults.php:209
|
1725 |
+
msgid ""
|
1726 |
+
"Published a custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
|
1727 |
+
"%. %EditorLinkPost%."
|
1728 |
msgstr ""
|
1729 |
|
1730 |
+
#: defaults.php:210
|
1731 |
+
msgid "User modified a post with custom post type"
|
1732 |
msgstr ""
|
1733 |
|
1734 |
+
#: defaults.php:210
|
1735 |
+
msgid ""
|
1736 |
+
"Modified the custom post %PostTitle% of type %PostType%. Post URL is %PostUrl"
|
1737 |
+
"%. %EditorLinkPost%."
|
1738 |
msgstr ""
|
1739 |
|
1740 |
+
#: defaults.php:211
|
1741 |
+
msgid "User modified a draft post with custom post type"
|
1742 |
msgstr ""
|
1743 |
|
1744 |
+
#: defaults.php:211
|
1745 |
+
msgid ""
|
1746 |
+
"Modified the draft custom post %PostTitle% of type is %PostType%. "
|
1747 |
+
"%EditorLinkPost%."
|
1748 |
msgstr ""
|
1749 |
|
1750 |
+
#: defaults.php:212
|
1751 |
+
msgid "User permanently deleted post with custom post type"
|
1752 |
msgstr ""
|
1753 |
|
1754 |
+
#: defaults.php:212
|
1755 |
+
msgid "Permanently Deleted the custom post %PostTitle% of type %PostType%."
|
1756 |
msgstr ""
|
1757 |
|
1758 |
+
#: defaults.php:213
|
1759 |
+
msgid "User moved post with custom post type to trash"
|
1760 |
msgstr ""
|
1761 |
|
1762 |
+
#: defaults.php:213
|
1763 |
+
msgid ""
|
1764 |
+
"Moved the custom post %PostTitle% of type %PostType% to trash. Post URL was "
|
1765 |
+
"%PostUrl%."
|
1766 |
msgstr ""
|
1767 |
|
1768 |
+
#: defaults.php:214
|
1769 |
+
msgid "User restored post with custom post type from trash"
|
1770 |
msgstr ""
|
1771 |
|
1772 |
+
#: defaults.php:214
|
1773 |
+
msgid ""
|
1774 |
+
"The custom post %PostTitle% of type %PostType% has been restored from trash. "
|
1775 |
+
"%EditorLinkPost%."
|
1776 |
msgstr ""
|
1777 |
|
1778 |
+
#: defaults.php:215
|
1779 |
+
msgid "User changed the category of a post with custom post type"
|
1780 |
msgstr ""
|
1781 |
|
1782 |
+
#: defaults.php:215
|
1783 |
+
msgid ""
|
1784 |
+
"Changed the category(ies) of the custom post %PostTitle% of type %PostType% "
|
1785 |
+
"from %OldCategories% to %NewCategories%. %EditorLinkPost%."
|
1786 |
msgstr ""
|
1787 |
|
1788 |
+
#: defaults.php:216
|
1789 |
+
msgid "User changed the URL of a post with custom post type"
|
1790 |
msgstr ""
|
1791 |
|
1792 |
+
#: defaults.php:216
|
1793 |
+
msgid ""
|
1794 |
+
"Changed the URL of the custom post %PostTitle% of type %PostType% from "
|
1795 |
+
"%OldUrl% to %NewUrl%. %EditorLinkPost%."
|
1796 |
msgstr ""
|
1797 |
|
1798 |
+
#: defaults.php:217
|
1799 |
+
msgid "User changed the author or post with custom post type"
|
1800 |
msgstr ""
|
1801 |
|
1802 |
+
#: defaults.php:217
|
1803 |
+
msgid ""
|
1804 |
+
"Changed the author of custom post %PostTitle% of type %PostType% from "
|
1805 |
+
"%OldAuthor% to %NewAuthor%. %EditorLinkPost%."
|
1806 |
msgstr ""
|
1807 |
|
1808 |
+
#: defaults.php:218
|
1809 |
+
msgid "User changed the status of post with custom post type"
|
1810 |
msgstr ""
|
1811 |
|
1812 |
+
#: defaults.php:218
|
1813 |
+
msgid ""
|
1814 |
+
"Changed the status of custom post %PostTitle% of type %PostType% from "
|
1815 |
+
"%OldStatus% to %NewStatus%. %EditorLinkPost%."
|
1816 |
msgstr ""
|
1817 |
|
1818 |
+
#: defaults.php:219
|
1819 |
+
msgid "User changed the visibility of a post with custom post type"
|
1820 |
msgstr ""
|
1821 |
|
1822 |
+
#: defaults.php:219
|
1823 |
+
msgid ""
|
1824 |
+
"Changed the visibility of the custom post %PostTitle% of type %PostType% "
|
1825 |
+
"from %OldVisibility% to %NewVisibility%. %EditorLinkPost%."
|
1826 |
msgstr ""
|
1827 |
|
1828 |
+
#: defaults.php:220
|
1829 |
+
msgid "User changed the date of post with custom post type"
|
1830 |
msgstr ""
|
1831 |
|
1832 |
+
#: defaults.php:220
|
1833 |
+
msgid ""
|
1834 |
+
"Changed the date of the custom post %PostTitle% of type %PostType% from "
|
1835 |
+
"%OldDate% to %NewDate%. %EditorLinkPost%."
|
1836 |
msgstr ""
|
1837 |
|
1838 |
+
#: defaults.php:221
|
1839 |
+
msgid "User created a custom field for a custom post type"
|
1840 |
msgstr ""
|
1841 |
|
1842 |
+
#: defaults.php:221
|
1843 |
+
msgid ""
|
1844 |
+
"Created a new custom field %MetaKey% with value %MetaValue% in custom post "
|
1845 |
+
"%PostTitle% of type %PostType%. %EditorLinkPost%.<br>%MetaLink%."
|
1846 |
msgstr ""
|
1847 |
|
1848 |
+
#: defaults.php:222
|
1849 |
+
msgid "User updated a custom field for a custom post type"
|
1850 |
msgstr ""
|
1851 |
|
1852 |
+
#: defaults.php:222
|
1853 |
+
msgid ""
|
1854 |
+
"Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
|
1855 |
+
"%MetaValueNew% in custom post %PostTitle% of type %PostType% %EditorLinkPost"
|
1856 |
+
"%.<br>%MetaLink%."
|
1857 |
msgstr ""
|
1858 |
|
1859 |
+
#: defaults.php:223
|
1860 |
+
msgid "User deleted a custom field from a custom post type"
|
1861 |
msgstr ""
|
1862 |
|
1863 |
+
#: defaults.php:223
|
1864 |
+
msgid ""
|
1865 |
+
"Deleted the custom field %MetaKey% with id %MetaID% from custom post "
|
1866 |
+
"%PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
|
1867 |
msgstr ""
|
1868 |
|
1869 |
+
#: defaults.php:224
|
1870 |
+
msgid "User updated a custom field name for a custom post type"
|
1871 |
msgstr ""
|
1872 |
|
1873 |
+
#: defaults.php:224
|
1874 |
+
msgid ""
|
1875 |
+
"Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in custom "
|
1876 |
+
"post %PostTitle% of type %PostType% %EditorLinkPost%.<br>%MetaLink%."
|
1877 |
msgstr ""
|
1878 |
|
1879 |
+
#: defaults.php:225
|
1880 |
+
msgid "User modified content for a published custom post type"
|
|
|
|
|
1881 |
msgstr ""
|
1882 |
|
1883 |
+
#: defaults.php:225
|
1884 |
msgid ""
|
1885 |
+
"Modified the content of the published custom post type %PostTitle%. Post URL "
|
1886 |
+
"is %PostUrl%.%EditorLinkPost%."
|
|
|
1887 |
msgstr ""
|
1888 |
|
1889 |
+
#: defaults.php:226
|
1890 |
+
msgid "User modified content for a draft post"
|
1891 |
msgstr ""
|
1892 |
|
1893 |
+
#: defaults.php:226
|
1894 |
+
msgid ""
|
1895 |
+
"Modified the content of the draft post %PostTitle%.%RevisionLink% "
|
1896 |
+
"%EditorLinkPost%."
|
1897 |
msgstr ""
|
1898 |
|
1899 |
+
#: defaults.php:227
|
1900 |
+
msgid "User modified content for a draft custom post type"
|
1901 |
msgstr ""
|
1902 |
|
1903 |
+
#: defaults.php:227
|
1904 |
msgid ""
|
1905 |
+
"Modified the content of the draft custom post type %PostTitle%."
|
1906 |
+
"%EditorLinkPost%."
|
1907 |
msgstr ""
|
1908 |
|
1909 |
+
#: defaults.php:228
|
1910 |
+
msgid "User modified content of a post"
|
1911 |
msgstr ""
|
1912 |
|
1913 |
+
#: defaults.php:228
|
1914 |
msgid ""
|
1915 |
+
"Modified the content of post %PostTitle% which is submitted for review."
|
1916 |
+
"%RevisionLink% %EditorLinkPost%."
|
1917 |
msgstr ""
|
1918 |
|
1919 |
+
#: defaults.php:229
|
1920 |
+
msgid "User scheduled a custom post type"
|
|
|
|
|
|
|
1921 |
msgstr ""
|
1922 |
|
1923 |
+
#: defaults.php:229
|
1924 |
+
msgid ""
|
1925 |
+
"Scheduled the custom post type %PostTitle% to be published %PublishingDate%. "
|
1926 |
+
"%EditorLinkPost%."
|
1927 |
msgstr ""
|
1928 |
|
1929 |
+
#: defaults.php:230
|
1930 |
+
msgid "User changed title of a custom post type"
|
1931 |
msgstr ""
|
1932 |
|
1933 |
+
#: defaults.php:230
|
1934 |
+
msgid ""
|
1935 |
+
"Changed the title of the custom post %OldTitle% to %NewTitle%. "
|
1936 |
+
"%EditorLinkPost%."
|
1937 |
msgstr ""
|
1938 |
|
1939 |
+
#: defaults.php:231
|
1940 |
+
msgid "User opened a custom post type in the editor"
|
1941 |
msgstr ""
|
1942 |
|
1943 |
+
#: defaults.php:231
|
1944 |
msgid ""
|
1945 |
+
"Opened the custom post %PostTitle% of type %PostType% in the editor. View "
|
1946 |
+
"the post: %EditorLinkPost%."
|
1947 |
msgstr ""
|
1948 |
|
1949 |
+
#: defaults.php:232
|
1950 |
+
msgid "User viewed a custom post type"
|
|
|
|
|
|
|
|
|
|
|
|
|
1951 |
msgstr ""
|
1952 |
|
1953 |
+
#: defaults.php:232
|
1954 |
msgid ""
|
1955 |
+
"Viewed the custom post %PostTitle% of type %PostType%. View the post: "
|
1956 |
+
"%PostUrl%."
|
|
|
1957 |
msgstr ""
|
1958 |
|
1959 |
+
#: defaults.php:243
|
1960 |
+
msgid "Pages"
|
1961 |
msgstr ""
|
1962 |
|
1963 |
+
#: defaults.php:244
|
1964 |
+
msgid "User created a new WordPress page and saved it as draft"
|
1965 |
msgstr ""
|
1966 |
|
1967 |
+
#: defaults.php:244
|
1968 |
msgid ""
|
1969 |
+
"Created a new page called %PostTitle% and saved it as draft. %EditorLinkPage"
|
1970 |
+
"%."
|
1971 |
msgstr ""
|
1972 |
|
1973 |
+
#: defaults.php:245
|
1974 |
+
msgid "User published a WordPress page"
|
|
|
|
|
1975 |
msgstr ""
|
1976 |
|
1977 |
+
#: defaults.php:245
|
1978 |
msgid ""
|
1979 |
+
"Published a page called %PostTitle%. Page URL is %PostUrl%. %EditorLinkPage%."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1980 |
msgstr ""
|
1981 |
|
1982 |
+
#: defaults.php:246
|
1983 |
+
msgid "User modified a published WordPress page"
|
1984 |
msgstr ""
|
1985 |
|
1986 |
+
#: defaults.php:246
|
1987 |
msgid ""
|
1988 |
+
"Modified the published page %PostTitle%. Page URL is %PostUrl%. "
|
1989 |
+
"%EditorLinkPage%."
|
1990 |
msgstr ""
|
1991 |
|
1992 |
+
#: defaults.php:247
|
1993 |
+
msgid "User modified a draft WordPress page"
|
|
|
|
|
1994 |
msgstr ""
|
1995 |
|
1996 |
+
#: defaults.php:247
|
1997 |
+
msgid ""
|
1998 |
+
"Modified the draft page %PostTitle%. Page ID is %PostID%. %EditorLinkPage%."
|
1999 |
msgstr ""
|
2000 |
|
2001 |
+
#: defaults.php:248
|
2002 |
+
msgid "User permanently deleted a page from the trash"
|
2003 |
msgstr ""
|
2004 |
|
2005 |
+
#: defaults.php:248
|
2006 |
+
msgid "Permanently deleted the page %PostTitle%."
|
2007 |
msgstr ""
|
2008 |
|
2009 |
+
#: defaults.php:249
|
2010 |
+
msgid "User moved WordPress page to the trash"
|
2011 |
msgstr ""
|
2012 |
|
2013 |
+
#: defaults.php:249
|
2014 |
+
msgid "Moved the page %PostTitle% to trash. Page URL was %PostUrl%."
|
|
|
|
|
|
|
|
|
2015 |
msgstr ""
|
2016 |
|
2017 |
+
#: defaults.php:250
|
2018 |
+
msgid "User restored a WordPress page from trash"
|
2019 |
msgstr ""
|
2020 |
|
2021 |
+
#: defaults.php:250
|
2022 |
+
msgid "Page %PostTitle% has been restored from trash. %EditorLinkPage%."
|
2023 |
msgstr ""
|
2024 |
|
2025 |
+
#: defaults.php:251
|
2026 |
+
msgid "User changed page URL"
|
2027 |
msgstr ""
|
2028 |
|
2029 |
+
#: defaults.php:251
|
2030 |
+
msgid ""
|
2031 |
+
"Changed the URL of the page %PostTitle% from %OldUrl% to %NewUrl%. "
|
2032 |
+
"%EditorLinkPage%."
|
2033 |
msgstr ""
|
2034 |
|
2035 |
+
#: defaults.php:252
|
2036 |
+
msgid "User changed page author"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
+
#: defaults.php:252
|
2040 |
msgid ""
|
2041 |
+
"Changed the author of the page %PostTitle% from %OldAuthor% to %NewAuthor%. "
|
2042 |
+
"%EditorLinkPage%."
|
|
|
|
|
|
|
|
|
2043 |
msgstr ""
|
2044 |
|
2045 |
+
#: defaults.php:253
|
2046 |
+
msgid "User changed page status"
|
|
|
2047 |
msgstr ""
|
2048 |
|
2049 |
+
#: defaults.php:253
|
2050 |
+
msgid ""
|
2051 |
+
"Changed the status of the page %PostTitle% from %OldStatus% to %NewStatus%. "
|
2052 |
+
"%EditorLinkPage%."
|
2053 |
msgstr ""
|
2054 |
|
2055 |
+
#: defaults.php:254
|
2056 |
+
msgid "User changed the visibility of a page post"
|
|
|
2057 |
msgstr ""
|
2058 |
|
2059 |
+
#: defaults.php:254
|
2060 |
+
msgid ""
|
2061 |
+
"Changed the visibility of the page %PostTitle% from %OldVisibility% to "
|
2062 |
+
"%NewVisibility%. %EditorLinkPage%."
|
2063 |
msgstr ""
|
2064 |
|
2065 |
+
#: defaults.php:255
|
2066 |
+
msgid "User changed the date of a page post"
|
|
|
|
|
2067 |
msgstr ""
|
2068 |
|
2069 |
+
#: defaults.php:255
|
2070 |
+
msgid ""
|
2071 |
+
"Changed the date of the page %PostTitle% from %OldDate% to %NewDate%. "
|
2072 |
+
"%EditorLinkPage%."
|
2073 |
msgstr ""
|
2074 |
|
2075 |
+
#: defaults.php:256
|
2076 |
+
msgid "User created a custom field for a page"
|
|
|
2077 |
msgstr ""
|
2078 |
|
2079 |
+
#: defaults.php:256
|
2080 |
+
msgid ""
|
2081 |
+
"Created a new custom field called %MetaKey% with value %MetaValue% in the "
|
2082 |
+
"page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
|
2083 |
msgstr ""
|
2084 |
|
2085 |
+
#: defaults.php:257
|
2086 |
+
msgid "User updated a custom field value for a page"
|
2087 |
msgstr ""
|
2088 |
|
2089 |
+
#: defaults.php:257
|
2090 |
+
msgid ""
|
2091 |
+
"Modified the value of the custom field %MetaKey% from %MetaValueOld% to "
|
2092 |
+
"%MetaValueNew% in the page %PostTitle% %EditorLinkPage%.<br>%MetaLink%."
|
2093 |
msgstr ""
|
2094 |
|
2095 |
+
#: defaults.php:258
|
2096 |
+
msgid "User deleted a custom field from a page"
|
2097 |
msgstr ""
|
2098 |
|
2099 |
+
#: defaults.php:258
|
2100 |
msgid ""
|
2101 |
+
"Deleted the custom field %MetaKey% with id %MetaID% from page %PostTitle% "
|
2102 |
+
"%EditorLinkPage%.<br>%MetaLink%."
|
2103 |
+
msgstr ""
|
2104 |
+
|
2105 |
+
#: defaults.php:259
|
2106 |
+
msgid "User updated a custom field name for a page"
|
2107 |
msgstr ""
|
2108 |
|
2109 |
+
#: defaults.php:259
|
2110 |
msgid ""
|
2111 |
+
"Changed the custom field name from %MetaKeyOld% to %MetaKeyNew% in the page "
|
2112 |
+
"%PostTitle% %EditorLinkPage%.<br>%MetaLink%."
|
2113 |
msgstr ""
|
2114 |
|
2115 |
+
#: defaults.php:260
|
2116 |
+
msgid "User modified content for a published page"
|
2117 |
msgstr ""
|
2118 |
|
2119 |
+
#: defaults.php:260
|
2120 |
msgid ""
|
2121 |
+
"Modified the content of the published page %PostTitle%. Page URL is %PostUrl"
|
2122 |
+
"%. %RevisionLink% %EditorLinkPage%."
|
2123 |
msgstr ""
|
2124 |
|
2125 |
+
#: defaults.php:261
|
2126 |
+
msgid "User modified content for a draft page"
|
2127 |
msgstr ""
|
2128 |
|
2129 |
+
#: defaults.php:261
|
2130 |
msgid ""
|
2131 |
+
"Modified the content of draft page %PostTitle%.%RevisionLink% %EditorLinkPage"
|
2132 |
+
"%."
|
2133 |
msgstr ""
|
2134 |
|
2135 |
+
#: defaults.php:262
|
2136 |
+
msgid "User scheduled a page"
|
2137 |
msgstr ""
|
2138 |
|
2139 |
+
#: defaults.php:262
|
2140 |
msgid ""
|
2141 |
+
"Scheduled the page %PostTitle% to be published %PublishingDate%. "
|
2142 |
+
"%EditorLinkPage%."
|
2143 |
msgstr ""
|
2144 |
|
2145 |
+
#: defaults.php:263
|
2146 |
+
msgid "User changed title of a page"
|
2147 |
msgstr ""
|
2148 |
|
2149 |
+
#: defaults.php:263
|
2150 |
+
msgid ""
|
2151 |
+
"Changed the title of the page %OldTitle% to %NewTitle%. %EditorLinkPage%."
|
2152 |
msgstr ""
|
2153 |
|
2154 |
+
#: defaults.php:264
|
2155 |
+
msgid "User opened a page in the editor"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2156 |
msgstr ""
|
2157 |
|
2158 |
+
#: defaults.php:264
|
2159 |
msgid ""
|
2160 |
+
"Opened the page %PostTitle% in the editor. View the page: %EditorLinkPage%."
|
2161 |
msgstr ""
|
2162 |
|
2163 |
+
#: defaults.php:265
|
2164 |
+
msgid "User viewed a page"
|
2165 |
msgstr ""
|
2166 |
|
2167 |
+
#: defaults.php:265
|
2168 |
+
msgid "Viewed the page %PostTitle%. View the page: %PostUrl%."
|
|
|
|
|
2169 |
msgstr ""
|
2170 |
|
2171 |
+
#: defaults.php:266
|
2172 |
+
msgid "User disabled Comments/Trackbacks and Pingbacks on a draft post"
|
2173 |
msgstr ""
|
2174 |
|
2175 |
+
#: defaults.php:266
|
2176 |
msgid ""
|
2177 |
+
"Disabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
|
2178 |
msgstr ""
|
2179 |
|
2180 |
+
#: defaults.php:267
|
2181 |
+
msgid "User enabled Comments/Trackbacks and Pingbacks on a draft post"
|
2182 |
msgstr ""
|
2183 |
|
2184 |
+
#: defaults.php:267
|
2185 |
+
msgid "Enabled %Type% on the draft post %PostTitle%. View the post: %PostUrl%."
|
|
|
|
|
2186 |
msgstr ""
|
2187 |
|
2188 |
+
#: defaults.php:268
|
2189 |
+
msgid "User disabled Comments/Trackbacks and Pingbacks on a published page"
|
2190 |
msgstr ""
|
2191 |
|
2192 |
+
#: defaults.php:268
|
2193 |
msgid ""
|
2194 |
+
"Disabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2195 |
msgstr ""
|
2196 |
|
2197 |
+
#: defaults.php:269
|
2198 |
+
msgid "User enabled Comments/Trackbacks and Pingbacks on a published page"
|
2199 |
msgstr ""
|
2200 |
|
2201 |
+
#: defaults.php:269
|
2202 |
msgid ""
|
2203 |
+
"Enabled %Type% on the published page %PostTitle%. View the page: %PostUrl%."
|
|
|
2204 |
msgstr ""
|
2205 |
|
2206 |
+
#: defaults.php:270
|
2207 |
+
msgid "User disabled Comments/Trackbacks and Pingbacks on a draft page"
|
2208 |
msgstr ""
|
2209 |
|
2210 |
+
#: defaults.php:270
|
2211 |
msgid ""
|
2212 |
+
"Disabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
|
|
|
2213 |
msgstr ""
|
2214 |
|
2215 |
+
#: defaults.php:271
|
2216 |
+
msgid "User enabled Comments/Trackbacks and Pingbacks on a draft page"
|
2217 |
msgstr ""
|
2218 |
|
2219 |
+
#: defaults.php:271
|
2220 |
+
msgid "Enabled %Type% on the draft page %PostTitle%. View the page: %PostUrl%."
|
|
|
|
|
2221 |
msgstr ""
|
2222 |
|
2223 |
+
#: defaults.php:278
|
2224 |
+
msgid "WordPress & Multisite Management"
|
2225 |
msgstr ""
|
2226 |
|
2227 |
+
#: defaults.php:282
|
2228 |
+
msgid "Database"
|
|
|
|
|
2229 |
msgstr ""
|
2230 |
|
2231 |
+
#: defaults.php:283
|
2232 |
+
msgid "Plugin created tables"
|
2233 |
msgstr ""
|
2234 |
|
2235 |
+
#: defaults.php:283
|
2236 |
msgid ""
|
2237 |
+
"Plugin %Plugin->Name% created these tables in the database: %TableNames%."
|
|
|
2238 |
msgstr ""
|
2239 |
|
2240 |
+
#: defaults.php:284
|
2241 |
+
msgid "Plugin modified tables structure"
|
2242 |
msgstr ""
|
2243 |
|
2244 |
+
#: defaults.php:284
|
2245 |
msgid ""
|
2246 |
+
"Plugin %Plugin->Name% modified the structure of these database tables: "
|
2247 |
+
"%TableNames%."
|
2248 |
msgstr ""
|
2249 |
|
2250 |
+
#: defaults.php:285
|
2251 |
+
msgid "Plugin deleted tables"
|
2252 |
msgstr ""
|
2253 |
|
2254 |
+
#: defaults.php:285
|
2255 |
msgid ""
|
2256 |
+
"Plugin %Plugin->Name% deleted the following tables from the database: "
|
2257 |
+
"%TableNames%."
|
2258 |
msgstr ""
|
2259 |
|
2260 |
+
#: defaults.php:286
|
2261 |
+
msgid "Theme created tables"
|
2262 |
msgstr ""
|
2263 |
|
2264 |
+
#: defaults.php:286
|
2265 |
+
msgid "Theme %Theme->Name% created these tables in the database: %TableNames%."
|
|
|
|
|
2266 |
msgstr ""
|
2267 |
|
2268 |
+
#: defaults.php:287
|
2269 |
+
msgid "Theme modified tables structure"
|
2270 |
msgstr ""
|
2271 |
|
2272 |
+
#: defaults.php:287
|
2273 |
msgid ""
|
2274 |
+
"Theme %Theme->Name% modified the structure of these database tables: "
|
2275 |
+
"%TableNames%."
|
2276 |
msgstr ""
|
2277 |
|
2278 |
+
#: defaults.php:288
|
2279 |
+
msgid "Theme deleted tables"
|
2280 |
msgstr ""
|
2281 |
|
2282 |
+
#: defaults.php:288
|
2283 |
msgid ""
|
2284 |
+
"Theme %Theme->Name% deleted the following tables from the database: "
|
2285 |
+
"%TableNames%."
|
2286 |
msgstr ""
|
2287 |
|
2288 |
+
#: defaults.php:289
|
2289 |
+
msgid "Unknown component created tables"
|
2290 |
msgstr ""
|
2291 |
|
2292 |
+
#: defaults.php:289
|
2293 |
msgid ""
|
2294 |
+
"An unknown component created these tables in the database: %TableNames%."
|
|
|
2295 |
msgstr ""
|
2296 |
|
2297 |
+
#: defaults.php:290
|
2298 |
+
msgid "Unknown component modified tables structure"
|
2299 |
msgstr ""
|
2300 |
|
2301 |
+
#: defaults.php:290
|
2302 |
msgid ""
|
2303 |
+
"An unknown component modified the structure of these database tables: "
|
2304 |
+
"%TableNames%."
|
2305 |
msgstr ""
|
2306 |
|
2307 |
+
#: defaults.php:291
|
2308 |
+
msgid "Unknown component deleted tables"
|
2309 |
msgstr ""
|
2310 |
|
2311 |
+
#: defaults.php:291
|
2312 |
msgid ""
|
2313 |
+
"An unknown component deleted the following tables from the database: "
|
2314 |
+
"%TableNames%."
|
|
|
|
|
|
|
2315 |
msgstr ""
|
2316 |
|
2317 |
+
#: defaults.php:297
|
2318 |
+
msgid "MultiSite"
|
|
|
2319 |
msgstr ""
|
2320 |
|
2321 |
+
#: defaults.php:298
|
2322 |
+
msgid "User granted Super Admin privileges"
|
2323 |
msgstr ""
|
2324 |
|
2325 |
+
#: defaults.php:298
|
2326 |
+
msgid "Granted Super Admin privileges to %TargetUsername%."
|
2327 |
msgstr ""
|
2328 |
|
2329 |
+
#: defaults.php:299
|
2330 |
+
msgid "User revoked from Super Admin privileges"
|
2331 |
msgstr ""
|
2332 |
|
2333 |
+
#: defaults.php:299
|
2334 |
+
msgid "Revoked Super Admin privileges from %TargetUsername%."
|
|
|
2335 |
msgstr ""
|
2336 |
|
2337 |
+
#: defaults.php:300
|
2338 |
+
msgid "Existing user added to a site"
|
2339 |
msgstr ""
|
2340 |
|
2341 |
+
#: defaults.php:300
|
2342 |
+
msgid ""
|
2343 |
+
"Added the existing user %TargetUsername% with %TargetUserRole% role to site "
|
2344 |
+
"%SiteName%."
|
2345 |
msgstr ""
|
2346 |
|
2347 |
+
#: defaults.php:301
|
2348 |
+
msgid "User removed from site"
|
2349 |
msgstr ""
|
2350 |
|
2351 |
+
#: defaults.php:301
|
2352 |
msgid ""
|
2353 |
+
"Removed the user %TargetUsername% with role %TargetUserRole% from %SiteName% "
|
2354 |
+
"site."
|
2355 |
msgstr ""
|
2356 |
|
2357 |
+
#: defaults.php:302
|
2358 |
+
msgid "New network user created"
|
2359 |
msgstr ""
|
2360 |
|
2361 |
+
#: defaults.php:302
|
2362 |
+
msgid "Created a new network user %NewUserData->Username%."
|
|
|
2363 |
msgstr ""
|
2364 |
|
2365 |
+
#: defaults.php:303
|
2366 |
+
msgid "The forum role of a user was changed by another WordPress user"
|
2367 |
msgstr ""
|
2368 |
|
2369 |
+
#: defaults.php:303
|
2370 |
msgid ""
|
2371 |
+
"Change the forum role of the user %TargetUsername% from %OldRole% to %NewRole"
|
2372 |
+
"% by %UserChanger%."
|
2373 |
msgstr ""
|
2374 |
|
2375 |
+
#: defaults.php:304
|
2376 |
+
msgid "New site added on the network"
|
2377 |
msgstr ""
|
2378 |
|
2379 |
+
#: defaults.php:304
|
2380 |
+
msgid "Added the site %SiteName% to the network."
|
2381 |
msgstr ""
|
2382 |
|
2383 |
+
#: defaults.php:305
|
2384 |
+
msgid "Existing site archived"
|
2385 |
msgstr ""
|
2386 |
|
2387 |
+
#: defaults.php:305
|
2388 |
+
msgid "Archived the site %SiteName%."
|
2389 |
msgstr ""
|
2390 |
|
2391 |
+
#: defaults.php:306
|
2392 |
+
msgid "Archived site has been unarchived"
|
2393 |
msgstr ""
|
2394 |
|
2395 |
+
#: defaults.php:306
|
2396 |
+
msgid "Unarchived the site %SiteName%."
|
2397 |
msgstr ""
|
2398 |
|
2399 |
+
#: defaults.php:307
|
2400 |
+
msgid "Deactivated site has been activated"
|
2401 |
msgstr ""
|
2402 |
|
2403 |
+
#: defaults.php:307
|
2404 |
+
msgid "Activated the site %SiteName%."
|
2405 |
msgstr ""
|
2406 |
|
2407 |
+
#: defaults.php:308
|
2408 |
+
msgid "Site has been deactivated"
|
2409 |
msgstr ""
|
2410 |
|
2411 |
+
#: defaults.php:308
|
2412 |
+
msgid "Deactivated the site %SiteName%."
|
2413 |
msgstr ""
|
2414 |
|
2415 |
+
#: defaults.php:309
|
2416 |
+
msgid "Existing site deleted from network"
|
2417 |
msgstr ""
|
2418 |
|
2419 |
+
#: defaults.php:309
|
2420 |
+
msgid "Deleted the site %SiteName%."
|
|
|
2421 |
msgstr ""
|
2422 |
|
2423 |
+
#: defaults.php:310
|
2424 |
+
msgid "Activated theme on network"
|
2425 |
msgstr ""
|
2426 |
|
2427 |
+
#: defaults.php:310
|
2428 |
msgid ""
|
2429 |
+
"Network activated the theme %Theme->Name% installed in %Theme-"
|
2430 |
+
">get_template_directory%."
|
2431 |
msgstr ""
|
2432 |
|
2433 |
+
#: defaults.php:311
|
2434 |
+
msgid "Deactivated theme from network"
|
2435 |
msgstr ""
|
2436 |
|
2437 |
+
#: defaults.php:311
|
2438 |
msgid ""
|
2439 |
+
"Network deactivated the theme %Theme->Name% installed in %Theme-"
|
2440 |
+
">get_template_directory%."
|
2441 |
msgstr ""
|
2442 |
|
2443 |
+
#: defaults.php:317
|
2444 |
+
msgid "Plugins & Themes"
|
2445 |
+
msgstr ""
|
2446 |
+
|
2447 |
+
#: defaults.php:318
|
2448 |
msgid "User installed a plugin"
|
2449 |
msgstr ""
|
2450 |
|
2451 |
+
#: defaults.php:318
|
2452 |
msgid "Installed the plugin %Plugin->Name% in %Plugin->plugin_dir_path%."
|
2453 |
msgstr ""
|
2454 |
|
2455 |
+
#: defaults.php:319
|
2456 |
msgid "User activated a WordPress plugin"
|
2457 |
msgstr ""
|
2458 |
|
2459 |
+
#: defaults.php:319
|
2460 |
msgid "Activated the plugin %PluginData->Name% installed in %PluginFile%."
|
2461 |
msgstr ""
|
2462 |
|
2463 |
+
#: defaults.php:320
|
2464 |
msgid "User deactivated a WordPress plugin"
|
2465 |
msgstr ""
|
2466 |
|
2467 |
+
#: defaults.php:320
|
2468 |
msgid "Deactivated the plugin %PluginData->Name% installed in %PluginFile%."
|
2469 |
msgstr ""
|
2470 |
|
2471 |
+
#: defaults.php:321
|
2472 |
msgid "User uninstalled a plugin"
|
2473 |
msgstr ""
|
2474 |
|
2475 |
+
#: defaults.php:321
|
2476 |
msgid ""
|
2477 |
"Uninstalled the plugin %PluginData->Name% which was installed in %PluginFile"
|
2478 |
"%."
|
2479 |
msgstr ""
|
2480 |
|
2481 |
+
#: defaults.php:322
|
2482 |
msgid "User upgraded a plugin"
|
2483 |
msgstr ""
|
2484 |
|
2485 |
+
#: defaults.php:322
|
2486 |
msgid "Upgraded the plugin %PluginData->Name% installed in %PluginFile%."
|
2487 |
msgstr ""
|
2488 |
|
2489 |
+
#: defaults.php:323
|
2490 |
+
msgid "User installed a theme"
|
2491 |
msgstr ""
|
2492 |
|
2493 |
+
#: defaults.php:323
|
2494 |
msgid ""
|
2495 |
+
"Installed the theme \"%Theme->Name%\" in %Theme->get_template_directory%."
|
2496 |
msgstr ""
|
2497 |
|
2498 |
+
#: defaults.php:324
|
2499 |
+
msgid "User activated a theme"
|
2500 |
msgstr ""
|
2501 |
|
2502 |
+
#: defaults.php:324
|
2503 |
msgid ""
|
2504 |
+
"Activated the theme \"%Theme->Name%\", installed in %Theme-"
|
2505 |
+
">get_template_directory%."
|
2506 |
msgstr ""
|
2507 |
|
2508 |
+
#: defaults.php:325
|
2509 |
+
msgid "User uninstalled a theme"
|
2510 |
msgstr ""
|
2511 |
|
2512 |
+
#: defaults.php:325
|
2513 |
msgid ""
|
2514 |
+
"Deleted the theme \"%Theme->Name%\" installed in %Theme-"
|
2515 |
+
">get_template_directory%."
|
2516 |
msgstr ""
|
2517 |
|
2518 |
+
#: defaults.php:326
|
2519 |
msgid "A plugin created a post"
|
2520 |
msgstr ""
|
2521 |
|
2522 |
+
#: defaults.php:326
|
2523 |
msgid ""
|
2524 |
"A plugin automatically created the following %PostType% called %PostTitle%. "
|
2525 |
"View the post: %EditorLinkPost%."
|
2526 |
msgstr ""
|
2527 |
|
2528 |
+
#: defaults.php:327
|
2529 |
+
msgid "A plugin created a page"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2530 |
msgstr ""
|
2531 |
|
2532 |
+
#: defaults.php:327
|
2533 |
+
msgid "A plugin automatically created the following page: %PostTitle%."
|
2534 |
msgstr ""
|
2535 |
|
2536 |
+
#: defaults.php:328
|
2537 |
+
msgid "A plugin created a custom post"
|
2538 |
msgstr ""
|
2539 |
|
2540 |
+
#: defaults.php:328
|
2541 |
+
msgid "A plugin automatically created the following custom post: %PostTitle%."
|
|
|
2542 |
msgstr ""
|
2543 |
|
2544 |
+
#: defaults.php:329
|
2545 |
+
msgid "A plugin deleted a post"
|
2546 |
msgstr ""
|
2547 |
|
2548 |
+
#: defaults.php:329
|
2549 |
msgid ""
|
2550 |
+
"A plugin automatically deleted the following %PostType% called %PostTitle%."
|
|
|
2551 |
msgstr ""
|
2552 |
|
2553 |
+
#: defaults.php:330
|
2554 |
+
msgid "A plugin deleted a page"
|
2555 |
msgstr ""
|
2556 |
|
2557 |
+
#: defaults.php:330
|
2558 |
+
msgid "A plugin automatically deleted the following page: %PostTitle%."
|
|
|
|
|
2559 |
msgstr ""
|
2560 |
|
2561 |
+
#: defaults.php:331
|
2562 |
+
msgid "A plugin deleted a custom post"
|
2563 |
msgstr ""
|
2564 |
|
2565 |
+
#: defaults.php:331
|
2566 |
+
msgid "A plugin automatically deleted the following custom post: %PostTitle%."
|
|
|
|
|
2567 |
msgstr ""
|
2568 |
|
2569 |
+
#: defaults.php:332
|
2570 |
+
msgid "User updated a theme"
|
2571 |
msgstr ""
|
2572 |
|
2573 |
+
#: defaults.php:332
|
2574 |
msgid ""
|
2575 |
+
"Updated the theme \"%Theme->Name%\" installed in %Theme-"
|
2576 |
">get_template_directory%."
|
2577 |
msgstr ""
|
2578 |
|
2579 |
+
#: defaults.php:333
|
2580 |
+
msgid "User changed a file using the theme editor"
|
2581 |
msgstr ""
|
2582 |
|
2583 |
+
#: defaults.php:333
|
2584 |
+
msgid "Modified %File% with the Theme Editor."
|
2585 |
msgstr ""
|
2586 |
|
2587 |
+
#: defaults.php:334
|
2588 |
+
msgid "User changed a file using the plugin editor"
|
2589 |
msgstr ""
|
2590 |
|
2591 |
+
#: defaults.php:334
|
2592 |
+
msgid "Modified %File% with the Plugin Editor."
|
|
|
|
|
2593 |
msgstr ""
|
2594 |
|
2595 |
+
#: defaults.php:335
|
2596 |
+
msgid "A plugin modified a page"
|
2597 |
msgstr ""
|
2598 |
|
2599 |
+
#: defaults.php:335
|
2600 |
+
msgid "Plugin modified the page %PostTitle%. View the page: %EditorLinkPage%."
|
|
|
|
|
2601 |
msgstr ""
|
2602 |
|
2603 |
+
#: defaults.php:336
|
2604 |
+
msgid "A plugin modified a custom post"
|
2605 |
msgstr ""
|
2606 |
|
2607 |
+
#: defaults.php:336
|
2608 |
msgid ""
|
2609 |
+
"Plugin modified the custom post %PostTitle%. View the post: %EditorLinkPost%."
|
|
|
|
|
|
|
|
|
|
|
2610 |
msgstr ""
|
2611 |
|
2612 |
+
#: defaults.php:342
|
2613 |
+
msgid "System Activity"
|
2614 |
msgstr ""
|
2615 |
|
2616 |
+
#: defaults.php:343
|
2617 |
msgid "Unknown Error"
|
2618 |
msgstr ""
|
2619 |
|
2620 |
+
#: defaults.php:343
|
2621 |
msgid "An unexpected error has occurred ."
|
2622 |
msgstr ""
|
2623 |
|
2624 |
+
#: defaults.php:344
|
2625 |
msgid "PHP error"
|
2626 |
msgstr ""
|
2627 |
|
2628 |
+
#: defaults.php:344 defaults.php:345 defaults.php:346 defaults.php:347
|
2629 |
+
#: defaults.php:348
|
2630 |
msgid "%Message%."
|
2631 |
msgstr ""
|
2632 |
|
2633 |
+
#: defaults.php:345
|
2634 |
msgid "PHP warning"
|
2635 |
msgstr ""
|
2636 |
|
2637 |
+
#: defaults.php:346
|
2638 |
msgid "PHP notice"
|
2639 |
msgstr ""
|
2640 |
|
2641 |
+
#: defaults.php:347
|
2642 |
msgid "PHP exception"
|
2643 |
msgstr ""
|
2644 |
|
2645 |
+
#: defaults.php:348
|
2646 |
msgid "PHP shutdown error"
|
2647 |
msgstr ""
|
2648 |
|
2649 |
+
#: defaults.php:349
|
2650 |
msgid "Events automatically pruned by system"
|
2651 |
msgstr ""
|
2652 |
|
2653 |
+
#: defaults.php:349
|
2654 |
+
msgid "System automatically deleted %EventCount% alert(s)."
|
2655 |
msgstr ""
|
2656 |
|
2657 |
+
#: defaults.php:350
|
2658 |
+
msgid "Option Anyone Can Register in WordPress settings changed"
|
2659 |
msgstr ""
|
2660 |
|
2661 |
+
#: defaults.php:350
|
2662 |
+
msgid "%NewValue% the option \"Anyone can register\"."
|
2663 |
msgstr ""
|
2664 |
|
2665 |
+
#: defaults.php:351
|
2666 |
+
msgid "New User Default Role changed"
|
2667 |
msgstr ""
|
2668 |
|
2669 |
+
#: defaults.php:351
|
2670 |
+
msgid "Changed the New User Default Role from %OldRole% to %NewRole%."
|
2671 |
msgstr ""
|
2672 |
|
2673 |
+
#: defaults.php:352
|
2674 |
+
msgid "WordPress Administrator Notification email changed"
|
2675 |
msgstr ""
|
2676 |
|
2677 |
+
#: defaults.php:352
|
2678 |
+
msgid ""
|
2679 |
+
"Changed the WordPress administrator notifications email address from "
|
2680 |
+
"%OldEmail% to %NewEmail%."
|
2681 |
msgstr ""
|
2682 |
|
2683 |
+
#: defaults.php:353
|
2684 |
+
msgid "WordPress was updated"
|
2685 |
msgstr ""
|
2686 |
|
2687 |
+
#: defaults.php:353
|
2688 |
+
msgid "Updated WordPress from version %OldVersion% to %NewVersion%."
|
2689 |
msgstr ""
|
2690 |
|
2691 |
+
#: defaults.php:354
|
2692 |
+
msgid "User changes the WordPress Permalinks"
|
2693 |
msgstr ""
|
2694 |
|
2695 |
+
#: defaults.php:354
|
2696 |
+
msgid "Changed the WordPress permalinks from %OldPattern% to %NewPattern%."
|
2697 |
msgstr ""
|
2698 |
|
2699 |
+
#: defaults.php:355
|
2700 |
+
msgid "User requests non-existing pages (404 Error Pages)"
|
2701 |
msgstr ""
|
2702 |
|
2703 |
+
#: defaults.php:355
|
2704 |
msgid ""
|
2705 |
+
"Has requested a non existing page (404 Error Pages) %Attempts% %Msg%. "
|
2706 |
+
"%LinkFile%"
|
|
|
2707 |
msgstr ""
|
2708 |
|
2709 |
+
#: defaults.php:356
|
2710 |
+
msgid "Website Visitor User requests non-existing pages (404 Error Pages)"
|
2711 |
msgstr ""
|
2712 |
|
2713 |
+
#: defaults.php:356
|
2714 |
msgid ""
|
2715 |
+
"Website Visitor Has requested a non existing page (404 Error Pages) %Attempts"
|
2716 |
+
"% %Msg%. %LinkFile%"
|
|
|
2717 |
msgstr ""
|
2718 |
|
2719 |
+
#: defaults.php:357
|
2720 |
+
msgid "Option WordPress Address (URL) in WordPress settings changed"
|
2721 |
msgstr ""
|
2722 |
|
2723 |
+
#: defaults.php:357
|
2724 |
+
msgid "Changed the WordPress address (URL) from %old_url% to %new_url%."
|
|
|
|
|
2725 |
msgstr ""
|
2726 |
|
2727 |
+
#: defaults.php:358
|
2728 |
+
msgid "Option Site Address (URL) in WordPress settings changed"
|
2729 |
msgstr ""
|
2730 |
|
2731 |
+
#: defaults.php:358
|
2732 |
+
msgid "Changed the site address (URL) from %old_url% to %new_url%."
|
2733 |
msgstr ""
|
2734 |
|
2735 |
+
#: defaults.php:359
|
2736 |
+
msgid "Advertising Add-ons."
|
2737 |
msgstr ""
|
2738 |
|
2739 |
+
#: defaults.php:359
|
2740 |
msgid "%PromoName% %PromoMessage%"
|
2741 |
msgstr ""
|
2742 |
|
2743 |
+
#: defaults.php:365
|
2744 |
msgid "Menus"
|
2745 |
msgstr ""
|
2746 |
|
2747 |
+
#: defaults.php:366
|
2748 |
msgid "User created new menu"
|
2749 |
msgstr ""
|
2750 |
|
2751 |
+
#: defaults.php:366
|
2752 |
msgid "Created a new menu called %MenuName%."
|
2753 |
msgstr ""
|
2754 |
|
2755 |
+
#: defaults.php:367
|
2756 |
msgid "User added content to a menu"
|
2757 |
msgstr ""
|
2758 |
|
2759 |
+
#: defaults.php:367
|
2760 |
msgid "Added the %ContentType% called %ContentName% to menu %MenuName%."
|
2761 |
msgstr ""
|
2762 |
|
2763 |
+
#: defaults.php:368
|
2764 |
msgid "User removed content from a menu"
|
2765 |
msgstr ""
|
2766 |
|
2767 |
+
#: defaults.php:368
|
2768 |
msgid ""
|
2769 |
"Removed the %ContentType% called %ContentName% from the menu %MenuName%."
|
2770 |
msgstr ""
|
2771 |
|
2772 |
+
#: defaults.php:369
|
2773 |
msgid "User deleted menu"
|
2774 |
msgstr ""
|
2775 |
|
2776 |
+
#: defaults.php:369
|
2777 |
msgid "Deleted the menu %MenuName%."
|
2778 |
msgstr ""
|
2779 |
|
2780 |
+
#: defaults.php:370
|
2781 |
msgid "User changed menu setting"
|
2782 |
msgstr ""
|
2783 |
|
2784 |
+
#: defaults.php:370
|
2785 |
msgid "%Status% the menu setting %MenuSetting% in %MenuName%."
|
2786 |
msgstr ""
|
2787 |
|
2788 |
+
#: defaults.php:371
|
2789 |
msgid "User modified content in a menu"
|
2790 |
msgstr ""
|
2791 |
|
2792 |
+
#: defaults.php:371
|
2793 |
msgid "Modified the %ContentType% called %ContentName% in menu %MenuName%."
|
2794 |
msgstr ""
|
2795 |
|
2796 |
+
#: defaults.php:372
|
2797 |
msgid "User changed name of a menu"
|
2798 |
msgstr ""
|
2799 |
|
2800 |
+
#: defaults.php:372
|
2801 |
msgid "Changed the name of menu %OldMenuName% to %NewMenuName%."
|
2802 |
msgstr ""
|
2803 |
|
2804 |
+
#: defaults.php:373
|
2805 |
msgid "User changed order of the objects in a menu"
|
2806 |
msgstr ""
|
2807 |
|
2808 |
+
#: defaults.php:373
|
2809 |
msgid "Changed the order of the %ItemName% in menu %MenuName%."
|
2810 |
msgstr ""
|
2811 |
|
2812 |
+
#: defaults.php:374
|
2813 |
msgid "User moved objects as a sub-item"
|
2814 |
msgstr ""
|
2815 |
|
2816 |
+
#: defaults.php:374
|
2817 |
msgid "Moved %ItemName% as a sub-item of %ParentName% in menu %MenuName%."
|
2818 |
msgstr ""
|
2819 |
|
2820 |
+
#: defaults.php:380
|
2821 |
msgid "Widgets"
|
2822 |
msgstr ""
|
2823 |
|
2824 |
+
#: defaults.php:381
|
2825 |
msgid "User added a new widget"
|
2826 |
msgstr ""
|
2827 |
|
2828 |
+
#: defaults.php:381
|
2829 |
msgid "Added a new %WidgetName% widget in %Sidebar%."
|
2830 |
msgstr ""
|
2831 |
|
2832 |
+
#: defaults.php:382
|
2833 |
msgid "User modified a widget"
|
2834 |
msgstr ""
|
2835 |
|
2836 |
+
#: defaults.php:382
|
2837 |
msgid "Modified the %WidgetName% widget in %Sidebar%."
|
2838 |
msgstr ""
|
2839 |
|
2840 |
+
#: defaults.php:383
|
2841 |
msgid "User deleted widget"
|
2842 |
msgstr ""
|
2843 |
|
2844 |
+
#: defaults.php:383
|
2845 |
msgid "Deleted the %WidgetName% widget from %Sidebar%."
|
2846 |
msgstr ""
|
2847 |
|
2848 |
+
#: defaults.php:384
|
2849 |
msgid "User moved widget"
|
2850 |
msgstr ""
|
2851 |
|
2852 |
+
#: defaults.php:384
|
2853 |
msgid "Moved the %WidgetName% widget from %OldSidebar% to %NewSidebar%."
|
2854 |
msgstr ""
|
2855 |
|
2856 |
+
#: defaults.php:385
|
2857 |
msgid "User changed widget position"
|
2858 |
msgstr ""
|
2859 |
|
2860 |
+
#: defaults.php:385
|
2861 |
msgid "Changed the position of the widget %WidgetName% in sidebar %Sidebar%."
|
2862 |
msgstr ""
|
2863 |
|
2864 |
+
#: defaults.php:391
|
2865 |
+
msgid "Site Settings"
|
2866 |
msgstr ""
|
2867 |
|
2868 |
+
#: defaults.php:392
|
2869 |
+
msgid ""
|
2870 |
+
"Enabled/Disabled the option Discourage search engines from indexing this site"
|
2871 |
msgstr ""
|
2872 |
|
2873 |
+
#: defaults.php:392
|
2874 |
+
msgid "%Status% the option Discourage search engines from indexing this site."
|
2875 |
msgstr ""
|
2876 |
|
2877 |
+
#: defaults.php:393
|
2878 |
+
msgid "Enabled/Disabled comments on all the website"
|
2879 |
msgstr ""
|
2880 |
|
2881 |
+
#: defaults.php:393
|
2882 |
+
msgid "%Status% comments on all the website."
|
2883 |
msgstr ""
|
2884 |
|
2885 |
+
#: defaults.php:394
|
2886 |
+
msgid "Enabled/Disabled the option Comment author must fill out name and email"
|
2887 |
+
msgstr ""
|
2888 |
+
|
2889 |
+
#: defaults.php:394
|
2890 |
+
msgid "%Status% the option Comment author must fill out name and email."
|
2891 |
msgstr ""
|
2892 |
|
2893 |
+
#: defaults.php:395
|
2894 |
msgid ""
|
2895 |
+
"Enabled/Disabled the option Users must be logged in and registered to comment"
|
|
|
2896 |
msgstr ""
|
2897 |
|
2898 |
+
#: defaults.php:395
|
2899 |
+
msgid "%Status% the option Users must be logged in and registered to comment."
|
2900 |
msgstr ""
|
2901 |
|
2902 |
+
#: defaults.php:396
|
2903 |
+
msgid "Enabled/Disabled the option to automatically close comments"
|
2904 |
msgstr ""
|
2905 |
|
2906 |
+
#: defaults.php:396
|
2907 |
+
msgid "%Status% the option to automatically close comments after %Value% days."
|
2908 |
+
msgstr ""
|
2909 |
+
|
2910 |
+
#: defaults.php:397
|
2911 |
+
msgid "Changed the value of the option Automatically close comments"
|
2912 |
+
msgstr ""
|
2913 |
+
|
2914 |
+
#: defaults.php:397
|
2915 |
msgid ""
|
2916 |
+
"Changed the value of the option Automatically close comments from %OldValue% "
|
2917 |
+
"to %NewValue% days."
|
2918 |
msgstr ""
|
2919 |
|
2920 |
+
#: defaults.php:398
|
2921 |
+
msgid "Enabled/Disabled the option for comments to be manually approved"
|
2922 |
msgstr ""
|
2923 |
|
2924 |
+
#: defaults.php:398
|
2925 |
+
msgid "%Status% the option for comments to be manually approved."
|
2926 |
msgstr ""
|
2927 |
|
2928 |
+
#: defaults.php:399
|
2929 |
+
msgid ""
|
2930 |
+
"Enabled/Disabled the option for an author to have previously approved "
|
2931 |
+
"comments for the comments to appear"
|
2932 |
msgstr ""
|
2933 |
|
2934 |
+
#: defaults.php:399
|
2935 |
+
msgid ""
|
2936 |
+
"%Status% the option for an author to have previously approved comments for "
|
2937 |
+
"the comments to appear."
|
2938 |
msgstr ""
|
2939 |
|
2940 |
+
#: defaults.php:400
|
2941 |
+
msgid ""
|
2942 |
+
"Changed the number of links that a comment must have to be held in the queue"
|
2943 |
msgstr ""
|
2944 |
|
2945 |
+
#: defaults.php:400
|
2946 |
msgid ""
|
2947 |
+
"Changed the number of links from %OldValue% to %NewValue% that a comment "
|
2948 |
+
"must have to be held in the queue."
|
2949 |
msgstr ""
|
2950 |
|
2951 |
+
#: defaults.php:401
|
2952 |
+
msgid "Modified the list of keywords for comments moderation"
|
2953 |
msgstr ""
|
2954 |
|
2955 |
+
#: defaults.php:401
|
2956 |
+
msgid "Modified the list of keywords for comments moderation."
|
2957 |
msgstr ""
|
2958 |
|
2959 |
+
#: defaults.php:402
|
2960 |
+
msgid "Modified the list of keywords for comments blacklisting"
|
2961 |
msgstr ""
|
2962 |
|
2963 |
+
#: defaults.php:402
|
2964 |
+
msgid "Modified the list of keywords for comments blacklisting."
|
2965 |
msgstr ""
|
2966 |
|
2967 |
+
#: defaults.php:403
|
2968 |
+
msgid "Created a New cron job"
|
2969 |
+
msgstr ""
|
2970 |
+
|
2971 |
+
#: defaults.php:403
|
2972 |
msgid ""
|
2973 |
+
"A new cron job called %name% was created and is scheduled to run %schedule%."
|
|
|
2974 |
msgstr ""
|
2975 |
|
2976 |
+
#: defaults.php:404
|
2977 |
+
msgid "Changed status of the cron job"
|
2978 |
+
msgstr ""
|
2979 |
+
|
2980 |
+
#: defaults.php:404
|
2981 |
+
msgid "The cron job %name% was %status%."
|
2982 |
+
msgstr ""
|
2983 |
+
|
2984 |
+
#: defaults.php:405
|
2985 |
+
msgid "Deleted the cron job"
|
2986 |
+
msgstr ""
|
2987 |
+
|
2988 |
+
#: defaults.php:405
|
2989 |
+
msgid "The cron job %name% was deleted."
|
2990 |
+
msgstr ""
|
2991 |
+
|
2992 |
+
#: defaults.php:406
|
2993 |
+
msgid "Started the cron job"
|
2994 |
+
msgstr ""
|
2995 |
+
|
2996 |
+
#: defaults.php:406
|
2997 |
+
msgid "The cron job %name% has just started."
|
2998 |
+
msgstr ""
|
2999 |
+
|
3000 |
+
#: defaults.php:413
|
3001 |
+
msgid "Users Profiles & Activity"
|
3002 |
+
msgstr ""
|
3003 |
+
|
3004 |
+
#: defaults.php:417
|
3005 |
+
msgid "Other User Activity"
|
3006 |
+
msgstr ""
|
3007 |
+
|
3008 |
+
#: defaults.php:418
|
3009 |
+
msgid "User logged in"
|
3010 |
+
msgstr ""
|
3011 |
+
|
3012 |
+
#: defaults.php:418
|
3013 |
+
msgid "Successfully logged in."
|
3014 |
+
msgstr ""
|
3015 |
+
|
3016 |
+
#: defaults.php:419
|
3017 |
+
msgid "User logged out"
|
3018 |
+
msgstr ""
|
3019 |
+
|
3020 |
+
#: defaults.php:419
|
3021 |
+
msgid "Successfully logged out."
|
3022 |
+
msgstr ""
|
3023 |
+
|
3024 |
+
#: defaults.php:420
|
3025 |
+
msgid "Login failed"
|
3026 |
+
msgstr ""
|
3027 |
+
|
3028 |
+
#: defaults.php:420
|
3029 |
+
msgid "%Attempts% failed login(s) detected."
|
3030 |
+
msgstr ""
|
3031 |
+
|
3032 |
+
#: defaults.php:421
|
3033 |
+
msgid "Login failed / non existing user"
|
3034 |
+
msgstr ""
|
3035 |
+
|
3036 |
+
#: defaults.php:421
|
3037 |
+
msgid ""
|
3038 |
+
"%Attempts% failed login(s) detected using non existing user. %LogFileText%"
|
3039 |
msgstr ""
|
3040 |
|
3041 |
+
#: defaults.php:422
|
3042 |
+
msgid "Login blocked"
|
3043 |
msgstr ""
|
3044 |
|
3045 |
+
#: defaults.php:422
|
3046 |
msgid ""
|
3047 |
+
"Blocked from logging in because the same WordPress user is logged in from "
|
3048 |
+
"%ClientIP%."
|
3049 |
msgstr ""
|
3050 |
|
3051 |
+
#: defaults.php:423
|
3052 |
+
msgid "User logged in with existing session(s)"
|
|
|
|
|
3053 |
msgstr ""
|
3054 |
|
3055 |
+
#: defaults.php:423
|
3056 |
msgid ""
|
3057 |
+
"Successfully logged in. Another session from %IPAddress% for this user "
|
3058 |
+
"already exist."
|
3059 |
msgstr ""
|
3060 |
|
3061 |
+
#: defaults.php:424
|
3062 |
+
msgid "User logged out all other sessions with the same username"
|
|
|
|
|
3063 |
msgstr ""
|
3064 |
|
3065 |
+
#: defaults.php:424
|
3066 |
+
msgid "Logged out all other sessions with the same username."
|
3067 |
msgstr ""
|
3068 |
|
3069 |
+
#: defaults.php:425
|
3070 |
+
msgid "User session destroyed and logged out."
|
3071 |
msgstr ""
|
3072 |
|
3073 |
+
#: defaults.php:425
|
3074 |
+
msgid "Logged out session %TargetSessionID% which belonged to %TargetUserName%"
|
3075 |
msgstr ""
|
3076 |
|
3077 |
+
#: defaults.php:426
|
3078 |
+
msgid "User uploaded file from Uploads directory"
|
3079 |
msgstr ""
|
3080 |
|
3081 |
+
#: defaults.php:426
|
3082 |
+
msgid "Uploaded the file %FileName% in %FilePath%."
|
3083 |
msgstr ""
|
3084 |
|
3085 |
+
#: defaults.php:427
|
3086 |
+
msgid "User deleted file from Uploads directory"
|
3087 |
msgstr ""
|
3088 |
|
3089 |
+
#: defaults.php:427
|
3090 |
+
msgid "Deleted the file %FileName% from %FilePath%."
|
3091 |
msgstr ""
|
3092 |
|
3093 |
+
#: defaults.php:433
|
3094 |
+
msgid "User Profiles"
|
3095 |
msgstr ""
|
3096 |
|
3097 |
+
#: defaults.php:434
|
3098 |
+
msgid "New user was created on WordPress"
|
3099 |
msgstr ""
|
3100 |
|
3101 |
+
#: defaults.php:434
|
3102 |
msgid ""
|
3103 |
+
"A new user %NewUserData->Username% was created with role of %NewUserData-"
|
3104 |
+
">Roles%."
|
|
|
|
|
|
|
3105 |
msgstr ""
|
3106 |
|
3107 |
+
#: defaults.php:435
|
3108 |
+
msgid "User created another WordPress user"
|
3109 |
msgstr ""
|
3110 |
|
3111 |
+
#: defaults.php:435
|
3112 |
+
msgid ""
|
3113 |
+
"%UserChanger% created a new user %NewUserData->Username% with the role of "
|
3114 |
+
"%NewUserData->Roles%."
|
3115 |
msgstr ""
|
3116 |
|
3117 |
+
#: defaults.php:436
|
3118 |
+
msgid "The role of a user was changed by another WordPress user"
|
3119 |
msgstr ""
|
3120 |
|
3121 |
+
#: defaults.php:436
|
3122 |
+
msgid ""
|
3123 |
+
"Changed the role of the user %TargetUsername% from %OldRole% to %NewRole%"
|
3124 |
+
"%multisite_text%."
|
3125 |
msgstr ""
|
3126 |
|
3127 |
+
#: defaults.php:437
|
3128 |
+
msgid "User has changed his or her password"
|
3129 |
msgstr ""
|
3130 |
|
3131 |
+
#: defaults.php:437
|
3132 |
+
msgid "Changed the password."
|
3133 |
msgstr ""
|
3134 |
|
3135 |
+
#: defaults.php:438
|
3136 |
+
msgid "User changed another user's password"
|
3137 |
msgstr ""
|
3138 |
|
3139 |
+
#: defaults.php:438
|
3140 |
+
msgid ""
|
3141 |
+
"Changed the password for the user %TargetUserData->Username% with the role "
|
3142 |
+
"of %TargetUserData->Roles%."
|
3143 |
msgstr ""
|
3144 |
|
3145 |
+
#: defaults.php:439
|
3146 |
+
msgid "User changed his or her email address"
|
3147 |
msgstr ""
|
3148 |
|
3149 |
+
#: defaults.php:439
|
3150 |
+
msgid "Changed the email address from %OldEmail% to %NewEmail%."
|
3151 |
msgstr ""
|
3152 |
|
3153 |
+
#: defaults.php:440
|
3154 |
+
msgid "User changed another user's email address"
|
3155 |
msgstr ""
|
3156 |
|
3157 |
+
#: defaults.php:440
|
3158 |
msgid ""
|
3159 |
+
"Changed the email address of the user %TargetUsername% from %OldEmail% to "
|
3160 |
+
"%NewEmail%."
|
3161 |
msgstr ""
|
3162 |
|
3163 |
+
#: defaults.php:441
|
3164 |
+
msgid "User was deleted by another user"
|
3165 |
msgstr ""
|
3166 |
|
3167 |
+
#: defaults.php:441
|
3168 |
msgid ""
|
3169 |
+
"Deleted the user %TargetUserData->Username% with the role of %TargetUserData-"
|
3170 |
+
">Roles%."
|
3171 |
msgstr ""
|
3172 |
|
3173 |
+
#: defaults.php:442
|
3174 |
+
msgid "User opened the profile page of another user"
|
3175 |
msgstr ""
|
3176 |
|
3177 |
+
#: defaults.php:442
|
3178 |
+
msgid "%UserChanger% opened the profile page of the user %TargetUsername%."
|
3179 |
msgstr ""
|
3180 |
|
3181 |
+
#: defaults.php:443
|
3182 |
+
msgid "User updated a custom field value for a user"
|
3183 |
msgstr ""
|
3184 |
|
3185 |
+
#: defaults.php:443
|
3186 |
msgid ""
|
3187 |
+
"Changed the value of the custom field %custom_field_name%%ReportText% for "
|
3188 |
+
"the user %TargetUsername%.%ChangeText%"
|
|
|
|
|
|
|
|
|
3189 |
msgstr ""
|
3190 |
|
3191 |
+
#: defaults.php:444
|
3192 |
+
msgid "User created a custom field value for a user"
|
3193 |
msgstr ""
|
3194 |
|
3195 |
+
#: defaults.php:444
|
3196 |
+
msgid ""
|
3197 |
+
"Created the value of the custom field %custom_field_name% with %new_value% "
|
3198 |
+
"for the user %TargetUsername%."
|
3199 |
msgstr ""
|
3200 |
|
3201 |
+
#: defaults.php:445
|
3202 |
+
msgid "User changed first name for a user"
|
3203 |
msgstr ""
|
3204 |
|
3205 |
+
#: defaults.php:445
|
3206 |
+
msgid ""
|
3207 |
+
"Changed the first name of the user %TargetUsername% from %old_firstname% to "
|
3208 |
+
"%new_firstname%"
|
3209 |
msgstr ""
|
3210 |
|
3211 |
+
#: defaults.php:446
|
3212 |
+
msgid "User changed last name for a user"
|
3213 |
msgstr ""
|
3214 |
|
3215 |
+
#: defaults.php:446
|
3216 |
+
msgid ""
|
3217 |
+
"Changed the last name of the user %TargetUsername% from %old_lastname% to "
|
3218 |
+
"%new_lastname%"
|
3219 |
msgstr ""
|
3220 |
|
3221 |
+
#: defaults.php:447
|
3222 |
+
msgid "User changed nickname for a user"
|
3223 |
msgstr ""
|
3224 |
|
3225 |
+
#: defaults.php:447
|
3226 |
+
msgid ""
|
3227 |
+
"Changed the nickname of the user %TargetUsername% from %old_nickname% to "
|
3228 |
+
"%new_nickname%"
|
3229 |
msgstr ""
|
3230 |
|
3231 |
+
#: defaults.php:448
|
3232 |
+
msgid "User changed the display name for a user"
|
3233 |
msgstr ""
|
3234 |
|
3235 |
+
#: defaults.php:448
|
3236 |
+
msgid ""
|
3237 |
+
"Changed the Display name publicly of user %TargetUsername% from "
|
3238 |
+
"%old_displayname% to %new_displayname%"
|
3239 |
msgstr ""
|
3240 |
|
3241 |
+
#: defaults.php:455
|
3242 |
+
msgid "Third Party Support"
|
3243 |
msgstr ""
|
3244 |
|
3245 |
+
#: defaults.php:459
|
3246 |
+
msgid "BBPress Forum"
|
3247 |
msgstr ""
|
3248 |
|
3249 |
+
#: defaults.php:460
|
3250 |
msgid "User created new forum"
|
3251 |
msgstr ""
|
3252 |
|
3253 |
+
#: defaults.php:460
|
3254 |
msgid ""
|
3255 |
"Created new forum %ForumName%. Forum URL is %ForumURL%. %EditorLinkForum%."
|
3256 |
msgstr ""
|
3257 |
|
3258 |
+
#: defaults.php:461
|
3259 |
msgid "User changed status of a forum"
|
3260 |
msgstr ""
|
3261 |
|
3262 |
+
#: defaults.php:461
|
3263 |
msgid ""
|
3264 |
"Changed the status of the forum %ForumName% from %OldStatus% to %NewStatus%. "
|
3265 |
"%EditorLinkForum%."
|
3266 |
msgstr ""
|
3267 |
|
3268 |
+
#: defaults.php:462
|
3269 |
msgid "User changed visibility of a forum"
|
3270 |
msgstr ""
|
3271 |
|
3272 |
+
#: defaults.php:462
|
3273 |
msgid ""
|
3274 |
"Changed the visibility of the forum %ForumName% from %OldVisibility% to "
|
3275 |
"%NewVisibility%. %EditorLinkForum%."
|
3276 |
msgstr ""
|
3277 |
|
3278 |
+
#: defaults.php:463
|
3279 |
msgid "User changed the URL of a forum"
|
3280 |
msgstr ""
|
3281 |
|
3282 |
+
#: defaults.php:463
|
3283 |
msgid ""
|
3284 |
"Changed the URL of the forum %ForumName% from %OldUrl% to %NewUrl%. "
|
3285 |
"%EditorLinkForum%."
|
3286 |
msgstr ""
|
3287 |
|
3288 |
+
#: defaults.php:464
|
3289 |
msgid "User changed order of a forum"
|
3290 |
msgstr ""
|
3291 |
|
3292 |
+
#: defaults.php:464
|
3293 |
msgid ""
|
3294 |
"Changed the order of the forum %ForumName% from %OldOrder% to %NewOrder%. "
|
3295 |
"%EditorLinkForum%."
|
3296 |
msgstr ""
|
3297 |
|
3298 |
+
#: defaults.php:465
|
3299 |
msgid "User moved forum to trash"
|
3300 |
msgstr ""
|
3301 |
|
3302 |
+
#: defaults.php:465
|
3303 |
msgid "Moved the forum %ForumName% to trash."
|
3304 |
msgstr ""
|
3305 |
|
3306 |
+
#: defaults.php:466
|
3307 |
msgid "User permanently deleted forum"
|
3308 |
msgstr ""
|
3309 |
|
3310 |
+
#: defaults.php:466
|
3311 |
msgid "Permanently deleted the forum %ForumName%."
|
3312 |
msgstr ""
|
3313 |
|
3314 |
+
#: defaults.php:467
|
3315 |
msgid "User restored forum from trash"
|
3316 |
msgstr ""
|
3317 |
|
3318 |
+
#: defaults.php:467
|
3319 |
msgid "Restored the forum %ForumName% from trash. %EditorLinkForum%."
|
3320 |
msgstr ""
|
3321 |
|
3322 |
+
#: defaults.php:468
|
3323 |
msgid "User changed the parent of a forum"
|
3324 |
msgstr ""
|
3325 |
|
3326 |
+
#: defaults.php:468
|
3327 |
msgid ""
|
3328 |
"Changed the parent of the forum %ForumName% from %OldParent% to %NewParent%. "
|
3329 |
"%EditorLinkForum%."
|
3330 |
msgstr ""
|
3331 |
|
3332 |
+
#: defaults.php:469
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3333 |
msgid "User changed forum's role"
|
3334 |
msgstr ""
|
3335 |
|
3336 |
+
#: defaults.php:469
|
3337 |
msgid "Changed the forum's auto role from %OldRole% to %NewRole%."
|
3338 |
msgstr ""
|
3339 |
|
3340 |
+
#: defaults.php:470
|
3341 |
msgid "User changed option of a forum"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
+
#: defaults.php:470
|
3345 |
msgid "%Status% the option for anonymous posting on forum."
|
3346 |
msgstr ""
|
3347 |
|
3348 |
+
#: defaults.php:471
|
3349 |
+
msgid "User changed type of a forum"
|
3350 |
+
msgstr ""
|
3351 |
+
|
3352 |
+
#: defaults.php:471
|
3353 |
+
msgid ""
|
3354 |
+
"Changed the type of the forum %ForumName% from %OldType% to %NewType%. "
|
3355 |
+
"%EditorLinkForum%."
|
3356 |
+
msgstr ""
|
3357 |
+
|
3358 |
+
#: defaults.php:472
|
3359 |
msgid "User changed time to disallow post editing"
|
3360 |
msgstr ""
|
3361 |
|
3362 |
+
#: defaults.php:472
|
3363 |
msgid ""
|
3364 |
"Changed the time to disallow post editing from %OldTime% to %NewTime% "
|
3365 |
"minutes in the forums."
|
3366 |
msgstr ""
|
3367 |
|
3368 |
+
#: defaults.php:473
|
3369 |
msgid "User changed the forum setting posting throttle time"
|
3370 |
msgstr ""
|
3371 |
|
3372 |
+
#: defaults.php:473
|
3373 |
msgid ""
|
3374 |
"Changed the posting throttle time from %OldTime% to %NewTime% seconds in the "
|
3375 |
"forums."
|
3376 |
msgstr ""
|
3377 |
|
3378 |
+
#: defaults.php:474
|
3379 |
msgid "User created new topic"
|
3380 |
msgstr ""
|
3381 |
|
3382 |
+
#: defaults.php:474
|
3383 |
msgid "Created a new topic %TopicName%. %EditorLinkTopic%."
|
3384 |
msgstr ""
|
3385 |
|
3386 |
+
#: defaults.php:475
|
3387 |
msgid "User changed status of a topic"
|
3388 |
msgstr ""
|
3389 |
|
3390 |
+
#: defaults.php:475
|
3391 |
msgid ""
|
3392 |
"Changed the status of the topic %TopicName% from %OldStatus% to %NewStatus%. "
|
3393 |
"%EditorLinkTopic%."
|
3394 |
msgstr ""
|
3395 |
|
3396 |
+
#: defaults.php:476
|
3397 |
msgid "User changed type of a topic"
|
3398 |
msgstr ""
|
3399 |
|
3400 |
+
#: defaults.php:476
|
3401 |
msgid ""
|
3402 |
"Changed the type of the topic %TopicName% from %OldType% to %NewType%. "
|
3403 |
"%EditorLinkTopic%."
|
3404 |
msgstr ""
|
3405 |
|
3406 |
+
#: defaults.php:477
|
3407 |
msgid "User changed URL of a topic"
|
3408 |
msgstr ""
|
3409 |
|
3410 |
+
#: defaults.php:477
|
3411 |
msgid "Changed the URL of the topic %TopicName% from %OldUrl% to %NewUrl%."
|
3412 |
msgstr ""
|
3413 |
|
3414 |
+
#: defaults.php:478
|
3415 |
msgid "User changed the forum of a topic"
|
3416 |
msgstr ""
|
3417 |
|
3418 |
+
#: defaults.php:478
|
3419 |
msgid ""
|
3420 |
"Changed the forum of the topic %TopicName% from %OldForum% to %NewForum%. "
|
3421 |
"%EditorLinkTopic%."
|
3422 |
msgstr ""
|
3423 |
|
3424 |
+
#: defaults.php:479
|
3425 |
msgid "User moved topic to trash"
|
3426 |
msgstr ""
|
3427 |
|
3428 |
+
#: defaults.php:479
|
3429 |
msgid "Moved the topic %TopicName% to trash."
|
3430 |
msgstr ""
|
3431 |
|
3432 |
+
#: defaults.php:480
|
3433 |
msgid "User permanently deleted topic"
|
3434 |
msgstr ""
|
3435 |
|
3436 |
+
#: defaults.php:480
|
3437 |
msgid "Permanently deleted the topic %TopicName%."
|
3438 |
msgstr ""
|
3439 |
|
3440 |
+
#: defaults.php:481
|
3441 |
msgid "User restored topic from trash"
|
3442 |
msgstr ""
|
3443 |
|
3444 |
+
#: defaults.php:481
|
3445 |
msgid "Restored the topic %TopicName% from trash. %EditorLinkTopic%."
|
3446 |
msgstr ""
|
3447 |
|
3448 |
+
#: defaults.php:482
|
3449 |
msgid "User changed visibility of a topic"
|
3450 |
msgstr ""
|
3451 |
|
3452 |
+
#: defaults.php:482
|
3453 |
msgid ""
|
3454 |
"Changed the visibility of the topic %TopicName% from %OldVisibility% to "
|
3455 |
"%NewVisibility%. %EditorLinkTopic%."
|
3456 |
msgstr ""
|
3457 |
|
3458 |
+
#: defaults.php:488
|
3459 |
+
msgid "WooCommerce"
|
3460 |
+
msgstr ""
|
3461 |
+
|
3462 |
+
#: defaults.php:489
|
3463 |
msgid "User created a new product"
|
3464 |
msgstr ""
|
3465 |
|
3466 |
+
#: defaults.php:489
|
3467 |
msgid ""
|
3468 |
"Created a new product called %ProductTitle% and saved it as draft. View the "
|
3469 |
"product: %EditorLinkProduct%."
|
3470 |
msgstr ""
|
3471 |
|
3472 |
+
#: defaults.php:490
|
3473 |
msgid "User published a product"
|
3474 |
msgstr ""
|
3475 |
|
3476 |
+
#: defaults.php:490
|
3477 |
msgid ""
|
3478 |
"Published a product called %ProductTitle%. Product URL is %ProductUrl%. View "
|
3479 |
"the product: %EditorLinkProduct%."
|
3480 |
msgstr ""
|
3481 |
|
3482 |
+
#: defaults.php:491
|
3483 |
+
msgid "User created a new product category"
|
3484 |
+
msgstr ""
|
3485 |
+
|
3486 |
+
#: defaults.php:491
|
3487 |
+
msgid ""
|
3488 |
+
"Created a new product category called %CategoryName% in WooCommerce. Product "
|
3489 |
+
"category slug is %Slug%."
|
3490 |
+
msgstr ""
|
3491 |
+
|
3492 |
+
#: defaults.php:492
|
3493 |
msgid "User changed the category of a product"
|
3494 |
msgstr ""
|
3495 |
|
3496 |
+
#: defaults.php:492
|
3497 |
msgid ""
|
3498 |
"Changed the category of the product %ProductTitle% from %OldCategories% to "
|
3499 |
"%NewCategories%. View the product: %EditorLinkProduct%."
|
3500 |
msgstr ""
|
3501 |
|
3502 |
+
#: defaults.php:493
|
3503 |
msgid "User modified the short description of a product"
|
3504 |
msgstr ""
|
3505 |
|
3506 |
+
#: defaults.php:493
|
3507 |
msgid ""
|
3508 |
"Modified the short description of the product %ProductTitle%.%ChangeText% "
|
3509 |
"View the product: %EditorLinkProduct%."
|
3510 |
msgstr ""
|
3511 |
|
3512 |
+
#: defaults.php:494
|
3513 |
msgid "User modified the text of a product"
|
3514 |
msgstr ""
|
3515 |
|
3516 |
+
#: defaults.php:494
|
3517 |
msgid ""
|
3518 |
"Modified the text of the product %ProductTitle%. View the product: "
|
3519 |
"%EditorLinkProduct%."
|
3520 |
msgstr ""
|
3521 |
|
3522 |
+
#: defaults.php:495
|
3523 |
msgid "User changed the URL of a product"
|
3524 |
msgstr ""
|
3525 |
|
3526 |
+
#: defaults.php:495
|
3527 |
msgid ""
|
3528 |
"Changed the URL of the product %ProductTitle%%ReportText%.%ChangeText% View "
|
3529 |
"the product: %EditorLinkProduct%."
|
3530 |
msgstr ""
|
3531 |
|
3532 |
+
#: defaults.php:496
|
3533 |
+
msgid "User changed the Product Data of a product"
|
3534 |
+
msgstr ""
|
3535 |
+
|
3536 |
+
#: defaults.php:496
|
3537 |
+
msgid ""
|
3538 |
+
"Changed the Product Data of the product %ProductTitle%. View the product: "
|
3539 |
+
"%EditorLinkProduct%."
|
3540 |
+
msgstr ""
|
3541 |
+
|
3542 |
+
#: defaults.php:497
|
3543 |
msgid "User changed the date of a product"
|
3544 |
msgstr ""
|
3545 |
|
3546 |
+
#: defaults.php:497
|
3547 |
msgid ""
|
3548 |
"Changed the date of the product %ProductTitle% from %OldDate% to %NewDate%. "
|
3549 |
"View the product: %EditorLinkProduct%."
|
3550 |
msgstr ""
|
3551 |
|
3552 |
+
#: defaults.php:498
|
3553 |
msgid "User changed the visibility of a product"
|
3554 |
msgstr ""
|
3555 |
|
3556 |
+
#: defaults.php:498
|
3557 |
msgid ""
|
3558 |
"Changed the visibility of the product %ProductTitle% from %OldVisibility% to "
|
3559 |
"%NewVisibility%. View the product: %EditorLinkProduct%."
|
3560 |
msgstr ""
|
3561 |
|
3562 |
+
#: defaults.php:499
|
3563 |
msgid "User modified the published product"
|
3564 |
msgstr ""
|
3565 |
|
3566 |
+
#: defaults.php:499
|
3567 |
msgid ""
|
3568 |
"Modified the published product %ProductTitle%. Product URL is %ProductUrl%. "
|
3569 |
"View the product: %EditorLinkProduct%."
|
3570 |
msgstr ""
|
3571 |
|
3572 |
+
#: defaults.php:500
|
3573 |
msgid "User modified the draft product"
|
3574 |
msgstr ""
|
3575 |
|
3576 |
+
#: defaults.php:500
|
3577 |
msgid ""
|
3578 |
"Modified the draft product %ProductTitle%. View the product: "
|
3579 |
"%EditorLinkProduct%."
|
3580 |
msgstr ""
|
3581 |
|
3582 |
+
#: defaults.php:501
|
3583 |
msgid "User moved a product to trash"
|
3584 |
msgstr ""
|
3585 |
|
3586 |
+
#: defaults.php:501
|
3587 |
msgid ""
|
3588 |
"Moved the product %ProductTitle% to trash. Product URL was %ProductUrl%."
|
3589 |
msgstr ""
|
3590 |
|
3591 |
+
#: defaults.php:502
|
3592 |
msgid "User permanently deleted a product"
|
3593 |
msgstr ""
|
3594 |
|
3595 |
+
#: defaults.php:502
|
3596 |
msgid "Permanently deleted the product %ProductTitle%."
|
3597 |
msgstr ""
|
3598 |
|
3599 |
+
#: defaults.php:503
|
3600 |
msgid "User restored a product from the trash"
|
3601 |
msgstr ""
|
3602 |
|
3603 |
+
#: defaults.php:503
|
3604 |
msgid ""
|
3605 |
"Product %ProductTitle% has been restored from trash. View product: "
|
3606 |
"%EditorLinkProduct%."
|
3607 |
msgstr ""
|
3608 |
|
3609 |
+
#: defaults.php:504
|
3610 |
msgid "User changed status of a product"
|
3611 |
msgstr ""
|
3612 |
|
3613 |
+
#: defaults.php:504
|
3614 |
msgid ""
|
3615 |
"Changed the status of the product %ProductTitle% from %OldStatus% to "
|
3616 |
"%NewStatus%. View the product: %EditorLinkProduct%."
|
3617 |
msgstr ""
|
3618 |
|
3619 |
+
#: defaults.php:505
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3620 |
msgid "User changed type of a price"
|
3621 |
msgstr ""
|
3622 |
|
3623 |
+
#: defaults.php:505
|
3624 |
msgid ""
|
3625 |
"Changed the %PriceType% of the product %ProductTitle% from %OldPrice% to "
|
3626 |
"%NewPrice%. View the product: %EditorLinkProduct%."
|
3627 |
msgstr ""
|
3628 |
|
3629 |
+
#: defaults.php:506
|
3630 |
msgid "User changed the SKU of a product"
|
3631 |
msgstr ""
|
3632 |
|
3633 |
+
#: defaults.php:506
|
3634 |
msgid ""
|
3635 |
"Changed the SKU of the product %ProductTitle% from %OldSku% to %NewSku%. "
|
3636 |
"View the product: %EditorLinkProduct%."
|
3637 |
msgstr ""
|
3638 |
|
3639 |
+
#: defaults.php:507
|
3640 |
msgid "User changed the stock status of a product"
|
3641 |
msgstr ""
|
3642 |
|
3643 |
+
#: defaults.php:507
|
3644 |
msgid ""
|
3645 |
"Changed the stock status of the product %ProductTitle% from %OldStatus% to "
|
3646 |
"%NewStatus%. View the product: %EditorLinkProduct%."
|
3647 |
msgstr ""
|
3648 |
|
3649 |
+
#: defaults.php:508
|
3650 |
msgid "User changed the stock quantity"
|
3651 |
msgstr ""
|
3652 |
|
3653 |
+
#: defaults.php:508
|
3654 |
msgid ""
|
3655 |
"Changed the stock quantity of the product %ProductTitle% from %OldValue% to "
|
3656 |
"%NewValue%. View the product: %EditorLinkProduct%"
|
3657 |
msgstr ""
|
3658 |
|
3659 |
+
#: defaults.php:509
|
3660 |
msgid "User set a product type"
|
3661 |
msgstr ""
|
3662 |
|
3663 |
+
#: defaults.php:509
|
3664 |
msgid ""
|
3665 |
"Set the product %ProductTitle% as %Type%. View the product: "
|
3666 |
"%EditorLinkProduct%."
|
3667 |
msgstr ""
|
3668 |
|
3669 |
+
#: defaults.php:510
|
3670 |
msgid "User changed the weight of a product"
|
3671 |
msgstr ""
|
3672 |
|
3673 |
+
#: defaults.php:510
|
3674 |
msgid ""
|
3675 |
"Changed the weight of the product %ProductTitle% from %OldWeight% to "
|
3676 |
"%NewWeight%. View the product: %EditorLinkProduct%."
|
3677 |
msgstr ""
|
3678 |
|
3679 |
+
#: defaults.php:511
|
3680 |
msgid "User changed the dimensions of a product"
|
3681 |
msgstr ""
|
3682 |
|
3683 |
+
#: defaults.php:511
|
3684 |
msgid ""
|
3685 |
"Changed the %DimensionType% dimensions of the product %ProductTitle% from "
|
3686 |
"%OldDimension% to %NewDimension%. View the product: %EditorLinkProduct%."
|
3687 |
msgstr ""
|
3688 |
|
3689 |
+
#: defaults.php:512
|
3690 |
msgid "User added the Downloadable File to a product"
|
3691 |
msgstr ""
|
3692 |
|
3693 |
+
#: defaults.php:512
|
3694 |
msgid ""
|
3695 |
"Added the Downloadable File %FileName% with File URL %FileUrl% to the "
|
3696 |
"product %ProductTitle%. View the product: %EditorLinkProduct%."
|
3697 |
msgstr ""
|
3698 |
|
3699 |
+
#: defaults.php:513
|
3700 |
msgid "User Removed the Downloadable File from a product"
|
3701 |
msgstr ""
|
3702 |
|
3703 |
+
#: defaults.php:513
|
3704 |
msgid ""
|
3705 |
"Removed the Downloadable File %FileName% with File URL %FileUrl% from the "
|
3706 |
"product %ProductTitle%. View the product: %EditorLinkProduct%."
|
3707 |
msgstr ""
|
3708 |
|
3709 |
+
#: defaults.php:514
|
3710 |
msgid "User changed the name of a Downloadable File in a product"
|
3711 |
msgstr ""
|
3712 |
|
3713 |
+
#: defaults.php:514
|
3714 |
msgid ""
|
3715 |
"Changed the name of a Downloadable File from %OldName% to %NewName% in "
|
3716 |
"product %ProductTitle%. View the product: %EditorLinkProduct%."
|
3717 |
msgstr ""
|
3718 |
|
3719 |
+
#: defaults.php:515
|
3720 |
msgid "User changed the URL of the Downloadable File in a product"
|
3721 |
msgstr ""
|
3722 |
|
3723 |
+
#: defaults.php:515
|
3724 |
msgid ""
|
3725 |
"Changed the URL of the Downloadable File %FileName% from %OldUrl% to %NewUrl"
|
3726 |
"% in product %ProductTitle%. View the product: %EditorLinkProduct%."
|
3727 |
msgstr ""
|
3728 |
|
3729 |
+
#: defaults.php:516
|
3730 |
msgid "User changed the Weight Unit"
|
3731 |
msgstr ""
|
3732 |
|
3733 |
+
#: defaults.php:516
|
3734 |
msgid "Changed the Weight Unit from %OldUnit% to %NewUnit% in WooCommerce."
|
3735 |
msgstr ""
|
3736 |
|
3737 |
+
#: defaults.php:517
|
3738 |
msgid "User changed the Dimensions Unit"
|
3739 |
msgstr ""
|
3740 |
|
3741 |
+
#: defaults.php:517
|
3742 |
msgid "Changed the Dimensions Unit from %OldUnit% to %NewUnit% in WooCommerce."
|
3743 |
msgstr ""
|
3744 |
|
3745 |
+
#: defaults.php:518
|
3746 |
msgid "User changed the Base Location"
|
3747 |
msgstr ""
|
3748 |
|
3749 |
+
#: defaults.php:518
|
3750 |
msgid ""
|
3751 |
"Changed the Base Location from %OldLocation% to %NewLocation% in WooCommerce."
|
3752 |
msgstr ""
|
3753 |
|
3754 |
+
#: defaults.php:519
|
3755 |
msgid "User Enabled/Disabled taxes"
|
3756 |
msgstr ""
|
3757 |
|
3758 |
+
#: defaults.php:519
|
3759 |
msgid "%Status% taxes in the WooCommerce store."
|
3760 |
msgstr ""
|
3761 |
|
3762 |
+
#: defaults.php:520
|
3763 |
msgid "User changed the currency"
|
3764 |
msgstr ""
|
3765 |
|
3766 |
+
#: defaults.php:520
|
3767 |
msgid ""
|
3768 |
"Changed the currency from %OldCurrency% to %NewCurrency% in WooCommerce."
|
3769 |
msgstr ""
|
3770 |
|
3771 |
+
#: defaults.php:521
|
3772 |
msgid "User Enabled/Disabled the use of coupons during checkout"
|
3773 |
msgstr ""
|
3774 |
|
3775 |
+
#: defaults.php:521
|
3776 |
msgid "%Status% the use of coupons during checkout in WooCommerce."
|
3777 |
msgstr ""
|
3778 |
|
3779 |
+
#: defaults.php:522
|
3780 |
msgid "User Enabled/Disabled guest checkout"
|
3781 |
msgstr ""
|
3782 |
|
3783 |
+
#: defaults.php:522
|
3784 |
msgid "%Status% guest checkout in WooCommerce."
|
3785 |
msgstr ""
|
3786 |
|
3787 |
+
#: defaults.php:523
|
3788 |
msgid "User Enabled/Disabled cash on delivery"
|
3789 |
msgstr ""
|
3790 |
|
3791 |
+
#: defaults.php:523
|
3792 |
msgid "%Status% the option Enable cash on delivery in WooCommerce."
|
3793 |
msgstr ""
|
3794 |
|
3795 |
+
#: defaults.php:525
|
3796 |
+
msgid "Yoast SEO"
|
|
|
|
|
|
|
|
|
|
|
|
|
3797 |
msgstr ""
|
3798 |
|
3799 |
+
#: defaults.php:526
|
3800 |
msgid "User changed title of a SEO post"
|
3801 |
msgstr ""
|
3802 |
|
3803 |
+
#: defaults.php:526
|
3804 |
msgid ""
|
3805 |
"Changed the SEO title of the %PostStatus% %PostType%%ReportText%.%ChangeText"
|
3806 |
"% %EditorLinkPost%."
|
3807 |
msgstr ""
|
3808 |
|
3809 |
+
#: defaults.php:527
|
3810 |
msgid "User changed the meta description of a SEO post"
|
3811 |
msgstr ""
|
3812 |
|
3813 |
+
#: defaults.php:527
|
3814 |
msgid ""
|
3815 |
"Changed the Meta description of the %PostStatus% %PostType% titled %PostTitle"
|
3816 |
"%%ReportText%.%ChangeText% %EditorLinkPost%."
|
3817 |
msgstr ""
|
3818 |
|
3819 |
+
#: defaults.php:528
|
3820 |
msgid ""
|
3821 |
"User changed setting to allow search engines to show post in search results "
|
3822 |
"of a SEO post"
|
3823 |
msgstr ""
|
3824 |
|
3825 |
+
#: defaults.php:528
|
3826 |
msgid ""
|
3827 |
"Changed the setting to allow search engines to show post in search results "
|
3828 |
"from %OldStatus% to %NewStatus% in the %PostStatus% %PostType% titled "
|
3829 |
"%PostTitle%. %EditorLinkPost%."
|
3830 |
msgstr ""
|
3831 |
|
3832 |
+
#: defaults.php:529
|
3833 |
msgid ""
|
3834 |
"User Enabled/Disabled the option for search engine to follow links of a SEO "
|
3835 |
"post"
|
3836 |
msgstr ""
|
3837 |
|
3838 |
+
#: defaults.php:529
|
3839 |
msgid ""
|
3840 |
"%NewStatus% the option for search engine to follow links in the %PostType% "
|
3841 |
"titled %PostTitle%. %EditorLinkPost%."
|
3842 |
msgstr ""
|
3843 |
|
3844 |
+
#: defaults.php:530
|
3845 |
msgid "User set the meta robots advanced setting of a SEO post"
|
3846 |
msgstr ""
|
3847 |
|
3848 |
+
#: defaults.php:530
|
3849 |
msgid ""
|
3850 |
"Set the Meta Robots Advanced setting to %NewStatus% in the %PostStatus% "
|
3851 |
"%PostType% titled %PostTitle%. %EditorLinkPost%."
|
3852 |
msgstr ""
|
3853 |
|
3854 |
+
#: defaults.php:531
|
3855 |
msgid "User changed the canonical URL of a SEO post"
|
3856 |
msgstr ""
|
3857 |
|
3858 |
+
#: defaults.php:531
|
3859 |
msgid ""
|
3860 |
"Changed the Canonical URL of the %PostStatus% %PostType% titled %PostTitle%"
|
3861 |
"%ReportText%.%ChangeText% %EditorLinkPost%."
|
3862 |
msgstr ""
|
3863 |
|
3864 |
+
#: defaults.php:532
|
3865 |
msgid "User changed the focus keyword of a SEO post"
|
3866 |
msgstr ""
|
3867 |
|
3868 |
+
#: defaults.php:532
|
3869 |
msgid ""
|
3870 |
"Changed the focus keyword of the %PostStatus% %PostType% titled %PostTitle% "
|
3871 |
"from %old_keywords% to %new_keywords%. %EditorLinkPost%."
|
3872 |
msgstr ""
|
3873 |
|
3874 |
+
#: defaults.php:533
|
3875 |
msgid "User Enabled/Disabled the option Cornerston Content of a SEO post"
|
3876 |
msgstr ""
|
3877 |
|
3878 |
+
#: defaults.php:533
|
3879 |
msgid ""
|
3880 |
"%Status% the option Cornerston Content on the %PostStatus% %PostType% titled "
|
3881 |
"%PostTitle%. %EditorLinkPost%."
|
3882 |
msgstr ""
|
3883 |
|
3884 |
+
#: defaults.php:534
|
3885 |
msgid "User changed the Title Separator setting"
|
3886 |
msgstr ""
|
3887 |
|
3888 |
+
#: defaults.php:534
|
3889 |
msgid ""
|
3890 |
"Changed the Title Separator from %old% to %new% in the Yoast SEO plugin "
|
3891 |
"settings."
|
3892 |
msgstr ""
|
3893 |
|
3894 |
+
#: defaults.php:535
|
3895 |
msgid "User changed the Homepage Title setting"
|
3896 |
msgstr ""
|
3897 |
|
3898 |
+
#: defaults.php:535
|
3899 |
msgid ""
|
3900 |
"Changed the Homepage Title%ReportText% in the Yoast SEO plugin settings."
|
3901 |
"%ChangeText%"
|
3902 |
msgstr ""
|
3903 |
|
3904 |
+
#: defaults.php:536
|
3905 |
msgid "User changed the Homepage Meta description setting"
|
3906 |
msgstr ""
|
3907 |
|
3908 |
+
#: defaults.php:536
|
3909 |
msgid ""
|
3910 |
"Changed the Homepage Meta description%ReportText% in the Yoast SEO plugin "
|
3911 |
"settings.%ChangeText%"
|
3912 |
msgstr ""
|
3913 |
|
3914 |
+
#: defaults.php:537
|
3915 |
msgid "User changed the Company or Person setting"
|
3916 |
msgstr ""
|
3917 |
|
3918 |
+
#: defaults.php:537
|
3919 |
msgid ""
|
3920 |
"Changed the Company or Person setting from %old% to %new% in the YOAST SEO "
|
3921 |
"plugin settings."
|
3922 |
msgstr ""
|
3923 |
|
3924 |
+
#: defaults.php:538
|
3925 |
msgid ""
|
3926 |
"User Enabled/Disabled the option Show Posts/Pages in Search Results in the "
|
3927 |
"Yoast SEO plugin settings"
|
3928 |
msgstr ""
|
3929 |
|
3930 |
+
#: defaults.php:538
|
3931 |
msgid ""
|
3932 |
"%Status% the option Show %SEOPostType% in Search Results in the Yoast SEO "
|
3933 |
"plugin settings."
|
3934 |
msgstr ""
|
3935 |
|
3936 |
+
#: defaults.php:539
|
3937 |
msgid ""
|
3938 |
"User changed the Posts/Pages title template in the Yoast SEO plugin settings"
|
3939 |
msgstr ""
|
3940 |
|
3941 |
+
#: defaults.php:539
|
3942 |
msgid ""
|
3943 |
"Changed the %SEOPostType% title template from %old% to %new% in the Yoast "
|
3944 |
"SEO plugin settings."
|
3945 |
msgstr ""
|
3946 |
|
3947 |
+
#: defaults.php:540
|
3948 |
msgid "User Enabled/Disabled SEO analysis in the Yoast SEO plugin settings"
|
3949 |
msgstr ""
|
3950 |
|
3951 |
+
#: defaults.php:540
|
3952 |
msgid "%Status% SEO analysis in the Yoast SEO plugin settings."
|
3953 |
msgstr ""
|
3954 |
|
3955 |
+
#: defaults.php:541
|
3956 |
msgid ""
|
3957 |
"User Enabled/Disabled readability analysis in the Yoast SEO plugin settings"
|
3958 |
msgstr ""
|
3959 |
|
3960 |
+
#: defaults.php:541
|
3961 |
msgid "%Status% Readability analysis in the Yoast SEO plugin settings."
|
3962 |
msgstr ""
|
3963 |
|
3964 |
+
#: defaults.php:542
|
3965 |
msgid ""
|
3966 |
"User Enabled/Disabled cornerstone content in the Yoast SEO plugin settings"
|
3967 |
msgstr ""
|
3968 |
|
3969 |
+
#: defaults.php:542
|
3970 |
msgid "%Status% Cornerstone content in the Yoast SEO plugin settings."
|
3971 |
msgstr ""
|
3972 |
|
3973 |
+
#: defaults.php:543
|
3974 |
msgid ""
|
3975 |
"User Enabled/Disabled the text link counter in the Yoast SEO plugin settings"
|
3976 |
msgstr ""
|
3977 |
|
3978 |
+
#: defaults.php:543
|
3979 |
msgid "%Status% the Text link counter in the Yoast SEO plugin settings."
|
3980 |
msgstr ""
|
3981 |
|
3982 |
+
#: defaults.php:544
|
3983 |
msgid "User Enabled/Disabled XML sitemaps in the Yoast SEO plugin settings"
|
3984 |
msgstr ""
|
3985 |
|
3986 |
+
#: defaults.php:544
|
3987 |
msgid "%Status% XML Sitemaps in the Yoast SEO plugin settings."
|
3988 |
msgstr ""
|
3989 |
|
3990 |
+
#: defaults.php:545
|
3991 |
msgid "User Enabled/Disabled ryte integration in the Yoast SEO plugin settings"
|
3992 |
msgstr ""
|
3993 |
|
3994 |
+
#: defaults.php:545
|
3995 |
msgid "%Status% Ryte Integration in the Yoast SEO plugin settings."
|
3996 |
msgstr ""
|
3997 |
|
3998 |
+
#: defaults.php:546
|
3999 |
msgid ""
|
4000 |
"User Enabled/Disabled the admin bar menu in the Yoast SEO plugin settings"
|
4001 |
msgstr ""
|
4002 |
|
4003 |
+
#: defaults.php:546
|
4004 |
msgid "%Status% the Admin bar menu in the Yoast SEO plugin settings."
|
4005 |
msgstr ""
|
4006 |
|
4007 |
+
#: defaults.php:547
|
4008 |
msgid ""
|
4009 |
"User changed the Posts/Pages meta description template in the Yoast SEO "
|
4010 |
"plugin settings"
|
4011 |
msgstr ""
|
4012 |
|
4013 |
+
#: defaults.php:547
|
4014 |
msgid ""
|
4015 |
"Changed the %SEOPostType% meta description template from %old% to %new% in "
|
4016 |
"the Yoast SEO plugin settings."
|
4017 |
msgstr ""
|
4018 |
|
4019 |
+
#: defaults.php:548
|
4020 |
msgid ""
|
4021 |
"User set the option Date in Snippet Preview for Posts/Pages in the Yoast SEO "
|
4022 |
"plugin settings"
|
4023 |
msgstr ""
|
4024 |
|
4025 |
+
#: defaults.php:548
|
4026 |
msgid ""
|
4027 |
"%Status% the option Date in Snippet Preview for %SEOPostType% in the Yoast "
|
4028 |
"SEO plugin settings."
|
4029 |
msgstr ""
|
4030 |
|
4031 |
+
#: defaults.php:549
|
4032 |
msgid ""
|
4033 |
"User set the option Yoast SEO Meta Box for Posts/Pages in the Yoast SEO "
|
4034 |
"plugin settings"
|
4035 |
msgstr ""
|
4036 |
|
4037 |
+
#: defaults.php:549
|
4038 |
msgid ""
|
4039 |
"%Status% the option Yoast SEO Meta Box for %SEOPostType% in the Yoast SEO "
|
4040 |
"plugin settings."
|
4041 |
msgstr ""
|
4042 |
|
4043 |
+
#: defaults.php:550
|
4044 |
msgid ""
|
4045 |
"User Enabled/Disabled the advanced settings for authors in the Yoast SEO "
|
4046 |
"plugin settings"
|
4047 |
msgstr ""
|
4048 |
|
4049 |
+
#: defaults.php:550
|
4050 |
msgid "%Status% the advanced settings for authors in the Yoast SEO settings."
|
4051 |
msgstr ""
|
4052 |
|
4053 |
+
#: wp-security-audit-log.php:304 wp-security-audit-log.php:330
|
|
|
4054 |
#, php-format
|
4055 |
msgid "Hey %1$s"
|
4056 |
msgstr ""
|
4057 |
|
4058 |
+
#: wp-security-audit-log.php:305
|
4059 |
msgid ""
|
4060 |
"Never miss an important update! Opt-in to our security and feature updates "
|
4061 |
"notifications, and non-sensitive diagnostic tracking with freemius.com."
|
4062 |
msgstr ""
|
4063 |
|
4064 |
+
#: wp-security-audit-log.php:306 wp-security-audit-log.php:332
|
4065 |
msgid "Note: "
|
4066 |
msgstr ""
|
4067 |
|
4068 |
+
#: wp-security-audit-log.php:307 wp-security-audit-log.php:333
|
4069 |
msgid "NO AUDIT LOG ACTIVITY & DATA IS SENT BACK TO OUR SERVERS."
|
4070 |
msgstr ""
|
4071 |
|
4072 |
+
#: wp-security-audit-log.php:331
|
|
|
4073 |
#, php-format
|
4074 |
msgid ""
|
4075 |
"Please help us improve %2$s! If you opt-in, some non-sensitive data about "
|
4077 |
"use. If you skip this, that's okay! %2$s will still work just fine."
|
4078 |
msgstr ""
|
4079 |
|
4080 |
+
#: wp-security-audit-log.php:382
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4081 |
msgid ""
|
4082 |
"Error: You do not have sufficient permissions to disable this custom field."
|
4083 |
msgstr ""
|
4084 |
|
4085 |
+
#: wp-security-audit-log.php:418
|
4086 |
msgid "Error: You do not have sufficient permissions to disable this alert."
|
4087 |
msgstr ""
|
4088 |
|
4089 |
+
#: wp-security-audit-log.php:530
|
4090 |
#, php-format
|
4091 |
msgid ""
|
4092 |
"You are using a version of PHP that is older than %s, which is no longer "
|
4093 |
"supported."
|
4094 |
msgstr ""
|
4095 |
|
4096 |
+
#: wp-security-audit-log.php:531
|
4097 |
msgid ""
|
4098 |
"Contact us on <a href=\"mailto:plugins@wpwhitesecurity.com"
|
4099 |
"\">plugins@wpwhitesecurity.com</a> to help you switch the version of PHP you "
|
4100 |
"are using."
|
4101 |
msgstr ""
|
4102 |
|
4103 |
+
#. Plugin Name of the plugin/theme
|
4104 |
+
msgid "WP Security Audit Log"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4105 |
msgstr ""
|
4106 |
|
4107 |
#. Plugin URI of the plugin/theme
|
4108 |
+
#. Author URI of the plugin/theme
|
4109 |
msgid "http://www.wpsecurityauditlog.com/"
|
4110 |
msgstr ""
|
4111 |
|
4122 |
#. Author of the plugin/theme
|
4123 |
msgid "WP White Security"
|
4124 |
msgstr ""
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -5,8 +5,8 @@ License: GPLv3
|
|
5 |
License URI: http://www.gnu.org/licenses/gpl.html
|
6 |
Tags: wordpress security plugin, wordpress security audit log, audit log, activity logs, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, wordpress security monitor, wordpress admin, wordpress admin monitoring, user activity, admin, multisite, dashboard, notification, wordpress monitoring, email notification, wordpress email alerts, tracking, user tracking, user activity report, wordpress audit trail
|
7 |
Requires at least: 3.6
|
8 |
-
Tested up to: 5.0
|
9 |
-
Stable tag: 3.
|
10 |
Requires PHP: 5.4.43
|
11 |
|
12 |
An easy to use & comprehensive WordPress activity log plugin to log all changes on WordPress sites & multisite networks.
|
@@ -114,7 +114,7 @@ Refer to the <strong>[WordPress activity log plugin datasheet](https://www.wpsec
|
|
114 |
### As Featured On:
|
115 |
|
116 |
* [GoDaddy](https://www.godaddy.com/garage/decode-security-logs-wordpress/)
|
117 |
-
* [Kinsta](https://kinsta.com/blog/wordpress-activity-log/)
|
118 |
* [Pagely](https://pagely.com/blog/2015/01/log-wordpress-dashboard-activity-improved-security-auditing/)
|
119 |
* [Shout Me Loud](https://www.shoutmeloud.com/wordpress-security-audit-log.html)
|
120 |
* [The Dev Couple](https://thedevcouple.com/wp-security-audit-log-review/)
|
@@ -195,16 +195,32 @@ Please refer to our [Support & Documentation pages](https://www.wpsecurityauditl
|
|
195 |
|
196 |
== Changelog ==
|
197 |
|
198 |
-
= 3.
|
199 |
-
|
200 |
-
Release Notes: [
|
201 |
-
|
202 |
-
* **New
|
203 |
-
*
|
204 |
-
*
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
*
|
210 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
License URI: http://www.gnu.org/licenses/gpl.html
|
6 |
Tags: wordpress security plugin, wordpress security audit log, audit log, activity logs, event log wordpress, wordpress user tracking, wordpress activity log, wordpress audit, security event log, audit trail, wordpress security monitor, wordpress admin, wordpress admin monitoring, user activity, admin, multisite, dashboard, notification, wordpress monitoring, email notification, wordpress email alerts, tracking, user tracking, user activity report, wordpress audit trail
|
7 |
Requires at least: 3.6
|
8 |
+
Tested up to: 5.0.1
|
9 |
+
Stable tag: 3.3
|
10 |
Requires PHP: 5.4.43
|
11 |
|
12 |
An easy to use & comprehensive WordPress activity log plugin to log all changes on WordPress sites & multisite networks.
|
114 |
### As Featured On:
|
115 |
|
116 |
* [GoDaddy](https://www.godaddy.com/garage/decode-security-logs-wordpress/)
|
117 |
+
* [Kinsta](https://kinsta.com/blog/wordpress-activity-log/)
|
118 |
* [Pagely](https://pagely.com/blog/2015/01/log-wordpress-dashboard-activity-improved-security-auditing/)
|
119 |
* [Shout Me Loud](https://www.shoutmeloud.com/wordpress-security-audit-log.html)
|
120 |
* [The Dev Couple](https://thedevcouple.com/wp-security-audit-log-review/)
|
195 |
|
196 |
== Changelog ==
|
197 |
|
198 |
+
= 3.3 (2018-12-13) =
|
199 |
+
|
200 |
+
Release Notes: [Slack Support & New External Connections UI](https://www.wpsecurityauditlog.com/releases/external-connections-update-slack-support-3-3/)
|
201 |
+
|
202 |
+
* **New Features**
|
203 |
+
* Slack support - [mirror WordPress activity log for Slack](https://www.wpsecurityauditlog.com/support-documentation/mirror-wordpress-activity-logs-slack-channel/).
|
204 |
+
* New UI and totally revamped the [external databases & services connections module](https://www.wpsecurityauditlog.com/support-documentation/getting-started-external-databases-third-party-services/).
|
205 |
+
* Ability to mirror the WordPress activity logs to multiple destinations.
|
206 |
+
|
207 |
+
* **Improvements**
|
208 |
+
* Maximum file size for [WordPress file integrity scans](https://www.wpsecurityauditlog.com/support-documentation/wordpress-files-changes-warning-activity-logs/) is now configurable.
|
209 |
+
* Updated the Freemius SDK to 2.2.2 (addresses a MainWP conflict fix).
|
210 |
+
* Plugin access can now be restricted to super administrators only on a multisite network.
|
211 |
+
* Multiple scan started / stopped events per directory merged into one.
|
212 |
+
* Added 1 and 4 hours option to terminate idle users sessions setting.
|
213 |
+
* Plugin now always keeps a log a post updates, even if update is not done via the editor.
|
214 |
+
* Better handling of terminated users sessions (in hung state, blocking legit logins).
|
215 |
+
* Access to plugin now can be restricted to super admin role on multisite networks.
|
216 |
+
* User info in daily activity log summary email is now variable - the same as configured in the plugin settings.
|
217 |
+
* Limited Freemius user messages to users who can view & manage the plugin.
|
218 |
+
* Addded support for a dot in the time format (e.g: d.-m-Y G:i)
|
219 |
+
|
220 |
+
* **Bug Fixes**
|
221 |
+
* Better handling of data from the REST API [Support ticket](https://wordpress.org/support/topic/error-implode-invalid-arguments-when-using-register_rest_route/).
|
222 |
+
* Fixed: two daily activity log emails were being sent instead of one.
|
223 |
+
* Restricted the starter license (had access to some pro features).
|
224 |
+
* Fixed a number of minor warnings when running the plugin on PHP7.
|
225 |
+
* Logins when using the [Two-Factor plugin](https://wordpress.org/plugins/two-factor/) are now logged properly.
|
226 |
+
* Fixed - first time setup wizard prompt not always showing.
|
sdk/freemius/assets/css/admin/deactivation-feedback.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}.fs-modal .fs-modal-dialog li.reason{margin-bottom:10px}.fs-modal .fs-modal-dialog li.reason .reason-input,.fs-modal .fs-modal-dialog li.reason .internal-message{margin-left:29px}.fs-modal .fs-modal-dialog li.reason label{display:table}.fs-modal .fs-modal-dialog li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body h2{font-size:20px}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}.fs-modal .reason-input,.fs-modal .internal-message{margin:3px 0 3px 22px}.fs-modal .reason-input input,.fs-modal .reason-input textarea,.fs-modal .internal-message input,.fs-modal .internal-message textarea{width:100%}.fs-modal li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}body.has-fs-modal{overflow:hidden}#the-list .deactivate>.fs-slug{display:none}
|
|
sdk/freemius/assets/css/admin/dialog-boxes.css
CHANGED
@@ -1,2 +1,2 @@
|
|
1 |
-
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}#license_options_container table,#license_options_container table select,#license_options_container table #available_license_key{width:100%}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}
|
2 |
-
.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}
|
1 |
+
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:bold;padding:0 25px;margin-bottom:0}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;top:5px;position:relative}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}#license_options_container table,#license_options_container table select,#license_options_container table #available_license_key{width:100%}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}
|
2 |
+
.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}.button-primary.warn{box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c;background:#f56a48;border-color:#ec6544 #d2593c #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{color:#f5b3a1 !important;background:#e76444 !important;border-color:#d85e40 !important;text-shadow:0 -1px 0 rgba(0,0,0,0.1) !important}
|
sdk/freemius/assets/css/admin/license-activation.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body .license-activation-message{margin:0;display:none}.fs-modal .fs-modal-body input.license_key{width:100%}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel:not(.active){display:none}body.has-fs-modal{overflow:hidden}
|
|
sdk/freemius/assets/scss/_colors.scss
CHANGED
@@ -44,6 +44,17 @@ $button-secondary-bkg: #333;
|
|
44 |
$button-secondary-color: $fms-white;
|
45 |
$featured-color: #6bc406;
|
46 |
$wp-selected-color: #0074a3;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
$wordpress_color: #01749A;
|
49 |
$blogger_color: #ff8100;
|
44 |
$button-secondary-color: $fms-white;
|
45 |
$featured-color: #6bc406;
|
46 |
$wp-selected-color: #0074a3;
|
47 |
+
$wp-button-alert-border-color: #d2593c;
|
48 |
+
$wp-button-alert-border-top-color: #ec6544;
|
49 |
+
$wp-button-alert-shadow-color: #d2593c;
|
50 |
+
$wp-button-alert-focused-shadow1-color: #dd6041;
|
51 |
+
$wp-button-alert-focused-shadow2-color: #e4a796;
|
52 |
+
$wp-button-alert-background-color: #f56a48;
|
53 |
+
$wp-button-alert-hovered-background-color: #fd6d4a;
|
54 |
+
$wp-button-alert-active-background-color: #dd6041;
|
55 |
+
$wp-button-alert-disabled-color: #f5b3a1;
|
56 |
+
$wp-button-alert-disabled-background-color: #e76444;
|
57 |
+
$wp-button-alert-disabled-border-color: #d85e40;
|
58 |
|
59 |
$wordpress_color: #01749A;
|
60 |
$blogger_color: #ff8100;
|
sdk/freemius/assets/scss/admin/_buttons.scss
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.button-primary.warn {
|
2 |
+
box-shadow: 0 1px 0 $wp-button-alert-shadow-color;
|
3 |
+
text-shadow: 0 -1px 1px $wp-button-alert-shadow-color, 1px 0 1px $wp-button-alert-shadow-color, 0 1px 1px $wp-button-alert-shadow-color, -1px 0 1px $wp-button-alert-shadow-color;
|
4 |
+
background: $wp-button-alert-background-color;
|
5 |
+
border-color: $wp-button-alert-border-top-color $wp-button-alert-border-color $wp-button-alert-border-color;
|
6 |
+
|
7 |
+
&:hover {
|
8 |
+
background: $wp-button-alert-hovered-background-color;
|
9 |
+
border-color: $wp-button-alert-border-color;
|
10 |
+
}
|
11 |
+
|
12 |
+
&:focus {
|
13 |
+
box-shadow: 0 1px 0 $wp-button-alert-focused-shadow1-color, 0 0 2px 1px $wp-button-alert-focused-shadow2-color;
|
14 |
+
}
|
15 |
+
|
16 |
+
&:active {
|
17 |
+
background: $wp-button-alert-active-background-color;
|
18 |
+
border-color: $wp-button-alert-border-color;
|
19 |
+
box-shadow: inset 0 2px 0 $wp-button-alert-shadow-color;
|
20 |
+
}
|
21 |
+
|
22 |
+
&.disabled {
|
23 |
+
color: $wp-button-alert-disabled-color !important;
|
24 |
+
background: $wp-button-alert-disabled-background-color !important;
|
25 |
+
border-color: $wp-button-alert-disabled-border-color !important;
|
26 |
+
text-shadow: 0 -1px 0 rgba(0,0,0,.1) !important;
|
27 |
+
}
|
28 |
+
}
|
sdk/freemius/assets/scss/admin/_subscription-cancellation.scss
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.fs-modal.fs-modal-subscription-cancellation {
|
2 |
+
.fs-price-increase-warning {
|
3 |
+
color: red;
|
4 |
+
font-weight: bold;
|
5 |
+
padding: 0 25px;
|
6 |
+
margin-bottom: 0;
|
7 |
+
}
|
8 |
+
|
9 |
+
ul.subscription-actions label {
|
10 |
+
input {
|
11 |
+
float: left;
|
12 |
+
top: 5px;
|
13 |
+
position: relative;
|
14 |
+
|
15 |
+
.rtl & {
|
16 |
+
float: right;
|
17 |
+
}
|
18 |
+
}
|
19 |
+
|
20 |
+
span {
|
21 |
+
display: block;
|
22 |
+
margin-left: 24px;
|
23 |
+
|
24 |
+
.rtl & {
|
25 |
+
margin-left: 0;
|
26 |
+
margin-right: 24px;
|
27 |
+
}
|
28 |
+
}
|
29 |
+
}
|
30 |
+
}
|
sdk/freemius/assets/scss/admin/dialog-boxes.scss
CHANGED
@@ -1,8 +1,10 @@
|
|
1 |
@import "../start";
|
2 |
@import "modal-common";
|
3 |
@import "deactivation-feedback";
|
|
|
4 |
@import "license-activation";
|
5 |
@import "multisite-options";
|
6 |
@import "license-key-resend";
|
7 |
@import "ajax-loader";
|
8 |
-
@import "auto-install";
|
|
1 |
@import "../start";
|
2 |
@import "modal-common";
|
3 |
@import "deactivation-feedback";
|
4 |
+
@import "subscription-cancellation";
|
5 |
@import "license-activation";
|
6 |
@import "multisite-options";
|
7 |
@import "license-key-resend";
|
8 |
@import "ajax-loader";
|
9 |
+
@import "auto-install";
|
10 |
+
@import "buttons";
|
sdk/freemius/assets/scss/admin/plugin-upgrade-notice.scss
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.plugins p.upgrade-notice
|
2 |
+
{
|
3 |
+
border: 0;
|
4 |
+
background-color: #d54e21;
|
5 |
+
padding: 10px;
|
6 |
+
color: #f9f9f9;
|
7 |
+
margin-top: 10px;
|
8 |
+
}
|
sdk/freemius/includes/class-freemius.php
CHANGED
@@ -33,6 +33,12 @@
|
|
33 |
* @var string
|
34 |
*/
|
35 |
private $_plugin_basename;
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
/**
|
37 |
* @since 1.0.0
|
38 |
*
|
@@ -671,11 +677,12 @@
|
|
671 |
version_compare( $sdk_version, '1.2.3', '>=' )
|
672 |
) {
|
673 |
/**
|
674 |
-
* Starting from version 1.2.3, paths are stored as relative
|
|
|
675 |
*
|
676 |
* @author Leo Fajardo (@leorw)
|
677 |
*/
|
678 |
-
$this->
|
679 |
}
|
680 |
|
681 |
if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
|
@@ -699,6 +706,25 @@
|
|
699 |
|
700 |
}
|
701 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
702 |
}
|
703 |
|
704 |
/**
|
@@ -824,30 +850,12 @@
|
|
824 |
}
|
825 |
|
826 |
/**
|
827 |
-
*
|
828 |
*
|
829 |
* @author Leo Fajardo (@leorw)
|
830 |
* @since 1.2.3
|
831 |
*/
|
832 |
-
private function
|
833 |
-
$id_slug_type_path_map = self::$_accounts->get_option( 'id_slug_type_path_map', array() );
|
834 |
-
|
835 |
-
if ( isset( $id_slug_type_path_map[ $this->_module_id ]['path'] ) ) {
|
836 |
-
$id_slug_type_path_map[ $this->_module_id ]['path'] = $this->get_relative_path( $id_slug_type_path_map[ $this->_module_id ]['path'] );
|
837 |
-
|
838 |
-
self::$_accounts->set_option( 'id_slug_type_path_map', $id_slug_type_path_map, true );
|
839 |
-
}
|
840 |
-
|
841 |
-
if ( isset( $this->_storage->plugin_main_file ) ) {
|
842 |
-
$plugin_main_file = $this->_storage->plugin_main_file;
|
843 |
-
|
844 |
-
if ( isset( $plugin_main_file->path ) ) {
|
845 |
-
$this->_storage->plugin_main_file->path = $this->get_relative_path( $this->_storage->plugin_main_file->path );
|
846 |
-
} else if ( isset( $plugin_main_file->prev_path ) ) {
|
847 |
-
$this->_storage->plugin_main_file->prev_path = $this->get_relative_path( $this->_storage->plugin_main_file->prev_path );
|
848 |
-
}
|
849 |
-
}
|
850 |
-
|
851 |
// Remove invalid path that is still associated with the current slug if there's any.
|
852 |
$file_slug_map = self::$_accounts->get_option( 'file_slug_map', array() );
|
853 |
foreach ( $file_slug_map as $plugin_basename => $slug ) {
|
@@ -1230,6 +1238,22 @@
|
|
1230 |
<?php
|
1231 |
}
|
1232 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1233 |
/**
|
1234 |
* @author Vova Feldman (@svovaf)
|
1235 |
* @since 1.0.9
|
@@ -1428,23 +1452,37 @@
|
|
1428 |
|
1429 |
/**
|
1430 |
* @since 1.2.0 Invalidate module's main file cache, otherwise, FS_Plugin_Updater will not fetch updates.
|
|
|
|
|
1431 |
*/
|
1432 |
-
private function clear_module_main_file_cache() {
|
1433 |
if ( ! isset( $this->_storage->plugin_main_file ) ||
|
1434 |
-
|
1435 |
) {
|
1436 |
return;
|
1437 |
}
|
1438 |
|
1439 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1440 |
|
1441 |
-
|
1442 |
-
|
1443 |
|
1444 |
-
|
1445 |
-
|
1446 |
|
1447 |
-
|
|
|
1448 |
|
1449 |
/**
|
1450 |
* Clear global cached path.
|
@@ -1491,15 +1529,32 @@
|
|
1491 |
array( &$this, '_submit_uninstall_reason_action' )
|
1492 |
);
|
1493 |
|
|
|
|
|
|
|
|
|
|
|
1494 |
if ( ! $this->is_addon() || $this->is_parent_plugin_installed() ) {
|
1495 |
if ( ( $this->is_plugin() && self::is_plugins_page() ) ||
|
1496 |
( $this->is_theme() && self::is_themes_page() )
|
1497 |
) {
|
1498 |
add_action( 'admin_footer', array( &$this, '_add_deactivation_feedback_dialog_box' ) );
|
|
|
|
|
|
|
|
|
1499 |
}
|
1500 |
}
|
1501 |
}
|
1502 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1503 |
/**
|
1504 |
* Leverage backtrace to find caller plugin file path.
|
1505 |
*
|
@@ -1680,11 +1735,11 @@
|
|
1680 |
private function get_caller_main_file_and_type() {
|
1681 |
self::require_plugin_essentials();
|
1682 |
|
1683 |
-
$all_plugins =
|
1684 |
$all_plugins_paths = array();
|
1685 |
|
1686 |
// Get active plugin's main files real full names (might be symlinks).
|
1687 |
-
foreach ( $all_plugins as $relative_path =>
|
1688 |
if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) {
|
1689 |
/**
|
1690 |
* Ignore plugins that don't have a folder (e.g. Hello Dolly) since they
|
@@ -1722,7 +1777,10 @@
|
|
1722 |
'requir' . 'e_once',
|
1723 |
'requir' . 'e',
|
1724 |
'includ' . 'e_once',
|
1725 |
-
'includ' . 'e'
|
|
|
|
|
|
|
1726 |
) )
|
1727 |
) {
|
1728 |
// Ignore call stack hooks and files inclusion.
|
@@ -2058,6 +2116,51 @@
|
|
2058 |
exit;
|
2059 |
}
|
2060 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2061 |
/**
|
2062 |
* @author Leo Fajardo (@leorw)
|
2063 |
* @since 2.0.2
|
@@ -2134,16 +2237,18 @@
|
|
2134 |
* @since 1.2.2
|
2135 |
*
|
2136 |
* @param string|number $id_or_slug
|
|
|
2137 |
*
|
2138 |
* @return number|false
|
2139 |
*/
|
2140 |
-
private static function get_module_id( $id_or_slug ) {
|
2141 |
if ( is_numeric( $id_or_slug ) ) {
|
2142 |
return $id_or_slug;
|
2143 |
}
|
2144 |
|
2145 |
foreach ( self::$_instances as $instance ) {
|
2146 |
-
|
|
|
2147 |
return $instance->get_id();
|
2148 |
}
|
2149 |
}
|
@@ -2170,15 +2275,16 @@
|
|
2170 |
* @author Vova Feldman (@svovaf)
|
2171 |
* @since 1.0.1
|
2172 |
*
|
2173 |
-
* @param $plugin_file
|
|
|
2174 |
*
|
2175 |
* @return false|Freemius
|
2176 |
*/
|
2177 |
-
static function get_instance_by_file( $plugin_file ) {
|
2178 |
$slug = self::find_slug_by_basename( $plugin_file );
|
2179 |
|
2180 |
return ( false !== $slug ) ?
|
2181 |
-
self::instance( self::get_module_id( $slug ) ) :
|
2182 |
false;
|
2183 |
}
|
2184 |
|
@@ -2292,10 +2398,13 @@
|
|
2292 |
function is_site_activation_mode( $and_on = true ) {
|
2293 |
return (
|
2294 |
( $this->is_on() || ! $and_on ) &&
|
2295 |
-
(
|
2296 |
-
|
2297 |
-
|
2298 |
-
|
|
|
|
|
|
|
2299 |
);
|
2300 |
}
|
2301 |
|
@@ -2330,7 +2439,7 @@
|
|
2330 |
return false;
|
2331 |
}
|
2332 |
|
2333 |
-
if ( $this->is_network_anonymous() ) {
|
2334 |
// Super-admin skipped the connection network wide -> not activation mode.
|
2335 |
return false;
|
2336 |
}
|
@@ -2451,7 +2560,7 @@
|
|
2451 |
self::require_plugin_essentials();
|
2452 |
|
2453 |
$active_plugin = array();
|
2454 |
-
$all_plugins =
|
2455 |
$active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
|
2456 |
|
2457 |
foreach ( $active_plugins_basenames as $plugin_basename ) {
|
@@ -2501,7 +2610,7 @@
|
|
2501 |
private static function get_all_plugins( $blog_id = 0 ) {
|
2502 |
self::require_plugin_essentials();
|
2503 |
|
2504 |
-
$all_plugins =
|
2505 |
|
2506 |
$active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
|
2507 |
|
@@ -2533,7 +2642,7 @@
|
|
2533 |
private static function get_network_plugins() {
|
2534 |
self::require_plugin_essentials();
|
2535 |
|
2536 |
-
$all_plugins =
|
2537 |
|
2538 |
$network_active_basenames = is_multisite() ?
|
2539 |
get_site_option( 'active_sitewide_plugins' ) :
|
@@ -2677,6 +2786,8 @@
|
|
2677 |
}
|
2678 |
|
2679 |
add_action( 'admin_footer', array( 'Freemius', '_enrich_ajax_url' ) );
|
|
|
|
|
2680 |
|
2681 |
self::$_statics_loaded = true;
|
2682 |
}
|
@@ -3165,7 +3276,7 @@
|
|
3165 |
if ( $is_connected ) {
|
3166 |
FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
|
3167 |
}
|
3168 |
-
|
3169 |
$this->store_connectivity_info( $pong, $is_connected );
|
3170 |
|
3171 |
return $this->_has_api_connection;
|
@@ -4068,14 +4179,15 @@
|
|
4068 |
* @author Vova Feldman (@svovaf)
|
4069 |
*/
|
4070 |
if ( $this->is_user_in_admin() &&
|
4071 |
-
|
4072 |
-
|
4073 |
-
|
4074 |
-
|
|
|
4075 |
) {
|
4076 |
require_once WP_FS__DIR_INCLUDES . '/fs-plugin-info-dialog.php';
|
4077 |
|
4078 |
-
new FS_Plugin_Info_Dialog( $this );
|
4079 |
}
|
4080 |
|
4081 |
// Check if Freemius is on for the current plugin.
|
@@ -4668,16 +4780,20 @@
|
|
4668 |
$this->_plugin :
|
4669 |
new FS_Plugin();
|
4670 |
|
|
|
|
|
4671 |
$plugin->update( array(
|
4672 |
'id' => $id,
|
4673 |
'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ),
|
4674 |
'public_key' => $public_key,
|
4675 |
'slug' => $this->_slug,
|
|
|
4676 |
'parent_plugin_id' => $parent_id,
|
4677 |
'version' => $this->get_plugin_version(),
|
4678 |
-
'title' => $this->get_plugin_name(),
|
4679 |
'file' => $this->_plugin_basename,
|
4680 |
'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
|
|
|
4681 |
'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
|
4682 |
'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
|
4683 |
) );
|
@@ -5058,7 +5174,7 @@
|
|
5058 |
}
|
5059 |
|
5060 |
$addon = $this->get_addon( $addon_id );
|
5061 |
-
$premium_basename = "{$addon->
|
5062 |
|
5063 |
if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) {
|
5064 |
return $premium_basename;
|
@@ -5066,9 +5182,9 @@
|
|
5066 |
|
5067 |
$all_plugins = $this->get_all_plugins();
|
5068 |
|
5069 |
-
foreach ( $all_plugins as $basename =>
|
5070 |
if ( $addon->slug === $data['slug'] ||
|
5071 |
-
$addon->
|
5072 |
) {
|
5073 |
return $basename;
|
5074 |
}
|
@@ -5308,7 +5424,7 @@
|
|
5308 |
if ( ! isset( $this->_is_anonymous ) ) {
|
5309 |
if ( $this->is_network_anonymous() ) {
|
5310 |
$this->_is_anonymous = true;
|
5311 |
-
} else {
|
5312 |
if ( ! isset( $this->_storage->is_anonymous ) ) {
|
5313 |
// Not skipped.
|
5314 |
$this->_is_anonymous = false;
|
@@ -5774,6 +5890,8 @@
|
|
5774 |
}
|
5775 |
}
|
5776 |
|
|
|
|
|
5777 |
foreach ( $users_2_blog_ids as $user_id => $blog_ids ) {
|
5778 |
if ( 0 < $blog_ids[0] ) {
|
5779 |
$this->switch_to_blog( $blog_ids[0] );
|
@@ -5787,6 +5905,8 @@
|
|
5787 |
}
|
5788 |
|
5789 |
if ( is_multisite() ) {
|
|
|
|
|
5790 |
$this->do_action( "after_{$name}_cron_multisite" );
|
5791 |
}
|
5792 |
}
|
@@ -6185,6 +6305,7 @@
|
|
6185 |
if ( ! $this->is_addon() &&
|
6186 |
! ( ! $this->_is_network_active && fs_is_network_admin() ) &&
|
6187 |
(
|
|
|
6188 |
// Not registered nor anonymous.
|
6189 |
( ! $this->is_registered() && ! $this->is_anonymous() ) ||
|
6190 |
// OR, network level and in network upgrade mode.
|
@@ -6201,14 +6322,18 @@
|
|
6201 |
* @since 1.2.2
|
6202 |
*/
|
6203 |
if ( $this->is_theme()
|
6204 |
-
&& $this->is_only_premium()
|
6205 |
&& ! $this->has_settings_menu()
|
6206 |
&& ! isset( $_REQUEST['fs_action'] )
|
6207 |
&& $this->can_activate_previous_theme()
|
6208 |
) {
|
6209 |
-
$this->
|
|
|
|
|
|
|
6210 |
|
6211 |
-
|
|
|
|
|
6212 |
}
|
6213 |
|
6214 |
if ( ! fs_is_network_admin() &&
|
@@ -6308,7 +6433,7 @@
|
|
6308 |
$this->_module_type,
|
6309 |
sprintf( '<b><a href="%s">%s</a></b>',
|
6310 |
$this->get_activation_url(),
|
6311 |
-
sprintf( $this->get_text_inline( 'Opt in to make "%s"
|
6312 |
)
|
6313 |
),
|
6314 |
'connect_account',
|
@@ -6770,6 +6895,20 @@
|
|
6770 |
}
|
6771 |
}
|
6772 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6773 |
if ( ! isset( $this->_storage->is_plugin_new_install ) ) {
|
6774 |
/**
|
6775 |
* If no previous version of plugin's version exist, it means that it's either
|
@@ -7039,7 +7178,7 @@
|
|
7039 |
private function remove_sdk_reference() {
|
7040 |
global $fs_active_plugins;
|
7041 |
|
7042 |
-
foreach ( $fs_active_plugins->plugins as $sdk_path =>
|
7043 |
if ( $this->_plugin_basename == $data->plugin_path ) {
|
7044 |
unset( $fs_active_plugins->plugins[ $sdk_path ] );
|
7045 |
break;
|
@@ -7221,6 +7360,23 @@
|
|
7221 |
}
|
7222 |
}
|
7223 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7224 |
/**
|
7225 |
* Clears the anonymous mode and redirects to the opt-in screen.
|
7226 |
*
|
@@ -7234,6 +7390,8 @@
|
|
7234 |
|
7235 |
$this->reset_anonymous_mode( fs_is_network_admin() );
|
7236 |
|
|
|
|
|
7237 |
fs_redirect( $this->get_activation_url() );
|
7238 |
}
|
7239 |
|
@@ -7692,14 +7850,13 @@
|
|
7692 |
}
|
7693 |
}
|
7694 |
|
7695 |
-
|
|
|
|
|
7696 |
'version' => $this->get_plugin_version(),
|
7697 |
'is_premium' => $this->is_premium(),
|
7698 |
'language' => get_bloginfo( 'language' ),
|
7699 |
'charset' => get_bloginfo( 'charset' ),
|
7700 |
-
'platform_version' => get_bloginfo( 'version' ),
|
7701 |
-
'sdk_version' => $this->version,
|
7702 |
-
'programming_language_version' => phpversion(),
|
7703 |
'title' => get_bloginfo( 'name' ),
|
7704 |
'url' => get_site_url(),
|
7705 |
// Special params.
|
@@ -7750,12 +7907,10 @@
|
|
7750 |
// }
|
7751 |
|
7752 |
// Common properties.
|
7753 |
-
$
|
7754 |
-
|
7755 |
-
'
|
7756 |
-
'
|
7757 |
-
'programming_language_version' => phpversion(),
|
7758 |
-
'platform_version' => get_bloginfo( 'version' ),
|
7759 |
), $override );
|
7760 |
|
7761 |
|
@@ -8171,14 +8326,59 @@
|
|
8171 |
// @todo Decide if we want to delete plugin information from db.
|
8172 |
}
|
8173 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8174 |
/**
|
8175 |
* @author Vova Feldman (@svovaf)
|
8176 |
* @since 1.1.1
|
|
|
8177 |
*
|
8178 |
* @return string
|
8179 |
*/
|
8180 |
function premium_plugin_basename() {
|
8181 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8182 |
}
|
8183 |
|
8184 |
/**
|
@@ -8317,13 +8517,29 @@
|
|
8317 |
}
|
8318 |
|
8319 |
/**
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8320 |
* @author Vova Feldman (@svovaf)
|
8321 |
* @since 1.2.1.7
|
8322 |
*
|
8323 |
* @return string Plugin slug.
|
8324 |
*/
|
8325 |
function get_target_folder_name() {
|
8326 |
-
return $this->
|
|
|
|
|
8327 |
}
|
8328 |
|
8329 |
/**
|
@@ -8394,31 +8610,63 @@
|
|
8394 |
* @author Vova Feldman (@svovaf)
|
8395 |
* @since 1.0.9
|
8396 |
*
|
|
|
|
|
8397 |
* @return string
|
8398 |
*/
|
8399 |
-
function get_plugin_name() {
|
8400 |
$this->_logger->entrance();
|
8401 |
|
|
|
|
|
|
|
|
|
|
|
8402 |
if ( ! isset( $this->_plugin_name ) ) {
|
8403 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8404 |
|
8405 |
-
|
8406 |
-
|
8407 |
|
8408 |
-
|
8409 |
-
|
8410 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8411 |
|
8412 |
-
|
8413 |
-
|
8414 |
-
|
8415 |
-
|
8416 |
-
|
8417 |
|
8418 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8419 |
}
|
8420 |
|
8421 |
-
|
8422 |
}
|
8423 |
|
8424 |
/**
|
@@ -9124,7 +9372,16 @@
|
|
9124 |
* @return bool
|
9125 |
*/
|
9126 |
function is_premium() {
|
9127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9128 |
}
|
9129 |
|
9130 |
/**
|
@@ -10514,6 +10771,56 @@
|
|
10514 |
fs_require_template( 'forms/resend-key.php', $vars );
|
10515 |
}
|
10516 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10517 |
/**
|
10518 |
* @author Leo Fajardo (@leorw)
|
10519 |
* @since 2.0.2
|
@@ -10616,7 +10923,7 @@
|
|
10616 |
*/
|
10617 |
function _activate_license_ajax_action() {
|
10618 |
$this->_logger->entrance();
|
10619 |
-
|
10620 |
$this->check_ajax_referer( 'activate_license' );
|
10621 |
|
10622 |
$license_key = trim( fs_request_get( 'license_key' ) );
|
@@ -10698,7 +11005,7 @@
|
|
10698 |
'license_key' => $fs->apply_filters( 'license_key', $license_key )
|
10699 |
);
|
10700 |
|
10701 |
-
$install = $api->call( '/', 'put', $params );
|
10702 |
|
10703 |
if ( FS_Api::is_api_error( $install ) ) {
|
10704 |
$error = FS_Api::is_api_error_object( $install ) ?
|
@@ -10791,6 +11098,10 @@
|
|
10791 |
}
|
10792 |
}
|
10793 |
|
|
|
|
|
|
|
|
|
10794 |
$result = array(
|
10795 |
'success' => ( false === $error )
|
10796 |
);
|
@@ -11343,6 +11654,40 @@
|
|
11343 |
return $this->get_upgrade_url( WP_FS__PERIOD_ANNUALLY, true );
|
11344 |
}
|
11345 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11346 |
/**
|
11347 |
* Plugin's pricing URL.
|
11348 |
*
|
@@ -11977,7 +12322,13 @@
|
|
11977 |
* @author Vova Feldman (@svovaf)
|
11978 |
*/
|
11979 |
$args = array(
|
11980 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
11981 |
'archived' => 0,
|
11982 |
'mature' => 0,
|
11983 |
'spam' => 0,
|
@@ -13122,6 +13473,12 @@
|
|
13122 |
}
|
13123 |
}
|
13124 |
|
|
|
|
|
|
|
|
|
|
|
|
|
13125 |
if ( $this->is_theme() ) {
|
13126 |
$this->_register_account_hooks();
|
13127 |
}
|
@@ -13187,6 +13544,30 @@
|
|
13187 |
|
13188 |
}
|
13189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13190 |
/**
|
13191 |
* @author Vova Feldman (@svovaf)
|
13192 |
* @since 1.1.7.4
|
@@ -13208,7 +13589,9 @@
|
|
13208 |
// Return to the module's main page.
|
13209 |
$this->get_after_activation_url( 'after_connect_url', array( 'fs_action' => $activation_action ) );
|
13210 |
|
13211 |
-
$
|
|
|
|
|
13212 |
'user_firstname' => $current_user->user_firstname,
|
13213 |
'user_lastname' => $current_user->user_lastname,
|
13214 |
'user_nickname' => $current_user->user_nicename,
|
@@ -13223,13 +13606,10 @@
|
|
13223 |
'account',
|
13224 |
array( 'fs_action' => 'sync_user' )
|
13225 |
), 'sync_user' ),
|
13226 |
-
'platform_version' => get_bloginfo( 'version' ),
|
13227 |
-
'sdk_version' => $this->version,
|
13228 |
-
'programming_language_version' => phpversion(),
|
13229 |
'is_premium' => $this->is_premium(),
|
13230 |
'is_active' => true,
|
13231 |
'is_uninstalled' => false,
|
13232 |
-
);
|
13233 |
|
13234 |
if ( true === $network_level_or_blog_id ) {
|
13235 |
if ( ! isset( $override_with['sites'] ) ) {
|
@@ -13415,7 +13795,7 @@
|
|
13415 |
'timeout' => WP_FS__DEBUG_SDK ? 60 : 30,
|
13416 |
);
|
13417 |
|
13418 |
-
$url = WP_FS__ADDRESS . '/action/service/user/install/';
|
13419 |
$response = self::safe_remote_post( $url, $request );
|
13420 |
|
13421 |
if ( is_wp_error( $response ) ) {
|
@@ -14572,7 +14952,7 @@
|
|
14572 |
|
14573 |
$hook = false;
|
14574 |
|
14575 |
-
if ( ! $this->
|
14576 |
// Add the opt-in page without a menu item.
|
14577 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
14578 |
null,
|
@@ -14920,15 +15300,25 @@
|
|
14920 |
}
|
14921 |
}
|
14922 |
|
14923 |
-
if (
|
14924 |
-
|
14925 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14926 |
|
14927 |
-
|
14928 |
-
|
14929 |
-
|
14930 |
-
|
14931 |
-
|
|
|
14932 |
}
|
14933 |
}
|
14934 |
}
|
@@ -14954,16 +15344,6 @@
|
|
14954 |
|
14955 |
foreach ( $this->_menu_items as $priority => $items ) {
|
14956 |
foreach ( $items as $item ) {
|
14957 |
-
if ( $item['show_submenu'] && $is_first_submenu_item ) {
|
14958 |
-
if ( $this->_is_network_active && ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
|
14959 |
-
$item['menu_slug'] = '';
|
14960 |
-
|
14961 |
-
$this->_menu->override_menu_item( $item['render_function'] );
|
14962 |
-
}
|
14963 |
-
|
14964 |
-
$is_first_submenu_item = false;
|
14965 |
-
}
|
14966 |
-
|
14967 |
$capability = ( ! empty( $item['capability'] ) ? $item['capability'] : $top_level_menu_capability );
|
14968 |
|
14969 |
$menu_item = sprintf(
|
@@ -14974,12 +15354,13 @@
|
|
14974 |
$item['menu_title']
|
14975 |
);
|
14976 |
|
14977 |
-
$
|
|
|
14978 |
|
14979 |
if ( ! isset( $item['url'] ) ) {
|
14980 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
14981 |
$item['show_submenu'] ?
|
14982 |
-
$
|
14983 |
null,
|
14984 |
$item['page_title'],
|
14985 |
$menu_item,
|
@@ -14994,7 +15375,7 @@
|
|
14994 |
} else {
|
14995 |
FS_Admin_Menu_Manager::add_subpage(
|
14996 |
$item['show_submenu'] ?
|
14997 |
-
$
|
14998 |
null,
|
14999 |
$item['page_title'],
|
15000 |
$menu_item,
|
@@ -15003,6 +15384,24 @@
|
|
15003 |
array( $this, '' )
|
15004 |
);
|
15005 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15006 |
}
|
15007 |
}
|
15008 |
}
|
@@ -16245,11 +16644,12 @@
|
|
16245 |
* @param bool|number $plugin_id
|
16246 |
* @param bool $flush Since 1.1.7.3
|
16247 |
* @param int $expiration Since 1.2.2.7
|
|
|
16248 |
*
|
16249 |
* @return object|false New plugin tag info if exist.
|
16250 |
*/
|
16251 |
-
private function _fetch_newer_version( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
|
16252 |
-
$latest_tag = $this->_fetch_latest_version( $plugin_id, $flush, $expiration );
|
16253 |
|
16254 |
if ( ! is_object( $latest_tag ) ) {
|
16255 |
return false;
|
@@ -16274,17 +16674,18 @@
|
|
16274 |
* @param bool|number $plugin_id
|
16275 |
* @param bool $flush Since 1.1.7.3
|
16276 |
* @param int $expiration Since 1.2.2.7
|
|
|
16277 |
*
|
16278 |
* @return bool|FS_Plugin_Tag
|
16279 |
*/
|
16280 |
-
function get_update( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) {
|
16281 |
$this->_logger->entrance();
|
16282 |
|
16283 |
if ( ! is_numeric( $plugin_id ) ) {
|
16284 |
$plugin_id = $this->_plugin->id;
|
16285 |
}
|
16286 |
|
16287 |
-
$this->check_updates( true, $plugin_id, $flush, $expiration );
|
16288 |
$updates = $this->get_all_updates();
|
16289 |
|
16290 |
return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
|
@@ -17068,6 +17469,18 @@
|
|
17068 |
$api = $this->get_api_site_scope();
|
17069 |
$license = $api->call( "/licenses/{$this->_site->license_id}.json", 'delete' );
|
17070 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17071 |
if ( isset( $license->error ) ) {
|
17072 |
$this->_admin_notices->add(
|
17073 |
$this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' .
|
@@ -17088,7 +17501,7 @@
|
|
17088 |
}
|
17089 |
}
|
17090 |
|
17091 |
-
//
|
17092 |
$this->_sync_plans();
|
17093 |
$this->_site->plan_id = $this->_plans[0]->id;
|
17094 |
// Unlink license from site.
|
@@ -17115,13 +17528,17 @@
|
|
17115 |
* @author Vova Feldman (@svovaf)
|
17116 |
* @since 1.0.4
|
17117 |
*
|
|
|
|
|
17118 |
* @uses FS_Api
|
17119 |
*/
|
17120 |
private function _downgrade_site() {
|
17121 |
$this->_logger->entrance();
|
17122 |
|
|
|
|
|
17123 |
$api = $this->get_api_site_scope();
|
17124 |
-
$site = $api->call( 'downgrade.json', 'put' );
|
17125 |
|
17126 |
$plan_downgraded = false;
|
17127 |
$plan = false;
|
@@ -17139,29 +17556,47 @@
|
|
17139 |
( is_object( $subscription ) && ! isset( $subscription->error ) && ! $subscription->is_active() );
|
17140 |
} else {
|
17141 |
// handle different error cases.
|
17142 |
-
|
|
|
|
|
|
|
17143 |
}
|
17144 |
|
17145 |
-
if ( $plan_downgraded ) {
|
17146 |
-
|
17147 |
-
|
17148 |
-
|
17149 |
-
$this->_admin_notices->add(
|
17150 |
-
sprintf( $this->get_text_inline( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ),
|
17151 |
-
$plan->title,
|
17152 |
-
human_time_diff( time(), strtotime( $this->_license->expiration ) )
|
17153 |
)
|
17154 |
);
|
|
|
17155 |
|
17156 |
-
|
17157 |
-
|
17158 |
-
|
17159 |
-
|
17160 |
-
|
17161 |
-
$
|
17162 |
-
|
17163 |
-
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17164 |
}
|
|
|
|
|
17165 |
}
|
17166 |
|
17167 |
/**
|
@@ -17268,22 +17703,19 @@
|
|
17268 |
* @author Vova Feldman (@svovaf)
|
17269 |
* @since 1.0.9
|
17270 |
*
|
|
|
|
|
17271 |
* @uses FS_Api
|
17272 |
*/
|
17273 |
private function _cancel_trial() {
|
17274 |
$this->_logger->entrance();
|
17275 |
|
17276 |
-
// Alias.
|
17277 |
-
$oops_text = $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...';
|
17278 |
-
|
17279 |
if ( ! $this->is_trial() ) {
|
17280 |
-
|
17281 |
-
|
17282 |
-
|
17283 |
-
|
17284 |
);
|
17285 |
-
|
17286 |
-
return;
|
17287 |
}
|
17288 |
|
17289 |
$trial_plan = $this->get_trial_plan();
|
@@ -17314,31 +17746,33 @@
|
|
17314 |
// @todo handle different error cases.
|
17315 |
}
|
17316 |
|
17317 |
-
if ( $trial_cancelled ) {
|
17318 |
-
|
17319 |
-
|
17320 |
-
|
17321 |
-
|
17322 |
-
|
17323 |
-
|
17324 |
|
17325 |
-
|
17326 |
-
|
|
|
|
|
|
|
|
|
17327 |
|
17328 |
-
|
17329 |
-
|
17330 |
-
|
17331 |
-
|
17332 |
-
|
17333 |
-
|
17334 |
-
}
|
17335 |
-
} else {
|
17336 |
$this->_admin_notices->add(
|
17337 |
-
$this->get_text_inline( '
|
17338 |
-
$oops_text,
|
17339 |
-
'error'
|
17340 |
);
|
17341 |
}
|
|
|
|
|
17342 |
}
|
17343 |
|
17344 |
/**
|
@@ -17409,15 +17843,19 @@
|
|
17409 |
* @since 1.0.4
|
17410 |
*
|
17411 |
* @param bool|number $addon_id
|
17412 |
-
* @param bool $flush
|
17413 |
-
* @param int $expiration
|
|
|
|
|
17414 |
*
|
17415 |
* @return object|false Plugin latest tag info.
|
17416 |
*/
|
17417 |
function _fetch_latest_version(
|
17418 |
$addon_id = false,
|
17419 |
$flush = true,
|
17420 |
-
$expiration = WP_FS__TIME_24_HOURS_IN_SEC
|
|
|
|
|
17421 |
) {
|
17422 |
$this->_logger->entrance();
|
17423 |
|
@@ -17468,8 +17906,18 @@
|
|
17468 |
$this->switch_to_blog( $switch_to_blog_id );
|
17469 |
}
|
17470 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17471 |
$tag = $this->get_api_site_or_plugin_scope()->get(
|
17472 |
-
$
|
17473 |
$flush,
|
17474 |
$expiration
|
17475 |
);
|
@@ -17605,17 +18053,19 @@
|
|
17605 |
* @param bool|number $plugin_id
|
17606 |
* @param bool $flush Since 1.1.7.3
|
17607 |
* @param int $expiration Since 1.2.2.7
|
|
|
17608 |
*/
|
17609 |
private function check_updates(
|
17610 |
$background = false,
|
17611 |
$plugin_id = false,
|
17612 |
$flush = true,
|
17613 |
-
$expiration = WP_FS__TIME_24_HOURS_IN_SEC
|
|
|
17614 |
) {
|
17615 |
$this->_logger->entrance();
|
17616 |
|
17617 |
// Check if there's a newer version for download.
|
17618 |
-
$new_version = $this->_fetch_newer_version( $plugin_id, $flush, $expiration );
|
17619 |
|
17620 |
$update = null;
|
17621 |
if ( is_object( $new_version ) ) {
|
@@ -18103,6 +18553,8 @@
|
|
18103 |
$this->_site = null;
|
18104 |
$this->_user = null;
|
18105 |
|
|
|
|
|
18106 |
fs_redirect( $this->get_activation_url() );
|
18107 |
} else {
|
18108 |
if ( $this->is_addon_activated( $plugin_id ) ) {
|
@@ -18122,15 +18574,23 @@
|
|
18122 |
check_admin_referer( $action );
|
18123 |
}
|
18124 |
|
18125 |
-
|
18126 |
-
$
|
|
|
|
|
|
|
18127 |
|
18128 |
-
|
18129 |
-
|
18130 |
-
|
18131 |
-
|
18132 |
-
|
18133 |
-
|
|
|
|
|
|
|
|
|
|
|
18134 |
}
|
18135 |
|
18136 |
return;
|
@@ -18162,7 +18622,11 @@
|
|
18162 |
$this->_site = null;
|
18163 |
$this->_user = null;
|
18164 |
|
18165 |
-
|
|
|
|
|
|
|
|
|
18166 |
}
|
18167 |
} else {
|
18168 |
if ( $this->is_addon_activated( $plugin_id ) ) {
|
@@ -18260,13 +18724,13 @@
|
|
18260 |
#region Actions that might be called from external links (e.g. email)
|
18261 |
|
18262 |
case 'cancel_trial':
|
18263 |
-
|
18264 |
-
|
18265 |
-
|
18266 |
-
|
18267 |
-
$
|
18268 |
-
|
18269 |
-
|
18270 |
}
|
18271 |
|
18272 |
return;
|
@@ -19262,11 +19726,23 @@
|
|
19262 |
|
19263 |
if ( ! $this->is_addon() || ! $this->has_free_plan() ) {
|
19264 |
$first_time_path = $this->_menu->get_first_time_path();
|
19265 |
-
|
19266 |
-
|
19267 |
-
|
19268 |
-
|
19269 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19270 |
} else {
|
19271 |
$plugin_fs = false;
|
19272 |
|
@@ -19386,6 +19862,21 @@
|
|
19386 |
$this->_admin_notices->add_sticky( $message, $id, $title, $type );
|
19387 |
}
|
19388 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19389 |
/**
|
19390 |
* Helper function that returns the final steps for the upgrade completion.
|
19391 |
*
|
@@ -19411,25 +19902,52 @@
|
|
19411 |
$plan_title = $this->get_plan_title();
|
19412 |
}
|
19413 |
|
19414 |
-
|
19415 |
-
|
19416 |
-
|
19417 |
-
|
|
|
|
|
|
|
|
|
|
|
19418 |
|
19419 |
-
|
19420 |
-
|
19421 |
-
|
19422 |
-
|
19423 |
-
|
19424 |
-
|
19425 |
-
|
19426 |
-
|
19427 |
-
|
19428 |
-
|
19429 |
-
|
19430 |
-
|
19431 |
-
|
19432 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19433 |
}
|
19434 |
|
19435 |
/**
|
33 |
* @var string
|
34 |
*/
|
35 |
private $_plugin_basename;
|
36 |
+
/**
|
37 |
+
* @since 2.2.1
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
+
*/
|
41 |
+
private $_premium_plugin_basename;
|
42 |
/**
|
43 |
* @since 1.0.0
|
44 |
*
|
677 |
version_compare( $sdk_version, '1.2.3', '>=' )
|
678 |
) {
|
679 |
/**
|
680 |
+
* Starting from version 1.2.3, paths are stored as relative instead of absolute and some of them can be
|
681 |
+
* invalid.
|
682 |
*
|
683 |
* @author Leo Fajardo (@leorw)
|
684 |
*/
|
685 |
+
$this->remove_invalid_paths();
|
686 |
}
|
687 |
|
688 |
if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) &&
|
706 |
|
707 |
}
|
708 |
}
|
709 |
+
|
710 |
+
if (
|
711 |
+
version_compare( $sdk_prev_version, '2.2.1', '<' ) &&
|
712 |
+
version_compare( $sdk_version, '2.2.1', '>=' )
|
713 |
+
) {
|
714 |
+
/**
|
715 |
+
* Clear the file cache without storing the previous path since it could be a wrong path. For example,
|
716 |
+
* in the versions of the SDK lower than 2.2.1, it's possible for the path of an add-on to be the same
|
717 |
+
* as the parent plugin's when the add-on was auto-installed since the relevant method names were not
|
718 |
+
* skipped in the logic that determines the right path in the `get_caller_main_file_and_type` method
|
719 |
+
* (e.g. `try_activate_plugin`). Since it was an auto-installation, the caller was the parent plugin
|
720 |
+
* and so its path was used. In case the stored path is wrong, clearing the cache will resolve issues
|
721 |
+
* related to data mix-up between plugins (e.g. titles and versions of an add-on and its parent plugin).
|
722 |
+
*
|
723 |
+
* @author Leo Fajardo (@leorw)
|
724 |
+
* @since 2.2.1
|
725 |
+
*/
|
726 |
+
$this->clear_module_main_file_cache( false );
|
727 |
+
}
|
728 |
}
|
729 |
|
730 |
/**
|
850 |
}
|
851 |
|
852 |
/**
|
853 |
+
* Remove invalid paths.
|
854 |
*
|
855 |
* @author Leo Fajardo (@leorw)
|
856 |
* @since 1.2.3
|
857 |
*/
|
858 |
+
private function remove_invalid_paths() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
859 |
// Remove invalid path that is still associated with the current slug if there's any.
|
860 |
$file_slug_map = self::$_accounts->get_option( 'file_slug_map', array() );
|
861 |
foreach ( $file_slug_map as $plugin_basename => $slug ) {
|
1238 |
<?php
|
1239 |
}
|
1240 |
|
1241 |
+
/**
|
1242 |
+
* Opens the support forum subemenu item in a new browser page.
|
1243 |
+
*
|
1244 |
+
* @author Vova Feldman (@svovaf)
|
1245 |
+
* @since 2.1.4
|
1246 |
+
*/
|
1247 |
+
static function _open_support_forum_in_new_page() {
|
1248 |
+
?>
|
1249 |
+
<script type="text/javascript">
|
1250 |
+
(function ($) {
|
1251 |
+
$('.fs-submenu-item.wp-support-forum').parent().attr('target', '_blank');
|
1252 |
+
})(jQuery);
|
1253 |
+
</script>
|
1254 |
+
<?php
|
1255 |
+
}
|
1256 |
+
|
1257 |
/**
|
1258 |
* @author Vova Feldman (@svovaf)
|
1259 |
* @since 1.0.9
|
1452 |
|
1453 |
/**
|
1454 |
* @since 1.2.0 Invalidate module's main file cache, otherwise, FS_Plugin_Updater will not fetch updates.
|
1455 |
+
*
|
1456 |
+
* @param bool $store_prev_path
|
1457 |
*/
|
1458 |
+
private function clear_module_main_file_cache( $store_prev_path = true ) {
|
1459 |
if ( ! isset( $this->_storage->plugin_main_file ) ||
|
1460 |
+
empty( $this->_storage->plugin_main_file->path )
|
1461 |
) {
|
1462 |
return;
|
1463 |
}
|
1464 |
|
1465 |
+
if ( ! $store_prev_path ) {
|
1466 |
+
/**
|
1467 |
+
* Storing the previous path is not needed when clearing the cache after an SDK version update since
|
1468 |
+
* the main purpose of the cache clearing in that event is to correct a wrong plugin main file path
|
1469 |
+
* which causes data mix-up between plugins (e.g. titles and versions of an add-on and its parent plugin).
|
1470 |
+
*
|
1471 |
+
* @author Leo Fajardo (@leorw)
|
1472 |
+
* @since 2.2.1
|
1473 |
+
*/
|
1474 |
+
unset( $this->_storage->plugin_main_file->path );
|
1475 |
+
} else {
|
1476 |
+
$plugin_main_file = clone $this->_storage->plugin_main_file;
|
1477 |
|
1478 |
+
// Store cached path (2nd layer cache).
|
1479 |
+
$plugin_main_file->prev_path = $plugin_main_file->path;
|
1480 |
|
1481 |
+
// Clear cached path.
|
1482 |
+
unset( $plugin_main_file->path );
|
1483 |
|
1484 |
+
$this->_storage->plugin_main_file = $plugin_main_file;
|
1485 |
+
}
|
1486 |
|
1487 |
/**
|
1488 |
* Clear global cached path.
|
1529 |
array( &$this, '_submit_uninstall_reason_action' )
|
1530 |
);
|
1531 |
|
1532 |
+
$this->add_ajax_action(
|
1533 |
+
'cancel_subscription_or_trial',
|
1534 |
+
array( &$this, 'cancel_subscription_or_trial_ajax_action' )
|
1535 |
+
);
|
1536 |
+
|
1537 |
if ( ! $this->is_addon() || $this->is_parent_plugin_installed() ) {
|
1538 |
if ( ( $this->is_plugin() && self::is_plugins_page() ) ||
|
1539 |
( $this->is_theme() && self::is_themes_page() )
|
1540 |
) {
|
1541 |
add_action( 'admin_footer', array( &$this, '_add_deactivation_feedback_dialog_box' ) );
|
1542 |
+
|
1543 |
+
if ( $this->is_plugin() ) {
|
1544 |
+
add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_plugin_upgrade_notice_style' ) );
|
1545 |
+
}
|
1546 |
}
|
1547 |
}
|
1548 |
}
|
1549 |
|
1550 |
+
/**
|
1551 |
+
* @author Leo Fajardo (@leorw)
|
1552 |
+
* @since 2.1.4
|
1553 |
+
*/
|
1554 |
+
function _enqueue_plugin_upgrade_notice_style() {
|
1555 |
+
fs_enqueue_local_style( 'fs_plugin_upgrade_notice', '/admin/plugin-upgrade-notice.css' );
|
1556 |
+
}
|
1557 |
+
|
1558 |
/**
|
1559 |
* Leverage backtrace to find caller plugin file path.
|
1560 |
*
|
1735 |
private function get_caller_main_file_and_type() {
|
1736 |
self::require_plugin_essentials();
|
1737 |
|
1738 |
+
$all_plugins = fs_get_plugins( true );
|
1739 |
$all_plugins_paths = array();
|
1740 |
|
1741 |
// Get active plugin's main files real full names (might be symlinks).
|
1742 |
+
foreach ( $all_plugins as $relative_path => $data ) {
|
1743 |
if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) {
|
1744 |
/**
|
1745 |
* Ignore plugins that don't have a folder (e.g. Hello Dolly) since they
|
1777 |
'requir' . 'e_once',
|
1778 |
'requir' . 'e',
|
1779 |
'includ' . 'e_once',
|
1780 |
+
'includ' . 'e',
|
1781 |
+
'install_and_activate_plugin',
|
1782 |
+
'try_activate_plugin',
|
1783 |
+
'activate_plugin'
|
1784 |
) )
|
1785 |
) {
|
1786 |
// Ignore call stack hooks and files inclusion.
|
2116 |
exit;
|
2117 |
}
|
2118 |
|
2119 |
+
/**
|
2120 |
+
* @author Leo Fajardo (@leorw)
|
2121 |
+
* @since 2.1.4
|
2122 |
+
*/
|
2123 |
+
function cancel_subscription_or_trial_ajax_action() {
|
2124 |
+
$this->_logger->entrance();
|
2125 |
+
|
2126 |
+
$this->check_ajax_referer( 'cancel_subscription_or_trial' );
|
2127 |
+
|
2128 |
+
$result = $this->cancel_subscription_or_trial( fs_request_get( 'plugin_id', $this->get_id() ), false );
|
2129 |
+
|
2130 |
+
if ( $this->is_api_error( $result ) ) {
|
2131 |
+
$this->shoot_ajax_failure( $result->error->message );
|
2132 |
+
}
|
2133 |
+
|
2134 |
+
$this->shoot_ajax_success();
|
2135 |
+
}
|
2136 |
+
|
2137 |
+
/**
|
2138 |
+
* @author Leo Fajardo (@leorw)
|
2139 |
+
* @since 2.1.4
|
2140 |
+
*
|
2141 |
+
* @param number $plugin_id
|
2142 |
+
*
|
2143 |
+
* @return object
|
2144 |
+
*/
|
2145 |
+
private function cancel_subscription_or_trial( $plugin_id ) {
|
2146 |
+
$fs = null;
|
2147 |
+
if ( $plugin_id == $this->get_id() ) {
|
2148 |
+
$fs = $this;
|
2149 |
+
} else if ( $this->is_addon_activated( $plugin_id ) ) {
|
2150 |
+
$fs = self::get_instance_by_id( $plugin_id );
|
2151 |
+
}
|
2152 |
+
|
2153 |
+
$result = null;
|
2154 |
+
|
2155 |
+
if ( ! is_null( $fs ) ) {
|
2156 |
+
$result = $fs->is_paid_trial() ?
|
2157 |
+
$fs->_cancel_trial() :
|
2158 |
+
$fs->_downgrade_site();
|
2159 |
+
}
|
2160 |
+
|
2161 |
+
return $result;
|
2162 |
+
}
|
2163 |
+
|
2164 |
/**
|
2165 |
* @author Leo Fajardo (@leorw)
|
2166 |
* @since 2.0.2
|
2237 |
* @since 1.2.2
|
2238 |
*
|
2239 |
* @param string|number $id_or_slug
|
2240 |
+
* @param string $module_type
|
2241 |
*
|
2242 |
* @return number|false
|
2243 |
*/
|
2244 |
+
private static function get_module_id( $id_or_slug, $module_type = WP_FS__MODULE_TYPE_PLUGIN ) {
|
2245 |
if ( is_numeric( $id_or_slug ) ) {
|
2246 |
return $id_or_slug;
|
2247 |
}
|
2248 |
|
2249 |
foreach ( self::$_instances as $instance ) {
|
2250 |
+
// Also check the module type since there can be a plugin and a theme with the same slug.
|
2251 |
+
if ( ( $module_type === $instance->get_module_type() ) && ( $id_or_slug === $instance->get_slug() ) ) {
|
2252 |
return $instance->get_id();
|
2253 |
}
|
2254 |
}
|
2275 |
* @author Vova Feldman (@svovaf)
|
2276 |
* @since 1.0.1
|
2277 |
*
|
2278 |
+
* @param string $plugin_file
|
2279 |
+
* @param string $module_type
|
2280 |
*
|
2281 |
* @return false|Freemius
|
2282 |
*/
|
2283 |
+
static function get_instance_by_file( $plugin_file, $module_type = WP_FS__MODULE_TYPE_PLUGIN ) {
|
2284 |
$slug = self::find_slug_by_basename( $plugin_file );
|
2285 |
|
2286 |
return ( false !== $slug ) ?
|
2287 |
+
self::instance( self::get_module_id( $slug, $module_type ) ) :
|
2288 |
false;
|
2289 |
}
|
2290 |
|
2398 |
function is_site_activation_mode( $and_on = true ) {
|
2399 |
return (
|
2400 |
( $this->is_on() || ! $and_on ) &&
|
2401 |
+
( $this->is_premium() && true === $this->_storage->require_license_activation ) ||
|
2402 |
+
(
|
2403 |
+
( ! $this->is_registered() ||
|
2404 |
+
( $this->is_only_premium() && ! $this->has_features_enabled_license() ) ) &&
|
2405 |
+
( ! $this->is_enable_anonymous() ||
|
2406 |
+
( ! $this->is_anonymous() && ! $this->is_pending_activation() ) )
|
2407 |
+
)
|
2408 |
);
|
2409 |
}
|
2410 |
|
2439 |
return false;
|
2440 |
}
|
2441 |
|
2442 |
+
if ( $this->is_network_anonymous() && true !== $this->_storage->require_license_activation ) {
|
2443 |
// Super-admin skipped the connection network wide -> not activation mode.
|
2444 |
return false;
|
2445 |
}
|
2560 |
self::require_plugin_essentials();
|
2561 |
|
2562 |
$active_plugin = array();
|
2563 |
+
$all_plugins = fs_get_plugins();
|
2564 |
$active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
|
2565 |
|
2566 |
foreach ( $active_plugins_basenames as $plugin_basename ) {
|
2610 |
private static function get_all_plugins( $blog_id = 0 ) {
|
2611 |
self::require_plugin_essentials();
|
2612 |
|
2613 |
+
$all_plugins = fs_get_plugins();
|
2614 |
|
2615 |
$active_plugins_basenames = self::get_active_plugins_basenames( $blog_id );
|
2616 |
|
2642 |
private static function get_network_plugins() {
|
2643 |
self::require_plugin_essentials();
|
2644 |
|
2645 |
+
$all_plugins = fs_get_plugins();
|
2646 |
|
2647 |
$network_active_basenames = is_multisite() ?
|
2648 |
get_site_option( 'active_sitewide_plugins' ) :
|
2786 |
}
|
2787 |
|
2788 |
add_action( 'admin_footer', array( 'Freemius', '_enrich_ajax_url' ) );
|
2789 |
+
add_action( 'admin_footer', array( 'Freemius', '_open_support_forum_in_new_page' ) );
|
2790 |
+
|
2791 |
|
2792 |
self::$_statics_loaded = true;
|
2793 |
}
|
3276 |
if ( $is_connected ) {
|
3277 |
FS_GDPR_Manager::instance()->store_is_required( $pong->is_gdpr_required );
|
3278 |
}
|
3279 |
+
|
3280 |
$this->store_connectivity_info( $pong, $is_connected );
|
3281 |
|
3282 |
return $this->_has_api_connection;
|
4179 |
* @author Vova Feldman (@svovaf)
|
4180 |
*/
|
4181 |
if ( $this->is_user_in_admin() &&
|
4182 |
+
'plugin-information' === fs_request_get( 'tab', false ) &&
|
4183 |
+
(
|
4184 |
+
( $this->is_addon() && $this->get_slug() == fs_request_get( 'plugin', false ) ) ||
|
4185 |
+
( $this->has_addons() && $this->get_id() == fs_request_get( 'parent_plugin_id', false ) )
|
4186 |
+
)
|
4187 |
) {
|
4188 |
require_once WP_FS__DIR_INCLUDES . '/fs-plugin-info-dialog.php';
|
4189 |
|
4190 |
+
new FS_Plugin_Info_Dialog( $this->is_addon() ? $this->get_parent_instance() : $this );
|
4191 |
}
|
4192 |
|
4193 |
// Check if Freemius is on for the current plugin.
|
4780 |
$this->_plugin :
|
4781 |
new FS_Plugin();
|
4782 |
|
4783 |
+
$premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' );
|
4784 |
+
|
4785 |
$plugin->update( array(
|
4786 |
'id' => $id,
|
4787 |
'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ),
|
4788 |
'public_key' => $public_key,
|
4789 |
'slug' => $this->_slug,
|
4790 |
+
'premium_slug' => $this->get_option( $plugin_info, 'premium_slug', "{$this->_slug}-premium" ),
|
4791 |
'parent_plugin_id' => $parent_id,
|
4792 |
'version' => $this->get_plugin_version(),
|
4793 |
+
'title' => $this->get_plugin_name( $premium_suffix ),
|
4794 |
'file' => $this->_plugin_basename,
|
4795 |
'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ),
|
4796 |
+
'premium_suffix' => $premium_suffix,
|
4797 |
'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ),
|
4798 |
'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ),
|
4799 |
) );
|
5174 |
}
|
5175 |
|
5176 |
$addon = $this->get_addon( $addon_id );
|
5177 |
+
$premium_basename = "{$addon->premium_slug}/{$addon->slug}.php";
|
5178 |
|
5179 |
if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) {
|
5180 |
return $premium_basename;
|
5182 |
|
5183 |
$all_plugins = $this->get_all_plugins();
|
5184 |
|
5185 |
+
foreach ( $all_plugins as $basename => $data ) {
|
5186 |
if ( $addon->slug === $data['slug'] ||
|
5187 |
+
$addon->premium_slug === $data['slug']
|
5188 |
) {
|
5189 |
return $basename;
|
5190 |
}
|
5424 |
if ( ! isset( $this->_is_anonymous ) ) {
|
5425 |
if ( $this->is_network_anonymous() ) {
|
5426 |
$this->_is_anonymous = true;
|
5427 |
+
} else if ( ! fs_is_network_admin() ) {
|
5428 |
if ( ! isset( $this->_storage->is_anonymous ) ) {
|
5429 |
// Not skipped.
|
5430 |
$this->_is_anonymous = false;
|
5890 |
}
|
5891 |
}
|
5892 |
|
5893 |
+
$current_blog_id = get_current_blog_id();
|
5894 |
+
|
5895 |
foreach ( $users_2_blog_ids as $user_id => $blog_ids ) {
|
5896 |
if ( 0 < $blog_ids[0] ) {
|
5897 |
$this->switch_to_blog( $blog_ids[0] );
|
5905 |
}
|
5906 |
|
5907 |
if ( is_multisite() ) {
|
5908 |
+
$this->switch_to_blog( $current_blog_id );
|
5909 |
+
|
5910 |
$this->do_action( "after_{$name}_cron_multisite" );
|
5911 |
}
|
5912 |
}
|
6305 |
if ( ! $this->is_addon() &&
|
6306 |
! ( ! $this->_is_network_active && fs_is_network_admin() ) &&
|
6307 |
(
|
6308 |
+
( true === $this->_storage->require_license_activation ) ||
|
6309 |
// Not registered nor anonymous.
|
6310 |
( ! $this->is_registered() && ! $this->is_anonymous() ) ||
|
6311 |
// OR, network level and in network upgrade mode.
|
6322 |
* @since 1.2.2
|
6323 |
*/
|
6324 |
if ( $this->is_theme()
|
|
|
6325 |
&& ! $this->has_settings_menu()
|
6326 |
&& ! isset( $_REQUEST['fs_action'] )
|
6327 |
&& $this->can_activate_previous_theme()
|
6328 |
) {
|
6329 |
+
if ( $this->is_only_premium() ) {
|
6330 |
+
$this->activate_previous_theme();
|
6331 |
+
return;
|
6332 |
+
}
|
6333 |
|
6334 |
+
if ( true === $this->_storage->require_license_activation ) {
|
6335 |
+
$this->_storage->require_license_activation = false;
|
6336 |
+
}
|
6337 |
}
|
6338 |
|
6339 |
if ( ! fs_is_network_admin() &&
|
6433 |
$this->_module_type,
|
6434 |
sprintf( '<b><a href="%s">%s</a></b>',
|
6435 |
$this->get_activation_url(),
|
6436 |
+
sprintf( $this->get_text_inline( 'Opt in to make "%s" better!', 'optin-x-now' ), $this->get_plugin_name() )
|
6437 |
)
|
6438 |
),
|
6439 |
'connect_account',
|
6895 |
}
|
6896 |
}
|
6897 |
|
6898 |
+
if (
|
6899 |
+
$is_premium_version_activation &&
|
6900 |
+
(
|
6901 |
+
$this->is_anonymous() ||
|
6902 |
+
(
|
6903 |
+
$this->is_registered() &&
|
6904 |
+
! $this->is_trial() &&
|
6905 |
+
! $this->has_features_enabled_license()
|
6906 |
+
)
|
6907 |
+
)
|
6908 |
+
) {
|
6909 |
+
$this->_storage->require_license_activation = true;
|
6910 |
+
}
|
6911 |
+
|
6912 |
if ( ! isset( $this->_storage->is_plugin_new_install ) ) {
|
6913 |
/**
|
6914 |
* If no previous version of plugin's version exist, it means that it's either
|
7178 |
private function remove_sdk_reference() {
|
7179 |
global $fs_active_plugins;
|
7180 |
|
7181 |
+
foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) {
|
7182 |
if ( $this->_plugin_basename == $data->plugin_path ) {
|
7183 |
unset( $fs_active_plugins->plugins[ $sdk_path ] );
|
7184 |
break;
|
7360 |
}
|
7361 |
}
|
7362 |
|
7363 |
+
/**
|
7364 |
+
* This is used to ensure that before redirecting to the opt-in page after resetting the anonymous mode or
|
7365 |
+
* deleting the account in the network level, the URL of the page to redirect to is correct.
|
7366 |
+
*
|
7367 |
+
* @author Leo Fajardo (@leorw)
|
7368 |
+
*
|
7369 |
+
* @since 2.1.3
|
7370 |
+
*/
|
7371 |
+
private function maybe_set_slug_and_network_menu_exists_flag() {
|
7372 |
+
if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
|
7373 |
+
$this->_menu->set_slug_and_network_menu_exists_flag( $this->_menu->has_menu() ?
|
7374 |
+
$this->_menu->get_slug() :
|
7375 |
+
$this->_slug
|
7376 |
+
);
|
7377 |
+
}
|
7378 |
+
}
|
7379 |
+
|
7380 |
/**
|
7381 |
* Clears the anonymous mode and redirects to the opt-in screen.
|
7382 |
*
|
7390 |
|
7391 |
$this->reset_anonymous_mode( fs_is_network_admin() );
|
7392 |
|
7393 |
+
$this->maybe_set_slug_and_network_menu_exists_flag();
|
7394 |
+
|
7395 |
fs_redirect( $this->get_activation_url() );
|
7396 |
}
|
7397 |
|
7850 |
}
|
7851 |
}
|
7852 |
|
7853 |
+
$versions = $this->get_versions();
|
7854 |
+
|
7855 |
+
return array_merge( $versions, array(
|
7856 |
'version' => $this->get_plugin_version(),
|
7857 |
'is_premium' => $this->is_premium(),
|
7858 |
'language' => get_bloginfo( 'language' ),
|
7859 |
'charset' => get_bloginfo( 'charset' ),
|
|
|
|
|
|
|
7860 |
'title' => get_bloginfo( 'name' ),
|
7861 |
'url' => get_site_url(),
|
7862 |
// Special params.
|
7907 |
// }
|
7908 |
|
7909 |
// Common properties.
|
7910 |
+
$versions = $this->get_versions();
|
7911 |
+
$common = array_merge( $versions, array(
|
7912 |
+
'version' => $this->get_plugin_version(),
|
7913 |
+
'is_premium' => $this->is_premium(),
|
|
|
|
|
7914 |
), $override );
|
7915 |
|
7916 |
|
8326 |
// @todo Decide if we want to delete plugin information from db.
|
8327 |
}
|
8328 |
|
8329 |
+
/**
|
8330 |
+
* Set the basename of the current product and hook _activate_plugin_event_hook() to the activation action.
|
8331 |
+
*
|
8332 |
+
* @author Vova Feldman (@svovaf)
|
8333 |
+
* @since 2.2.1
|
8334 |
+
*
|
8335 |
+
* @param string $is_premium
|
8336 |
+
* @param string $caller
|
8337 |
+
*
|
8338 |
+
* @return string
|
8339 |
+
*/
|
8340 |
+
function set_basename( $is_premium, $caller ) {
|
8341 |
+
$basename = plugin_basename( $caller );
|
8342 |
+
|
8343 |
+
$current_basename = $is_premium ?
|
8344 |
+
$this->_premium_plugin_basename :
|
8345 |
+
$this->_free_plugin_basename;
|
8346 |
+
|
8347 |
+
if ( $current_basename == $basename ) {
|
8348 |
+
// Basename value set correctly.
|
8349 |
+
return;
|
8350 |
+
}
|
8351 |
+
|
8352 |
+
if ( $is_premium ) {
|
8353 |
+
$this->_premium_plugin_basename = $basename;
|
8354 |
+
} else {
|
8355 |
+
$this->_free_plugin_basename = $basename;
|
8356 |
+
}
|
8357 |
+
|
8358 |
+
$plugin_dir = dirname( $this->_plugin_dir_path ) . '/';
|
8359 |
+
|
8360 |
+
register_activation_hook(
|
8361 |
+
$plugin_dir . $basename,
|
8362 |
+
array( &$this, '_activate_plugin_event_hook' )
|
8363 |
+
);
|
8364 |
+
}
|
8365 |
+
|
8366 |
/**
|
8367 |
* @author Vova Feldman (@svovaf)
|
8368 |
* @since 1.1.1
|
8369 |
+
* @since 2.2.1 If the context product is in its premium version, use the current module's basename, even if it was renamed.
|
8370 |
*
|
8371 |
* @return string
|
8372 |
*/
|
8373 |
function premium_plugin_basename() {
|
8374 |
+
if ( ! isset( $this->_premium_plugin_basename ) ) {
|
8375 |
+
$this->_premium_plugin_basename = $this->is_premium() ?
|
8376 |
+
// The product is premium, so use the current basename.
|
8377 |
+
$this->_plugin_basename :
|
8378 |
+
$this->get_premium_slug() . '/' . basename( $this->_free_plugin_basename );
|
8379 |
+
}
|
8380 |
+
|
8381 |
+
return $this->_premium_plugin_basename;
|
8382 |
}
|
8383 |
|
8384 |
/**
|
8517 |
}
|
8518 |
|
8519 |
/**
|
8520 |
+
* @author Leo Fajardo (@leorw)
|
8521 |
+
* @since 2.2.1
|
8522 |
+
*
|
8523 |
+
* @return string
|
8524 |
+
*/
|
8525 |
+
function get_premium_slug() {
|
8526 |
+
return is_object( $this->_plugin ) ?
|
8527 |
+
$this->_plugin->premium_slug :
|
8528 |
+
"{$this->_slug}-premium";
|
8529 |
+
}
|
8530 |
+
|
8531 |
+
/**
|
8532 |
+
* Retrieve the desired folder name for the product.
|
8533 |
+
*
|
8534 |
* @author Vova Feldman (@svovaf)
|
8535 |
* @since 1.2.1.7
|
8536 |
*
|
8537 |
* @return string Plugin slug.
|
8538 |
*/
|
8539 |
function get_target_folder_name() {
|
8540 |
+
return $this->can_use_premium_code() ?
|
8541 |
+
$this->_plugin->premium_slug :
|
8542 |
+
$this->_slug;
|
8543 |
}
|
8544 |
|
8545 |
/**
|
8610 |
* @author Vova Feldman (@svovaf)
|
8611 |
* @since 1.0.9
|
8612 |
*
|
8613 |
+
* @param string|bool $premium_suffix
|
8614 |
+
*
|
8615 |
* @return string
|
8616 |
*/
|
8617 |
+
function get_plugin_name( $premium_suffix = false ) {
|
8618 |
$this->_logger->entrance();
|
8619 |
|
8620 |
+
/**
|
8621 |
+
* This `if-else` can be squeezed into a single `if` but I intentionally split it for code readability.
|
8622 |
+
*
|
8623 |
+
* @author Vova Feldman
|
8624 |
+
*/
|
8625 |
if ( ! isset( $this->_plugin_name ) ) {
|
8626 |
+
// Name is not yet set.
|
8627 |
+
$this->set_name( $premium_suffix );
|
8628 |
+
} else if (
|
8629 |
+
! empty( $premium_suffix ) &&
|
8630 |
+
( ! is_object( $this->_plugin ) || $this->_plugin->premium_suffix !== $premium_suffix )
|
8631 |
+
) {
|
8632 |
+
// Name is already set, but there's a change in the premium suffix.
|
8633 |
+
$this->set_name( $premium_suffix );
|
8634 |
+
}
|
8635 |
|
8636 |
+
return $this->_plugin_name;
|
8637 |
+
}
|
8638 |
|
8639 |
+
/**
|
8640 |
+
* Calculates and stores the product's name. This helper function was created specifically for get_plugin_name() just to make the code clearer.
|
8641 |
+
*
|
8642 |
+
* @author Vova Feldman (@svovaf)
|
8643 |
+
* @since 2.2.1
|
8644 |
+
*
|
8645 |
+
* @param string $premium_suffix
|
8646 |
+
*/
|
8647 |
+
private function set_name( $premium_suffix = '' ) {
|
8648 |
+
$plugin_data = $this->get_plugin_data();
|
8649 |
|
8650 |
+
// Get name.
|
8651 |
+
$this->_plugin_name = $plugin_data['Name'];
|
8652 |
+
|
8653 |
+
if ( is_string( $premium_suffix ) ) {
|
8654 |
+
$premium_suffix = trim( $premium_suffix );
|
8655 |
|
8656 |
+
if ( ! empty( $premium_suffix ) ) {
|
8657 |
+
// Check if plugin name contains " (premium)" or a custom suffix and remove it.
|
8658 |
+
$suffix = ( ' ' . strtolower( $premium_suffix ) );
|
8659 |
+
$suffix_len = strlen( $suffix );
|
8660 |
+
|
8661 |
+
if ( strlen( $plugin_data['Name'] ) > $suffix_len &&
|
8662 |
+
$suffix === substr( strtolower( $plugin_data['Name'] ), - $suffix_len )
|
8663 |
+
) {
|
8664 |
+
$this->_plugin_name = substr( $plugin_data['Name'], 0, - $suffix_len );
|
8665 |
+
}
|
8666 |
+
}
|
8667 |
}
|
8668 |
|
8669 |
+
$this->_logger->departure( 'Name = ' . $this->_plugin_name );
|
8670 |
}
|
8671 |
|
8672 |
/**
|
9372 |
* @return bool
|
9373 |
*/
|
9374 |
function is_premium() {
|
9375 |
+
/**
|
9376 |
+
* `$this->_plugin` will be `false` when `is_activation_mode` calls this method directly from the
|
9377 |
+
* `_register_hooks` method.
|
9378 |
+
*
|
9379 |
+
* @author Leo Fajardo (@leorw)
|
9380 |
+
* @since 2.2.3
|
9381 |
+
*/
|
9382 |
+
return is_object( $this->_plugin ) ?
|
9383 |
+
$this->_plugin->is_premium :
|
9384 |
+
false;
|
9385 |
}
|
9386 |
|
9387 |
/**
|
10771 |
fs_require_template( 'forms/resend-key.php', $vars );
|
10772 |
}
|
10773 |
|
10774 |
+
/**
|
10775 |
+
* Displays a subscription cancellation dialog box when the user clicks on the "Deactivate License"
|
10776 |
+
* link on the "Account" page or deactivates a plugin and there's an active subscription that is
|
10777 |
+
* either associated with a non-lifetime single-site license or non-lifetime multisite license that
|
10778 |
+
* is only activated on a single production site.
|
10779 |
+
*
|
10780 |
+
* @author Leo Fajardo (@leorw)
|
10781 |
+
* @since 2.2.1
|
10782 |
+
*
|
10783 |
+
* @param bool $is_license_deactivation
|
10784 |
+
*/
|
10785 |
+
function _maybe_add_subscription_cancellation_dialog_box( $is_license_deactivation = false ) {
|
10786 |
+
if ( fs_is_network_admin() ) {
|
10787 |
+
// Subscription cancellation dialog box is currently not supported for multisite networks.
|
10788 |
+
return;
|
10789 |
+
}
|
10790 |
+
|
10791 |
+
$license = $this->_get_license();
|
10792 |
+
|
10793 |
+
/**
|
10794 |
+
* If the installation is associated with a non-lifetime license, which is either a single-site or only activated on a single production site (or zero), and connected to an active subscription, suggest the customer to cancel the subscription upon deactivation.
|
10795 |
+
*
|
10796 |
+
* @author Leo Fajardo (@leorw) (Comment added by Vova Feldman @svovaf)
|
10797 |
+
* @since 2.2.1
|
10798 |
+
*/
|
10799 |
+
if ( ! is_object( $license ) ||
|
10800 |
+
$license->is_lifetime() ||
|
10801 |
+
( ! $license->is_single_site() && $license->activated > 1 )
|
10802 |
+
) {
|
10803 |
+
return;
|
10804 |
+
}
|
10805 |
+
|
10806 |
+
/**
|
10807 |
+
* @var FS_Subscription $subscription
|
10808 |
+
*/
|
10809 |
+
$subscription = $this->_get_subscription( $license->id );
|
10810 |
+
if ( ! is_object( $subscription ) || ! $subscription->is_active() ) {
|
10811 |
+
return;
|
10812 |
+
}
|
10813 |
+
|
10814 |
+
$vars = array(
|
10815 |
+
'id' => $this->_module_id,
|
10816 |
+
'license' => $license,
|
10817 |
+
'has_trial' => $this->is_paid_trial(),
|
10818 |
+
'is_license_deactivation' => $is_license_deactivation,
|
10819 |
+
);
|
10820 |
+
|
10821 |
+
fs_require_template( 'forms/subscription-cancellation.php', $vars );
|
10822 |
+
}
|
10823 |
+
|
10824 |
/**
|
10825 |
* @author Leo Fajardo (@leorw)
|
10826 |
* @since 2.0.2
|
10923 |
*/
|
10924 |
function _activate_license_ajax_action() {
|
10925 |
$this->_logger->entrance();
|
10926 |
+
|
10927 |
$this->check_ajax_referer( 'activate_license' );
|
10928 |
|
10929 |
$license_key = trim( fs_request_get( 'license_key' ) );
|
11005 |
'license_key' => $fs->apply_filters( 'license_key', $license_key )
|
11006 |
);
|
11007 |
|
11008 |
+
$install = $api->call( $fs->add_show_pending( '/' ), 'put', $params );
|
11009 |
|
11010 |
if ( FS_Api::is_api_error( $install ) ) {
|
11011 |
$error = FS_Api::is_api_error_object( $install ) ?
|
11098 |
}
|
11099 |
}
|
11100 |
|
11101 |
+
if ( false === $error && true === $this->_storage->require_license_activation ) {
|
11102 |
+
$this->_storage->require_license_activation = false;
|
11103 |
+
}
|
11104 |
+
|
11105 |
$result = array(
|
11106 |
'success' => ( false === $error )
|
11107 |
);
|
11654 |
return $this->get_upgrade_url( WP_FS__PERIOD_ANNUALLY, true );
|
11655 |
}
|
11656 |
|
11657 |
+
/**
|
11658 |
+
* @author Leo Fajardo (@leorw)
|
11659 |
+
* @since 2.1.4
|
11660 |
+
*
|
11661 |
+
* @param string $new_version
|
11662 |
+
*
|
11663 |
+
* @return string
|
11664 |
+
*/
|
11665 |
+
function version_upgrade_checkout_link( $new_version ) {
|
11666 |
+
if ( ! is_object( $this->_license ) ) {
|
11667 |
+
$url = $this->pricing_url();
|
11668 |
+
|
11669 |
+
$purchase_license_text = $this->get_text_inline( 'Buy a license now', 'buy-license-now' );
|
11670 |
+
} else {
|
11671 |
+
$subscription = $this->_get_subscription( $this->_license->id );
|
11672 |
+
|
11673 |
+
$url = $this->checkout_url(
|
11674 |
+
is_object( $subscription ) ?
|
11675 |
+
( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) :
|
11676 |
+
WP_FS__PERIOD_LIFETIME,
|
11677 |
+
false,
|
11678 |
+
array( 'licenses' => $this->_license->quota )
|
11679 |
+
);
|
11680 |
+
|
11681 |
+
$purchase_license_text = $this->get_text_inline( 'Renew your license now', 'renew-license-now' );
|
11682 |
+
}
|
11683 |
+
|
11684 |
+
return sprintf(
|
11685 |
+
$this->get_text_inline( '%s to access version %s security & feature updates, and support.', 'x-for-updates-and-support' ),
|
11686 |
+
sprintf( '<a href="%s">%s</a>', $url, $purchase_license_text ),
|
11687 |
+
$new_version
|
11688 |
+
);
|
11689 |
+
}
|
11690 |
+
|
11691 |
/**
|
11692 |
* Plugin's pricing URL.
|
11693 |
*
|
12322 |
* @author Vova Feldman (@svovaf)
|
12323 |
*/
|
12324 |
$args = array(
|
12325 |
+
/**
|
12326 |
+
* Commented out in order to handle the migration of site options whether the site is public or not.
|
12327 |
+
*
|
12328 |
+
* @author Leo Fajardo (@leorw)
|
12329 |
+
* @since 2.2.1
|
12330 |
+
*/
|
12331 |
+
// 'public' => 1,
|
12332 |
'archived' => 0,
|
12333 |
'mature' => 0,
|
12334 |
'spam' => 0,
|
13473 |
}
|
13474 |
}
|
13475 |
|
13476 |
+
if ( true === $this->_storage->require_license_activation &&
|
13477 |
+
! fs_request_get_bool( 'require_license', true )
|
13478 |
+
) {
|
13479 |
+
$this->_storage->require_license_activation = false;
|
13480 |
+
}
|
13481 |
+
|
13482 |
if ( $this->is_theme() ) {
|
13483 |
$this->_register_account_hooks();
|
13484 |
}
|
13544 |
|
13545 |
}
|
13546 |
|
13547 |
+
/**
|
13548 |
+
* Get a sanitized array with the WordPress version, SDK version, and PHP version.
|
13549 |
+
* Each version is trimmed after the 16th char.
|
13550 |
+
*
|
13551 |
+
* @author Vova Feldman (@svovaf)
|
13552 |
+
* @since 2.2.1
|
13553 |
+
*
|
13554 |
+
* @return array
|
13555 |
+
*/
|
13556 |
+
private function get_versions() {
|
13557 |
+
$versions = array();
|
13558 |
+
$versions['platform_version'] = get_bloginfo( 'version' );
|
13559 |
+
$versions['sdk_version'] = $this->version;
|
13560 |
+
$versions['programming_language_version'] = phpversion();
|
13561 |
+
|
13562 |
+
foreach ( $versions as $k => $version ) {
|
13563 |
+
if ( is_string( $versions[ $k ] ) && ! empty( $versions[ $k ] ) ) {
|
13564 |
+
$versions[ $k ] = substr( $versions[ $k ], 0, 16 );
|
13565 |
+
}
|
13566 |
+
}
|
13567 |
+
|
13568 |
+
return $versions;
|
13569 |
+
}
|
13570 |
+
|
13571 |
/**
|
13572 |
* @author Vova Feldman (@svovaf)
|
13573 |
* @since 1.1.7.4
|
13589 |
// Return to the module's main page.
|
13590 |
$this->get_after_activation_url( 'after_connect_url', array( 'fs_action' => $activation_action ) );
|
13591 |
|
13592 |
+
$versions = $this->get_versions();
|
13593 |
+
|
13594 |
+
$params = array_merge( $versions, array(
|
13595 |
'user_firstname' => $current_user->user_firstname,
|
13596 |
'user_lastname' => $current_user->user_lastname,
|
13597 |
'user_nickname' => $current_user->user_nicename,
|
13606 |
'account',
|
13607 |
array( 'fs_action' => 'sync_user' )
|
13608 |
), 'sync_user' ),
|
|
|
|
|
|
|
13609 |
'is_premium' => $this->is_premium(),
|
13610 |
'is_active' => true,
|
13611 |
'is_uninstalled' => false,
|
13612 |
+
) );
|
13613 |
|
13614 |
if ( true === $network_level_or_blog_id ) {
|
13615 |
if ( ! isset( $override_with['sites'] ) ) {
|
13795 |
'timeout' => WP_FS__DEBUG_SDK ? 60 : 30,
|
13796 |
);
|
13797 |
|
13798 |
+
$url = $this->add_show_pending( WP_FS__ADDRESS . '/action/service/user/install/' );
|
13799 |
$response = self::safe_remote_post( $url, $request );
|
13800 |
|
13801 |
if ( is_wp_error( $response ) ) {
|
14952 |
|
14953 |
$hook = false;
|
14954 |
|
14955 |
+
if ( ! $this->has_settings_menu() ) {
|
14956 |
// Add the opt-in page without a menu item.
|
14957 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
14958 |
null,
|
15300 |
}
|
15301 |
}
|
15302 |
|
15303 |
+
if ( ! $is_activation_mode || ( true !== $this->_storage->require_license_activation ) ) {
|
15304 |
+
/**
|
15305 |
+
* Add the other menu items if there are any when not in activation mode or license activation is not
|
15306 |
+
* required (license activation is required for registered or anonymous users after activating the
|
15307 |
+
* premium version when the site is not in trial mode or there's no active valid license).
|
15308 |
+
*
|
15309 |
+
* @author Leo Fajardo (@leorw)
|
15310 |
+
* @since 2.2.1
|
15311 |
+
*/
|
15312 |
+
if ( 0 < count( $this->_menu_items ) ) {
|
15313 |
+
if ( ! $this->_menu->is_top_level() ) {
|
15314 |
+
fs_enqueue_local_style( 'fs_common', '/admin/common.css' );
|
15315 |
|
15316 |
+
// Append submenu items right after the plugin's submenu item.
|
15317 |
+
$this->order_sub_submenu_items();
|
15318 |
+
} else {
|
15319 |
+
// Append submenu items.
|
15320 |
+
$this->embed_submenu_items();
|
15321 |
+
}
|
15322 |
}
|
15323 |
}
|
15324 |
}
|
15344 |
|
15345 |
foreach ( $this->_menu_items as $priority => $items ) {
|
15346 |
foreach ( $items as $item ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15347 |
$capability = ( ! empty( $item['capability'] ) ? $item['capability'] : $top_level_menu_capability );
|
15348 |
|
15349 |
$menu_item = sprintf(
|
15354 |
$item['menu_title']
|
15355 |
);
|
15356 |
|
15357 |
+
$top_level_menu_slug = $this->get_top_level_menu_slug();
|
15358 |
+
$menu_slug = $this->_menu->get_slug( $item['menu_slug'] );
|
15359 |
|
15360 |
if ( ! isset( $item['url'] ) ) {
|
15361 |
$hook = FS_Admin_Menu_Manager::add_subpage(
|
15362 |
$item['show_submenu'] ?
|
15363 |
+
$top_level_menu_slug :
|
15364 |
null,
|
15365 |
$item['page_title'],
|
15366 |
$menu_item,
|
15375 |
} else {
|
15376 |
FS_Admin_Menu_Manager::add_subpage(
|
15377 |
$item['show_submenu'] ?
|
15378 |
+
$top_level_menu_slug :
|
15379 |
null,
|
15380 |
$item['page_title'],
|
15381 |
$menu_item,
|
15384 |
array( $this, '' )
|
15385 |
);
|
15386 |
}
|
15387 |
+
|
15388 |
+
if ( $item['show_submenu'] && $is_first_submenu_item ) {
|
15389 |
+
if ( $this->_is_network_active && ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
|
15390 |
+
/**
|
15391 |
+
* If the top-level menu has been dynamically created, remove the first submenu item that
|
15392 |
+
* WordPress automatically creates when there's no submenu item whose slug matches the
|
15393 |
+
* parent's. In the following example, the `Awesome Plugin` submenu item will be removed.
|
15394 |
+
*
|
15395 |
+
* Awesome Plugin
|
15396 |
+
* - Awesome Plugin <-- we want to remove this since there's no real setting page for the top-level
|
15397 |
+
*
|
15398 |
+
* @author Leo Fajardo (@leorw)
|
15399 |
+
*/
|
15400 |
+
remove_submenu_page( $top_level_menu_slug, $top_level_menu_slug );
|
15401 |
+
}
|
15402 |
+
|
15403 |
+
$is_first_submenu_item = false;
|
15404 |
+
}
|
15405 |
}
|
15406 |
}
|
15407 |
}
|
16644 |
* @param bool|number $plugin_id
|
16645 |
* @param bool $flush Since 1.1.7.3
|
16646 |
* @param int $expiration Since 1.2.2.7
|
16647 |
+
* @param bool|string $newer_than Since 2.2.1
|
16648 |
*
|
16649 |
* @return object|false New plugin tag info if exist.
|
16650 |
*/
|
16651 |
+
private function _fetch_newer_version( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $newer_than = false ) {
|
16652 |
+
$latest_tag = $this->_fetch_latest_version( $plugin_id, $flush, $expiration, $newer_than );
|
16653 |
|
16654 |
if ( ! is_object( $latest_tag ) ) {
|
16655 |
return false;
|
16674 |
* @param bool|number $plugin_id
|
16675 |
* @param bool $flush Since 1.1.7.3
|
16676 |
* @param int $expiration Since 1.2.2.7
|
16677 |
+
* @param bool|string $newer_than Since 2.2.1
|
16678 |
*
|
16679 |
* @return bool|FS_Plugin_Tag
|
16680 |
*/
|
16681 |
+
function get_update( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $newer_than = false ) {
|
16682 |
$this->_logger->entrance();
|
16683 |
|
16684 |
if ( ! is_numeric( $plugin_id ) ) {
|
16685 |
$plugin_id = $this->_plugin->id;
|
16686 |
}
|
16687 |
|
16688 |
+
$this->check_updates( true, $plugin_id, $flush, $expiration, $newer_than );
|
16689 |
$updates = $this->get_all_updates();
|
16690 |
|
16691 |
return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false;
|
17469 |
$api = $this->get_api_site_scope();
|
17470 |
$license = $api->call( "/licenses/{$this->_site->license_id}.json", 'delete' );
|
17471 |
|
17472 |
+
$this->handle_license_deactivation_result( $license, $hmm_text, $show_notice );
|
17473 |
+
}
|
17474 |
+
|
17475 |
+
/**
|
17476 |
+
* @author Leo Fajardo (@leorw)
|
17477 |
+
* @since 2.2.1
|
17478 |
+
*
|
17479 |
+
* @param FS_Plugin_License $license
|
17480 |
+
* @param bool|string $hmm_text
|
17481 |
+
* @param bool $show_notice
|
17482 |
+
*/
|
17483 |
+
private function handle_license_deactivation_result( $license, $hmm_text = false, $show_notice = true ) {
|
17484 |
if ( isset( $license->error ) ) {
|
17485 |
$this->_admin_notices->add(
|
17486 |
$this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' .
|
17501 |
}
|
17502 |
}
|
17503 |
|
17504 |
+
// Update site plan to default.
|
17505 |
$this->_sync_plans();
|
17506 |
$this->_site->plan_id = $this->_plans[0]->id;
|
17507 |
// Unlink license from site.
|
17528 |
* @author Vova Feldman (@svovaf)
|
17529 |
* @since 1.0.4
|
17530 |
*
|
17531 |
+
* @return object
|
17532 |
+
*
|
17533 |
* @uses FS_Api
|
17534 |
*/
|
17535 |
private function _downgrade_site() {
|
17536 |
$this->_logger->entrance();
|
17537 |
|
17538 |
+
$deactivate_license = fs_request_get_bool( 'deactivate_license' );
|
17539 |
+
|
17540 |
$api = $this->get_api_site_scope();
|
17541 |
+
$site = $api->call( 'downgrade.json', 'put', array( 'deactivate_license' => $deactivate_license ) );
|
17542 |
|
17543 |
$plan_downgraded = false;
|
17544 |
$plan = false;
|
17556 |
( is_object( $subscription ) && ! isset( $subscription->error ) && ! $subscription->is_active() );
|
17557 |
} else {
|
17558 |
// handle different error cases.
|
17559 |
+
$this->handle_license_deactivation_result(
|
17560 |
+
$site,
|
17561 |
+
$this->get_text_x_inline( 'Hmm', 'something somebody says when they are thinking about what you have just said.', 'hmm' ) . '...'
|
17562 |
+
);
|
17563 |
}
|
17564 |
|
17565 |
+
if ( ! $plan_downgraded ) {
|
17566 |
+
return (object) array(
|
17567 |
+
'error' => (object) array(
|
17568 |
+
'message' => $this->get_text_inline( 'Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes.', 'subscription-cancellation-failure-message' )
|
|
|
|
|
|
|
|
|
17569 |
)
|
17570 |
);
|
17571 |
+
}
|
17572 |
|
17573 |
+
// Remove previous sticky message about upgrade (if exist).
|
17574 |
+
$this->_admin_notices->remove_sticky( 'plan_upgraded' );
|
17575 |
+
|
17576 |
+
$this->_admin_notices->add(
|
17577 |
+
sprintf( $this->get_text_inline( 'Your subscription was successfully cancelled. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ),
|
17578 |
+
$plan->title,
|
17579 |
+
human_time_diff( time(), strtotime( $this->_license->expiration ) )
|
17580 |
+
)
|
17581 |
+
);
|
17582 |
+
|
17583 |
+
// Store site updates.
|
17584 |
+
$this->_store_site();
|
17585 |
+
|
17586 |
+
if ( $deactivate_license &&
|
17587 |
+
! FS_Plugin_License::is_valid_id( $site->license_id )
|
17588 |
+
) {
|
17589 |
+
if ( $this->_site->is_localhost() ) {
|
17590 |
+
$this->_license->activated_local = max( 0, $this->_license->activated_local - 1 );
|
17591 |
+
} else {
|
17592 |
+
$this->_license->activated = max( 0, $this->_license->activated - 1 );
|
17593 |
+
}
|
17594 |
+
|
17595 |
+
// Handle successful license deactivation result.
|
17596 |
+
$this->handle_license_deactivation_result( $this->_license );
|
17597 |
}
|
17598 |
+
|
17599 |
+
return $site;
|
17600 |
}
|
17601 |
|
17602 |
/**
|
17703 |
* @author Vova Feldman (@svovaf)
|
17704 |
* @since 1.0.9
|
17705 |
*
|
17706 |
+
* @return object
|
17707 |
+
*
|
17708 |
* @uses FS_Api
|
17709 |
*/
|
17710 |
private function _cancel_trial() {
|
17711 |
$this->_logger->entrance();
|
17712 |
|
|
|
|
|
|
|
17713 |
if ( ! $this->is_trial() ) {
|
17714 |
+
return (object) array(
|
17715 |
+
'error' => (object) array(
|
17716 |
+
'message' => $this->get_text_inline( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)', 'trial-cancel-no-trial-message' )
|
17717 |
+
)
|
17718 |
);
|
|
|
|
|
17719 |
}
|
17720 |
|
17721 |
$trial_plan = $this->get_trial_plan();
|
17746 |
// @todo handle different error cases.
|
17747 |
}
|
17748 |
|
17749 |
+
if ( ! $trial_cancelled ) {
|
17750 |
+
return (object) array(
|
17751 |
+
'error' => (object) array(
|
17752 |
+
'message' => $this->get_text_inline( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.', 'trial-cancel-failure-message' )
|
17753 |
+
)
|
17754 |
+
);
|
17755 |
+
}
|
17756 |
|
17757 |
+
// Remove previous sticky messages about upgrade or trial (if exist).
|
17758 |
+
$this->_admin_notices->remove_sticky( array(
|
17759 |
+
'trial_started',
|
17760 |
+
'trial_promotion',
|
17761 |
+
'plan_upgraded',
|
17762 |
+
) );
|
17763 |
|
17764 |
+
// Store site updates.
|
17765 |
+
$this->_store_site();
|
17766 |
+
|
17767 |
+
if ( ! $this->is_addon() ||
|
17768 |
+
! $this->deactivate_premium_only_addon_without_license( true )
|
17769 |
+
) {
|
|
|
|
|
17770 |
$this->_admin_notices->add(
|
17771 |
+
sprintf( $this->get_text_inline( 'Your %s free trial was successfully cancelled.', 'trial-cancel-message' ), $trial_plan->title )
|
|
|
|
|
17772 |
);
|
17773 |
}
|
17774 |
+
|
17775 |
+
return $site;
|
17776 |
}
|
17777 |
|
17778 |
/**
|
17843 |
* @since 1.0.4
|
17844 |
*
|
17845 |
* @param bool|number $addon_id
|
17846 |
+
* @param bool $flush Since 1.1.7.3
|
17847 |
+
* @param int $expiration Since 1.2.2.7
|
17848 |
+
* @param bool|string $newer_than Since 2.2.1
|
17849 |
+
* @param bool|string $fetch_readme Since 2.2.1
|
17850 |
*
|
17851 |
* @return object|false Plugin latest tag info.
|
17852 |
*/
|
17853 |
function _fetch_latest_version(
|
17854 |
$addon_id = false,
|
17855 |
$flush = true,
|
17856 |
+
$expiration = WP_FS__TIME_24_HOURS_IN_SEC,
|
17857 |
+
$newer_than = false,
|
17858 |
+
$fetch_readme = true
|
17859 |
) {
|
17860 |
$this->_logger->entrance();
|
17861 |
|
17906 |
$this->switch_to_blog( $switch_to_blog_id );
|
17907 |
}
|
17908 |
|
17909 |
+
$latest_version_endpoint = $this->_get_latest_version_endpoint( $addon_id, 'json' );
|
17910 |
+
|
17911 |
+
if ( ! empty( $newer_than ) ) {
|
17912 |
+
$latest_version_endpoint = add_query_arg( 'newer_than', $newer_than, $latest_version_endpoint );
|
17913 |
+
}
|
17914 |
+
|
17915 |
+
if ( true === $fetch_readme ) {
|
17916 |
+
$latest_version_endpoint = add_query_arg( 'readme', 'true', $latest_version_endpoint );
|
17917 |
+
}
|
17918 |
+
|
17919 |
$tag = $this->get_api_site_or_plugin_scope()->get(
|
17920 |
+
$latest_version_endpoint,
|
17921 |
$flush,
|
17922 |
$expiration
|
17923 |
);
|
18053 |
* @param bool|number $plugin_id
|
18054 |
* @param bool $flush Since 1.1.7.3
|
18055 |
* @param int $expiration Since 1.2.2.7
|
18056 |
+
* @param bool|string $newer_than Since 2.2.1
|
18057 |
*/
|
18058 |
private function check_updates(
|
18059 |
$background = false,
|
18060 |
$plugin_id = false,
|
18061 |
$flush = true,
|
18062 |
+
$expiration = WP_FS__TIME_24_HOURS_IN_SEC,
|
18063 |
+
$newer_than = false
|
18064 |
) {
|
18065 |
$this->_logger->entrance();
|
18066 |
|
18067 |
// Check if there's a newer version for download.
|
18068 |
+
$new_version = $this->_fetch_newer_version( $plugin_id, $flush, $expiration, $newer_than );
|
18069 |
|
18070 |
$update = null;
|
18071 |
if ( is_object( $new_version ) ) {
|
18553 |
$this->_site = null;
|
18554 |
$this->_user = null;
|
18555 |
|
18556 |
+
$this->maybe_set_slug_and_network_menu_exists_flag();
|
18557 |
+
|
18558 |
fs_redirect( $this->get_activation_url() );
|
18559 |
} else {
|
18560 |
if ( $this->is_addon_activated( $plugin_id ) ) {
|
18574 |
check_admin_referer( $action );
|
18575 |
}
|
18576 |
|
18577 |
+
$switch_to_network_install_blog_after_cancellation = (
|
18578 |
+
is_numeric( $blog_id ) &&
|
18579 |
+
$plugin_id == $this->get_id() &&
|
18580 |
+
! $this->is_trial()
|
18581 |
+
);
|
18582 |
|
18583 |
+
$result = $this->cancel_subscription_or_trial( $plugin_id );
|
18584 |
+
if ( $this->is_api_error( $result ) ) {
|
18585 |
+
$this->_admin_notices->add(
|
18586 |
+
$result->error->message,
|
18587 |
+
$this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
|
18588 |
+
'error'
|
18589 |
+
);
|
18590 |
+
}
|
18591 |
+
|
18592 |
+
if ( $switch_to_network_install_blog_after_cancellation ) {
|
18593 |
+
$this->switch_to_blog( $this->_storage->network_install_blog_id );
|
18594 |
}
|
18595 |
|
18596 |
return;
|
18622 |
$this->_site = null;
|
18623 |
$this->_user = null;
|
18624 |
|
18625 |
+
if ( ! $is_network_action ) {
|
18626 |
+
fs_redirect( $this->get_activation_url() );
|
18627 |
+
} else if ( is_numeric( $blog_id ) ) {
|
18628 |
+
$this->switch_to_blog( $this->_storage->network_install_blog_id );
|
18629 |
+
}
|
18630 |
}
|
18631 |
} else {
|
18632 |
if ( $this->is_addon_activated( $plugin_id ) ) {
|
18724 |
#region Actions that might be called from external links (e.g. email)
|
18725 |
|
18726 |
case 'cancel_trial':
|
18727 |
+
$result = $this->cancel_subscription_or_trial( $plugin_id );
|
18728 |
+
if ( $this->is_api_error( $result ) ) {
|
18729 |
+
$this->_admin_notices->add(
|
18730 |
+
$result->error->message,
|
18731 |
+
$this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...',
|
18732 |
+
'error'
|
18733 |
+
);
|
18734 |
}
|
18735 |
|
18736 |
return;
|
19726 |
|
19727 |
if ( ! $this->is_addon() || ! $this->has_free_plan() ) {
|
19728 |
$first_time_path = $this->_menu->get_first_time_path();
|
19729 |
+
|
19730 |
+
if ( $this->is_activation_mode() ) {
|
19731 |
+
$url = $this->get_activation_url();
|
19732 |
+
} else if ( ! empty( $first_time_path ) ) {
|
19733 |
+
$url = $first_time_path;
|
19734 |
+
} else {
|
19735 |
+
$page = '';
|
19736 |
+
if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) {
|
19737 |
+
if ( $this->is_network_registered() ) {
|
19738 |
+
$page = 'account';
|
19739 |
+
} else if ( $this->is_network_anonymous() ) {
|
19740 |
+
$this->maybe_set_slug_and_network_menu_exists_flag();
|
19741 |
+
}
|
19742 |
+
}
|
19743 |
+
|
19744 |
+
$url = $this->_get_admin_page_url( $page );
|
19745 |
+
}
|
19746 |
} else {
|
19747 |
$plugin_fs = false;
|
19748 |
|
19862 |
$this->_admin_notices->add_sticky( $message, $id, $title, $type );
|
19863 |
}
|
19864 |
|
19865 |
+
/**
|
19866 |
+
* Check if the paid version of the module is installed.
|
19867 |
+
*
|
19868 |
+
* @author Vova Feldman (@svovaf)
|
19869 |
+
* @since 2.2.0
|
19870 |
+
*
|
19871 |
+
* @return bool
|
19872 |
+
*/
|
19873 |
+
private function is_premium_version_installed() {
|
19874 |
+
$premium_plugin_basename = $this->premium_plugin_basename();
|
19875 |
+
$premium_plugin = get_plugins( '/' . dirname( $premium_plugin_basename ) );
|
19876 |
+
|
19877 |
+
return ! empty( $premium_plugin );
|
19878 |
+
}
|
19879 |
+
|
19880 |
/**
|
19881 |
* Helper function that returns the final steps for the upgrade completion.
|
19882 |
*
|
19902 |
$plan_title = $this->get_plan_title();
|
19903 |
}
|
19904 |
|
19905 |
+
if ( $this->is_premium_version_installed() ) {
|
19906 |
+
/**
|
19907 |
+
* If the premium version is already installed, instead of showing the installation instructions,
|
19908 |
+
* tell the current user to activate it.
|
19909 |
+
*
|
19910 |
+
* @author Leo Fajardo (@leorw)
|
19911 |
+
* @since 2.2.1
|
19912 |
+
*/
|
19913 |
+
$premium_plugin_basename = $this->premium_plugin_basename();
|
19914 |
|
19915 |
+
return sprintf(
|
19916 |
+
/* translators: %1s: Product title; %2s: Plan title */
|
19917 |
+
$this->get_text_inline( ' The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s', 'activate-premium-version' ),
|
19918 |
+
sprintf( '<em>%s</em>', esc_html( $this->get_plugin_title() ) ),
|
19919 |
+
$plan_title,
|
19920 |
+
sprintf(
|
19921 |
+
'<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s</button></a>',
|
19922 |
+
wp_nonce_url( 'plugins.php?action=activate&plugin=' . $premium_plugin_basename, 'activate-plugin_' . $premium_plugin_basename ),
|
19923 |
+
esc_html( sprintf(
|
19924 |
+
/* translators: %s: Plan title */
|
19925 |
+
$this->get_text_inline( 'Activate %s features', 'activate-x-features' ),
|
19926 |
+
$plan_title
|
19927 |
+
) )
|
19928 |
+
)
|
19929 |
+
);
|
19930 |
+
} else {
|
19931 |
+
// @since 1.2.1.5 The free version is auto deactivated.
|
19932 |
+
$deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ?
|
19933 |
+
( '<li>' . $this->esc_html_inline( 'Deactivate the free version', 'deactivate-free-version' ) . '.</li>' ) :
|
19934 |
+
'';
|
19935 |
+
|
19936 |
+
return sprintf(
|
19937 |
+
' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>',
|
19938 |
+
$this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ),
|
19939 |
+
( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) .
|
19940 |
+
$this->get_latest_download_link( sprintf(
|
19941 |
+
/* translators: %s: Plan title */
|
19942 |
+
$this->get_text_inline( 'Download the latest %s version', 'download-latest-x-version' ),
|
19943 |
+
$plan_title
|
19944 |
+
) ),
|
19945 |
+
$deactivation_step,
|
19946 |
+
$this->get_text_inline( 'Upload and activate the downloaded version', 'upload-and-activate' ),
|
19947 |
+
'//bit.ly/upload-wp-' . $this->_module_type . 's',
|
19948 |
+
$this->get_text_inline( 'How to upload and activate?', 'howto-upload-activate' )
|
19949 |
+
);
|
19950 |
+
}
|
19951 |
}
|
19952 |
|
19953 |
/**
|
sdk/freemius/includes/class-fs-plugin-updater.php
CHANGED
@@ -35,6 +35,8 @@
|
|
35 |
*/
|
36 |
private $_translation_updates;
|
37 |
|
|
|
|
|
38 |
#--------------------------------------------------------------------------------
|
39 |
#region Singleton
|
40 |
#--------------------------------------------------------------------------------
|
@@ -82,25 +84,25 @@
|
|
82 |
|
83 |
$this->add_transient_filters();
|
84 |
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
|
105 |
if ( ! WP_FS__IS_PRODUCTION_MODE ) {
|
106 |
add_filter( 'http_request_host_is_external', array(
|
@@ -110,16 +112,88 @@
|
|
110 |
}
|
111 |
|
112 |
if ( $this->_fs->is_premium() ) {
|
113 |
-
if ( $this->is_correct_folder_name() ) {
|
114 |
add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
|
115 |
}
|
116 |
|
|
|
|
|
|
|
117 |
if ( ! $this->_fs->has_any_active_valid_license() ) {
|
118 |
add_filter( 'wp_prepare_themes_for_js', array( &$this, 'change_theme_update_info_html' ), 10, 1 );
|
119 |
}
|
120 |
}
|
121 |
}
|
122 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
123 |
/**
|
124 |
* @author Vova Feldman (@svovaf)
|
125 |
* @since 2.0.0
|
@@ -183,15 +257,53 @@
|
|
183 |
|
184 |
$r = $current->response[ $file ];
|
185 |
|
186 |
-
$
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
|
196 |
echo $plugin_update_row;
|
197 |
}
|
@@ -220,10 +332,7 @@
|
|
220 |
|
221 |
$prepared_themes[ $theme_basename ]['update'] = preg_replace(
|
222 |
'/(\<p.+>)(.+)(\<a.+\<a.+)\.(.+\<\/p\>)/is',
|
223 |
-
'$1 $2 ' .
|
224 |
-
$this->_fs->get_text_inline( '%sRenew your license now%s to access version %s security & feature updates, and support.', 'renew-license-now' ),
|
225 |
-
'<a href="' . $this->_fs->pricing_url() . '">', '</a>',
|
226 |
-
$themes_update->response[ $theme_basename ]['new_version'] ) .
|
227 |
'$4',
|
228 |
$prepared_themes[ $theme_basename ]['update']
|
229 |
);
|
@@ -303,7 +412,8 @@
|
|
303 |
$new_version = $this->_fs->get_update(
|
304 |
false,
|
305 |
fs_request_get_bool( 'force-check' ),
|
306 |
-
WP_FS__TIME_24_HOURS_IN_SEC / 24
|
|
|
307 |
);
|
308 |
|
309 |
$this->_update_details = false;
|
@@ -401,6 +511,18 @@
|
|
401 |
);
|
402 |
}
|
403 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
404 |
$update->{$this->_fs->get_module_type()} = $this->_fs->get_plugin_basename();
|
405 |
|
406 |
return $update;
|
@@ -573,7 +695,7 @@
|
|
573 |
|
574 |
$plugin_basename = $this->_fs->get_plugin_basename();
|
575 |
if ( 'themes' === $module_type ) {
|
576 |
-
$plugin_basename =
|
577 |
}
|
578 |
|
579 |
global $wp_version;
|
@@ -585,7 +707,7 @@
|
|
585 |
array(
|
586 |
"{$module_type}" => array(
|
587 |
$plugin_basename => array(
|
588 |
-
'Name' => trim( str_replace(
|
589 |
'Author' => $plugin_data['Author'],
|
590 |
)
|
591 |
)
|
@@ -748,11 +870,13 @@ if ( !isset($info->error) ) {
|
|
748 |
}*/
|
749 |
}
|
750 |
|
|
|
|
|
751 |
// Get plugin's newest update.
|
752 |
-
$new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false );
|
753 |
|
754 |
if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
|
755 |
-
$data->version = $
|
756 |
} else {
|
757 |
if ( $is_addon ) {
|
758 |
$data->name = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
|
@@ -769,6 +893,52 @@ if ( !isset($info->error) ) {
|
|
769 |
|
770 |
$data->version = $new_version->version;
|
771 |
$data->download_link = $new_version->url;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
772 |
}
|
773 |
|
774 |
return $data;
|
@@ -779,11 +949,13 @@ if ( !isset($info->error) ) {
|
|
779 |
* @since 1.2.1.7
|
780 |
*
|
781 |
* @param number|bool $addon_id
|
|
|
|
|
782 |
*
|
783 |
* @return object
|
784 |
*/
|
785 |
-
private function get_latest_download_details( $addon_id = false ) {
|
786 |
-
return $this->_fs->_fetch_latest_version( $addon_id );
|
787 |
}
|
788 |
|
789 |
/**
|
@@ -793,16 +965,10 @@ if ( !isset($info->error) ) {
|
|
793 |
* @author Vova Feldman (@svovaf)
|
794 |
* @since 1.2.1.6
|
795 |
*
|
796 |
-
* @param string $basename Current plugin's basename.
|
797 |
-
*
|
798 |
* @return bool
|
799 |
*/
|
800 |
-
private function is_correct_folder_name(
|
801 |
-
|
802 |
-
$basename = $this->_fs->get_plugin_basename();
|
803 |
-
}
|
804 |
-
|
805 |
-
return ( $this->_fs->get_target_folder_name() != trim( dirname( $basename ), '/\\' ) );
|
806 |
}
|
807 |
|
808 |
/**
|
@@ -838,7 +1004,7 @@ if ( !isset($info->error) ) {
|
|
838 |
$filename = basename( $basename );
|
839 |
|
840 |
$new_basename = plugin_basename(
|
841 |
-
trailingslashit( $this->_fs->
|
842 |
$filename
|
843 |
);
|
844 |
|
@@ -906,14 +1072,16 @@ if ( !isset($info->error) ) {
|
|
906 |
);
|
907 |
}
|
908 |
|
909 |
-
$slug
|
910 |
-
$
|
|
|
911 |
|
912 |
$is_addon = true;
|
913 |
} else {
|
914 |
-
$slug
|
915 |
-
$
|
916 |
-
|
|
|
917 |
}
|
918 |
|
919 |
if ( $this->is_premium_plugin_active( $plugin_id ) ) {
|
@@ -926,8 +1094,8 @@ if ( !isset($info->error) ) {
|
|
926 |
);
|
927 |
}
|
928 |
|
929 |
-
$latest_version = $this->get_latest_download_details( $plugin_id );
|
930 |
-
$target_folder =
|
931 |
|
932 |
// Prep variables for Plugin_Installer_Skin class.
|
933 |
$extra = array();
|
@@ -966,11 +1134,11 @@ if ( !isset($info->error) ) {
|
|
966 |
$upgrader = new Plugin_Upgrader( $skin );
|
967 |
|
968 |
// Perform the action and install the plugin from the $source urldecode().
|
969 |
-
add_filter( 'upgrader_source_selection', array(
|
970 |
|
971 |
$install_result = $upgrader->install( $source );
|
972 |
|
973 |
-
remove_filter( 'upgrader_source_selection', array(
|
974 |
|
975 |
if ( is_wp_error( $install_result ) ) {
|
976 |
return array(
|
@@ -1060,6 +1228,29 @@ if ( !isset($info->error) ) {
|
|
1060 |
return is_plugin_active( $this->_fs->premium_plugin_basename() );
|
1061 |
}
|
1062 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1063 |
/**
|
1064 |
* Adjust the plugin directory name if necessary.
|
1065 |
* Assumes plugin has a folder (not a single file plugin).
|
@@ -1071,6 +1262,7 @@ if ( !isset($info->error) ) {
|
|
1071 |
*
|
1072 |
* @author Vova Feldman
|
1073 |
* @since 1.2.1.7
|
|
|
1074 |
*
|
1075 |
* @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
|
1076 |
* @param string $remote_source Path to upgrade/zip-file-name.tmp.
|
@@ -1078,13 +1270,64 @@ if ( !isset($info->error) ) {
|
|
1078 |
*
|
1079 |
* @return string|WP_Error
|
1080 |
*/
|
1081 |
-
function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
|
1082 |
if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) {
|
1083 |
return $source;
|
1084 |
}
|
1085 |
|
|
|
|
|
|
|
1086 |
// Figure out what the slug is supposed to be.
|
1087 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1088 |
|
1089 |
$subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
|
1090 |
|
@@ -1094,15 +1337,16 @@ if ( !isset($info->error) ) {
|
|
1094 |
|
1095 |
if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
|
1096 |
return trailingslashit( $to_path );
|
1097 |
-
} else {
|
1098 |
-
return new WP_Error(
|
1099 |
-
'rename_failed',
|
1100 |
-
$this->_fs->get_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ),
|
1101 |
-
array(
|
1102 |
-
'found' => $subdir_name,
|
1103 |
-
'expected' => $desired_slug
|
1104 |
-
) );
|
1105 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1106 |
}
|
1107 |
|
1108 |
return $source;
|
35 |
*/
|
36 |
private $_translation_updates;
|
37 |
|
38 |
+
private static $_upgrade_basename = null;
|
39 |
+
|
40 |
#--------------------------------------------------------------------------------
|
41 |
#region Singleton
|
42 |
#--------------------------------------------------------------------------------
|
84 |
|
85 |
$this->add_transient_filters();
|
86 |
|
87 |
+
/**
|
88 |
+
* If user has the premium plugin's code but do NOT have an active license,
|
89 |
+
* encourage him to upgrade by showing that there's a new release, but instead
|
90 |
+
* of showing an update link, show upgrade link to the pricing page.
|
91 |
+
*
|
92 |
+
* @since 1.1.6
|
93 |
+
*
|
94 |
+
*/
|
95 |
+
// WP 2.9+
|
96 |
+
add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
|
97 |
+
&$this,
|
98 |
+
'catch_plugin_update_row'
|
99 |
+
), 9 );
|
100 |
+
add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array(
|
101 |
+
&$this,
|
102 |
+
'edit_and_echo_plugin_update_row'
|
103 |
+
), 11, 2 );
|
104 |
+
|
105 |
+
add_action( 'admin_head', array( &$this, 'catch_plugin_information_dialog_contents' ) );
|
106 |
|
107 |
if ( ! WP_FS__IS_PRODUCTION_MODE ) {
|
108 |
add_filter( 'http_request_host_is_external', array(
|
112 |
}
|
113 |
|
114 |
if ( $this->_fs->is_premium() ) {
|
115 |
+
if ( ! $this->is_correct_folder_name() ) {
|
116 |
add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 );
|
117 |
}
|
118 |
|
119 |
+
add_filter( 'upgrader_pre_install', array( 'FS_Plugin_Updater', '_store_basename_for_source_adjustment' ), 1, 2 );
|
120 |
+
add_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1, 3 );
|
121 |
+
|
122 |
if ( ! $this->_fs->has_any_active_valid_license() ) {
|
123 |
add_filter( 'wp_prepare_themes_for_js', array( &$this, 'change_theme_update_info_html' ), 10, 1 );
|
124 |
}
|
125 |
}
|
126 |
}
|
127 |
|
128 |
+
/**
|
129 |
+
* @author Leo Fajardo (@leorw)
|
130 |
+
* @since 2.1.4
|
131 |
+
*/
|
132 |
+
function catch_plugin_information_dialog_contents() {
|
133 |
+
if (
|
134 |
+
'plugin-information' !== fs_request_get( 'tab', false ) ||
|
135 |
+
$this->_fs->get_slug() !== fs_request_get( 'plugin', false )
|
136 |
+
) {
|
137 |
+
return;
|
138 |
+
}
|
139 |
+
|
140 |
+
add_action( 'admin_footer', array( &$this, 'edit_and_echo_plugin_information_dialog_contents' ), 0, 1 );
|
141 |
+
|
142 |
+
ob_start();
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* @author Leo Fajardo (@leorw)
|
147 |
+
* @since 2.1.4
|
148 |
+
*
|
149 |
+
* @param string $hook_suffix
|
150 |
+
*/
|
151 |
+
function edit_and_echo_plugin_information_dialog_contents( $hook_suffix ) {
|
152 |
+
if (
|
153 |
+
'plugin-information' !== fs_request_get( 'tab', false ) ||
|
154 |
+
$this->_fs->get_slug() !== fs_request_get( 'plugin', false )
|
155 |
+
) {
|
156 |
+
return;
|
157 |
+
}
|
158 |
+
|
159 |
+
$license = $this->_fs->_get_license();
|
160 |
+
|
161 |
+
$subscription = ( is_object( $license ) && ! $license->is_lifetime() ) ?
|
162 |
+
$this->_fs->_get_subscription( $license->id ) :
|
163 |
+
null;
|
164 |
+
|
165 |
+
$contents = ob_get_clean();
|
166 |
+
|
167 |
+
/**
|
168 |
+
* Replace the plugin information dialog's "Install Update Now" button's text and URL. If there's a license,
|
169 |
+
* the text will be "Renew license" and will link to the checkout page with the license's billing cycle
|
170 |
+
* and quota. If there's no license, the text will be "Buy license" and will link to the pricing page.
|
171 |
+
*/
|
172 |
+
$contents = preg_replace(
|
173 |
+
'/(.+\<a.+)(id="plugin_update_from_iframe")(.+href=")([^\s]+)(".+\>)(.+)(\<\/a.+)/is',
|
174 |
+
is_object( $license ) ?
|
175 |
+
sprintf(
|
176 |
+
'$1$3%s$5%s$7',
|
177 |
+
$this->_fs->checkout_url(
|
178 |
+
is_object( $subscription ) ?
|
179 |
+
( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) :
|
180 |
+
WP_FS__PERIOD_LIFETIME,
|
181 |
+
false,
|
182 |
+
array( 'licenses' => $license->quota )
|
183 |
+
),
|
184 |
+
fs_text_inline( 'Renew license', 'renew-license', $this->_fs->get_slug() )
|
185 |
+
) :
|
186 |
+
sprintf(
|
187 |
+
'$1$3%s$5%s$7',
|
188 |
+
$this->_fs->pricing_url(),
|
189 |
+
fs_text_inline( 'Buy license', 'buy-license', $this->_fs->get_slug() )
|
190 |
+
),
|
191 |
+
$contents
|
192 |
+
);
|
193 |
+
|
194 |
+
echo $contents;
|
195 |
+
}
|
196 |
+
|
197 |
/**
|
198 |
* @author Vova Feldman (@svovaf)
|
199 |
* @since 2.0.0
|
257 |
|
258 |
$r = $current->response[ $file ];
|
259 |
|
260 |
+
if ( ! $this->_fs->has_any_active_valid_license() ) {
|
261 |
+
/**
|
262 |
+
* Turn the "new version" text into a link that opens the plugin information dialog when clicked and
|
263 |
+
* make the "View version x details" text link to the checkout page instead of opening the plugin
|
264 |
+
* information dialog when clicked.
|
265 |
+
*
|
266 |
+
* Sample input:
|
267 |
+
* There is a new version of Awesome Plugin available. <a href="...>View version x.y.z details</a> or <a href="...>update now</a>.
|
268 |
+
* Output:
|
269 |
+
* There is a <a href="...>new version</a> of Awesome Plugin available. <a href="...>Buy a license now</a> to access version x.y.z security & feature updates, and support.
|
270 |
+
*
|
271 |
+
* @author Leo Fajardo (@leorw)
|
272 |
+
*/
|
273 |
+
$plugin_update_row = preg_replace(
|
274 |
+
'/(\<div.+>)(.+)(\<a.+href="([^\s]+)"([^\<]+)\>.+\<a.+)(\<\/div\>)/is',
|
275 |
+
(
|
276 |
+
'$1' .
|
277 |
+
sprintf(
|
278 |
+
fs_text_inline( 'There is a %s of %s available.', 'new-version-available', $this->_fs->get_slug() ),
|
279 |
+
sprintf(
|
280 |
+
'<a href="$4"%s>%s</a>',
|
281 |
+
'$5',
|
282 |
+
fs_text_inline( 'new version', 'new-version', $this->_fs->get_slug() )
|
283 |
+
),
|
284 |
+
$this->_fs->get_plugin_title()
|
285 |
+
) .
|
286 |
+
' ' .
|
287 |
+
$this->_fs->version_upgrade_checkout_link( $r->new_version ) .
|
288 |
+
'$6'
|
289 |
+
),
|
290 |
+
$plugin_update_row
|
291 |
+
);
|
292 |
+
}
|
293 |
+
|
294 |
+
if (
|
295 |
+
$this->_fs->is_plugin() &&
|
296 |
+
isset( $r->upgrade_notice ) &&
|
297 |
+
strlen( trim( $r->upgrade_notice ) ) > 0
|
298 |
+
) {
|
299 |
+
$upgrade_notice_html = sprintf(
|
300 |
+
'<p class="notice upgrade-notice"><strong>%s</strong> %s</p>',
|
301 |
+
fs_text_inline( 'Important Upgrade Notice:', 'upgrade_notice', $this->_fs->get_slug() ),
|
302 |
+
esc_html( $r->upgrade_notice )
|
303 |
+
);
|
304 |
+
|
305 |
+
$plugin_update_row = str_replace( '</div>', '</div>' . $upgrade_notice_html, $plugin_update_row );
|
306 |
+
}
|
307 |
|
308 |
echo $plugin_update_row;
|
309 |
}
|
332 |
|
333 |
$prepared_themes[ $theme_basename ]['update'] = preg_replace(
|
334 |
'/(\<p.+>)(.+)(\<a.+\<a.+)\.(.+\<\/p\>)/is',
|
335 |
+
'$1 $2 ' . $this->_fs->version_upgrade_checkout_link( $themes_update->response[ $theme_basename ]['new_version'] ) .
|
|
|
|
|
|
|
336 |
'$4',
|
337 |
$prepared_themes[ $theme_basename ]['update']
|
338 |
);
|
412 |
$new_version = $this->_fs->get_update(
|
413 |
false,
|
414 |
fs_request_get_bool( 'force-check' ),
|
415 |
+
WP_FS__TIME_24_HOURS_IN_SEC / 24,
|
416 |
+
$this->_fs->get_plugin_version()
|
417 |
);
|
418 |
|
419 |
$this->_update_details = false;
|
511 |
);
|
512 |
}
|
513 |
|
514 |
+
if ( $this->_fs->is_premium() ) {
|
515 |
+
$latest_tag = $this->_fs->_fetch_latest_version( $this->_fs->get_id(), false );
|
516 |
+
|
517 |
+
if (
|
518 |
+
isset( $latest_tag->readme ) &&
|
519 |
+
isset( $latest_tag->readme->upgrade_notice ) &&
|
520 |
+
! empty( $latest_tag->readme->upgrade_notice )
|
521 |
+
) {
|
522 |
+
$update->upgrade_notice = $latest_tag->readme->upgrade_notice;
|
523 |
+
}
|
524 |
+
}
|
525 |
+
|
526 |
$update->{$this->_fs->get_module_type()} = $this->_fs->get_plugin_basename();
|
527 |
|
528 |
return $update;
|
695 |
|
696 |
$plugin_basename = $this->_fs->get_plugin_basename();
|
697 |
if ( 'themes' === $module_type ) {
|
698 |
+
$plugin_basename = $slug;
|
699 |
}
|
700 |
|
701 |
global $wp_version;
|
707 |
array(
|
708 |
"{$module_type}" => array(
|
709 |
$plugin_basename => array(
|
710 |
+
'Name' => trim( str_replace( $this->_fs->get_plugin()->premium_suffix, '', $plugin_data['Name'] ) ),
|
711 |
'Author' => $plugin_data['Author'],
|
712 |
)
|
713 |
)
|
870 |
}*/
|
871 |
}
|
872 |
|
873 |
+
$plugin_version = $this->_fs->get_plugin_version();
|
874 |
+
|
875 |
// Get plugin's newest update.
|
876 |
+
$new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false, $plugin_version );
|
877 |
|
878 |
if ( ! is_object( $new_version ) || empty( $new_version->version ) ) {
|
879 |
+
$data->version = $plugin_version;
|
880 |
} else {
|
881 |
if ( $is_addon ) {
|
882 |
$data->name = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
|
893 |
|
894 |
$data->version = $new_version->version;
|
895 |
$data->download_link = $new_version->url;
|
896 |
+
|
897 |
+
if ( isset( $new_version->readme ) && is_object( $new_version->readme ) ) {
|
898 |
+
$new_version_readme_data = $new_version->readme;
|
899 |
+
if ( isset( $new_version_readme_data->sections ) ) {
|
900 |
+
$new_version_readme_data->sections = (array) $new_version_readme_data->sections;
|
901 |
+
} else {
|
902 |
+
$new_version_readme_data->sections = array();
|
903 |
+
}
|
904 |
+
|
905 |
+
if ( isset( $data->sections ) ) {
|
906 |
+
if ( isset( $data->sections['screenshots'] ) ) {
|
907 |
+
$new_version_readme_data->sections['screenshots'] = $data->sections['screenshots'];
|
908 |
+
}
|
909 |
+
|
910 |
+
if ( isset( $data->sections['reviews'] ) ) {
|
911 |
+
$new_version_readme_data->sections['reviews'] = $data->sections['reviews'];
|
912 |
+
}
|
913 |
+
}
|
914 |
+
|
915 |
+
if ( isset( $new_version_readme_data->banners ) ) {
|
916 |
+
$new_version_readme_data->banners = (array) $new_version_readme_data->banners;
|
917 |
+
} else if ( isset( $data->banners ) ) {
|
918 |
+
$new_version_readme_data->banners = $data->banners;
|
919 |
+
}
|
920 |
+
|
921 |
+
$wp_org_sections = array(
|
922 |
+
'author',
|
923 |
+
'author_profile',
|
924 |
+
'rating',
|
925 |
+
'ratings',
|
926 |
+
'num_ratings',
|
927 |
+
'support_threads',
|
928 |
+
'support_threads_resolved',
|
929 |
+
'active_installs',
|
930 |
+
'added',
|
931 |
+
'homepage'
|
932 |
+
);
|
933 |
+
|
934 |
+
foreach ( $wp_org_sections as $wp_org_section ) {
|
935 |
+
if ( isset( $data->{$wp_org_section} ) ) {
|
936 |
+
$new_version_readme_data->{$wp_org_section} = $data->{$wp_org_section};
|
937 |
+
}
|
938 |
+
}
|
939 |
+
|
940 |
+
$data = $new_version_readme_data;
|
941 |
+
}
|
942 |
}
|
943 |
|
944 |
return $data;
|
949 |
* @since 1.2.1.7
|
950 |
*
|
951 |
* @param number|bool $addon_id
|
952 |
+
* @param bool|string $newer_than Since 2.2.1
|
953 |
+
* @param bool|string $fetch_readme Since 2.2.1
|
954 |
*
|
955 |
* @return object
|
956 |
*/
|
957 |
+
private function get_latest_download_details( $addon_id = false, $newer_than = false, $fetch_readme = true ) {
|
958 |
+
return $this->_fs->_fetch_latest_version( $addon_id, true, WP_FS__TIME_24_HOURS_IN_SEC, $newer_than, $fetch_readme );
|
959 |
}
|
960 |
|
961 |
/**
|
965 |
* @author Vova Feldman (@svovaf)
|
966 |
* @since 1.2.1.6
|
967 |
*
|
|
|
|
|
968 |
* @return bool
|
969 |
*/
|
970 |
+
private function is_correct_folder_name() {
|
971 |
+
return ( $this->_fs->get_target_folder_name() == trim( dirname( $this->_fs->get_plugin_basename() ), '/\\' ) );
|
|
|
|
|
|
|
|
|
972 |
}
|
973 |
|
974 |
/**
|
1004 |
$filename = basename( $basename );
|
1005 |
|
1006 |
$new_basename = plugin_basename(
|
1007 |
+
trailingslashit( $this->_fs->is_premium() ? $this->_fs->get_premium_slug() : $this->_fs->get_slug() ) .
|
1008 |
$filename
|
1009 |
);
|
1010 |
|
1072 |
);
|
1073 |
}
|
1074 |
|
1075 |
+
$slug = $addon->slug;
|
1076 |
+
$premium_slug = $addon->premium_slug;
|
1077 |
+
$title = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' );
|
1078 |
|
1079 |
$is_addon = true;
|
1080 |
} else {
|
1081 |
+
$slug = $this->_fs->get_slug();
|
1082 |
+
$premium_slug = $this->_fs->get_premium_slug();
|
1083 |
+
$title = $this->_fs->get_plugin_title() .
|
1084 |
+
( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ) : '' );
|
1085 |
}
|
1086 |
|
1087 |
if ( $this->is_premium_plugin_active( $plugin_id ) ) {
|
1094 |
);
|
1095 |
}
|
1096 |
|
1097 |
+
$latest_version = $this->get_latest_download_details( $plugin_id, false, false );
|
1098 |
+
$target_folder = $premium_slug;
|
1099 |
|
1100 |
// Prep variables for Plugin_Installer_Skin class.
|
1101 |
$extra = array();
|
1134 |
$upgrader = new Plugin_Upgrader( $skin );
|
1135 |
|
1136 |
// Perform the action and install the plugin from the $source urldecode().
|
1137 |
+
add_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1, 3 );
|
1138 |
|
1139 |
$install_result = $upgrader->install( $source );
|
1140 |
|
1141 |
+
remove_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1 );
|
1142 |
|
1143 |
if ( is_wp_error( $install_result ) ) {
|
1144 |
return array(
|
1228 |
return is_plugin_active( $this->_fs->premium_plugin_basename() );
|
1229 |
}
|
1230 |
|
1231 |
+
/**
|
1232 |
+
* Store the basename since it's not always available in the `_maybe_adjust_source_dir` method below.
|
1233 |
+
*
|
1234 |
+
* @author Leo Fajardo (@leorw)
|
1235 |
+
* @since 2.2.1
|
1236 |
+
*
|
1237 |
+
* @param bool|WP_Error $response Response.
|
1238 |
+
* @param array $hook_extra Extra arguments passed to hooked filters.
|
1239 |
+
*
|
1240 |
+
* @return bool|WP_Error
|
1241 |
+
*/
|
1242 |
+
static function _store_basename_for_source_adjustment( $response, $hook_extra ) {
|
1243 |
+
if ( isset( $hook_extra['plugin'] ) ) {
|
1244 |
+
self::$_upgrade_basename = $hook_extra['plugin'];
|
1245 |
+
} else if ( $hook_extra['theme'] ) {
|
1246 |
+
self::$_upgrade_basename = $hook_extra['theme'];
|
1247 |
+
} else {
|
1248 |
+
self::$_upgrade_basename = null;
|
1249 |
+
}
|
1250 |
+
|
1251 |
+
return $response;
|
1252 |
+
}
|
1253 |
+
|
1254 |
/**
|
1255 |
* Adjust the plugin directory name if necessary.
|
1256 |
* Assumes plugin has a folder (not a single file plugin).
|
1262 |
*
|
1263 |
* @author Vova Feldman
|
1264 |
* @since 1.2.1.7
|
1265 |
+
* @since 2.2.1 The method was converted to static since when the admin update bulk products via the Updates section, the logic applies the `upgrader_source_selection` filter for every product that is being updated.
|
1266 |
*
|
1267 |
* @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/.
|
1268 |
* @param string $remote_source Path to upgrade/zip-file-name.tmp.
|
1270 |
*
|
1271 |
* @return string|WP_Error
|
1272 |
*/
|
1273 |
+
static function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) {
|
1274 |
if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) {
|
1275 |
return $source;
|
1276 |
}
|
1277 |
|
1278 |
+
$basename = self::$_upgrade_basename;
|
1279 |
+
$is_theme = false;
|
1280 |
+
|
1281 |
// Figure out what the slug is supposed to be.
|
1282 |
+
if ( isset( $upgrader->skin->options['extra'] ) ) {
|
1283 |
+
// Set by the auto-install logic.
|
1284 |
+
$desired_slug = $upgrader->skin->options['extra']['slug'];
|
1285 |
+
} else if ( ! empty( $basename ) ) {
|
1286 |
+
/**
|
1287 |
+
* If it doesn't end with ".php", it's a theme.
|
1288 |
+
*
|
1289 |
+
* @author Leo Fajardo (@leorw)
|
1290 |
+
* @since 2.2.1
|
1291 |
+
*/
|
1292 |
+
$is_theme = ( ! fs_ends_with( $basename, '.php' ) );
|
1293 |
+
|
1294 |
+
$desired_slug = ( ! $is_theme ) ?
|
1295 |
+
dirname( $basename ) :
|
1296 |
+
// Theme slug
|
1297 |
+
$basename;
|
1298 |
+
} else {
|
1299 |
+
// Can't figure out the desired slug, stop the execution.
|
1300 |
+
return $source;
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
if ( is_multisite() ) {
|
1304 |
+
/**
|
1305 |
+
* If we are running in a multisite environment and the product is not network activated,
|
1306 |
+
* the instance will not exist anyway. Therefore, try to update the source if necessary
|
1307 |
+
* regardless if the Freemius instance of the product exists or not.
|
1308 |
+
*
|
1309 |
+
* @author Vova Feldman
|
1310 |
+
*/
|
1311 |
+
} else if ( ! empty( $basename ) ) {
|
1312 |
+
$fs = Freemius::get_instance_by_file(
|
1313 |
+
$basename,
|
1314 |
+
$is_theme ?
|
1315 |
+
WP_FS__MODULE_TYPE_THEME :
|
1316 |
+
WP_FS__MODULE_TYPE_PLUGIN
|
1317 |
+
);
|
1318 |
+
|
1319 |
+
if ( ! is_object( $fs ) ) {
|
1320 |
+
/**
|
1321 |
+
* If the Freemius instance does not exist on a non-multisite network environment, it means that:
|
1322 |
+
* 1. The product is not powered by Freemius; OR
|
1323 |
+
* 2. The product is not activated, therefore, we don't mind if after the update the folder name will change.
|
1324 |
+
*
|
1325 |
+
* @author Leo Fajardo (@leorw)
|
1326 |
+
* @since 2.2.1
|
1327 |
+
*/
|
1328 |
+
return $source;
|
1329 |
+
}
|
1330 |
+
}
|
1331 |
|
1332 |
$subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) );
|
1333 |
|
1337 |
|
1338 |
if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) {
|
1339 |
return trailingslashit( $to_path );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1340 |
}
|
1341 |
+
|
1342 |
+
return new WP_Error(
|
1343 |
+
'rename_failed',
|
1344 |
+
fs_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ),
|
1345 |
+
array(
|
1346 |
+
'found' => $subdir_name,
|
1347 |
+
'expected' => $desired_slug
|
1348 |
+
)
|
1349 |
+
);
|
1350 |
}
|
1351 |
|
1352 |
return $source;
|
sdk/freemius/includes/class-fs-storage.php
CHANGED
@@ -374,6 +374,7 @@
|
|
374 |
// When network activated, then network level.
|
375 |
'install_timestamp' => 1,
|
376 |
'prev_is_premium' => 1,
|
|
|
377 |
|
378 |
// If not network activated OR delegated, then site level.
|
379 |
'activation_timestamp' => 2,
|
374 |
// When network activated, then network level.
|
375 |
'install_timestamp' => 1,
|
376 |
'prev_is_premium' => 1,
|
377 |
+
'require_license_activation' => 1,
|
378 |
|
379 |
// If not network activated OR delegated, then site level.
|
380 |
'activation_timestamp' => 2,
|
sdk/freemius/includes/entities/class-fs-plugin.php
CHANGED
@@ -24,6 +24,13 @@
|
|
24 |
* @var string
|
25 |
*/
|
26 |
public $slug;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
/**
|
28 |
* @since 1.2.2
|
29 |
*
|
@@ -67,6 +74,13 @@
|
|
67 |
* @var bool
|
68 |
*/
|
69 |
public $is_premium;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
70 |
/**
|
71 |
* @since 1.0.9
|
72 |
*
|
@@ -87,6 +101,14 @@
|
|
87 |
$this->is_premium = false;
|
88 |
$this->is_live = true;
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
if ( isset( $plugin->info ) && is_object( $plugin->info ) ) {
|
91 |
$this->info = new FS_Plugin_Info( $plugin->info );
|
92 |
}
|
24 |
* @var string
|
25 |
*/
|
26 |
public $slug;
|
27 |
+
/**
|
28 |
+
* @author Leo Fajardo (@leorw)
|
29 |
+
* @since 2.2.1
|
30 |
+
*
|
31 |
+
* @var string
|
32 |
+
*/
|
33 |
+
public $premium_slug;
|
34 |
/**
|
35 |
* @since 1.2.2
|
36 |
*
|
74 |
* @var bool
|
75 |
*/
|
76 |
public $is_premium;
|
77 |
+
/**
|
78 |
+
* @author Leo Fajardo (@leorw)
|
79 |
+
* @since 2.2.1
|
80 |
+
*
|
81 |
+
* @var string
|
82 |
+
*/
|
83 |
+
public $premium_suffix;
|
84 |
/**
|
85 |
* @since 1.0.9
|
86 |
*
|
101 |
$this->is_premium = false;
|
102 |
$this->is_live = true;
|
103 |
|
104 |
+
if ( empty( $this->premium_slug ) && ! empty( $plugin->slug ) ) {
|
105 |
+
$this->premium_slug = "{$this->slug}-premium";
|
106 |
+
}
|
107 |
+
|
108 |
+
if ( empty( $this->premium_suffix ) ) {
|
109 |
+
$this->premium_suffix = '(Premium)';
|
110 |
+
}
|
111 |
+
|
112 |
if ( isset( $plugin->info ) && is_object( $plugin->info ) ) {
|
113 |
$this->info = new FS_Plugin_Info( $plugin->info );
|
114 |
}
|
sdk/freemius/includes/entities/class-fs-site.php
CHANGED
@@ -164,6 +164,8 @@
|
|
164 |
fs_ends_with( $subdomain, '.myftpupload.com' ) ||
|
165 |
// ngrok tunneling.
|
166 |
fs_ends_with( $subdomain, '.ngrok.io' ) ||
|
|
|
|
|
167 |
// SiteGround staging.
|
168 |
fs_starts_with( $subdomain, 'staging' ) ||
|
169 |
// WPEngine staging.
|
164 |
fs_ends_with( $subdomain, '.myftpupload.com' ) ||
|
165 |
// ngrok tunneling.
|
166 |
fs_ends_with( $subdomain, '.ngrok.io' ) ||
|
167 |
+
// wpsandbox.
|
168 |
+
fs_ends_with( $subdomain, '.wpsandbox.pro' ) ||
|
169 |
// SiteGround staging.
|
170 |
fs_starts_with( $subdomain, 'staging' ) ||
|
171 |
// WPEngine staging.
|
sdk/freemius/includes/fs-essential-functions.php
CHANGED
@@ -36,6 +36,8 @@
|
|
36 |
}
|
37 |
}
|
38 |
|
|
|
|
|
39 |
#region Core Redirect (copied from BuddyPress) -----------------------------------------
|
40 |
|
41 |
if ( ! function_exists( 'fs_redirect' ) ) {
|
@@ -273,11 +275,11 @@
|
|
273 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
274 |
}
|
275 |
|
276 |
-
$all_plugins =
|
277 |
$all_plugins_paths = array();
|
278 |
|
279 |
// Get active plugin's main files real full names (might be symlinks).
|
280 |
-
foreach ( $all_plugins as $relative_path =>
|
281 |
$all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
|
282 |
}
|
283 |
|
36 |
}
|
37 |
}
|
38 |
|
39 |
+
require_once dirname( __FILE__ ) . '/supplements/fs-essential-functions-2.2.1.php';
|
40 |
+
|
41 |
#region Core Redirect (copied from BuddyPress) -----------------------------------------
|
42 |
|
43 |
if ( ! function_exists( 'fs_redirect' ) ) {
|
275 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
276 |
}
|
277 |
|
278 |
+
$all_plugins = fs_get_plugins( true );
|
279 |
$all_plugins_paths = array();
|
280 |
|
281 |
// Get active plugin's main files real full names (might be symlinks).
|
282 |
+
foreach ( $all_plugins as $relative_path => $data ) {
|
283 |
$all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) );
|
284 |
}
|
285 |
|
sdk/freemius/includes/fs-plugin-info-dialog.php
CHANGED
@@ -64,7 +64,7 @@
|
|
64 |
function _get_addon_info_filter( $data, $action = '', $args = null ) {
|
65 |
$this->_logger->entrance();
|
66 |
|
67 |
-
$parent_plugin_id = fs_request_get( 'parent_plugin_id',
|
68 |
|
69 |
if ( $this->_fs->get_id() != $parent_plugin_id ||
|
70 |
( 'plugin_information' !== $action ) ||
|
@@ -142,6 +142,8 @@
|
|
142 |
}
|
143 |
}
|
144 |
|
|
|
|
|
145 |
if ( ! $has_paid_plan && $selected_addon->is_wp_org_compliant ) {
|
146 |
$repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
|
147 |
'plugin_information', (object) array(
|
@@ -170,8 +172,28 @@
|
|
170 |
} else {
|
171 |
$data->wp_org_missing = false;
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
// Fetch latest version from Freemius.
|
174 |
-
$latest = $this->_fs->_fetch_latest_version(
|
|
|
|
|
|
|
|
|
|
|
175 |
|
176 |
if ( $has_paid_plan ) {
|
177 |
$data->checkout_link = $this->_fs->checkout_url();
|
@@ -214,11 +236,19 @@
|
|
214 |
}
|
215 |
}
|
216 |
|
217 |
-
$data->name
|
218 |
-
$view_vars
|
219 |
-
|
220 |
-
|
221 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
|
223 |
if ( $has_pricing ) {
|
224 |
// Add plans to data.
|
64 |
function _get_addon_info_filter( $data, $action = '', $args = null ) {
|
65 |
$this->_logger->entrance();
|
66 |
|
67 |
+
$parent_plugin_id = fs_request_get( 'parent_plugin_id', $this->_fs->get_id() );
|
68 |
|
69 |
if ( $this->_fs->get_id() != $parent_plugin_id ||
|
70 |
( 'plugin_information' !== $action ) ||
|
142 |
}
|
143 |
}
|
144 |
|
145 |
+
$latest = null;
|
146 |
+
|
147 |
if ( ! $has_paid_plan && $selected_addon->is_wp_org_compliant ) {
|
148 |
$repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository(
|
149 |
'plugin_information', (object) array(
|
172 |
} else {
|
173 |
$data->wp_org_missing = false;
|
174 |
|
175 |
+
$current_addon_version = false;
|
176 |
+
if ( $this->_fs->is_addon_activated( $selected_addon->id ) ) {
|
177 |
+
$current_addon_version = $this->_fs->get_addon_instance( $selected_addon->id )->get_plugin_version();
|
178 |
+
} else if ( $this->_fs->is_addon_installed( $selected_addon->id ) ) {
|
179 |
+
$addon_plugin_data = get_plugin_data(
|
180 |
+
( WP_PLUGIN_DIR . '/' . $this->_fs->get_addon_basename( $selected_addon->id ) ),
|
181 |
+
false,
|
182 |
+
false
|
183 |
+
);
|
184 |
+
|
185 |
+
if ( ! empty( $addon_plugin_data ) ) {
|
186 |
+
$current_addon_version = $addon_plugin_data['Version'];
|
187 |
+
}
|
188 |
+
}
|
189 |
+
|
190 |
// Fetch latest version from Freemius.
|
191 |
+
$latest = $this->_fs->_fetch_latest_version(
|
192 |
+
$selected_addon->id,
|
193 |
+
true,
|
194 |
+
WP_FS__TIME_24_HOURS_IN_SEC,
|
195 |
+
$current_addon_version
|
196 |
+
);
|
197 |
|
198 |
if ( $has_paid_plan ) {
|
199 |
$data->checkout_link = $this->_fs->checkout_url();
|
236 |
}
|
237 |
}
|
238 |
|
239 |
+
$data->name = $selected_addon->title;
|
240 |
+
$view_vars = array( 'plugin' => $selected_addon );
|
241 |
+
|
242 |
+
if ( is_object( $latest ) && isset( $latest->readme ) && is_object( $latest->readme ) ) {
|
243 |
+
$latest_version_readme_data = $latest->readme;
|
244 |
+
if ( isset( $latest_version_readme_data->sections ) ) {
|
245 |
+
$data->sections = (array) $latest_version_readme_data->sections;
|
246 |
+
} else {
|
247 |
+
$data->sections = array();
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
$data->sections['description'] = fs_get_template( '/plugin-info/description.php', $view_vars );
|
252 |
|
253 |
if ( $has_pricing ) {
|
254 |
// Add plans to data.
|
sdk/freemius/includes/i18n.php
CHANGED
@@ -94,7 +94,7 @@
|
|
94 |
'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
|
95 |
'%s - plugin name. As complete "Jetpack" activation now' ),
|
96 |
'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the %s, %s' ),
|
97 |
-
'optin-x-now' => _fs_text( 'Opt in to make "%s"
|
98 |
'error' => _fs_text( 'Error' ),
|
99 |
'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
|
100 |
'learn-more' => _fs_text( 'Learn more' ),
|
@@ -215,7 +215,7 @@
|
|
215 |
'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?' ),
|
216 |
'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
|
217 |
'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
|
218 |
-
'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to %s updates
|
219 |
'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
|
220 |
'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
|
221 |
#endregion Account
|
@@ -600,4 +600,4 @@
|
|
600 |
'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
|
601 |
'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
|
602 |
'latest-installed' => _fs_text( 'Latest Version Installed' ),
|
603 |
-
);
|
94 |
'activate-x-now' => _fs_x( 'Complete "%s" Activation Now',
|
95 |
'%s - plugin name. As complete "Jetpack" activation now' ),
|
96 |
'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the %s, %s' ),
|
97 |
+
'optin-x-now' => _fs_text( 'Opt in to make "%s" better!' ),
|
98 |
'error' => _fs_text( 'Error' ),
|
99 |
'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ),
|
100 |
'learn-more' => _fs_text( 'Learn more' ),
|
215 |
'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?' ),
|
216 |
'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ),
|
217 |
'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ),
|
218 |
+
'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.' ),
|
219 |
'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ),
|
220 |
'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ),
|
221 |
#endregion Account
|
600 |
'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ),
|
601 |
'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ),
|
602 |
'latest-installed' => _fs_text( 'Latest Version Installed' ),
|
603 |
+
);
|
sdk/freemius/includes/managers/class-fs-admin-menu-manager.php
CHANGED
@@ -280,6 +280,18 @@
|
|
280 |
return $this->_network_menu_exists;
|
281 |
}
|
282 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
283 |
/**
|
284 |
* @author Vova Feldman (@svovaf)
|
285 |
* @since 1.1.3
|
280 |
return $this->_network_menu_exists;
|
281 |
}
|
282 |
|
283 |
+
/**
|
284 |
+
* @author Leo Fajardo (@leorw)
|
285 |
+
*
|
286 |
+
* @param string $menu_slug
|
287 |
+
*
|
288 |
+
* @since 2.1.3
|
289 |
+
*/
|
290 |
+
function set_slug_and_network_menu_exists_flag($menu_slug ) {
|
291 |
+
$this->_menu_slug = $menu_slug;
|
292 |
+
$this->_network_menu_exists = false;
|
293 |
+
}
|
294 |
+
|
295 |
/**
|
296 |
* @author Vova Feldman (@svovaf)
|
297 |
* @since 1.1.3
|
sdk/freemius/includes/managers/class-fs-admin-notice-manager.php
CHANGED
@@ -226,6 +226,49 @@
|
|
226 |
}
|
227 |
}
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
fs_require_template( 'admin-notice.php', $msg );
|
230 |
|
231 |
if ( $msg['sticky'] ) {
|
226 |
}
|
227 |
}
|
228 |
|
229 |
+
/**
|
230 |
+
* Added a filter to control the visibility of admin notices.
|
231 |
+
*
|
232 |
+
* Usage example:
|
233 |
+
*
|
234 |
+
* /**
|
235 |
+
* * @param bool $show
|
236 |
+
* * @param array $msg {
|
237 |
+
* * @var string $message The actual message.
|
238 |
+
* * @var string $title An optional message title.
|
239 |
+
* * @var string $type The type of the message ('success', 'update', 'warning', 'promotion').
|
240 |
+
* * @var string $id The unique identifier of the message.
|
241 |
+
* * @var string $manager_id The unique identifier of the notices manager. For plugins it would be the plugin's slug, for themes - `<slug>-theme`.
|
242 |
+
* * @var string $plugin The product's title.
|
243 |
+
* * @var string $wp_user_id An optional WP user ID that this admin notice is for.
|
244 |
+
* * }
|
245 |
+
* *
|
246 |
+
* * @return bool
|
247 |
+
* *\/
|
248 |
+
* function my_custom_show_admin_notice( $show, $msg ) {
|
249 |
+
* if ('trial_promotion' != $msg['id']) {
|
250 |
+
* return false;
|
251 |
+
* }
|
252 |
+
*
|
253 |
+
* return $show;
|
254 |
+
* }
|
255 |
+
*
|
256 |
+
* my_fs()->add_filter( 'show_admin_notice', 'my_custom_show_admin_notice', 10, 2 );
|
257 |
+
*
|
258 |
+
* @author Vova Feldman
|
259 |
+
* @since 2.2.0
|
260 |
+
*/
|
261 |
+
$show_notice = call_user_func_array( 'fs_apply_filter', array(
|
262 |
+
$this->_module_unique_affix,
|
263 |
+
'show_admin_notice',
|
264 |
+
true,
|
265 |
+
$msg
|
266 |
+
) );
|
267 |
+
|
268 |
+
if ( true !== $show_notice ) {
|
269 |
+
continue;
|
270 |
+
}
|
271 |
+
|
272 |
fs_require_template( 'admin-notice.php', $msg );
|
273 |
|
274 |
if ( $msg['sticky'] ) {
|
sdk/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php
CHANGED
@@ -26,16 +26,12 @@
|
|
26 |
* If the user changes the main plugin's file name, the file_exists()
|
27 |
* will catch it.
|
28 |
*/
|
29 |
-
|
30 |
-
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
31 |
-
}
|
32 |
-
|
33 |
-
$all_plugins = get_plugins();
|
34 |
|
35 |
$file_real_path = fs_normalize_path( realpath( $file ) );
|
36 |
|
37 |
// Get active plugin's main files real full names (might be symlinks).
|
38 |
-
foreach ( $all_plugins as $relative_path =>
|
39 |
if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) ) ) ) {
|
40 |
if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) {
|
41 |
return $relative_path;
|
26 |
* If the user changes the main plugin's file name, the file_exists()
|
27 |
* will catch it.
|
28 |
*/
|
29 |
+
$all_plugins = fs_get_plugins( true );
|
|
|
|
|
|
|
|
|
30 |
|
31 |
$file_real_path = fs_normalize_path( realpath( $file ) );
|
32 |
|
33 |
// Get active plugin's main files real full names (might be symlinks).
|
34 |
+
foreach ( $all_plugins as $relative_path => $data ) {
|
35 |
if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) ) ) ) {
|
36 |
if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) {
|
37 |
return $relative_path;
|
sdk/freemius/includes/supplements/fs-essential-functions-2.2.1.php
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Freemius
|
4 |
+
* @copyright Copyright (c) 2015, Freemius, Inc.
|
5 |
+
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
|
6 |
+
* @since 2.2.1
|
7 |
+
*/
|
8 |
+
|
9 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
+
exit;
|
11 |
+
}
|
12 |
+
|
13 |
+
if ( ! function_exists( 'fs_get_plugins' ) ) {
|
14 |
+
/**
|
15 |
+
* @author Leo Fajardo (@leorw)
|
16 |
+
* @since 2.2.1
|
17 |
+
*
|
18 |
+
* @param bool $delete_cache
|
19 |
+
*
|
20 |
+
* @return array
|
21 |
+
*/
|
22 |
+
function fs_get_plugins( $delete_cache = false ) {
|
23 |
+
$cached_plugins = wp_cache_get( 'plugins', 'plugins' );
|
24 |
+
if ( ! is_array( $cached_plugins ) ) {
|
25 |
+
$cached_plugins = array();
|
26 |
+
}
|
27 |
+
|
28 |
+
$plugin_folder = '';
|
29 |
+
if ( isset( $cached_plugins[ $plugin_folder ] ) ) {
|
30 |
+
$plugins = $cached_plugins[ $plugin_folder ];
|
31 |
+
} else {
|
32 |
+
if ( ! function_exists( 'get_plugins' ) ) {
|
33 |
+
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
34 |
+
}
|
35 |
+
|
36 |
+
$plugins = get_plugins();
|
37 |
+
|
38 |
+
if ( $delete_cache && is_plugin_active( 'woocommerce/woocommerce.php' ) ) {
|
39 |
+
wp_cache_delete( 'plugins', 'plugins' );
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
return $plugins;
|
44 |
+
}
|
45 |
+
}
|
sdk/freemius/languages/freemius-da_DK.mo
CHANGED
Binary file
|
sdk/freemius/languages/freemius-da_DK.po
CHANGED
@@ -1,12 +1,2434 @@
|
|
|
|
|
|
|
|
|
|
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
-
"Project-Id-Version: \n"
|
4 |
-
"Report-Msgid-Bugs-To: \n"
|
5 |
"POT-Creation-Date: \n"
|
6 |
-
"PO-Revision-Date: \n"
|
7 |
-
"Last-Translator:
|
8 |
-
"Language: \n"
|
9 |
-
"Language-Team: \n"
|
10 |
-
"Content-Type: \n"
|
11 |
-
"Content-Transfer-Encoding: \n"
|
12 |
-
"Plural-Forms:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Copyright (C) 2018 freemius
|
2 |
+
# This file is distributed under the same license as the freemius package.
|
3 |
+
# Translators:
|
4 |
+
# Joachim Jensen, 2016-2018
|
5 |
+
# Lars Koudal, 2018
|
6 |
msgid ""
|
7 |
msgstr ""
|
8 |
+
"Project-Id-Version: WordPress SDK\n"
|
9 |
+
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
10 |
"POT-Creation-Date: \n"
|
11 |
+
"PO-Revision-Date: 2018-11-25 07:22+0000\n"
|
12 |
+
"Last-Translator: Vova Feldman <vova@freemius.com>\n"
|
13 |
+
"Language: da_DK\n"
|
14 |
+
"Language-Team: Danish (Denmark) (http://www.transifex.com/freemius/wordpress-sdk/language/da_DK/)\n"
|
15 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
16 |
+
"Content-Transfer-Encoding: 8bit\n"
|
17 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
18 |
+
"MIME-Version: 1.0\n"
|
19 |
+
"X-Poedit-Basepath: ..\n"
|
20 |
+
"X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n"
|
21 |
+
"X-Poedit-SearchPath-0: .\n"
|
22 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
23 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
24 |
+
|
25 |
+
#: includes/class-freemius.php:1602
|
26 |
+
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
27 |
+
msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
28 |
+
|
29 |
+
#: includes/class-freemius.php:1604
|
30 |
+
msgid "Error"
|
31 |
+
msgstr "Fejl"
|
32 |
+
|
33 |
+
#: includes/class-freemius.php:1925
|
34 |
+
msgid "I found a better %s"
|
35 |
+
msgstr "Jeg fandt et bedre %s"
|
36 |
+
|
37 |
+
#: includes/class-freemius.php:1927
|
38 |
+
msgid "What's the %s's name?"
|
39 |
+
msgstr "Hvad er navnet på %s?"
|
40 |
+
|
41 |
+
#: includes/class-freemius.php:1933
|
42 |
+
msgid "It's a temporary %s. I'm just debugging an issue."
|
43 |
+
msgstr "Det er en midlertidig %s. Jeg er i gang med fejlrettelser."
|
44 |
+
|
45 |
+
#: includes/class-freemius.php:1935
|
46 |
+
msgid "Deactivation"
|
47 |
+
msgstr "Deaktivering"
|
48 |
+
|
49 |
+
#: includes/class-freemius.php:1936
|
50 |
+
msgid "Theme Switch"
|
51 |
+
msgstr "Temaskift"
|
52 |
+
|
53 |
+
#: includes/class-freemius.php1945, templates/forms/resend-key.php:24
|
54 |
+
msgid "Other"
|
55 |
+
msgstr "Andet"
|
56 |
+
|
57 |
+
#: includes/class-freemius.php:1953
|
58 |
+
msgid "I no longer need the %s"
|
59 |
+
msgstr "Jeg har ikke længere brug for %s"
|
60 |
+
|
61 |
+
#: includes/class-freemius.php:1960
|
62 |
+
msgid "I only needed the %s for a short period"
|
63 |
+
msgstr "Jeg behøvede kun %s i en kort periode"
|
64 |
+
|
65 |
+
#: includes/class-freemius.php:1966
|
66 |
+
msgid "The %s broke my site"
|
67 |
+
msgstr "%s ødelagde min webside"
|
68 |
+
|
69 |
+
#: includes/class-freemius.php:1973
|
70 |
+
msgid "The %s suddenly stopped working"
|
71 |
+
msgstr "%s stoppede pludseligt med at virke"
|
72 |
+
|
73 |
+
#: includes/class-freemius.php:1983
|
74 |
+
msgid "I can't pay for it anymore"
|
75 |
+
msgstr "Jeg kan ikke længere betale for det"
|
76 |
+
|
77 |
+
#: includes/class-freemius.php:1985
|
78 |
+
msgid "What price would you feel comfortable paying?"
|
79 |
+
msgstr "Hvilken pris ville du foretrække at betale?"
|
80 |
+
|
81 |
+
#: includes/class-freemius.php:1991
|
82 |
+
msgid "I don't like to share my information with you"
|
83 |
+
msgstr "Jeg har ikke lyst til at dele mine informationer med jer"
|
84 |
+
|
85 |
+
#: includes/class-freemius.php:2012
|
86 |
+
msgid "The %s didn't work"
|
87 |
+
msgstr "%s virkede ikke"
|
88 |
+
|
89 |
+
#: includes/class-freemius.php:2022
|
90 |
+
msgid "I couldn't understand how to make it work"
|
91 |
+
msgstr "Jeg forstod ikke, hvordan jeg skulle få det til at fungere."
|
92 |
+
|
93 |
+
#: includes/class-freemius.php:2030
|
94 |
+
msgid "The %s is great, but I need specific feature that you don't support"
|
95 |
+
msgstr "%s er godt, men jeg har brug for en specifik feature, som ikke understøttes"
|
96 |
+
|
97 |
+
#: includes/class-freemius.php:2032
|
98 |
+
msgid "What feature?"
|
99 |
+
msgstr "Hvilken feature?"
|
100 |
+
|
101 |
+
#: includes/class-freemius.php:2036
|
102 |
+
msgid "The %s is not working"
|
103 |
+
msgstr "%s virker ikke"
|
104 |
+
|
105 |
+
#: includes/class-freemius.php:2038
|
106 |
+
msgid "Kindly share what didn't work so we can fix it for future users..."
|
107 |
+
msgstr "Kindly share what didn't work so we can fix it for future users..."
|
108 |
+
|
109 |
+
#: includes/class-freemius.php:2042
|
110 |
+
msgid "It's not what I was looking for"
|
111 |
+
msgstr "Det er ikke, hvad jeg søgte"
|
112 |
+
|
113 |
+
#: includes/class-freemius.php:2044
|
114 |
+
msgid "What you've been looking for?"
|
115 |
+
msgstr "Hvad har du ledt efter?"
|
116 |
+
|
117 |
+
#: includes/class-freemius.php:2048
|
118 |
+
msgid "The %s didn't work as expected"
|
119 |
+
msgstr "%s virkede ikke som forventet"
|
120 |
+
|
121 |
+
#: includes/class-freemius.php:2050
|
122 |
+
msgid "What did you expect?"
|
123 |
+
msgstr "Hvad forventede du?"
|
124 |
+
|
125 |
+
#: includes/class-freemius.php2853, templates/debug.php:20
|
126 |
+
msgid "Freemius Debug"
|
127 |
+
msgstr "Freemius Debug"
|
128 |
+
|
129 |
+
#: includes/class-freemius.php:3581
|
130 |
+
msgid "I don't know what is cURL or how to install it, help me!"
|
131 |
+
msgstr "Jeg ved ikke hvad cURL er, eller hvordan jeg installerer det. Hjælp mig!"
|
132 |
+
|
133 |
+
#: includes/class-freemius.php:3583
|
134 |
+
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
135 |
+
msgstr "Vi vil kontakte din udbyder og løse problemet. Når vi har opdatinger i sagen, vil vi følge op med en email til dig på %s."
|
136 |
+
|
137 |
+
#: includes/class-freemius.php:3590
|
138 |
+
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
139 |
+
msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
140 |
+
|
141 |
+
#: includes/class-freemius.php:3695
|
142 |
+
msgid "Yes - do your thing"
|
143 |
+
msgstr "Ja - fortsæt bare"
|
144 |
+
|
145 |
+
#: includes/class-freemius.php:3700
|
146 |
+
msgid "No - just deactivate"
|
147 |
+
msgstr "Nej - bare deaktiver"
|
148 |
+
|
149 |
+
#: includes/class-freemius.php3745, includes/class-freemius.php4253,
|
150 |
+
#: includes/class-freemius.php5318, includes/class-freemius.php11316,
|
151 |
+
#: includes/class-freemius.php14649, includes/class-freemius.php14701,
|
152 |
+
#: includes/class-freemius.php14763, includes/class-freemius.php16969,
|
153 |
+
#: includes/class-freemius.php16979, includes/class-freemius.php17588,
|
154 |
+
#: includes/class-freemius.php18446, includes/class-freemius.php18561,
|
155 |
+
#: includes/class-freemius.php18705, templates/add-ons.php:43
|
156 |
+
msgctxt "exclamation"
|
157 |
+
msgid "Oops"
|
158 |
+
msgstr "Ups"
|
159 |
+
|
160 |
+
#: includes/class-freemius.php:3814
|
161 |
+
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
162 |
+
msgstr "Tak fordi du giver os en chance for at fixe det! En besked er lige blevet sendt til vores tekniske personale. Vi vil vende tilbage, så snart der er nyt om %s. Vi sætter pris på din tålmodighed."
|
163 |
+
|
164 |
+
#: includes/class-freemius.php:4250
|
165 |
+
msgctxt "addonX cannot run without pluginY"
|
166 |
+
msgid "%s cannot run without %s."
|
167 |
+
msgstr "%s virker ikke uden %s."
|
168 |
+
|
169 |
+
#: includes/class-freemius.php:4251
|
170 |
+
msgctxt "addonX cannot run..."
|
171 |
+
msgid "%s cannot run without the plugin."
|
172 |
+
msgstr "%s virker ikke uden pluginnet."
|
173 |
+
|
174 |
+
#: includes/class-freemius.php4363, includes/class-freemius.php4388,
|
175 |
+
#: includes/class-freemius.php:17659
|
176 |
+
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
177 |
+
msgstr "Unexpected API error. Please contact the %s's author with the following error."
|
178 |
+
|
179 |
+
#: includes/class-freemius.php:5006
|
180 |
+
msgid "Premium %s version was successfully activated."
|
181 |
+
msgstr "Premium-versionen af %s blev aktiveret."
|
182 |
+
|
183 |
+
#: includes/class-freemius.php5018, includes/class-freemius.php:6862
|
184 |
+
msgctxt ""
|
185 |
+
msgid "W00t"
|
186 |
+
msgstr "W00t"
|
187 |
+
|
188 |
+
#: includes/class-freemius.php:5033
|
189 |
+
msgid "You have a %s license."
|
190 |
+
msgstr "Du har en %s licens."
|
191 |
+
|
192 |
+
#: includes/class-freemius.php5037, includes/class-freemius.php14070,
|
193 |
+
#: includes/class-freemius.php14081, includes/class-freemius.php16897,
|
194 |
+
#: includes/class-freemius.php17197, includes/class-freemius.php17263,
|
195 |
+
#: includes/class-freemius.php:17413
|
196 |
+
msgctxt "interjection expressing joy or exuberance"
|
197 |
+
msgid "Yee-haw"
|
198 |
+
msgstr "Yee-haw"
|
199 |
+
|
200 |
+
#: includes/class-freemius.php:5301
|
201 |
+
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
202 |
+
msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
203 |
+
|
204 |
+
#: includes/class-freemius.php:5305
|
205 |
+
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
206 |
+
msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
207 |
+
|
208 |
+
#: includes/class-freemius.php5314, templates/add-ons.php103,
|
209 |
+
#: templates/account/partials/addon.php:288
|
210 |
+
msgid "More information about %s"
|
211 |
+
msgstr "Mere information om %s"
|
212 |
+
|
213 |
+
#: includes/class-freemius.php:5315
|
214 |
+
msgid "Purchase License"
|
215 |
+
msgstr "Køb licens"
|
216 |
+
|
217 |
+
#: includes/class-freemius.php6230, templates/connect.php:163
|
218 |
+
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
219 |
+
msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
220 |
+
|
221 |
+
#: includes/class-freemius.php:6234
|
222 |
+
msgid "start the trial"
|
223 |
+
msgstr "start prøveperioden"
|
224 |
+
|
225 |
+
#: includes/class-freemius.php6235, templates/connect.php:167
|
226 |
+
msgid "complete the install"
|
227 |
+
msgstr "færdiggør installeringen"
|
228 |
+
|
229 |
+
#: includes/class-freemius.php:6348
|
230 |
+
msgid "You are just one step away - %s"
|
231 |
+
msgstr "Du mangler kun ét skridt - %s"
|
232 |
+
|
233 |
+
#: includes/class-freemius.php:6351
|
234 |
+
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
235 |
+
msgid "Complete \"%s\" Activation Now"
|
236 |
+
msgstr "Færdiggør aktivering af \"%s\" nu"
|
237 |
+
|
238 |
+
#: includes/class-freemius.php:6429
|
239 |
+
msgid "We made a few tweaks to the %s, %s"
|
240 |
+
msgstr "Vi har foretaget nogle rettelser til %s, %s"
|
241 |
+
|
242 |
+
#: includes/class-freemius.php:6433
|
243 |
+
msgid "Opt in to make \"%s\" better!"
|
244 |
+
msgstr "Opt in to make \"%s\" better!"
|
245 |
+
|
246 |
+
#: includes/class-freemius.php:6861
|
247 |
+
msgid "The upgrade of %s was successfully completed."
|
248 |
+
msgstr "Opgraderingen af %s blev fuldendt."
|
249 |
+
|
250 |
+
#: includes/class-freemius.php8705, includes/class-fs-plugin-updater.php882,
|
251 |
+
#: includes/class-fs-plugin-updater.php1077,
|
252 |
+
#: includes/class-fs-plugin-updater.php1084,
|
253 |
+
#: templates/auto-installation.php:32
|
254 |
+
msgid "Add-On"
|
255 |
+
msgstr "Tilføjelse"
|
256 |
+
|
257 |
+
#: includes/class-freemius.php8707, templates/debug.php359,
|
258 |
+
#: templates/debug.php:520
|
259 |
+
msgid "Plugin"
|
260 |
+
msgstr "Plugin"
|
261 |
+
|
262 |
+
#: includes/class-freemius.php8708, templates/debug.php359,
|
263 |
+
#: templates/debug.php520, templates/forms/deactivation/form.php:67
|
264 |
+
msgid "Theme"
|
265 |
+
msgstr "Tema"
|
266 |
+
|
267 |
+
#: includes/class-freemius.php:11183
|
268 |
+
msgid "Invalid site details collection."
|
269 |
+
msgstr "Invalid site details collection."
|
270 |
+
|
271 |
+
#: includes/class-freemius.php:11303
|
272 |
+
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
273 |
+
msgstr "Vi kunne ikke finde din e-mailadresse i systemet, er du sikker på, det er den rigtige adresse?"
|
274 |
+
|
275 |
+
#: includes/class-freemius.php:11305
|
276 |
+
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
277 |
+
msgstr "Vi kan ikke finde nogen aktive licenser knyttet til den e-mailadresse, er du sikker på, det er den rigtige adresse?"
|
278 |
+
|
279 |
+
#: includes/class-freemius.php:11541
|
280 |
+
msgid "Account is pending activation."
|
281 |
+
msgstr "Konto afventer aktivering."
|
282 |
+
|
283 |
+
#: includes/class-freemius.php11653,
|
284 |
+
#: templates/forms/premium-versions-upgrade-handler.php:47
|
285 |
+
msgid "Buy a license now"
|
286 |
+
msgstr "Buy a license now"
|
287 |
+
|
288 |
+
#: includes/class-freemius.php11665,
|
289 |
+
#: templates/forms/premium-versions-upgrade-handler.php:46
|
290 |
+
msgid "Renew your license now"
|
291 |
+
msgstr "Renew your license now"
|
292 |
+
|
293 |
+
#: includes/class-freemius.php:11669
|
294 |
+
msgid "%s to access version %s security & feature updates, and support."
|
295 |
+
msgstr "%s to access version %s security & feature updates, and support."
|
296 |
+
|
297 |
+
#: includes/class-freemius.php:14052
|
298 |
+
msgid "%s activation was successfully completed."
|
299 |
+
msgstr "Aktivering af %s blev gennemført."
|
300 |
+
|
301 |
+
#: includes/class-freemius.php:14066
|
302 |
+
msgid "Your account was successfully activated with the %s plan."
|
303 |
+
msgstr "Din konto blev aktiveret med planen %s."
|
304 |
+
|
305 |
+
#: includes/class-freemius.php14077, includes/class-freemius.php:17259
|
306 |
+
msgid "Your trial has been successfully started."
|
307 |
+
msgstr "Din prøveperiode er begyndt."
|
308 |
+
|
309 |
+
#: includes/class-freemius.php14647, includes/class-freemius.php14699,
|
310 |
+
#: includes/class-freemius.php:14761
|
311 |
+
msgid "Couldn't activate %s."
|
312 |
+
msgstr "Kunne ikke aktivere %s."
|
313 |
+
|
314 |
+
#: includes/class-freemius.php14648, includes/class-freemius.php14700,
|
315 |
+
#: includes/class-freemius.php:14762
|
316 |
+
msgid "Please contact us with the following message:"
|
317 |
+
msgstr "Kontakt os venligst med følgende besked:"
|
318 |
+
|
319 |
+
#: includes/class-freemius.php15111, includes/class-freemius.php:19543
|
320 |
+
msgid "Upgrade"
|
321 |
+
msgstr "Opgrader"
|
322 |
+
|
323 |
+
#: includes/class-freemius.php:15117
|
324 |
+
msgid "Start Trial"
|
325 |
+
msgstr "Start prøveperiode"
|
326 |
+
|
327 |
+
#: includes/class-freemius.php:15119
|
328 |
+
msgid "Pricing"
|
329 |
+
msgstr "Priser"
|
330 |
+
|
331 |
+
#: includes/class-freemius.php15181, includes/class-freemius.php:15183
|
332 |
+
msgid "Affiliation"
|
333 |
+
msgstr "Affiliation"
|
334 |
+
|
335 |
+
#: includes/class-freemius.php15211, includes/class-freemius.php15213,
|
336 |
+
#: templates/account.php150, templates/debug.php:324
|
337 |
+
msgid "Account"
|
338 |
+
msgstr "Konto"
|
339 |
+
|
340 |
+
#: includes/class-freemius.php15226, includes/class-freemius.php15228,
|
341 |
+
#: includes/customizer/class-fs-customizer-support-section.php:60
|
342 |
+
msgid "Contact Us"
|
343 |
+
msgstr "Kontakt os"
|
344 |
+
|
345 |
+
#: includes/class-freemius.php15238, includes/class-freemius.php15240,
|
346 |
+
#: includes/class-freemius.php19553, templates/account.php100,
|
347 |
+
#: templates/account/partials/addon.php:41
|
348 |
+
msgid "Add-Ons"
|
349 |
+
msgstr "Tilføjelser"
|
350 |
+
|
351 |
+
#: includes/class-freemius.php:15274
|
352 |
+
msgctxt "ASCII arrow left icon"
|
353 |
+
msgid "←"
|
354 |
+
msgstr "←"
|
355 |
+
|
356 |
+
#: includes/class-freemius.php:15274
|
357 |
+
msgctxt "ASCII arrow right icon"
|
358 |
+
msgid "➤"
|
359 |
+
msgstr "➤"
|
360 |
+
|
361 |
+
#: includes/class-freemius.php15276, templates/pricing.php:97
|
362 |
+
msgctxt "noun"
|
363 |
+
msgid "Pricing"
|
364 |
+
msgstr "Priser"
|
365 |
+
|
366 |
+
#: includes/class-freemius.php15479,
|
367 |
+
#: includes/customizer/class-fs-customizer-support-section.php:67
|
368 |
+
msgid "Support Forum"
|
369 |
+
msgstr "Supportforum"
|
370 |
+
|
371 |
+
#: includes/class-freemius.php:16265
|
372 |
+
msgid "Your email has been successfully verified - you are AWESOME!"
|
373 |
+
msgstr "Din e-mailadresse er blevet verificeret - du er FOR SEJ!"
|
374 |
+
|
375 |
+
#: includes/class-freemius.php:16266
|
376 |
+
msgctxt "a positive response"
|
377 |
+
msgid "Right on"
|
378 |
+
msgstr "Sådan"
|
379 |
+
|
380 |
+
#: includes/class-freemius.php:16888
|
381 |
+
msgid "Your %s Add-on plan was successfully upgraded."
|
382 |
+
msgstr "Your %s Add-on plan was successfully upgraded."
|
383 |
+
|
384 |
+
#: includes/class-freemius.php:16890
|
385 |
+
msgid "%s Add-on was successfully purchased."
|
386 |
+
msgstr "Betalingen for tilføjelsen %s blev gennemført."
|
387 |
+
|
388 |
+
#: includes/class-freemius.php:16893
|
389 |
+
msgid "Download the latest version"
|
390 |
+
msgstr "Download den seneste version"
|
391 |
+
|
392 |
+
#: includes/class-freemius.php:16965
|
393 |
+
msgctxt "%1s - plugin title, %2s - API domain"
|
394 |
+
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
395 |
+
msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
396 |
+
|
397 |
+
#: includes/class-freemius.php16968, includes/class-freemius.php17384,
|
398 |
+
#: includes/class-freemius.php:17461
|
399 |
+
msgid "Error received from the server:"
|
400 |
+
msgstr "Fejl modtager fra serveren:"
|
401 |
+
|
402 |
+
#: includes/class-freemius.php:16978
|
403 |
+
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
404 |
+
msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
405 |
+
|
406 |
+
#: includes/class-freemius.php17160, includes/class-freemius.php17389,
|
407 |
+
#: includes/class-freemius.php17432, includes/class-freemius.php:17535
|
408 |
+
msgctxt ""
|
409 |
+
msgid "Hmm"
|
410 |
+
msgstr "Hmm"
|
411 |
+
|
412 |
+
#: includes/class-freemius.php:17173
|
413 |
+
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
414 |
+
msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
415 |
+
|
416 |
+
#: includes/class-freemius.php17174, templates/account.php102,
|
417 |
+
#: templates/add-ons.php134, templates/account/partials/addon.php:43
|
418 |
+
msgctxt "trial period"
|
419 |
+
msgid "Trial"
|
420 |
+
msgstr "Prøveperiode"
|
421 |
+
|
422 |
+
#: includes/class-freemius.php:17179
|
423 |
+
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
424 |
+
msgstr "Jeg har opgraderet min konto, men når jeg forsøger at synkronisere licensen, forbliver planen %s."
|
425 |
+
|
426 |
+
#: includes/class-freemius.php17183, includes/class-freemius.php:17241
|
427 |
+
msgid "Please contact us here"
|
428 |
+
msgstr "Kontakt os her"
|
429 |
+
|
430 |
+
#: includes/class-freemius.php:17193
|
431 |
+
msgid "Your plan was successfully upgraded."
|
432 |
+
msgstr "Din plan er blevet opgraderet."
|
433 |
+
|
434 |
+
#: includes/class-freemius.php:17211
|
435 |
+
msgid "Your plan was successfully changed to %s."
|
436 |
+
msgstr "Din plan er blevet ændret til %s."
|
437 |
+
|
438 |
+
#: includes/class-freemius.php:17227
|
439 |
+
msgid "Your license has expired. You can still continue using the free %s forever."
|
440 |
+
msgstr "Din licens er udløbet. Du kan stadig fortsætte med at benytte den gratis udgave af %s."
|
441 |
+
|
442 |
+
#: includes/class-freemius.php:17229
|
443 |
+
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
444 |
+
msgstr "Din licens er udløbet. %1$sOpgrader nu%2$s for at fortsætte med at benytte %3$s uden forstyrrelser."
|
445 |
+
|
446 |
+
#: includes/class-freemius.php:17237
|
447 |
+
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
448 |
+
msgstr "Din licens er blevet annulleret. Hvis du mener, dette er en fejl, så kontakt venligst support."
|
449 |
+
|
450 |
+
#: includes/class-freemius.php:17250
|
451 |
+
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
452 |
+
msgstr "Din licens er udløbet. Du kan stadig benytte alle funktionerne i %s, men du bliver nødt til at fornye din licens for at få opdateringer og support."
|
453 |
+
|
454 |
+
#: includes/class-freemius.php:17273
|
455 |
+
msgid "Your free trial has expired. You can still continue using all our free features."
|
456 |
+
msgstr "Din gratis prøveperiode er udløbet. Du kan stadig benytte alle de gratis features."
|
457 |
+
|
458 |
+
#: includes/class-freemius.php:17275
|
459 |
+
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
460 |
+
msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
461 |
+
|
462 |
+
#: includes/class-freemius.php:17380
|
463 |
+
msgid "It looks like the license could not be activated."
|
464 |
+
msgstr "Det ser ud til, at licensen ikke kunne aktiveres."
|
465 |
+
|
466 |
+
#: includes/class-freemius.php:17410
|
467 |
+
msgid "Your license was successfully activated."
|
468 |
+
msgstr "Din licens er blevet aktiveret."
|
469 |
+
|
470 |
+
#: includes/class-freemius.php:17436
|
471 |
+
msgid "It looks like your site currently doesn't have an active license."
|
472 |
+
msgstr "Det ser ud til, at dit websted endnu ikke har en aktiv licens."
|
473 |
+
|
474 |
+
#: includes/class-freemius.php:17460
|
475 |
+
msgid "It looks like the license deactivation failed."
|
476 |
+
msgstr "Det ser ud til, at licens-deaktiveringen mislykkedes."
|
477 |
+
|
478 |
+
#: includes/class-freemius.php:17488
|
479 |
+
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
480 |
+
msgstr "Din licens blev deaktiveret, du er tilbage på planen %s."
|
481 |
+
|
482 |
+
#: includes/class-freemius.php:17489
|
483 |
+
msgid "O.K"
|
484 |
+
msgstr "O.K"
|
485 |
+
|
486 |
+
#: includes/class-freemius.php:17542
|
487 |
+
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
488 |
+
msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
489 |
+
|
490 |
+
#: includes/class-freemius.php:17551
|
491 |
+
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
492 |
+
msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
493 |
+
|
494 |
+
#: includes/class-freemius.php:17593
|
495 |
+
msgid "You are already running the %s in a trial mode."
|
496 |
+
msgstr "Du benytter allerede %s under en prøveperiode."
|
497 |
+
|
498 |
+
#: includes/class-freemius.php:17604
|
499 |
+
msgid "You already utilized a trial before."
|
500 |
+
msgstr "Du har allerede brugt din prøveperiode."
|
501 |
+
|
502 |
+
#: includes/class-freemius.php:17618
|
503 |
+
msgid "Plan %s do not exist, therefore, can't start a trial."
|
504 |
+
msgstr "Plan %s eksisterer ikke og kan derfor ikke starte prøveperiode."
|
505 |
+
|
506 |
+
#: includes/class-freemius.php:17629
|
507 |
+
msgid "Plan %s does not support a trial period."
|
508 |
+
msgstr "Plan %s understøtter ikke en prøveperiode."
|
509 |
+
|
510 |
+
#: includes/class-freemius.php:17640
|
511 |
+
msgid "None of the %s's plans supports a trial period."
|
512 |
+
msgstr "None of the %s's plans supports a trial period."
|
513 |
+
|
514 |
+
#: includes/class-freemius.php:17690
|
515 |
+
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
516 |
+
msgstr "Det lader ikke til du er i en prøveperiode længere, så der er ikke noget at annullere :-)"
|
517 |
+
|
518 |
+
#: includes/class-freemius.php:17726
|
519 |
+
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
520 |
+
msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
521 |
+
|
522 |
+
#: includes/class-freemius.php:17745
|
523 |
+
msgid "Your %s free trial was successfully cancelled."
|
524 |
+
msgstr "Din gratis prøveperiode for %s er blevet annulleret."
|
525 |
+
|
526 |
+
#: includes/class-freemius.php:18052
|
527 |
+
msgid "Version %s was released."
|
528 |
+
msgstr "Version %s er blevet udgivet."
|
529 |
+
|
530 |
+
#: includes/class-freemius.php:18052
|
531 |
+
msgid "Please download %s."
|
532 |
+
msgstr "Download venligst %s."
|
533 |
+
|
534 |
+
#: includes/class-freemius.php:18059
|
535 |
+
msgid "the latest %s version here"
|
536 |
+
msgstr "den seneste version af %s her"
|
537 |
+
|
538 |
+
#: includes/class-freemius.php:18064
|
539 |
+
msgid "New"
|
540 |
+
msgstr "Ny"
|
541 |
+
|
542 |
+
#: includes/class-freemius.php:18069
|
543 |
+
msgid "Seems like you got the latest release."
|
544 |
+
msgstr "Det ser ud til, at du har den seneste udgivelse."
|
545 |
+
|
546 |
+
#: includes/class-freemius.php:18070
|
547 |
+
msgid "You are all good!"
|
548 |
+
msgstr "Det var det!"
|
549 |
+
|
550 |
+
#: includes/class-freemius.php:18338
|
551 |
+
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
552 |
+
msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
553 |
+
|
554 |
+
#: includes/class-freemius.php:18473
|
555 |
+
msgid "Site successfully opted in."
|
556 |
+
msgstr "Websted er tilmeldt."
|
557 |
+
|
558 |
+
#: includes/class-freemius.php18474, includes/class-freemius.php:19285
|
559 |
+
msgid "Awesome"
|
560 |
+
msgstr "Sejt"
|
561 |
+
|
562 |
+
#: includes/class-freemius.php18490, templates/forms/optout.php:32
|
563 |
+
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
564 |
+
msgstr "Vi sætter pris på din hjælp med at forbedre %s ved at lade os indsamle brugsdata."
|
565 |
+
|
566 |
+
#: includes/class-freemius.php:18491
|
567 |
+
msgid "Thank you!"
|
568 |
+
msgstr "Mange tak!"
|
569 |
+
|
570 |
+
#: includes/class-freemius.php:18498
|
571 |
+
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
572 |
+
msgstr "Vi vil ikke længere indsende brugsdata af %s på %s til %s."
|
573 |
+
|
574 |
+
#: includes/class-freemius.php:18627
|
575 |
+
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
576 |
+
msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
577 |
+
|
578 |
+
#: includes/class-freemius.php:18633
|
579 |
+
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
580 |
+
msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
581 |
+
|
582 |
+
#: includes/class-freemius.php:18638
|
583 |
+
msgid "%s is the new owner of the account."
|
584 |
+
msgstr "%s er den nye ejer af kontoen."
|
585 |
+
|
586 |
+
#: includes/class-freemius.php:18640
|
587 |
+
msgctxt "as congratulations"
|
588 |
+
msgid "Congrats"
|
589 |
+
msgstr "Tillykke"
|
590 |
+
|
591 |
+
#: includes/class-freemius.php:18660
|
592 |
+
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
593 |
+
msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
594 |
+
|
595 |
+
#: includes/class-freemius.php:18661
|
596 |
+
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
597 |
+
msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
598 |
+
|
599 |
+
#: includes/class-freemius.php:18668
|
600 |
+
msgid "Change Ownership"
|
601 |
+
msgstr "Skift ejerskab"
|
602 |
+
|
603 |
+
#: includes/class-freemius.php:18676
|
604 |
+
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
605 |
+
msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
606 |
+
|
607 |
+
#: includes/class-freemius.php:18688
|
608 |
+
msgid "Please provide your full name."
|
609 |
+
msgstr "Indtast venligst dit fulde navn."
|
610 |
+
|
611 |
+
#: includes/class-freemius.php:18693
|
612 |
+
msgid "Your name was successfully updated."
|
613 |
+
msgstr "Dit navn er blevet opdateret."
|
614 |
+
|
615 |
+
#: includes/class-freemius.php:18754
|
616 |
+
msgid "You have successfully updated your %s."
|
617 |
+
msgstr "Opdatering af %s blev gennemført."
|
618 |
+
|
619 |
+
#: includes/class-freemius.php:18894
|
620 |
+
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
621 |
+
msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
622 |
+
|
623 |
+
#: includes/class-freemius.php:18895
|
624 |
+
msgctxt "advance notice of something that will need attention."
|
625 |
+
msgid "Heads up"
|
626 |
+
msgstr "Se her"
|
627 |
+
|
628 |
+
#: includes/class-freemius.php:19325
|
629 |
+
msgctxt "exclamation"
|
630 |
+
msgid "Hey"
|
631 |
+
msgstr "Hey"
|
632 |
+
|
633 |
+
#: includes/class-freemius.php:19325
|
634 |
+
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
635 |
+
msgstr "Hvad syntes du om %s indtil videre? Test alle %s premium funktioner med en %d-dags gratis prøveperiode."
|
636 |
+
|
637 |
+
#: includes/class-freemius.php:19333
|
638 |
+
msgid "No commitment for %s days - cancel anytime!"
|
639 |
+
msgstr "Ingen bindinger i %s dage - annuller når som helst!"
|
640 |
+
|
641 |
+
#: includes/class-freemius.php:19334
|
642 |
+
msgid "No credit card required"
|
643 |
+
msgstr "Betalingskort ikke påkrævet"
|
644 |
+
|
645 |
+
#: includes/class-freemius.php19341, templates/forms/trial-start.php:53
|
646 |
+
msgctxt "call to action"
|
647 |
+
msgid "Start free trial"
|
648 |
+
msgstr "Start gratis prøveperiode"
|
649 |
+
|
650 |
+
#: includes/class-freemius.php:19418
|
651 |
+
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
652 |
+
msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
653 |
+
|
654 |
+
#: includes/class-freemius.php:19427
|
655 |
+
msgid "Learn more"
|
656 |
+
msgstr "Læs mere"
|
657 |
+
|
658 |
+
#: includes/class-freemius.php19577, templates/account.php406,
|
659 |
+
#: templates/account.php509, templates/connect.php171,
|
660 |
+
#: templates/connect.php421, templates/forms/license-activation.php24,
|
661 |
+
#: templates/account/partials/addon.php:235
|
662 |
+
msgid "Activate License"
|
663 |
+
msgstr "Aktiver licens"
|
664 |
+
|
665 |
+
#: includes/class-freemius.php19578, templates/account.php469,
|
666 |
+
#: templates/account.php508, templates/account/partials/site.php:256
|
667 |
+
msgid "Change License"
|
668 |
+
msgstr "Skift licens"
|
669 |
+
|
670 |
+
#: includes/class-freemius.php19660, templates/account/partials/site.php:161
|
671 |
+
msgid "Opt Out"
|
672 |
+
msgstr "Frameld"
|
673 |
+
|
674 |
+
#: includes/class-freemius.php19662, includes/class-freemius.php19667,
|
675 |
+
#: templates/account/partials/site.php43,
|
676 |
+
#: templates/account/partials/site.php:161
|
677 |
+
msgid "Opt In"
|
678 |
+
msgstr "Tilmeld"
|
679 |
+
|
680 |
+
#: includes/class-freemius.php:19891
|
681 |
+
msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
|
682 |
+
msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
|
683 |
+
|
684 |
+
#: includes/class-freemius.php:19899
|
685 |
+
msgid "Activate %s features"
|
686 |
+
msgstr "Activate %s features"
|
687 |
+
|
688 |
+
#: includes/class-freemius.php:19912
|
689 |
+
msgid "Please follow these steps to complete the upgrade"
|
690 |
+
msgstr "Følg venligst disse trin for at færdiggøre opgraderingen"
|
691 |
+
|
692 |
+
#: includes/class-freemius.php:19916
|
693 |
+
msgid "Download the latest %s version"
|
694 |
+
msgstr "Download den seneste version af %s"
|
695 |
+
|
696 |
+
#: includes/class-freemius.php:19920
|
697 |
+
msgid "Upload and activate the downloaded version"
|
698 |
+
msgstr "Upload og aktiver den downloadede version"
|
699 |
+
|
700 |
+
#: includes/class-freemius.php:19922
|
701 |
+
msgid "How to upload and activate?"
|
702 |
+
msgstr "Upload og aktivering, hvordan?"
|
703 |
+
|
704 |
+
#: includes/class-freemius.php:20056
|
705 |
+
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
706 |
+
msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
|
707 |
+
|
708 |
+
#: includes/class-freemius.php:20217
|
709 |
+
msgid "Auto installation only works for opted-in users."
|
710 |
+
msgstr "Auto-installation fungerer kun for tilmeldte brugere."
|
711 |
+
|
712 |
+
#: includes/class-freemius.php20227, includes/class-freemius.php20260,
|
713 |
+
#: includes/class-fs-plugin-updater.php1056,
|
714 |
+
#: includes/class-fs-plugin-updater.php:1070
|
715 |
+
msgid "Invalid module ID."
|
716 |
+
msgstr "Ugyldigt modul-ID."
|
717 |
+
|
718 |
+
#: includes/class-freemius.php20236, includes/class-fs-plugin-updater.php:1092
|
719 |
+
msgid "Premium version already active."
|
720 |
+
msgstr "Premium version allerede aktiv."
|
721 |
+
|
722 |
+
#: includes/class-freemius.php:20243
|
723 |
+
msgid "You do not have a valid license to access the premium version."
|
724 |
+
msgstr "Du har ikke en gyldig licens til at benytte premium-versionen."
|
725 |
+
|
726 |
+
#: includes/class-freemius.php:20250
|
727 |
+
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
728 |
+
msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
729 |
+
|
730 |
+
#: includes/class-freemius.php20268, includes/class-fs-plugin-updater.php:1091
|
731 |
+
msgid "Premium add-on version already installed."
|
732 |
+
msgstr "Premium tilføjelse er allerede installeret."
|
733 |
+
|
734 |
+
#: includes/class-freemius.php:20613
|
735 |
+
msgid "View paid features"
|
736 |
+
msgstr "Vis betalte features"
|
737 |
+
|
738 |
+
#: includes/class-freemius.php:20927
|
739 |
+
msgid "Thank you so much for using %s and its add-ons!"
|
740 |
+
msgstr "Thank you so much for using %s and its add-ons!"
|
741 |
+
|
742 |
+
#: includes/class-freemius.php:20928
|
743 |
+
msgid "Thank you so much for using %s!"
|
744 |
+
msgstr "Tak fordi du benytter %s!"
|
745 |
+
|
746 |
+
#: includes/class-freemius.php:20934
|
747 |
+
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
748 |
+
msgstr "Du er allerede tilmeldt vores brugssporing, hvilket hjælper os med at forbedre %s."
|
749 |
+
|
750 |
+
#: includes/class-freemius.php:20938
|
751 |
+
msgid "Thank you so much for using our products!"
|
752 |
+
msgstr "Mange tak for at benytte vores produkter!"
|
753 |
+
|
754 |
+
#: includes/class-freemius.php:20939
|
755 |
+
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
756 |
+
msgstr "Du er allerede tilmeldt vores brugssporing, hvilket hjælper os med at forbedre dem."
|
757 |
+
|
758 |
+
#: includes/class-freemius.php:20958
|
759 |
+
msgid "%s and its add-ons"
|
760 |
+
msgstr "%s og tilføjelser"
|
761 |
+
|
762 |
+
#: includes/class-freemius.php:20967
|
763 |
+
msgid "Products"
|
764 |
+
msgstr "Produkter"
|
765 |
+
|
766 |
+
#: includes/class-freemius.php20974, templates/connect.php:272
|
767 |
+
msgid "Yes"
|
768 |
+
msgstr "Ja"
|
769 |
+
|
770 |
+
#: includes/class-freemius.php20975, templates/connect.php:273
|
771 |
+
msgid "send me security & feature updates, educational content and offers."
|
772 |
+
msgstr "send mig sikkerheds- og feature-opdateringer, informativt indhold og tilbud."
|
773 |
+
|
774 |
+
#: includes/class-freemius.php20976, templates/connect.php:278
|
775 |
+
msgid "No"
|
776 |
+
msgstr "Nej"
|
777 |
+
|
778 |
+
#: includes/class-freemius.php20978, templates/connect.php:280
|
779 |
+
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
780 |
+
msgstr "send %sIKKE%s sikkerheds- og feature-opdateringer, informativt indhold og tilbud."
|
781 |
+
|
782 |
+
#: includes/class-freemius.php:20988
|
783 |
+
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
|
784 |
+
msgstr "Grundet krav i den nye %sEU General Data Protection Regulation (GDPR)%s, er det nødvendigt at du igen giver dit udtrykkelige samtykke og bekræfter, at du er ombord 🙂"
|
785 |
+
|
786 |
+
#: includes/class-freemius.php20990, templates/connect.php:287
|
787 |
+
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
788 |
+
msgstr "Lad os vide, om vi har lov til at kontakte dig med sikkerheds- og feature-opdateringer, informativt indhold og lejlighedsvise tilbud:"
|
789 |
+
|
790 |
+
#: includes/class-freemius.php:21272
|
791 |
+
msgid "License key is empty."
|
792 |
+
msgstr "Licensnøglen er tom."
|
793 |
+
|
794 |
+
#: includes/class-fs-plugin-updater.php184,
|
795 |
+
#: templates/forms/premium-versions-upgrade-handler.php:57
|
796 |
+
msgid "Renew license"
|
797 |
+
msgstr "Forny licens"
|
798 |
+
|
799 |
+
#: includes/class-fs-plugin-updater.php189,
|
800 |
+
#: templates/forms/premium-versions-upgrade-handler.php:58
|
801 |
+
msgid "Buy license"
|
802 |
+
msgstr "Buy license"
|
803 |
+
|
804 |
+
#: includes/class-fs-plugin-updater.php:278
|
805 |
+
msgid "There is a %s of %s available."
|
806 |
+
msgstr "There is a %s of %s available."
|
807 |
+
|
808 |
+
#: includes/class-fs-plugin-updater.php:282
|
809 |
+
msgid "new version"
|
810 |
+
msgstr "new version"
|
811 |
+
|
812 |
+
#: includes/class-fs-plugin-updater.php:301
|
813 |
+
msgid "Important Upgrade Notice:"
|
814 |
+
msgstr "Important Upgrade Notice:"
|
815 |
+
|
816 |
+
#: includes/class-fs-plugin-updater.php:1121
|
817 |
+
msgid "Installing plugin: %s"
|
818 |
+
msgstr "Installerer plugin: %s"
|
819 |
+
|
820 |
+
#: includes/class-fs-plugin-updater.php:1162
|
821 |
+
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
822 |
+
msgstr "Unable to connect to the filesystem. Please confirm your credentials."
|
823 |
+
|
824 |
+
#: includes/class-fs-plugin-updater.php:1335
|
825 |
+
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
826 |
+
msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
827 |
+
|
828 |
+
#: includes/fs-plugin-info-dialog.php369,
|
829 |
+
#: templates/account/partials/addon.php:292
|
830 |
+
msgctxt "verb"
|
831 |
+
msgid "Purchase"
|
832 |
+
msgstr "Køb"
|
833 |
+
|
834 |
+
#: includes/fs-plugin-info-dialog.php:372
|
835 |
+
msgid "Start my free %s"
|
836 |
+
msgstr "Start min gratis %s"
|
837 |
+
|
838 |
+
#: includes/fs-plugin-info-dialog.php:413
|
839 |
+
msgid "Install Free Version Now"
|
840 |
+
msgstr "Installer gratis version nu"
|
841 |
+
|
842 |
+
#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111,
|
843 |
+
#: templates/account/partials/addon.php272,
|
844 |
+
#: templates/account/partials/addon.php:322
|
845 |
+
msgid "Install Now"
|
846 |
+
msgstr "Installer nu"
|
847 |
+
|
848 |
+
#: includes/fs-plugin-info-dialog.php:425
|
849 |
+
msgctxt "as download latest version"
|
850 |
+
msgid "Download Latest Free Version"
|
851 |
+
msgstr "Download seneste gratis version"
|
852 |
+
|
853 |
+
#: includes/fs-plugin-info-dialog.php426, templates/account.php80,
|
854 |
+
#: templates/account/partials/addon.php:21
|
855 |
+
msgctxt "as download latest version"
|
856 |
+
msgid "Download Latest"
|
857 |
+
msgstr "Download seneste"
|
858 |
+
|
859 |
+
#: includes/fs-plugin-info-dialog.php:436
|
860 |
+
msgid "Install Free Version Update Now"
|
861 |
+
msgstr "Installer opdatering til gratis version nu"
|
862 |
+
|
863 |
+
#: includes/fs-plugin-info-dialog.php437, templates/account.php:460
|
864 |
+
msgid "Install Update Now"
|
865 |
+
msgstr "Installer opdatering nu"
|
866 |
+
|
867 |
+
#: includes/fs-plugin-info-dialog.php:448
|
868 |
+
msgid "Newer Free Version (%s) Installed"
|
869 |
+
msgstr "Nyere gratis version (%s) installeret"
|
870 |
+
|
871 |
+
#: includes/fs-plugin-info-dialog.php:449
|
872 |
+
msgid "Newer Version (%s) Installed"
|
873 |
+
msgstr "Nyere version (%s) installeret"
|
874 |
+
|
875 |
+
#: includes/fs-plugin-info-dialog.php:457
|
876 |
+
msgid "Latest Free Version Installed"
|
877 |
+
msgstr "Seneste gratis version installeret"
|
878 |
+
|
879 |
+
#: includes/fs-plugin-info-dialog.php:458
|
880 |
+
msgid "Latest Version Installed"
|
881 |
+
msgstr "Seneste version installeret"
|
882 |
+
|
883 |
+
#: includes/fs-plugin-info-dialog.php:613
|
884 |
+
msgctxt "Plugin installer section title"
|
885 |
+
msgid "Description"
|
886 |
+
msgstr "Beskrivelse"
|
887 |
+
|
888 |
+
#: includes/fs-plugin-info-dialog.php:614
|
889 |
+
msgctxt "Plugin installer section title"
|
890 |
+
msgid "Installation"
|
891 |
+
msgstr "Installering"
|
892 |
+
|
893 |
+
#: includes/fs-plugin-info-dialog.php:615
|
894 |
+
msgctxt "Plugin installer section title"
|
895 |
+
msgid "FAQ"
|
896 |
+
msgstr "FAQ"
|
897 |
+
|
898 |
+
#: includes/fs-plugin-info-dialog.php616,
|
899 |
+
#: templates/plugin-info/description.php:55
|
900 |
+
msgid "Screenshots"
|
901 |
+
msgstr "Skærmbilleder"
|
902 |
+
|
903 |
+
#: includes/fs-plugin-info-dialog.php:617
|
904 |
+
msgctxt "Plugin installer section title"
|
905 |
+
msgid "Changelog"
|
906 |
+
msgstr "Ændringslog"
|
907 |
+
|
908 |
+
#: includes/fs-plugin-info-dialog.php:618
|
909 |
+
msgctxt "Plugin installer section title"
|
910 |
+
msgid "Reviews"
|
911 |
+
msgstr "Anmeldelser"
|
912 |
+
|
913 |
+
#: includes/fs-plugin-info-dialog.php:619
|
914 |
+
msgctxt "Plugin installer section title"
|
915 |
+
msgid "Other Notes"
|
916 |
+
msgstr "Andre noter"
|
917 |
+
|
918 |
+
#: includes/fs-plugin-info-dialog.php:634
|
919 |
+
msgctxt "Plugin installer section title"
|
920 |
+
msgid "Features & Pricing"
|
921 |
+
msgstr "Funktioner og priser"
|
922 |
+
|
923 |
+
#: includes/fs-plugin-info-dialog.php:644
|
924 |
+
msgid "Plugin Install"
|
925 |
+
msgstr "Plugin-installering"
|
926 |
+
|
927 |
+
#: includes/fs-plugin-info-dialog.php:716
|
928 |
+
msgctxt "e.g. Professional Plan"
|
929 |
+
msgid "%s Plan"
|
930 |
+
msgstr "%s Plan"
|
931 |
+
|
932 |
+
#: includes/fs-plugin-info-dialog.php:742
|
933 |
+
msgctxt "e.g. the best product"
|
934 |
+
msgid "Best"
|
935 |
+
msgstr "Bedste"
|
936 |
+
|
937 |
+
#: includes/fs-plugin-info-dialog.php748,
|
938 |
+
#: includes/fs-plugin-info-dialog.php:768
|
939 |
+
msgctxt "as every month"
|
940 |
+
msgid "Monthly"
|
941 |
+
msgstr "Månedligt"
|
942 |
+
|
943 |
+
#: includes/fs-plugin-info-dialog.php:751
|
944 |
+
msgctxt "as once a year"
|
945 |
+
msgid "Annual"
|
946 |
+
msgstr "Årligt"
|
947 |
+
|
948 |
+
#: includes/fs-plugin-info-dialog.php:754
|
949 |
+
msgid "Lifetime"
|
950 |
+
msgstr "Livstid"
|
951 |
+
|
952 |
+
#: includes/fs-plugin-info-dialog.php768,
|
953 |
+
#: includes/fs-plugin-info-dialog.php770,
|
954 |
+
#: includes/fs-plugin-info-dialog.php:772
|
955 |
+
msgctxt "e.g. billed monthly"
|
956 |
+
msgid "Billed %s"
|
957 |
+
msgstr "Faktureret %s"
|
958 |
+
|
959 |
+
#: includes/fs-plugin-info-dialog.php:770
|
960 |
+
msgctxt "as once a year"
|
961 |
+
msgid "Annually"
|
962 |
+
msgstr "Årligt"
|
963 |
+
|
964 |
+
#: includes/fs-plugin-info-dialog.php:772
|
965 |
+
msgctxt "as once a year"
|
966 |
+
msgid "Once"
|
967 |
+
msgstr "Engangsbeløb"
|
968 |
+
|
969 |
+
#: includes/fs-plugin-info-dialog.php:778
|
970 |
+
msgid "Single Site License"
|
971 |
+
msgstr "Single Site License"
|
972 |
+
|
973 |
+
#: includes/fs-plugin-info-dialog.php:780
|
974 |
+
msgid "Unlimited Licenses"
|
975 |
+
msgstr "Ubegrænsede licenser"
|
976 |
+
|
977 |
+
#: includes/fs-plugin-info-dialog.php:782
|
978 |
+
msgid "Up to %s Sites"
|
979 |
+
msgstr "Op til %s websteder"
|
980 |
+
|
981 |
+
#: includes/fs-plugin-info-dialog.php792,
|
982 |
+
#: templates/plugin-info/features.php:82
|
983 |
+
msgctxt "as monthly period"
|
984 |
+
msgid "mo"
|
985 |
+
msgstr "md"
|
986 |
+
|
987 |
+
#: includes/fs-plugin-info-dialog.php799,
|
988 |
+
#: templates/plugin-info/features.php:80
|
989 |
+
msgctxt "as annual period"
|
990 |
+
msgid "year"
|
991 |
+
msgstr "år"
|
992 |
+
|
993 |
+
#: includes/fs-plugin-info-dialog.php:853
|
994 |
+
msgctxt "noun"
|
995 |
+
msgid "Price"
|
996 |
+
msgstr "Pris"
|
997 |
+
|
998 |
+
#: includes/fs-plugin-info-dialog.php:901
|
999 |
+
msgid "Save %s"
|
1000 |
+
msgstr "Spar %s"
|
1001 |
+
|
1002 |
+
#: includes/fs-plugin-info-dialog.php:911
|
1003 |
+
msgid "No commitment for %s - cancel anytime"
|
1004 |
+
msgstr "Ingen bindinger ved %s - annuller når som helst"
|
1005 |
+
|
1006 |
+
#: includes/fs-plugin-info-dialog.php:914
|
1007 |
+
msgid "After your free %s, pay as little as %s"
|
1008 |
+
msgstr "Efter din gratis %s er prisen kun %s"
|
1009 |
+
|
1010 |
+
#: includes/fs-plugin-info-dialog.php:925
|
1011 |
+
msgid "Details"
|
1012 |
+
msgstr "Detaljer"
|
1013 |
+
|
1014 |
+
#: includes/fs-plugin-info-dialog.php929, templates/account.php91,
|
1015 |
+
#: templates/debug.php201, templates/debug.php238, templates/debug.php452,
|
1016 |
+
#: templates/account/partials/addon.php:32
|
1017 |
+
msgctxt "product version"
|
1018 |
+
msgid "Version"
|
1019 |
+
msgstr "Version"
|
1020 |
+
|
1021 |
+
#: includes/fs-plugin-info-dialog.php:936
|
1022 |
+
msgctxt "as the plugin author"
|
1023 |
+
msgid "Author"
|
1024 |
+
msgstr "Forfatter"
|
1025 |
+
|
1026 |
+
#: includes/fs-plugin-info-dialog.php:943
|
1027 |
+
msgid "Last Updated"
|
1028 |
+
msgstr "Senest opdateret"
|
1029 |
+
|
1030 |
+
#: includes/fs-plugin-info-dialog.php948, templates/account.php:376
|
1031 |
+
msgctxt "x-ago"
|
1032 |
+
msgid "%s ago"
|
1033 |
+
msgstr "%s siden"
|
1034 |
+
|
1035 |
+
#: includes/fs-plugin-info-dialog.php:957
|
1036 |
+
msgid "Requires WordPress Version"
|
1037 |
+
msgstr "Kræver WordPress-version"
|
1038 |
+
|
1039 |
+
#: includes/fs-plugin-info-dialog.php:958
|
1040 |
+
msgid "%s or higher"
|
1041 |
+
msgstr "%s eller højere"
|
1042 |
+
|
1043 |
+
#: includes/fs-plugin-info-dialog.php:965
|
1044 |
+
msgid "Compatible up to"
|
1045 |
+
msgstr "Kompatibel op til"
|
1046 |
+
|
1047 |
+
#: includes/fs-plugin-info-dialog.php:973
|
1048 |
+
msgid "Downloaded"
|
1049 |
+
msgstr "Downloadet"
|
1050 |
+
|
1051 |
+
#: includes/fs-plugin-info-dialog.php:977
|
1052 |
+
msgid "%s time"
|
1053 |
+
msgstr "%s gang"
|
1054 |
+
|
1055 |
+
#: includes/fs-plugin-info-dialog.php:979
|
1056 |
+
msgid "%s times"
|
1057 |
+
msgstr "%s gange"
|
1058 |
+
|
1059 |
+
#: includes/fs-plugin-info-dialog.php:989
|
1060 |
+
msgid "WordPress.org Plugin Page"
|
1061 |
+
msgstr "WordPress.org Plugin-side"
|
1062 |
+
|
1063 |
+
#: includes/fs-plugin-info-dialog.php:997
|
1064 |
+
msgid "Plugin Homepage"
|
1065 |
+
msgstr "Plugin-websted"
|
1066 |
+
|
1067 |
+
#: includes/fs-plugin-info-dialog.php1005,
|
1068 |
+
#: includes/fs-plugin-info-dialog.php:1087
|
1069 |
+
msgid "Donate to this plugin"
|
1070 |
+
msgstr "Donér til dette plugin"
|
1071 |
+
|
1072 |
+
#: includes/fs-plugin-info-dialog.php:1012
|
1073 |
+
msgid "Average Rating"
|
1074 |
+
msgstr "Gennemsnitlig vurdering"
|
1075 |
+
|
1076 |
+
#: includes/fs-plugin-info-dialog.php:1019
|
1077 |
+
msgid "based on %s"
|
1078 |
+
msgstr "baseret på %s"
|
1079 |
+
|
1080 |
+
#: includes/fs-plugin-info-dialog.php:1023
|
1081 |
+
msgid "%s rating"
|
1082 |
+
msgstr "%s vurdering"
|
1083 |
+
|
1084 |
+
#: includes/fs-plugin-info-dialog.php:1025
|
1085 |
+
msgid "%s ratings"
|
1086 |
+
msgstr "%s vurderinger"
|
1087 |
+
|
1088 |
+
#: includes/fs-plugin-info-dialog.php:1040
|
1089 |
+
msgid "%s star"
|
1090 |
+
msgstr "%s stjerne"
|
1091 |
+
|
1092 |
+
#: includes/fs-plugin-info-dialog.php:1042
|
1093 |
+
msgid "%s stars"
|
1094 |
+
msgstr "%s stjerner"
|
1095 |
+
|
1096 |
+
#: includes/fs-plugin-info-dialog.php:1053
|
1097 |
+
msgid "Click to see reviews that provided a rating of %s"
|
1098 |
+
msgstr "Click to see reviews that provided a rating of %s"
|
1099 |
+
|
1100 |
+
#: includes/fs-plugin-info-dialog.php:1066
|
1101 |
+
msgid "Contributors"
|
1102 |
+
msgstr "Bidragsydere"
|
1103 |
+
|
1104 |
+
#: includes/fs-plugin-info-dialog.php1095,
|
1105 |
+
#: includes/fs-plugin-info-dialog.php:1097
|
1106 |
+
msgid "Warning"
|
1107 |
+
msgstr "Advarsel"
|
1108 |
+
|
1109 |
+
#: includes/fs-plugin-info-dialog.php:1095
|
1110 |
+
msgid "This plugin has not been tested with your current version of WordPress."
|
1111 |
+
msgstr "Dette plugin er ikke blevet testet med din nuværende version af WordPress."
|
1112 |
+
|
1113 |
+
#: includes/fs-plugin-info-dialog.php:1097
|
1114 |
+
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1115 |
+
msgstr "This plugin has not been marked as compatible with your version of WordPress."
|
1116 |
+
|
1117 |
+
#: includes/fs-plugin-info-dialog.php:1116
|
1118 |
+
msgid "Paid add-on must be deployed to Freemius."
|
1119 |
+
msgstr "Paid add-on must be deployed to Freemius."
|
1120 |
+
|
1121 |
+
#: includes/fs-plugin-info-dialog.php:1117
|
1122 |
+
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1123 |
+
msgstr "Add-on must be deployed to WordPress.org or Freemius."
|
1124 |
+
|
1125 |
+
#: templates/account.php81, templates/forms/subscription-cancellation.php96,
|
1126 |
+
#: templates/account/partials/addon.php22,
|
1127 |
+
#: templates/account/partials/site.php:295
|
1128 |
+
msgid "Downgrading your plan"
|
1129 |
+
msgstr "Downgrading your plan"
|
1130 |
+
|
1131 |
+
#: templates/account.php82, templates/forms/subscription-cancellation.php97,
|
1132 |
+
#: templates/account/partials/addon.php23,
|
1133 |
+
#: templates/account/partials/site.php:296
|
1134 |
+
msgid "Cancelling the subscription"
|
1135 |
+
msgstr "Cancelling the subscription"
|
1136 |
+
|
1137 |
+
#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the
|
1138 |
+
#. subscription'
|
1139 |
+
#: templates/account.php84, templates/forms/subscription-cancellation.php99,
|
1140 |
+
#: templates/account/partials/addon.php25,
|
1141 |
+
#: templates/account/partials/site.php:298
|
1142 |
+
msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
1143 |
+
msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
1144 |
+
|
1145 |
+
#: templates/account.php85, templates/forms/subscription-cancellation.php100,
|
1146 |
+
#: templates/account/partials/addon.php26,
|
1147 |
+
#: templates/account/partials/site.php:299
|
1148 |
+
msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
|
1149 |
+
msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
|
1150 |
+
|
1151 |
+
#: templates/account.php86, templates/forms/subscription-cancellation.php106,
|
1152 |
+
#: templates/account/partials/addon.php:27
|
1153 |
+
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1154 |
+
msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1155 |
+
|
1156 |
+
#: templates/account.php87, templates/forms/subscription-cancellation.php101,
|
1157 |
+
#: templates/account/partials/addon.php28,
|
1158 |
+
#: templates/account/partials/site.php:300
|
1159 |
+
msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
|
1160 |
+
msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
|
1161 |
+
|
1162 |
+
#: templates/account.php88, templates/forms/subscription-cancellation.php102,
|
1163 |
+
#: templates/account/partials/addon.php29,
|
1164 |
+
#: templates/account/partials/site.php:301
|
1165 |
+
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1166 |
+
msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1167 |
+
|
1168 |
+
#. translators: %s: Plan title (e.g. "Professional")
|
1169 |
+
#: templates/account.php90,
|
1170 |
+
#: templates/account/partials/activate-license-button.php31,
|
1171 |
+
#: templates/account/partials/addon.php:31
|
1172 |
+
msgid "Activate %s Plan"
|
1173 |
+
msgstr "Aktiver %s plan"
|
1174 |
+
|
1175 |
+
#. translators: %s: Time period (e.g. Auto renews in "2 months")
|
1176 |
+
#: templates/account.php93, templates/account/partials/addon.php34,
|
1177 |
+
#: templates/account/partials/site.php:275
|
1178 |
+
msgid "Auto renews in %s"
|
1179 |
+
msgstr "Auto-fornyer om %s"
|
1180 |
+
|
1181 |
+
#. translators: %s: Time period (e.g. Expires in "2 months")
|
1182 |
+
#: templates/account.php95, templates/account/partials/addon.php36,
|
1183 |
+
#: templates/account/partials/site.php:277
|
1184 |
+
msgid "Expires in %s"
|
1185 |
+
msgstr "Udløber om %s"
|
1186 |
+
|
1187 |
+
#: templates/account.php96, templates/account/partials/addon.php:37
|
1188 |
+
msgctxt "as synchronize license"
|
1189 |
+
msgid "Sync License"
|
1190 |
+
msgstr "Synkroniser licens"
|
1191 |
+
|
1192 |
+
#: templates/account.php97, templates/account/partials/addon.php:38
|
1193 |
+
msgid "Cancel Trial"
|
1194 |
+
msgstr "Annuller prøveperiode"
|
1195 |
+
|
1196 |
+
#: templates/account.php98, templates/account/partials/addon.php:39
|
1197 |
+
msgid "Change Plan"
|
1198 |
+
msgstr "Skift plan"
|
1199 |
+
|
1200 |
+
#: templates/account.php99, templates/account/partials/addon.php:40
|
1201 |
+
msgctxt "verb"
|
1202 |
+
msgid "Upgrade"
|
1203 |
+
msgstr "Opgrader"
|
1204 |
+
|
1205 |
+
#: templates/account.php101, templates/account/partials/addon.php42,
|
1206 |
+
#: templates/account/partials/site.php:302
|
1207 |
+
msgctxt "verb"
|
1208 |
+
msgid "Downgrade"
|
1209 |
+
msgstr "Nedgrader"
|
1210 |
+
|
1211 |
+
#: templates/account.php103, templates/add-ons.php130,
|
1212 |
+
#: templates/plugin-info/features.php72,
|
1213 |
+
#: templates/account/partials/addon.php44,
|
1214 |
+
#: templates/account/partials/site.php:31
|
1215 |
+
msgid "Free"
|
1216 |
+
msgstr "Gratis"
|
1217 |
+
|
1218 |
+
#: templates/account.php104, templates/account/partials/addon.php:45
|
1219 |
+
msgid "Activate"
|
1220 |
+
msgstr "Aktiver"
|
1221 |
+
|
1222 |
+
#: templates/account.php105, templates/debug.php371,
|
1223 |
+
#: includes/customizer/class-fs-customizer-upsell-control.php106,
|
1224 |
+
#: templates/account/partials/addon.php:46
|
1225 |
+
msgctxt "as product pricing plan"
|
1226 |
+
msgid "Plan"
|
1227 |
+
msgstr "Plan"
|
1228 |
+
|
1229 |
+
#: templates/account.php:158
|
1230 |
+
msgid "Free Trial"
|
1231 |
+
msgstr "Gratis prøveperiode"
|
1232 |
+
|
1233 |
+
#: templates/account.php:169
|
1234 |
+
msgid "Account Details"
|
1235 |
+
msgstr "Kontodetaljer"
|
1236 |
+
|
1237 |
+
#: templates/account.php:179
|
1238 |
+
msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1239 |
+
msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1240 |
+
|
1241 |
+
#: templates/account.php:181
|
1242 |
+
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1243 |
+
msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1244 |
+
|
1245 |
+
#: templates/account.php:184
|
1246 |
+
msgid "Delete Account"
|
1247 |
+
msgstr "Slet konto"
|
1248 |
+
|
1249 |
+
#: templates/account.php196, templates/account/partials/addon.php159,
|
1250 |
+
#: templates/account/partials/deactivate-license-button.php:35
|
1251 |
+
msgid "Deactivate License"
|
1252 |
+
msgstr "Deaktiver licens"
|
1253 |
+
|
1254 |
+
#: templates/account.php219, templates/forms/subscription-cancellation.php:125
|
1255 |
+
msgid "Are you sure you want to proceed?"
|
1256 |
+
msgstr "Er du sikker på, du vil fortsætte?"
|
1257 |
+
|
1258 |
+
#: templates/account.php219, templates/account/partials/addon.php:182
|
1259 |
+
msgid "Cancel Subscription"
|
1260 |
+
msgstr "Annuller abonnement"
|
1261 |
+
|
1262 |
+
#: templates/account.php:247
|
1263 |
+
msgctxt "as synchronize"
|
1264 |
+
msgid "Sync"
|
1265 |
+
msgstr "Synkroniser"
|
1266 |
+
|
1267 |
+
#: templates/account.php261, templates/debug.php:487
|
1268 |
+
msgid "Name"
|
1269 |
+
msgstr "Navn"
|
1270 |
+
|
1271 |
+
#: templates/account.php267, templates/debug.php:488
|
1272 |
+
msgid "Email"
|
1273 |
+
msgstr "E-mail"
|
1274 |
+
|
1275 |
+
#: templates/account.php274, templates/debug.php370, templates/debug.php:526
|
1276 |
+
msgid "User ID"
|
1277 |
+
msgstr "Bruger-ID"
|
1278 |
+
|
1279 |
+
#: templates/account.php:282
|
1280 |
+
msgid "Site ID"
|
1281 |
+
msgstr "Websteds-ID"
|
1282 |
+
|
1283 |
+
#: templates/account.php:285
|
1284 |
+
msgid "No ID"
|
1285 |
+
msgstr "Intet ID"
|
1286 |
+
|
1287 |
+
#: templates/account.php290, templates/debug.php243, templates/debug.php372,
|
1288 |
+
#: templates/debug.php453, templates/debug.php490,
|
1289 |
+
#: templates/account/partials/site.php:219
|
1290 |
+
msgid "Public Key"
|
1291 |
+
msgstr "Offentlig nøgle"
|
1292 |
+
|
1293 |
+
#: templates/account.php296, templates/debug.php373, templates/debug.php454,
|
1294 |
+
#: templates/debug.php491, templates/account/partials/site.php:231
|
1295 |
+
msgid "Secret Key"
|
1296 |
+
msgstr "Privat nøgle"
|
1297 |
+
|
1298 |
+
#: templates/account.php:299
|
1299 |
+
msgctxt "as secret encryption key missing"
|
1300 |
+
msgid "No Secret"
|
1301 |
+
msgstr "Ingen privat nøgle"
|
1302 |
+
|
1303 |
+
#: templates/account.php318, templates/account/partials/site.php112,
|
1304 |
+
#: templates/account/partials/site.php:114
|
1305 |
+
msgid "Trial"
|
1306 |
+
msgstr "Prøveperiode"
|
1307 |
+
|
1308 |
+
#: templates/account.php337, templates/debug.php531,
|
1309 |
+
#: templates/account/partials/site.php:248
|
1310 |
+
msgid "License Key"
|
1311 |
+
msgstr "Licensnøgle"
|
1312 |
+
|
1313 |
+
#: templates/account.php:367
|
1314 |
+
msgid "not verified"
|
1315 |
+
msgstr "ikke verificeret"
|
1316 |
+
|
1317 |
+
#: templates/account.php376, templates/account/partials/addon.php:120
|
1318 |
+
msgid "Expired"
|
1319 |
+
msgstr "Udløbet"
|
1320 |
+
|
1321 |
+
#: templates/account.php:428
|
1322 |
+
msgid "Premium version"
|
1323 |
+
msgstr "Premium version"
|
1324 |
+
|
1325 |
+
#: templates/account.php:430
|
1326 |
+
msgid "Free version"
|
1327 |
+
msgstr "Gratis version"
|
1328 |
+
|
1329 |
+
#: templates/account.php:442
|
1330 |
+
msgid "Verify Email"
|
1331 |
+
msgstr "Verificer e-mail"
|
1332 |
+
|
1333 |
+
#: templates/account.php:453
|
1334 |
+
msgid "Download %s Version"
|
1335 |
+
msgstr "Download 1%s version"
|
1336 |
+
|
1337 |
+
#: templates/account.php467, templates/account.php649,
|
1338 |
+
#: templates/account/partials/site.php237,
|
1339 |
+
#: templates/account/partials/site.php:255
|
1340 |
+
msgctxt "verb"
|
1341 |
+
msgid "Show"
|
1342 |
+
msgstr "Vis"
|
1343 |
+
|
1344 |
+
#: templates/account.php:481
|
1345 |
+
msgid "What is your %s?"
|
1346 |
+
msgstr "Angiv venligst %s?"
|
1347 |
+
|
1348 |
+
#: templates/account.php489, templates/account/billing.php:27
|
1349 |
+
msgctxt "verb"
|
1350 |
+
msgid "Edit"
|
1351 |
+
msgstr "Rediger"
|
1352 |
+
|
1353 |
+
#: templates/account.php:502
|
1354 |
+
msgid "Sites"
|
1355 |
+
msgstr "Websteder"
|
1356 |
+
|
1357 |
+
#: templates/account.php:513
|
1358 |
+
msgid "Search by address"
|
1359 |
+
msgstr "Søg efter adresse"
|
1360 |
+
|
1361 |
+
#: templates/account.php522, templates/account.php570, templates/debug.php236,
|
1362 |
+
#: templates/debug.php364, templates/debug.php449, templates/debug.php486,
|
1363 |
+
#: templates/debug.php524, templates/debug.php597,
|
1364 |
+
#: templates/account/payments.php35, templates/debug/logger.php:21
|
1365 |
+
msgid "ID"
|
1366 |
+
msgstr "ID"
|
1367 |
+
|
1368 |
+
#: templates/account.php523, templates/debug.php:367
|
1369 |
+
msgid "Address"
|
1370 |
+
msgstr "Adresse"
|
1371 |
+
|
1372 |
+
#: templates/account.php:524
|
1373 |
+
msgid "License"
|
1374 |
+
msgstr "Licens"
|
1375 |
+
|
1376 |
+
#: templates/account.php:525
|
1377 |
+
msgid "Plan"
|
1378 |
+
msgstr "Plan"
|
1379 |
+
|
1380 |
+
#: templates/account.php:573
|
1381 |
+
msgctxt "as software license"
|
1382 |
+
msgid "License"
|
1383 |
+
msgstr "Licens"
|
1384 |
+
|
1385 |
+
#: templates/account.php:643
|
1386 |
+
msgctxt "verb"
|
1387 |
+
msgid "Hide"
|
1388 |
+
msgstr "Skjul"
|
1389 |
+
|
1390 |
+
#: templates/account.php:686
|
1391 |
+
msgid "Cancelling %s"
|
1392 |
+
msgstr "Cancelling %s"
|
1393 |
+
|
1394 |
+
#: templates/account.php686, templates/account.php703,
|
1395 |
+
#: templates/forms/subscription-cancellation.php27,
|
1396 |
+
#: templates/forms/deactivation/form.php:117
|
1397 |
+
msgid "trial"
|
1398 |
+
msgstr "trial"
|
1399 |
+
|
1400 |
+
#: templates/account.php701, templates/forms/deactivation/form.php:134
|
1401 |
+
msgid "Cancelling %s..."
|
1402 |
+
msgstr "Cancelling %s..."
|
1403 |
+
|
1404 |
+
#: templates/account.php704, templates/forms/subscription-cancellation.php28,
|
1405 |
+
#: templates/forms/deactivation/form.php:118
|
1406 |
+
msgid "subscription"
|
1407 |
+
msgstr "subscription"
|
1408 |
+
|
1409 |
+
#: templates/account.php:718
|
1410 |
+
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1411 |
+
msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1412 |
+
|
1413 |
+
#: templates/add-ons.php:36
|
1414 |
+
msgid "Add Ons for %s"
|
1415 |
+
msgstr "Tilføjelser til %s"
|
1416 |
+
|
1417 |
+
#: templates/add-ons.php:44
|
1418 |
+
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
1419 |
+
msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
1420 |
+
|
1421 |
+
#: templates/add-ons.php:139
|
1422 |
+
msgid "View details"
|
1423 |
+
msgstr "Vis detaljer"
|
1424 |
+
|
1425 |
+
#: templates/admin-notice.php13, templates/forms/license-activation.php208,
|
1426 |
+
#: templates/forms/resend-key.php:77
|
1427 |
+
msgctxt "as close a window"
|
1428 |
+
msgid "Dismiss"
|
1429 |
+
msgstr "Fjern"
|
1430 |
+
|
1431 |
+
#: templates/auto-installation.php:45
|
1432 |
+
msgid "%s sec"
|
1433 |
+
msgstr "1%s sek"
|
1434 |
+
|
1435 |
+
#: templates/auto-installation.php:83
|
1436 |
+
msgid "Automatic Installation"
|
1437 |
+
msgstr "Automatisk installering"
|
1438 |
+
|
1439 |
+
#: templates/auto-installation.php:93
|
1440 |
+
msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
|
1441 |
+
msgstr "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now."
|
1442 |
+
|
1443 |
+
#: templates/auto-installation.php:104
|
1444 |
+
msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
|
1445 |
+
msgstr "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page."
|
1446 |
+
|
1447 |
+
#: templates/auto-installation.php:109
|
1448 |
+
msgid "Cancel Installation"
|
1449 |
+
msgstr "Annuller installering"
|
1450 |
+
|
1451 |
+
#: templates/checkout.php:172
|
1452 |
+
msgid "Checkout"
|
1453 |
+
msgstr "Udtjekning"
|
1454 |
+
|
1455 |
+
#: templates/checkout.php:172
|
1456 |
+
msgid "PCI compliant"
|
1457 |
+
msgstr "PCI compliant"
|
1458 |
+
|
1459 |
+
#. translators: %s: name (e.g. Hey John,)
|
1460 |
+
#: templates/connect.php:112
|
1461 |
+
msgctxt "greeting"
|
1462 |
+
msgid "Hey %s,"
|
1463 |
+
msgstr "Hey %s,"
|
1464 |
+
|
1465 |
+
#: templates/connect.php:154
|
1466 |
+
msgid "Allow & Continue"
|
1467 |
+
msgstr "Tillad & Fortsæt"
|
1468 |
+
|
1469 |
+
#: templates/connect.php:158
|
1470 |
+
msgid "Re-send activation email"
|
1471 |
+
msgstr "Gensend e-mail om aktivering"
|
1472 |
+
|
1473 |
+
#: templates/connect.php:162
|
1474 |
+
msgid "Thanks %s!"
|
1475 |
+
msgstr "Tak %s!"
|
1476 |
+
|
1477 |
+
#: templates/connect.php172, templates/forms/license-activation.php:43
|
1478 |
+
msgid "Agree & Activate License"
|
1479 |
+
msgstr "Accepter & aktiver licens"
|
1480 |
+
|
1481 |
+
#: templates/connect.php:181
|
1482 |
+
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
1483 |
+
msgstr "Tak for at købe %s! For at komme i gang, venligst indtast din licensnøgle:"
|
1484 |
+
|
1485 |
+
#: templates/connect.php:188
|
1486 |
+
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1487 |
+
msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1488 |
+
|
1489 |
+
#: templates/connect.php:189
|
1490 |
+
msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1491 |
+
msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1492 |
+
|
1493 |
+
#: templates/connect.php:195
|
1494 |
+
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1495 |
+
msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1496 |
+
|
1497 |
+
#: templates/connect.php:196
|
1498 |
+
msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1499 |
+
msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1500 |
+
|
1501 |
+
#: templates/connect.php:230
|
1502 |
+
msgid "We're excited to introduce the Freemius network-level integration."
|
1503 |
+
msgstr "We're excited to introduce the Freemius network-level integration."
|
1504 |
+
|
1505 |
+
#: templates/connect.php:233
|
1506 |
+
msgid "During the update process we detected %d site(s) that are still pending license activation."
|
1507 |
+
msgstr "During the update process we detected %d site(s) that are still pending license activation."
|
1508 |
+
|
1509 |
+
#: templates/connect.php:235
|
1510 |
+
msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1511 |
+
msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1512 |
+
|
1513 |
+
#: templates/connect.php:237
|
1514 |
+
msgid "%s's paid features"
|
1515 |
+
msgstr "%s's paid features"
|
1516 |
+
|
1517 |
+
#: templates/connect.php:242
|
1518 |
+
msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1519 |
+
msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1520 |
+
|
1521 |
+
#: templates/connect.php:244
|
1522 |
+
msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1523 |
+
msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1524 |
+
|
1525 |
+
#: templates/connect.php253, templates/forms/license-activation.php:46
|
1526 |
+
msgid "License key"
|
1527 |
+
msgstr "Licensnøgle"
|
1528 |
+
|
1529 |
+
#: templates/connect.php256, templates/forms/license-activation.php:19
|
1530 |
+
msgid "Can't find your license key?"
|
1531 |
+
msgstr "Kan du ikke finde din licensnøgle?"
|
1532 |
+
|
1533 |
+
#: templates/connect.php315, templates/connect.php630,
|
1534 |
+
#: templates/forms/deactivation/retry-skip.php:20
|
1535 |
+
msgctxt "verb"
|
1536 |
+
msgid "Skip"
|
1537 |
+
msgstr "Spring over"
|
1538 |
+
|
1539 |
+
#: templates/connect.php:318
|
1540 |
+
msgid "Delegate to Site Admins"
|
1541 |
+
msgstr "Delegate to Site Admins"
|
1542 |
+
|
1543 |
+
#: templates/connect.php:318
|
1544 |
+
msgid "If you click it, this decision will be delegated to the sites administrators."
|
1545 |
+
msgstr "If you click it, this decision will be delegated to the sites administrators."
|
1546 |
+
|
1547 |
+
#: templates/connect.php:346
|
1548 |
+
msgid "Your Profile Overview"
|
1549 |
+
msgstr "Overblik af din profil"
|
1550 |
+
|
1551 |
+
#: templates/connect.php:347
|
1552 |
+
msgid "Name and email address"
|
1553 |
+
msgstr "Navn og e-mailadresse"
|
1554 |
+
|
1555 |
+
#: templates/connect.php:352
|
1556 |
+
msgid "Your Site Overview"
|
1557 |
+
msgstr "Overblik af dit websted"
|
1558 |
+
|
1559 |
+
#: templates/connect.php:353
|
1560 |
+
msgid "Site URL, WP version, PHP info, plugins & themes"
|
1561 |
+
msgstr "Websteds-URL, WP version, PHP info, plugins og temaer"
|
1562 |
+
|
1563 |
+
#: templates/connect.php:358
|
1564 |
+
msgid "Admin Notices"
|
1565 |
+
msgstr "Admin-meddelelser"
|
1566 |
+
|
1567 |
+
#: templates/connect.php359, templates/connect.php:375
|
1568 |
+
msgid "Updates, announcements, marketing, no spam"
|
1569 |
+
msgstr "Updates, announcements, marketing, no spam"
|
1570 |
+
|
1571 |
+
#: templates/connect.php:364
|
1572 |
+
msgid "Current %s Events"
|
1573 |
+
msgstr "Current %s Events"
|
1574 |
+
|
1575 |
+
#: templates/connect.php:365
|
1576 |
+
msgid "Activation, deactivation and uninstall"
|
1577 |
+
msgstr "Aktivering, deaktivering og afinstallering"
|
1578 |
+
|
1579 |
+
#: templates/connect.php:374
|
1580 |
+
msgid "Newsletter"
|
1581 |
+
msgstr "Nyhedsbrev"
|
1582 |
+
|
1583 |
+
#: templates/connect.php391, templates/forms/license-activation.php:38
|
1584 |
+
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1585 |
+
msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1586 |
+
|
1587 |
+
#: templates/connect.php:396
|
1588 |
+
msgid "What permissions are being granted?"
|
1589 |
+
msgstr "Hvilke tilladelser bliver givet?"
|
1590 |
+
|
1591 |
+
#: templates/connect.php:417
|
1592 |
+
msgid "Don't have a license key?"
|
1593 |
+
msgstr "Har du ikke en licensnøgle?"
|
1594 |
+
|
1595 |
+
#: templates/connect.php:418
|
1596 |
+
msgid "Activate Free Version"
|
1597 |
+
msgstr "Aktiver gratis version"
|
1598 |
+
|
1599 |
+
#: templates/connect.php:420
|
1600 |
+
msgid "Have a license key?"
|
1601 |
+
msgstr "Har du en licensnøgle?"
|
1602 |
+
|
1603 |
+
#: templates/connect.php:428
|
1604 |
+
msgid "Privacy Policy"
|
1605 |
+
msgstr "Privatlivspolitik"
|
1606 |
+
|
1607 |
+
#: templates/connect.php:430
|
1608 |
+
msgid "License Agreement"
|
1609 |
+
msgstr "License Agreement"
|
1610 |
+
|
1611 |
+
#: templates/connect.php:430
|
1612 |
+
msgid "Terms of Service"
|
1613 |
+
msgstr "Servicevilkår"
|
1614 |
+
|
1615 |
+
#: templates/connect.php:766
|
1616 |
+
msgctxt "as in the process of sending an email"
|
1617 |
+
msgid "Sending email"
|
1618 |
+
msgstr "Sender e-mail"
|
1619 |
+
|
1620 |
+
#: templates/connect.php:767
|
1621 |
+
msgctxt "as activating plugin"
|
1622 |
+
msgid "Activating"
|
1623 |
+
msgstr "Aktiverer"
|
1624 |
+
|
1625 |
+
#: templates/contact.php:78
|
1626 |
+
msgid "Contact"
|
1627 |
+
msgstr "Kontakt"
|
1628 |
+
|
1629 |
+
#: templates/debug.php:17
|
1630 |
+
msgctxt "as turned off"
|
1631 |
+
msgid "Off"
|
1632 |
+
msgstr "Fra"
|
1633 |
+
|
1634 |
+
#: templates/debug.php:18
|
1635 |
+
msgctxt "as turned on"
|
1636 |
+
msgid "On"
|
1637 |
+
msgstr "Til"
|
1638 |
+
|
1639 |
+
#: templates/debug.php:20
|
1640 |
+
msgid "SDK"
|
1641 |
+
msgstr "SDK"
|
1642 |
+
|
1643 |
+
#: templates/debug.php:24
|
1644 |
+
msgctxt "as code debugging"
|
1645 |
+
msgid "Debugging"
|
1646 |
+
msgstr "Fejlfinding"
|
1647 |
+
|
1648 |
+
#: templates/debug.php54, templates/debug.php248, templates/debug.php374,
|
1649 |
+
#: templates/debug.php:492
|
1650 |
+
msgid "Actions"
|
1651 |
+
msgstr "Handlinger"
|
1652 |
+
|
1653 |
+
#: templates/debug.php:64
|
1654 |
+
msgid "Are you sure you want to delete all Freemius data?"
|
1655 |
+
msgstr "Er du sikker på, du vil slette al Freemius data?"
|
1656 |
+
|
1657 |
+
#: templates/debug.php:64
|
1658 |
+
msgid "Delete All Accounts"
|
1659 |
+
msgstr "Slet alle konti"
|
1660 |
+
|
1661 |
+
#: templates/debug.php:71
|
1662 |
+
msgid "Clear API Cache"
|
1663 |
+
msgstr "Ryd API-cache"
|
1664 |
+
|
1665 |
+
#: templates/debug.php:79
|
1666 |
+
msgid "Clear Updates Transients"
|
1667 |
+
msgstr "Clear Updates Transients"
|
1668 |
+
|
1669 |
+
#: templates/debug.php:86
|
1670 |
+
msgid "Sync Data From Server"
|
1671 |
+
msgstr "Synkroniser data fra server"
|
1672 |
+
|
1673 |
+
#: templates/debug.php:95
|
1674 |
+
msgid "Migrate Options to Network"
|
1675 |
+
msgstr "Migrate Options to Network"
|
1676 |
+
|
1677 |
+
#: templates/debug.php:100
|
1678 |
+
msgid "Load DB Option"
|
1679 |
+
msgstr "Hent DB-indstilling"
|
1680 |
+
|
1681 |
+
#: templates/debug.php:103
|
1682 |
+
msgid "Set DB Option"
|
1683 |
+
msgstr "Sæt DB-indstilling"
|
1684 |
+
|
1685 |
+
#: templates/debug.php:180
|
1686 |
+
msgid "Key"
|
1687 |
+
msgstr "Nøgle"
|
1688 |
+
|
1689 |
+
#: templates/debug.php:181
|
1690 |
+
msgid "Value"
|
1691 |
+
msgstr "Værdi"
|
1692 |
+
|
1693 |
+
#: templates/debug.php:197
|
1694 |
+
msgctxt "as software development kit versions"
|
1695 |
+
msgid "SDK Versions"
|
1696 |
+
msgstr "SDK-versioner"
|
1697 |
+
|
1698 |
+
#: templates/debug.php:202
|
1699 |
+
msgid "SDK Path"
|
1700 |
+
msgstr "SDK-sti"
|
1701 |
+
|
1702 |
+
#: templates/debug.php203, templates/debug.php:242
|
1703 |
+
msgid "Module Path"
|
1704 |
+
msgstr "Modul-sti"
|
1705 |
+
|
1706 |
+
#: templates/debug.php:204
|
1707 |
+
msgid "Is Active"
|
1708 |
+
msgstr "Er aktiv"
|
1709 |
+
|
1710 |
+
#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35
|
1711 |
+
msgid "Plugins"
|
1712 |
+
msgstr "Plugins"
|
1713 |
+
|
1714 |
+
#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56
|
1715 |
+
msgid "Themes"
|
1716 |
+
msgstr "Temaer"
|
1717 |
+
|
1718 |
+
#: templates/debug.php237, templates/debug.php369, templates/debug.php451,
|
1719 |
+
#: templates/debug/scheduled-crons.php:80
|
1720 |
+
msgid "Slug"
|
1721 |
+
msgstr "Kortnavn"
|
1722 |
+
|
1723 |
+
#: templates/debug.php239, templates/debug.php:450
|
1724 |
+
msgid "Title"
|
1725 |
+
msgstr "Titel"
|
1726 |
+
|
1727 |
+
#: templates/debug.php:240
|
1728 |
+
msgctxt "as application program interface"
|
1729 |
+
msgid "API"
|
1730 |
+
msgstr "API"
|
1731 |
+
|
1732 |
+
#: templates/debug.php:241
|
1733 |
+
msgid "Freemius State"
|
1734 |
+
msgstr "Freemius tilstand"
|
1735 |
+
|
1736 |
+
#: templates/debug.php:245
|
1737 |
+
msgid "Network Blog"
|
1738 |
+
msgstr "Netværksblog"
|
1739 |
+
|
1740 |
+
#: templates/debug.php:246
|
1741 |
+
msgid "Network User"
|
1742 |
+
msgstr "Netværksbruger"
|
1743 |
+
|
1744 |
+
#: templates/debug.php:283
|
1745 |
+
msgctxt "as connection was successful"
|
1746 |
+
msgid "Connected"
|
1747 |
+
msgstr "Forbundet"
|
1748 |
+
|
1749 |
+
#: templates/debug.php:284
|
1750 |
+
msgctxt "as connection blocked"
|
1751 |
+
msgid "Blocked"
|
1752 |
+
msgstr "Blokeret"
|
1753 |
+
|
1754 |
+
#: templates/debug.php:320
|
1755 |
+
msgid "Simulate Trial Promotion"
|
1756 |
+
msgstr "Simulate Trial Promotion"
|
1757 |
+
|
1758 |
+
#: templates/debug.php:332
|
1759 |
+
msgid "Simulate Network Upgrade"
|
1760 |
+
msgstr "Simuler netværksopgradering"
|
1761 |
+
|
1762 |
+
#: templates/debug.php:358
|
1763 |
+
msgid "%s Installs"
|
1764 |
+
msgstr "%s installeringer"
|
1765 |
+
|
1766 |
+
#: templates/debug.php:360
|
1767 |
+
msgctxt "like websites"
|
1768 |
+
msgid "Sites"
|
1769 |
+
msgstr "Websteder"
|
1770 |
+
|
1771 |
+
#: templates/debug.php366, templates/account/partials/site.php:148
|
1772 |
+
msgid "Blog ID"
|
1773 |
+
msgstr "Blog-ID"
|
1774 |
+
|
1775 |
+
#: templates/debug.php431, templates/debug.php509,
|
1776 |
+
#: templates/account/partials/addon.php:339
|
1777 |
+
msgctxt "verb"
|
1778 |
+
msgid "Delete"
|
1779 |
+
msgstr "Slet"
|
1780 |
+
|
1781 |
+
#: templates/debug.php:445
|
1782 |
+
msgid "Add Ons of module %s"
|
1783 |
+
msgstr "Tilføjelser til modul %s"
|
1784 |
+
|
1785 |
+
#: templates/debug.php:482
|
1786 |
+
msgid "Users"
|
1787 |
+
msgstr "Brugere"
|
1788 |
+
|
1789 |
+
#: templates/debug.php:489
|
1790 |
+
msgid "Verified"
|
1791 |
+
msgstr "Verificeret"
|
1792 |
+
|
1793 |
+
#: templates/debug.php:520
|
1794 |
+
msgid "%s Licenses"
|
1795 |
+
msgstr "1%s licenser"
|
1796 |
+
|
1797 |
+
#: templates/debug.php:525
|
1798 |
+
msgid "Plugin ID"
|
1799 |
+
msgstr "Plugin-ID"
|
1800 |
+
|
1801 |
+
#: templates/debug.php:527
|
1802 |
+
msgid "Plan ID"
|
1803 |
+
msgstr "Plan-ID"
|
1804 |
+
|
1805 |
+
#: templates/debug.php:528
|
1806 |
+
msgid "Quota"
|
1807 |
+
msgstr "Kvote"
|
1808 |
+
|
1809 |
+
#: templates/debug.php:529
|
1810 |
+
msgid "Activated"
|
1811 |
+
msgstr "Aktiveret"
|
1812 |
+
|
1813 |
+
#: templates/debug.php:530
|
1814 |
+
msgid "Blocking"
|
1815 |
+
msgstr "Blokerer"
|
1816 |
+
|
1817 |
+
#: templates/debug.php:532
|
1818 |
+
msgctxt "as expiration date"
|
1819 |
+
msgid "Expiration"
|
1820 |
+
msgstr "Udløber"
|
1821 |
+
|
1822 |
+
#: templates/debug.php:555
|
1823 |
+
msgid "Debug Log"
|
1824 |
+
msgstr "Fejlfindingslog"
|
1825 |
+
|
1826 |
+
#: templates/debug.php:559
|
1827 |
+
msgid "All Types"
|
1828 |
+
msgstr "Alle typer"
|
1829 |
+
|
1830 |
+
#: templates/debug.php:566
|
1831 |
+
msgid "All Requests"
|
1832 |
+
msgstr "Alle forespørgsler"
|
1833 |
+
|
1834 |
+
#: templates/debug.php571, templates/debug.php600,
|
1835 |
+
#: templates/debug/logger.php:25
|
1836 |
+
msgid "File"
|
1837 |
+
msgstr "Fil"
|
1838 |
+
|
1839 |
+
#: templates/debug.php572, templates/debug.php598,
|
1840 |
+
#: templates/debug/logger.php:23
|
1841 |
+
msgid "Function"
|
1842 |
+
msgstr "Funktion"
|
1843 |
+
|
1844 |
+
#: templates/debug.php:573
|
1845 |
+
msgid "Process ID"
|
1846 |
+
msgstr "Proces-ID"
|
1847 |
+
|
1848 |
+
#: templates/debug.php:574
|
1849 |
+
msgid "Logger"
|
1850 |
+
msgstr "Logger"
|
1851 |
+
|
1852 |
+
#: templates/debug.php575, templates/debug.php599,
|
1853 |
+
#: templates/debug/logger.php:24
|
1854 |
+
msgid "Message"
|
1855 |
+
msgstr "Besked"
|
1856 |
+
|
1857 |
+
#: templates/debug.php:577
|
1858 |
+
msgid "Filter"
|
1859 |
+
msgstr "Filter"
|
1860 |
+
|
1861 |
+
#: templates/debug.php:585
|
1862 |
+
msgid "Download"
|
1863 |
+
msgstr "Download"
|
1864 |
+
|
1865 |
+
#: templates/debug.php596, templates/debug/logger.php:22
|
1866 |
+
msgid "Type"
|
1867 |
+
msgstr "Type"
|
1868 |
+
|
1869 |
+
#: templates/debug.php601, templates/debug/logger.php:26
|
1870 |
+
msgid "Timestamp"
|
1871 |
+
msgstr "Tidsstempel"
|
1872 |
+
|
1873 |
+
#: templates/secure-https-header.php:28
|
1874 |
+
msgid "Secure HTTPS %s page, running from an external domain"
|
1875 |
+
msgstr "Secure HTTPS %s page, running from an external domain"
|
1876 |
+
|
1877 |
+
#: includes/customizer/class-fs-customizer-support-section.php55,
|
1878 |
+
#: templates/plugin-info/features.php:43
|
1879 |
+
msgid "Support"
|
1880 |
+
msgstr "Support"
|
1881 |
+
|
1882 |
+
#: includes/debug/class-fs-debug-bar-panel.php48,
|
1883 |
+
#: templates/debug/api-calls.php54, templates/debug/logger.php:62
|
1884 |
+
msgctxt "milliseconds"
|
1885 |
+
msgid "ms"
|
1886 |
+
msgstr "ms"
|
1887 |
+
|
1888 |
+
#: includes/debug/debug-bar-start.php:41
|
1889 |
+
msgid "Freemius API"
|
1890 |
+
msgstr "Freemius API"
|
1891 |
+
|
1892 |
+
#: includes/debug/debug-bar-start.php:42
|
1893 |
+
msgid "Requests"
|
1894 |
+
msgstr "Requests"
|
1895 |
+
|
1896 |
+
#: templates/account/billing.php:28
|
1897 |
+
msgctxt "verb"
|
1898 |
+
msgid "Update"
|
1899 |
+
msgstr "Opdater"
|
1900 |
+
|
1901 |
+
#: templates/account/billing.php:39
|
1902 |
+
msgid "Billing"
|
1903 |
+
msgstr "Betaling"
|
1904 |
+
|
1905 |
+
#: templates/account/billing.php44, templates/account/billing.php:44
|
1906 |
+
msgid "Business name"
|
1907 |
+
msgstr "Firmanavn"
|
1908 |
+
|
1909 |
+
#: templates/account/billing.php45, templates/account/billing.php:45
|
1910 |
+
msgid "Tax / VAT ID"
|
1911 |
+
msgstr "Moms / VAT ID"
|
1912 |
+
|
1913 |
+
#: templates/account/billing.php48, templates/account/billing.php48,
|
1914 |
+
#: templates/account/billing.php49, templates/account/billing.php:49
|
1915 |
+
msgid "Address Line %d"
|
1916 |
+
msgstr "Adresselinje %d"
|
1917 |
+
|
1918 |
+
#: templates/account/billing.php52, templates/account/billing.php:52
|
1919 |
+
msgid "City"
|
1920 |
+
msgstr "By"
|
1921 |
+
|
1922 |
+
#: templates/account/billing.php52, templates/account/billing.php:52
|
1923 |
+
msgid "Town"
|
1924 |
+
msgstr "By"
|
1925 |
+
|
1926 |
+
#: templates/account/billing.php53, templates/account/billing.php:53
|
1927 |
+
msgid "ZIP / Postal Code"
|
1928 |
+
msgstr "ZIP / Postnummer"
|
1929 |
+
|
1930 |
+
#: templates/account/billing.php:308
|
1931 |
+
msgid "Country"
|
1932 |
+
msgstr "Land"
|
1933 |
+
|
1934 |
+
#: templates/account/billing.php:310
|
1935 |
+
msgid "Select Country"
|
1936 |
+
msgstr "Vælg land"
|
1937 |
+
|
1938 |
+
#: templates/account/billing.php317, templates/account/billing.php:318
|
1939 |
+
msgid "State"
|
1940 |
+
msgstr "Stat"
|
1941 |
+
|
1942 |
+
#: templates/account/billing.php317, templates/account/billing.php:318
|
1943 |
+
msgid "Province"
|
1944 |
+
msgstr "Provins"
|
1945 |
+
|
1946 |
+
#: templates/account/payments.php:29
|
1947 |
+
msgid "Payments"
|
1948 |
+
msgstr "Betalinger"
|
1949 |
+
|
1950 |
+
#: templates/account/payments.php:36
|
1951 |
+
msgid "Date"
|
1952 |
+
msgstr "Dato"
|
1953 |
+
|
1954 |
+
#: templates/account/payments.php:37
|
1955 |
+
msgid "Amount"
|
1956 |
+
msgstr "Beløb"
|
1957 |
+
|
1958 |
+
#: templates/account/payments.php38, templates/account/payments.php:50
|
1959 |
+
msgid "Invoice"
|
1960 |
+
msgstr "Faktura"
|
1961 |
+
|
1962 |
+
#: templates/debug/api-calls.php:56
|
1963 |
+
msgid "API"
|
1964 |
+
msgstr "API"
|
1965 |
+
|
1966 |
+
#: templates/debug/api-calls.php:68
|
1967 |
+
msgid "Method"
|
1968 |
+
msgstr "Metode"
|
1969 |
+
|
1970 |
+
#: templates/debug/api-calls.php:69
|
1971 |
+
msgid "Code"
|
1972 |
+
msgstr "Kode"
|
1973 |
+
|
1974 |
+
#: templates/debug/api-calls.php:70
|
1975 |
+
msgid "Length"
|
1976 |
+
msgstr "Længde"
|
1977 |
+
|
1978 |
+
#: templates/debug/api-calls.php:71
|
1979 |
+
msgctxt "as file/folder path"
|
1980 |
+
msgid "Path"
|
1981 |
+
msgstr "Sti"
|
1982 |
+
|
1983 |
+
#: templates/debug/api-calls.php:73
|
1984 |
+
msgid "Body"
|
1985 |
+
msgstr "Body"
|
1986 |
+
|
1987 |
+
#: templates/debug/api-calls.php:75
|
1988 |
+
msgid "Result"
|
1989 |
+
msgstr "Resultat"
|
1990 |
+
|
1991 |
+
#: templates/debug/api-calls.php:76
|
1992 |
+
msgid "Start"
|
1993 |
+
msgstr "Start"
|
1994 |
+
|
1995 |
+
#: templates/debug/api-calls.php:77
|
1996 |
+
msgid "End"
|
1997 |
+
msgstr "Slut"
|
1998 |
+
|
1999 |
+
#: templates/debug/logger.php:15
|
2000 |
+
msgid "Log"
|
2001 |
+
msgstr "Log"
|
2002 |
+
|
2003 |
+
#. translators: %s: time period (e.g. In "2 hours")
|
2004 |
+
#: templates/debug/plugins-themes-sync.php18,
|
2005 |
+
#: templates/debug/scheduled-crons.php:91
|
2006 |
+
msgid "In %s"
|
2007 |
+
msgstr "Om %s"
|
2008 |
+
|
2009 |
+
#. translators: %s: time period (e.g. "2 hours" ago)
|
2010 |
+
#: templates/debug/plugins-themes-sync.php20,
|
2011 |
+
#: templates/debug/scheduled-crons.php:93
|
2012 |
+
msgid "%s ago"
|
2013 |
+
msgstr "%s siden"
|
2014 |
+
|
2015 |
+
#: templates/debug/plugins-themes-sync.php21,
|
2016 |
+
#: templates/debug/scheduled-crons.php:74
|
2017 |
+
msgctxt "seconds"
|
2018 |
+
msgid "sec"
|
2019 |
+
msgstr "sek"
|
2020 |
+
|
2021 |
+
#: templates/debug/plugins-themes-sync.php:23
|
2022 |
+
msgid "Plugins & Themes Sync"
|
2023 |
+
msgstr "Synkronisering af plugins og temaer"
|
2024 |
+
|
2025 |
+
#: templates/debug/plugins-themes-sync.php:28
|
2026 |
+
msgid "Total"
|
2027 |
+
msgstr "Total"
|
2028 |
+
|
2029 |
+
#: templates/debug/plugins-themes-sync.php29,
|
2030 |
+
#: templates/debug/scheduled-crons.php:84
|
2031 |
+
msgid "Last"
|
2032 |
+
msgstr "Sidste"
|
2033 |
+
|
2034 |
+
#: templates/debug/scheduled-crons.php:76
|
2035 |
+
msgid "Scheduled Crons"
|
2036 |
+
msgstr "Planlagte cron jobs"
|
2037 |
+
|
2038 |
+
#: templates/debug/scheduled-crons.php:81
|
2039 |
+
msgid "Module"
|
2040 |
+
msgstr "Modul"
|
2041 |
+
|
2042 |
+
#: templates/debug/scheduled-crons.php:82
|
2043 |
+
msgid "Module Type"
|
2044 |
+
msgstr "Modultype"
|
2045 |
+
|
2046 |
+
#: templates/debug/scheduled-crons.php:83
|
2047 |
+
msgid "Cron Type"
|
2048 |
+
msgstr "Cron Type"
|
2049 |
+
|
2050 |
+
#: templates/debug/scheduled-crons.php:85
|
2051 |
+
msgid "Next"
|
2052 |
+
msgstr "Næste"
|
2053 |
+
|
2054 |
+
#: templates/forms/affiliation.php:82
|
2055 |
+
msgid "Non-expiring"
|
2056 |
+
msgstr "Udløber ikke"
|
2057 |
+
|
2058 |
+
#: templates/forms/affiliation.php:85
|
2059 |
+
msgid "Apply to become an affiliate"
|
2060 |
+
msgstr "Apply to become an affiliate"
|
2061 |
+
|
2062 |
+
#: templates/forms/affiliation.php:104
|
2063 |
+
msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
|
2064 |
+
msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s."
|
2065 |
+
|
2066 |
+
#: templates/forms/affiliation.php:119
|
2067 |
+
msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
|
2068 |
+
msgstr "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information."
|
2069 |
+
|
2070 |
+
#: templates/forms/affiliation.php:122
|
2071 |
+
msgid "Your affiliation account was temporarily suspended."
|
2072 |
+
msgstr "Your affiliation account was temporarily suspended."
|
2073 |
+
|
2074 |
+
#: templates/forms/affiliation.php:125
|
2075 |
+
msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
|
2076 |
+
msgstr "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days."
|
2077 |
+
|
2078 |
+
#: templates/forms/affiliation.php:128
|
2079 |
+
msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
|
2080 |
+
msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support."
|
2081 |
+
|
2082 |
+
#: templates/forms/affiliation.php:141
|
2083 |
+
msgid "Like the %s? Become our ambassador and earn cash ;-)"
|
2084 |
+
msgstr "Like the %s? Become our ambassador and earn cash ;-)"
|
2085 |
+
|
2086 |
+
#: templates/forms/affiliation.php:142
|
2087 |
+
msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
|
2088 |
+
msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!"
|
2089 |
+
|
2090 |
+
#: templates/forms/affiliation.php:145
|
2091 |
+
msgid "Program Summary"
|
2092 |
+
msgstr "Programoversigt"
|
2093 |
+
|
2094 |
+
#: templates/forms/affiliation.php:147
|
2095 |
+
msgid "%s commission when a customer purchases a new license."
|
2096 |
+
msgstr "%s commission when a customer purchases a new license."
|
2097 |
+
|
2098 |
+
#: templates/forms/affiliation.php:149
|
2099 |
+
msgid "Get commission for automated subscription renewals."
|
2100 |
+
msgstr "Get commission for automated subscription renewals."
|
2101 |
+
|
2102 |
+
#: templates/forms/affiliation.php:152
|
2103 |
+
msgid "%s tracking cookie after the first visit to maximize earnings potential."
|
2104 |
+
msgstr "%s tracking cookie after the first visit to maximize earnings potential."
|
2105 |
+
|
2106 |
+
#: templates/forms/affiliation.php:155
|
2107 |
+
msgid "Unlimited commissions."
|
2108 |
+
msgstr "Unlimited commissions."
|
2109 |
+
|
2110 |
+
#: templates/forms/affiliation.php:157
|
2111 |
+
msgid "%s minimum payout amount."
|
2112 |
+
msgstr "%s minimum payout amount."
|
2113 |
+
|
2114 |
+
#: templates/forms/affiliation.php:158
|
2115 |
+
msgid "Payouts are in USD and processed monthly via PayPal."
|
2116 |
+
msgstr "Payouts are in USD and processed monthly via PayPal."
|
2117 |
+
|
2118 |
+
#: templates/forms/affiliation.php:159
|
2119 |
+
msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
|
2120 |
+
msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days."
|
2121 |
+
|
2122 |
+
#: templates/forms/affiliation.php:162
|
2123 |
+
msgid "Affiliate"
|
2124 |
+
msgstr "Affiliate"
|
2125 |
+
|
2126 |
+
#: templates/forms/affiliation.php165, templates/forms/resend-key.php:23
|
2127 |
+
msgid "Email address"
|
2128 |
+
msgstr "E-mailadresse"
|
2129 |
+
|
2130 |
+
#: templates/forms/affiliation.php:169
|
2131 |
+
msgid "Full name"
|
2132 |
+
msgstr "Fulde navn"
|
2133 |
+
|
2134 |
+
#: templates/forms/affiliation.php:173
|
2135 |
+
msgid "PayPal account email address"
|
2136 |
+
msgstr "E-mailadresse til PayPal-konto"
|
2137 |
+
|
2138 |
+
#: templates/forms/affiliation.php:177
|
2139 |
+
msgid "Where are you going to promote the %s?"
|
2140 |
+
msgstr "Hvor vil du promovere %s?"
|
2141 |
+
|
2142 |
+
#: templates/forms/affiliation.php:179
|
2143 |
+
msgid "Enter the domain of your website or other websites from where you plan to promote the %s."
|
2144 |
+
msgstr "Enter the domain of your website or other websites from where you plan to promote the %s."
|
2145 |
+
|
2146 |
+
#: templates/forms/affiliation.php:181
|
2147 |
+
msgid "Add another domain"
|
2148 |
+
msgstr "Tilføj andet domæne"
|
2149 |
+
|
2150 |
+
#: templates/forms/affiliation.php:185
|
2151 |
+
msgid "Extra Domains"
|
2152 |
+
msgstr "Ekstra domæner"
|
2153 |
+
|
2154 |
+
#: templates/forms/affiliation.php:186
|
2155 |
+
msgid "Extra domains where you will be marketing the product from."
|
2156 |
+
msgstr "Andre domæner du vil markedsføre produktet fra."
|
2157 |
+
|
2158 |
+
#: templates/forms/affiliation.php:196
|
2159 |
+
msgid "Promotion methods"
|
2160 |
+
msgstr "Promoveringsmetoder"
|
2161 |
+
|
2162 |
+
#: templates/forms/affiliation.php:199
|
2163 |
+
msgid "Social media (Facebook, Twitter, etc.)"
|
2164 |
+
msgstr "Sociale medier (Facebook, Twitter osv.)"
|
2165 |
+
|
2166 |
+
#: templates/forms/affiliation.php:203
|
2167 |
+
msgid "Mobile apps"
|
2168 |
+
msgstr "Mobil-apps"
|
2169 |
+
|
2170 |
+
#: templates/forms/affiliation.php:207
|
2171 |
+
msgid "Website, email, and social media statistics (optional)"
|
2172 |
+
msgstr "Websted, e-mail, og statistikker for sociale medier (valgfrit)"
|
2173 |
+
|
2174 |
+
#: templates/forms/affiliation.php:210
|
2175 |
+
msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
|
2176 |
+
msgstr "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)."
|
2177 |
+
|
2178 |
+
#: templates/forms/affiliation.php:214
|
2179 |
+
msgid "How will you promote us?"
|
2180 |
+
msgstr "Hvordan vil du promovere os?"
|
2181 |
+
|
2182 |
+
#: templates/forms/affiliation.php:217
|
2183 |
+
msgid "Please provide details on how you intend to promote %s (please be as specific as possible)."
|
2184 |
+
msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)."
|
2185 |
+
|
2186 |
+
#: templates/forms/affiliation.php223, templates/forms/resend-key.php:22
|
2187 |
+
msgid "Cancel"
|
2188 |
+
msgstr "Annuller"
|
2189 |
+
|
2190 |
+
#: templates/forms/affiliation.php:225
|
2191 |
+
msgid "Become an affiliate"
|
2192 |
+
msgstr "Bliv en affiliate"
|
2193 |
+
|
2194 |
+
#: templates/forms/license-activation.php:20
|
2195 |
+
msgid "Please enter the license key that you received in the email right after the purchase:"
|
2196 |
+
msgstr "Indtast licensnøglen, du modtog i e-mailen lige efter købet:"
|
2197 |
+
|
2198 |
+
#: templates/forms/license-activation.php:25
|
2199 |
+
msgid "Update License"
|
2200 |
+
msgstr "Opdater licens"
|
2201 |
+
|
2202 |
+
#: templates/forms/optout.php:30
|
2203 |
+
msgctxt "verb"
|
2204 |
+
msgid "Opt Out"
|
2205 |
+
msgstr "Frameld"
|
2206 |
+
|
2207 |
+
#: templates/forms/optout.php:31
|
2208 |
+
msgctxt "verb"
|
2209 |
+
msgid "Opt In"
|
2210 |
+
msgstr "Tilmeld"
|
2211 |
+
|
2212 |
+
#: templates/forms/optout.php:33
|
2213 |
+
msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
2214 |
+
msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking."
|
2215 |
+
|
2216 |
+
#: templates/forms/optout.php:35
|
2217 |
+
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
2218 |
+
msgstr "Ved at klikke \"Frameld\" vil vi ikke længere sende data fra %s til %s."
|
2219 |
+
|
2220 |
+
#: templates/forms/premium-versions-upgrade-handler.php:40
|
2221 |
+
msgid "There is a new version of %s available."
|
2222 |
+
msgstr "En ny version af %s er tilgængelig."
|
2223 |
+
|
2224 |
+
#: templates/forms/premium-versions-upgrade-handler.php:41
|
2225 |
+
msgid " %s to access version %s security & feature updates, and support."
|
2226 |
+
msgstr " %s to access version %s security & feature updates, and support."
|
2227 |
+
|
2228 |
+
#: templates/forms/premium-versions-upgrade-handler.php:54
|
2229 |
+
msgid "New Version Available"
|
2230 |
+
msgstr "Ny version tilgængelig"
|
2231 |
+
|
2232 |
+
#: templates/forms/premium-versions-upgrade-handler.php:75
|
2233 |
+
msgctxt "close a window"
|
2234 |
+
msgid "Dismiss"
|
2235 |
+
msgstr "Fjern"
|
2236 |
+
|
2237 |
+
#: templates/forms/resend-key.php:21
|
2238 |
+
msgid "Send License Key"
|
2239 |
+
msgstr "Send licensnøgle"
|
2240 |
+
|
2241 |
+
#: templates/forms/resend-key.php:57
|
2242 |
+
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
2243 |
+
msgstr "Indtast e-mailadressen, som du benyttede ved opgraderingen, nedenfor og vi vil gensende licensnøglen til dig."
|
2244 |
+
|
2245 |
+
#: templates/forms/subscription-cancellation.php:37
|
2246 |
+
msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
|
2247 |
+
msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
|
2248 |
+
|
2249 |
+
#: templates/forms/subscription-cancellation.php:47
|
2250 |
+
msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
|
2251 |
+
msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
|
2252 |
+
|
2253 |
+
#: templates/forms/subscription-cancellation.php:52
|
2254 |
+
msgid "license"
|
2255 |
+
msgstr "license"
|
2256 |
+
|
2257 |
+
#: templates/forms/subscription-cancellation.php:57
|
2258 |
+
msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
|
2259 |
+
msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
|
2260 |
+
|
2261 |
+
#: templates/forms/subscription-cancellation.php:68
|
2262 |
+
msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
|
2263 |
+
msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
|
2264 |
+
|
2265 |
+
#: templates/forms/subscription-cancellation.php:103
|
2266 |
+
msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
|
2267 |
+
msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
|
2268 |
+
|
2269 |
+
#: templates/forms/subscription-cancellation.php:136
|
2270 |
+
msgid "Cancel %s?"
|
2271 |
+
msgstr "Cancel %s?"
|
2272 |
+
|
2273 |
+
#: templates/forms/subscription-cancellation.php:143
|
2274 |
+
msgid "Proceed"
|
2275 |
+
msgstr "Proceed"
|
2276 |
+
|
2277 |
+
#: templates/forms/subscription-cancellation.php191,
|
2278 |
+
#: templates/forms/deactivation/form.php:150
|
2279 |
+
msgid "Cancel %s & Proceed"
|
2280 |
+
msgstr "Cancel %s & Proceed"
|
2281 |
+
|
2282 |
+
#: templates/forms/trial-start.php:22
|
2283 |
+
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
2284 |
+
msgstr "Du er 1 klik fra at begynde din %1$s dages gratis prøveperiode af planen %2$s."
|
2285 |
+
|
2286 |
+
#: templates/forms/trial-start.php:28
|
2287 |
+
msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
|
2288 |
+
msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial."
|
2289 |
+
|
2290 |
+
#: templates/js/style-premium-theme.php:37
|
2291 |
+
msgid "Premium"
|
2292 |
+
msgstr "Premium"
|
2293 |
+
|
2294 |
+
#: templates/partials/network-activation.php:23
|
2295 |
+
msgid "Activate license on all sites in the network."
|
2296 |
+
msgstr "Aktiver licens på alle websteder i netværket."
|
2297 |
+
|
2298 |
+
#: templates/partials/network-activation.php:24
|
2299 |
+
msgid "Apply on all sites in the network."
|
2300 |
+
msgstr "Anvend på alle websteder i netværket."
|
2301 |
+
|
2302 |
+
#: templates/partials/network-activation.php:27
|
2303 |
+
msgid "Activate license on all pending sites."
|
2304 |
+
msgstr "Akiver licens på alle afventende websteder."
|
2305 |
+
|
2306 |
+
#: templates/partials/network-activation.php:28
|
2307 |
+
msgid "Apply on all pending sites."
|
2308 |
+
msgstr "Anvend på alle afventende websteder."
|
2309 |
+
|
2310 |
+
#: templates/partials/network-activation.php36,
|
2311 |
+
#: templates/partials/network-activation.php:68
|
2312 |
+
msgid "allow"
|
2313 |
+
msgstr "tillad"
|
2314 |
+
|
2315 |
+
#: templates/partials/network-activation.php38,
|
2316 |
+
#: templates/partials/network-activation.php:70
|
2317 |
+
msgid "delegate"
|
2318 |
+
msgstr "delegér"
|
2319 |
+
|
2320 |
+
#: templates/partials/network-activation.php41,
|
2321 |
+
#: templates/partials/network-activation.php:73
|
2322 |
+
msgid "skip"
|
2323 |
+
msgstr "spring over"
|
2324 |
+
|
2325 |
+
#: templates/plugin-info/description.php72,
|
2326 |
+
#: templates/plugin-info/screenshots.php:31
|
2327 |
+
msgid "Click to view full-size screenshot %d"
|
2328 |
+
msgstr "Klik for at vise skærmbillede %d i fuld skærm"
|
2329 |
+
|
2330 |
+
#: templates/plugin-info/features.php:56
|
2331 |
+
msgid "Unlimited Updates"
|
2332 |
+
msgstr "Ubegrænsede opdateringer"
|
2333 |
+
|
2334 |
+
#: templates/account/partials/activate-license-button.php:46
|
2335 |
+
msgid "Localhost"
|
2336 |
+
msgstr "Localhost"
|
2337 |
+
|
2338 |
+
#: templates/account/partials/activate-license-button.php:50
|
2339 |
+
msgctxt "as 5 licenses left"
|
2340 |
+
msgid "%s left"
|
2341 |
+
msgstr "%s tilbage"
|
2342 |
+
|
2343 |
+
#: templates/account/partials/activate-license-button.php:51
|
2344 |
+
msgid "Last license"
|
2345 |
+
msgstr "Seneste license"
|
2346 |
+
|
2347 |
+
#: templates/account/partials/addon.php:115
|
2348 |
+
msgid "Cancelled"
|
2349 |
+
msgstr "Annulleret"
|
2350 |
+
|
2351 |
+
#: templates/account/partials/addon.php:125
|
2352 |
+
msgid "No expiration"
|
2353 |
+
msgstr "Udløber ikke"
|
2354 |
+
|
2355 |
+
#: templates/account/partials/addon.php264,
|
2356 |
+
#: templates/account/partials/addon.php:317
|
2357 |
+
msgid "Activate this add-on"
|
2358 |
+
msgstr "Aktiver denne tilføjelse"
|
2359 |
+
|
2360 |
+
#: templates/account/partials/site.php:181
|
2361 |
+
msgid "Owner Name"
|
2362 |
+
msgstr "Ejer-navn"
|
2363 |
+
|
2364 |
+
#: templates/account/partials/site.php:193
|
2365 |
+
msgid "Owner Email"
|
2366 |
+
msgstr "E-mailadresse for ejer"
|
2367 |
+
|
2368 |
+
#: templates/account/partials/site.php:205
|
2369 |
+
msgid "Owner ID"
|
2370 |
+
msgstr "Ejer-ID"
|
2371 |
+
|
2372 |
+
#: templates/account/partials/site.php:270
|
2373 |
+
msgid "Subscription"
|
2374 |
+
msgstr "Abonnement"
|
2375 |
+
|
2376 |
+
#: templates/forms/deactivation/contact.php:19
|
2377 |
+
msgid "Sorry for the inconvenience and we are here to help if you give us a chance."
|
2378 |
+
msgstr "Vi beklager ulejligheden, og vi er her for at hjælpe, hvis du giver os chancen."
|
2379 |
+
|
2380 |
+
#: templates/forms/deactivation/contact.php:22
|
2381 |
+
msgid "Contact Support"
|
2382 |
+
msgstr "Kontakt support"
|
2383 |
+
|
2384 |
+
#: templates/forms/deactivation/form.php:59
|
2385 |
+
msgid "Anonymous feedback"
|
2386 |
+
msgstr "Anonym feedback"
|
2387 |
+
|
2388 |
+
#: templates/forms/deactivation/form.php:66
|
2389 |
+
msgid "Deactivate"
|
2390 |
+
msgstr "Deaktiver"
|
2391 |
+
|
2392 |
+
#: templates/forms/deactivation/form.php:68
|
2393 |
+
msgid "Activate %s"
|
2394 |
+
msgstr "Aktiver %s"
|
2395 |
+
|
2396 |
+
#: templates/forms/deactivation/form.php:80
|
2397 |
+
msgid "Quick Feedback"
|
2398 |
+
msgstr "Quick Feedback"
|
2399 |
+
|
2400 |
+
#: templates/forms/deactivation/form.php:84
|
2401 |
+
msgid "If you have a moment, please let us know why you are %s"
|
2402 |
+
msgstr "Hvis du har tid, så lad os venligst vide hvorfor du %s"
|
2403 |
+
|
2404 |
+
#: templates/forms/deactivation/form.php:84
|
2405 |
+
msgid "deactivating"
|
2406 |
+
msgstr "deaktiverer"
|
2407 |
+
|
2408 |
+
#: templates/forms/deactivation/form.php:84
|
2409 |
+
msgid "switching"
|
2410 |
+
msgstr "skifter"
|
2411 |
+
|
2412 |
+
#: templates/forms/deactivation/form.php:332
|
2413 |
+
msgid "Submit & %s"
|
2414 |
+
msgstr "Send & %s"
|
2415 |
+
|
2416 |
+
#: templates/forms/deactivation/form.php:353
|
2417 |
+
msgid "Kindly tell us the reason so we can improve."
|
2418 |
+
msgstr "Fortæl os venligst årsagen, så vi kan forbedre det."
|
2419 |
+
|
2420 |
+
#: templates/forms/deactivation/form.php:478
|
2421 |
+
msgid "Yes - %s"
|
2422 |
+
msgstr "Ja - %s"
|
2423 |
+
|
2424 |
+
#: templates/forms/deactivation/form.php:485
|
2425 |
+
msgid "Skip & %s"
|
2426 |
+
msgstr "Spring over & %s"
|
2427 |
+
|
2428 |
+
#: templates/forms/deactivation/retry-skip.php:21
|
2429 |
+
msgid "Click here to use the plugin anonymously"
|
2430 |
+
msgstr "Klik her for at benytte pluginnet anonymt"
|
2431 |
+
|
2432 |
+
#: templates/forms/deactivation/retry-skip.php:23
|
2433 |
+
msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in."
|
2434 |
+
msgstr "Du har måske overset det, men du behøver ikke at dele data og kan blot %s tilmeldingen."
|
sdk/freemius/languages/freemius-en.mo
CHANGED
Binary file
|
sdk/freemius/languages/freemius-en.po
CHANGED
@@ -19,1222 +19,1301 @@ msgstr ""
|
|
19 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
20 |
"X-Poedit-SourceCharset: UTF-8\n"
|
21 |
|
22 |
-
#: includes/class-freemius.php:
|
23 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
24 |
msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
25 |
|
26 |
-
#: includes/class-freemius.php:
|
27 |
msgid "Error"
|
28 |
msgstr "Error"
|
29 |
|
30 |
-
#: includes/class-freemius.php:
|
31 |
msgid "I found a better %s"
|
32 |
msgstr "I found a better %s"
|
33 |
|
34 |
-
#: includes/class-freemius.php:
|
35 |
msgid "What's the %s's name?"
|
36 |
msgstr "What's the %s's name?"
|
37 |
|
38 |
-
#: includes/class-freemius.php:
|
39 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
40 |
msgstr "It's a temporary %s. I'm just debugging an issue."
|
41 |
|
42 |
-
#: includes/class-freemius.php:
|
43 |
msgid "Deactivation"
|
44 |
msgstr "Deactivation"
|
45 |
|
46 |
-
#: includes/class-freemius.php:
|
47 |
msgid "Theme Switch"
|
48 |
msgstr "Theme Switch"
|
49 |
|
50 |
-
#: includes/class-freemius.php:
|
51 |
msgid "Other"
|
52 |
msgstr "Other"
|
53 |
|
54 |
-
#: includes/class-freemius.php:
|
55 |
msgid "I no longer need the %s"
|
56 |
msgstr "I no longer need the %s"
|
57 |
|
58 |
-
#: includes/class-freemius.php:
|
59 |
msgid "I only needed the %s for a short period"
|
60 |
msgstr "I only needed the %s for a short period"
|
61 |
|
62 |
-
#: includes/class-freemius.php:
|
63 |
msgid "The %s broke my site"
|
64 |
msgstr "The %s broke my site"
|
65 |
|
66 |
-
#: includes/class-freemius.php:
|
67 |
msgid "The %s suddenly stopped working"
|
68 |
msgstr "The %s suddenly stopped working"
|
69 |
|
70 |
-
#: includes/class-freemius.php:
|
71 |
msgid "I can't pay for it anymore"
|
72 |
msgstr "I can't pay for it anymore"
|
73 |
|
74 |
-
#: includes/class-freemius.php:
|
75 |
msgid "What price would you feel comfortable paying?"
|
76 |
msgstr "What price would you feel comfortable paying?"
|
77 |
|
78 |
-
#: includes/class-freemius.php:
|
79 |
msgid "I don't like to share my information with you"
|
80 |
msgstr "I don't like to share my information with you"
|
81 |
|
82 |
-
#: includes/class-freemius.php:
|
83 |
msgid "The %s didn't work"
|
84 |
msgstr "The %s didn't work"
|
85 |
|
86 |
-
#: includes/class-freemius.php:
|
87 |
msgid "I couldn't understand how to make it work"
|
88 |
msgstr "I couldn't understand how to make it work"
|
89 |
|
90 |
-
#: includes/class-freemius.php:
|
91 |
msgid "The %s is great, but I need specific feature that you don't support"
|
92 |
msgstr "The %s is great, but I need specific feature that you don't support"
|
93 |
|
94 |
-
#: includes/class-freemius.php:
|
95 |
msgid "What feature?"
|
96 |
msgstr "What feature?"
|
97 |
|
98 |
-
#: includes/class-freemius.php:
|
99 |
msgid "The %s is not working"
|
100 |
msgstr "The %s is not working"
|
101 |
|
102 |
-
#: includes/class-freemius.php:
|
103 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
104 |
msgstr "Kindly share what didn't work so we can fix it for future users..."
|
105 |
|
106 |
-
#: includes/class-freemius.php:
|
107 |
msgid "It's not what I was looking for"
|
108 |
msgstr "It's not what I was looking for"
|
109 |
|
110 |
-
#: includes/class-freemius.php:
|
111 |
msgid "What you've been looking for?"
|
112 |
msgstr "What you've been looking for?"
|
113 |
|
114 |
-
#: includes/class-freemius.php:
|
115 |
msgid "The %s didn't work as expected"
|
116 |
msgstr "The %s didn't work as expected"
|
117 |
|
118 |
-
#: includes/class-freemius.php:
|
119 |
msgid "What did you expect?"
|
120 |
msgstr "What did you expect?"
|
121 |
|
122 |
-
#: includes/class-freemius.php:
|
123 |
msgid "Freemius Debug"
|
124 |
msgstr "Freemius Debug"
|
125 |
|
126 |
-
#: includes/class-freemius.php:
|
127 |
msgid "I don't know what is cURL or how to install it, help me!"
|
128 |
msgstr "I don't know what is cURL or how to install it, help me!"
|
129 |
|
130 |
-
#: includes/class-freemius.php:
|
131 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
132 |
msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
133 |
|
134 |
-
#: includes/class-freemius.php:
|
135 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
136 |
msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
137 |
|
138 |
-
#: includes/class-freemius.php:
|
139 |
msgid "Yes - do your thing"
|
140 |
msgstr "Yes - do your thing"
|
141 |
|
142 |
-
#: includes/class-freemius.php:
|
143 |
msgid "No - just deactivate"
|
144 |
msgstr "No - just deactivate"
|
145 |
|
146 |
-
#: includes/class-freemius.php:
|
147 |
msgctxt "exclamation"
|
148 |
msgid "Oops"
|
149 |
msgstr "Oops"
|
150 |
|
151 |
-
#: includes/class-freemius.php:
|
152 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
153 |
msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
154 |
|
155 |
-
#: includes/class-freemius.php:
|
156 |
msgctxt "addonX cannot run without pluginY"
|
157 |
msgid "%s cannot run without %s."
|
158 |
msgstr "%s cannot run without %s."
|
159 |
|
160 |
-
#: includes/class-freemius.php:
|
161 |
msgctxt "addonX cannot run..."
|
162 |
msgid "%s cannot run without the plugin."
|
163 |
msgstr "%s cannot run without the plugin."
|
164 |
|
165 |
-
#: includes/class-freemius.php:
|
166 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
167 |
msgstr "Unexpected API error. Please contact the %s's author with the following error."
|
168 |
|
169 |
-
#: includes/class-freemius.php:
|
170 |
msgid "Premium %s version was successfully activated."
|
171 |
msgstr "Premium %s version was successfully activated."
|
172 |
|
173 |
-
#: includes/class-freemius.php:
|
174 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
175 |
msgid "W00t"
|
176 |
msgstr "W00t"
|
177 |
|
178 |
-
#: includes/class-freemius.php:
|
179 |
msgid "You have a %s license."
|
180 |
msgstr "You have a %s license."
|
181 |
|
182 |
-
#: includes/class-freemius.php:
|
183 |
msgctxt "interjection expressing joy or exuberance"
|
184 |
msgid "Yee-haw"
|
185 |
msgstr "Yee-haw"
|
186 |
|
187 |
-
#: includes/class-freemius.php:
|
188 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
189 |
msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
190 |
|
191 |
-
#: includes/class-freemius.php:
|
192 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
193 |
msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
194 |
|
195 |
-
#: includes/class-freemius.php:
|
196 |
msgid "More information about %s"
|
197 |
msgstr "More information about %s"
|
198 |
|
199 |
-
#: includes/class-freemius.php:
|
200 |
msgid "Purchase License"
|
201 |
msgstr "Purchase License"
|
202 |
|
203 |
-
#: includes/class-freemius.php:
|
204 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
205 |
msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
206 |
|
207 |
-
#: includes/class-freemius.php:
|
208 |
msgid "start the trial"
|
209 |
msgstr "start the trial"
|
210 |
|
211 |
-
#: includes/class-freemius.php:
|
212 |
msgid "complete the install"
|
213 |
msgstr "complete the install"
|
214 |
|
215 |
-
#: includes/class-freemius.php:
|
216 |
msgid "You are just one step away - %s"
|
217 |
msgstr "You are just one step away - %s"
|
218 |
|
219 |
-
#: includes/class-freemius.php:
|
220 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
221 |
msgid "Complete \"%s\" Activation Now"
|
222 |
msgstr "Complete \"%s\" Activation Now"
|
223 |
|
224 |
-
#: includes/class-freemius.php:
|
225 |
msgid "We made a few tweaks to the %s, %s"
|
226 |
msgstr "We made a few tweaks to the %s, %s"
|
227 |
|
228 |
-
#: includes/class-freemius.php:
|
229 |
-
msgid "Opt in to make \"%s\"
|
230 |
-
msgstr "Opt in to make \"%s\"
|
231 |
|
232 |
-
#: includes/class-freemius.php:
|
233 |
msgid "The upgrade of %s was successfully completed."
|
234 |
msgstr "The upgrade of %s was successfully completed."
|
235 |
|
236 |
-
#: includes/class-freemius.php:
|
237 |
msgid "Add-On"
|
238 |
msgstr "Add-On"
|
239 |
|
240 |
-
#: includes/class-freemius.php:
|
241 |
msgid "Plugin"
|
242 |
msgstr "Plugin"
|
243 |
|
244 |
-
#: includes/class-freemius.php:
|
245 |
msgid "Theme"
|
246 |
msgstr "Theme"
|
247 |
|
248 |
-
#: includes/class-freemius.php:
|
249 |
-
msgid "
|
250 |
-
msgstr "
|
251 |
|
252 |
-
#: includes/class-freemius.php:
|
253 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
254 |
msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
|
255 |
|
256 |
-
#: includes/class-freemius.php:
|
257 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
258 |
msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
259 |
|
260 |
-
#: includes/class-freemius.php:
|
261 |
msgid "Account is pending activation."
|
262 |
msgstr "Account is pending activation."
|
263 |
|
264 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
msgid "%s activation was successfully completed."
|
266 |
msgstr "%s activation was successfully completed."
|
267 |
|
268 |
-
#: includes/class-freemius.php:
|
269 |
msgid "Your account was successfully activated with the %s plan."
|
270 |
msgstr "Your account was successfully activated with the %s plan."
|
271 |
|
272 |
-
#: includes/class-freemius.php:
|
273 |
msgid "Your trial has been successfully started."
|
274 |
msgstr "Your trial has been successfully started."
|
275 |
|
276 |
-
#: includes/class-freemius.php:
|
277 |
msgid "Couldn't activate %s."
|
278 |
msgstr "Couldn't activate %s."
|
279 |
|
280 |
-
#: includes/class-freemius.php:
|
281 |
msgid "Please contact us with the following message:"
|
282 |
msgstr "Please contact us with the following message:"
|
283 |
|
284 |
-
#: includes/class-freemius.php:
|
285 |
msgid "Upgrade"
|
286 |
msgstr "Upgrade"
|
287 |
|
288 |
-
#: includes/class-freemius.php:
|
289 |
msgid "Start Trial"
|
290 |
msgstr "Start Trial"
|
291 |
|
292 |
-
#: includes/class-freemius.php:
|
293 |
msgid "Pricing"
|
294 |
msgstr "Pricing"
|
295 |
|
296 |
-
#: includes/class-freemius.php:
|
297 |
msgid "Affiliation"
|
298 |
msgstr "Affiliation"
|
299 |
|
300 |
-
#: includes/class-freemius.php:
|
301 |
msgid "Account"
|
302 |
msgstr "Account"
|
303 |
|
304 |
-
#: includes/class-freemius.php:
|
305 |
msgid "Contact Us"
|
306 |
msgstr "Contact Us"
|
307 |
|
308 |
-
#: includes/class-freemius.php:
|
309 |
msgid "Add-Ons"
|
310 |
msgstr "Add-Ons"
|
311 |
|
312 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
313 |
msgctxt "noun"
|
314 |
msgid "Pricing"
|
315 |
msgstr "Pricing"
|
316 |
|
317 |
-
#: includes/class-freemius.php:
|
318 |
msgid "Support Forum"
|
319 |
msgstr "Support Forum"
|
320 |
|
321 |
-
#: includes/class-freemius.php:
|
322 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
323 |
msgstr "Your email has been successfully verified - you are AWESOME!"
|
324 |
|
325 |
-
#: includes/class-freemius.php:
|
326 |
msgctxt "a positive response"
|
327 |
msgid "Right on"
|
328 |
msgstr "Right on"
|
329 |
|
330 |
-
#: includes/class-freemius.php:
|
331 |
msgid "Your %s Add-on plan was successfully upgraded."
|
332 |
msgstr "Your %s Add-on plan was successfully upgraded."
|
333 |
|
334 |
-
#: includes/class-freemius.php:
|
335 |
msgid "%s Add-on was successfully purchased."
|
336 |
msgstr "%s Add-on was successfully purchased."
|
337 |
|
338 |
-
#: includes/class-freemius.php:
|
339 |
msgid "Download the latest version"
|
340 |
msgstr "Download the latest version"
|
341 |
|
342 |
-
#: includes/class-freemius.php:
|
343 |
msgctxt "%1s - plugin title, %2s - API domain"
|
344 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
345 |
msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
346 |
|
347 |
-
#: includes/class-freemius.php:
|
348 |
msgid "Error received from the server:"
|
349 |
msgstr "Error received from the server:"
|
350 |
|
351 |
-
#: includes/class-freemius.php:
|
352 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
353 |
msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
354 |
|
355 |
-
#: includes/class-freemius.php:
|
356 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
357 |
msgid "Hmm"
|
358 |
msgstr "Hmm"
|
359 |
|
360 |
-
#: includes/class-freemius.php:
|
361 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
362 |
msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
363 |
|
364 |
-
#: includes/class-freemius.php:
|
365 |
msgctxt "trial period"
|
366 |
msgid "Trial"
|
367 |
msgstr "Trial"
|
368 |
|
369 |
-
#: includes/class-freemius.php:
|
370 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
371 |
msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
372 |
|
373 |
-
#: includes/class-freemius.php:
|
374 |
msgid "Please contact us here"
|
375 |
msgstr "Please contact us here"
|
376 |
|
377 |
-
#: includes/class-freemius.php:
|
378 |
msgid "Your plan was successfully upgraded."
|
379 |
msgstr "Your plan was successfully upgraded."
|
380 |
|
381 |
-
#: includes/class-freemius.php:
|
382 |
msgid "Your plan was successfully changed to %s."
|
383 |
msgstr "Your plan was successfully changed to %s."
|
384 |
|
385 |
-
#: includes/class-freemius.php:
|
386 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
387 |
msgstr "Your license has expired. You can still continue using the free %s forever."
|
388 |
|
389 |
-
#: includes/class-freemius.php:
|
390 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
391 |
msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
392 |
|
393 |
-
#: includes/class-freemius.php:
|
394 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
395 |
msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
|
396 |
|
397 |
-
#: includes/class-freemius.php:
|
398 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
399 |
msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
400 |
|
401 |
-
#: includes/class-freemius.php:
|
402 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
403 |
msgstr "Your free trial has expired. You can still continue using all our free features."
|
404 |
|
405 |
-
#: includes/class-freemius.php:
|
406 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
407 |
msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
408 |
|
409 |
-
#: includes/class-freemius.php:
|
410 |
msgid "It looks like the license could not be activated."
|
411 |
msgstr "It looks like the license could not be activated."
|
412 |
|
413 |
-
#: includes/class-freemius.php:
|
414 |
msgid "Your license was successfully activated."
|
415 |
msgstr "Your license was successfully activated."
|
416 |
|
417 |
-
#: includes/class-freemius.php:
|
418 |
msgid "It looks like your site currently doesn't have an active license."
|
419 |
msgstr "It looks like your site currently doesn't have an active license."
|
420 |
|
421 |
-
#: includes/class-freemius.php:
|
422 |
msgid "It looks like the license deactivation failed."
|
423 |
msgstr "It looks like the license deactivation failed."
|
424 |
|
425 |
-
#: includes/class-freemius.php:
|
426 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
427 |
msgstr "Your license was successfully deactivated, you are back to the %s plan."
|
428 |
|
429 |
-
#: includes/class-freemius.php:
|
430 |
msgid "O.K"
|
431 |
msgstr "O.K"
|
432 |
|
433 |
-
#: includes/class-freemius.php:
|
434 |
-
msgid "
|
435 |
-
msgstr "
|
436 |
|
437 |
-
#: includes/class-freemius.php:
|
438 |
-
msgid "
|
439 |
-
msgstr "
|
440 |
|
441 |
-
#: includes/class-freemius.php:
|
442 |
msgid "You are already running the %s in a trial mode."
|
443 |
msgstr "You are already running the %s in a trial mode."
|
444 |
|
445 |
-
#: includes/class-freemius.php:
|
446 |
msgid "You already utilized a trial before."
|
447 |
msgstr "You already utilized a trial before."
|
448 |
|
449 |
-
#: includes/class-freemius.php:
|
450 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
451 |
msgstr "Plan %s do not exist, therefore, can't start a trial."
|
452 |
|
453 |
-
#: includes/class-freemius.php:
|
454 |
msgid "Plan %s does not support a trial period."
|
455 |
msgstr "Plan %s does not support a trial period."
|
456 |
|
457 |
-
#: includes/class-freemius.php:
|
458 |
msgid "None of the %s's plans supports a trial period."
|
459 |
msgstr "None of the %s's plans supports a trial period."
|
460 |
|
461 |
-
#: includes/class-freemius.php:
|
462 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
463 |
msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
464 |
|
465 |
-
#: includes/class-freemius.php:
|
466 |
-
msgid "Your %s free trial was successfully cancelled."
|
467 |
-
msgstr "Your %s free trial was successfully cancelled."
|
468 |
-
|
469 |
-
#: includes/class-freemius.php:17190
|
470 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
471 |
msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
472 |
|
473 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
474 |
msgid "Version %s was released."
|
475 |
msgstr "Version %s was released."
|
476 |
|
477 |
-
#: includes/class-freemius.php:
|
478 |
msgid "Please download %s."
|
479 |
msgstr "Please download %s."
|
480 |
|
481 |
-
#: includes/class-freemius.php:
|
482 |
msgid "the latest %s version here"
|
483 |
msgstr "the latest %s version here"
|
484 |
|
485 |
-
#: includes/class-freemius.php:
|
486 |
msgid "New"
|
487 |
msgstr "New"
|
488 |
|
489 |
-
#: includes/class-freemius.php:
|
490 |
msgid "Seems like you got the latest release."
|
491 |
msgstr "Seems like you got the latest release."
|
492 |
|
493 |
-
#: includes/class-freemius.php:
|
494 |
msgid "You are all good!"
|
495 |
msgstr "You are all good!"
|
496 |
|
497 |
-
#: includes/class-freemius.php:
|
498 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
499 |
msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
500 |
|
501 |
-
#: includes/class-freemius.php:
|
502 |
msgid "Site successfully opted in."
|
503 |
msgstr "Site successfully opted in."
|
504 |
|
505 |
-
#: includes/class-freemius.php:
|
506 |
msgid "Awesome"
|
507 |
msgstr "Awesome"
|
508 |
|
509 |
-
#: includes/class-freemius.php:
|
510 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
511 |
msgstr "We appreciate your help in making the %s better by letting us track some usage data."
|
512 |
|
513 |
-
#: includes/class-freemius.php:
|
514 |
msgid "Thank you!"
|
515 |
msgstr "Thank you!"
|
516 |
|
517 |
-
#: includes/class-freemius.php:
|
518 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
519 |
msgstr "We will no longer be sending any usage data of %s on %s to %s."
|
520 |
|
521 |
-
#: includes/class-freemius.php:
|
522 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
523 |
msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
524 |
|
525 |
-
#: includes/class-freemius.php:
|
526 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
527 |
msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
528 |
|
529 |
-
#: includes/class-freemius.php:
|
530 |
msgid "%s is the new owner of the account."
|
531 |
msgstr "%s is the new owner of the account."
|
532 |
|
533 |
-
#: includes/class-freemius.php:
|
534 |
msgctxt "as congratulations"
|
535 |
msgid "Congrats"
|
536 |
msgstr "Congrats"
|
537 |
|
538 |
-
#: includes/class-freemius.php:
|
539 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
540 |
msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
541 |
|
542 |
-
#: includes/class-freemius.php:
|
543 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
544 |
msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
545 |
|
546 |
-
#: includes/class-freemius.php:
|
547 |
msgid "Change Ownership"
|
548 |
msgstr "Change Ownership"
|
549 |
|
550 |
-
#: includes/class-freemius.php:
|
551 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
552 |
msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
553 |
|
554 |
-
#: includes/class-freemius.php:
|
555 |
msgid "Please provide your full name."
|
556 |
msgstr "Please provide your full name."
|
557 |
|
558 |
-
#: includes/class-freemius.php:
|
559 |
msgid "Your name was successfully updated."
|
560 |
msgstr "Your name was successfully updated."
|
561 |
|
562 |
-
#: includes/class-freemius.php:
|
563 |
msgid "You have successfully updated your %s."
|
564 |
msgstr "You have successfully updated your %s."
|
565 |
|
566 |
-
#: includes/class-freemius.php:
|
567 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
568 |
msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
569 |
|
570 |
-
#: includes/class-freemius.php:
|
571 |
msgctxt "advance notice of something that will need attention."
|
572 |
msgid "Heads up"
|
573 |
msgstr "Heads up"
|
574 |
|
575 |
-
#: includes/class-freemius.php:
|
576 |
msgctxt "exclamation"
|
577 |
msgid "Hey"
|
578 |
msgstr "Hey"
|
579 |
|
580 |
-
#: includes/class-freemius.php:
|
581 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
582 |
msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
583 |
|
584 |
-
#: includes/class-freemius.php:
|
585 |
msgid "No commitment for %s days - cancel anytime!"
|
586 |
msgstr "No commitment for %s days - cancel anytime!"
|
587 |
|
588 |
-
#: includes/class-freemius.php:
|
589 |
msgid "No credit card required"
|
590 |
msgstr "No credit card required"
|
591 |
|
592 |
-
#: includes/class-freemius.php:
|
593 |
msgctxt "call to action"
|
594 |
msgid "Start free trial"
|
595 |
msgstr "Start free trial"
|
596 |
|
597 |
-
#: includes/class-freemius.php:
|
598 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
599 |
msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
600 |
|
601 |
-
#: includes/class-freemius.php:
|
602 |
msgid "Learn more"
|
603 |
msgstr "Learn more"
|
604 |
|
605 |
-
#: includes/class-freemius.php:
|
606 |
msgid "Activate License"
|
607 |
msgstr "Activate License"
|
608 |
|
609 |
-
#: includes/class-freemius.php:
|
610 |
msgid "Change License"
|
611 |
msgstr "Change License"
|
612 |
|
613 |
-
#: includes/class-freemius.php:
|
614 |
msgid "Opt Out"
|
615 |
msgstr "Opt Out"
|
616 |
|
617 |
-
#: includes/class-freemius.php:
|
618 |
msgid "Opt In"
|
619 |
msgstr "Opt In"
|
620 |
|
621 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
622 |
msgid "Please follow these steps to complete the upgrade"
|
623 |
msgstr "Please follow these steps to complete the upgrade"
|
624 |
|
625 |
-
#: includes/class-freemius.php:
|
626 |
msgid "Download the latest %s version"
|
627 |
msgstr "Download the latest %s version"
|
628 |
|
629 |
-
#: includes/class-freemius.php:
|
630 |
msgid "Upload and activate the downloaded version"
|
631 |
msgstr "Upload and activate the downloaded version"
|
632 |
|
633 |
-
#: includes/class-freemius.php:
|
634 |
msgid "How to upload and activate?"
|
635 |
msgstr "How to upload and activate?"
|
636 |
|
637 |
-
#: includes/class-freemius.php:
|
638 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
639 |
msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
|
640 |
|
641 |
-
#: includes/class-freemius.php:
|
642 |
msgid "Auto installation only works for opted-in users."
|
643 |
msgstr "Auto installation only works for opted-in users."
|
644 |
|
645 |
-
#: includes/class-freemius.php:
|
646 |
msgid "Invalid module ID."
|
647 |
msgstr "Invalid module ID."
|
648 |
|
649 |
-
#: includes/class-freemius.php:
|
650 |
msgid "Premium version already active."
|
651 |
msgstr "Premium version already active."
|
652 |
|
653 |
-
#: includes/class-freemius.php:
|
654 |
msgid "You do not have a valid license to access the premium version."
|
655 |
msgstr "You do not have a valid license to access the premium version."
|
656 |
|
657 |
-
#: includes/class-freemius.php:
|
658 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
659 |
msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
660 |
|
661 |
-
#: includes/class-freemius.php:
|
662 |
msgid "Premium add-on version already installed."
|
663 |
msgstr "Premium add-on version already installed."
|
664 |
|
665 |
-
#: includes/class-freemius.php:
|
666 |
msgid "View paid features"
|
667 |
msgstr "View paid features"
|
668 |
|
669 |
-
#: includes/class-freemius.php:
|
670 |
msgid "Thank you so much for using %s and its add-ons!"
|
671 |
msgstr "Thank you so much for using %s and its add-ons!"
|
672 |
|
673 |
-
#: includes/class-freemius.php:
|
674 |
msgid "Thank you so much for using %s!"
|
675 |
msgstr "Thank you so much for using %s!"
|
676 |
|
677 |
-
#: includes/class-freemius.php:
|
678 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
679 |
msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
680 |
|
681 |
-
#: includes/class-freemius.php:
|
682 |
msgid "Thank you so much for using our products!"
|
683 |
msgstr "Thank you so much for using our products!"
|
684 |
|
685 |
-
#: includes/class-freemius.php:
|
686 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
687 |
msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
688 |
|
689 |
-
#: includes/class-freemius.php:
|
690 |
msgid "%s and its add-ons"
|
691 |
msgstr "%s and its add-ons"
|
692 |
|
693 |
-
#: includes/class-freemius.php:
|
694 |
msgid "Products"
|
695 |
msgstr "Products"
|
696 |
|
697 |
-
#: includes/class-freemius.php:
|
698 |
msgid "Yes"
|
699 |
msgstr "Yes"
|
700 |
|
701 |
-
#: includes/class-freemius.php:
|
702 |
msgid "send me security & feature updates, educational content and offers."
|
703 |
msgstr "send me security & feature updates, educational content and offers."
|
704 |
|
705 |
-
#: includes/class-freemius.php:
|
706 |
msgid "No"
|
707 |
msgstr "No"
|
708 |
|
709 |
-
#: includes/class-freemius.php:
|
710 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
711 |
msgstr "do %sNOT%s send me security & feature updates, educational content and offers."
|
712 |
|
713 |
-
#: includes/class-freemius.php:
|
714 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
|
715 |
msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
|
716 |
|
717 |
-
#: includes/class-freemius.php:
|
718 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
719 |
msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
720 |
|
721 |
-
#: includes/class-freemius.php:
|
722 |
msgid "License key is empty."
|
723 |
msgstr "License key is empty."
|
724 |
|
725 |
-
#: includes/class-fs-plugin-updater.php:184,
|
726 |
-
msgid "
|
727 |
-
msgstr "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
728 |
|
729 |
-
#: includes/class-fs-plugin-updater.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
msgid "Installing plugin: %s"
|
731 |
msgstr "Installing plugin: %s"
|
732 |
|
733 |
-
#: includes/class-fs-plugin-updater.php:
|
734 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
735 |
msgstr "Unable to connect to the filesystem. Please confirm your credentials."
|
736 |
|
737 |
-
#: includes/class-fs-plugin-updater.php:
|
738 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
739 |
msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
740 |
|
741 |
-
#: includes/fs-plugin-info-dialog.php:
|
742 |
msgctxt "verb"
|
743 |
msgid "Purchase"
|
744 |
msgstr "Purchase"
|
745 |
|
746 |
-
#: includes/fs-plugin-info-dialog.php:
|
747 |
msgid "Start my free %s"
|
748 |
msgstr "Start my free %s"
|
749 |
|
750 |
-
#: includes/fs-plugin-info-dialog.php:
|
751 |
msgid "Install Free Version Now"
|
752 |
msgstr "Install Free Version Now"
|
753 |
|
754 |
-
#: includes/fs-plugin-info-dialog.php:
|
755 |
msgid "Install Now"
|
756 |
msgstr "Install Now"
|
757 |
|
758 |
-
#: includes/fs-plugin-info-dialog.php:
|
759 |
msgctxt "as download latest version"
|
760 |
msgid "Download Latest Free Version"
|
761 |
msgstr "Download Latest Free Version"
|
762 |
|
763 |
-
#: includes/fs-plugin-info-dialog.php:
|
764 |
msgctxt "as download latest version"
|
765 |
msgid "Download Latest"
|
766 |
msgstr "Download Latest"
|
767 |
|
768 |
-
#: includes/fs-plugin-info-dialog.php:
|
769 |
msgid "Install Free Version Update Now"
|
770 |
msgstr "Install Free Version Update Now"
|
771 |
|
772 |
-
#: includes/fs-plugin-info-dialog.php:
|
773 |
msgid "Install Update Now"
|
774 |
msgstr "Install Update Now"
|
775 |
|
776 |
-
#: includes/fs-plugin-info-dialog.php:
|
777 |
msgid "Newer Free Version (%s) Installed"
|
778 |
msgstr "Newer Free Version (%s) Installed"
|
779 |
|
780 |
-
#: includes/fs-plugin-info-dialog.php:
|
781 |
msgid "Newer Version (%s) Installed"
|
782 |
msgstr "Newer Version (%s) Installed"
|
783 |
|
784 |
-
#: includes/fs-plugin-info-dialog.php:
|
785 |
msgid "Latest Free Version Installed"
|
786 |
msgstr "Latest Free Version Installed"
|
787 |
|
788 |
-
#: includes/fs-plugin-info-dialog.php:
|
789 |
msgid "Latest Version Installed"
|
790 |
msgstr "Latest Version Installed"
|
791 |
|
792 |
-
#: includes/fs-plugin-info-dialog.php:
|
793 |
msgctxt "Plugin installer section title"
|
794 |
msgid "Description"
|
795 |
msgstr "Description"
|
796 |
|
797 |
-
#: includes/fs-plugin-info-dialog.php:
|
798 |
msgctxt "Plugin installer section title"
|
799 |
msgid "Installation"
|
800 |
msgstr "Installation"
|
801 |
|
802 |
-
#: includes/fs-plugin-info-dialog.php:
|
803 |
msgctxt "Plugin installer section title"
|
804 |
msgid "FAQ"
|
805 |
msgstr "FAQ"
|
806 |
|
807 |
-
#: includes/fs-plugin-info-dialog.php:
|
808 |
msgid "Screenshots"
|
809 |
msgstr "Screenshots"
|
810 |
|
811 |
-
#: includes/fs-plugin-info-dialog.php:
|
812 |
msgctxt "Plugin installer section title"
|
813 |
msgid "Changelog"
|
814 |
msgstr "Changelog"
|
815 |
|
816 |
-
#: includes/fs-plugin-info-dialog.php:
|
817 |
msgctxt "Plugin installer section title"
|
818 |
msgid "Reviews"
|
819 |
msgstr "Reviews"
|
820 |
|
821 |
-
#: includes/fs-plugin-info-dialog.php:
|
822 |
msgctxt "Plugin installer section title"
|
823 |
msgid "Other Notes"
|
824 |
msgstr "Other Notes"
|
825 |
|
826 |
-
#: includes/fs-plugin-info-dialog.php:
|
827 |
msgctxt "Plugin installer section title"
|
828 |
msgid "Features & Pricing"
|
829 |
msgstr "Features & Pricing"
|
830 |
|
831 |
-
#: includes/fs-plugin-info-dialog.php:
|
832 |
msgid "Plugin Install"
|
833 |
msgstr "Plugin Install"
|
834 |
|
835 |
-
#: includes/fs-plugin-info-dialog.php:
|
836 |
msgctxt "e.g. Professional Plan"
|
837 |
msgid "%s Plan"
|
838 |
msgstr "%s Plan"
|
839 |
|
840 |
-
#: includes/fs-plugin-info-dialog.php:
|
841 |
msgctxt "e.g. the best product"
|
842 |
msgid "Best"
|
843 |
msgstr "Best"
|
844 |
|
845 |
-
#: includes/fs-plugin-info-dialog.php:
|
846 |
msgctxt "as every month"
|
847 |
msgid "Monthly"
|
848 |
msgstr "Monthly"
|
849 |
|
850 |
-
#: includes/fs-plugin-info-dialog.php:
|
851 |
msgctxt "as once a year"
|
852 |
msgid "Annual"
|
853 |
msgstr "Annual"
|
854 |
|
855 |
-
#: includes/fs-plugin-info-dialog.php:
|
856 |
msgid "Lifetime"
|
857 |
msgstr "Lifetime"
|
858 |
|
859 |
-
#: includes/fs-plugin-info-dialog.php:
|
860 |
msgctxt "e.g. billed monthly"
|
861 |
msgid "Billed %s"
|
862 |
msgstr "Billed %s"
|
863 |
|
864 |
-
#: includes/fs-plugin-info-dialog.php:
|
865 |
msgctxt "as once a year"
|
866 |
msgid "Annually"
|
867 |
msgstr "Annually"
|
868 |
|
869 |
-
#: includes/fs-plugin-info-dialog.php:
|
870 |
msgctxt "as once a year"
|
871 |
msgid "Once"
|
872 |
msgstr "Once"
|
873 |
|
874 |
-
#: includes/fs-plugin-info-dialog.php:
|
875 |
msgid "Single Site License"
|
876 |
msgstr "Single Site License"
|
877 |
|
878 |
-
#: includes/fs-plugin-info-dialog.php:
|
879 |
msgid "Unlimited Licenses"
|
880 |
msgstr "Unlimited Licenses"
|
881 |
|
882 |
-
#: includes/fs-plugin-info-dialog.php:
|
883 |
msgid "Up to %s Sites"
|
884 |
msgstr "Up to %s Sites"
|
885 |
|
886 |
-
#: includes/fs-plugin-info-dialog.php:
|
887 |
msgctxt "as monthly period"
|
888 |
msgid "mo"
|
889 |
msgstr "mo"
|
890 |
|
891 |
-
#: includes/fs-plugin-info-dialog.php:
|
892 |
msgctxt "as annual period"
|
893 |
msgid "year"
|
894 |
msgstr "year"
|
895 |
|
896 |
-
#: includes/fs-plugin-info-dialog.php:
|
897 |
msgctxt "noun"
|
898 |
msgid "Price"
|
899 |
msgstr "Price"
|
900 |
|
901 |
-
#: includes/fs-plugin-info-dialog.php:
|
902 |
msgid "Save %s"
|
903 |
msgstr "Save %s"
|
904 |
|
905 |
-
#: includes/fs-plugin-info-dialog.php:
|
906 |
msgid "No commitment for %s - cancel anytime"
|
907 |
msgstr "No commitment for %s - cancel anytime"
|
908 |
|
909 |
-
#: includes/fs-plugin-info-dialog.php:
|
910 |
msgid "After your free %s, pay as little as %s"
|
911 |
msgstr "After your free %s, pay as little as %s"
|
912 |
|
913 |
-
#: includes/fs-plugin-info-dialog.php:
|
914 |
msgid "Details"
|
915 |
msgstr "Details"
|
916 |
|
917 |
-
#: includes/fs-plugin-info-dialog.php:
|
918 |
msgctxt "product version"
|
919 |
msgid "Version"
|
920 |
msgstr "Version"
|
921 |
|
922 |
-
#: includes/fs-plugin-info-dialog.php:
|
923 |
msgctxt "as the plugin author"
|
924 |
msgid "Author"
|
925 |
msgstr "Author"
|
926 |
|
927 |
-
#: includes/fs-plugin-info-dialog.php:
|
928 |
msgid "Last Updated"
|
929 |
msgstr "Last Updated"
|
930 |
|
931 |
-
#: includes/fs-plugin-info-dialog.php:
|
932 |
msgctxt "x-ago"
|
933 |
msgid "%s ago"
|
934 |
msgstr "%s ago"
|
935 |
|
936 |
-
#: includes/fs-plugin-info-dialog.php:
|
937 |
msgid "Requires WordPress Version"
|
938 |
msgstr "Requires WordPress Version"
|
939 |
|
940 |
-
#: includes/fs-plugin-info-dialog.php:
|
941 |
msgid "%s or higher"
|
942 |
msgstr "%s or higher"
|
943 |
|
944 |
-
#: includes/fs-plugin-info-dialog.php:
|
945 |
msgid "Compatible up to"
|
946 |
msgstr "Compatible up to"
|
947 |
|
948 |
-
#: includes/fs-plugin-info-dialog.php:
|
949 |
msgid "Downloaded"
|
950 |
msgstr "Downloaded"
|
951 |
|
952 |
-
#: includes/fs-plugin-info-dialog.php:
|
953 |
msgid "%s time"
|
954 |
msgstr "%s time"
|
955 |
|
956 |
-
#: includes/fs-plugin-info-dialog.php:
|
957 |
msgid "%s times"
|
958 |
msgstr "%s times"
|
959 |
|
960 |
-
#: includes/fs-plugin-info-dialog.php:
|
961 |
msgid "WordPress.org Plugin Page"
|
962 |
msgstr "WordPress.org Plugin Page"
|
963 |
|
964 |
-
#: includes/fs-plugin-info-dialog.php:
|
965 |
msgid "Plugin Homepage"
|
966 |
msgstr "Plugin Homepage"
|
967 |
|
968 |
-
#: includes/fs-plugin-info-dialog.php:
|
969 |
msgid "Donate to this plugin"
|
970 |
msgstr "Donate to this plugin"
|
971 |
|
972 |
-
#: includes/fs-plugin-info-dialog.php:
|
973 |
msgid "Average Rating"
|
974 |
msgstr "Average Rating"
|
975 |
|
976 |
-
#: includes/fs-plugin-info-dialog.php:
|
977 |
msgid "based on %s"
|
978 |
msgstr "based on %s"
|
979 |
|
980 |
-
#: includes/fs-plugin-info-dialog.php:
|
981 |
msgid "%s rating"
|
982 |
msgstr "%s rating"
|
983 |
|
984 |
-
#: includes/fs-plugin-info-dialog.php:
|
985 |
msgid "%s ratings"
|
986 |
msgstr "%s ratings"
|
987 |
|
988 |
-
#: includes/fs-plugin-info-dialog.php:
|
989 |
msgid "%s star"
|
990 |
msgstr "%s star"
|
991 |
|
992 |
-
#: includes/fs-plugin-info-dialog.php:
|
993 |
msgid "%s stars"
|
994 |
msgstr "%s stars"
|
995 |
|
996 |
-
#: includes/fs-plugin-info-dialog.php:
|
997 |
msgid "Click to see reviews that provided a rating of %s"
|
998 |
msgstr "Click to see reviews that provided a rating of %s"
|
999 |
|
1000 |
-
#: includes/fs-plugin-info-dialog.php:
|
1001 |
msgid "Contributors"
|
1002 |
msgstr "Contributors"
|
1003 |
|
1004 |
-
#: includes/fs-plugin-info-dialog.php:
|
1005 |
msgid "Warning"
|
1006 |
msgstr "Warning"
|
1007 |
|
1008 |
-
#: includes/fs-plugin-info-dialog.php:
|
1009 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1010 |
msgstr "This plugin has not been tested with your current version of WordPress."
|
1011 |
|
1012 |
-
#: includes/fs-plugin-info-dialog.php:
|
1013 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1014 |
msgstr "This plugin has not been marked as compatible with your version of WordPress."
|
1015 |
|
1016 |
-
#: includes/fs-plugin-info-dialog.php:
|
1017 |
msgid "Paid add-on must be deployed to Freemius."
|
1018 |
msgstr "Paid add-on must be deployed to Freemius."
|
1019 |
|
1020 |
-
#: includes/fs-plugin-info-dialog.php:
|
1021 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1022 |
msgstr "Add-on must be deployed to WordPress.org or Freemius."
|
1023 |
|
1024 |
-
#: templates/account.php:81, templates/account/partials/addon.php:22, templates/account/partials/site.php:295
|
1025 |
-
msgid "Downgrading your plan
|
1026 |
-
msgstr "Downgrading your plan
|
|
|
|
|
|
|
|
|
1027 |
|
1028 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1029 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1030 |
msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1031 |
|
1032 |
-
#: templates/account.php:
|
1033 |
-
msgid "You can still enjoy all %s features but you will not have access to %s updates
|
1034 |
-
msgstr "You can still enjoy all %s features but you will not have access to %s updates
|
1035 |
|
1036 |
-
#: templates/account.php:
|
1037 |
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1038 |
msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1039 |
|
1040 |
#. translators: %s: Plan title (e.g. "Professional")
|
1041 |
-
#: templates/account.php:
|
1042 |
msgid "Activate %s Plan"
|
1043 |
msgstr "Activate %s Plan"
|
1044 |
|
1045 |
#. translators: %s: Time period (e.g. Auto renews in "2 months")
|
1046 |
-
#: templates/account.php:
|
1047 |
msgid "Auto renews in %s"
|
1048 |
msgstr "Auto renews in %s"
|
1049 |
|
1050 |
#. translators: %s: Time period (e.g. Expires in "2 months")
|
1051 |
-
#: templates/account.php:
|
1052 |
msgid "Expires in %s"
|
1053 |
msgstr "Expires in %s"
|
1054 |
|
1055 |
-
#: templates/account.php:
|
1056 |
msgctxt "as synchronize license"
|
1057 |
msgid "Sync License"
|
1058 |
msgstr "Sync License"
|
1059 |
|
1060 |
-
#: templates/account.php:
|
1061 |
msgid "Cancel Trial"
|
1062 |
msgstr "Cancel Trial"
|
1063 |
|
1064 |
-
#: templates/account.php:
|
1065 |
msgid "Change Plan"
|
1066 |
msgstr "Change Plan"
|
1067 |
|
1068 |
-
#: templates/account.php:
|
1069 |
msgctxt "verb"
|
1070 |
msgid "Upgrade"
|
1071 |
msgstr "Upgrade"
|
1072 |
|
1073 |
-
#: templates/account.php:
|
1074 |
msgctxt "verb"
|
1075 |
msgid "Downgrade"
|
1076 |
msgstr "Downgrade"
|
1077 |
|
1078 |
-
#: templates/account.php:
|
1079 |
msgid "Free"
|
1080 |
msgstr "Free"
|
1081 |
|
1082 |
-
#: templates/account.php:
|
1083 |
msgid "Activate"
|
1084 |
msgstr "Activate"
|
1085 |
|
1086 |
-
#: templates/account.php:
|
1087 |
msgctxt "as product pricing plan"
|
1088 |
msgid "Plan"
|
1089 |
msgstr "Plan"
|
1090 |
|
1091 |
-
#: templates/account.php:
|
1092 |
msgid "Free Trial"
|
1093 |
msgstr "Free Trial"
|
1094 |
|
1095 |
-
#: templates/account.php:
|
1096 |
msgid "Account Details"
|
1097 |
msgstr "Account Details"
|
1098 |
|
1099 |
-
#: templates/account.php:
|
1100 |
msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1101 |
msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1102 |
|
1103 |
-
#: templates/account.php:
|
1104 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1105 |
msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1106 |
|
1107 |
-
#: templates/account.php:
|
1108 |
msgid "Delete Account"
|
1109 |
msgstr "Delete Account"
|
1110 |
|
1111 |
-
#: templates/account.php:
|
1112 |
msgid "Deactivate License"
|
1113 |
msgstr "Deactivate License"
|
1114 |
|
1115 |
-
#: templates/account.php:
|
1116 |
msgid "Are you sure you want to proceed?"
|
1117 |
msgstr "Are you sure you want to proceed?"
|
1118 |
|
1119 |
-
#: templates/account.php:
|
1120 |
msgid "Cancel Subscription"
|
1121 |
msgstr "Cancel Subscription"
|
1122 |
|
1123 |
-
#: templates/account.php:
|
1124 |
msgctxt "as synchronize"
|
1125 |
msgid "Sync"
|
1126 |
msgstr "Sync"
|
1127 |
|
1128 |
-
#: templates/account.php:
|
1129 |
msgid "Name"
|
1130 |
msgstr "Name"
|
1131 |
|
1132 |
-
#: templates/account.php:
|
1133 |
msgid "Email"
|
1134 |
msgstr "Email"
|
1135 |
|
1136 |
-
#: templates/account.php:
|
1137 |
msgid "User ID"
|
1138 |
msgstr "User ID"
|
1139 |
|
1140 |
-
#: templates/account.php:
|
1141 |
msgid "Site ID"
|
1142 |
msgstr "Site ID"
|
1143 |
|
1144 |
-
#: templates/account.php:
|
1145 |
msgid "No ID"
|
1146 |
msgstr "No ID"
|
1147 |
|
1148 |
-
#: templates/account.php:
|
1149 |
msgid "Public Key"
|
1150 |
msgstr "Public Key"
|
1151 |
|
1152 |
-
#: templates/account.php:
|
1153 |
msgid "Secret Key"
|
1154 |
msgstr "Secret Key"
|
1155 |
|
1156 |
-
#: templates/account.php:
|
1157 |
msgctxt "as secret encryption key missing"
|
1158 |
msgid "No Secret"
|
1159 |
msgstr "No Secret"
|
1160 |
|
1161 |
-
#: templates/account.php:
|
1162 |
msgid "Trial"
|
1163 |
msgstr "Trial"
|
1164 |
|
1165 |
-
#: templates/account.php:
|
1166 |
msgid "License Key"
|
1167 |
msgstr "License Key"
|
1168 |
|
1169 |
-
#: templates/account.php:
|
1170 |
msgid "not verified"
|
1171 |
msgstr "not verified"
|
1172 |
|
1173 |
-
#: templates/account.php:
|
|
|
|
|
|
|
|
|
1174 |
msgid "Premium version"
|
1175 |
msgstr "Premium version"
|
1176 |
|
1177 |
-
#: templates/account.php:
|
1178 |
msgid "Free version"
|
1179 |
msgstr "Free version"
|
1180 |
|
1181 |
-
#: templates/account.php:
|
1182 |
msgid "Verify Email"
|
1183 |
msgstr "Verify Email"
|
1184 |
|
1185 |
-
#: templates/account.php:
|
1186 |
msgid "Download %s Version"
|
1187 |
msgstr "Download %s Version"
|
1188 |
|
1189 |
-
#: templates/account.php:
|
1190 |
msgctxt "verb"
|
1191 |
msgid "Show"
|
1192 |
msgstr "Show"
|
1193 |
|
1194 |
-
#: templates/account.php:
|
1195 |
msgid "What is your %s?"
|
1196 |
msgstr "What is your %s?"
|
1197 |
|
1198 |
-
#: templates/account.php:
|
1199 |
msgctxt "verb"
|
1200 |
msgid "Edit"
|
1201 |
msgstr "Edit"
|
1202 |
|
1203 |
-
#: templates/account.php:
|
1204 |
msgid "Sites"
|
1205 |
msgstr "Sites"
|
1206 |
|
1207 |
-
#: templates/account.php:
|
1208 |
msgid "Search by address"
|
1209 |
msgstr "Search by address"
|
1210 |
|
1211 |
-
#: templates/account.php:
|
1212 |
msgid "ID"
|
1213 |
msgstr "ID"
|
1214 |
|
1215 |
-
#: templates/account.php:
|
1216 |
msgid "Address"
|
1217 |
msgstr "Address"
|
1218 |
|
1219 |
-
#: templates/account.php:
|
1220 |
msgid "License"
|
1221 |
msgstr "License"
|
1222 |
|
1223 |
-
#: templates/account.php:
|
1224 |
msgid "Plan"
|
1225 |
msgstr "Plan"
|
1226 |
|
1227 |
-
#: templates/account.php:
|
1228 |
msgctxt "as software license"
|
1229 |
msgid "License"
|
1230 |
msgstr "License"
|
1231 |
|
1232 |
-
#: templates/account.php:
|
1233 |
msgctxt "verb"
|
1234 |
msgid "Hide"
|
1235 |
msgstr "Hide"
|
1236 |
|
1237 |
-
#: templates/account.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1238 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1239 |
msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1240 |
|
@@ -1246,7 +1325,7 @@ msgstr "Add Ons for %s"
|
|
1246 |
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
1247 |
msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
1248 |
|
1249 |
-
#: templates/add-ons.php:
|
1250 |
msgid "View details"
|
1251 |
msgstr "View details"
|
1252 |
|
@@ -1284,162 +1363,166 @@ msgid "PCI compliant"
|
|
1284 |
msgstr "PCI compliant"
|
1285 |
|
1286 |
#. translators: %s: name (e.g. Hey John,)
|
1287 |
-
#: templates/connect.php:
|
1288 |
msgctxt "greeting"
|
1289 |
msgid "Hey %s,"
|
1290 |
msgstr "Hey %s,"
|
1291 |
|
1292 |
-
#: templates/connect.php:
|
1293 |
msgid "Allow & Continue"
|
1294 |
msgstr "Allow & Continue"
|
1295 |
|
1296 |
-
#: templates/connect.php:
|
1297 |
msgid "Re-send activation email"
|
1298 |
msgstr "Re-send activation email"
|
1299 |
|
1300 |
-
#: templates/connect.php:
|
1301 |
msgid "Thanks %s!"
|
1302 |
msgstr "Thanks %s!"
|
1303 |
|
1304 |
-
#: templates/connect.php:
|
1305 |
msgid "Agree & Activate License"
|
1306 |
msgstr "Agree & Activate License"
|
1307 |
|
1308 |
-
#: templates/connect.php:
|
1309 |
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
1310 |
msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
|
1311 |
|
1312 |
-
#: templates/connect.php:
|
1313 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1314 |
msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1315 |
|
1316 |
-
#: templates/connect.php:
|
1317 |
msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1318 |
msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1319 |
|
1320 |
-
#: templates/connect.php:
|
1321 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1322 |
msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1323 |
|
1324 |
-
#: templates/connect.php:
|
1325 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1326 |
msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1327 |
|
1328 |
-
#: templates/connect.php:
|
1329 |
msgid "We're excited to introduce the Freemius network-level integration."
|
1330 |
msgstr "We're excited to introduce the Freemius network-level integration."
|
1331 |
|
1332 |
-
#: templates/connect.php:
|
1333 |
msgid "During the update process we detected %d site(s) that are still pending license activation."
|
1334 |
msgstr "During the update process we detected %d site(s) that are still pending license activation."
|
1335 |
|
1336 |
-
#: templates/connect.php:
|
1337 |
msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1338 |
msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1339 |
|
1340 |
-
#: templates/connect.php:
|
1341 |
msgid "%s's paid features"
|
1342 |
msgstr "%s's paid features"
|
1343 |
|
1344 |
-
#: templates/connect.php:
|
1345 |
msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1346 |
msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1347 |
|
1348 |
-
#: templates/connect.php:
|
1349 |
msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1350 |
msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1351 |
|
1352 |
-
#: templates/connect.php:
|
1353 |
msgid "License key"
|
1354 |
msgstr "License key"
|
1355 |
|
1356 |
-
#: templates/connect.php:
|
1357 |
msgid "Can't find your license key?"
|
1358 |
msgstr "Can't find your license key?"
|
1359 |
|
1360 |
-
#: templates/connect.php:
|
1361 |
msgctxt "verb"
|
1362 |
msgid "Skip"
|
1363 |
msgstr "Skip"
|
1364 |
|
1365 |
-
#: templates/connect.php:
|
1366 |
msgid "Delegate to Site Admins"
|
1367 |
msgstr "Delegate to Site Admins"
|
1368 |
|
1369 |
-
#: templates/connect.php:
|
1370 |
msgid "If you click it, this decision will be delegated to the sites administrators."
|
1371 |
msgstr "If you click it, this decision will be delegated to the sites administrators."
|
1372 |
|
1373 |
-
#: templates/connect.php:
|
1374 |
msgid "Your Profile Overview"
|
1375 |
msgstr "Your Profile Overview"
|
1376 |
|
1377 |
-
#: templates/connect.php:
|
1378 |
msgid "Name and email address"
|
1379 |
msgstr "Name and email address"
|
1380 |
|
1381 |
-
#: templates/connect.php:
|
1382 |
msgid "Your Site Overview"
|
1383 |
msgstr "Your Site Overview"
|
1384 |
|
1385 |
-
#: templates/connect.php:
|
1386 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
1387 |
msgstr "Site URL, WP version, PHP info, plugins & themes"
|
1388 |
|
1389 |
-
#: templates/connect.php:
|
1390 |
msgid "Admin Notices"
|
1391 |
msgstr "Admin Notices"
|
1392 |
|
1393 |
-
#: templates/connect.php:
|
1394 |
msgid "Updates, announcements, marketing, no spam"
|
1395 |
msgstr "Updates, announcements, marketing, no spam"
|
1396 |
|
1397 |
-
#: templates/connect.php:
|
1398 |
msgid "Current %s Events"
|
1399 |
msgstr "Current %s Events"
|
1400 |
|
1401 |
-
#: templates/connect.php:
|
1402 |
msgid "Activation, deactivation and uninstall"
|
1403 |
msgstr "Activation, deactivation and uninstall"
|
1404 |
|
1405 |
-
#: templates/connect.php:
|
1406 |
msgid "Newsletter"
|
1407 |
msgstr "Newsletter"
|
1408 |
|
1409 |
-
#: templates/connect.php:
|
1410 |
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1411 |
msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1412 |
|
1413 |
-
#: templates/connect.php:
|
1414 |
msgid "What permissions are being granted?"
|
1415 |
msgstr "What permissions are being granted?"
|
1416 |
|
1417 |
-
#: templates/connect.php:
|
1418 |
msgid "Don't have a license key?"
|
1419 |
msgstr "Don't have a license key?"
|
1420 |
|
1421 |
-
#: templates/connect.php:
|
1422 |
msgid "Activate Free Version"
|
1423 |
msgstr "Activate Free Version"
|
1424 |
|
1425 |
-
#: templates/connect.php:
|
1426 |
msgid "Have a license key?"
|
1427 |
msgstr "Have a license key?"
|
1428 |
|
1429 |
-
#: templates/connect.php:
|
1430 |
msgid "Privacy Policy"
|
1431 |
msgstr "Privacy Policy"
|
1432 |
|
1433 |
-
#: templates/connect.php:
|
|
|
|
|
|
|
|
|
1434 |
msgid "Terms of Service"
|
1435 |
msgstr "Terms of Service"
|
1436 |
|
1437 |
-
#: templates/connect.php:
|
1438 |
msgctxt "as in the process of sending an email"
|
1439 |
msgid "Sending email"
|
1440 |
msgstr "Sending email"
|
1441 |
|
1442 |
-
#: templates/connect.php:
|
1443 |
msgctxt "as activating plugin"
|
1444 |
msgid "Activating"
|
1445 |
msgstr "Activating"
|
@@ -1467,7 +1550,7 @@ msgctxt "as code debugging"
|
|
1467 |
msgid "Debugging"
|
1468 |
msgstr "Debugging"
|
1469 |
|
1470 |
-
#: templates/debug.php:54, templates/debug.php:
|
1471 |
msgid "Actions"
|
1472 |
msgstr "Actions"
|
1473 |
|
@@ -1491,194 +1574,198 @@ msgstr "Clear Updates Transients"
|
|
1491 |
msgid "Sync Data From Server"
|
1492 |
msgstr "Sync Data From Server"
|
1493 |
|
1494 |
-
#: templates/debug.php:
|
|
|
|
|
|
|
|
|
1495 |
msgid "Load DB Option"
|
1496 |
msgstr "Load DB Option"
|
1497 |
|
1498 |
-
#: templates/debug.php:
|
1499 |
msgid "Set DB Option"
|
1500 |
msgstr "Set DB Option"
|
1501 |
|
1502 |
-
#: templates/debug.php:
|
1503 |
msgid "Key"
|
1504 |
msgstr "Key"
|
1505 |
|
1506 |
-
#: templates/debug.php:
|
1507 |
msgid "Value"
|
1508 |
msgstr "Value"
|
1509 |
|
1510 |
-
#: templates/debug.php:
|
1511 |
msgctxt "as software development kit versions"
|
1512 |
msgid "SDK Versions"
|
1513 |
msgstr "SDK Versions"
|
1514 |
|
1515 |
-
#: templates/debug.php:
|
1516 |
msgid "SDK Path"
|
1517 |
msgstr "SDK Path"
|
1518 |
|
1519 |
-
#: templates/debug.php:
|
1520 |
msgid "Module Path"
|
1521 |
msgstr "Module Path"
|
1522 |
|
1523 |
-
#: templates/debug.php:
|
1524 |
msgid "Is Active"
|
1525 |
msgstr "Is Active"
|
1526 |
|
1527 |
-
#: templates/debug.php:
|
1528 |
msgid "Plugins"
|
1529 |
msgstr "Plugins"
|
1530 |
|
1531 |
-
#: templates/debug.php:
|
1532 |
msgid "Themes"
|
1533 |
msgstr "Themes"
|
1534 |
|
1535 |
-
#: templates/debug.php:
|
1536 |
msgid "Slug"
|
1537 |
msgstr "Slug"
|
1538 |
|
1539 |
-
#: templates/debug.php:
|
1540 |
msgid "Title"
|
1541 |
msgstr "Title"
|
1542 |
|
1543 |
-
#: templates/debug.php:
|
1544 |
msgctxt "as application program interface"
|
1545 |
msgid "API"
|
1546 |
msgstr "API"
|
1547 |
|
1548 |
-
#: templates/debug.php:
|
1549 |
msgid "Freemius State"
|
1550 |
msgstr "Freemius State"
|
1551 |
|
1552 |
-
#: templates/debug.php:
|
1553 |
msgid "Network Blog"
|
1554 |
msgstr "Network Blog"
|
1555 |
|
1556 |
-
#: templates/debug.php:
|
1557 |
msgid "Network User"
|
1558 |
msgstr "Network User"
|
1559 |
|
1560 |
-
#: templates/debug.php:
|
1561 |
msgctxt "as connection was successful"
|
1562 |
msgid "Connected"
|
1563 |
msgstr "Connected"
|
1564 |
|
1565 |
-
#: templates/debug.php:
|
1566 |
msgctxt "as connection blocked"
|
1567 |
msgid "Blocked"
|
1568 |
msgstr "Blocked"
|
1569 |
|
1570 |
-
#: templates/debug.php:
|
1571 |
-
msgid "Simulate Trial"
|
1572 |
-
msgstr "Simulate Trial"
|
1573 |
|
1574 |
-
#: templates/debug.php:
|
1575 |
msgid "Simulate Network Upgrade"
|
1576 |
msgstr "Simulate Network Upgrade"
|
1577 |
|
1578 |
-
#: templates/debug.php:
|
1579 |
msgid "%s Installs"
|
1580 |
msgstr "%s Installs"
|
1581 |
|
1582 |
-
#: templates/debug.php:
|
1583 |
msgctxt "like websites"
|
1584 |
msgid "Sites"
|
1585 |
msgstr "Sites"
|
1586 |
|
1587 |
-
#: templates/debug.php:
|
1588 |
msgid "Blog ID"
|
1589 |
msgstr "Blog ID"
|
1590 |
|
1591 |
-
#: templates/debug.php:
|
1592 |
msgctxt "verb"
|
1593 |
msgid "Delete"
|
1594 |
msgstr "Delete"
|
1595 |
|
1596 |
-
#: templates/debug.php:
|
1597 |
msgid "Add Ons of module %s"
|
1598 |
msgstr "Add Ons of module %s"
|
1599 |
|
1600 |
-
#: templates/debug.php:
|
1601 |
msgid "Users"
|
1602 |
msgstr "Users"
|
1603 |
|
1604 |
-
#: templates/debug.php:
|
1605 |
msgid "Verified"
|
1606 |
msgstr "Verified"
|
1607 |
|
1608 |
-
#: templates/debug.php:
|
1609 |
msgid "%s Licenses"
|
1610 |
msgstr "%s Licenses"
|
1611 |
|
1612 |
-
#: templates/debug.php:
|
1613 |
msgid "Plugin ID"
|
1614 |
msgstr "Plugin ID"
|
1615 |
|
1616 |
-
#: templates/debug.php:
|
1617 |
msgid "Plan ID"
|
1618 |
msgstr "Plan ID"
|
1619 |
|
1620 |
-
#: templates/debug.php:
|
1621 |
msgid "Quota"
|
1622 |
msgstr "Quota"
|
1623 |
|
1624 |
-
#: templates/debug.php:
|
1625 |
msgid "Activated"
|
1626 |
msgstr "Activated"
|
1627 |
|
1628 |
-
#: templates/debug.php:
|
1629 |
msgid "Blocking"
|
1630 |
msgstr "Blocking"
|
1631 |
|
1632 |
-
#: templates/debug.php:
|
1633 |
msgctxt "as expiration date"
|
1634 |
msgid "Expiration"
|
1635 |
msgstr "Expiration"
|
1636 |
|
1637 |
-
#: templates/debug.php:
|
1638 |
msgid "Debug Log"
|
1639 |
msgstr "Debug Log"
|
1640 |
|
1641 |
-
#: templates/debug.php:
|
1642 |
msgid "All Types"
|
1643 |
msgstr "All Types"
|
1644 |
|
1645 |
-
#: templates/debug.php:
|
1646 |
msgid "All Requests"
|
1647 |
msgstr "All Requests"
|
1648 |
|
1649 |
-
#: templates/debug.php:
|
1650 |
msgid "File"
|
1651 |
msgstr "File"
|
1652 |
|
1653 |
-
#: templates/debug.php:
|
1654 |
msgid "Function"
|
1655 |
msgstr "Function"
|
1656 |
|
1657 |
-
#: templates/debug.php:
|
1658 |
msgid "Process ID"
|
1659 |
msgstr "Process ID"
|
1660 |
|
1661 |
-
#: templates/debug.php:
|
1662 |
msgid "Logger"
|
1663 |
msgstr "Logger"
|
1664 |
|
1665 |
-
#: templates/debug.php:
|
1666 |
msgid "Message"
|
1667 |
msgstr "Message"
|
1668 |
|
1669 |
-
#: templates/debug.php:
|
1670 |
msgid "Filter"
|
1671 |
msgstr "Filter"
|
1672 |
|
1673 |
-
#: templates/debug.php:
|
1674 |
msgid "Download"
|
1675 |
msgstr "Download"
|
1676 |
|
1677 |
-
#: templates/debug.php:
|
1678 |
msgid "Type"
|
1679 |
msgstr "Type"
|
1680 |
|
1681 |
-
#: templates/debug.php:
|
1682 |
msgid "Timestamp"
|
1683 |
msgstr "Timestamp"
|
1684 |
|
@@ -2022,23 +2109,19 @@ msgstr "Usage tracking is done in the name of making %s better. Making a better
|
|
2022 |
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
2023 |
msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
2024 |
|
2025 |
-
#: templates/forms/premium-versions-upgrade-handler.php:
|
2026 |
msgid "There is a new version of %s available."
|
2027 |
msgstr "There is a new version of %s available."
|
2028 |
|
2029 |
-
#: templates/forms/premium-versions-upgrade-handler.php:
|
2030 |
-
msgid " %
|
2031 |
-
msgstr " %
|
2032 |
|
2033 |
-
#: templates/forms/premium-versions-upgrade-handler.php:
|
2034 |
msgid "New Version Available"
|
2035 |
msgstr "New Version Available"
|
2036 |
|
2037 |
-
#: templates/forms/premium-versions-upgrade-handler.php:
|
2038 |
-
msgid "Renew license"
|
2039 |
-
msgstr "Renew license"
|
2040 |
-
|
2041 |
-
#: templates/forms/premium-versions-upgrade-handler.php:53
|
2042 |
msgctxt "close a window"
|
2043 |
msgid "Dismiss"
|
2044 |
msgstr "Dismiss"
|
@@ -2051,6 +2134,42 @@ msgstr "Send License Key"
|
|
2051 |
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
2052 |
msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
2053 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2054 |
#: templates/forms/trial-start.php:22
|
2055 |
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
2056 |
msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
@@ -2112,19 +2231,15 @@ msgstr "%s left"
|
|
2112 |
msgid "Last license"
|
2113 |
msgstr "Last license"
|
2114 |
|
2115 |
-
#: templates/account/partials/addon.php:
|
2116 |
msgid "Cancelled"
|
2117 |
msgstr "Cancelled"
|
2118 |
|
2119 |
-
#: templates/account/partials/addon.php:
|
2120 |
-
msgid "Expired"
|
2121 |
-
msgstr "Expired"
|
2122 |
-
|
2123 |
-
#: templates/account/partials/addon.php:121
|
2124 |
msgid "No expiration"
|
2125 |
msgstr "No expiration"
|
2126 |
|
2127 |
-
#: templates/account/partials/addon.php:
|
2128 |
msgid "Activate this add-on"
|
2129 |
msgstr "Activate this add-on"
|
2130 |
|
@@ -2152,47 +2267,47 @@ msgstr "Sorry for the inconvenience and we are here to help if you give us a cha
|
|
2152 |
msgid "Contact Support"
|
2153 |
msgstr "Contact Support"
|
2154 |
|
2155 |
-
#: templates/forms/deactivation/form.php:
|
2156 |
msgid "Anonymous feedback"
|
2157 |
msgstr "Anonymous feedback"
|
2158 |
|
2159 |
-
#: templates/forms/deactivation/form.php:
|
2160 |
msgid "Deactivate"
|
2161 |
msgstr "Deactivate"
|
2162 |
|
2163 |
-
#: templates/forms/deactivation/form.php:
|
2164 |
msgid "Activate %s"
|
2165 |
msgstr "Activate %s"
|
2166 |
|
2167 |
-
#: templates/forms/deactivation/form.php:76
|
2168 |
-
msgid "Quick feedback"
|
2169 |
-
msgstr "Quick feedback"
|
2170 |
-
|
2171 |
#: templates/forms/deactivation/form.php:80
|
|
|
|
|
|
|
|
|
2172 |
msgid "If you have a moment, please let us know why you are %s"
|
2173 |
msgstr "If you have a moment, please let us know why you are %s"
|
2174 |
|
2175 |
-
#: templates/forms/deactivation/form.php:
|
2176 |
msgid "deactivating"
|
2177 |
msgstr "deactivating"
|
2178 |
|
2179 |
-
#: templates/forms/deactivation/form.php:
|
2180 |
msgid "switching"
|
2181 |
msgstr "switching"
|
2182 |
|
2183 |
-
#: templates/forms/deactivation/form.php:
|
2184 |
msgid "Submit & %s"
|
2185 |
msgstr "Submit & %s"
|
2186 |
|
2187 |
-
#: templates/forms/deactivation/form.php:
|
2188 |
msgid "Kindly tell us the reason so we can improve."
|
2189 |
msgstr "Kindly tell us the reason so we can improve."
|
2190 |
|
2191 |
-
#: templates/forms/deactivation/form.php:
|
2192 |
msgid "Yes - %s"
|
2193 |
msgstr "Yes - %s"
|
2194 |
|
2195 |
-
#: templates/forms/deactivation/form.php:
|
2196 |
msgid "Skip & %s"
|
2197 |
msgstr "Skip & %s"
|
2198 |
|
19 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
20 |
"X-Poedit-SourceCharset: UTF-8\n"
|
21 |
|
22 |
+
#: includes/class-freemius.php:1602
|
23 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
24 |
msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
25 |
|
26 |
+
#: includes/class-freemius.php:1604
|
27 |
msgid "Error"
|
28 |
msgstr "Error"
|
29 |
|
30 |
+
#: includes/class-freemius.php:1925
|
31 |
msgid "I found a better %s"
|
32 |
msgstr "I found a better %s"
|
33 |
|
34 |
+
#: includes/class-freemius.php:1927
|
35 |
msgid "What's the %s's name?"
|
36 |
msgstr "What's the %s's name?"
|
37 |
|
38 |
+
#: includes/class-freemius.php:1933
|
39 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
40 |
msgstr "It's a temporary %s. I'm just debugging an issue."
|
41 |
|
42 |
+
#: includes/class-freemius.php:1935
|
43 |
msgid "Deactivation"
|
44 |
msgstr "Deactivation"
|
45 |
|
46 |
+
#: includes/class-freemius.php:1936
|
47 |
msgid "Theme Switch"
|
48 |
msgstr "Theme Switch"
|
49 |
|
50 |
+
#: includes/class-freemius.php:1945, templates/forms/resend-key.php:24
|
51 |
msgid "Other"
|
52 |
msgstr "Other"
|
53 |
|
54 |
+
#: includes/class-freemius.php:1953
|
55 |
msgid "I no longer need the %s"
|
56 |
msgstr "I no longer need the %s"
|
57 |
|
58 |
+
#: includes/class-freemius.php:1960
|
59 |
msgid "I only needed the %s for a short period"
|
60 |
msgstr "I only needed the %s for a short period"
|
61 |
|
62 |
+
#: includes/class-freemius.php:1966
|
63 |
msgid "The %s broke my site"
|
64 |
msgstr "The %s broke my site"
|
65 |
|
66 |
+
#: includes/class-freemius.php:1973
|
67 |
msgid "The %s suddenly stopped working"
|
68 |
msgstr "The %s suddenly stopped working"
|
69 |
|
70 |
+
#: includes/class-freemius.php:1983
|
71 |
msgid "I can't pay for it anymore"
|
72 |
msgstr "I can't pay for it anymore"
|
73 |
|
74 |
+
#: includes/class-freemius.php:1985
|
75 |
msgid "What price would you feel comfortable paying?"
|
76 |
msgstr "What price would you feel comfortable paying?"
|
77 |
|
78 |
+
#: includes/class-freemius.php:1991
|
79 |
msgid "I don't like to share my information with you"
|
80 |
msgstr "I don't like to share my information with you"
|
81 |
|
82 |
+
#: includes/class-freemius.php:2012
|
83 |
msgid "The %s didn't work"
|
84 |
msgstr "The %s didn't work"
|
85 |
|
86 |
+
#: includes/class-freemius.php:2022
|
87 |
msgid "I couldn't understand how to make it work"
|
88 |
msgstr "I couldn't understand how to make it work"
|
89 |
|
90 |
+
#: includes/class-freemius.php:2030
|
91 |
msgid "The %s is great, but I need specific feature that you don't support"
|
92 |
msgstr "The %s is great, but I need specific feature that you don't support"
|
93 |
|
94 |
+
#: includes/class-freemius.php:2032
|
95 |
msgid "What feature?"
|
96 |
msgstr "What feature?"
|
97 |
|
98 |
+
#: includes/class-freemius.php:2036
|
99 |
msgid "The %s is not working"
|
100 |
msgstr "The %s is not working"
|
101 |
|
102 |
+
#: includes/class-freemius.php:2038
|
103 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
104 |
msgstr "Kindly share what didn't work so we can fix it for future users..."
|
105 |
|
106 |
+
#: includes/class-freemius.php:2042
|
107 |
msgid "It's not what I was looking for"
|
108 |
msgstr "It's not what I was looking for"
|
109 |
|
110 |
+
#: includes/class-freemius.php:2044
|
111 |
msgid "What you've been looking for?"
|
112 |
msgstr "What you've been looking for?"
|
113 |
|
114 |
+
#: includes/class-freemius.php:2048
|
115 |
msgid "The %s didn't work as expected"
|
116 |
msgstr "The %s didn't work as expected"
|
117 |
|
118 |
+
#: includes/class-freemius.php:2050
|
119 |
msgid "What did you expect?"
|
120 |
msgstr "What did you expect?"
|
121 |
|
122 |
+
#: includes/class-freemius.php:2853, templates/debug.php:20
|
123 |
msgid "Freemius Debug"
|
124 |
msgstr "Freemius Debug"
|
125 |
|
126 |
+
#: includes/class-freemius.php:3581
|
127 |
msgid "I don't know what is cURL or how to install it, help me!"
|
128 |
msgstr "I don't know what is cURL or how to install it, help me!"
|
129 |
|
130 |
+
#: includes/class-freemius.php:3583
|
131 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
132 |
msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
133 |
|
134 |
+
#: includes/class-freemius.php:3590
|
135 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
136 |
msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
137 |
|
138 |
+
#: includes/class-freemius.php:3695
|
139 |
msgid "Yes - do your thing"
|
140 |
msgstr "Yes - do your thing"
|
141 |
|
142 |
+
#: includes/class-freemius.php:3700
|
143 |
msgid "No - just deactivate"
|
144 |
msgstr "No - just deactivate"
|
145 |
|
146 |
+
#: includes/class-freemius.php:3745, includes/class-freemius.php:4253, includes/class-freemius.php:5318, includes/class-freemius.php:11316, includes/class-freemius.php:14649, includes/class-freemius.php:14701, includes/class-freemius.php:14763, includes/class-freemius.php:16969, includes/class-freemius.php:16979, includes/class-freemius.php:17588, includes/class-freemius.php:18446, includes/class-freemius.php:18561, includes/class-freemius.php:18705, templates/add-ons.php:43
|
147 |
msgctxt "exclamation"
|
148 |
msgid "Oops"
|
149 |
msgstr "Oops"
|
150 |
|
151 |
+
#: includes/class-freemius.php:3814
|
152 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
153 |
msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
154 |
|
155 |
+
#: includes/class-freemius.php:4250
|
156 |
msgctxt "addonX cannot run without pluginY"
|
157 |
msgid "%s cannot run without %s."
|
158 |
msgstr "%s cannot run without %s."
|
159 |
|
160 |
+
#: includes/class-freemius.php:4251
|
161 |
msgctxt "addonX cannot run..."
|
162 |
msgid "%s cannot run without the plugin."
|
163 |
msgstr "%s cannot run without the plugin."
|
164 |
|
165 |
+
#: includes/class-freemius.php:4363, includes/class-freemius.php:4388, includes/class-freemius.php:17659
|
166 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
167 |
msgstr "Unexpected API error. Please contact the %s's author with the following error."
|
168 |
|
169 |
+
#: includes/class-freemius.php:5006
|
170 |
msgid "Premium %s version was successfully activated."
|
171 |
msgstr "Premium %s version was successfully activated."
|
172 |
|
173 |
+
#: includes/class-freemius.php:5018, includes/class-freemius.php:6862
|
174 |
msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)."
|
175 |
msgid "W00t"
|
176 |
msgstr "W00t"
|
177 |
|
178 |
+
#: includes/class-freemius.php:5033
|
179 |
msgid "You have a %s license."
|
180 |
msgstr "You have a %s license."
|
181 |
|
182 |
+
#: includes/class-freemius.php:5037, includes/class-freemius.php:14070, includes/class-freemius.php:14081, includes/class-freemius.php:16897, includes/class-freemius.php:17197, includes/class-freemius.php:17263, includes/class-freemius.php:17413
|
183 |
msgctxt "interjection expressing joy or exuberance"
|
184 |
msgid "Yee-haw"
|
185 |
msgstr "Yee-haw"
|
186 |
|
187 |
+
#: includes/class-freemius.php:5301
|
188 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
189 |
msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
190 |
|
191 |
+
#: includes/class-freemius.php:5305
|
192 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
193 |
msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
194 |
|
195 |
+
#: includes/class-freemius.php:5314, templates/add-ons.php:103, templates/account/partials/addon.php:288
|
196 |
msgid "More information about %s"
|
197 |
msgstr "More information about %s"
|
198 |
|
199 |
+
#: includes/class-freemius.php:5315
|
200 |
msgid "Purchase License"
|
201 |
msgstr "Purchase License"
|
202 |
|
203 |
+
#: includes/class-freemius.php:6230, templates/connect.php:163
|
204 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
205 |
msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
206 |
|
207 |
+
#: includes/class-freemius.php:6234
|
208 |
msgid "start the trial"
|
209 |
msgstr "start the trial"
|
210 |
|
211 |
+
#: includes/class-freemius.php:6235, templates/connect.php:167
|
212 |
msgid "complete the install"
|
213 |
msgstr "complete the install"
|
214 |
|
215 |
+
#: includes/class-freemius.php:6348
|
216 |
msgid "You are just one step away - %s"
|
217 |
msgstr "You are just one step away - %s"
|
218 |
|
219 |
+
#: includes/class-freemius.php:6351
|
220 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
221 |
msgid "Complete \"%s\" Activation Now"
|
222 |
msgstr "Complete \"%s\" Activation Now"
|
223 |
|
224 |
+
#: includes/class-freemius.php:6429
|
225 |
msgid "We made a few tweaks to the %s, %s"
|
226 |
msgstr "We made a few tweaks to the %s, %s"
|
227 |
|
228 |
+
#: includes/class-freemius.php:6433
|
229 |
+
msgid "Opt in to make \"%s\" better!"
|
230 |
+
msgstr "Opt in to make \"%s\" better!"
|
231 |
|
232 |
+
#: includes/class-freemius.php:6861
|
233 |
msgid "The upgrade of %s was successfully completed."
|
234 |
msgstr "The upgrade of %s was successfully completed."
|
235 |
|
236 |
+
#: includes/class-freemius.php:8705, includes/class-fs-plugin-updater.php:882, includes/class-fs-plugin-updater.php:1077, includes/class-fs-plugin-updater.php:1084, templates/auto-installation.php:32
|
237 |
msgid "Add-On"
|
238 |
msgstr "Add-On"
|
239 |
|
240 |
+
#: includes/class-freemius.php:8707, templates/debug.php:359, templates/debug.php:520
|
241 |
msgid "Plugin"
|
242 |
msgstr "Plugin"
|
243 |
|
244 |
+
#: includes/class-freemius.php:8708, templates/debug.php:359, templates/debug.php:520, templates/forms/deactivation/form.php:67
|
245 |
msgid "Theme"
|
246 |
msgstr "Theme"
|
247 |
|
248 |
+
#: includes/class-freemius.php:11183
|
249 |
+
msgid "Invalid site details collection."
|
250 |
+
msgstr "Invalid site details collection."
|
251 |
|
252 |
+
#: includes/class-freemius.php:11303
|
253 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
254 |
msgstr "We couldn't find your email address in the system, are you sure it's the right address?"
|
255 |
|
256 |
+
#: includes/class-freemius.php:11305
|
257 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
258 |
msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
259 |
|
260 |
+
#: includes/class-freemius.php:11541
|
261 |
msgid "Account is pending activation."
|
262 |
msgstr "Account is pending activation."
|
263 |
|
264 |
+
#: includes/class-freemius.php:11653, templates/forms/premium-versions-upgrade-handler.php:47
|
265 |
+
msgid "Buy a license now"
|
266 |
+
msgstr "Buy a license now"
|
267 |
+
|
268 |
+
#: includes/class-freemius.php:11665, templates/forms/premium-versions-upgrade-handler.php:46
|
269 |
+
msgid "Renew your license now"
|
270 |
+
msgstr "Renew your license now"
|
271 |
+
|
272 |
+
#: includes/class-freemius.php:11669
|
273 |
+
msgid "%s to access version %s security & feature updates, and support."
|
274 |
+
msgstr "%s to access version %s security & feature updates, and support."
|
275 |
+
|
276 |
+
#: includes/class-freemius.php:14052
|
277 |
msgid "%s activation was successfully completed."
|
278 |
msgstr "%s activation was successfully completed."
|
279 |
|
280 |
+
#: includes/class-freemius.php:14066
|
281 |
msgid "Your account was successfully activated with the %s plan."
|
282 |
msgstr "Your account was successfully activated with the %s plan."
|
283 |
|
284 |
+
#: includes/class-freemius.php:14077, includes/class-freemius.php:17259
|
285 |
msgid "Your trial has been successfully started."
|
286 |
msgstr "Your trial has been successfully started."
|
287 |
|
288 |
+
#: includes/class-freemius.php:14647, includes/class-freemius.php:14699, includes/class-freemius.php:14761
|
289 |
msgid "Couldn't activate %s."
|
290 |
msgstr "Couldn't activate %s."
|
291 |
|
292 |
+
#: includes/class-freemius.php:14648, includes/class-freemius.php:14700, includes/class-freemius.php:14762
|
293 |
msgid "Please contact us with the following message:"
|
294 |
msgstr "Please contact us with the following message:"
|
295 |
|
296 |
+
#: includes/class-freemius.php:15111, includes/class-freemius.php:19543
|
297 |
msgid "Upgrade"
|
298 |
msgstr "Upgrade"
|
299 |
|
300 |
+
#: includes/class-freemius.php:15117
|
301 |
msgid "Start Trial"
|
302 |
msgstr "Start Trial"
|
303 |
|
304 |
+
#: includes/class-freemius.php:15119
|
305 |
msgid "Pricing"
|
306 |
msgstr "Pricing"
|
307 |
|
308 |
+
#: includes/class-freemius.php:15181, includes/class-freemius.php:15183
|
309 |
msgid "Affiliation"
|
310 |
msgstr "Affiliation"
|
311 |
|
312 |
+
#: includes/class-freemius.php:15211, includes/class-freemius.php:15213, templates/account.php:150, templates/debug.php:324
|
313 |
msgid "Account"
|
314 |
msgstr "Account"
|
315 |
|
316 |
+
#: includes/class-freemius.php:15226, includes/class-freemius.php:15228, includes/customizer/class-fs-customizer-support-section.php:60
|
317 |
msgid "Contact Us"
|
318 |
msgstr "Contact Us"
|
319 |
|
320 |
+
#: includes/class-freemius.php:15238, includes/class-freemius.php:15240, includes/class-freemius.php:19553, templates/account.php:100, templates/account/partials/addon.php:41
|
321 |
msgid "Add-Ons"
|
322 |
msgstr "Add-Ons"
|
323 |
|
324 |
+
#: includes/class-freemius.php:15274
|
325 |
+
msgctxt "ASCII arrow left icon"
|
326 |
+
msgid "←"
|
327 |
+
msgstr "←"
|
328 |
+
|
329 |
+
#: includes/class-freemius.php:15274
|
330 |
+
msgctxt "ASCII arrow right icon"
|
331 |
+
msgid "➤"
|
332 |
+
msgstr "➤"
|
333 |
+
|
334 |
+
#: includes/class-freemius.php:15276, templates/pricing.php:97
|
335 |
msgctxt "noun"
|
336 |
msgid "Pricing"
|
337 |
msgstr "Pricing"
|
338 |
|
339 |
+
#: includes/class-freemius.php:15479, includes/customizer/class-fs-customizer-support-section.php:67
|
340 |
msgid "Support Forum"
|
341 |
msgstr "Support Forum"
|
342 |
|
343 |
+
#: includes/class-freemius.php:16265
|
344 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
345 |
msgstr "Your email has been successfully verified - you are AWESOME!"
|
346 |
|
347 |
+
#: includes/class-freemius.php:16266
|
348 |
msgctxt "a positive response"
|
349 |
msgid "Right on"
|
350 |
msgstr "Right on"
|
351 |
|
352 |
+
#: includes/class-freemius.php:16888
|
353 |
msgid "Your %s Add-on plan was successfully upgraded."
|
354 |
msgstr "Your %s Add-on plan was successfully upgraded."
|
355 |
|
356 |
+
#: includes/class-freemius.php:16890
|
357 |
msgid "%s Add-on was successfully purchased."
|
358 |
msgstr "%s Add-on was successfully purchased."
|
359 |
|
360 |
+
#: includes/class-freemius.php:16893
|
361 |
msgid "Download the latest version"
|
362 |
msgstr "Download the latest version"
|
363 |
|
364 |
+
#: includes/class-freemius.php:16965
|
365 |
msgctxt "%1s - plugin title, %2s - API domain"
|
366 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
367 |
msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
368 |
|
369 |
+
#: includes/class-freemius.php:16968, includes/class-freemius.php:17384, includes/class-freemius.php:17461
|
370 |
msgid "Error received from the server:"
|
371 |
msgstr "Error received from the server:"
|
372 |
|
373 |
+
#: includes/class-freemius.php:16978
|
374 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
375 |
msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
376 |
|
377 |
+
#: includes/class-freemius.php:17160, includes/class-freemius.php:17389, includes/class-freemius.php:17432, includes/class-freemius.php:17535
|
378 |
msgctxt "something somebody says when they are thinking about what you have just said."
|
379 |
msgid "Hmm"
|
380 |
msgstr "Hmm"
|
381 |
|
382 |
+
#: includes/class-freemius.php:17173
|
383 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
384 |
msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
385 |
|
386 |
+
#: includes/class-freemius.php:17174, templates/account.php:102, templates/add-ons.php:134, templates/account/partials/addon.php:43
|
387 |
msgctxt "trial period"
|
388 |
msgid "Trial"
|
389 |
msgstr "Trial"
|
390 |
|
391 |
+
#: includes/class-freemius.php:17179
|
392 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
393 |
msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
394 |
|
395 |
+
#: includes/class-freemius.php:17183, includes/class-freemius.php:17241
|
396 |
msgid "Please contact us here"
|
397 |
msgstr "Please contact us here"
|
398 |
|
399 |
+
#: includes/class-freemius.php:17193
|
400 |
msgid "Your plan was successfully upgraded."
|
401 |
msgstr "Your plan was successfully upgraded."
|
402 |
|
403 |
+
#: includes/class-freemius.php:17211
|
404 |
msgid "Your plan was successfully changed to %s."
|
405 |
msgstr "Your plan was successfully changed to %s."
|
406 |
|
407 |
+
#: includes/class-freemius.php:17227
|
408 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
409 |
msgstr "Your license has expired. You can still continue using the free %s forever."
|
410 |
|
411 |
+
#: includes/class-freemius.php:17229
|
412 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
413 |
msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
414 |
|
415 |
+
#: includes/class-freemius.php:17237
|
416 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
417 |
msgstr "Your license has been cancelled. If you think it's a mistake, please contact support."
|
418 |
|
419 |
+
#: includes/class-freemius.php:17250
|
420 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
421 |
msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
422 |
|
423 |
+
#: includes/class-freemius.php:17273
|
424 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
425 |
msgstr "Your free trial has expired. You can still continue using all our free features."
|
426 |
|
427 |
+
#: includes/class-freemius.php:17275
|
428 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
429 |
msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
430 |
|
431 |
+
#: includes/class-freemius.php:17380
|
432 |
msgid "It looks like the license could not be activated."
|
433 |
msgstr "It looks like the license could not be activated."
|
434 |
|
435 |
+
#: includes/class-freemius.php:17410
|
436 |
msgid "Your license was successfully activated."
|
437 |
msgstr "Your license was successfully activated."
|
438 |
|
439 |
+
#: includes/class-freemius.php:17436
|
440 |
msgid "It looks like your site currently doesn't have an active license."
|
441 |
msgstr "It looks like your site currently doesn't have an active license."
|
442 |
|
443 |
+
#: includes/class-freemius.php:17460
|
444 |
msgid "It looks like the license deactivation failed."
|
445 |
msgstr "It looks like the license deactivation failed."
|
446 |
|
447 |
+
#: includes/class-freemius.php:17488
|
448 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
449 |
msgstr "Your license was successfully deactivated, you are back to the %s plan."
|
450 |
|
451 |
+
#: includes/class-freemius.php:17489
|
452 |
msgid "O.K"
|
453 |
msgstr "O.K"
|
454 |
|
455 |
+
#: includes/class-freemius.php:17542
|
456 |
+
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
457 |
+
msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
458 |
|
459 |
+
#: includes/class-freemius.php:17551
|
460 |
+
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
461 |
+
msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
462 |
|
463 |
+
#: includes/class-freemius.php:17593
|
464 |
msgid "You are already running the %s in a trial mode."
|
465 |
msgstr "You are already running the %s in a trial mode."
|
466 |
|
467 |
+
#: includes/class-freemius.php:17604
|
468 |
msgid "You already utilized a trial before."
|
469 |
msgstr "You already utilized a trial before."
|
470 |
|
471 |
+
#: includes/class-freemius.php:17618
|
472 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
473 |
msgstr "Plan %s do not exist, therefore, can't start a trial."
|
474 |
|
475 |
+
#: includes/class-freemius.php:17629
|
476 |
msgid "Plan %s does not support a trial period."
|
477 |
msgstr "Plan %s does not support a trial period."
|
478 |
|
479 |
+
#: includes/class-freemius.php:17640
|
480 |
msgid "None of the %s's plans supports a trial period."
|
481 |
msgstr "None of the %s's plans supports a trial period."
|
482 |
|
483 |
+
#: includes/class-freemius.php:17690
|
484 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
485 |
msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
486 |
|
487 |
+
#: includes/class-freemius.php:17726
|
|
|
|
|
|
|
|
|
488 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
489 |
msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
490 |
|
491 |
+
#: includes/class-freemius.php:17745
|
492 |
+
msgid "Your %s free trial was successfully cancelled."
|
493 |
+
msgstr "Your %s free trial was successfully cancelled."
|
494 |
+
|
495 |
+
#: includes/class-freemius.php:18052
|
496 |
msgid "Version %s was released."
|
497 |
msgstr "Version %s was released."
|
498 |
|
499 |
+
#: includes/class-freemius.php:18052
|
500 |
msgid "Please download %s."
|
501 |
msgstr "Please download %s."
|
502 |
|
503 |
+
#: includes/class-freemius.php:18059
|
504 |
msgid "the latest %s version here"
|
505 |
msgstr "the latest %s version here"
|
506 |
|
507 |
+
#: includes/class-freemius.php:18064
|
508 |
msgid "New"
|
509 |
msgstr "New"
|
510 |
|
511 |
+
#: includes/class-freemius.php:18069
|
512 |
msgid "Seems like you got the latest release."
|
513 |
msgstr "Seems like you got the latest release."
|
514 |
|
515 |
+
#: includes/class-freemius.php:18070
|
516 |
msgid "You are all good!"
|
517 |
msgstr "You are all good!"
|
518 |
|
519 |
+
#: includes/class-freemius.php:18338
|
520 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
521 |
msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
522 |
|
523 |
+
#: includes/class-freemius.php:18473
|
524 |
msgid "Site successfully opted in."
|
525 |
msgstr "Site successfully opted in."
|
526 |
|
527 |
+
#: includes/class-freemius.php:18474, includes/class-freemius.php:19285
|
528 |
msgid "Awesome"
|
529 |
msgstr "Awesome"
|
530 |
|
531 |
+
#: includes/class-freemius.php:18490, templates/forms/optout.php:32
|
532 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
533 |
msgstr "We appreciate your help in making the %s better by letting us track some usage data."
|
534 |
|
535 |
+
#: includes/class-freemius.php:18491
|
536 |
msgid "Thank you!"
|
537 |
msgstr "Thank you!"
|
538 |
|
539 |
+
#: includes/class-freemius.php:18498
|
540 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
541 |
msgstr "We will no longer be sending any usage data of %s on %s to %s."
|
542 |
|
543 |
+
#: includes/class-freemius.php:18627
|
544 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
545 |
msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
546 |
|
547 |
+
#: includes/class-freemius.php:18633
|
548 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
549 |
msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
550 |
|
551 |
+
#: includes/class-freemius.php:18638
|
552 |
msgid "%s is the new owner of the account."
|
553 |
msgstr "%s is the new owner of the account."
|
554 |
|
555 |
+
#: includes/class-freemius.php:18640
|
556 |
msgctxt "as congratulations"
|
557 |
msgid "Congrats"
|
558 |
msgstr "Congrats"
|
559 |
|
560 |
+
#: includes/class-freemius.php:18660
|
561 |
msgid "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
562 |
msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered."
|
563 |
|
564 |
+
#: includes/class-freemius.php:18661
|
565 |
msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
566 |
msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button."
|
567 |
|
568 |
+
#: includes/class-freemius.php:18668
|
569 |
msgid "Change Ownership"
|
570 |
msgstr "Change Ownership"
|
571 |
|
572 |
+
#: includes/class-freemius.php:18676
|
573 |
msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
574 |
msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments."
|
575 |
|
576 |
+
#: includes/class-freemius.php:18688
|
577 |
msgid "Please provide your full name."
|
578 |
msgstr "Please provide your full name."
|
579 |
|
580 |
+
#: includes/class-freemius.php:18693
|
581 |
msgid "Your name was successfully updated."
|
582 |
msgstr "Your name was successfully updated."
|
583 |
|
584 |
+
#: includes/class-freemius.php:18754
|
585 |
msgid "You have successfully updated your %s."
|
586 |
msgstr "You have successfully updated your %s."
|
587 |
|
588 |
+
#: includes/class-freemius.php:18894
|
589 |
msgid "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
590 |
msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server."
|
591 |
|
592 |
+
#: includes/class-freemius.php:18895
|
593 |
msgctxt "advance notice of something that will need attention."
|
594 |
msgid "Heads up"
|
595 |
msgstr "Heads up"
|
596 |
|
597 |
+
#: includes/class-freemius.php:19325
|
598 |
msgctxt "exclamation"
|
599 |
msgid "Hey"
|
600 |
msgstr "Hey"
|
601 |
|
602 |
+
#: includes/class-freemius.php:19325
|
603 |
msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
604 |
msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial."
|
605 |
|
606 |
+
#: includes/class-freemius.php:19333
|
607 |
msgid "No commitment for %s days - cancel anytime!"
|
608 |
msgstr "No commitment for %s days - cancel anytime!"
|
609 |
|
610 |
+
#: includes/class-freemius.php:19334
|
611 |
msgid "No credit card required"
|
612 |
msgstr "No credit card required"
|
613 |
|
614 |
+
#: includes/class-freemius.php:19341, templates/forms/trial-start.php:53
|
615 |
msgctxt "call to action"
|
616 |
msgid "Start free trial"
|
617 |
msgstr "Start free trial"
|
618 |
|
619 |
+
#: includes/class-freemius.php:19418
|
620 |
msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
621 |
msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!"
|
622 |
|
623 |
+
#: includes/class-freemius.php:19427
|
624 |
msgid "Learn more"
|
625 |
msgstr "Learn more"
|
626 |
|
627 |
+
#: includes/class-freemius.php:19577, templates/account.php:406, templates/account.php:509, templates/connect.php:171, templates/connect.php:421, templates/forms/license-activation.php:24, templates/account/partials/addon.php:235
|
628 |
msgid "Activate License"
|
629 |
msgstr "Activate License"
|
630 |
|
631 |
+
#: includes/class-freemius.php:19578, templates/account.php:469, templates/account.php:508, templates/account/partials/site.php:256
|
632 |
msgid "Change License"
|
633 |
msgstr "Change License"
|
634 |
|
635 |
+
#: includes/class-freemius.php:19660, templates/account/partials/site.php:161
|
636 |
msgid "Opt Out"
|
637 |
msgstr "Opt Out"
|
638 |
|
639 |
+
#: includes/class-freemius.php:19662, includes/class-freemius.php:19667, templates/account/partials/site.php:43, templates/account/partials/site.php:161
|
640 |
msgid "Opt In"
|
641 |
msgstr "Opt In"
|
642 |
|
643 |
+
#: includes/class-freemius.php:19891
|
644 |
+
msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
|
645 |
+
msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s"
|
646 |
+
|
647 |
+
#: includes/class-freemius.php:19899
|
648 |
+
msgid "Activate %s features"
|
649 |
+
msgstr "Activate %s features"
|
650 |
+
|
651 |
+
#: includes/class-freemius.php:19912
|
652 |
msgid "Please follow these steps to complete the upgrade"
|
653 |
msgstr "Please follow these steps to complete the upgrade"
|
654 |
|
655 |
+
#: includes/class-freemius.php:19916
|
656 |
msgid "Download the latest %s version"
|
657 |
msgstr "Download the latest %s version"
|
658 |
|
659 |
+
#: includes/class-freemius.php:19920
|
660 |
msgid "Upload and activate the downloaded version"
|
661 |
msgstr "Upload and activate the downloaded version"
|
662 |
|
663 |
+
#: includes/class-freemius.php:19922
|
664 |
msgid "How to upload and activate?"
|
665 |
msgstr "How to upload and activate?"
|
666 |
|
667 |
+
#: includes/class-freemius.php:20056
|
668 |
msgid "%sClick here%s to choose the sites where you'd like to activate the license on."
|
669 |
msgstr "%sClick here%s to choose the sites where you'd like to activate the license on."
|
670 |
|
671 |
+
#: includes/class-freemius.php:20217
|
672 |
msgid "Auto installation only works for opted-in users."
|
673 |
msgstr "Auto installation only works for opted-in users."
|
674 |
|
675 |
+
#: includes/class-freemius.php:20227, includes/class-freemius.php:20260, includes/class-fs-plugin-updater.php:1056, includes/class-fs-plugin-updater.php:1070
|
676 |
msgid "Invalid module ID."
|
677 |
msgstr "Invalid module ID."
|
678 |
|
679 |
+
#: includes/class-freemius.php:20236, includes/class-fs-plugin-updater.php:1092
|
680 |
msgid "Premium version already active."
|
681 |
msgstr "Premium version already active."
|
682 |
|
683 |
+
#: includes/class-freemius.php:20243
|
684 |
msgid "You do not have a valid license to access the premium version."
|
685 |
msgstr "You do not have a valid license to access the premium version."
|
686 |
|
687 |
+
#: includes/class-freemius.php:20250
|
688 |
msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
689 |
msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version."
|
690 |
|
691 |
+
#: includes/class-freemius.php:20268, includes/class-fs-plugin-updater.php:1091
|
692 |
msgid "Premium add-on version already installed."
|
693 |
msgstr "Premium add-on version already installed."
|
694 |
|
695 |
+
#: includes/class-freemius.php:20613
|
696 |
msgid "View paid features"
|
697 |
msgstr "View paid features"
|
698 |
|
699 |
+
#: includes/class-freemius.php:20927
|
700 |
msgid "Thank you so much for using %s and its add-ons!"
|
701 |
msgstr "Thank you so much for using %s and its add-ons!"
|
702 |
|
703 |
+
#: includes/class-freemius.php:20928
|
704 |
msgid "Thank you so much for using %s!"
|
705 |
msgstr "Thank you so much for using %s!"
|
706 |
|
707 |
+
#: includes/class-freemius.php:20934
|
708 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
709 |
msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s."
|
710 |
|
711 |
+
#: includes/class-freemius.php:20938
|
712 |
msgid "Thank you so much for using our products!"
|
713 |
msgstr "Thank you so much for using our products!"
|
714 |
|
715 |
+
#: includes/class-freemius.php:20939
|
716 |
msgid "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
717 |
msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them."
|
718 |
|
719 |
+
#: includes/class-freemius.php:20958
|
720 |
msgid "%s and its add-ons"
|
721 |
msgstr "%s and its add-ons"
|
722 |
|
723 |
+
#: includes/class-freemius.php:20967
|
724 |
msgid "Products"
|
725 |
msgstr "Products"
|
726 |
|
727 |
+
#: includes/class-freemius.php:20974, templates/connect.php:272
|
728 |
msgid "Yes"
|
729 |
msgstr "Yes"
|
730 |
|
731 |
+
#: includes/class-freemius.php:20975, templates/connect.php:273
|
732 |
msgid "send me security & feature updates, educational content and offers."
|
733 |
msgstr "send me security & feature updates, educational content and offers."
|
734 |
|
735 |
+
#: includes/class-freemius.php:20976, templates/connect.php:278
|
736 |
msgid "No"
|
737 |
msgstr "No"
|
738 |
|
739 |
+
#: includes/class-freemius.php:20978, templates/connect.php:280
|
740 |
msgid "do %sNOT%s send me security & feature updates, educational content and offers."
|
741 |
msgstr "do %sNOT%s send me security & feature updates, educational content and offers."
|
742 |
|
743 |
+
#: includes/class-freemius.php:20988
|
744 |
msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
|
745 |
msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂"
|
746 |
|
747 |
+
#: includes/class-freemius.php:20990, templates/connect.php:287
|
748 |
msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
749 |
msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:"
|
750 |
|
751 |
+
#: includes/class-freemius.php:21272
|
752 |
msgid "License key is empty."
|
753 |
msgstr "License key is empty."
|
754 |
|
755 |
+
#: includes/class-fs-plugin-updater.php:184, templates/forms/premium-versions-upgrade-handler.php:57
|
756 |
+
msgid "Renew license"
|
757 |
+
msgstr "Renew license"
|
758 |
+
|
759 |
+
#: includes/class-fs-plugin-updater.php:189, templates/forms/premium-versions-upgrade-handler.php:58
|
760 |
+
msgid "Buy license"
|
761 |
+
msgstr "Buy license"
|
762 |
+
|
763 |
+
#: includes/class-fs-plugin-updater.php:278
|
764 |
+
msgid "There is a %s of %s available."
|
765 |
+
msgstr "There is a %s of %s available."
|
766 |
|
767 |
+
#: includes/class-fs-plugin-updater.php:282
|
768 |
+
msgid "new version"
|
769 |
+
msgstr "new version"
|
770 |
+
|
771 |
+
#: includes/class-fs-plugin-updater.php:301
|
772 |
+
msgid "Important Upgrade Notice:"
|
773 |
+
msgstr "Important Upgrade Notice:"
|
774 |
+
|
775 |
+
#: includes/class-fs-plugin-updater.php:1121
|
776 |
msgid "Installing plugin: %s"
|
777 |
msgstr "Installing plugin: %s"
|
778 |
|
779 |
+
#: includes/class-fs-plugin-updater.php:1162
|
780 |
msgid "Unable to connect to the filesystem. Please confirm your credentials."
|
781 |
msgstr "Unable to connect to the filesystem. Please confirm your credentials."
|
782 |
|
783 |
+
#: includes/class-fs-plugin-updater.php:1335
|
784 |
msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
785 |
msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work."
|
786 |
|
787 |
+
#: includes/fs-plugin-info-dialog.php:369, templates/account/partials/addon.php:292
|
788 |
msgctxt "verb"
|
789 |
msgid "Purchase"
|
790 |
msgstr "Purchase"
|
791 |
|
792 |
+
#: includes/fs-plugin-info-dialog.php:372
|
793 |
msgid "Start my free %s"
|
794 |
msgstr "Start my free %s"
|
795 |
|
796 |
+
#: includes/fs-plugin-info-dialog.php:413
|
797 |
msgid "Install Free Version Now"
|
798 |
msgstr "Install Free Version Now"
|
799 |
|
800 |
+
#: includes/fs-plugin-info-dialog.php:414, templates/auto-installation.php:111, templates/account/partials/addon.php:272, templates/account/partials/addon.php:322
|
801 |
msgid "Install Now"
|
802 |
msgstr "Install Now"
|
803 |
|
804 |
+
#: includes/fs-plugin-info-dialog.php:425
|
805 |
msgctxt "as download latest version"
|
806 |
msgid "Download Latest Free Version"
|
807 |
msgstr "Download Latest Free Version"
|
808 |
|
809 |
+
#: includes/fs-plugin-info-dialog.php:426, templates/account.php:80, templates/account/partials/addon.php:21
|
810 |
msgctxt "as download latest version"
|
811 |
msgid "Download Latest"
|
812 |
msgstr "Download Latest"
|
813 |
|
814 |
+
#: includes/fs-plugin-info-dialog.php:436
|
815 |
msgid "Install Free Version Update Now"
|
816 |
msgstr "Install Free Version Update Now"
|
817 |
|
818 |
+
#: includes/fs-plugin-info-dialog.php:437, templates/account.php:460
|
819 |
msgid "Install Update Now"
|
820 |
msgstr "Install Update Now"
|
821 |
|
822 |
+
#: includes/fs-plugin-info-dialog.php:448
|
823 |
msgid "Newer Free Version (%s) Installed"
|
824 |
msgstr "Newer Free Version (%s) Installed"
|
825 |
|
826 |
+
#: includes/fs-plugin-info-dialog.php:449
|
827 |
msgid "Newer Version (%s) Installed"
|
828 |
msgstr "Newer Version (%s) Installed"
|
829 |
|
830 |
+
#: includes/fs-plugin-info-dialog.php:457
|
831 |
msgid "Latest Free Version Installed"
|
832 |
msgstr "Latest Free Version Installed"
|
833 |
|
834 |
+
#: includes/fs-plugin-info-dialog.php:458
|
835 |
msgid "Latest Version Installed"
|
836 |
msgstr "Latest Version Installed"
|
837 |
|
838 |
+
#: includes/fs-plugin-info-dialog.php:613
|
839 |
msgctxt "Plugin installer section title"
|
840 |
msgid "Description"
|
841 |
msgstr "Description"
|
842 |
|
843 |
+
#: includes/fs-plugin-info-dialog.php:614
|
844 |
msgctxt "Plugin installer section title"
|
845 |
msgid "Installation"
|
846 |
msgstr "Installation"
|
847 |
|
848 |
+
#: includes/fs-plugin-info-dialog.php:615
|
849 |
msgctxt "Plugin installer section title"
|
850 |
msgid "FAQ"
|
851 |
msgstr "FAQ"
|
852 |
|
853 |
+
#: includes/fs-plugin-info-dialog.php:616, templates/plugin-info/description.php:55
|
854 |
msgid "Screenshots"
|
855 |
msgstr "Screenshots"
|
856 |
|
857 |
+
#: includes/fs-plugin-info-dialog.php:617
|
858 |
msgctxt "Plugin installer section title"
|
859 |
msgid "Changelog"
|
860 |
msgstr "Changelog"
|
861 |
|
862 |
+
#: includes/fs-plugin-info-dialog.php:618
|
863 |
msgctxt "Plugin installer section title"
|
864 |
msgid "Reviews"
|
865 |
msgstr "Reviews"
|
866 |
|
867 |
+
#: includes/fs-plugin-info-dialog.php:619
|
868 |
msgctxt "Plugin installer section title"
|
869 |
msgid "Other Notes"
|
870 |
msgstr "Other Notes"
|
871 |
|
872 |
+
#: includes/fs-plugin-info-dialog.php:634
|
873 |
msgctxt "Plugin installer section title"
|
874 |
msgid "Features & Pricing"
|
875 |
msgstr "Features & Pricing"
|
876 |
|
877 |
+
#: includes/fs-plugin-info-dialog.php:644
|
878 |
msgid "Plugin Install"
|
879 |
msgstr "Plugin Install"
|
880 |
|
881 |
+
#: includes/fs-plugin-info-dialog.php:716
|
882 |
msgctxt "e.g. Professional Plan"
|
883 |
msgid "%s Plan"
|
884 |
msgstr "%s Plan"
|
885 |
|
886 |
+
#: includes/fs-plugin-info-dialog.php:742
|
887 |
msgctxt "e.g. the best product"
|
888 |
msgid "Best"
|
889 |
msgstr "Best"
|
890 |
|
891 |
+
#: includes/fs-plugin-info-dialog.php:748, includes/fs-plugin-info-dialog.php:768
|
892 |
msgctxt "as every month"
|
893 |
msgid "Monthly"
|
894 |
msgstr "Monthly"
|
895 |
|
896 |
+
#: includes/fs-plugin-info-dialog.php:751
|
897 |
msgctxt "as once a year"
|
898 |
msgid "Annual"
|
899 |
msgstr "Annual"
|
900 |
|
901 |
+
#: includes/fs-plugin-info-dialog.php:754
|
902 |
msgid "Lifetime"
|
903 |
msgstr "Lifetime"
|
904 |
|
905 |
+
#: includes/fs-plugin-info-dialog.php:768, includes/fs-plugin-info-dialog.php:770, includes/fs-plugin-info-dialog.php:772
|
906 |
msgctxt "e.g. billed monthly"
|
907 |
msgid "Billed %s"
|
908 |
msgstr "Billed %s"
|
909 |
|
910 |
+
#: includes/fs-plugin-info-dialog.php:770
|
911 |
msgctxt "as once a year"
|
912 |
msgid "Annually"
|
913 |
msgstr "Annually"
|
914 |
|
915 |
+
#: includes/fs-plugin-info-dialog.php:772
|
916 |
msgctxt "as once a year"
|
917 |
msgid "Once"
|
918 |
msgstr "Once"
|
919 |
|
920 |
+
#: includes/fs-plugin-info-dialog.php:778
|
921 |
msgid "Single Site License"
|
922 |
msgstr "Single Site License"
|
923 |
|
924 |
+
#: includes/fs-plugin-info-dialog.php:780
|
925 |
msgid "Unlimited Licenses"
|
926 |
msgstr "Unlimited Licenses"
|
927 |
|
928 |
+
#: includes/fs-plugin-info-dialog.php:782
|
929 |
msgid "Up to %s Sites"
|
930 |
msgstr "Up to %s Sites"
|
931 |
|
932 |
+
#: includes/fs-plugin-info-dialog.php:792, templates/plugin-info/features.php:82
|
933 |
msgctxt "as monthly period"
|
934 |
msgid "mo"
|
935 |
msgstr "mo"
|
936 |
|
937 |
+
#: includes/fs-plugin-info-dialog.php:799, templates/plugin-info/features.php:80
|
938 |
msgctxt "as annual period"
|
939 |
msgid "year"
|
940 |
msgstr "year"
|
941 |
|
942 |
+
#: includes/fs-plugin-info-dialog.php:853
|
943 |
msgctxt "noun"
|
944 |
msgid "Price"
|
945 |
msgstr "Price"
|
946 |
|
947 |
+
#: includes/fs-plugin-info-dialog.php:901
|
948 |
msgid "Save %s"
|
949 |
msgstr "Save %s"
|
950 |
|
951 |
+
#: includes/fs-plugin-info-dialog.php:911
|
952 |
msgid "No commitment for %s - cancel anytime"
|
953 |
msgstr "No commitment for %s - cancel anytime"
|
954 |
|
955 |
+
#: includes/fs-plugin-info-dialog.php:914
|
956 |
msgid "After your free %s, pay as little as %s"
|
957 |
msgstr "After your free %s, pay as little as %s"
|
958 |
|
959 |
+
#: includes/fs-plugin-info-dialog.php:925
|
960 |
msgid "Details"
|
961 |
msgstr "Details"
|
962 |
|
963 |
+
#: includes/fs-plugin-info-dialog.php:929, templates/account.php:91, templates/debug.php:201, templates/debug.php:238, templates/debug.php:452, templates/account/partials/addon.php:32
|
964 |
msgctxt "product version"
|
965 |
msgid "Version"
|
966 |
msgstr "Version"
|
967 |
|
968 |
+
#: includes/fs-plugin-info-dialog.php:936
|
969 |
msgctxt "as the plugin author"
|
970 |
msgid "Author"
|
971 |
msgstr "Author"
|
972 |
|
973 |
+
#: includes/fs-plugin-info-dialog.php:943
|
974 |
msgid "Last Updated"
|
975 |
msgstr "Last Updated"
|
976 |
|
977 |
+
#: includes/fs-plugin-info-dialog.php:948, templates/account.php:376
|
978 |
msgctxt "x-ago"
|
979 |
msgid "%s ago"
|
980 |
msgstr "%s ago"
|
981 |
|
982 |
+
#: includes/fs-plugin-info-dialog.php:957
|
983 |
msgid "Requires WordPress Version"
|
984 |
msgstr "Requires WordPress Version"
|
985 |
|
986 |
+
#: includes/fs-plugin-info-dialog.php:958
|
987 |
msgid "%s or higher"
|
988 |
msgstr "%s or higher"
|
989 |
|
990 |
+
#: includes/fs-plugin-info-dialog.php:965
|
991 |
msgid "Compatible up to"
|
992 |
msgstr "Compatible up to"
|
993 |
|
994 |
+
#: includes/fs-plugin-info-dialog.php:973
|
995 |
msgid "Downloaded"
|
996 |
msgstr "Downloaded"
|
997 |
|
998 |
+
#: includes/fs-plugin-info-dialog.php:977
|
999 |
msgid "%s time"
|
1000 |
msgstr "%s time"
|
1001 |
|
1002 |
+
#: includes/fs-plugin-info-dialog.php:979
|
1003 |
msgid "%s times"
|
1004 |
msgstr "%s times"
|
1005 |
|
1006 |
+
#: includes/fs-plugin-info-dialog.php:989
|
1007 |
msgid "WordPress.org Plugin Page"
|
1008 |
msgstr "WordPress.org Plugin Page"
|
1009 |
|
1010 |
+
#: includes/fs-plugin-info-dialog.php:997
|
1011 |
msgid "Plugin Homepage"
|
1012 |
msgstr "Plugin Homepage"
|
1013 |
|
1014 |
+
#: includes/fs-plugin-info-dialog.php:1005, includes/fs-plugin-info-dialog.php:1087
|
1015 |
msgid "Donate to this plugin"
|
1016 |
msgstr "Donate to this plugin"
|
1017 |
|
1018 |
+
#: includes/fs-plugin-info-dialog.php:1012
|
1019 |
msgid "Average Rating"
|
1020 |
msgstr "Average Rating"
|
1021 |
|
1022 |
+
#: includes/fs-plugin-info-dialog.php:1019
|
1023 |
msgid "based on %s"
|
1024 |
msgstr "based on %s"
|
1025 |
|
1026 |
+
#: includes/fs-plugin-info-dialog.php:1023
|
1027 |
msgid "%s rating"
|
1028 |
msgstr "%s rating"
|
1029 |
|
1030 |
+
#: includes/fs-plugin-info-dialog.php:1025
|
1031 |
msgid "%s ratings"
|
1032 |
msgstr "%s ratings"
|
1033 |
|
1034 |
+
#: includes/fs-plugin-info-dialog.php:1040
|
1035 |
msgid "%s star"
|
1036 |
msgstr "%s star"
|
1037 |
|
1038 |
+
#: includes/fs-plugin-info-dialog.php:1042
|
1039 |
msgid "%s stars"
|
1040 |
msgstr "%s stars"
|
1041 |
|
1042 |
+
#: includes/fs-plugin-info-dialog.php:1053
|
1043 |
msgid "Click to see reviews that provided a rating of %s"
|
1044 |
msgstr "Click to see reviews that provided a rating of %s"
|
1045 |
|
1046 |
+
#: includes/fs-plugin-info-dialog.php:1066
|
1047 |
msgid "Contributors"
|
1048 |
msgstr "Contributors"
|
1049 |
|
1050 |
+
#: includes/fs-plugin-info-dialog.php:1095, includes/fs-plugin-info-dialog.php:1097
|
1051 |
msgid "Warning"
|
1052 |
msgstr "Warning"
|
1053 |
|
1054 |
+
#: includes/fs-plugin-info-dialog.php:1095
|
1055 |
msgid "This plugin has not been tested with your current version of WordPress."
|
1056 |
msgstr "This plugin has not been tested with your current version of WordPress."
|
1057 |
|
1058 |
+
#: includes/fs-plugin-info-dialog.php:1097
|
1059 |
msgid "This plugin has not been marked as compatible with your version of WordPress."
|
1060 |
msgstr "This plugin has not been marked as compatible with your version of WordPress."
|
1061 |
|
1062 |
+
#: includes/fs-plugin-info-dialog.php:1116
|
1063 |
msgid "Paid add-on must be deployed to Freemius."
|
1064 |
msgstr "Paid add-on must be deployed to Freemius."
|
1065 |
|
1066 |
+
#: includes/fs-plugin-info-dialog.php:1117
|
1067 |
msgid "Add-on must be deployed to WordPress.org or Freemius."
|
1068 |
msgstr "Add-on must be deployed to WordPress.org or Freemius."
|
1069 |
|
1070 |
+
#: templates/account.php:81, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:22, templates/account/partials/site.php:295
|
1071 |
+
msgid "Downgrading your plan"
|
1072 |
+
msgstr "Downgrading your plan"
|
1073 |
+
|
1074 |
+
#: templates/account.php:82, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:23, templates/account/partials/site.php:296
|
1075 |
+
msgid "Cancelling the subscription"
|
1076 |
+
msgstr "Cancelling the subscription"
|
1077 |
|
1078 |
+
#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription'
|
1079 |
+
#: templates/account.php:84, templates/forms/subscription-cancellation.php:99, templates/account/partials/addon.php:25, templates/account/partials/site.php:298
|
1080 |
+
msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
1081 |
+
msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s."
|
1082 |
+
|
1083 |
+
#: templates/account.php:85, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:26, templates/account/partials/site.php:299
|
1084 |
+
msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
|
1085 |
+
msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price."
|
1086 |
+
|
1087 |
+
#: templates/account.php:86, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:27
|
1088 |
msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1089 |
msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?"
|
1090 |
|
1091 |
+
#: templates/account.php:87, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:28, templates/account/partials/site.php:300
|
1092 |
+
msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
|
1093 |
+
msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support."
|
1094 |
|
1095 |
+
#: templates/account.php:88, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:29, templates/account/partials/site.php:301
|
1096 |
msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1097 |
msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features."
|
1098 |
|
1099 |
#. translators: %s: Plan title (e.g. "Professional")
|
1100 |
+
#: templates/account.php:90, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:31
|
1101 |
msgid "Activate %s Plan"
|
1102 |
msgstr "Activate %s Plan"
|
1103 |
|
1104 |
#. translators: %s: Time period (e.g. Auto renews in "2 months")
|
1105 |
+
#: templates/account.php:93, templates/account/partials/addon.php:34, templates/account/partials/site.php:275
|
1106 |
msgid "Auto renews in %s"
|
1107 |
msgstr "Auto renews in %s"
|
1108 |
|
1109 |
#. translators: %s: Time period (e.g. Expires in "2 months")
|
1110 |
+
#: templates/account.php:95, templates/account/partials/addon.php:36, templates/account/partials/site.php:277
|
1111 |
msgid "Expires in %s"
|
1112 |
msgstr "Expires in %s"
|
1113 |
|
1114 |
+
#: templates/account.php:96, templates/account/partials/addon.php:37
|
1115 |
msgctxt "as synchronize license"
|
1116 |
msgid "Sync License"
|
1117 |
msgstr "Sync License"
|
1118 |
|
1119 |
+
#: templates/account.php:97, templates/account/partials/addon.php:38
|
1120 |
msgid "Cancel Trial"
|
1121 |
msgstr "Cancel Trial"
|
1122 |
|
1123 |
+
#: templates/account.php:98, templates/account/partials/addon.php:39
|
1124 |
msgid "Change Plan"
|
1125 |
msgstr "Change Plan"
|
1126 |
|
1127 |
+
#: templates/account.php:99, templates/account/partials/addon.php:40
|
1128 |
msgctxt "verb"
|
1129 |
msgid "Upgrade"
|
1130 |
msgstr "Upgrade"
|
1131 |
|
1132 |
+
#: templates/account.php:101, templates/account/partials/addon.php:42, templates/account/partials/site.php:302
|
1133 |
msgctxt "verb"
|
1134 |
msgid "Downgrade"
|
1135 |
msgstr "Downgrade"
|
1136 |
|
1137 |
+
#: templates/account.php:103, templates/add-ons.php:130, templates/plugin-info/features.php:72, templates/account/partials/addon.php:44, templates/account/partials/site.php:31
|
1138 |
msgid "Free"
|
1139 |
msgstr "Free"
|
1140 |
|
1141 |
+
#: templates/account.php:104, templates/account/partials/addon.php:45
|
1142 |
msgid "Activate"
|
1143 |
msgstr "Activate"
|
1144 |
|
1145 |
+
#: templates/account.php:105, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:46
|
1146 |
msgctxt "as product pricing plan"
|
1147 |
msgid "Plan"
|
1148 |
msgstr "Plan"
|
1149 |
|
1150 |
+
#: templates/account.php:158
|
1151 |
msgid "Free Trial"
|
1152 |
msgstr "Free Trial"
|
1153 |
|
1154 |
+
#: templates/account.php:169
|
1155 |
msgid "Account Details"
|
1156 |
msgstr "Account Details"
|
1157 |
|
1158 |
+
#: templates/account.php:179
|
1159 |
msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1160 |
msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?"
|
1161 |
|
1162 |
+
#: templates/account.php:181
|
1163 |
msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1164 |
msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?"
|
1165 |
|
1166 |
+
#: templates/account.php:184
|
1167 |
msgid "Delete Account"
|
1168 |
msgstr "Delete Account"
|
1169 |
|
1170 |
+
#: templates/account.php:196, templates/account/partials/addon.php:159, templates/account/partials/deactivate-license-button.php:35
|
1171 |
msgid "Deactivate License"
|
1172 |
msgstr "Deactivate License"
|
1173 |
|
1174 |
+
#: templates/account.php:219, templates/forms/subscription-cancellation.php:125
|
1175 |
msgid "Are you sure you want to proceed?"
|
1176 |
msgstr "Are you sure you want to proceed?"
|
1177 |
|
1178 |
+
#: templates/account.php:219, templates/account/partials/addon.php:182
|
1179 |
msgid "Cancel Subscription"
|
1180 |
msgstr "Cancel Subscription"
|
1181 |
|
1182 |
+
#: templates/account.php:247
|
1183 |
msgctxt "as synchronize"
|
1184 |
msgid "Sync"
|
1185 |
msgstr "Sync"
|
1186 |
|
1187 |
+
#: templates/account.php:261, templates/debug.php:487
|
1188 |
msgid "Name"
|
1189 |
msgstr "Name"
|
1190 |
|
1191 |
+
#: templates/account.php:267, templates/debug.php:488
|
1192 |
msgid "Email"
|
1193 |
msgstr "Email"
|
1194 |
|
1195 |
+
#: templates/account.php:274, templates/debug.php:370, templates/debug.php:526
|
1196 |
msgid "User ID"
|
1197 |
msgstr "User ID"
|
1198 |
|
1199 |
+
#: templates/account.php:282
|
1200 |
msgid "Site ID"
|
1201 |
msgstr "Site ID"
|
1202 |
|
1203 |
+
#: templates/account.php:285
|
1204 |
msgid "No ID"
|
1205 |
msgstr "No ID"
|
1206 |
|
1207 |
+
#: templates/account.php:290, templates/debug.php:243, templates/debug.php:372, templates/debug.php:453, templates/debug.php:490, templates/account/partials/site.php:219
|
1208 |
msgid "Public Key"
|
1209 |
msgstr "Public Key"
|
1210 |
|
1211 |
+
#: templates/account.php:296, templates/debug.php:373, templates/debug.php:454, templates/debug.php:491, templates/account/partials/site.php:231
|
1212 |
msgid "Secret Key"
|
1213 |
msgstr "Secret Key"
|
1214 |
|
1215 |
+
#: templates/account.php:299
|
1216 |
msgctxt "as secret encryption key missing"
|
1217 |
msgid "No Secret"
|
1218 |
msgstr "No Secret"
|
1219 |
|
1220 |
+
#: templates/account.php:318, templates/account/partials/site.php:112, templates/account/partials/site.php:114
|
1221 |
msgid "Trial"
|
1222 |
msgstr "Trial"
|
1223 |
|
1224 |
+
#: templates/account.php:337, templates/debug.php:531, templates/account/partials/site.php:248
|
1225 |
msgid "License Key"
|
1226 |
msgstr "License Key"
|
1227 |
|
1228 |
+
#: templates/account.php:367
|
1229 |
msgid "not verified"
|
1230 |
msgstr "not verified"
|
1231 |
|
1232 |
+
#: templates/account.php:376, templates/account/partials/addon.php:120
|
1233 |
+
msgid "Expired"
|
1234 |
+
msgstr "Expired"
|
1235 |
+
|
1236 |
+
#: templates/account.php:428
|
1237 |
msgid "Premium version"
|
1238 |
msgstr "Premium version"
|
1239 |
|
1240 |
+
#: templates/account.php:430
|
1241 |
msgid "Free version"
|
1242 |
msgstr "Free version"
|
1243 |
|
1244 |
+
#: templates/account.php:442
|
1245 |
msgid "Verify Email"
|
1246 |
msgstr "Verify Email"
|
1247 |
|
1248 |
+
#: templates/account.php:453
|
1249 |
msgid "Download %s Version"
|
1250 |
msgstr "Download %s Version"
|
1251 |
|
1252 |
+
#: templates/account.php:467, templates/account.php:649, templates/account/partials/site.php:237, templates/account/partials/site.php:255
|
1253 |
msgctxt "verb"
|
1254 |
msgid "Show"
|
1255 |
msgstr "Show"
|
1256 |
|
1257 |
+
#: templates/account.php:481
|
1258 |
msgid "What is your %s?"
|
1259 |
msgstr "What is your %s?"
|
1260 |
|
1261 |
+
#: templates/account.php:489, templates/account/billing.php:27
|
1262 |
msgctxt "verb"
|
1263 |
msgid "Edit"
|
1264 |
msgstr "Edit"
|
1265 |
|
1266 |
+
#: templates/account.php:502
|
1267 |
msgid "Sites"
|
1268 |
msgstr "Sites"
|
1269 |
|
1270 |
+
#: templates/account.php:513
|
1271 |
msgid "Search by address"
|
1272 |
msgstr "Search by address"
|
1273 |
|
1274 |
+
#: templates/account.php:522, templates/account.php:570, templates/debug.php:236, templates/debug.php:364, templates/debug.php:449, templates/debug.php:486, templates/debug.php:524, templates/debug.php:597, templates/account/payments.php:35, templates/debug/logger.php:21
|
1275 |
msgid "ID"
|
1276 |
msgstr "ID"
|
1277 |
|
1278 |
+
#: templates/account.php:523, templates/debug.php:367
|
1279 |
msgid "Address"
|
1280 |
msgstr "Address"
|
1281 |
|
1282 |
+
#: templates/account.php:524
|
1283 |
msgid "License"
|
1284 |
msgstr "License"
|
1285 |
|
1286 |
+
#: templates/account.php:525
|
1287 |
msgid "Plan"
|
1288 |
msgstr "Plan"
|
1289 |
|
1290 |
+
#: templates/account.php:573
|
1291 |
msgctxt "as software license"
|
1292 |
msgid "License"
|
1293 |
msgstr "License"
|
1294 |
|
1295 |
+
#: templates/account.php:643
|
1296 |
msgctxt "verb"
|
1297 |
msgid "Hide"
|
1298 |
msgstr "Hide"
|
1299 |
|
1300 |
+
#: templates/account.php:686
|
1301 |
+
msgid "Cancelling %s"
|
1302 |
+
msgstr "Cancelling %s"
|
1303 |
+
|
1304 |
+
#: templates/account.php:686, templates/account.php:703, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:117
|
1305 |
+
msgid "trial"
|
1306 |
+
msgstr "trial"
|
1307 |
+
|
1308 |
+
#: templates/account.php:701, templates/forms/deactivation/form.php:134
|
1309 |
+
msgid "Cancelling %s..."
|
1310 |
+
msgstr "Cancelling %s..."
|
1311 |
+
|
1312 |
+
#: templates/account.php:704, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:118
|
1313 |
+
msgid "subscription"
|
1314 |
+
msgstr "subscription"
|
1315 |
+
|
1316 |
+
#: templates/account.php:718
|
1317 |
msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1318 |
msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?"
|
1319 |
|
1325 |
msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
1326 |
msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes."
|
1327 |
|
1328 |
+
#: templates/add-ons.php:139
|
1329 |
msgid "View details"
|
1330 |
msgstr "View details"
|
1331 |
|
1363 |
msgstr "PCI compliant"
|
1364 |
|
1365 |
#. translators: %s: name (e.g. Hey John,)
|
1366 |
+
#: templates/connect.php:112
|
1367 |
msgctxt "greeting"
|
1368 |
msgid "Hey %s,"
|
1369 |
msgstr "Hey %s,"
|
1370 |
|
1371 |
+
#: templates/connect.php:154
|
1372 |
msgid "Allow & Continue"
|
1373 |
msgstr "Allow & Continue"
|
1374 |
|
1375 |
+
#: templates/connect.php:158
|
1376 |
msgid "Re-send activation email"
|
1377 |
msgstr "Re-send activation email"
|
1378 |
|
1379 |
+
#: templates/connect.php:162
|
1380 |
msgid "Thanks %s!"
|
1381 |
msgstr "Thanks %s!"
|
1382 |
|
1383 |
+
#: templates/connect.php:172, templates/forms/license-activation.php:43
|
1384 |
msgid "Agree & Activate License"
|
1385 |
msgstr "Agree & Activate License"
|
1386 |
|
1387 |
+
#: templates/connect.php:181
|
1388 |
msgid "Thanks for purchasing %s! To get started, please enter your license key:"
|
1389 |
msgstr "Thanks for purchasing %s! To get started, please enter your license key:"
|
1390 |
|
1391 |
+
#: templates/connect.php:188
|
1392 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1393 |
msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s."
|
1394 |
|
1395 |
+
#: templates/connect.php:189
|
1396 |
msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1397 |
msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s."
|
1398 |
|
1399 |
+
#: templates/connect.php:195
|
1400 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1401 |
msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1402 |
|
1403 |
+
#: templates/connect.php:196
|
1404 |
msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1405 |
msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine."
|
1406 |
|
1407 |
+
#: templates/connect.php:230
|
1408 |
msgid "We're excited to introduce the Freemius network-level integration."
|
1409 |
msgstr "We're excited to introduce the Freemius network-level integration."
|
1410 |
|
1411 |
+
#: templates/connect.php:233
|
1412 |
msgid "During the update process we detected %d site(s) that are still pending license activation."
|
1413 |
msgstr "During the update process we detected %d site(s) that are still pending license activation."
|
1414 |
|
1415 |
+
#: templates/connect.php:235
|
1416 |
msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1417 |
msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button."
|
1418 |
|
1419 |
+
#: templates/connect.php:237
|
1420 |
msgid "%s's paid features"
|
1421 |
msgstr "%s's paid features"
|
1422 |
|
1423 |
+
#: templates/connect.php:242
|
1424 |
msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1425 |
msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page."
|
1426 |
|
1427 |
+
#: templates/connect.php:244
|
1428 |
msgid "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1429 |
msgstr "During the update process we detected %s site(s) in the network that are still pending your attention."
|
1430 |
|
1431 |
+
#: templates/connect.php:253, templates/forms/license-activation.php:46
|
1432 |
msgid "License key"
|
1433 |
msgstr "License key"
|
1434 |
|
1435 |
+
#: templates/connect.php:256, templates/forms/license-activation.php:19
|
1436 |
msgid "Can't find your license key?"
|
1437 |
msgstr "Can't find your license key?"
|
1438 |
|
1439 |
+
#: templates/connect.php:315, templates/connect.php:630, templates/forms/deactivation/retry-skip.php:20
|
1440 |
msgctxt "verb"
|
1441 |
msgid "Skip"
|
1442 |
msgstr "Skip"
|
1443 |
|
1444 |
+
#: templates/connect.php:318
|
1445 |
msgid "Delegate to Site Admins"
|
1446 |
msgstr "Delegate to Site Admins"
|
1447 |
|
1448 |
+
#: templates/connect.php:318
|
1449 |
msgid "If you click it, this decision will be delegated to the sites administrators."
|
1450 |
msgstr "If you click it, this decision will be delegated to the sites administrators."
|
1451 |
|
1452 |
+
#: templates/connect.php:346
|
1453 |
msgid "Your Profile Overview"
|
1454 |
msgstr "Your Profile Overview"
|
1455 |
|
1456 |
+
#: templates/connect.php:347
|
1457 |
msgid "Name and email address"
|
1458 |
msgstr "Name and email address"
|
1459 |
|
1460 |
+
#: templates/connect.php:352
|
1461 |
msgid "Your Site Overview"
|
1462 |
msgstr "Your Site Overview"
|
1463 |
|
1464 |
+
#: templates/connect.php:353
|
1465 |
msgid "Site URL, WP version, PHP info, plugins & themes"
|
1466 |
msgstr "Site URL, WP version, PHP info, plugins & themes"
|
1467 |
|
1468 |
+
#: templates/connect.php:358
|
1469 |
msgid "Admin Notices"
|
1470 |
msgstr "Admin Notices"
|
1471 |
|
1472 |
+
#: templates/connect.php:359, templates/connect.php:375
|
1473 |
msgid "Updates, announcements, marketing, no spam"
|
1474 |
msgstr "Updates, announcements, marketing, no spam"
|
1475 |
|
1476 |
+
#: templates/connect.php:364
|
1477 |
msgid "Current %s Events"
|
1478 |
msgstr "Current %s Events"
|
1479 |
|
1480 |
+
#: templates/connect.php:365
|
1481 |
msgid "Activation, deactivation and uninstall"
|
1482 |
msgstr "Activation, deactivation and uninstall"
|
1483 |
|
1484 |
+
#: templates/connect.php:374
|
1485 |
msgid "Newsletter"
|
1486 |
msgstr "Newsletter"
|
1487 |
|
1488 |
+
#: templates/connect.php:391, templates/forms/license-activation.php:38
|
1489 |
msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1490 |
msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license."
|
1491 |
|
1492 |
+
#: templates/connect.php:396
|
1493 |
msgid "What permissions are being granted?"
|
1494 |
msgstr "What permissions are being granted?"
|
1495 |
|
1496 |
+
#: templates/connect.php:417
|
1497 |
msgid "Don't have a license key?"
|
1498 |
msgstr "Don't have a license key?"
|
1499 |
|
1500 |
+
#: templates/connect.php:418
|
1501 |
msgid "Activate Free Version"
|
1502 |
msgstr "Activate Free Version"
|
1503 |
|
1504 |
+
#: templates/connect.php:420
|
1505 |
msgid "Have a license key?"
|
1506 |
msgstr "Have a license key?"
|
1507 |
|
1508 |
+
#: templates/connect.php:428
|
1509 |
msgid "Privacy Policy"
|
1510 |
msgstr "Privacy Policy"
|
1511 |
|
1512 |
+
#: templates/connect.php:430
|
1513 |
+
msgid "License Agreement"
|
1514 |
+
msgstr "License Agreement"
|
1515 |
+
|
1516 |
+
#: templates/connect.php:430
|
1517 |
msgid "Terms of Service"
|
1518 |
msgstr "Terms of Service"
|
1519 |
|
1520 |
+
#: templates/connect.php:766
|
1521 |
msgctxt "as in the process of sending an email"
|
1522 |
msgid "Sending email"
|
1523 |
msgstr "Sending email"
|
1524 |
|
1525 |
+
#: templates/connect.php:767
|
1526 |
msgctxt "as activating plugin"
|
1527 |
msgid "Activating"
|
1528 |
msgstr "Activating"
|
1550 |
msgid "Debugging"
|
1551 |
msgstr "Debugging"
|
1552 |
|
1553 |
+
#: templates/debug.php:54, templates/debug.php:248, templates/debug.php:374, templates/debug.php:492
|
1554 |
msgid "Actions"
|
1555 |
msgstr "Actions"
|
1556 |
|
1574 |
msgid "Sync Data From Server"
|
1575 |
msgstr "Sync Data From Server"
|
1576 |
|
1577 |
+
#: templates/debug.php:95
|
1578 |
+
msgid "Migrate Options to Network"
|
1579 |
+
msgstr "Migrate Options to Network"
|
1580 |
+
|
1581 |
+
#: templates/debug.php:100
|
1582 |
msgid "Load DB Option"
|
1583 |
msgstr "Load DB Option"
|
1584 |
|
1585 |
+
#: templates/debug.php:103
|
1586 |
msgid "Set DB Option"
|
1587 |
msgstr "Set DB Option"
|
1588 |
|
1589 |
+
#: templates/debug.php:180
|
1590 |
msgid "Key"
|
1591 |
msgstr "Key"
|
1592 |
|
1593 |
+
#: templates/debug.php:181
|
1594 |
msgid "Value"
|
1595 |
msgstr "Value"
|
1596 |
|
1597 |
+
#: templates/debug.php:197
|
1598 |
msgctxt "as software development kit versions"
|
1599 |
msgid "SDK Versions"
|
1600 |
msgstr "SDK Versions"
|
1601 |
|
1602 |
+
#: templates/debug.php:202
|
1603 |
msgid "SDK Path"
|
1604 |
msgstr "SDK Path"
|
1605 |
|
1606 |
+
#: templates/debug.php:203, templates/debug.php:242
|
1607 |
msgid "Module Path"
|
1608 |
msgstr "Module Path"
|
1609 |
|
1610 |
+
#: templates/debug.php:204
|
1611 |
msgid "Is Active"
|
1612 |
msgstr "Is Active"
|
1613 |
|
1614 |
+
#: templates/debug.php:232, templates/debug/plugins-themes-sync.php:35
|
1615 |
msgid "Plugins"
|
1616 |
msgstr "Plugins"
|
1617 |
|
1618 |
+
#: templates/debug.php:232, templates/debug/plugins-themes-sync.php:56
|
1619 |
msgid "Themes"
|
1620 |
msgstr "Themes"
|
1621 |
|
1622 |
+
#: templates/debug.php:237, templates/debug.php:369, templates/debug.php:451, templates/debug/scheduled-crons.php:80
|
1623 |
msgid "Slug"
|
1624 |
msgstr "Slug"
|
1625 |
|
1626 |
+
#: templates/debug.php:239, templates/debug.php:450
|
1627 |
msgid "Title"
|
1628 |
msgstr "Title"
|
1629 |
|
1630 |
+
#: templates/debug.php:240
|
1631 |
msgctxt "as application program interface"
|
1632 |
msgid "API"
|
1633 |
msgstr "API"
|
1634 |
|
1635 |
+
#: templates/debug.php:241
|
1636 |
msgid "Freemius State"
|
1637 |
msgstr "Freemius State"
|
1638 |
|
1639 |
+
#: templates/debug.php:245
|
1640 |
msgid "Network Blog"
|
1641 |
msgstr "Network Blog"
|
1642 |
|
1643 |
+
#: templates/debug.php:246
|
1644 |
msgid "Network User"
|
1645 |
msgstr "Network User"
|
1646 |
|
1647 |
+
#: templates/debug.php:283
|
1648 |
msgctxt "as connection was successful"
|
1649 |
msgid "Connected"
|
1650 |
msgstr "Connected"
|
1651 |
|
1652 |
+
#: templates/debug.php:284
|
1653 |
msgctxt "as connection blocked"
|
1654 |
msgid "Blocked"
|
1655 |
msgstr "Blocked"
|
1656 |
|
1657 |
+
#: templates/debug.php:320
|
1658 |
+
msgid "Simulate Trial Promotion"
|
1659 |
+
msgstr "Simulate Trial Promotion"
|
1660 |
|
1661 |
+
#: templates/debug.php:332
|
1662 |
msgid "Simulate Network Upgrade"
|
1663 |
msgstr "Simulate Network Upgrade"
|
1664 |
|
1665 |
+
#: templates/debug.php:358
|
1666 |
msgid "%s Installs"
|
1667 |
msgstr "%s Installs"
|
1668 |
|
1669 |
+
#: templates/debug.php:360
|
1670 |
msgctxt "like websites"
|
1671 |
msgid "Sites"
|
1672 |
msgstr "Sites"
|
1673 |
|
1674 |
+
#: templates/debug.php:366, templates/account/partials/site.php:148
|
1675 |
msgid "Blog ID"
|
1676 |
msgstr "Blog ID"
|
1677 |
|
1678 |
+
#: templates/debug.php:431, templates/debug.php:509, templates/account/partials/addon.php:339
|
1679 |
msgctxt "verb"
|
1680 |
msgid "Delete"
|
1681 |
msgstr "Delete"
|
1682 |
|
1683 |
+
#: templates/debug.php:445
|
1684 |
msgid "Add Ons of module %s"
|
1685 |
msgstr "Add Ons of module %s"
|
1686 |
|
1687 |
+
#: templates/debug.php:482
|
1688 |
msgid "Users"
|
1689 |
msgstr "Users"
|
1690 |
|
1691 |
+
#: templates/debug.php:489
|
1692 |
msgid "Verified"
|
1693 |
msgstr "Verified"
|
1694 |
|
1695 |
+
#: templates/debug.php:520
|
1696 |
msgid "%s Licenses"
|
1697 |
msgstr "%s Licenses"
|
1698 |
|
1699 |
+
#: templates/debug.php:525
|
1700 |
msgid "Plugin ID"
|
1701 |
msgstr "Plugin ID"
|
1702 |
|
1703 |
+
#: templates/debug.php:527
|
1704 |
msgid "Plan ID"
|
1705 |
msgstr "Plan ID"
|
1706 |
|
1707 |
+
#: templates/debug.php:528
|
1708 |
msgid "Quota"
|
1709 |
msgstr "Quota"
|
1710 |
|
1711 |
+
#: templates/debug.php:529
|
1712 |
msgid "Activated"
|
1713 |
msgstr "Activated"
|
1714 |
|
1715 |
+
#: templates/debug.php:530
|
1716 |
msgid "Blocking"
|
1717 |
msgstr "Blocking"
|
1718 |
|
1719 |
+
#: templates/debug.php:532
|
1720 |
msgctxt "as expiration date"
|
1721 |
msgid "Expiration"
|
1722 |
msgstr "Expiration"
|
1723 |
|
1724 |
+
#: templates/debug.php:555
|
1725 |
msgid "Debug Log"
|
1726 |
msgstr "Debug Log"
|
1727 |
|
1728 |
+
#: templates/debug.php:559
|
1729 |
msgid "All Types"
|
1730 |
msgstr "All Types"
|
1731 |
|
1732 |
+
#: templates/debug.php:566
|
1733 |
msgid "All Requests"
|
1734 |
msgstr "All Requests"
|
1735 |
|
1736 |
+
#: templates/debug.php:571, templates/debug.php:600, templates/debug/logger.php:25
|
1737 |
msgid "File"
|
1738 |
msgstr "File"
|
1739 |
|
1740 |
+
#: templates/debug.php:572, templates/debug.php:598, templates/debug/logger.php:23
|
1741 |
msgid "Function"
|
1742 |
msgstr "Function"
|
1743 |
|
1744 |
+
#: templates/debug.php:573
|
1745 |
msgid "Process ID"
|
1746 |
msgstr "Process ID"
|
1747 |
|
1748 |
+
#: templates/debug.php:574
|
1749 |
msgid "Logger"
|
1750 |
msgstr "Logger"
|
1751 |
|
1752 |
+
#: templates/debug.php:575, templates/debug.php:599, templates/debug/logger.php:24
|
1753 |
msgid "Message"
|
1754 |
msgstr "Message"
|
1755 |
|
1756 |
+
#: templates/debug.php:577
|
1757 |
msgid "Filter"
|
1758 |
msgstr "Filter"
|
1759 |
|
1760 |
+
#: templates/debug.php:585
|
1761 |
msgid "Download"
|
1762 |
msgstr "Download"
|
1763 |
|
1764 |
+
#: templates/debug.php:596, templates/debug/logger.php:22
|
1765 |
msgid "Type"
|
1766 |
msgstr "Type"
|
1767 |
|
1768 |
+
#: templates/debug.php:601, templates/debug/logger.php:26
|
1769 |
msgid "Timestamp"
|
1770 |
msgstr "Timestamp"
|
1771 |
|
2109 |
msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
2110 |
msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s."
|
2111 |
|
2112 |
+
#: templates/forms/premium-versions-upgrade-handler.php:40
|
2113 |
msgid "There is a new version of %s available."
|
2114 |
msgstr "There is a new version of %s available."
|
2115 |
|
2116 |
+
#: templates/forms/premium-versions-upgrade-handler.php:41
|
2117 |
+
msgid " %s to access version %s security & feature updates, and support."
|
2118 |
+
msgstr " %s to access version %s security & feature updates, and support."
|
2119 |
|
2120 |
+
#: templates/forms/premium-versions-upgrade-handler.php:54
|
2121 |
msgid "New Version Available"
|
2122 |
msgstr "New Version Available"
|
2123 |
|
2124 |
+
#: templates/forms/premium-versions-upgrade-handler.php:75
|
|
|
|
|
|
|
|
|
2125 |
msgctxt "close a window"
|
2126 |
msgid "Dismiss"
|
2127 |
msgstr "Dismiss"
|
2134 |
msgid "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
2135 |
msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key."
|
2136 |
|
2137 |
+
#: templates/forms/subscription-cancellation.php:37
|
2138 |
+
msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
|
2139 |
+
msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site."
|
2140 |
+
|
2141 |
+
#: templates/forms/subscription-cancellation.php:47
|
2142 |
+
msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
|
2143 |
+
msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?"
|
2144 |
+
|
2145 |
+
#: templates/forms/subscription-cancellation.php:52
|
2146 |
+
msgid "license"
|
2147 |
+
msgstr "license"
|
2148 |
+
|
2149 |
+
#: templates/forms/subscription-cancellation.php:57
|
2150 |
+
msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
|
2151 |
+
msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site."
|
2152 |
+
|
2153 |
+
#: templates/forms/subscription-cancellation.php:68
|
2154 |
+
msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
|
2155 |
+
msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support."
|
2156 |
+
|
2157 |
+
#: templates/forms/subscription-cancellation.php:103
|
2158 |
+
msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
|
2159 |
+
msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license."
|
2160 |
+
|
2161 |
+
#: templates/forms/subscription-cancellation.php:136
|
2162 |
+
msgid "Cancel %s?"
|
2163 |
+
msgstr "Cancel %s?"
|
2164 |
+
|
2165 |
+
#: templates/forms/subscription-cancellation.php:143
|
2166 |
+
msgid "Proceed"
|
2167 |
+
msgstr "Proceed"
|
2168 |
+
|
2169 |
+
#: templates/forms/subscription-cancellation.php:191, templates/forms/deactivation/form.php:150
|
2170 |
+
msgid "Cancel %s & Proceed"
|
2171 |
+
msgstr "Cancel %s & Proceed"
|
2172 |
+
|
2173 |
#: templates/forms/trial-start.php:22
|
2174 |
msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
2175 |
msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan."
|
2231 |
msgid "Last license"
|
2232 |
msgstr "Last license"
|
2233 |
|
2234 |
+
#: templates/account/partials/addon.php:115
|
2235 |
msgid "Cancelled"
|
2236 |
msgstr "Cancelled"
|
2237 |
|
2238 |
+
#: templates/account/partials/addon.php:125
|
|
|
|
|
|
|
|
|
2239 |
msgid "No expiration"
|
2240 |
msgstr "No expiration"
|
2241 |
|
2242 |
+
#: templates/account/partials/addon.php:264, templates/account/partials/addon.php:317
|
2243 |
msgid "Activate this add-on"
|
2244 |
msgstr "Activate this add-on"
|
2245 |
|
2267 |
msgid "Contact Support"
|
2268 |
msgstr "Contact Support"
|
2269 |
|
2270 |
+
#: templates/forms/deactivation/form.php:59
|
2271 |
msgid "Anonymous feedback"
|
2272 |
msgstr "Anonymous feedback"
|
2273 |
|
2274 |
+
#: templates/forms/deactivation/form.php:66
|
2275 |
msgid "Deactivate"
|
2276 |
msgstr "Deactivate"
|
2277 |
|
2278 |
+
#: templates/forms/deactivation/form.php:68
|
2279 |
msgid "Activate %s"
|
2280 |
msgstr "Activate %s"
|
2281 |
|
|
|
|
|
|
|
|
|
2282 |
#: templates/forms/deactivation/form.php:80
|
2283 |
+
msgid "Quick Feedback"
|
2284 |
+
msgstr "Quick Feedback"
|
2285 |
+
|
2286 |
+
#: templates/forms/deactivation/form.php:84
|
2287 |
msgid "If you have a moment, please let us know why you are %s"
|
2288 |
msgstr "If you have a moment, please let us know why you are %s"
|
2289 |
|
2290 |
+
#: templates/forms/deactivation/form.php:84
|
2291 |
msgid "deactivating"
|
2292 |
msgstr "deactivating"
|
2293 |
|
2294 |
+
#: templates/forms/deactivation/form.php:84
|
2295 |
msgid "switching"
|
2296 |
msgstr "switching"
|
2297 |
|
2298 |
+
#: templates/forms/deactivation/form.php:332
|
2299 |
msgid "Submit & %s"
|
2300 |
msgstr "Submit & %s"
|
2301 |
|
2302 |
+
#: templates/forms/deactivation/form.php:353
|
2303 |
msgid "Kindly tell us the reason so we can improve."
|
2304 |
msgstr "Kindly tell us the reason so we can improve."
|
2305 |
|
2306 |
+
#: templates/forms/deactivation/form.php:478
|
2307 |
msgid "Yes - %s"
|
2308 |
msgstr "Yes - %s"
|
2309 |
|
2310 |
+
#: templates/forms/deactivation/form.php:485
|
2311 |
msgid "Skip & %s"
|
2312 |
msgstr "Skip & %s"
|
2313 |
|
sdk/freemius/languages/freemius-es_ES.mo
CHANGED
Binary file
|
sdk/freemius/languages/freemius-es_ES.po
CHANGED
@@ -7,7 +7,7 @@ msgstr ""
|
|
7 |
"Project-Id-Version: WordPress SDK\n"
|
8 |
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
9 |
"POT-Creation-Date: \n"
|
10 |
-
"PO-Revision-Date: 2018-
|
11 |
"Last-Translator: Carlos Longarela <carlos@longarela.eu>\n"
|
12 |
"Language: es_ES\n"
|
13 |
"Language-Team: Spanish (Spain) (http://www.transifex.com/freemius/wordpress-sdk/language/es_ES/)\n"
|
@@ -21,1294 +21,1391 @@ msgstr ""
|
|
21 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
22 |
"X-Poedit-SourceCharset: UTF-8\n"
|
23 |
|
24 |
-
#: includes/class-freemius.php:
|
25 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
26 |
msgstr "Freemius SDK no pudo encontrar el archivo principal del plugin. Por favor contacta a sdk@freemius.com con el error actual."
|
27 |
|
28 |
-
#: includes/class-freemius.php:
|
29 |
msgid "Error"
|
30 |
msgstr "Error"
|
31 |
|
32 |
-
#: includes/class-freemius.php:
|
33 |
msgid "I found a better %s"
|
34 |
-
msgstr "He encontrado un
|
35 |
|
36 |
-
#: includes/class-freemius.php:
|
37 |
msgid "What's the %s's name?"
|
38 |
msgstr "¿Cuál es el nombre de %s?"
|
39 |
|
40 |
-
#: includes/class-freemius.php:
|
41 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
42 |
-
msgstr "Es
|
43 |
|
44 |
-
#: includes/class-freemius.php:
|
45 |
msgid "Deactivation"
|
46 |
msgstr "Desactivación"
|
47 |
|
48 |
-
#: includes/class-freemius.php:
|
49 |
msgid "Theme Switch"
|
50 |
msgstr "Cambiar tema"
|
51 |
|
52 |
-
#: includes/class-freemius.
|
53 |
msgid "Other"
|
54 |
msgstr "Otra"
|
55 |
|
56 |
-
#: includes/class-freemius.php:
|
57 |
msgid "I no longer need the %s"
|
58 |
msgstr "Ya no necesito el %s"
|
59 |
|
60 |
-
#: includes/class-freemius.php:
|
61 |
msgid "I only needed the %s for a short period"
|
62 |
msgstr "Sólo necesitaba la %s por un corto período"
|
63 |
|
64 |
-
#: includes/class-freemius.php:
|
65 |
msgid "The %s broke my site"
|
66 |
msgstr "%s ha roto mi sitio"
|
67 |
|
68 |
-
#: includes/class-freemius.php:
|
69 |
msgid "The %s suddenly stopped working"
|
70 |
msgstr "%s de repente ha dejado de funcionar"
|
71 |
|
72 |
-
#: includes/class-freemius.php:
|
73 |
msgid "I can't pay for it anymore"
|
74 |
msgstr "No puedo pagarlo durante más tiempo"
|
75 |
|
76 |
-
#: includes/class-freemius.php:
|
77 |
msgid "What price would you feel comfortable paying?"
|
78 |
msgstr "¿Con qué precio te sentirías cómodo pagando?"
|
79 |
|
80 |
-
#: includes/class-freemius.php:
|
81 |
msgid "I don't like to share my information with you"
|
82 |
msgstr "No me gusta compartir mi información contigo"
|
83 |
|
84 |
-
#: includes/class-freemius.php:
|
85 |
msgid "The %s didn't work"
|
86 |
-
msgstr "%s no funcionaba"
|
87 |
|
88 |
-
#: includes/class-freemius.php:
|
89 |
msgid "I couldn't understand how to make it work"
|
90 |
msgstr "No entiendo cómo hacerlo funcionar"
|
91 |
|
92 |
-
#: includes/class-freemius.php:
|
93 |
msgid "The %s is great, but I need specific feature that you don't support"
|
94 |
msgstr "%s es genial, pero necesito una característica que no soportáis"
|
95 |
|
96 |
-
#: includes/class-freemius.php:
|
97 |
msgid "What feature?"
|
98 |
msgstr "¿Qué característica?"
|
99 |
|
100 |
-
#: includes/class-freemius.php:
|
101 |
msgid "The %s is not working"
|
102 |
-
msgstr "%s no funciona"
|
103 |
|
104 |
-
#: includes/class-freemius.php:
|
105 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
106 |
msgstr "Por favor, comparte lo que no funcionó para que podamos arreglarlo para los futuros usuarios..."
|
107 |
|
108 |
-
#: includes/class-freemius.php:
|
109 |
msgid "It's not what I was looking for"
|
110 |
msgstr "No es lo que estaba buscando"
|
111 |
|
112 |
-
#: includes/class-freemius.php:
|
113 |
msgid "What you've been looking for?"
|
114 |
msgstr "¿Que has estado buscando?"
|
115 |
|
116 |
-
#: includes/class-freemius.php:
|
117 |
msgid "The %s didn't work as expected"
|
118 |
-
msgstr "%s no funciona como esperaba"
|
119 |
|
120 |
-
#: includes/class-freemius.php:
|
121 |
msgid "What did you expect?"
|
122 |
msgstr "¿Qué esperas?"
|
123 |
|
124 |
-
#: includes/class-freemius.
|
125 |
msgid "Freemius Debug"
|
126 |
msgstr "Debug Freemius"
|
127 |
|
128 |
-
#: includes/class-freemius.php:
|
129 |
msgid "I don't know what is cURL or how to install it, help me!"
|
130 |
msgstr "No sé qué es cURL o cómo instalarlo, ¡ayúdame!"
|
131 |
|
132 |
-
#: includes/class-freemius.php:
|
133 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
134 |
msgstr "Nos aseguraremos de ponernos en contacto con tu empresa de alojamiento web y resolver el problema. Recibirás un correo electrónico de seguimiento a %s tan pronto tengamos una actualización."
|
135 |
|
136 |
-
#: includes/class-freemius.php:
|
137 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
138 |
msgstr "Genial, por favor instala cURL y habilítalo en el archivo php.ini. Además, busca la directiva 'disable_functions' en el archivo php.ini y quita cualquier método que comienza con 'curl_'. Para asegurarte de que se activó con éxito, utiliza 'phpinfo()'. Una vez activado, desactiva el %s y reactívalo de nuevo."
|
139 |
|
140 |
-
#: includes/class-freemius.php:
|
141 |
msgid "Yes - do your thing"
|
142 |
msgstr "Vamos, adelante"
|
143 |
|
144 |
-
#: includes/class-freemius.php:
|
145 |
msgid "No - just deactivate"
|
146 |
msgstr "No - sólo desactivar"
|
147 |
|
148 |
-
#: includes/class-freemius.
|
149 |
-
#: includes/class-freemius.
|
150 |
-
#: includes/class-freemius.
|
151 |
-
#: includes/class-freemius.
|
152 |
-
#: includes/class-freemius.
|
153 |
-
#: includes/class-freemius.
|
154 |
-
#: includes/class-freemius.
|
155 |
msgctxt "exclamation"
|
156 |
msgid "Oops"
|
157 |
msgstr "Oops"
|
158 |
|
159 |
-
#: includes/class-freemius.php:
|
160 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
161 |
msgstr "¡Gracias por darnos la oportunidad de arreglarlo! Acabamos de enviar un mensaje a nuestro personal técnico. Nos pondremos en contacto contigo tan pronto como tengamos una actualización de %s. Apreciamos tu paciencia."
|
162 |
|
163 |
-
#: includes/class-freemius.php:
|
164 |
msgctxt "addonX cannot run without pluginY"
|
165 |
msgid "%s cannot run without %s."
|
166 |
msgstr "%s no se puede ejecutar sin %s."
|
167 |
|
168 |
-
#: includes/class-freemius.php:
|
169 |
msgctxt "addonX cannot run..."
|
170 |
msgid "%s cannot run without the plugin."
|
171 |
msgstr "%s no se puede ejecutar sin el plugin."
|
172 |
|
173 |
-
#: includes/class-freemius.
|
174 |
-
#: includes/class-freemius.php:
|
175 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
176 |
msgstr "Error inesperado del API. Pónte en contacto con el autor de %s indicándole el siguiente error."
|
177 |
|
178 |
-
#: includes/class-freemius.php:
|
179 |
msgid "Premium %s version was successfully activated."
|
180 |
msgstr "La versión Premium %s ha sido activada con éxito."
|
181 |
|
182 |
-
#: includes/class-freemius.
|
183 |
msgctxt ""
|
184 |
msgid "W00t"
|
185 |
msgstr "W00t"
|
186 |
|
187 |
-
#: includes/class-freemius.php:
|
188 |
msgid "You have a %s license."
|
189 |
msgstr "Tienes una licencia %s."
|
190 |
|
191 |
-
#: includes/class-freemius.
|
192 |
-
#: includes/class-freemius.
|
193 |
-
#: includes/class-freemius.
|
194 |
-
#: includes/class-freemius.php:
|
195 |
msgctxt "interjection expressing joy or exuberance"
|
196 |
msgid "Yee-haw"
|
197 |
msgstr "Vaya"
|
198 |
|
199 |
-
#: includes/class-freemius.php:
|
200 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
201 |
msgstr "la prueba gratuita de %s fue cancelada con éxito. Puesto que el complemento es sólo premium se desactivó automáticamente. Si quieres utilizarlo en el futuro, deberás comprar una licencia."
|
202 |
|
203 |
-
#: includes/class-freemius.php:
|
204 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
205 |
msgstr "%s es un complemento único de premium. Tienes que comprar una licencia primero antes de activar el plugin."
|
206 |
|
207 |
-
#: includes/class-freemius.
|
208 |
-
#: templates/account/partials/addon.php:
|
209 |
msgid "More information about %s"
|
210 |
msgstr "Más información sobre %s"
|
211 |
|
212 |
-
#: includes/class-freemius.php:
|
213 |
msgid "Purchase License"
|
214 |
msgstr "Comprar licencia"
|
215 |
|
216 |
-
#: includes/class-freemius.
|
217 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
218 |
msgstr "Recibirás un correo de activación para %s en tu buzón en %s. Por favor, asegúrate de hacer clic en el botón de activación en ese correo electrónico para %s."
|
219 |
|
220 |
-
#: includes/class-freemius.php:
|
221 |
msgid "start the trial"
|
222 |
msgstr "comenzar el período de prueba"
|
223 |
|
224 |
-
#: includes/class-freemius.
|
225 |
msgid "complete the install"
|
226 |
msgstr "completar la instalación"
|
227 |
|
228 |
-
#: includes/class-freemius.php:
|
229 |
msgid "You are just one step away - %s"
|
230 |
msgstr "Estás a sólo un paso - %s"
|
231 |
|
232 |
-
#: includes/class-freemius.php:
|
233 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
234 |
msgid "Complete \"%s\" Activation Now"
|
235 |
msgstr "Completar la activación de \"%s\" ahora"
|
236 |
|
237 |
-
#: includes/class-freemius.php:
|
238 |
msgid "We made a few tweaks to the %s, %s"
|
239 |
msgstr "Hemos realizado algunas optimizaciones al %s, %s"
|
240 |
|
241 |
-
#: includes/class-freemius.php:
|
242 |
-
msgid "Opt in to make \"%s\"
|
243 |
-
msgstr "¡
|
244 |
|
245 |
-
#: includes/class-freemius.php:
|
246 |
msgid "The upgrade of %s was successfully completed."
|
247 |
msgstr "La actualización de %s se completó con éxito."
|
248 |
|
249 |
-
#: includes/class-freemius.
|
250 |
-
#: includes/class-fs-plugin-updater.
|
251 |
-
#: includes/class-fs-plugin-updater.
|
|
|
252 |
msgid "Add-On"
|
253 |
msgstr "Complemento"
|
254 |
|
255 |
-
#: includes/class-freemius.
|
256 |
-
#: templates/debug.php:
|
257 |
msgid "Plugin"
|
258 |
msgstr "Plugin"
|
259 |
|
260 |
-
#: includes/class-freemius.
|
261 |
-
#: templates/debug.
|
262 |
msgid "Theme"
|
263 |
msgstr "Tema"
|
264 |
|
265 |
-
#: includes/class-freemius.php:
|
266 |
-
msgid "
|
267 |
-
msgstr "
|
268 |
|
269 |
-
#: includes/class-freemius.php:
|
270 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
271 |
msgstr "No podemos encontrar tu dirección de correo electrónico en el sistema, ¿estás seguro de que es la dirección de correo electrónico correcta?"
|
272 |
|
273 |
-
#: includes/class-freemius.php:
|
274 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
275 |
msgstr "No vemos ninguna licencia activa asociada a esa dirección de correo electrónico, ¿estás seguro de que es la dirección de correo electrónico correcta?"
|
276 |
|
277 |
-
#: includes/class-freemius.php:
|
278 |
msgid "Account is pending activation."
|
279 |
msgstr "La cuenta está pendiente de activación"
|
280 |
|
281 |
-
#: includes/class-freemius.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
282 |
msgid "%s activation was successfully completed."
|
283 |
msgstr "%s activación se completó con éxito."
|
284 |
|
285 |
-
#: includes/class-freemius.php:
|
286 |
msgid "Your account was successfully activated with the %s plan."
|
287 |
msgstr "Tu cuenta se ha activado correctamente con el plan %s."
|
288 |
|
289 |
-
#: includes/class-freemius.
|
290 |
msgid "Your trial has been successfully started."
|
291 |
msgstr "Tu versión de prueba se ha iniciado con éxito."
|
292 |
|
293 |
-
#: includes/class-freemius.
|
294 |
-
#: includes/class-freemius.php:
|
295 |
msgid "Couldn't activate %s."
|
296 |
msgstr "No se puede activar %s."
|
297 |
|
298 |
-
#: includes/class-freemius.
|
299 |
-
#: includes/class-freemius.php:
|
300 |
msgid "Please contact us with the following message:"
|
301 |
msgstr "Por favor contáctanos con el siguiente mensaje:"
|
302 |
|
303 |
-
#: includes/class-freemius.
|
304 |
msgid "Upgrade"
|
305 |
msgstr "Actualizar"
|
306 |
|
307 |
-
#: includes/class-freemius.php:
|
308 |
msgid "Start Trial"
|
309 |
msgstr "Comenzar el período de prueba"
|
310 |
|
311 |
-
#: includes/class-freemius.php:
|
312 |
msgid "Pricing"
|
313 |
msgstr "Precio"
|
314 |
|
315 |
-
#: includes/class-freemius.
|
316 |
msgid "Affiliation"
|
317 |
msgstr "Afiliación"
|
318 |
|
319 |
-
#: includes/class-freemius.
|
320 |
-
#: templates/account.
|
321 |
msgid "Account"
|
322 |
msgstr "Cuenta"
|
323 |
|
324 |
-
#: includes/class-freemius.
|
325 |
#: includes/customizer/class-fs-customizer-support-section.php:60
|
326 |
msgid "Contact Us"
|
327 |
msgstr "Contáctanos"
|
328 |
|
329 |
-
#: includes/class-freemius.
|
330 |
-
#: includes/class-freemius.
|
331 |
-
#: templates/account/partials/addon.php:
|
332 |
msgid "Add-Ons"
|
333 |
msgstr "Complementos"
|
334 |
|
335 |
-
#: includes/class-freemius.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
336 |
msgctxt "noun"
|
337 |
msgid "Pricing"
|
338 |
msgstr "Precio"
|
339 |
|
340 |
-
#: includes/class-freemius.
|
341 |
#: includes/customizer/class-fs-customizer-support-section.php:67
|
342 |
msgid "Support Forum"
|
343 |
msgstr "Foro de soporte"
|
344 |
|
345 |
-
#: includes/class-freemius.php:
|
346 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
347 |
msgstr "Tu email ha sido verificado correctamente - ¡Eres IMPRESIONANTE!"
|
348 |
|
349 |
-
#: includes/class-freemius.php:
|
350 |
msgctxt "a positive response"
|
351 |
msgid "Right on"
|
352 |
msgstr "Bien hecho"
|
353 |
|
354 |
-
#: includes/class-freemius.php:
|
355 |
msgid "Your %s Add-on plan was successfully upgraded."
|
356 |
msgstr "Tu complemento %s del plan se actualizó con éxito."
|
357 |
|
358 |
-
#: includes/class-freemius.php:
|
359 |
msgid "%s Add-on was successfully purchased."
|
360 |
msgstr "El complemento %s ha sido comprado correctamente."
|
361 |
|
362 |
-
#: includes/class-freemius.php:
|
363 |
msgid "Download the latest version"
|
364 |
msgstr "Descargar la última versión"
|
365 |
|
366 |
-
#: includes/class-freemius.php:
|
367 |
msgctxt "%1s - plugin title, %2s - API domain"
|
368 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
369 |
msgstr "Tu servidor está bloqueando el acceso a la API de Freemius, que es crucial para la sincronización de licencia %1s. Por favor, ponte en contacto con tu host para que lo añadan a su lista blanca %2s"
|
370 |
|
371 |
-
#: includes/class-freemius.
|
372 |
-
#: includes/class-freemius.php:
|
373 |
msgid "Error received from the server:"
|
374 |
msgstr "Error recibido del servidor:"
|
375 |
|
376 |
-
#: includes/class-freemius.php:
|
377 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
378 |
msgstr "Parece que uno de los parámetros de autenticación es incorrecto. Actualiza tu clave pública, clave secreta e ID de usuario e inténtelo de nuevo."
|
379 |
|
380 |
-
#: includes/class-freemius.
|
381 |
-
#: includes/class-freemius.php:
|
382 |
msgctxt ""
|
383 |
msgid "Hmm"
|
384 |
msgstr "Hmm"
|
385 |
|
386 |
-
#: includes/class-freemius.php:
|
387 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
388 |
msgstr "Parece que todavía estás en el plan %s. Si actualizaste o cambiaste tu plan, probablemente sea un problema de nuestra parte - lo sentimos."
|
389 |
|
390 |
-
#: includes/class-freemius.
|
391 |
-
#: templates/add-ons.
|
392 |
msgctxt "trial period"
|
393 |
msgid "Trial"
|
394 |
msgstr "Período de Prueba Gratuito"
|
395 |
|
396 |
-
#: includes/class-freemius.php:
|
397 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
398 |
msgstr "He actualizado mi cuenta, pero cuando intento sincronizar la licencia, el plan sigue siendo %s."
|
399 |
|
400 |
-
#: includes/class-freemius.
|
401 |
msgid "Please contact us here"
|
402 |
msgstr "Contacta aquí con nosotros"
|
403 |
|
404 |
-
#: includes/class-freemius.php:
|
405 |
msgid "Your plan was successfully upgraded."
|
406 |
msgstr "Tu plan se actualizó con éxito."
|
407 |
|
408 |
-
#: includes/class-freemius.php:
|
409 |
msgid "Your plan was successfully changed to %s."
|
410 |
msgstr "Tu plan se cambió correctamente a %s."
|
411 |
|
412 |
-
#: includes/class-freemius.php:
|
413 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
414 |
msgstr "Tu licencia ha caducado. Puedes seguir usando el plan gratuito %s para siempre."
|
415 |
|
416 |
-
#: includes/class-freemius.php:
|
417 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
418 |
msgstr "Tu licencia ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
|
419 |
|
420 |
-
#: includes/class-freemius.php:
|
421 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
422 |
msgstr "Tu licencia ha sido cancelada. Si crees que es un error, ponte en contacto con el servicio de asistencia."
|
423 |
|
424 |
-
#: includes/class-freemius.php:
|
425 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
426 |
msgstr "Tu licencia ha caducado. Todavía puedes seguir usando todas las funciones de %s, pero tendrás que renovar tu licencia para seguir recibiendo actualizaciones y soporte."
|
427 |
|
428 |
-
#: includes/class-freemius.php:
|
429 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
430 |
msgstr "Tu período de prueba ha caducado. Todavía puedes seguir usando todas nuestras funciones gratuitas."
|
431 |
|
432 |
-
#: includes/class-freemius.php:
|
433 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
434 |
msgstr "Tu período de prueba ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
|
435 |
|
436 |
-
#: includes/class-freemius.php:
|
437 |
msgid "It looks like the license could not be activated."
|
438 |
msgstr "Parece que la licencia no se pudo activar."
|
439 |
|
440 |
-
#: includes/class-freemius.php:
|
441 |
msgid "Your license was successfully activated."
|
442 |
msgstr "Tu licencia fue activada correctamente."
|
443 |
|
444 |
-
#: includes/class-freemius.php:
|
445 |
msgid "It looks like your site currently doesn't have an active license."
|
446 |
msgstr "Parece que tu sitio actualmente no tiene una licencia activa."
|
447 |
|
448 |
-
#: includes/class-freemius.php:
|
449 |
msgid "It looks like the license deactivation failed."
|
450 |
msgstr "Parece que la desactivación de licencia ha fallado."
|
451 |
|
452 |
-
#: includes/class-freemius.php:
|
453 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
454 |
msgstr "Tu licencia fue desactivada correctamente, has vuelto al plan %s."
|
455 |
|
456 |
-
#: includes/class-freemius.php:
|
457 |
msgid "O.K"
|
458 |
msgstr "O.K"
|
459 |
|
460 |
-
#: includes/class-freemius.php:
|
461 |
-
msgid "
|
462 |
-
msgstr "
|
463 |
|
464 |
-
#: includes/class-freemius.php:
|
465 |
-
msgid "
|
466 |
-
msgstr "
|
467 |
|
468 |
-
#: includes/class-freemius.php:
|
469 |
msgid "You are already running the %s in a trial mode."
|
470 |
msgstr "Estás ejecutando %s en modo de prueba."
|
471 |
|
472 |
-
#: includes/class-freemius.php:
|
473 |
msgid "You already utilized a trial before."
|
474 |
msgstr "Ya utilizaste un período de prueba antes."
|
475 |
|
476 |
-
#: includes/class-freemius.php:
|
477 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
478 |
msgstr "El plan %s no existe, por lo tanto, no puedes comenzar un período de prueba."
|
479 |
|
480 |
-
#: includes/class-freemius.php:
|
481 |
msgid "Plan %s does not support a trial period."
|
482 |
msgstr "El plan %s no admite un período de prueba."
|
483 |
|
484 |
-
#: includes/class-freemius.php:
|
485 |
msgid "None of the %s's plans supports a trial period."
|
486 |
msgstr "Ninguno de los planes de %s soportan un período de prueba."
|
487 |
|
488 |
-
#: includes/class-freemius.php:
|
489 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
490 |
msgstr "Parece que ya no estás en modo de prueba, así que no hay nada que cancelar :)"
|
491 |
|
492 |
-
#: includes/class-freemius.php:
|
493 |
-
msgid "Your %s free trial was successfully cancelled."
|
494 |
-
msgstr "Tu prueba gratuita de %s fue cancelada con éxito."
|
495 |
-
|
496 |
-
#: includes/class-freemius.php:17190
|
497 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
498 |
msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de prueba. Vuelve a intentarlo en unos minutos."
|
499 |
|
500 |
-
#: includes/class-freemius.php:
|
|
|
|
|
|
|
|
|
501 |
msgid "Version %s was released."
|
502 |
msgstr "La versión %s se ha lanzado."
|
503 |
|
504 |
-
#: includes/class-freemius.php:
|
505 |
msgid "Please download %s."
|
506 |
msgstr "Por favor descarga %s."
|
507 |
|
508 |
-
#: includes/class-freemius.php:
|
509 |
msgid "the latest %s version here"
|
510 |
msgstr "la última versión %s aquí"
|
511 |
|
512 |
-
#: includes/class-freemius.php:
|
513 |
msgid "New"
|
514 |
msgstr "Nuevo"
|
515 |
|
516 |
-
#: includes/class-freemius.php:
|
517 |
msgid "Seems like you got the latest release."
|
518 |
msgstr "Parece que tienes la última versión."
|
519 |
|
520 |
-
#: includes/class-freemius.php:
|
521 |
msgid "You are all good!"
|
522 |
msgstr "¡Está todo listo!"
|
523 |
|
524 |
-
#: includes/class-freemius.php:
|
525 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
526 |
msgstr "El correo de verificación se acaba de enviar a %s. Si no puedes encontrarlo después de 5 min, comprueba tu carpeta de spam."
|
527 |
|
528 |
-
#: includes/class-freemius.php:
|
529 |
msgid "Site successfully opted in."
|
530 |
msgstr "Sitio dado de alta correctamente."
|
531 |
|
532 |
-
#: includes/class-freemius.
|
533 |
msgid "Awesome"
|
534 |
msgstr "Increíble"
|
535 |
|
536 |
-
#: includes/class-freemius.
|
537 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
538 |
msgstr "Agradecemos tu ayuda para mejorar %s y por permitirnos rastrear algunos datos de uso."
|
539 |
|
540 |
-
#: includes/class-freemius.php:
|
541 |
msgid "Thank you!"
|
542 |
msgstr "¡Gracias!"
|
543 |
|
544 |
-
#: includes/class-freemius.php:
|
545 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
546 |
msgstr "No continuaremos enviando datos de uso de %s en %s a %s."
|
547 |
|
548 |
-
#: includes/class-freemius.php:
|
549 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
550 |
msgstr "Comprueba tu buzón de correo, debes recibir un correo electrónico a través de %s para confirmar el cambio de propiedad. Por razones de seguridad, debes confirmar el cambio dentro de los próximos 15 min. Si no puedes encontrar el correo electrónico, comprueba tu carpeta de correo no deseado."
|
551 |
|
552 |
-
#: includes/class-freemius.php:
|
553 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
554 |
msgstr "Gracias por confirmar el cambio de propiedad. Se envió un correo
|
7 |
"Project-Id-Version: WordPress SDK\n"
|
8 |
"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n"
|
9 |
"POT-Creation-Date: \n"
|
10 |
+
"PO-Revision-Date: 2018-11-25 12:57+0000\n"
|
11 |
"Last-Translator: Carlos Longarela <carlos@longarela.eu>\n"
|
12 |
"Language: es_ES\n"
|
13 |
"Language-Team: Spanish (Spain) (http://www.transifex.com/freemius/wordpress-sdk/language/es_ES/)\n"
|
21 |
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
22 |
"X-Poedit-SourceCharset: UTF-8\n"
|
23 |
|
24 |
+
#: includes/class-freemius.php:1602
|
25 |
msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error."
|
26 |
msgstr "Freemius SDK no pudo encontrar el archivo principal del plugin. Por favor contacta a sdk@freemius.com con el error actual."
|
27 |
|
28 |
+
#: includes/class-freemius.php:1604
|
29 |
msgid "Error"
|
30 |
msgstr "Error"
|
31 |
|
32 |
+
#: includes/class-freemius.php:1925
|
33 |
msgid "I found a better %s"
|
34 |
+
msgstr "He encontrado un %s mejor"
|
35 |
|
36 |
+
#: includes/class-freemius.php:1927
|
37 |
msgid "What's the %s's name?"
|
38 |
msgstr "¿Cuál es el nombre de %s?"
|
39 |
|
40 |
+
#: includes/class-freemius.php:1933
|
41 |
msgid "It's a temporary %s. I'm just debugging an issue."
|
42 |
+
msgstr "Es una %stemporal . Sólo estoy depurando un problema"
|
43 |
|
44 |
+
#: includes/class-freemius.php:1935
|
45 |
msgid "Deactivation"
|
46 |
msgstr "Desactivación"
|
47 |
|
48 |
+
#: includes/class-freemius.php:1936
|
49 |
msgid "Theme Switch"
|
50 |
msgstr "Cambiar tema"
|
51 |
|
52 |
+
#: includes/class-freemius.php1945, templates/forms/resend-key.php:24
|
53 |
msgid "Other"
|
54 |
msgstr "Otra"
|
55 |
|
56 |
+
#: includes/class-freemius.php:1953
|
57 |
msgid "I no longer need the %s"
|
58 |
msgstr "Ya no necesito el %s"
|
59 |
|
60 |
+
#: includes/class-freemius.php:1960
|
61 |
msgid "I only needed the %s for a short period"
|
62 |
msgstr "Sólo necesitaba la %s por un corto período"
|
63 |
|
64 |
+
#: includes/class-freemius.php:1966
|
65 |
msgid "The %s broke my site"
|
66 |
msgstr "%s ha roto mi sitio"
|
67 |
|
68 |
+
#: includes/class-freemius.php:1973
|
69 |
msgid "The %s suddenly stopped working"
|
70 |
msgstr "%s de repente ha dejado de funcionar"
|
71 |
|
72 |
+
#: includes/class-freemius.php:1983
|
73 |
msgid "I can't pay for it anymore"
|
74 |
msgstr "No puedo pagarlo durante más tiempo"
|
75 |
|
76 |
+
#: includes/class-freemius.php:1985
|
77 |
msgid "What price would you feel comfortable paying?"
|
78 |
msgstr "¿Con qué precio te sentirías cómodo pagando?"
|
79 |
|
80 |
+
#: includes/class-freemius.php:1991
|
81 |
msgid "I don't like to share my information with you"
|
82 |
msgstr "No me gusta compartir mi información contigo"
|
83 |
|
84 |
+
#: includes/class-freemius.php:2012
|
85 |
msgid "The %s didn't work"
|
86 |
+
msgstr "El %s no funcionaba"
|
87 |
|
88 |
+
#: includes/class-freemius.php:2022
|
89 |
msgid "I couldn't understand how to make it work"
|
90 |
msgstr "No entiendo cómo hacerlo funcionar"
|
91 |
|
92 |
+
#: includes/class-freemius.php:2030
|
93 |
msgid "The %s is great, but I need specific feature that you don't support"
|
94 |
msgstr "%s es genial, pero necesito una característica que no soportáis"
|
95 |
|
96 |
+
#: includes/class-freemius.php:2032
|
97 |
msgid "What feature?"
|
98 |
msgstr "¿Qué característica?"
|
99 |
|
100 |
+
#: includes/class-freemius.php:2036
|
101 |
msgid "The %s is not working"
|
102 |
+
msgstr " El %s no funciona"
|
103 |
|
104 |
+
#: includes/class-freemius.php:2038
|
105 |
msgid "Kindly share what didn't work so we can fix it for future users..."
|
106 |
msgstr "Por favor, comparte lo que no funcionó para que podamos arreglarlo para los futuros usuarios..."
|
107 |
|
108 |
+
#: includes/class-freemius.php:2042
|
109 |
msgid "It's not what I was looking for"
|
110 |
msgstr "No es lo que estaba buscando"
|
111 |
|
112 |
+
#: includes/class-freemius.php:2044
|
113 |
msgid "What you've been looking for?"
|
114 |
msgstr "¿Que has estado buscando?"
|
115 |
|
116 |
+
#: includes/class-freemius.php:2048
|
117 |
msgid "The %s didn't work as expected"
|
118 |
+
msgstr " El %s no funciona como esperaba"
|
119 |
|
120 |
+
#: includes/class-freemius.php:2050
|
121 |
msgid "What did you expect?"
|
122 |
msgstr "¿Qué esperas?"
|
123 |
|
124 |
+
#: includes/class-freemius.php2853, templates/debug.php:20
|
125 |
msgid "Freemius Debug"
|
126 |
msgstr "Debug Freemius"
|
127 |
|
128 |
+
#: includes/class-freemius.php:3581
|
129 |
msgid "I don't know what is cURL or how to install it, help me!"
|
130 |
msgstr "No sé qué es cURL o cómo instalarlo, ¡ayúdame!"
|
131 |
|
132 |
+
#: includes/class-freemius.php:3583
|
133 |
msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update."
|
134 |
msgstr "Nos aseguraremos de ponernos en contacto con tu empresa de alojamiento web y resolver el problema. Recibirás un correo electrónico de seguimiento a %s tan pronto tengamos una actualización."
|
135 |
|
136 |
+
#: includes/class-freemius.php:3590
|
137 |
msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again."
|
138 |
msgstr "Genial, por favor instala cURL y habilítalo en el archivo php.ini. Además, busca la directiva 'disable_functions' en el archivo php.ini y quita cualquier método que comienza con 'curl_'. Para asegurarte de que se activó con éxito, utiliza 'phpinfo()'. Una vez activado, desactiva el %s y reactívalo de nuevo."
|
139 |
|
140 |
+
#: includes/class-freemius.php:3695
|
141 |
msgid "Yes - do your thing"
|
142 |
msgstr "Vamos, adelante"
|
143 |
|
144 |
+
#: includes/class-freemius.php:3700
|
145 |
msgid "No - just deactivate"
|
146 |
msgstr "No - sólo desactivar"
|
147 |
|
148 |
+
#: includes/class-freemius.php3745, includes/class-freemius.php4253,
|
149 |
+
#: includes/class-freemius.php5318, includes/class-freemius.php11316,
|
150 |
+
#: includes/class-freemius.php14649, includes/class-freemius.php14701,
|
151 |
+
#: includes/class-freemius.php14763, includes/class-freemius.php16969,
|
152 |
+
#: includes/class-freemius.php16979, includes/class-freemius.php17588,
|
153 |
+
#: includes/class-freemius.php18446, includes/class-freemius.php18561,
|
154 |
+
#: includes/class-freemius.php18705, templates/add-ons.php:43
|
155 |
msgctxt "exclamation"
|
156 |
msgid "Oops"
|
157 |
msgstr "Oops"
|
158 |
|
159 |
+
#: includes/class-freemius.php:3814
|
160 |
msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience."
|
161 |
msgstr "¡Gracias por darnos la oportunidad de arreglarlo! Acabamos de enviar un mensaje a nuestro personal técnico. Nos pondremos en contacto contigo tan pronto como tengamos una actualización de %s. Apreciamos tu paciencia."
|
162 |
|
163 |
+
#: includes/class-freemius.php:4250
|
164 |
msgctxt "addonX cannot run without pluginY"
|
165 |
msgid "%s cannot run without %s."
|
166 |
msgstr "%s no se puede ejecutar sin %s."
|
167 |
|
168 |
+
#: includes/class-freemius.php:4251
|
169 |
msgctxt "addonX cannot run..."
|
170 |
msgid "%s cannot run without the plugin."
|
171 |
msgstr "%s no se puede ejecutar sin el plugin."
|
172 |
|
173 |
+
#: includes/class-freemius.php4363, includes/class-freemius.php4388,
|
174 |
+
#: includes/class-freemius.php:17659
|
175 |
msgid "Unexpected API error. Please contact the %s's author with the following error."
|
176 |
msgstr "Error inesperado del API. Pónte en contacto con el autor de %s indicándole el siguiente error."
|
177 |
|
178 |
+
#: includes/class-freemius.php:5006
|
179 |
msgid "Premium %s version was successfully activated."
|
180 |
msgstr "La versión Premium %s ha sido activada con éxito."
|
181 |
|
182 |
+
#: includes/class-freemius.php5018, includes/class-freemius.php:6862
|
183 |
msgctxt ""
|
184 |
msgid "W00t"
|
185 |
msgstr "W00t"
|
186 |
|
187 |
+
#: includes/class-freemius.php:5033
|
188 |
msgid "You have a %s license."
|
189 |
msgstr "Tienes una licencia %s."
|
190 |
|
191 |
+
#: includes/class-freemius.php5037, includes/class-freemius.php14070,
|
192 |
+
#: includes/class-freemius.php14081, includes/class-freemius.php16897,
|
193 |
+
#: includes/class-freemius.php17197, includes/class-freemius.php17263,
|
194 |
+
#: includes/class-freemius.php:17413
|
195 |
msgctxt "interjection expressing joy or exuberance"
|
196 |
msgid "Yee-haw"
|
197 |
msgstr "Vaya"
|
198 |
|
199 |
+
#: includes/class-freemius.php:5301
|
200 |
msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license."
|
201 |
msgstr "la prueba gratuita de %s fue cancelada con éxito. Puesto que el complemento es sólo premium se desactivó automáticamente. Si quieres utilizarlo en el futuro, deberás comprar una licencia."
|
202 |
|
203 |
+
#: includes/class-freemius.php:5305
|
204 |
msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin."
|
205 |
msgstr "%s es un complemento único de premium. Tienes que comprar una licencia primero antes de activar el plugin."
|
206 |
|
207 |
+
#: includes/class-freemius.php5314, templates/add-ons.php103,
|
208 |
+
#: templates/account/partials/addon.php:288
|
209 |
msgid "More information about %s"
|
210 |
msgstr "Más información sobre %s"
|
211 |
|
212 |
+
#: includes/class-freemius.php:5315
|
213 |
msgid "Purchase License"
|
214 |
msgstr "Comprar licencia"
|
215 |
|
216 |
+
#: includes/class-freemius.php6230, templates/connect.php:163
|
217 |
msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s."
|
218 |
msgstr "Recibirás un correo de activación para %s en tu buzón en %s. Por favor, asegúrate de hacer clic en el botón de activación en ese correo electrónico para %s."
|
219 |
|
220 |
+
#: includes/class-freemius.php:6234
|
221 |
msgid "start the trial"
|
222 |
msgstr "comenzar el período de prueba"
|
223 |
|
224 |
+
#: includes/class-freemius.php6235, templates/connect.php:167
|
225 |
msgid "complete the install"
|
226 |
msgstr "completar la instalación"
|
227 |
|
228 |
+
#: includes/class-freemius.php:6348
|
229 |
msgid "You are just one step away - %s"
|
230 |
msgstr "Estás a sólo un paso - %s"
|
231 |
|
232 |
+
#: includes/class-freemius.php:6351
|
233 |
msgctxt "%s - plugin name. As complete \"PluginX\" activation now"
|
234 |
msgid "Complete \"%s\" Activation Now"
|
235 |
msgstr "Completar la activación de \"%s\" ahora"
|
236 |
|
237 |
+
#: includes/class-freemius.php:6429
|
238 |
msgid "We made a few tweaks to the %s, %s"
|
239 |
msgstr "Hemos realizado algunas optimizaciones al %s, %s"
|
240 |
|
241 |
+
#: includes/class-freemius.php:6433
|
242 |
+
msgid "Opt in to make \"%s\" better!"
|
243 |
+
msgstr "¡Inscríbite para hacer \"%s\" Mejor!"
|
244 |
|
245 |
+
#: includes/class-freemius.php:6861
|
246 |
msgid "The upgrade of %s was successfully completed."
|
247 |
msgstr "La actualización de %s se completó con éxito."
|
248 |
|
249 |
+
#: includes/class-freemius.php8705, includes/class-fs-plugin-updater.php882,
|
250 |
+
#: includes/class-fs-plugin-updater.php1077,
|
251 |
+
#: includes/class-fs-plugin-updater.php1084,
|
252 |
+
#: templates/auto-installation.php:32
|
253 |
msgid "Add-On"
|
254 |
msgstr "Complemento"
|
255 |
|
256 |
+
#: includes/class-freemius.php8707, templates/debug.php359,
|
257 |
+
#: templates/debug.php:520
|
258 |
msgid "Plugin"
|
259 |
msgstr "Plugin"
|
260 |
|
261 |
+
#: includes/class-freemius.php8708, templates/debug.php359,
|
262 |
+
#: templates/debug.php520, templates/forms/deactivation/form.php:67
|
263 |
msgid "Theme"
|
264 |
msgstr "Tema"
|
265 |
|
266 |
+
#: includes/class-freemius.php:11183
|
267 |
+
msgid "Invalid site details collection."
|
268 |
+
msgstr "Colección de detalles del sitio no válida."
|
269 |
|
270 |
+
#: includes/class-freemius.php:11303
|
271 |
msgid "We couldn't find your email address in the system, are you sure it's the right address?"
|
272 |
msgstr "No podemos encontrar tu dirección de correo electrónico en el sistema, ¿estás seguro de que es la dirección de correo electrónico correcta?"
|
273 |
|
274 |
+
#: includes/class-freemius.php:11305
|
275 |
msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?"
|
276 |
msgstr "No vemos ninguna licencia activa asociada a esa dirección de correo electrónico, ¿estás seguro de que es la dirección de correo electrónico correcta?"
|
277 |
|
278 |
+
#: includes/class-freemius.php:11541
|
279 |
msgid "Account is pending activation."
|
280 |
msgstr "La cuenta está pendiente de activación"
|
281 |
|
282 |
+
#: includes/class-freemius.php11653,
|
283 |
+
#: templates/forms/premium-versions-upgrade-handler.php:47
|
284 |
+
msgid "Buy a license now"
|
285 |
+
msgstr "Compra una licencia ahora"
|
286 |
+
|
287 |
+
#: includes/class-freemius.php11665,
|
288 |
+
#: templates/forms/premium-versions-upgrade-handler.php:46
|
289 |
+
msgid "Renew your license now"
|
290 |
+
msgstr "Renueva tu licencia ahora"
|
291 |
+
|
292 |
+
#: includes/class-freemius.php:11669
|
293 |
+
msgid "%s to access version %s security & feature updates, and support."
|
294 |
+
msgstr "%s para acceder a la versión %s de actualizaciones de funciones, seguridad y soporte."
|
295 |
+
|
296 |
+
#: includes/class-freemius.php:14052
|
297 |
msgid "%s activation was successfully completed."
|
298 |
msgstr "%s activación se completó con éxito."
|
299 |
|
300 |
+
#: includes/class-freemius.php:14066
|
301 |
msgid "Your account was successfully activated with the %s plan."
|
302 |
msgstr "Tu cuenta se ha activado correctamente con el plan %s."
|
303 |
|
304 |
+
#: includes/class-freemius.php14077, includes/class-freemius.php:17259
|
305 |
msgid "Your trial has been successfully started."
|
306 |
msgstr "Tu versión de prueba se ha iniciado con éxito."
|
307 |
|
308 |
+
#: includes/class-freemius.php14647, includes/class-freemius.php14699,
|
309 |
+
#: includes/class-freemius.php:14761
|
310 |
msgid "Couldn't activate %s."
|
311 |
msgstr "No se puede activar %s."
|
312 |
|
313 |
+
#: includes/class-freemius.php14648, includes/class-freemius.php14700,
|
314 |
+
#: includes/class-freemius.php:14762
|
315 |
msgid "Please contact us with the following message:"
|
316 |
msgstr "Por favor contáctanos con el siguiente mensaje:"
|
317 |
|
318 |
+
#: includes/class-freemius.php15111, includes/class-freemius.php:19543
|
319 |
msgid "Upgrade"
|
320 |
msgstr "Actualizar"
|
321 |
|
322 |
+
#: includes/class-freemius.php:15117
|
323 |
msgid "Start Trial"
|
324 |
msgstr "Comenzar el período de prueba"
|
325 |
|
326 |
+
#: includes/class-freemius.php:15119
|
327 |
msgid "Pricing"
|
328 |
msgstr "Precio"
|
329 |
|
330 |
+
#: includes/class-freemius.php15181, includes/class-freemius.php:15183
|
331 |
msgid "Affiliation"
|
332 |
msgstr "Afiliación"
|
333 |
|
334 |
+
#: includes/class-freemius.php15211, includes/class-freemius.php15213,
|
335 |
+
#: templates/account.php150, templates/debug.php:324
|
336 |
msgid "Account"
|
337 |
msgstr "Cuenta"
|
338 |
|
339 |
+
#: includes/class-freemius.php15226, includes/class-freemius.php15228,
|
340 |
#: includes/customizer/class-fs-customizer-support-section.php:60
|
341 |
msgid "Contact Us"
|
342 |
msgstr "Contáctanos"
|
343 |
|
344 |
+
#: includes/class-freemius.php15238, includes/class-freemius.php15240,
|
345 |
+
#: includes/class-freemius.php19553, templates/account.php100,
|
346 |
+
#: templates/account/partials/addon.php:41
|
347 |
msgid "Add-Ons"
|
348 |
msgstr "Complementos"
|
349 |
|
350 |
+
#: includes/class-freemius.php:15274
|
351 |
+
msgctxt "ASCII arrow left icon"
|
352 |
+
msgid "←"
|
353 |
+
msgstr "←"
|
354 |
+
|
355 |
+
#: includes/class-freemius.php:15274
|
356 |
+
msgctxt "ASCII arrow right icon"
|
357 |
+
msgid "➤"
|
358 |
+
msgstr "➤"
|
359 |
+
|
360 |
+
#: includes/class-freemius.php15276, templates/pricing.php:97
|
361 |
msgctxt "noun"
|
362 |
msgid "Pricing"
|
363 |
msgstr "Precio"
|
364 |
|
365 |
+
#: includes/class-freemius.php15479,
|
366 |
#: includes/customizer/class-fs-customizer-support-section.php:67
|
367 |
msgid "Support Forum"
|
368 |
msgstr "Foro de soporte"
|
369 |
|
370 |
+
#: includes/class-freemius.php:16265
|
371 |
msgid "Your email has been successfully verified - you are AWESOME!"
|
372 |
msgstr "Tu email ha sido verificado correctamente - ¡Eres IMPRESIONANTE!"
|
373 |
|
374 |
+
#: includes/class-freemius.php:16266
|
375 |
msgctxt "a positive response"
|
376 |
msgid "Right on"
|
377 |
msgstr "Bien hecho"
|
378 |
|
379 |
+
#: includes/class-freemius.php:16888
|
380 |
msgid "Your %s Add-on plan was successfully upgraded."
|
381 |
msgstr "Tu complemento %s del plan se actualizó con éxito."
|
382 |
|
383 |
+
#: includes/class-freemius.php:16890
|
384 |
msgid "%s Add-on was successfully purchased."
|
385 |
msgstr "El complemento %s ha sido comprado correctamente."
|
386 |
|
387 |
+
#: includes/class-freemius.php:16893
|
388 |
msgid "Download the latest version"
|
389 |
msgstr "Descargar la última versión"
|
390 |
|
391 |
+
#: includes/class-freemius.php:16965
|
392 |
msgctxt "%1s - plugin title, %2s - API domain"
|
393 |
msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s"
|
394 |
msgstr "Tu servidor está bloqueando el acceso a la API de Freemius, que es crucial para la sincronización de licencia %1s. Por favor, ponte en contacto con tu host para que lo añadan a su lista blanca %2s"
|
395 |
|
396 |
+
#: includes/class-freemius.php16968, includes/class-freemius.php17384,
|
397 |
+
#: includes/class-freemius.php:17461
|
398 |
msgid "Error received from the server:"
|
399 |
msgstr "Error recibido del servidor:"
|
400 |
|
401 |
+
#: includes/class-freemius.php:16978
|
402 |
msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again."
|
403 |
msgstr "Parece que uno de los parámetros de autenticación es incorrecto. Actualiza tu clave pública, clave secreta e ID de usuario e inténtelo de nuevo."
|
404 |
|
405 |
+
#: includes/class-freemius.php17160, includes/class-freemius.php17389,
|
406 |
+
#: includes/class-freemius.php17432, includes/class-freemius.php:17535
|
407 |
msgctxt ""
|
408 |
msgid "Hmm"
|
409 |
msgstr "Hmm"
|
410 |
|
411 |
+
#: includes/class-freemius.php:17173
|
412 |
msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry."
|
413 |
msgstr "Parece que todavía estás en el plan %s. Si actualizaste o cambiaste tu plan, probablemente sea un problema de nuestra parte - lo sentimos."
|
414 |
|
415 |
+
#: includes/class-freemius.php17174, templates/account.php102,
|
416 |
+
#: templates/add-ons.php134, templates/account/partials/addon.php:43
|
417 |
msgctxt "trial period"
|
418 |
msgid "Trial"
|
419 |
msgstr "Período de Prueba Gratuito"
|
420 |
|
421 |
+
#: includes/class-freemius.php:17179
|
422 |
msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s."
|
423 |
msgstr "He actualizado mi cuenta, pero cuando intento sincronizar la licencia, el plan sigue siendo %s."
|
424 |
|
425 |
+
#: includes/class-freemius.php17183, includes/class-freemius.php:17241
|
426 |
msgid "Please contact us here"
|
427 |
msgstr "Contacta aquí con nosotros"
|
428 |
|
429 |
+
#: includes/class-freemius.php:17193
|
430 |
msgid "Your plan was successfully upgraded."
|
431 |
msgstr "Tu plan se actualizó con éxito."
|
432 |
|
433 |
+
#: includes/class-freemius.php:17211
|
434 |
msgid "Your plan was successfully changed to %s."
|
435 |
msgstr "Tu plan se cambió correctamente a %s."
|
436 |
|
437 |
+
#: includes/class-freemius.php:17227
|
438 |
msgid "Your license has expired. You can still continue using the free %s forever."
|
439 |
msgstr "Tu licencia ha caducado. Puedes seguir usando el plan gratuito %s para siempre."
|
440 |
|
441 |
+
#: includes/class-freemius.php:17229
|
442 |
msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
443 |
msgstr "Tu licencia ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
|
444 |
|
445 |
+
#: includes/class-freemius.php:17237
|
446 |
msgid "Your license has been cancelled. If you think it's a mistake, please contact support."
|
447 |
msgstr "Tu licencia ha sido cancelada. Si crees que es un error, ponte en contacto con el servicio de asistencia."
|
448 |
|
449 |
+
#: includes/class-freemius.php:17250
|
450 |
msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support."
|
451 |
msgstr "Tu licencia ha caducado. Todavía puedes seguir usando todas las funciones de %s, pero tendrás que renovar tu licencia para seguir recibiendo actualizaciones y soporte."
|
452 |
|
453 |
+
#: includes/class-freemius.php:17273
|
454 |
msgid "Your free trial has expired. You can still continue using all our free features."
|
455 |
msgstr "Tu período de prueba ha caducado. Todavía puedes seguir usando todas nuestras funciones gratuitas."
|
456 |
|
457 |
+
#: includes/class-freemius.php:17275
|
458 |
msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions."
|
459 |
msgstr "Tu período de prueba ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones."
|
460 |
|
461 |
+
#: includes/class-freemius.php:17380
|
462 |
msgid "It looks like the license could not be activated."
|
463 |
msgstr "Parece que la licencia no se pudo activar."
|
464 |
|
465 |
+
#: includes/class-freemius.php:17410
|
466 |
msgid "Your license was successfully activated."
|
467 |
msgstr "Tu licencia fue activada correctamente."
|
468 |
|
469 |
+
#: includes/class-freemius.php:17436
|
470 |
msgid "It looks like your site currently doesn't have an active license."
|
471 |
msgstr "Parece que tu sitio actualmente no tiene una licencia activa."
|
472 |
|
473 |
+
#: includes/class-freemius.php:17460
|
474 |
msgid "It looks like the license deactivation failed."
|
475 |
msgstr "Parece que la desactivación de licencia ha fallado."
|
476 |
|
477 |
+
#: includes/class-freemius.php:17488
|
478 |
msgid "Your license was successfully deactivated, you are back to the %s plan."
|
479 |
msgstr "Tu licencia fue desactivada correctamente, has vuelto al plan %s."
|
480 |
|
481 |
+
#: includes/class-freemius.php:17489
|
482 |
msgid "O.K"
|
483 |
msgstr "O.K"
|
484 |
|
485 |
+
#: includes/class-freemius.php:17542
|
486 |
+
msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes."
|
487 |
+
msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de la suscripción. Vuelve a intentarlo en unos minutos."
|
488 |
|
489 |
+
#: includes/class-freemius.php:17551
|
490 |
+
msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s."
|
491 |
+
msgstr "Tu suscripción ha sido cancelada correctamente. Tu %s licencia del plan caducará en %s."
|
492 |
|
493 |
+
#: includes/class-freemius.php:17593
|
494 |
msgid "You are already running the %s in a trial mode."
|
495 |
msgstr "Estás ejecutando %s en modo de prueba."
|
496 |
|
497 |
+
#: includes/class-freemius.php:17604
|
498 |
msgid "You already utilized a trial before."
|
499 |
msgstr "Ya utilizaste un período de prueba antes."
|
500 |
|
501 |
+
#: includes/class-freemius.php:17618
|
502 |
msgid "Plan %s do not exist, therefore, can't start a trial."
|
503 |
msgstr "El plan %s no existe, por lo tanto, no puedes comenzar un período de prueba."
|
504 |
|
505 |
+
#: includes/class-freemius.php:17629
|
506 |
msgid "Plan %s does not support a trial period."
|
507 |
msgstr "El plan %s no admite un período de prueba."
|
508 |
|
509 |
+
#: includes/class-freemius.php:17640
|
510 |
msgid "None of the %s's plans supports a trial period."
|
511 |
msgstr "Ninguno de los planes de %s soportan un período de prueba."
|
512 |
|
513 |
+
#: includes/class-freemius.php:17690
|
514 |
msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)"
|
515 |
msgstr "Parece que ya no estás en modo de prueba, así que no hay nada que cancelar :)"
|
516 |
|
517 |
+
#: includes/class-freemius.php:17726
|
|
|
|
|
|
|
|
|
518 |
msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes."
|
519 |
msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de prueba. Vuelve a intentarlo en unos minutos."
|
520 |
|
521 |
+
#: includes/class-freemius.php:17745
|
522 |
+
msgid "Your %s free trial was successfully cancelled."
|
523 |
+
msgstr "Tu prueba gratuita de %s fue cancelada con éxito."
|
524 |
+
|
525 |
+
#: includes/class-freemius.php:18052
|
526 |
msgid "Version %s was released."
|
527 |
msgstr "La versión %s se ha lanzado."
|
528 |
|
529 |
+
#: includes/class-freemius.php:18052
|
530 |
msgid "Please download %s."
|
531 |
msgstr "Por favor descarga %s."
|
532 |
|
533 |
+
#: includes/class-freemius.php:18059
|
534 |
msgid "the latest %s version here"
|
535 |
msgstr "la última versión %s aquí"
|
536 |
|
537 |
+
#: includes/class-freemius.php:18064
|
538 |
msgid "New"
|
539 |
msgstr "Nuevo"
|
540 |
|
541 |
+
#: includes/class-freemius.php:18069
|
542 |
msgid "Seems like you got the latest release."
|
543 |
msgstr "Parece que tienes la última versión."
|
544 |
|
545 |
+
#: includes/class-freemius.php:18070
|
546 |
msgid "You are all good!"
|
547 |
msgstr "¡Está todo listo!"
|
548 |
|
549 |
+
#: includes/class-freemius.php:18338
|
550 |
msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box."
|
551 |
msgstr "El correo de verificación se acaba de enviar a %s. Si no puedes encontrarlo después de 5 min, comprueba tu carpeta de spam."
|
552 |
|
553 |
+
#: includes/class-freemius.php:18473
|
554 |
msgid "Site successfully opted in."
|
555 |
msgstr "Sitio dado de alta correctamente."
|
556 |
|
557 |
+
#: includes/class-freemius.php18474, includes/class-freemius.php:19285
|
558 |
msgid "Awesome"
|
559 |
msgstr "Increíble"
|
560 |
|
561 |
+
#: includes/class-freemius.php18490, templates/forms/optout.php:32
|
562 |
msgid "We appreciate your help in making the %s better by letting us track some usage data."
|
563 |
msgstr "Agradecemos tu ayuda para mejorar %s y por permitirnos rastrear algunos datos de uso."
|
564 |
|
565 |
+
#: includes/class-freemius.php:18491
|
566 |
msgid "Thank you!"
|
567 |
msgstr "¡Gracias!"
|
568 |
|
569 |
+
#: includes/class-freemius.php:18498
|
570 |
msgid "We will no longer be sending any usage data of %s on %s to %s."
|
571 |
msgstr "No continuaremos enviando datos de uso de %s en %s a %s."
|
572 |
|
573 |
+
#: includes/class-freemius.php:18627
|
574 |
msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder."
|
575 |
msgstr "Comprueba tu buzón de correo, debes recibir un correo electrónico a través de %s para confirmar el cambio de propiedad. Por razones de seguridad, debes confirmar el cambio dentro de los próximos 15 min. Si no puedes encontrar el correo electrónico, comprueba tu carpeta de correo no deseado."
|
576 |
|
577 |
+
#: includes/class-freemius.php:18633
|
578 |
msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval."
|
579 |
msgstr "Gracias por confirmar el cambio de propiedad. Se envió un correo
|