Compare commits
79 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d32749489 | ||
|
|
d911a16684 | ||
|
|
d7193bc755 | ||
|
|
aee9ffdb9c | ||
|
|
1f627d5e49 | ||
|
|
bb67626d09 | ||
|
|
4e0153e94a | ||
|
|
065142ff19 | ||
|
|
8bb6fae52f | ||
|
|
8cb7b81903 | ||
|
|
cb214ccda9 | ||
|
|
3fa7b96f27 | ||
|
|
7c8e259072 | ||
|
|
743d067042 | ||
|
|
50ea410718 | ||
|
|
e71182aed2 | ||
|
|
97f7963e0b | ||
|
|
6cea6a10bd | ||
|
|
344d41e365 | ||
|
|
597a8adfed | ||
|
|
5682e5483a | ||
|
|
18779edd7d | ||
|
|
63aeaea77a | ||
|
|
f51e48cb40 | ||
|
|
193372c79c | ||
|
|
34d0afe7e5 | ||
|
|
d33a9dd56d | ||
|
|
af2be90176 | ||
|
|
701fb21544 | ||
|
|
c8f010d9a6 | ||
|
|
c1ca7580e2 | ||
|
|
11d3c2cbf1 | ||
|
|
412f576aee | ||
|
|
ff98a7b23b | ||
|
|
507bac8542 | ||
|
|
3bd6cf4805 | ||
|
|
5712b31869 | ||
|
|
b0f9a0b18f | ||
|
|
f7665b460e | ||
|
|
100029b640 | ||
|
|
2b89bddf0f | ||
|
|
ca46bad8ec | ||
|
|
1ecd2600a3 | ||
|
|
28306b126b | ||
|
|
5c842e192b | ||
|
|
f9f307118d | ||
|
|
2266fa4f4b | ||
|
|
6df2564d1a | ||
|
|
b2a62ebd26 | ||
|
|
2fca30752a | ||
|
|
210eced369 | ||
|
|
08c574aff8 | ||
|
|
f4db2d65f1 | ||
|
|
23b02ade96 | ||
|
|
71d35b16ac | ||
|
|
200058c52a | ||
|
|
edb5fb202a | ||
|
|
d114c25cdb | ||
|
|
64e469568b | ||
|
|
c63d777372 | ||
|
|
ae343b8cb0 | ||
|
|
86eb5d2d57 | ||
|
|
b562d241db | ||
|
|
49b1829b78 | ||
|
|
1a5bf4035c | ||
|
|
f3810a1504 | ||
|
|
4831760c11 | ||
|
|
f375d8991e | ||
|
|
8145a4a3a6 | ||
|
|
12c9b49d4c | ||
|
|
c8eb81161e | ||
|
|
8ab246a66c | ||
|
|
8dfc4797fa | ||
|
|
7888fe1176 | ||
|
|
8a6f3056a3 | ||
|
|
5fbdf9e013 | ||
|
|
1da2f5e823 | ||
|
|
888779f81b | ||
|
|
352286e497 |
@@ -1,3 +1,14 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Before submitting an issue, please make sure you fully read any potential error messages output and did some research on your own.
|
||||
|
||||
### Subject of the issue
|
||||
Describe your issue here.
|
||||
|
||||
@@ -24,4 +35,4 @@ Things you have tried (where relevant):
|
||||
* Update Ruby to the latest version [ ]
|
||||
* Ensure you can reach the target site using cURL [ ]
|
||||
* Proxied WPScan through a HTTP proxy to view the raw traffic [ ]
|
||||
* Ensure you are using a supported Operating System (Linux and macOS) [ ]
|
||||
* Ensure you are using a supported Operating System (Linux and macOS) [ ]
|
||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe alternatives you've considered**
|
||||
A clear and concise description of any alternative solutions or features you've considered.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
||||
10
.github/ISSUE_TEMPLATE/other-issue.md
vendored
Normal file
10
.github/ISSUE_TEMPLATE/other-issue.md
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
name: Other Issue
|
||||
about: Create a report which is not a related to a Bug or Feature
|
||||
title: ''
|
||||
labels: ''
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Before submitting an issue, please make sure you fully read any potential error messages output and did some research on your own.
|
||||
@@ -1,5 +1,6 @@
|
||||
require: rubocop-performance
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.3
|
||||
TargetRubyVersion: 2.4
|
||||
Exclude:
|
||||
- '*.gemspec'
|
||||
- 'vendor/**/*'
|
||||
|
||||
11
.travis.yml
11
.travis.yml
@@ -2,20 +2,12 @@ language: ruby
|
||||
sudo: false
|
||||
cache: bundler
|
||||
rvm:
|
||||
- 2.3.0
|
||||
- 2.3.1
|
||||
- 2.3.2
|
||||
- 2.3.3
|
||||
- 2.3.4
|
||||
- 2.3.5
|
||||
- 2.3.6
|
||||
- 2.3.7
|
||||
- 2.3.8
|
||||
- 2.4.1
|
||||
- 2.4.2
|
||||
- 2.4.3
|
||||
- 2.4.4
|
||||
- 2.4.5
|
||||
- 2.4.6
|
||||
- 2.5.0
|
||||
- 2.5.1
|
||||
- 2.5.2
|
||||
@@ -25,6 +17,7 @@ rvm:
|
||||
- 2.6.0
|
||||
- 2.6.1
|
||||
- 2.6.2
|
||||
- 2.6.3
|
||||
- ruby-head
|
||||
before_install:
|
||||
- "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"
|
||||
|
||||
@@ -25,13 +25,16 @@ LABEL maintainer="WPScan Team <team@wpscan.org>"
|
||||
RUN adduser -h /wpscan -g WPScan -D wpscan
|
||||
|
||||
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
||||
|
||||
RUN chown -R wpscan:wpscan /wpscan
|
||||
|
||||
# runtime dependencies
|
||||
RUN apk add --no-cache libcurl procps sqlite-libs
|
||||
|
||||
WORKDIR /wpscan
|
||||
|
||||
USER wpscan
|
||||
|
||||
RUN /usr/local/bundle/bin/wpscan --update --verbose
|
||||
|
||||
ENTRYPOINT ["/usr/local/bundle/bin/wpscan"]
|
||||
|
||||
2
Gemfile
2
Gemfile
@@ -2,3 +2,5 @@
|
||||
|
||||
source 'https://rubygems.org'
|
||||
gemspec
|
||||
|
||||
# gem 'cms_scanner', branch: 'xxx', git: 'https://github.com/wpscanteam/CMSScanner.git'
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
- Curl >= 7.21 - Recommended: latest
|
||||
- The 7.29 has a segfault
|
||||
- RubyGems - Recommended: latest
|
||||
- Nokogiri might require packages to be installed via your package manager depending on your OS, see https://nokogiri.org/tutorials/installing_nokogiri.html
|
||||
|
||||
### From RubyGems (Recommended)
|
||||
|
||||
|
||||
@@ -27,38 +27,41 @@ module WPScan
|
||||
# @return [ Boolean ]
|
||||
def update_db_required?
|
||||
if local_db.missing_files?
|
||||
raise Error::MissingDatabaseFile if parsed_options[:update] == false
|
||||
raise Error::MissingDatabaseFile if ParsedCli.update == false
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
return parsed_options[:update] unless parsed_options[:update].nil?
|
||||
return ParsedCli.update unless ParsedCli.update.nil?
|
||||
|
||||
return false unless user_interaction? && local_db.outdated?
|
||||
|
||||
output('@notice', msg: 'It seems like you have not updated the database for some time.')
|
||||
print '[?] Do you want to update now? [Y]es [N]o, default: [N]'
|
||||
|
||||
Readline.readline =~ /^y/i ? true : false
|
||||
/^y/i.match?(Readline.readline) ? true : false
|
||||
end
|
||||
|
||||
def update_db
|
||||
output('db_update_started')
|
||||
output('db_update_finished', updated: local_db.update, verbose: parsed_options[:verbose])
|
||||
output('db_update_finished', updated: local_db.update, verbose: ParsedCli.verbose)
|
||||
|
||||
exit(0) unless parsed_options[:url]
|
||||
exit(0) unless ParsedCli.url
|
||||
end
|
||||
|
||||
def before_scan
|
||||
@last_update = local_db.last_update
|
||||
|
||||
maybe_output_banner_help_and_version # From CMS Scanner
|
||||
maybe_output_banner_help_and_version # From CMSScanner
|
||||
|
||||
update_db if update_db_required?
|
||||
setup_cache
|
||||
check_target_availability
|
||||
load_server_module
|
||||
check_wordpress_state
|
||||
rescue Error::NotWordPress => e
|
||||
target.maybe_add_cookies
|
||||
raise e unless target.wordpress?(ParsedCli.detection_mode)
|
||||
end
|
||||
|
||||
# Raises errors if the target is hosted on wordpress.com or is not running WordPress
|
||||
@@ -66,14 +69,14 @@ module WPScan
|
||||
def check_wordpress_state
|
||||
raise Error::WordPressHosted if target.wordpress_hosted?
|
||||
|
||||
if Addressable::URI.parse(target.homepage_url).path =~ %r{/wp-admin/install.php$}i
|
||||
if %r{/wp-admin/install.php$}i.match?(Addressable::URI.parse(target.homepage_url).path)
|
||||
|
||||
output('not_fully_configured', url: target.homepage_url)
|
||||
|
||||
exit(WPScan::ExitCode::VULNERABLE)
|
||||
end
|
||||
|
||||
raise Error::NotWordPress unless target.wordpress?(parsed_options[:detection_mode]) || parsed_options[:force]
|
||||
raise Error::NotWordPress unless target.wordpress?(ParsedCli.detection_mode) || ParsedCli.force
|
||||
end
|
||||
|
||||
# Loads the related server module in the target
|
||||
@@ -85,7 +88,7 @@ module WPScan
|
||||
server = target.server || :Apache # Tries to auto detect the server
|
||||
|
||||
# Force a specific server module to be loaded if supplied
|
||||
case parsed_options[:server]
|
||||
case ParsedCli.server
|
||||
when :apache
|
||||
server = :Apache
|
||||
when :iis
|
||||
|
||||
@@ -7,16 +7,18 @@ module WPScan
|
||||
class CustomDirectories < CMSScanner::Controller::Base
|
||||
def cli_options
|
||||
[
|
||||
OptString.new(['--wp-content-dir DIR']),
|
||||
OptString.new(['--wp-plugins-dir DIR'])
|
||||
OptString.new(['--wp-content-dir DIR',
|
||||
'The wp-content directory if custom or not detected, such as "wp-content"']),
|
||||
OptString.new(['--wp-plugins-dir DIR',
|
||||
'The plugins directory if custom or not detected, such as "wp-content/plugins"'])
|
||||
]
|
||||
end
|
||||
|
||||
def before_scan
|
||||
target.content_dir = parsed_options[:wp_content_dir] if parsed_options[:wp_content_dir]
|
||||
target.plugins_dir = parsed_options[:wp_plugins_dir] if parsed_options[:wp_plugins_dir]
|
||||
target.content_dir = ParsedCli.wp_content_dir if ParsedCli.wp_content_dir
|
||||
target.plugins_dir = ParsedCli.wp_plugins_dir if ParsedCli.wp_plugins_dir
|
||||
|
||||
return if target.content_dir
|
||||
return if target.content_dir(ParsedCli.detection_mode)
|
||||
|
||||
raise Error::WpContentDirNotDetected
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ module WPScan
|
||||
end
|
||||
|
||||
def run
|
||||
enum = parsed_options[:enumerate] || {}
|
||||
enum = ParsedCli.enumerate || {}
|
||||
|
||||
enum_plugins if enum_plugins?(enum)
|
||||
enum_themes if enum_themes?(enum)
|
||||
|
||||
@@ -7,13 +7,13 @@ module WPScan
|
||||
# @param [ String ] type (plugins or themes)
|
||||
# @param [ Symbol ] detection_mode
|
||||
#
|
||||
# @return [ String ] The related enumration message depending on the parsed_options and type supplied
|
||||
# @return [ String ] The related enumration message depending on the ParsedCli and type supplied
|
||||
def enum_message(type, detection_mode)
|
||||
return unless %w[plugins themes].include?(type)
|
||||
|
||||
details = if parsed_options[:enumerate][:"vulnerable_#{type}"]
|
||||
details = if ParsedCli.enumerate[:"vulnerable_#{type}"]
|
||||
'Vulnerable'
|
||||
elsif parsed_options[:enumerate][:"all_#{type}"]
|
||||
elsif ParsedCli.enumerate[:"all_#{type}"]
|
||||
'All'
|
||||
else
|
||||
'Most Popular'
|
||||
@@ -39,15 +39,15 @@ module WPScan
|
||||
#
|
||||
# @return [ Hash ]
|
||||
def default_opts(type)
|
||||
mode = parsed_options[:"#{type}_detection"] || parsed_options[:detection_mode]
|
||||
mode = ParsedCli.options[:"#{type}_detection"] || ParsedCli.detection_mode
|
||||
|
||||
{
|
||||
mode: mode,
|
||||
exclude_content: parsed_options[:exclude_content_based],
|
||||
exclude_content: ParsedCli.exclude_content_based,
|
||||
show_progression: user_interaction?,
|
||||
version_detection: {
|
||||
mode: parsed_options[:"#{type}_version_detection"] || mode,
|
||||
confidence_threshold: parsed_options[:"#{type}_version_all"] ? 0 : 100
|
||||
mode: ParsedCli.options[:"#{type}_version_detection"] || mode,
|
||||
confidence_threshold: ParsedCli.options[:"#{type}_version_all"] ? 0 : 100
|
||||
}
|
||||
}
|
||||
end
|
||||
@@ -61,7 +61,7 @@ module WPScan
|
||||
|
||||
def enum_plugins
|
||||
opts = default_opts('plugins').merge(
|
||||
list: plugins_list_from_opts(parsed_options),
|
||||
list: plugins_list_from_opts(ParsedCli.options),
|
||||
sort: true
|
||||
)
|
||||
|
||||
@@ -77,7 +77,7 @@ module WPScan
|
||||
|
||||
plugins.each(&:version)
|
||||
|
||||
plugins.select!(&:vulnerable?) if parsed_options[:enumerate][:vulnerable_plugins]
|
||||
plugins.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_plugins]
|
||||
|
||||
output('plugins', plugins: plugins)
|
||||
end
|
||||
@@ -107,7 +107,7 @@ module WPScan
|
||||
|
||||
def enum_themes
|
||||
opts = default_opts('themes').merge(
|
||||
list: themes_list_from_opts(parsed_options),
|
||||
list: themes_list_from_opts(ParsedCli.options),
|
||||
sort: true
|
||||
)
|
||||
|
||||
@@ -123,7 +123,7 @@ module WPScan
|
||||
|
||||
themes.each(&:version)
|
||||
|
||||
themes.select!(&:vulnerable?) if parsed_options[:enumerate][:vulnerable_themes]
|
||||
themes.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_themes]
|
||||
|
||||
output('themes', themes: themes)
|
||||
end
|
||||
@@ -145,28 +145,28 @@ module WPScan
|
||||
end
|
||||
|
||||
def enum_timthumbs
|
||||
opts = default_opts('timthumbs').merge(list: parsed_options[:timthumbs_list])
|
||||
opts = default_opts('timthumbs').merge(list: ParsedCli.timthumbs_list)
|
||||
|
||||
output('@info', msg: "Enumerating Timthumbs #{enum_detection_message(opts[:mode])}") if user_interaction?
|
||||
output('timthumbs', timthumbs: target.timthumbs(opts))
|
||||
end
|
||||
|
||||
def enum_config_backups
|
||||
opts = default_opts('config_backups').merge(list: parsed_options[:config_backups_list])
|
||||
opts = default_opts('config_backups').merge(list: ParsedCli.config_backups_list)
|
||||
|
||||
output('@info', msg: "Enumerating Config Backups #{enum_detection_message(opts[:mode])}") if user_interaction?
|
||||
output('config_backups', config_backups: target.config_backups(opts))
|
||||
end
|
||||
|
||||
def enum_db_exports
|
||||
opts = default_opts('db_exports').merge(list: parsed_options[:db_exports_list])
|
||||
opts = default_opts('db_exports').merge(list: ParsedCli.db_exports_list)
|
||||
|
||||
output('@info', msg: "Enumerating DB Exports #{enum_detection_message(opts[:mode])}") if user_interaction?
|
||||
output('db_exports', db_exports: target.db_exports(opts))
|
||||
end
|
||||
|
||||
def enum_medias
|
||||
opts = default_opts('medias').merge(range: parsed_options[:enumerate][:medias])
|
||||
opts = default_opts('medias').merge(range: ParsedCli.enumerate[:medias])
|
||||
|
||||
if user_interaction?
|
||||
output('@info',
|
||||
@@ -181,13 +181,13 @@ module WPScan
|
||||
#
|
||||
# @return [ Boolean ] Wether or not to enumerate the users
|
||||
def enum_users?(opts)
|
||||
opts[:users] || (parsed_options[:passwords] && !parsed_options[:username] && !parsed_options[:usernames])
|
||||
opts[:users] || (ParsedCli.passwords && !ParsedCli.username && !ParsedCli.usernames)
|
||||
end
|
||||
|
||||
def enum_users
|
||||
opts = default_opts('users').merge(
|
||||
range: enum_users_range,
|
||||
list: parsed_options[:users_list]
|
||||
list: ParsedCli.users_list
|
||||
)
|
||||
|
||||
output('@info', msg: "Enumerating Users #{enum_detection_message(opts[:mode])}") if user_interaction?
|
||||
@@ -198,7 +198,7 @@ module WPScan
|
||||
# If the --enumerate is used, the default value is handled by the Option
|
||||
# However, when using --passwords alone, the default has to be set by the code below
|
||||
def enum_users_range
|
||||
parsed_options[:enumerate][:users] || cli_enum_choices[0].choices[:u].validate(nil)
|
||||
ParsedCli.enumerate[:users] || cli_enum_choices[0].choices[:u].validate(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -18,9 +18,9 @@ module WPScan
|
||||
output(
|
||||
'theme',
|
||||
theme: target.main_theme(
|
||||
mode: parsed_options[:main_theme_detection] || parsed_options[:detection_mode]
|
||||
mode: ParsedCli.main_theme_detection || ParsedCli.detection_mode
|
||||
),
|
||||
verbose: parsed_options[:verbose]
|
||||
verbose: ParsedCli.verbose
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -24,7 +24,7 @@ module WPScan
|
||||
end
|
||||
|
||||
def run
|
||||
return unless parsed_options[:passwords]
|
||||
return unless ParsedCli.passwords
|
||||
|
||||
if user_interaction?
|
||||
output('@info',
|
||||
@@ -33,13 +33,13 @@ module WPScan
|
||||
|
||||
attack_opts = {
|
||||
show_progression: user_interaction?,
|
||||
multicall_max_passwords: parsed_options[:multicall_max_passwords]
|
||||
multicall_max_passwords: ParsedCli.multicall_max_passwords
|
||||
}
|
||||
|
||||
begin
|
||||
found = []
|
||||
|
||||
attacker.attack(users, passwords(parsed_options[:passwords]), attack_opts) do |user|
|
||||
attacker.attack(users, passwords(ParsedCli.passwords), attack_opts) do |user|
|
||||
found << user
|
||||
|
||||
attacker.progress_bar.log("[SUCCESS] - #{user.username} / #{user.password}")
|
||||
@@ -61,42 +61,55 @@ module WPScan
|
||||
|
||||
# @return [ CMSScanner::Finders::Finder ]
|
||||
def attacker_from_cli_options
|
||||
return unless parsed_options[:password_attack]
|
||||
return unless ParsedCli.password_attack
|
||||
|
||||
case parsed_options[:password_attack]
|
||||
case ParsedCli.password_attack
|
||||
when :wp_login
|
||||
WPScan::Finders::Passwords::WpLogin.new(target)
|
||||
Finders::Passwords::WpLogin.new(target)
|
||||
when :xmlrpc
|
||||
raise Error::XMLRPCNotDetected unless xmlrpc
|
||||
|
||||
WPScan::Finders::Passwords::XMLRPC.new(xmlrpc)
|
||||
Finders::Passwords::XMLRPC.new(xmlrpc)
|
||||
when :xmlrpc_multicall
|
||||
raise Error::XMLRPCNotDetected unless xmlrpc
|
||||
|
||||
WPScan::Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
|
||||
Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
|
||||
end
|
||||
end
|
||||
|
||||
# @return [ Boolean ]
|
||||
def xmlrpc_get_users_blogs_enabled?
|
||||
if xmlrpc&.enabled? &&
|
||||
xmlrpc.available_methods.include?('wp.getUsersBlogs') &&
|
||||
xmlrpc.method_call('wp.getUsersBlogs', [SecureRandom.hex[0, 6], SecureRandom.hex[0, 4]])
|
||||
.run.body !~ /XML\-RPC services are disabled/
|
||||
|
||||
true
|
||||
else
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
# @return [ CMSScanner::Finders::Finder ]
|
||||
def attacker_from_automatic_detection
|
||||
if xmlrpc&.enabled? && xmlrpc.available_methods.include?('wp.getUsersBlogs')
|
||||
if xmlrpc_get_users_blogs_enabled?
|
||||
wp_version = target.wp_version
|
||||
|
||||
if wp_version && wp_version < '4.4'
|
||||
WPScan::Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
|
||||
Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
|
||||
else
|
||||
WPScan::Finders::Passwords::XMLRPC.new(xmlrpc)
|
||||
Finders::Passwords::XMLRPC.new(xmlrpc)
|
||||
end
|
||||
else
|
||||
WPScan::Finders::Passwords::WpLogin.new(target)
|
||||
Finders::Passwords::WpLogin.new(target)
|
||||
end
|
||||
end
|
||||
|
||||
# @return [ Array<Users> ] The users to brute force
|
||||
def users
|
||||
return target.users unless parsed_options[:usernames]
|
||||
return target.users unless ParsedCli.usernames
|
||||
|
||||
parsed_options[:usernames].reduce([]) do |acc, elem|
|
||||
ParsedCli.usernames.reduce([]) do |acc, elem|
|
||||
acc << Model::User.new(elem.chomp)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,15 +17,15 @@ module WPScan
|
||||
end
|
||||
|
||||
def before_scan
|
||||
WPScan::DB::DynamicFinders::Wordpress.create_versions_finders
|
||||
DB::DynamicFinders::Wordpress.create_versions_finders
|
||||
end
|
||||
|
||||
def run
|
||||
output(
|
||||
'version',
|
||||
version: target.wp_version(
|
||||
mode: parsed_options[:wp_version_detection] || parsed_options[:detection_mode],
|
||||
confidence_threshold: parsed_options[:wp_version_all] ? 0 : 100,
|
||||
mode: ParsedCli.wp_version_detection || ParsedCli.detection_mode,
|
||||
confidence_threshold: ParsedCli.wp_version_all ? 0 : 100,
|
||||
show_progression: user_interaction?
|
||||
)
|
||||
)
|
||||
|
||||
@@ -14,7 +14,7 @@ module WPScan
|
||||
|
||||
Model::EmergencyPwdResetScript.new(
|
||||
target.url(path),
|
||||
confidence: res.body =~ /password/i ? 100 : 40,
|
||||
confidence: /password/i.match?(res.body) ? 100 : 40,
|
||||
found_by: DIRECT_ACCESS,
|
||||
references: {
|
||||
url: 'https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script'
|
||||
|
||||
@@ -9,11 +9,13 @@ module WPScan
|
||||
def passive(_opts = {})
|
||||
pattern = %r{#{target.content_dir}/mu\-plugins/}i
|
||||
|
||||
target.in_scope_urls(target.homepage_res) do |url|
|
||||
next unless Addressable::URI.parse(url).path =~ pattern
|
||||
target.in_scope_uris(target.homepage_res) do |uri|
|
||||
next unless uri.path =~ pattern
|
||||
|
||||
url = target.url('wp-content/mu-plugins/')
|
||||
|
||||
target.mu_plugins = true
|
||||
|
||||
return Model::MuPlugins.new(
|
||||
url,
|
||||
confidence: 70,
|
||||
@@ -33,8 +35,6 @@ module WPScan
|
||||
return unless [200, 401, 403].include?(res.code)
|
||||
return if target.homepage_or_404?(res)
|
||||
|
||||
# TODO: add the check for --exclude-content once implemented ?
|
||||
|
||||
target.mu_plugins = true
|
||||
|
||||
Model::MuPlugins.new(
|
||||
|
||||
@@ -20,10 +20,10 @@ module WPScan
|
||||
end
|
||||
|
||||
def passive_from_css_href(res, opts)
|
||||
target.in_scope_urls(res, '//style/@src|//link/@href') do |url|
|
||||
next unless Addressable::URI.parse(url).path =~ %r{/themes/([^\/]+)/style.css\z}i
|
||||
target.in_scope_uris(res, '//style/@src|//link/@href') do |uri|
|
||||
next unless uri.path =~ %r{/themes/([^\/]+)/style.css\z}i
|
||||
|
||||
return create_theme(Regexp.last_match[1], url, opts)
|
||||
return create_theme(Regexp.last_match[1], uri.to_s, opts)
|
||||
end
|
||||
nil
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from Dynamic Finder 'BodyPattern'
|
||||
class BodyPattern < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class BodyPattern < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 30
|
||||
|
||||
# @param [ Hash ] opts The options from the #passive, #aggressive methods
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from the Dynamic Finder 'Comment'
|
||||
class Comment < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class Comment < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 30
|
||||
|
||||
# @param [ Hash ] opts The options from the #passive, #aggressive methods
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from Dynamic Finder 'ConfigParser'
|
||||
class ConfigParser < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class ConfigParser < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 40
|
||||
|
||||
# @param [ Hash ] opts The options from the #passive, #aggressive methods
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from Dynamic Finder 'HeaderPattern'
|
||||
class HeaderPattern < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class HeaderPattern < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 30
|
||||
|
||||
# @param [ Hash ] opts
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from the Dynamic Finder 'JavascriptVar'
|
||||
class JavascriptVar < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class JavascriptVar < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 60
|
||||
|
||||
# @param [ Hash ] opts The options from the #passive, #aggressive methods
|
||||
|
||||
@@ -9,7 +9,7 @@ module WPScan
|
||||
|
||||
# @return [ Array<Integer> ]
|
||||
def valid_response_codes
|
||||
@valid_response_codes ||= [200, 401, 403, 301, 500].freeze
|
||||
@valid_response_codes ||= [200, 401, 403, 500].freeze
|
||||
end
|
||||
|
||||
# @param [ Hash ] opts
|
||||
@@ -19,7 +19,7 @@ module WPScan
|
||||
def aggressive(opts = {})
|
||||
found = []
|
||||
|
||||
enumerate(target_urls(opts), opts.merge(check_full_response: [200, 401, 403, 500])) do |_res, slug|
|
||||
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
|
||||
found << Model::Plugin.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
|
||||
end
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from Dynamic Finder 'QueryParameter'
|
||||
class QueryParameter < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class QueryParameter < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 10
|
||||
|
||||
def passive(_opts = {})
|
||||
|
||||
@@ -4,7 +4,7 @@ module WPScan
|
||||
module Finders
|
||||
module Plugins
|
||||
# Plugins finder from the Dynamic Finder 'Xpath'
|
||||
class Xpath < WPScan::Finders::DynamicFinder::WpItems::Finder
|
||||
class Xpath < Finders::DynamicFinder::WpItems::Finder
|
||||
DEFAULT_CONFIDENCE = 40
|
||||
|
||||
# @param [ Hash ] opts The options from the #passive, #aggressive methods
|
||||
|
||||
@@ -9,7 +9,7 @@ module WPScan
|
||||
|
||||
# @return [ Array<Integer> ]
|
||||
def valid_response_codes
|
||||
@valid_response_codes ||= [200, 401, 403, 301, 500].freeze
|
||||
@valid_response_codes ||= [200, 401, 403, 500].freeze
|
||||
end
|
||||
|
||||
# @param [ Hash ] opts
|
||||
@@ -19,7 +19,7 @@ module WPScan
|
||||
def aggressive(opts = {})
|
||||
found = []
|
||||
|
||||
enumerate(target_urls(opts), opts.merge(check_full_response: [200, 401, 403, 500])) do |_res, slug|
|
||||
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
|
||||
found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
|
||||
end
|
||||
|
||||
|
||||
@@ -7,6 +7,11 @@ module WPScan
|
||||
class AuthorIdBruteForcing < CMSScanner::Finders::Finder
|
||||
include CMSScanner::Finders::Finder::Enumerator
|
||||
|
||||
# @return [ Array<Integer> ]
|
||||
def valid_response_codes
|
||||
@valid_response_codes ||= [200, 301, 302]
|
||||
end
|
||||
|
||||
# @param [ Hash ] opts
|
||||
# @option opts [ Range ] :range Mandatory
|
||||
#
|
||||
@@ -15,7 +20,7 @@ module WPScan
|
||||
found = []
|
||||
found_by_msg = 'Author Id Brute Forcing - %s (Aggressive Detection)'
|
||||
|
||||
enumerate(target_urls(opts), opts) do |res, id|
|
||||
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, id|
|
||||
username, found_by, confidence = potential_username(res)
|
||||
|
||||
next unless username
|
||||
@@ -49,7 +54,7 @@ module WPScan
|
||||
super(opts.merge(title: ' Brute Forcing Author IDs -'))
|
||||
end
|
||||
|
||||
def request_params
|
||||
def full_request_params
|
||||
{ followlocation: true }
|
||||
end
|
||||
|
||||
@@ -78,8 +83,8 @@ module WPScan
|
||||
# @return [ String, nil ] The username found
|
||||
def username_from_response(res)
|
||||
# Permalink enabled
|
||||
target.in_scope_urls(res, '//link/@href|//a/@href') do |url|
|
||||
username = username_from_author_url(url)
|
||||
target.in_scope_uris(res, '//link/@href|//a/@href') do |uri|
|
||||
username = username_from_author_url(uri.to_s)
|
||||
return username if username
|
||||
end
|
||||
|
||||
|
||||
@@ -45,12 +45,10 @@ module WPScan
|
||||
def potential_usernames(res)
|
||||
usernames = []
|
||||
|
||||
target.in_scope_urls(res, '//a/@href') do |url, node|
|
||||
uri = Addressable::URI.parse(url)
|
||||
|
||||
target.in_scope_uris(res, '//a/@href') do |uri, node|
|
||||
if uri.path =~ %r{/author/([^/\b]+)/?\z}i
|
||||
usernames << [Regexp.last_match[1], 'Author Pattern', 100]
|
||||
elsif uri.query =~ /author=[0-9]+/
|
||||
elsif /author=[0-9]+/.match?(uri.query)
|
||||
usernames << [node.text.to_s.strip, 'Display Name', 30]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ module WPScan
|
||||
# Users disclosed from the dc:creator field in the RSS
|
||||
# The names disclosed are display names, however depending on the configuration of the blog,
|
||||
# they can be the same than usernames
|
||||
class RSSGenerator < WPScan::Finders::WpVersion::RSSGenerator
|
||||
class RSSGenerator < Finders::WpVersion::RSSGenerator
|
||||
def process_urls(urls, _opts = {})
|
||||
found = []
|
||||
|
||||
|
||||
@@ -57,9 +57,7 @@ module WPScan
|
||||
def api_url
|
||||
return @api_url if @api_url
|
||||
|
||||
target.in_scope_urls(target.homepage_res, "//link[@rel='https://api.w.org/']/@href").each do |url, _tag|
|
||||
uri = Addressable::URI.parse(url.strip)
|
||||
|
||||
target.in_scope_uris(target.homepage_res, "//link[@rel='https://api.w.org/']/@href").each do |uri|
|
||||
return @api_url = uri.join('wp/v2/users/').to_s if uri.path.include?('wp-json')
|
||||
end
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@ module WPScan
|
||||
def items_from_links(type, uniq = true)
|
||||
found = []
|
||||
|
||||
target.in_scope_urls(target.homepage_res) do |url|
|
||||
next unless url =~ item_attribute_pattern(type)
|
||||
target.in_scope_uris(target.homepage_res) do |uri|
|
||||
next unless uri.to_s =~ item_attribute_pattern(type)
|
||||
|
||||
found << Regexp.last_match[1]
|
||||
end
|
||||
|
||||
@@ -28,7 +28,7 @@ module WPScan
|
||||
# @param [ WPScan::Target ] target
|
||||
def initialize(target)
|
||||
(%w[RSSGenerator AtomGenerator RDFGenerator] +
|
||||
WPScan::DB::DynamicFinders::Wordpress.versions_finders_configs.keys +
|
||||
DB::DynamicFinders::Wordpress.versions_finders_configs.keys +
|
||||
%w[Readme UniqueFingerprinting]
|
||||
).each do |finder_name|
|
||||
finders << WpVersion.const_get(finder_name.to_sym).new(target)
|
||||
|
||||
@@ -63,7 +63,7 @@ module WPScan
|
||||
def webshot_enabled?
|
||||
res = Browser.get(url, params: { webshot: 1, src: "http://#{default_allowed_domains.sample}" })
|
||||
|
||||
res.body =~ /WEBSHOT_ENABLED == true/ ? false : true
|
||||
/WEBSHOT_ENABLED == true/.match?(res.body) ? false : true
|
||||
end
|
||||
|
||||
# @return [ Array<String> ] The default allowed domains (between the 2.0 and 2.8.13)
|
||||
|
||||
@@ -13,7 +13,7 @@ module WPScan
|
||||
|
||||
attr_reader :uri, :slug, :detection_opts, :version_detection_opts, :blog, :path_from_blog, :db_data
|
||||
|
||||
delegate :homepage_res, :xpath_pattern_from_page, :in_scope_urls, :head_or_get_params, to: :blog
|
||||
delegate :homepage_res, :xpath_pattern_from_page, :in_scope_uris, :head_or_get_params, to: :blog
|
||||
|
||||
# @param [ String ] slug The plugin/theme slug
|
||||
# @param [ Target ] blog The targeted blog
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<%= notice_icon %> Config Backup(s) Identified:
|
||||
<% @config_backups.each do |config_backup| -%>
|
||||
|
||||
<%= info_icon %> <%= config_backup %>
|
||||
<%= critical_icon %> <%= config_backup %>
|
||||
<%= render('@finding', item: config_backup) -%>
|
||||
<% end -%>
|
||||
<% end %>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<%= notice_icon %> Db Export(s) Identified:
|
||||
<% @db_exports.each do |db_export| -%>
|
||||
|
||||
<%= info_icon %> <%= db_export %>
|
||||
<%= critical_icon %> <%= db_export %>
|
||||
<%= render('@finding', item: db_export) -%>
|
||||
<% end -%>
|
||||
<% end %>
|
||||
|
||||
@@ -11,9 +11,10 @@
|
||||
}<% unless index == last_index %>,<% end -%>
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
},
|
||||
"vulnerabilities": [
|
||||
<% if @item.respond_to?(:vulnerabilities) && !(vulns = @item.vulnerabilities).empty? -%>
|
||||
}
|
||||
<% if @item.respond_to?(:vulnerabilities) -%>
|
||||
,"vulnerabilities": [
|
||||
<% unless (vulns = @item.vulnerabilities).empty? -%>
|
||||
<% last_index = vulns.size - 1 -%>
|
||||
<% vulns.each_with_index do |v, index| -%>
|
||||
{
|
||||
@@ -23,4 +24,5 @@
|
||||
}<% unless index == last_index -%>,<% end -%>
|
||||
<% end -%>
|
||||
<% end -%>
|
||||
]
|
||||
]
|
||||
<% end -%>
|
||||
@@ -19,6 +19,7 @@ require 'wpscan/helper'
|
||||
require 'wpscan/db'
|
||||
require 'wpscan/version'
|
||||
require 'wpscan/errors'
|
||||
require 'wpscan/parsed_cli'
|
||||
require 'wpscan/browser'
|
||||
require 'wpscan/target'
|
||||
require 'wpscan/finders'
|
||||
|
||||
@@ -5,11 +5,6 @@ module WPScan
|
||||
class Browser < CMSScanner::Browser
|
||||
extend Actions
|
||||
|
||||
# @return [ String ] The path to the user agents list
|
||||
def user_agents_list
|
||||
@user_agents_list ||= DB_DIR.join('user-agents.txt').to_s
|
||||
end
|
||||
|
||||
# @return [ String ]
|
||||
def default_user_agent
|
||||
"WPScan v#{VERSION} (https://wpscan.org/)"
|
||||
|
||||
@@ -8,11 +8,11 @@ module WPScan
|
||||
# /!\ Might want to also update the Enumeration#cli_options when some filenames are changed here
|
||||
FILES = %w[
|
||||
plugins.json themes.json wordpresses.json
|
||||
timthumbs-v3.txt user-agents.txt config_backups.txt
|
||||
db_exports.txt dynamic_finders.yml wp_fingerprints.json LICENSE
|
||||
timthumbs-v3.txt config_backups.txt db_exports.txt
|
||||
dynamic_finders.yml wp_fingerprints.json LICENSE
|
||||
].freeze
|
||||
|
||||
OLD_FILES = %w[wordpress.db dynamic_finders_01.yml].freeze
|
||||
OLD_FILES = %w[wordpress.db user-agents.txt dynamic_finders_01.yml].freeze
|
||||
|
||||
attr_reader :repo_directory
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ module WPScan
|
||||
# WordPress hosted (*.wordpress.com)
|
||||
class WordPressHosted < Standard
|
||||
def to_s
|
||||
'Scanning *.wordpress.com hosted blogs is not supported.'
|
||||
'The target appears to be hosted on WordPress.com. Scanning such site is not supported.'
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,7 +25,8 @@ module WPScan
|
||||
|
||||
class WpContentDirNotDetected < Standard
|
||||
def to_s
|
||||
'Unable to identify the wp-content dir, please supply it with --wp-content-dir'
|
||||
'Unable to identify the wp-content dir, please supply it with --wp-content-dir,' \
|
||||
' use the --scope option or make sure the --url value given is the correct one'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ module WPScan
|
||||
module Version
|
||||
# Version finder using Body Pattern method. Tipically used when the response is not
|
||||
# an HTML doc and Xpath can't be used
|
||||
class BodyPattern < WPScan::Finders::DynamicFinder::Version::Finder
|
||||
class BodyPattern < Finders::DynamicFinder::Version::Finder
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= super().merge(PATTERN: nil, CONFIDENCE: 60)
|
||||
|
||||
@@ -6,7 +6,7 @@ module WPScan
|
||||
module Version
|
||||
# Version finder in Comment, which is basically an Xpath one with a default
|
||||
# Xpath of //comment()
|
||||
class Comment < WPScan::Finders::DynamicFinder::Version::Xpath
|
||||
class Comment < Finders::DynamicFinder::Version::Xpath
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= super().merge(PATTERN: nil, XPATH: '//comment()')
|
||||
|
||||
@@ -6,7 +6,7 @@ module WPScan
|
||||
module Version
|
||||
# Version finder using by parsing config files, such as composer.json
|
||||
# and so on
|
||||
class ConfigParser < WPScan::Finders::DynamicFinder::Version::Finder
|
||||
class ConfigParser < Finders::DynamicFinder::Version::Finder
|
||||
ALLOWED_PARSERS = [JSON, YAML].freeze
|
||||
|
||||
def self.child_class_constants
|
||||
|
||||
@@ -5,7 +5,7 @@ module WPScan
|
||||
module DynamicFinder
|
||||
module Version
|
||||
# Version finder using Header Pattern method
|
||||
class HeaderPattern < WPScan::Finders::DynamicFinder::Version::Finder
|
||||
class HeaderPattern < Finders::DynamicFinder::Version::Finder
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= super().merge(HEADER: nil, PATTERN: nil, CONFIDENCE: 60)
|
||||
|
||||
@@ -5,7 +5,7 @@ module WPScan
|
||||
module DynamicFinder
|
||||
module Version
|
||||
# Version finder using JavaScript Variable method
|
||||
class JavascriptVar < WPScan::Finders::DynamicFinder::Version::Finder
|
||||
class JavascriptVar < Finders::DynamicFinder::Version::Finder
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= super().merge(
|
||||
|
||||
@@ -5,7 +5,7 @@ module WPScan
|
||||
module DynamicFinder
|
||||
module Version
|
||||
# Version finder using QueryParameter method
|
||||
class QueryParameter < WPScan::Finders::DynamicFinder::Version::Finder
|
||||
class QueryParameter < Finders::DynamicFinder::Version::Finder
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= super().merge(
|
||||
@@ -35,15 +35,13 @@ module WPScan
|
||||
def scan_response(response)
|
||||
found = {}
|
||||
|
||||
target.in_scope_urls(response, xpath) do |url, _tag|
|
||||
uri = Addressable::URI.parse(url)
|
||||
|
||||
target.in_scope_uris(response, xpath) do |uri|
|
||||
next unless uri.path =~ path_pattern && uri.query&.match(self.class::PATTERN)
|
||||
|
||||
version = Regexp.last_match[:v].to_s
|
||||
|
||||
found[version] ||= []
|
||||
found[version] << url
|
||||
found[version] << uri.to_s
|
||||
end
|
||||
|
||||
found
|
||||
|
||||
@@ -5,7 +5,7 @@ module WPScan
|
||||
module DynamicFinder
|
||||
module Version
|
||||
# Version finder using Xpath method
|
||||
class Xpath < WPScan::Finders::DynamicFinder::Version::Finder
|
||||
class Xpath < Finders::DynamicFinder::Version::Finder
|
||||
# @return [ Hash ]
|
||||
def self.child_class_constants
|
||||
@child_class_constants ||= super().merge(
|
||||
|
||||
@@ -4,22 +4,22 @@ module WPScan
|
||||
module Finders
|
||||
module DynamicFinder
|
||||
module WpItemVersion
|
||||
class BodyPattern < WPScan::Finders::DynamicFinder::Version::BodyPattern
|
||||
class BodyPattern < Finders::DynamicFinder::Version::BodyPattern
|
||||
end
|
||||
|
||||
class Comment < WPScan::Finders::DynamicFinder::Version::Comment
|
||||
class Comment < Finders::DynamicFinder::Version::Comment
|
||||
end
|
||||
|
||||
class ConfigParser < WPScan::Finders::DynamicFinder::Version::ConfigParser
|
||||
class ConfigParser < Finders::DynamicFinder::Version::ConfigParser
|
||||
end
|
||||
|
||||
class HeaderPattern < WPScan::Finders::DynamicFinder::Version::HeaderPattern
|
||||
class HeaderPattern < Finders::DynamicFinder::Version::HeaderPattern
|
||||
end
|
||||
|
||||
class JavascriptVar < WPScan::Finders::DynamicFinder::Version::JavascriptVar
|
||||
class JavascriptVar < Finders::DynamicFinder::Version::JavascriptVar
|
||||
end
|
||||
|
||||
class QueryParameter < WPScan::Finders::DynamicFinder::Version::QueryParameter
|
||||
class QueryParameter < Finders::DynamicFinder::Version::QueryParameter
|
||||
# @return [ Regexp ]
|
||||
def path_pattern
|
||||
# TODO: consider the target.blog.themes_dir if the target is a Theme (maybe implement a WpItem#item_dir ?)
|
||||
@@ -37,7 +37,7 @@ module WPScan
|
||||
end
|
||||
end
|
||||
|
||||
class Xpath < WPScan::Finders::DynamicFinder::Version::Xpath
|
||||
class Xpath < Finders::DynamicFinder::Version::Xpath
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,23 +12,23 @@ module WPScan
|
||||
end
|
||||
end
|
||||
|
||||
class BodyPattern < WPScan::Finders::DynamicFinder::Version::BodyPattern
|
||||
class BodyPattern < Finders::DynamicFinder::Version::BodyPattern
|
||||
include Finder
|
||||
end
|
||||
|
||||
class Comment < WPScan::Finders::DynamicFinder::Version::Comment
|
||||
class Comment < Finders::DynamicFinder::Version::Comment
|
||||
include Finder
|
||||
end
|
||||
|
||||
class HeaderPattern < WPScan::Finders::DynamicFinder::Version::HeaderPattern
|
||||
class HeaderPattern < Finders::DynamicFinder::Version::HeaderPattern
|
||||
include Finder
|
||||
end
|
||||
|
||||
class JavascriptVar < WPScan::Finders::DynamicFinder::Version::JavascriptVar
|
||||
class JavascriptVar < Finders::DynamicFinder::Version::JavascriptVar
|
||||
include Finder
|
||||
end
|
||||
|
||||
class QueryParameter < WPScan::Finders::DynamicFinder::Version::QueryParameter
|
||||
class QueryParameter < Finders::DynamicFinder::Version::QueryParameter
|
||||
include Finder
|
||||
|
||||
# @return [ Hash ]
|
||||
|
||||
7
lib/wpscan/parsed_cli.rb
Normal file
7
lib/wpscan/parsed_cli.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module WPScan
|
||||
# To be able to use ParsedCli directly, rather than having to access it via WPscan::ParsedCli
|
||||
class ParsedCli < CMSScanner::ParsedCli
|
||||
end
|
||||
end
|
||||
@@ -24,8 +24,8 @@ module WPScan
|
||||
#
|
||||
# @return [ Boolean ]
|
||||
def wordpress?(detection_mode)
|
||||
in_scope_urls(homepage_res) do |url|
|
||||
return true if Addressable::URI.parse(url).path.match(WORDPRESS_PATTERN)
|
||||
in_scope_uris(homepage_res) do |uri|
|
||||
return true if uri.path.match(WORDPRESS_PATTERN)
|
||||
end
|
||||
|
||||
homepage_res.html.css('meta[name="generator"]').each do |node|
|
||||
@@ -36,8 +36,8 @@ module WPScan
|
||||
|
||||
if %i[mixed aggressive].include?(detection_mode)
|
||||
%w[wp-admin/install.php wp-login.php].each do |path|
|
||||
in_scope_urls(Browser.get_and_follow_location(url(path))).each do |url|
|
||||
return true if Addressable::URI.parse(url).path.match(WORDPRESS_PATTERN)
|
||||
in_scope_uris(Browser.get_and_follow_location(url(path))).each do |uri|
|
||||
return true if uri.path.match(WORDPRESS_PATTERN)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -45,13 +45,52 @@ module WPScan
|
||||
false
|
||||
end
|
||||
|
||||
COOKIE_PATTERNS = {
|
||||
'vjs' => /createCookie\('vjs','(?<c_value>\d+)',\d+\);/i
|
||||
}.freeze
|
||||
|
||||
# Sometimes there is a mechanism in place on the blog, which requires a specific
|
||||
# cookie and value to be added to requests. Lets try to detect and add them
|
||||
def maybe_add_cookies
|
||||
COOKIE_PATTERNS.each do |cookie_key, pattern|
|
||||
next unless homepage_res.body =~ pattern
|
||||
|
||||
browser = Browser.instance
|
||||
|
||||
cookie_string = "#{cookie_key}=#{Regexp.last_match[:c_value]}"
|
||||
|
||||
cookie_string += "; #{browser.cookie_string}" if browser.cookie_string
|
||||
|
||||
browser.cookie_string = cookie_string
|
||||
|
||||
# Force recheck of the homepage when retying wordpress?
|
||||
# No need to clear the cache, as the request (which will contain the cookies)
|
||||
# will be different
|
||||
@homepage_res = nil
|
||||
@homepage_url = nil
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
# @return [ String ]
|
||||
def registration_url
|
||||
multisite? ? url('wp-signup.php') : url('wp-login.php?action=register')
|
||||
end
|
||||
|
||||
# @return [ Boolean ] Whether or not the target is hosted on wordpress.com
|
||||
def wordpress_hosted?
|
||||
uri.host =~ /\.wordpress\.com$/i ? true : false
|
||||
return true if /\.wordpress\.com$/i.match?(uri.host)
|
||||
|
||||
unless content_dir(:passive)
|
||||
pattern = %r{https?://s\d\.wp\.com#{WORDPRESS_PATTERN}}i.freeze
|
||||
|
||||
uris_from_page(homepage_res) do |uri|
|
||||
return true if uri.to_s.match?(pattern)
|
||||
end
|
||||
end
|
||||
|
||||
false
|
||||
end
|
||||
|
||||
# @param [ String ] username
|
||||
|
||||
@@ -13,24 +13,36 @@ module WPScan
|
||||
@plugins_dir = dir.chomp('/')
|
||||
end
|
||||
|
||||
# @param [ Symbol ] detection_mode
|
||||
# @return [ String ] The wp-content directory
|
||||
def content_dir
|
||||
def content_dir(detection_mode = :mixed)
|
||||
unless @content_dir
|
||||
escaped_url = Regexp.escape(url).gsub(/https?/i, 'https?')
|
||||
pattern = %r{#{escaped_url}([\w\s\-\/]+)\/(?:themes|plugins|uploads|cache)\/}i
|
||||
# scope_url_pattern is from CMSScanner::Target
|
||||
pattern = %r{#{scope_url_pattern}([\w\s\-/]+)\\?/(?:themes|plugins|uploads|cache)\\?/}i
|
||||
|
||||
in_scope_urls(homepage_res) do |url|
|
||||
return @content_dir = Regexp.last_match[1] if url.match(pattern)
|
||||
in_scope_uris(homepage_res) do |uri|
|
||||
return @content_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
|
||||
end
|
||||
|
||||
xpath_pattern_from_page('//script[not(@src)]', pattern, homepage_res) do |match|
|
||||
# Checks for the pattern in raw JS code, as well as @content attributes of meta tags
|
||||
xpath_pattern_from_page('//script[not(@src)]|//meta/@content', pattern, homepage_res) do |match|
|
||||
return @content_dir = match[1]
|
||||
end
|
||||
|
||||
unless detection_mode == :passive
|
||||
return @content_dir = 'wp-content' if default_content_dir_exists?
|
||||
end
|
||||
end
|
||||
|
||||
@content_dir
|
||||
end
|
||||
|
||||
def default_content_dir_exists?
|
||||
# url('wp-content') can't be used here as the folder has not yet been identified
|
||||
# and the method would try to replace it by nil which would raise an error
|
||||
[200, 401, 403].include?(Browser.forge_request(uri.join('wp-content/').to_s, head_or_get_params).run.code)
|
||||
end
|
||||
|
||||
# @return [ Addressable::URI ]
|
||||
def content_uri
|
||||
uri.join("#{content_dir}/")
|
||||
@@ -85,17 +97,16 @@ module WPScan
|
||||
themes_uri.join("#{URI.encode(slug)}/").to_s
|
||||
end
|
||||
|
||||
# TODO: Factorise the code and the content_dir one ?
|
||||
# @return [ String, False ] String of the sub_dir found, false otherwise
|
||||
# @note: nil can not be returned here, otherwise if there is no sub_dir
|
||||
# the check would be done each time
|
||||
def sub_dir
|
||||
unless @sub_dir
|
||||
escaped_url = Regexp.escape(url).gsub(/https?/i, 'https?')
|
||||
pattern = %r{#{escaped_url}(.+?)\/(?:xmlrpc\.php|wp\-includes\/)}i
|
||||
# url_pattern is from CMSScanner::Target
|
||||
pattern = %r{#{url_pattern}(.+?)/(?:xmlrpc\.php|wp\-includes/)}i
|
||||
|
||||
in_scope_urls(homepage_res) do |url|
|
||||
return @sub_dir = Regexp.last_match[1] if url.match(pattern)
|
||||
in_scope_uris(homepage_res) do |uri|
|
||||
return @sub_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
|
||||
end
|
||||
|
||||
@sub_dir = false
|
||||
@@ -112,9 +123,9 @@ module WPScan
|
||||
def url(path = nil)
|
||||
return @uri.to_s unless path
|
||||
|
||||
if path =~ %r{wp\-content/plugins}i
|
||||
if %r{wp\-content/plugins}i.match?(path)
|
||||
path = +path.gsub('wp-content/plugins', plugins_dir)
|
||||
elsif path =~ /wp\-content/i
|
||||
elsif /wp\-content/i.match?(path)
|
||||
path = +path.gsub('wp-content', content_dir)
|
||||
elsif path[0] != '/' && sub_dir
|
||||
path = "#{sub_dir}/#{path}"
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
# Version
|
||||
module WPScan
|
||||
VERSION = '3.5.0'
|
||||
VERSION = '3.5.5'
|
||||
end
|
||||
|
||||
@@ -3,12 +3,10 @@
|
||||
describe WPScan::Controller::Aliases do
|
||||
subject(:controller) { described_class.new }
|
||||
let(:target_url) { 'http://ex.lo/' }
|
||||
let(:parsed_options) { rspec_parsed_options(cli_args) }
|
||||
let(:cli_args) { "--url #{target_url}" }
|
||||
|
||||
before do
|
||||
WPScan::Browser.reset
|
||||
described_class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
|
||||
end
|
||||
|
||||
describe '#cli_options' do
|
||||
@@ -22,14 +20,18 @@ describe WPScan::Controller::Aliases do
|
||||
|
||||
describe 'parsed_options' do
|
||||
context 'when no --stealthy supplied' do
|
||||
its(:parsed_options) { should eql parsed_options }
|
||||
it 'contains the correct options' do
|
||||
expect(WPScan::ParsedCli.options).to include(
|
||||
detection_mode: :mixed, plugins_version_detection: :mixed
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when --stealthy supplied' do
|
||||
let(:cli_args) { "#{super()} --stealthy" }
|
||||
|
||||
it 'contains the correct options' do
|
||||
expect(controller.parsed_options).to include(
|
||||
expect(WPScan::ParsedCli.options).to include(
|
||||
random_user_agent: true, detection_mode: :passive, plugins_version_detection: :passive
|
||||
)
|
||||
end
|
||||
|
||||
@@ -3,13 +3,11 @@
|
||||
describe WPScan::Controller::Core do
|
||||
subject(:core) { described_class.new }
|
||||
let(:target_url) { 'http://ex.lo/' }
|
||||
let(:parsed_options) { rspec_parsed_options(cli_args) }
|
||||
let(:cli_args) { "--url #{target_url}" }
|
||||
|
||||
before do
|
||||
WPScan::Browser.reset
|
||||
described_class.reset
|
||||
described_class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
|
||||
end
|
||||
|
||||
describe '#cli_options' do
|
||||
@@ -140,7 +138,7 @@ describe WPScan::Controller::Core do
|
||||
|
||||
expect(core.formatter).to receive(:output).with('banner', hash_including(verbose: nil), 'core')
|
||||
|
||||
expect(core).to receive(:update_db_required?).and_return(false) unless parsed_options[:update]
|
||||
expect(core).to receive(:update_db_required?).and_return(false) unless WPScan::ParsedCli.update
|
||||
end
|
||||
|
||||
context 'when --update' do
|
||||
@@ -218,7 +216,7 @@ describe WPScan::Controller::Core do
|
||||
|
||||
context 'when not wordpress' do
|
||||
it 'raises an error' do
|
||||
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
|
||||
expect(core.target).to receive(:wordpress?).twice.with(:mixed).and_return(false)
|
||||
|
||||
expect { core.before_scan }.to raise_error(WPScan::Error::NotWordPress)
|
||||
end
|
||||
@@ -250,12 +248,26 @@ describe WPScan::Controller::Core do
|
||||
context 'when not wordpress' do
|
||||
before do
|
||||
expect(core).to receive(:load_server_module)
|
||||
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
|
||||
end
|
||||
|
||||
context 'when no --force' do
|
||||
it 'raises an error' do
|
||||
expect { core.before_scan }.to raise_error(WPScan::Error::NotWordPress)
|
||||
before { expect(core.target).to receive(:maybe_add_cookies) }
|
||||
|
||||
context 'when no cookies added or still not wordpress after being added' do
|
||||
it 'raises an error' do
|
||||
expect(core.target).to receive(:wordpress?).twice.with(:mixed).and_return(false)
|
||||
|
||||
expect { core.before_scan }.to raise_error(WPScan::Error::NotWordPress)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the added cookies solved it' do
|
||||
it 'does not raise an error' do
|
||||
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false).ordered
|
||||
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(true).ordered
|
||||
|
||||
expect { core.before_scan }.to_not raise_error
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -263,6 +275,8 @@ describe WPScan::Controller::Core do
|
||||
let(:cli_args) { "#{super()} --force" }
|
||||
|
||||
it 'does not raise any error' do
|
||||
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
|
||||
|
||||
expect { core.before_scan }.to_not raise_error
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,12 +3,10 @@
|
||||
describe WPScan::Controller::CustomDirectories do
|
||||
subject(:controller) { described_class.new }
|
||||
let(:target_url) { 'http://ex.lo/' }
|
||||
let(:parsed_options) { rspec_parsed_options(cli_args) }
|
||||
let(:cli_args) { "--url #{target_url}" }
|
||||
|
||||
before do
|
||||
WPScan::Browser.reset
|
||||
described_class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
|
||||
end
|
||||
|
||||
describe '#cli_options' do
|
||||
@@ -21,8 +19,8 @@ describe WPScan::Controller::CustomDirectories do
|
||||
end
|
||||
|
||||
describe '#before_scan' do
|
||||
context 'when the content_dir is not found and not supply' do
|
||||
before { expect(controller.target).to receive(:content_dir) }
|
||||
context 'when the content_dir is not found and not supplied' do
|
||||
before { expect(controller.target).to receive(:content_dir).with(:mixed) }
|
||||
|
||||
it 'raises an exception' do
|
||||
expect { controller.before_scan }.to raise_error(WPScan::Error::WpContentDirNotDetected)
|
||||
@@ -34,7 +32,7 @@ describe WPScan::Controller::CustomDirectories do
|
||||
|
||||
it 'does not raise any error' do
|
||||
expect { controller.before_scan }.to_not raise_error
|
||||
expect(controller.target.content_dir).to eq parsed_options[:wp_content_dir]
|
||||
expect(controller.target.content_dir).to eq WPScan::ParsedCli.wp_content_dir
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -3,16 +3,13 @@
|
||||
describe WPScan::Controller::Enumeration do
|
||||
subject(:controller) { described_class.new }
|
||||
let(:target_url) { 'http://wp.lab/' }
|
||||
let(:parsed_options) { rspec_parsed_options(cli_args) }
|
||||
let(:cli_args) { "--url #{target_url}" }
|
||||
|
||||
before do
|
||||
WPScan::Browser.reset
|
||||
|
||||
## For the --passwords options
|
||||
allow_any_instance_of(OptParseValidator::OptPath).to receive(:check_file)
|
||||
|
||||
described_class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
|
||||
end
|
||||
|
||||
describe '#enum_message' do
|
||||
@@ -120,7 +117,7 @@ describe WPScan::Controller::Enumeration do
|
||||
expect(controller).to receive(:enum_plugins)
|
||||
expect(controller).to receive(:enum_config_backups)
|
||||
|
||||
expect(parsed_options[:plugins_detection]).to eql :passive
|
||||
expect(WPScan::ParsedCli.plugins_detection).to eql :passive
|
||||
end
|
||||
|
||||
it 'calls enum_plugins and enum_config_backups' do
|
||||
|
||||
@@ -3,12 +3,10 @@
|
||||
describe WPScan::Controller::PasswordAttack do
|
||||
subject(:controller) { described_class.new }
|
||||
let(:target_url) { 'http://ex.lo/' }
|
||||
let(:parsed_options) { rspec_parsed_options(cli_args) }
|
||||
let(:cli_args) { "--url #{target_url}" }
|
||||
|
||||
before do
|
||||
WPScan::Browser.reset
|
||||
described_class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
|
||||
end
|
||||
|
||||
describe '#cli_options' do
|
||||
@@ -54,6 +52,60 @@ describe WPScan::Controller::PasswordAttack do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#xmlrpc_get_users_blogs_enabled?' do
|
||||
before { expect(controller.target).to receive(:xmlrpc).and_return(xmlrpc) }
|
||||
|
||||
context 'when xmlrpc not found' do
|
||||
let(:xmlrpc) { nil }
|
||||
|
||||
its(:xmlrpc_get_users_blogs_enabled?) { should be false }
|
||||
end
|
||||
|
||||
context 'when xmlrpc not enabled' do
|
||||
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php") }
|
||||
|
||||
it 'returns false' do
|
||||
expect(xmlrpc).to receive(:enabled?).and_return(false)
|
||||
|
||||
expect(controller.xmlrpc_get_users_blogs_enabled?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when xmlrpc enabled' do
|
||||
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php") }
|
||||
|
||||
before { expect(xmlrpc).to receive(:enabled?).and_return(true) }
|
||||
|
||||
context 'when wp.getUsersBlogs methods not listed' do
|
||||
it 'returns false' do
|
||||
expect(xmlrpc).to receive(:available_methods).and_return(%w[m1 m2])
|
||||
|
||||
expect(controller.xmlrpc_get_users_blogs_enabled?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when wp.getUsersBlogs method listed' do
|
||||
before { expect(xmlrpc).to receive(:available_methods).and_return(%w[wp.getUsersBlogs m2]) }
|
||||
|
||||
context 'when wp.getUsersBlogs method disabled' do
|
||||
it 'returns false' do
|
||||
stub_request(:post, xmlrpc.url).to_return(body: 'XML-RPC services are disabled on this site.')
|
||||
|
||||
expect(controller.xmlrpc_get_users_blogs_enabled?).to be false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when wp.getUsersBlogs method enabled' do
|
||||
it 'returns true' do
|
||||
stub_request(:post, xmlrpc.url).to_return(body: 'Incorrect username or password.')
|
||||
|
||||
expect(controller.xmlrpc_get_users_blogs_enabled?).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#attacker' do
|
||||
context 'when --password-attack provided' do
|
||||
let(:cli_args) { "#{super()} --password-attack #{attack}" }
|
||||
@@ -94,7 +146,7 @@ describe WPScan::Controller::PasswordAttack do
|
||||
before do
|
||||
expect(controller.target)
|
||||
.to receive(:xmlrpc)
|
||||
.and_return(WPScan::Model::XMLRPC.new("#{target_url}/xmlrpc.php"))
|
||||
.and_return(WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php"))
|
||||
end
|
||||
|
||||
context 'when single xmlrpc' do
|
||||
@@ -119,73 +171,50 @@ describe WPScan::Controller::PasswordAttack do
|
||||
end
|
||||
|
||||
context 'when automatic detection' do
|
||||
before { expect(controller.target).to receive(:xmlrpc).and_return(xmlrpc) }
|
||||
|
||||
context 'when xmlrpc not found' do
|
||||
let(:xmlrpc) { nil }
|
||||
|
||||
context 'when xmlrpc_get_users_blogs_enabled? is false' do
|
||||
it 'returns the WpLogin' do
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
|
||||
expect(controller.attacker.target).to be_a WPScan::Target
|
||||
end
|
||||
end
|
||||
|
||||
context 'when xmlrpc not enabled' do
|
||||
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}/xmlrpc.php") }
|
||||
|
||||
it 'returns the WpLogin' do
|
||||
expect(xmlrpc).to receive(:enabled?).and_return(false)
|
||||
expect(controller).to receive(:xmlrpc_get_users_blogs_enabled?).and_return(false)
|
||||
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
|
||||
expect(controller.attacker.target).to be_a WPScan::Target
|
||||
end
|
||||
end
|
||||
|
||||
context 'when xmlrpc enabled' do
|
||||
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}/xmlrpc.php") }
|
||||
context 'when xmlrpc_get_users_blogs_enabled? is true' do
|
||||
before do
|
||||
expect(controller).to receive(:xmlrpc_get_users_blogs_enabled?).and_return(true)
|
||||
|
||||
before { expect(xmlrpc).to receive(:enabled?).and_return(true) }
|
||||
expect(controller.target)
|
||||
.to receive(:xmlrpc).and_return(WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php"))
|
||||
end
|
||||
|
||||
context 'when wp.getUsersBlogs methods not available' do
|
||||
it 'returns the WpLogin' do
|
||||
expect(xmlrpc).to receive(:available_methods).and_return(%w[m1 m2])
|
||||
context 'when WP version not found' do
|
||||
it 'returns the XMLRPC' do
|
||||
expect(controller.target).to receive(:wp_version).and_return(false)
|
||||
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
|
||||
expect(controller.attacker.target).to be_a WPScan::Target
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
|
||||
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
|
||||
end
|
||||
end
|
||||
|
||||
context 'when wp.getUsersBlogs method evailable' do
|
||||
before { expect(xmlrpc).to receive(:available_methods).and_return(%w[wp.getUsersBlogs m2]) }
|
||||
context 'when WP version found' do
|
||||
before { expect(controller.target).to receive(:wp_version).and_return(wp_version) }
|
||||
|
||||
context 'when WP version not found' do
|
||||
it 'returns the XMLRPC' do
|
||||
expect(controller.target).to receive(:wp_version).and_return(false)
|
||||
context 'when WP < 4.4' do
|
||||
let(:wp_version) { WPScan::Model::WpVersion.new('3.8.1') }
|
||||
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
|
||||
it 'returns the XMLRPCMulticall' do
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPCMulticall
|
||||
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
|
||||
end
|
||||
end
|
||||
|
||||
context 'when WP version found' do
|
||||
before { expect(controller.target).to receive(:wp_version).and_return(wp_version) }
|
||||
context 'when WP >= 4.4' do
|
||||
let(:wp_version) { WPScan::Model::WpVersion.new('4.4') }
|
||||
|
||||
context 'when WP < 4.4' do
|
||||
let(:wp_version) { WPScan::Model::WpVersion.new('3.8.1') }
|
||||
|
||||
it 'returns the XMLRPCMulticall' do
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPCMulticall
|
||||
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
|
||||
end
|
||||
end
|
||||
|
||||
context 'when WP >= 4.4' do
|
||||
let(:wp_version) { WPScan::Model::WpVersion.new('4.4') }
|
||||
|
||||
it 'returns the XMLRPC' do
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
|
||||
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
|
||||
end
|
||||
it 'returns the XMLRPC' do
|
||||
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
|
||||
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -24,12 +24,10 @@ end
|
||||
describe WPScan::Controller::WpVersion do
|
||||
subject(:controller) { described_class.new }
|
||||
let(:target_url) { 'http://ex.lo/' }
|
||||
let(:parsed_options) { rspec_parsed_options(cli_args) }
|
||||
let(:cli_args) { "--url #{target_url}" }
|
||||
|
||||
before do
|
||||
WPScan::Browser.reset
|
||||
described_class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
|
||||
end
|
||||
|
||||
describe '#cli_options' do
|
||||
@@ -46,8 +44,8 @@ describe WPScan::Controller::WpVersion do
|
||||
expect(controller.target).to receive(:wp_version)
|
||||
.with(
|
||||
hash_including(
|
||||
mode: parsed_options[:wp_version_detection] || parsed_options[:detection_mode],
|
||||
confidence_threshold: parsed_options[:wp_version_all] ? 0 : 100
|
||||
mode: WPScan::ParsedCli.wp_version_detection || WPScan::ParsedCli.detection_mode,
|
||||
confidence_threshold: WPScan::ParsedCli.wp_version_all ? 0 : 100
|
||||
)
|
||||
).and_return(stubbed)
|
||||
end
|
||||
|
||||
@@ -16,7 +16,7 @@ describe 'App::Views' do
|
||||
let(:parsed_options) { { url: target_url, format: formatter.to_s.underscore.dasherize } }
|
||||
|
||||
before do
|
||||
controller.class.parsed_options = parsed_options
|
||||
WPScan::ParsedCli.options = parsed_options
|
||||
# Resets the formatter to ensure the correct one is loaded
|
||||
controller.class.class_variable_set(:@@formatter, nil)
|
||||
end
|
||||
|
||||
1901
spec/fixtures/db/dynamic_finders.yml
vendored
1901
spec/fixtures/db/dynamic_finders.yml
vendored
File diff suppressed because it is too large
Load Diff
3
spec/fixtures/db/user-agents.txt
vendored
3
spec/fixtures/db/user-agents.txt
vendored
@@ -1,3 +0,0 @@
|
||||
# Coments should be ignored
|
||||
UA-1
|
||||
UA-2
|
||||
2357
spec/fixtures/dynamic_finders/expected.yml
vendored
2357
spec/fixtures/dynamic_finders/expected.yml
vendored
File diff suppressed because it is too large
Load Diff
37
spec/fixtures/dynamic_finders/plugin_version/acf-options-for-polylang/change_log/CHANGELOG.md
vendored
Normal file
37
spec/fixtures/dynamic_finders/plugin_version/acf-options-for-polylang/change_log/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
# Changelog
|
||||
|
||||
## 1.1.6 - 19 Mar 2019
|
||||
* FIX [#32](https://github.com/BeAPI/acf-options-for-polylang/issues/32) & [#40](https://github.com/BeAPI/acf-options-for-polylang/issues/40) : fix `get_field()` if an object is provided (WP Term, WP Post, WP Comment)
|
||||
|
||||
## 1.1.5 - 11 Dec 2018
|
||||
* FIX wrong constant
|
||||
|
||||
## 1.1.4 - 13 Nov 2018
|
||||
* Refactor by adding the Helpers class
|
||||
* FEATURE [#26](https://github.com/BeAPI/acf-options-for-polylang/issues/26) : allow to precise to show or hide default values for a specific option page
|
||||
* FEATURE [#21](https://github.com/BeAPI/acf-options-for-polylang/pull/21) : handle custom option id
|
||||
|
||||
## 1.1.3 - 2 Aug 2018
|
||||
* FEATURE [#23](https://github.com/BeAPI/acf-options-for-polylang/pull/23) : requirement to php5.6 whereas namespace are 5.3
|
||||
|
||||
## 1.1.2 - 31 Jul 2018
|
||||
* FIX [#22](https://github.com/BeAPI/acf-options-for-polylang/pull/22) : error with repeater fields default values
|
||||
|
||||
## 1.1.1 - 9 Mai 2018
|
||||
* FIX [#15](https://github.com/BeAPI/acf-options-for-polylang/issues/15) : way requirements are checked to trigger on front / admin
|
||||
|
||||
## 1.1.0 - Mar 2018
|
||||
* True (complet) plugin.
|
||||
* Add check for ACF 5.6.
|
||||
|
||||
## 1.0.2 - 23 Dec 2017
|
||||
* Refactor and reformat.
|
||||
* Handle all options page and custom post_id.
|
||||
* Now load only if ACF & Polylang are activated.
|
||||
* Load later at plugins loaded.
|
||||
|
||||
## 1.0.1 - 19 Sep 2016
|
||||
* Plugin update.
|
||||
|
||||
## 1.0.0 - 8 Mar 2016
|
||||
* Init plugin.
|
||||
146
spec/fixtures/dynamic_finders/plugin_version/admin-atlex-cloud/translation_file/languages/ru_RU.pot
vendored
Normal file
146
spec/fixtures/dynamic_finders/plugin_version/admin-atlex-cloud/translation_file/languages/ru_RU.pot
vendored
Normal file
@@ -0,0 +1,146 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2019 Atlex
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# Atlex developer@atlex.ru, 2019.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Admin Atlex Cloud Plugin 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2019-03-05 21:53+0400\n"
|
||||
"PO-Revision-Date: 2019-03-20 21:53+0400\n"
|
||||
"Last-Translator: ATLEX developer@atlex.ru\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: ru_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
|
||||
#msgfmt ru_RU.pot --output-file=ru_RU.mo
|
||||
|
||||
msgid "Host"
|
||||
msgstr "Адрес"
|
||||
|
||||
msgid "Cloud Adapter"
|
||||
msgstr "Тип Адаптера"
|
||||
|
||||
msgid "Project"
|
||||
msgstr "Проект"
|
||||
|
||||
msgid "User"
|
||||
msgstr "Пользователь"
|
||||
|
||||
msgid "Password"
|
||||
msgstr "Пароль"
|
||||
|
||||
msgid "Backup Container"
|
||||
msgstr "Удаленный Контейнер"
|
||||
|
||||
msgid "Local Directory"
|
||||
msgstr "Локальный Каталог"
|
||||
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
msgid "Atlex Cloud Settings"
|
||||
msgstr "Настройки Облака Атлекс"
|
||||
|
||||
msgid "Cloud Tools"
|
||||
msgstr "Инструменты Облака"
|
||||
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
|
||||
msgid "Atlex Cloud"
|
||||
msgstr "Атлекс Облако"
|
||||
|
||||
msgid "Atlex Settings"
|
||||
msgstr "Атлекс Настройки"
|
||||
|
||||
msgid "Backup Batabase"
|
||||
msgstr "Резервная Копия Базы Данных"
|
||||
|
||||
msgid "Archive Name"
|
||||
msgstr "Имя Архива"
|
||||
|
||||
msgid "Backup"
|
||||
msgstr "Резервная Копия"
|
||||
|
||||
msgid "Remote Archive"
|
||||
msgstr "Удаленный Архив"
|
||||
|
||||
msgid "Restore"
|
||||
msgstr "Восстановить"
|
||||
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
msgid "Backup Wordpress Files"
|
||||
msgstr "Резервная Копия Wordpress Файлов"
|
||||
|
||||
msgid "Wordpress Directory"
|
||||
msgstr "Директория Wordpress"
|
||||
|
||||
msgid "Cloud Directory Name"
|
||||
msgstr "Имя каталога в облаке"
|
||||
|
||||
msgid "Remote Directories Archive"
|
||||
msgstr "Удаленный Архив Каталогов"
|
||||
|
||||
msgid "Download"
|
||||
msgstr "Скачать"
|
||||
|
||||
msgid "You need configurate cloud setting for connection"
|
||||
msgstr "Вам необходимо настроить параметры облака для подключения"
|
||||
|
||||
msgid "Loading"
|
||||
msgstr "Загружается"
|
||||
|
||||
msgid "Do you want to delete sql archive from cloud?"
|
||||
msgstr "Вы хотите удалить архив sql из облака?"
|
||||
|
||||
msgid "Do you want to restore database from sql archive?"
|
||||
msgstr "Хотите восстановить базу данных из sql архива?"
|
||||
|
||||
msgid "Do you want to delete files archive from cloud?"
|
||||
msgstr "Хотите удалить архив файлов из облака?"
|
||||
|
||||
msgid "File success downloaded to "
|
||||
msgstr "Файл успешно загружен в "
|
||||
|
||||
msgid "Error on connection"
|
||||
msgstr "Ошибка при подключении"
|
||||
|
||||
msgid "Successfully connected"
|
||||
msgstr "Успешное подключение"
|
||||
|
||||
msgid "Use CDN for Mediafiles"
|
||||
msgstr "Использовать CDN для Медиафайлов"
|
||||
|
||||
msgid "CDN Mediafiles Status"
|
||||
msgstr "CDN Статус Медиафайлов"
|
||||
|
||||
msgid "Synchronization process"
|
||||
msgstr "Процесс Синхронизации"
|
||||
|
||||
msgid "Cloud Public URL"
|
||||
msgstr "URL-адрес public облака"
|
||||
|
||||
msgid "Synchronized"
|
||||
msgstr "Синхронизирован"
|
||||
|
||||
msgid "Synchronization Off"
|
||||
msgstr "Выключено"
|
||||
|
||||
msgid "Started Mediafiles Synchronization Process"
|
||||
msgstr "Запущен процесс синхронизации медиафайлов"
|
||||
|
||||
msgid "Synchronize Again"
|
||||
msgstr "Синхронизировать Повторно"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
# Copyright (C) 2019 Andy Fragen
|
||||
# This file is distributed under the same license as the Admin Only Jetpack plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Admin Only Jetpack 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/admin-only-jetpack\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-04-26T14:33:28+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: admin-only-jetpack\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "Admin Only Jetpack"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "https://github.com/afragen/admin-only-jetpack"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Show Jetpack menu for Admin users only."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Andy Fragen"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,39 @@
|
||||
# Copyright (C) 2019 JSM's Adobe XMP / IPTC for WordPress
|
||||
# This file is distributed under the same license as the JSM's Adobe XMP / IPTC for WordPress package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: JSM's Adobe XMP / IPTC for WordPress 1.3.3\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/adobe-xmp-for-wp\n"
|
||||
"POT-Creation-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
||||
#: lib/shortcode.php:87
|
||||
msgid "No XMP found for image ID %s."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "JSM's Adobe XMP / IPTC for WordPress"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://surniaulula.com/extend/plugins/adobe-xmp-for-wp/"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid ""
|
||||
"Read Adobe XMP / IPTC information from Media Library and NextGEN Gallery "
|
||||
"images, using a Shortcode or PHP Class Method."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "JS Morisset"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://surniaulula.com/"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,49 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: xq-xe-xt-xy 1.0\n"
|
||||
"POT-Creation-Date: 2018-07-11 09:44+0300\n"
|
||||
"PO-Revision-Date: 2018-07-11 09:44+0300\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Marko Maksym\n"
|
||||
"Language: uk_UA\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 2.0.6\n"
|
||||
"X-Poedit-Basepath: ../includes\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Poedit-KeywordsList: __;_e\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: admin/class-admin-main.php:66
|
||||
msgid "Title of the page"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-admin-main.php:66
|
||||
msgid "Link Name"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-admin-main.php:69
|
||||
msgid "Submenu title"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-admin-main.php:69
|
||||
msgid "Submenu item"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/index.php:8
|
||||
msgid "Settings Page"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/main_module_menu.php:10
|
||||
msgid "Main page"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/main_module_menu.php:13 admin/templates/page1.php:8
|
||||
msgid "Page 1"
|
||||
msgstr ""
|
||||
|
||||
#: admin/templates/main_module_menu.php:16 admin/templates/page2.php:8
|
||||
msgid "Page 2"
|
||||
msgstr ""
|
||||
1127
spec/fixtures/dynamic_finders/plugin_version/aio-for-divi/translation_file/languages/en_US.po
vendored
Normal file
1127
spec/fixtures/dynamic_finders/plugin_version/aio-for-divi/translation_file/languages/en_US.po
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6
spec/fixtures/dynamic_finders/plugin_version/ali2woo-lite/change_log/changelog.txt
vendored
Normal file
6
spec/fixtures/dynamic_finders/plugin_version/ali2woo-lite/change_log/changelog.txt
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
1.0.0
|
||||
- Initial release
|
||||
|
||||
1.0.2
|
||||
- Fixed issues with the chrome extension
|
||||
- Simpliy way to connect your store to the chrome extension
|
||||
34
spec/fixtures/dynamic_finders/plugin_version/avangpress/change_log/CHANGELOG.md
vendored
Normal file
34
spec/fixtures/dynamic_finders/plugin_version/avangpress/change_log/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
#### 1.0.1 - May 10, 2019
|
||||
|
||||
**Fixed**
|
||||
- AffiliateWP integration subscribing the wrong user if affiliate ID differs from user ID.
|
||||
- Broken url
|
||||
|
||||
**Improvements**
|
||||
- Test by latest wordpress 5.2
|
||||
|
||||
#### 1.0.0 - September 21, 2018
|
||||
|
||||
**Changes**
|
||||
|
||||
- Change module name from AvangEmail to AvangPress
|
||||
- Change logo
|
||||
|
||||
**Additions**
|
||||
|
||||
- Fix bug on detect connection
|
||||
- Fix bug saved list to database.
|
||||
|
||||
|
||||
#### 0.0.1 - August 8, 2018
|
||||
|
||||
**Improvements**
|
||||
|
||||
- Init project based on AvangPress for wordpress plugin
|
||||
|
||||
**Additions**
|
||||
|
||||
- Add AvangPress php api to project.
|
||||
18
spec/fixtures/dynamic_finders/plugin_version/awesome-hooks/composer_file/package.json
vendored
Normal file
18
spec/fixtures/dynamic_finders/plugin_version/awesome-hooks/composer_file/package.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "awesome-hooks",
|
||||
"version": "0.0.2",
|
||||
"main": "Gruntfile.js",
|
||||
"author": "Surror",
|
||||
"devDependencies": {
|
||||
"grunt": "^1.0.1",
|
||||
"grunt-contrib-clean": "^1.1.0",
|
||||
"grunt-contrib-compress": "^1.4.3",
|
||||
"grunt-contrib-concat": "^1.0.1",
|
||||
"grunt-contrib-copy": "^1.0.0",
|
||||
"grunt-contrib-cssmin": "^2.2.1",
|
||||
"grunt-contrib-uglify": "^3.3.0",
|
||||
"grunt-postcss": "^0.9.0",
|
||||
"grunt-rtlcss": "^2.0.1",
|
||||
"grunt-wp-i18n": "~1.0.0"
|
||||
}
|
||||
}
|
||||
9
spec/fixtures/dynamic_finders/plugin_version/awp-booking-calendar/change_log/CHANGELOG.md
vendored
Normal file
9
spec/fixtures/dynamic_finders/plugin_version/awp-booking-calendar/change_log/CHANGELOG.md
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.1
|
||||
|
||||
- Updated readme
|
||||
|
||||
## 1.0.0
|
||||
|
||||
- Initial
|
||||
@@ -0,0 +1,135 @@
|
||||
# Copyright (C) 2019 Benjamin Lu
|
||||
# This file is distributed under the same license as the Backdrop Post Types plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Backdrop Post Types 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/backdrop-post-types\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-04-16T18:19:05+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: backdrop-post-types\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "Backdrop Post Types"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Backdrop Post Types registers post types of your choice."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Benjamin Lu"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://benjlu.com"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: a single label for a post type
|
||||
#: includes/register-post-type.php:75
|
||||
msgid "Add New %s"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: a single label for a post type
|
||||
#: includes/register-post-type.php:78
|
||||
msgid "Add New %s Item"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: a single label for a post type
|
||||
#: includes/register-post-type.php:81
|
||||
msgid "Edit %s Item"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: a single label for a post type
|
||||
#: includes/register-post-type.php:87
|
||||
msgid "View %s Item"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: a single label for a post type
|
||||
#: includes/register-post-type.php:90
|
||||
msgid "Search %s Item"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:92
|
||||
#: includes/register-post-type.php:135
|
||||
msgid "Not Found"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:93
|
||||
msgid "Not Found in Trash"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:95
|
||||
msgid "Parent Item: "
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:119
|
||||
msgctxt "Taxonomy General Name"
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:120
|
||||
msgctxt "Taxonomy Singular Name"
|
||||
msgid "Category"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:121
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:122
|
||||
msgid "All Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:123
|
||||
msgid "Parent Category"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:124
|
||||
msgid "Parent Category:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:125
|
||||
msgid "New Category Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:126
|
||||
msgid "Add New Category"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:127
|
||||
msgid "Edit Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:128
|
||||
msgid "Update Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:129
|
||||
msgid "View Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:130
|
||||
msgid "Separate categories with commas"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:131
|
||||
msgid "Add or remove categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:132
|
||||
msgid "Choose from the most used"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:133
|
||||
msgid "Popular Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/register-post-type.php:134
|
||||
msgid "Search Categories"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,82 @@
|
||||
# Copyright (C) 2019 Applelo
|
||||
# This file is distributed under the GPL-3.0+.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Better Admin Users Search 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"http://wordpress.org/support/plugin/better-admin-users-search\n"
|
||||
"POT-Creation-Date: 2019-04-06 23:45:45+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-4-6 23:45+240\n"
|
||||
"Last-Translator: Applelo boubaultlois@gmail.com\n"
|
||||
"Language-Team: Applelo boubaultlois@gmail.com\n"
|
||||
"Language: en_US\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-Country: United States\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: "
|
||||
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
|
||||
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-Bookmarks: \n"
|
||||
"X-Textdomain-Support: yes\n"
|
||||
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
||||
|
||||
#: better-admin-users-search.php:33
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:34
|
||||
msgid "Default search values"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:35
|
||||
msgid "Default values used by WordPress to do the search"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:47
|
||||
msgid "For you, this data is \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:54
|
||||
msgid "Additionals metas"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:55
|
||||
msgid "Add additional user metas to the admin user search"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:55
|
||||
msgid "Note: Some metas won't work because their are not string."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:63
|
||||
msgid "User meta(s)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-better-admin-users-search-admin-page.php:65
|
||||
msgid "Select metas you want to add to your search."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "Better Admin Users Search"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://github.com/Applelo/Better-Admin-Users-Search"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid "A plugin to improve users admin search"
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "Applelo"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://lois-boubault.me/"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,9 @@
|
||||
# Better Reviews for WooCommerce Change Log
|
||||
|
||||
All notable changes to this project will be documented in this file, according to [the Keep a Changelog standards](http://keepachangelog.com/).
|
||||
|
||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||
|
||||
## [0.1.0]
|
||||
|
||||
* Initial public release.
|
||||
@@ -0,0 +1,895 @@
|
||||
# Copyright (C) 2019 Liquid Web
|
||||
# This file is distributed under the MIT.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Better Reviews For WooCommerce 0.1.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/woo-better-reviews\n"
|
||||
"POT-Creation-Date: 2019-04-03 12:33:05+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: en\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-Country: United States\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: "
|
||||
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
|
||||
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-Bookmarks: \n"
|
||||
"X-Textdomain-Support: yes\n"
|
||||
"X-Generator: grunt-wp-i18n1.0.2\n"
|
||||
|
||||
#: includes/admin/admin-notices.php:100
|
||||
msgid "Return to the main list"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:60 includes/admin/admin-pages.php:84
|
||||
#: includes/admin/admin-pages.php:336 includes/admin/admin-pages.php:377
|
||||
#: includes/admin/admin-pages.php:473 includes/admin/admin-pages.php:497
|
||||
#: includes/admin/admin-pages.php:638 includes/admin/admin-pages.php:679
|
||||
#: includes/admin/admin-pages.php:793 includes/admin/admin-pages.php:817
|
||||
msgid "You are not permitted to view this page."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:119 includes/admin/list-reviews.php:106
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:135
|
||||
msgid "Content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:151 includes/admin/list-reviews.php:113
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:167
|
||||
msgid "Scoring"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:180
|
||||
msgid "Total Rating:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:201
|
||||
msgid "%s out of 7"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:230
|
||||
msgid "Update Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:234 includes/admin/admin-pages.php:611
|
||||
#: includes/admin/admin-pages.php:959
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:274 includes/admin/admin-pages.php:312
|
||||
msgid "Search results for “%s”"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:390 includes/admin/admin-pages.php:451
|
||||
msgid "Add New Attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:406 includes/admin/admin-pages.php:527
|
||||
#: includes/admin/admin-pages.php:708 includes/admin/admin-pages.php:847
|
||||
#: includes/admin/list-attributes.php:102 includes/admin/list-charstcs.php:103
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:410 includes/admin/admin-pages.php:537
|
||||
#: includes/admin/admin-pages.php:712 includes/admin/admin-pages.php:857
|
||||
msgid "The name is how it appears on your site."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:419 includes/admin/admin-pages.php:549
|
||||
#: includes/admin/admin-pages.php:721 includes/admin/admin-pages.php:869
|
||||
#: includes/admin/list-attributes.php:104 includes/admin/list-charstcs.php:105
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:423 includes/admin/admin-pages.php:559
|
||||
#: includes/admin/admin-pages.php:725 includes/admin/admin-pages.php:879
|
||||
msgid "The description is optional and may not be displayed based on your theme."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:432 includes/admin/admin-pages.php:571
|
||||
msgid "Rating Labels"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:437 includes/admin/admin-pages.php:580
|
||||
msgid "Minimum"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:443 includes/admin/admin-pages.php:586
|
||||
msgid "Maximum"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:607
|
||||
msgid "Update Attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:692 includes/admin/admin-pages.php:771
|
||||
msgid "Add New Characteristic"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:734 includes/admin/admin-pages.php:891
|
||||
#: includes/admin/list-charstcs.php:106
|
||||
msgid "Values"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:738 includes/admin/admin-pages.php:901
|
||||
msgid "Separate individual values with commas."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:955
|
||||
msgid "Update Characteristic"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:994
|
||||
msgid "(select)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/admin-pages.php:1022 includes/helpers.php:524
|
||||
msgid "Overall Score: %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:37
|
||||
msgid "Product Attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:38 includes/admin/menu-items.php:161
|
||||
#: includes/admin/woo-settings.php:95 includes/helpers.php:29
|
||||
msgid "Product Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:103 includes/admin/list-charstcs.php:104
|
||||
msgid "Slug"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:105
|
||||
msgid "Min Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:106
|
||||
msgid "Max Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:121 includes/admin/list-charstcs.php:122
|
||||
msgid "Search Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:283
|
||||
msgid "Delete Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:309 includes/admin/list-charstcs.php:311
|
||||
#: includes/admin/list-reviews.php:493 includes/admin/list-reviews.php:741
|
||||
#: includes/admin/list-reviews.php:1374 includes/admin/list-reviews.php:1406
|
||||
#: includes/admin/product-meta.php:169 includes/helpers.php:222
|
||||
#: includes/process/admin-process.php:46 includes/process/admin-process.php:122
|
||||
#: includes/process/admin-process.php:180
|
||||
#: includes/process/admin-process.php:238
|
||||
#: includes/process/admin-process.php:301
|
||||
#: includes/process/admin-process.php:375
|
||||
#: includes/process/admin-process.php:423 includes/process/form-process.php:37
|
||||
msgid "Your security nonce failed."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:383
|
||||
msgid "Select attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:399 includes/admin/list-charstcs.php:401
|
||||
msgid "\"%s\" (Edit)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:430 includes/admin/list-charstcs.php:432
|
||||
msgid "No description"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:692 includes/admin/list-charstcs.php:724
|
||||
#: includes/admin/list-reviews.php:932 includes/admin/list-reviews.php:1561
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:693 includes/admin/menu-items.php:161
|
||||
msgid "Edit Attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:703 includes/admin/list-charstcs.php:735
|
||||
#: includes/admin/list-reviews.php:1573
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:704
|
||||
msgid "Delete Attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-attributes.php:766
|
||||
msgid "No attributes found."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:38
|
||||
msgid "Product Characteristic"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:39
|
||||
msgid "Product Characteristics"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:107
|
||||
msgid "Type"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:285
|
||||
msgid "Delete Characteristics"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:385
|
||||
msgid "Select characteristic"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:448
|
||||
msgid "No values"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:464
|
||||
msgid "No type"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:725 includes/admin/menu-items.php:167
|
||||
msgid "Edit Characteristic"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:736
|
||||
msgid "Delete Characteristic"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-charstcs.php:798
|
||||
msgid "No characteristics found."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:38
|
||||
msgid "Product Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:39
|
||||
msgid "Product Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:107
|
||||
msgid "Product"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:108
|
||||
msgid "Review Date"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:109
|
||||
msgid "Total Score"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:110
|
||||
msgid "Attribute Ratings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:111
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:112
|
||||
msgid "Verified"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:131
|
||||
msgid "Search Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:313
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:466
|
||||
msgid "Approve Pending"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:467
|
||||
msgid "Delete Selected"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:875
|
||||
msgid "Select review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:930
|
||||
msgid "View"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:995
|
||||
msgid "%s / 7"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1020
|
||||
msgid "Unknown Reviewer"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1021
|
||||
msgid "unknown email"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1036
|
||||
msgid "Email this review author."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1047
|
||||
msgid "View the user profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1055
|
||||
msgid "User ID: %d"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1096
|
||||
#: includes/display/layout-single-review.php:190
|
||||
msgid "This review is verified."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1562 includes/admin/menu-items.php:155
|
||||
msgid "Edit Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1574
|
||||
msgid "Delete Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1590
|
||||
msgid "Approve"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1591
|
||||
msgid "Approve Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1655
|
||||
msgid "No reviews avaliable."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1675 includes/admin/list-reviews.php:1692
|
||||
msgid "Change Selected Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/list-reviews.php:1681
|
||||
msgid "Select Status"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/menu-items.php:58
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/menu-items.php:59 includes/admin/menu-items.php:81
|
||||
#: includes/admin/menu-items.php:155
|
||||
msgid "Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/menu-items.php:93
|
||||
msgid "Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/menu-items.php:103
|
||||
msgid "Characteristics"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/menu-items.php:167
|
||||
msgid "Review Author Characteristics"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/post-columns.php:87
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/post-columns.php:123
|
||||
msgid "Review Count"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/post-columns.php:128
|
||||
#: includes/display/layout-review-aggregate.php:49
|
||||
msgid "Average Rating"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/product-meta.php:51
|
||||
msgid "Review Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/product-meta.php:68
|
||||
msgid "No product attributes have been created yet."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/product-meta.php:78
|
||||
msgid "Product attributes have been enabled globally by the site administrator."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/product-meta.php:174
|
||||
msgid "You do not have the capability to perform this action."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/woo-settings.php:75
|
||||
msgid "Enable reviews using Woo Better Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/woo-settings.php:81
|
||||
msgid "Anonymous Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/woo-settings.php:82
|
||||
msgid "Allow non-logged in users to leave product reviews."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin/woo-settings.php:96
|
||||
msgid "Apply attributes to every product."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:73
|
||||
msgid "The required column name is missing."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:137 includes/database.php:182
|
||||
#: includes/database.php:229 includes/database.php:276
|
||||
msgid "The required table name was not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:187
|
||||
msgid "The required arguments were was not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:195 includes/database.php:242
|
||||
msgid "No required arguments could be found."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:210
|
||||
msgid "The required %s argument is missing."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:234 includes/database.php:281
|
||||
msgid "The required arguments were not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:257
|
||||
msgid "The %s argument is not valid for this table."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:289
|
||||
msgid "No argument formatting could be found."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:502 includes/database.php:572
|
||||
#: includes/database.php:652
|
||||
msgid "The required table name is missing."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:507 includes/database.php:520
|
||||
#: includes/database.php:577 includes/tables/data-authormeta.php:118
|
||||
#: includes/tables/data-authormeta.php:160 includes/tables/data-content.php:134
|
||||
#: includes/tables/data-content.php:181 includes/tables/data-ratings.php:100
|
||||
#: includes/tables/data-ratings.php:142 includes/tables/tax-attributes.php:115
|
||||
#: includes/tables/tax-attributes.php:162
|
||||
#: includes/tables/tax-characteristics.php:98
|
||||
#: includes/tables/tax-characteristics.php:140
|
||||
msgid "The required database arguments are missing or invalid."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:515 includes/database.php:590
|
||||
#: includes/database.php:660
|
||||
msgid "The provided table name is not valid."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:582 includes/database.php:665
|
||||
msgid "The required ID was missing or invalid."
|
||||
msgstr ""
|
||||
|
||||
#: includes/database.php:601 includes/database.php:676
|
||||
msgid "The provided ID does not exist in the database."
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:30
|
||||
msgid "Review Title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:33
|
||||
msgid "Example: This product has great features!"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:37 includes/helpers.php:26
|
||||
msgid "Review Content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:70
|
||||
msgid "Your Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:77
|
||||
msgid "Your Email"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:138
|
||||
msgid "Submit Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-data.php:146
|
||||
msgid "Reset"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-fields.php:78 includes/display/form-fields.php:216
|
||||
#: includes/display/form-fields.php:273 includes/display/form-fields.php:335
|
||||
#: includes/display/form-fields.php:402
|
||||
#: includes/display/layout-new-review-form.php:63
|
||||
#: includes/display/layout-new-review-form.php:160
|
||||
msgid "This is a required field"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-fields.php:260
|
||||
msgid "(Select)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/form-fields.php:449
|
||||
msgid "Click Here"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:29
|
||||
msgid "Leave a Review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:60
|
||||
msgid "Overall Rating"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:81
|
||||
msgid "Select a %d star rating"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:140
|
||||
#: includes/display/layout-review-aggregate.php:177
|
||||
#: includes/display/layout-single-review.php:92
|
||||
msgid "Min."
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:141
|
||||
#: includes/display/layout-review-aggregate.php:178
|
||||
#: includes/display/layout-single-review.php:93
|
||||
msgid "Max."
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:174
|
||||
msgid "Select a %d rating for this attribute"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-new-review-form.php:330
|
||||
msgid "Tell us about yourself"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-aggregate.php:58
|
||||
msgid "Average Rating: %s stars"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-aggregate.php:61
|
||||
msgid "%s reviews total"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-aggregate.php:96
|
||||
msgid "Rating Breakdown"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-aggregate.php:117
|
||||
msgid "%d Star:"
|
||||
msgid_plural "%d Stars:"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: includes/display/layout-review-aggregate.php:164
|
||||
msgid "Review Summary"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-list.php:92
|
||||
#. translators: 1: reviews count 2: product name
|
||||
msgid "%1$s review for %2$s"
|
||||
msgid_plural "%1$s reviews for %2$s"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: includes/display/layout-review-list.php:96
|
||||
msgid "Leave a review"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-list.php:155
|
||||
msgid "Sort By:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-list.php:180
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-list.php:230
|
||||
msgid "« Previous %s Reviews"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-review-list.php:231
|
||||
msgid "Next %s Reviews »"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-single-review.php:55
|
||||
msgid "Posted on %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/layout-single-review.php:193
|
||||
msgid "by %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/view-output.php:221
|
||||
msgid "No reviews matched your criteria. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/view-output.php:221
|
||||
msgid "There are no reviews yet. Be the first!"
|
||||
msgstr ""
|
||||
|
||||
#: includes/display/woo-filters.php:46
|
||||
msgid "Reviews (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:27
|
||||
msgid "Author Meta"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:28
|
||||
msgid "Review Ratings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:30
|
||||
msgid "Author Characteristics"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:31
|
||||
msgid "Author Setup"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:354
|
||||
msgid "Approved"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:355
|
||||
msgid "Pending Approval"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:356
|
||||
msgid "Rejected"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:357
|
||||
msgid "Hidden"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:651
|
||||
msgid "Dropdown"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:652
|
||||
msgid "Radio"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:653
|
||||
msgid "Boolean (Yes / No)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:673
|
||||
msgid "Your review has been submitted and is pending approval."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:677
|
||||
msgid "There was an error attempting to save your review."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:681
|
||||
msgid "The selected review has been updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:685
|
||||
msgid "The selected review has been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:689
|
||||
msgid "The new attribute has been added."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:693
|
||||
msgid "The selected attribute has been updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:697
|
||||
msgid "The selected attribute has been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:701
|
||||
msgid "The selected attributes have been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:705
|
||||
msgid "The required attribute arguments were not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:709
|
||||
msgid "The attribute could not be updated at this time."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:713
|
||||
msgid "The selected attribute could not be deleted at this time."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:717
|
||||
msgid "The new characteristic has been added."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:721
|
||||
msgid "The selected characteristic has been updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:725
|
||||
msgid "The selected characteristic has been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:729
|
||||
msgid "The selected characteristics have been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:733
|
||||
msgid "The required characteristic arguments were not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:737
|
||||
msgid "The characteristic could not be updated at this time."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:741
|
||||
msgid "The selected characteristic could not be deleted at this time."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:745
|
||||
msgid "The required ID was not posted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:749
|
||||
msgid "The required arguments were not posted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:753
|
||||
msgid "The required arguments could not be formatted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:757
|
||||
msgid "The selected reviews have been updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:761
|
||||
msgid "The selected review has been approved."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:765
|
||||
msgid "The selected reviews have been deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:769
|
||||
msgid "The selected review statuses have been updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:774
|
||||
msgid "There was an unknown error with your request."
|
||||
msgstr ""
|
||||
|
||||
#: includes/helpers.php:778
|
||||
msgid "There was an error with your request."
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/admin-process.php:563
|
||||
msgid "The required arguments to create a link were not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/admin-process.php:592
|
||||
msgid "The base link for editing this item could not be determined."
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/form-process.php:255 includes/process/form-process.php:313
|
||||
#: includes/process/form-process.php:367
|
||||
msgid "The required data to format."
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/form-process.php:260
|
||||
msgid "Review on %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/form-process.php:308 includes/process/form-process.php:362
|
||||
#: includes/process/form-process.php:407
|
||||
msgid "The required review ID was not provided."
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/form-process.php:412
|
||||
msgid "The required data is missing."
|
||||
msgstr ""
|
||||
|
||||
#: includes/process/form-process.php:433
|
||||
msgid "The review scoring could not be inserted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:248 includes/queries.php:401 includes/queries.php:986
|
||||
#: includes/queries.php:1117 includes/queries.php:1335
|
||||
msgid "A product ID is required."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:581 includes/queries.php:1661
|
||||
msgid "An author ID is required."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:894 includes/queries.php:1073
|
||||
msgid "A review ID is required."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:991
|
||||
msgid "An characteristic ID is required."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:996
|
||||
msgid "An characteristic value is required."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:1045
|
||||
msgid "Review IDs are required for batch."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:1454
|
||||
msgid "The required attribute ID is missing."
|
||||
msgstr ""
|
||||
|
||||
#: includes/queries.php:1769
|
||||
msgid "The required characteristic ID is missing."
|
||||
msgstr ""
|
||||
|
||||
#: includes/tables/data-authormeta.php:135 includes/tables/data-content.php:156
|
||||
#: includes/tables/data-ratings.php:117 includes/tables/tax-attributes.php:137
|
||||
#: includes/tables/tax-characteristics.php:115
|
||||
msgid "The data could not be written to the database."
|
||||
msgstr ""
|
||||
|
||||
#: includes/tables/data-authormeta.php:155
|
||||
#: includes/tables/data-authormeta.php:200 includes/tables/data-content.php:176
|
||||
#: includes/tables/data-content.php:221 includes/tables/data-ratings.php:137
|
||||
#: includes/tables/data-ratings.php:182 includes/tables/tax-attributes.php:157
|
||||
#: includes/tables/tax-attributes.php:207
|
||||
#: includes/tables/tax-characteristics.php:135
|
||||
#: includes/tables/tax-characteristics.php:180
|
||||
msgid "The required ID is missing."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "Better Reviews For WooCommerce"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://github.com/liquidweb/woo-better-reviews"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid "Like reviews, only way better."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "Liquid Web"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://www.liquidweb.com"
|
||||
msgstr ""
|
||||
37
spec/fixtures/dynamic_finders/plugin_version/block-layouts/composer_file/package.json
vendored
Normal file
37
spec/fixtures/dynamic_finders/plugin_version/block-layouts/composer_file/package.json
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
{
|
||||
"name": "block-layouts",
|
||||
"version": "1.0.5",
|
||||
"license": "MIT",
|
||||
"main": "blocks/index.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/derweili/block-layouts"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "cross-env BABEL_ENV=default webpack --watch",
|
||||
"build": "cross-env BABEL_ENV=default NODE_ENV=production webpack -p"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@wordpress/babel-plugin-makepot": "^2.1.2",
|
||||
"@wordpress/babel-preset-default": "^1.2.0",
|
||||
"babel-core": "^6.26.3",
|
||||
"babel-eslint": "^8.2.3",
|
||||
"babel-loader": "^7.1.4",
|
||||
"babel-plugin-transform-class-properties": "^6.24.1",
|
||||
"classnames": "^2.2.6",
|
||||
"cross-env": "^5.1.5",
|
||||
"css-loader": "^0.28.11",
|
||||
"eslint": "^4.19.1",
|
||||
"extract-text-webpack-plugin": "^3.0.2",
|
||||
"node-sass": "^4.9.0",
|
||||
"postcss-loader": "^2.1.5",
|
||||
"raw-loader": "^0.5.1",
|
||||
"sass-loader": "^6.0.7",
|
||||
"style-loader": "^0.19.1",
|
||||
"webpack": "^3.11.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"react-images": "^1.0.0",
|
||||
"react-photo-gallery": "^7.0.2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
# Copyright (C) 2019 Bunty
|
||||
# This file is distributed under the same license as the BuddyPress Profile Field Duplicator package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: BuddyPress Profile Field Duplicator 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/bp-profile-field-duplicator\n"
|
||||
"POT-Creation-Date: 2019-05-26 15:21:43+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: en\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-Country: United States\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: "
|
||||
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
|
||||
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-Bookmarks: \n"
|
||||
"X-Textdomain-Support: yes\n"
|
||||
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
||||
|
||||
#: app/admin/class-bp-profile-field-duplicator-admin.php:55
|
||||
msgid "Duplicate This"
|
||||
msgstr ""
|
||||
|
||||
#: app/admin/class-bp-profile-field-duplicator-admin.php:67
|
||||
msgid "Are you sure you want to duplicate this?"
|
||||
msgstr ""
|
||||
|
||||
#: app/admin/class-bp-profile-field-duplicator-admin.php:105
|
||||
msgid "Something went wrong."
|
||||
msgstr ""
|
||||
|
||||
#: app/admin/class-bp-profile-field-duplicator-admin.php:114
|
||||
msgid "Field is not available."
|
||||
msgstr ""
|
||||
|
||||
#: app/admin/class-bp-profile-field-duplicator-admin.php:138
|
||||
msgid " - Copy"
|
||||
msgstr ""
|
||||
|
||||
#: app/admin/class-bp-profile-field-duplicator-admin.php:183
|
||||
msgid "Fail to create duplicate field."
|
||||
msgstr ""
|
||||
|
||||
#: bp-profile-field-duplicator.php:63
|
||||
msgid "%s works with BuddyPress only. Please activate BuddyPress or de-activate %s."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "BuddyPress Profile Field Duplicator"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "bhargavb.wordpress.com"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid "Make a duplicate of BuddyPress profile fields."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "Bunty"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "bhargavb.wordpress.com/about-me"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,138 @@
|
||||
# Copyright (C) 2019 Marek Vratil
|
||||
# This file is distributed under the same license as the Čeština zalamování řádků plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Čeština zalamování řádků 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/bozimediazalomeni\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-04-03T12:19:14+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: bozimediazalomeni\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "Čeština zalamování řádků"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
#. Author URI of the plugin
|
||||
msgid "https://www.bozimedia.cz"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Grammar rules for Czech language with related to word wrapping at the end of line."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Marek Vratil"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-bozimediazalomeni-activator.php:61
|
||||
msgid "Plugin BožíMédia Zalomení vyžaduje PHP verze %1 nebo vyšší. Na tomto webu je nainstalováno PHP verze %2"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-bozimediazalomeni-admin.php:112
|
||||
msgid "Čeština: zalomení"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-bozimediazalomeni-admin.php:127
|
||||
msgid "Nastavení"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:18
|
||||
msgid "ČEŠTINA - zalamování řádků"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:24
|
||||
msgid "Zalomení řádků a nevhodné výrazy na jejich konci"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:40
|
||||
msgid "Předložky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:46
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:66
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:86
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:106
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:126
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:146
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:166
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:191
|
||||
msgid "Aktivovat"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:50
|
||||
msgid "Vložit pevnou mezeru za předložky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:51
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:71
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:91
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:111
|
||||
msgid "(položky oddělte čárkou)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:60
|
||||
msgid "Spojky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:70
|
||||
msgid "Vložit pevnou mezeru za spojky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:80
|
||||
msgid "Zkratky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:90
|
||||
msgid "Vložit pevnou mezeru za zkratky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:100
|
||||
msgid "Jednotky míry"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:110
|
||||
msgid "Vložit pevnou mezeru mezi číslovku a jednotku míry"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:120
|
||||
msgid "Mezery uprostřed čísel"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:131
|
||||
msgid "Vložit pevnou mezeru mezi dvě čísla, která jsou oddělena mezerou, např. telefonní číslo 800 123 456."
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:140
|
||||
msgid "Řadové číslovky"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:151
|
||||
msgid "Zabránit zalomení řádku za řadovou číslovkou, např. 1. ledna a v podobných případech)."
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:160
|
||||
msgid "Měřítka a poměry"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:171
|
||||
msgid "Pevné mezery v měřítkách a poměrech (např. 1 : 50 000)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:178
|
||||
msgid "Podpora pluginů"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:185
|
||||
msgid "ACF - Advanced Custom Fields"
|
||||
msgstr ""
|
||||
|
||||
#: admin/partials/bozimediazalomeni-admin-display.php:197
|
||||
msgid "plugin nenalezen"
|
||||
msgstr ""
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,126 @@
|
||||
# Copyright (C) 2019 Clust
|
||||
# This file is distributed under the same license as the Clust Client Portal plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Clust Client Portal 1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/clust-client-portal\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-03-19T22:16:02+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: clust-client-portal\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: clust-client-portal.php:54
|
||||
#: clust-client-portal.php:55
|
||||
msgid "Clust Client Portal"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "https://www.clustdoc.com"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Ads a media button to the Classic Wordpress Editor for inserting Clust iframe"
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Clust"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:71
|
||||
msgid "Insert a Clust portal"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:72
|
||||
msgid "Select a template to add to your post page"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:78
|
||||
msgid "Can't find your form? Make sure it is active."
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:80
|
||||
msgid "Enter the URL of the page that will host this portal"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:83
|
||||
msgid "Enter the height of your portal"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:86
|
||||
msgid "Select the main color of your portal"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:89
|
||||
msgid "Includes header"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:91
|
||||
msgid "Includes logo"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:93
|
||||
msgid "Insert"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:97
|
||||
msgid "Insert Clust Portal"
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:135
|
||||
msgid "Error: API Token hasn't been set yet. Go to plugin's options page."
|
||||
msgstr ""
|
||||
|
||||
#: clust-client-portal.php:139
|
||||
#: clust-client-portal.php:143
|
||||
msgid "Error: no options were found"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:77
|
||||
msgid "Clust Client Portal - Options"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:88
|
||||
msgid "Embed a Clust client portal on your website"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:89
|
||||
msgid "Enter below your Clust API Key and validate. Once that's done, Go to your wordpress Page or Post to add you portal using the Clust Portal inserter button."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:92
|
||||
msgid "Validate"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:95
|
||||
msgid "Where can I find my key?"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:97
|
||||
msgid "Use a test key"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:107
|
||||
msgid "What is Clust?"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:109
|
||||
msgid "Clust is the No 1 documents collection forr small businesses. Thousands of modern businesses around the world to collect, approve and share useful information with their clients"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:117
|
||||
msgid "New to Clust? Get 20% off!"
|
||||
msgstr ""
|
||||
|
||||
#: options.php:119
|
||||
msgid "Register today and get a 20% discount on your Clust account forever."
|
||||
msgstr ""
|
||||
|
||||
#: options.php:122
|
||||
msgid "Signup and grab API key."
|
||||
msgstr ""
|
||||
@@ -0,0 +1,8 @@
|
||||
=== version 1.3.0 ===
|
||||
Added support for additional currencies. Thanks to [kennyhunter16](https://wordpress.org/support/users/kennyhunter16/), the currency is now detected from the order that was placed.
|
||||
=== version 1.2.0 ===
|
||||
cj.com added some new required fields. This update brings the plugin into conformation with their documentation at https://developers.cj.com/docs/tracking-integration/advanced-integration
|
||||
=== version 1.1.0 ===
|
||||
Orders that originated from cj.com are now marked as such in the order notes
|
||||
=== version 1.0.0 ===
|
||||
Initial commit
|
||||
@@ -989,3 +989,20 @@ If above timestamp is not current time, this page is cached.</p> -->
|
||||
<!-- Analytics by WP-Statistics v12.6.2 - https://wp-statistics.com/ -->
|
||||
|
||||
|
||||
<!-- swift-performance-lite -->
|
||||
<!--Cached with Swift Performance Lite-->
|
||||
|
||||
|
||||
<!-- master-popups-lite -->
|
||||
<!-- MPP:MasterPopups v1.0.2 -->
|
||||
|
||||
|
||||
<!-- social-rocket -->
|
||||
<!-- Begin Social Rocket v1.0.1 https://wpsocialrocket.com -->
|
||||
|
||||
|
||||
<!-- open-wp-seo -->
|
||||
<!-- Open WordPress SEO 1.0.0 -->
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,401 @@
|
||||
# Copyright (C) 2019 ScriptsTown
|
||||
# This file is distributed under the same license as the Contact Form Query plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Contact Form Query 1.0.2\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/contact-form-query\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-05-22T23:31:24+02:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.2.0\n"
|
||||
"X-Domain: contact-form-query\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: admin/inc/class-stcfq-admin-menu.php:10
|
||||
#: admin/inc/setting/index.php:13
|
||||
msgid "Contact Form Query"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Add a contact form and receive messages directly to your WordPress admin panel with search and filter options. View latest messages received in dashboard."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "ScriptsTown"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://scriptstown.com/"
|
||||
msgstr ""
|
||||
|
||||
#. translators: %d: Number of unanswered messages
|
||||
#: admin/inc/class-stcfq-admin-menu.php:14
|
||||
msgid "Contact <span class=\"awaiting-mod\">%d</span>"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-admin-menu.php:16
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-admin-menu.php:25
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-admin-menu.php:28
|
||||
#: admin/inc/class-stcfq-setting.php:7
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-message.php:41
|
||||
#: admin/inc/class-stcfq-message.php:97
|
||||
msgid "Message not found."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-message.php:58
|
||||
msgid "Message deleted successfully."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-message.php:123
|
||||
msgid "Message status updated."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-message.php:147
|
||||
msgid "Contact Form Latest Messages"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:51
|
||||
#: includes/class-stcfq-helper.php:17
|
||||
msgid "Your Name"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:54
|
||||
#: includes/class-stcfq-helper.php:25
|
||||
msgid "Your Email"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:57
|
||||
#: admin/inc/message/filter.php:17
|
||||
#: admin/inc/message/filter.php:45
|
||||
#: admin/inc/message/index.php:19
|
||||
#: admin/inc/message/load.php:37
|
||||
#: admin/inc/message/view.php:32
|
||||
#: includes/class-stcfq-helper.php:33
|
||||
msgid "Subject"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:60
|
||||
#: admin/inc/message/filter.php:26
|
||||
#: admin/inc/message/filter.php:48
|
||||
#: admin/inc/message/index.php:20
|
||||
#: admin/inc/message/load.php:40
|
||||
#: admin/inc/message/view.php:24
|
||||
#: admin/inc/message/view.php:36
|
||||
#: includes/class-stcfq-helper.php:41
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:66
|
||||
msgid "The fields are invalid or not supported."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:72
|
||||
msgid "Please enable at least one field."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/class-stcfq-setting.php:113
|
||||
#: admin/inc/class-stcfq-setting.php:149
|
||||
#: admin/inc/class-stcfq-setting.php:165
|
||||
msgid "Setting saved."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:5
|
||||
msgid "Search & Filter Messages"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:20
|
||||
#: admin/inc/message/filter.php:46
|
||||
#: admin/inc/message/index.php:21
|
||||
#: admin/inc/message/load.php:43
|
||||
#: admin/inc/message/view.php:40
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:23
|
||||
#: admin/inc/message/filter.php:47
|
||||
#: admin/inc/message/index.php:22
|
||||
#: admin/inc/message/load.php:46
|
||||
#: admin/inc/message/view.php:44
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:29
|
||||
#: admin/inc/message/filter.php:49
|
||||
#: admin/inc/message/index.php:23
|
||||
#: admin/inc/message/load.php:49
|
||||
#: admin/inc/message/view.php:48
|
||||
msgid "Answered"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:32
|
||||
#: admin/inc/message/filter.php:50
|
||||
#: admin/inc/message/view.php:52
|
||||
#: admin/inc/message/view.php:93
|
||||
msgid "Note"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:62
|
||||
msgid "Add more"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/filter.php:63
|
||||
msgid "Apply filter"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/index.php:12
|
||||
msgid "Contact Form Messages"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/index.php:18
|
||||
#: admin/inc/message/load.php:34
|
||||
msgid "S.No"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/index.php:24
|
||||
#: admin/inc/message/view.php:56
|
||||
msgid "Timestamp"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/index.php:25
|
||||
#: admin/inc/message/load.php:55
|
||||
msgid "Action"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/index.php:68
|
||||
msgid "No more messages."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/latest.php:42
|
||||
msgid "View all"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/load.php:50
|
||||
#: admin/inc/message/view.php:49
|
||||
#: admin/inc/setting/tabs/form-fields.php:50
|
||||
#: admin/inc/setting/tabs/form-fields.php:76
|
||||
#: admin/inc/setting/tabs/form-fields.php:111
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/load.php:50
|
||||
#: admin/inc/message/view.php:49
|
||||
#: admin/inc/setting/tabs/form-fields.php:55
|
||||
#: admin/inc/setting/tabs/form-fields.php:81
|
||||
#: admin/inc/setting/tabs/form-fields.php:116
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/load.php:52
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/load.php:59
|
||||
msgid "Are you sure to delete this message?"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/view.php:74
|
||||
#: admin/inc/message/view.php:78
|
||||
#: admin/inc/message/view.php:82
|
||||
msgid "Is Answered?"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/view.php:85
|
||||
msgid "Mark this message as \"Answered\"."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/view.php:98
|
||||
msgid "Enter any extra note."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/message/view.php:106
|
||||
#: admin/inc/setting/tabs/captcha.php:106
|
||||
#: admin/inc/setting/tabs/form-fields.php:182
|
||||
#: admin/inc/setting/tabs/uninstall.php:39
|
||||
msgid "Save Changes"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/index.php:7
|
||||
#: admin/inc/setting/tabs/form-fields.php:30
|
||||
msgid "Form Fields"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/index.php:8
|
||||
#: admin/inc/setting/tabs/captcha.php:25
|
||||
msgid "Captcha"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/index.php:9
|
||||
msgid "Uninstall"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:29
|
||||
msgid "Select Captcha"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:51
|
||||
msgid "Site Key"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:56
|
||||
msgid "Enter Google reCAPTCHA v2 Site Key."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:57
|
||||
#: admin/inc/setting/tabs/captcha.php:70
|
||||
msgid "Click Here"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:64
|
||||
msgid "Secret Key"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:69
|
||||
msgid "Enter Google reCAPTCHA v2 Secret Key."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:77
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/captcha.php:82
|
||||
#: admin/inc/setting/tabs/captcha.php:99
|
||||
msgid "Select Google reCAPTCHA Version 2 Theme."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:20
|
||||
msgid "Contact Form Shortcode"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:24
|
||||
msgid "Use above shortcode in any page or post to display the contact form."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:37
|
||||
msgid "field"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:45
|
||||
#: admin/inc/setting/tabs/form-fields.php:106
|
||||
msgid "Enable"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:62
|
||||
msgid "Form Label"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:71
|
||||
msgid "Required Field"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:88
|
||||
#: admin/inc/setting/tabs/form-fields.php:132
|
||||
#: admin/inc/setting/tabs/form-fields.php:167
|
||||
msgid "Additional Class (use space for multiple classes)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:101
|
||||
msgid "Consent Field"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:123
|
||||
msgid "Field Text"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:141
|
||||
msgid "Validation message (if unchecked)"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:152
|
||||
msgid "Submit Button"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/form-fields.php:158
|
||||
msgid "Button Text"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/uninstall.php:15
|
||||
msgid "This will delete all the data when you delete the plugin using WordPress \"Plugins\" menu if you enable this setting."
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/uninstall.php:22
|
||||
msgid "Data Deletion"
|
||||
msgstr ""
|
||||
|
||||
#: admin/inc/setting/tabs/uninstall.php:26
|
||||
#: admin/inc/setting/tabs/uninstall.php:30
|
||||
msgid "Delete all data on plugin's deletion"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:104
|
||||
msgid "I consent to having this website store my submitted information so they can respond to my inquiry."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:108
|
||||
msgid "Please confirm."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:121
|
||||
msgid "Send Your Message"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:129
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:130
|
||||
msgid "Google reCAPTCHA Version 2"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:136
|
||||
msgid "Light"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-stcfq-helper.php:137
|
||||
msgid "Dark"
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:16
|
||||
msgid "Error occurred while sending your message. Please try again after some time."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:45
|
||||
#: public/inc/class-stcfq-shortcode.php:48
|
||||
msgid "<strong>ERROR:</strong> Please confirm you are not a robot."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:82
|
||||
msgid "Please provide your name."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:91
|
||||
msgid "Please provide your email."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:93
|
||||
msgid "Please provide a valid email."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:102
|
||||
msgid "Please specify subject."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:111
|
||||
msgid "Please provide your message."
|
||||
msgstr ""
|
||||
|
||||
#: public/inc/class-stcfq-shortcode.php:146
|
||||
msgid "Thank you for contacting us. We will reply to your email as soon as possible."
|
||||
msgstr ""
|
||||
@@ -0,0 +1,137 @@
|
||||
# Copyright (C) 2019 1&1 IONOS
|
||||
# This file is distributed under the GPLv2 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CoSy Address Book 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/cosy-address-book\n"
|
||||
"POT-Creation-Date: 2019-03-11 17:02:56+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"X-Generator: grunt-wp-i18n 0.5.4\n"
|
||||
|
||||
#: cosy-address-book/cosy-address-book.php:87
|
||||
msgid "cosy_address_book_admin_page_title"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/cosy-address-book.php:88
|
||||
msgid "cosy_address_book_menu_title"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:2
|
||||
msgid "cosy_address_book_invitation"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:4
|
||||
#: cosy-address-book/inc/views/description.php:22
|
||||
msgid "cosy_address_book_url_text"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:7
|
||||
#: cosy-address-book/inc/views/settings.php:2
|
||||
msgid "cosy_address_book_connection_header"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:8
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:18
|
||||
msgid "cosy_address_book_generic_error"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:11
|
||||
msgid "cosy_address_book_guidance_summary"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:15
|
||||
msgid "cosy_address_book_guidance_step_one_label"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:19
|
||||
msgid "cosy_address_book_guidance_step_one_content"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:29
|
||||
msgid "cosy_address_book_guidance_step_two_label"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:33
|
||||
msgid "cosy_address_book_guidance_step_two_content"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:37
|
||||
msgid "cosy_address_book_activation_form_label"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/description.php:45
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:55
|
||||
msgid "cosy_address_book_form_button_text"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/main.php:3
|
||||
msgid "cosy_address_book_menu_page_headline"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/description.php:2
|
||||
msgid "cosy_address_book_plugin_description_header"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/description.php:3
|
||||
msgid "cosy_address_book_plugin_activation_hint"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/description.php:11
|
||||
msgid "cosy_address_book_web_form_insertion_hint"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:15
|
||||
msgid "cosy_address_book_mapping_description"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:22
|
||||
msgid "cosy_address_book_mapping_header_api_fields"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:25
|
||||
msgid "cosy_address_book_mapping_header_form_fields"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:50
|
||||
msgid "cosy_address_book_consent_field_constraint_hint"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:60
|
||||
msgid "cosy_address_book_synchronisation_ready_hint"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/plugins/settings.php:65
|
||||
msgid "cosy_address_book_gdpr_hint_content"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/settings.php:3
|
||||
msgid "cosy_address_book_connection_confirmation"
|
||||
msgstr ""
|
||||
|
||||
#: cosy-address-book/inc/views/settings.php:6
|
||||
msgid "cosy_address_book_deconnection_url_text"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "CoSy Address Book"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://www.ionos.com"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid ""
|
||||
"Sends visitor contact data generated by contact forms embedded in WordPress "
|
||||
"websites to CoSy Address Book"
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "1&1 IONOS"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,9 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.1
|
||||
|
||||
- Typo in plugin name
|
||||
|
||||
## 1.0.0
|
||||
|
||||
- Initial
|
||||
@@ -0,0 +1,5 @@
|
||||
# Changelog
|
||||
|
||||
## 1.0.0
|
||||
|
||||
- Initial
|
||||
@@ -0,0 +1,5 @@
|
||||
Version 1.0.1 - Monday, 30th May 2019
|
||||
- Fix: Authentication with new AffiliateWP setup where visits are Zero.
|
||||
|
||||
Version 1.0.0 - Monday, 20th May 2019
|
||||
- Initial Release
|
||||
@@ -0,0 +1,163 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CryptoPanel Payment Gateway 1.0\n"
|
||||
"Report-Msgid-Bugs-To: https://www.cryptopanel.de\n"
|
||||
"POT-Creation-Date: 2019-04-09 17:18+0200\n"
|
||||
"PO-Revision-Date: 2019-04-09 17:18+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: EMAIL@ADDRESS\n"
|
||||
"Language: de_DE\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
"X-Poedit-KeywordsList: __;_e\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:66 cryptopanel-payment-gateway.php:116
|
||||
msgid "CryptoPanel Payment Gateway"
|
||||
msgstr "CryptoPanel Payment Gateway"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:67
|
||||
msgid "Enables payments with the CryptoGate Gateway."
|
||||
msgstr "Ermöglicht Zahlungen mit dem CryptoGate Gateway."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:107
|
||||
msgid "Enable/Disable"
|
||||
msgstr "Aktivieren/Deaktivieren"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:109
|
||||
msgid "Activate CryptoPanel Payment Gateway"
|
||||
msgstr "Aktiviere CryptoPanel Payment Gateway"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:113
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:115
|
||||
msgid "This controls the title which the user sees during checkout."
|
||||
msgstr "Dieser Titel wird dem Kunden beim Checkout angezeigt."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:120
|
||||
msgid "Order Status"
|
||||
msgstr "Bestellstatus"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:123
|
||||
msgid "Status after checkout."
|
||||
msgstr "Status nach dem Checkout."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:129
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:131
|
||||
msgid "The description which the user sees during checkout."
|
||||
msgstr "Beschreibung, die dem Kunden beim Checkout angezeigt wird."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:132
|
||||
msgid "Pay Securely with Bitcoin, Bitcoin Cash or Litecoin."
|
||||
msgstr ""
|
||||
"Jetzt sicher und verschlüsselt mit Bitcoin, Bitcoin Cash, Dash oder Litecoin "
|
||||
"zahlen."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:136
|
||||
msgid "Note"
|
||||
msgstr "Hinweis"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:138
|
||||
msgid ""
|
||||
"A Note, which will be displayed during customers checkout and inside the "
|
||||
"order email."
|
||||
msgstr ""
|
||||
"Hinweis, der dem Kunden beim Checkout und in der E-Mail Bestätigung "
|
||||
"angezeigt wird."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:143
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:145
|
||||
msgid "An error has occured."
|
||||
msgstr "Ein Fehler ist aufgetreten."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:146
|
||||
msgid ""
|
||||
"An error has occured. Please try again. If the problem persists please "
|
||||
"contact us."
|
||||
msgstr ""
|
||||
"Ein Fehler ist aufgetreten. Bitte versuche es erneut. Falls der Fehler "
|
||||
"weiterhin besteht kontaktiere uns."
|
||||
|
||||
#: cryptopanel-payment-gateway.php:150
|
||||
msgid "CryptoGate URL"
|
||||
msgstr "CryptoGate URL"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:152
|
||||
msgid "Your CryptoGate URL"
|
||||
msgstr "Deine CryptoGate URL"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:157
|
||||
msgid "Merchant Api Token"
|
||||
msgstr "Merchant Api Token"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:159
|
||||
msgid "Your Merchant Api Token"
|
||||
msgstr "Dein Merchant Api Token"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:164
|
||||
msgid "Transmit customer order data"
|
||||
msgstr "Kundenbestelldaten übertragen"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:166
|
||||
msgid ""
|
||||
"Display customer order data at <a target=\"_blank\" href=\"https://member."
|
||||
"cryptopanel.de/member/transaction\">CryptoPanel -> CryptoGate > "
|
||||
"Transactions</a>"
|
||||
msgstr ""
|
||||
"Kundenbestelldaten unter <a target=\"_blank\" href=\"https://member."
|
||||
"cryptopanel.de/member/transaction\">CryptoPanel -> CryptoGate > "
|
||||
"Transaktionen</a> anzeigen"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:167
|
||||
msgid ""
|
||||
"Under certain cirumstances you need an Order data processing contract (=ADV) "
|
||||
"from your service provider. In case you are using CryptoPanel, the ADV "
|
||||
"contract can be requested <a target=\"_blank\" href =\"https://www."
|
||||
"cryptopanel.de/\">here</a>"
|
||||
msgstr ""
|
||||
"Benötigt unter Umständen einen Auftragsdatenverarbeitungsvertrag (=ADV) von "
|
||||
"Deinem Dienstleister. Solltest Du das CryptoPanel nutzen, kannst Du den ADV "
|
||||
"<a target=\"_blank\" href =\"https://www.cryptopanel.de/\">hier</a> "
|
||||
"abschließen"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:175
|
||||
msgid "Currencies"
|
||||
msgstr "Währungen"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:177
|
||||
msgid "Select enabled currencies"
|
||||
msgstr "Aktive Währungen wählen"
|
||||
|
||||
#: cryptopanel-payment-gateway.php:198
|
||||
msgid "Checkout with crypto payment."
|
||||
msgstr "Mit Kryptowährung bezahlen"
|
||||
|
||||
#: lib/CryptoGatePaymentService.php:48
|
||||
#, php-format
|
||||
msgid "Your order at %s"
|
||||
msgstr "Ihr Einkauf bei %s"
|
||||
|
||||
#~ msgid "ApiUrl"
|
||||
#~ msgstr "ApiUrl"
|
||||
|
||||
#~ msgid "ApiUrl."
|
||||
#~ msgstr "ApiUrl."
|
||||
|
||||
#~ msgid "ApiKey"
|
||||
#~ msgstr "ApiKey"
|
||||
|
||||
#~ msgid "Ermöglicht Zahlungen mit dem CryptoGate Gateway."
|
||||
#~ msgstr "Enables payments with the CryptoGate Gateway."
|
||||
2
spec/fixtures/dynamic_finders/plugin_version/culqi-full-integration/change_log/changelog.txt
vendored
Normal file
2
spec/fixtures/dynamic_finders/plugin_version/culqi-full-integration/change_log/changelog.txt
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
2019-04-22 - version 1.0.0
|
||||
* Ready
|
||||
@@ -0,0 +1,138 @@
|
||||
# Copyright (C) 2019 JR Tashjian
|
||||
# This file is distributed under the same license as the CurateWP - Nested Posts plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CurateWP - Nested Posts 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/curatewp-nested-posts\n"
|
||||
"Last-Translator: JR Tashjian <jr@curatewp.com>\n"
|
||||
"Language-Team: CurateWP <info@curatewp.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-04-09T01:17:50+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: cwpnp\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "CurateWP - Nested Posts"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "https://curatewp.com/"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Display child posts within the current post, in a widget, and in your theme."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "JR Tashjian"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://jrtashjian.com"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: this message outputs a minimum PHP requirement.
|
||||
#: curatewp-nested-posts.php:53
|
||||
msgid "Your version of PHP (%s) is below the minimum version of PHP required by CurateWP - Nested Posts (5.6). Please contact your host and request that your version be upgraded to 5.6 or later."
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:31
|
||||
msgid "A section of nested posts."
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:33
|
||||
msgid "Nested Posts (CurateWP)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:125
|
||||
msgid "Title:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:134
|
||||
msgid "Description:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:142
|
||||
msgid "Number of posts to show:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:153
|
||||
#: assets/src/block.js:72
|
||||
msgid "Order by"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by date in descending order.
|
||||
#: includes/Widget.php:160
|
||||
#: assets/src/block.js:77
|
||||
msgid "Newest to Oldest"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by date in ascending order.
|
||||
#: includes/Widget.php:163
|
||||
#: assets/src/block.js:82
|
||||
msgid "Oldest to Newest"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by title in ascending order.
|
||||
#: includes/Widget.php:166
|
||||
#: assets/src/block.js:87
|
||||
msgid "A → Z"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by title in descending order.
|
||||
#: includes/Widget.php:169
|
||||
#: assets/src/block.js:92
|
||||
msgid "Z → A"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:172
|
||||
msgid "Random"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Core.php:182
|
||||
msgid "CurateWP"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:15
|
||||
msgid "Nested Posts"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:18
|
||||
msgid "Display a list of posts which includes descendants of the current page."
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:20
|
||||
msgid "Get CurateWP"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:29
|
||||
msgid "nested"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:30
|
||||
msgid "engagement"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:31
|
||||
msgid "similar"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:66
|
||||
msgid "Number of posts to show"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by menu_order.
|
||||
#: assets/src/block.js:97
|
||||
msgid "Menu Order"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:118
|
||||
msgid "Title for section"
|
||||
msgstr ""
|
||||
|
||||
#: assets/src/block.js:129
|
||||
msgid "Description for section..."
|
||||
msgstr ""
|
||||
@@ -0,0 +1,108 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CurateWP - Related Posts 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/curatewp-related-posts\n"
|
||||
"Last-Translator: JR Tashjian <jr@curatewp.com>\n"
|
||||
"Language-Team: CurateWP <info@curatewp.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-04-05T06:39:43+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Language: \n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: cwprp\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "CurateWP - Related Posts"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "https://curatewp.com/"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Display related posts within the current post, in a widget, and in your theme."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "JR Tashjian"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://jrtashjian.com"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:31
|
||||
msgid "A section of related posts."
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:33
|
||||
msgid "Related Posts (CurateWP)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:139
|
||||
msgid "Title:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:148
|
||||
msgid "Description:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:156
|
||||
msgid "Number of posts to show:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:167
|
||||
#: assets/src/block.js:80
|
||||
msgid "Order by"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by date in descending order.
|
||||
#: includes/Widget.php:174
|
||||
#: assets/src/block.js:85
|
||||
msgid "Newest to Oldest"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by date in ascending order.
|
||||
#: includes/Widget.php:177
|
||||
#: assets/src/block.js:90
|
||||
msgid "Oldest to Newest"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by title in ascending order.
|
||||
#: includes/Widget.php:180
|
||||
#: assets/src/block.js:95
|
||||
msgid "A → Z"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for ordering posts by title in descending order.
|
||||
#: includes/Widget.php:183
|
||||
#: assets/src/block.js:100
|
||||
msgid "Z → A"
|
||||
msgstr ""
|
||||
|
||||
#. translators: label for randomly ordering posts.
|
||||
#: includes/Widget.php:186
|
||||
#: assets/src/block.js:105
|
||||
msgid "Random"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:198
|
||||
#: assets/src/block.js:120
|
||||
msgid "In Category"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Widget.php:208
|
||||
#: assets/src/block.js:126
|
||||
msgid "In Tag"
|
||||
msgstr ""
|
||||
|
||||
#: includes/Core.php:184
|
||||
msgid "CurateWP"
|
||||
msgstr ""
|
||||
|
||||
#. Translators: this message outputs a minimum PHP requirement.
|
||||
#: curatewp-related-posts.php:53
|
||||
msgid "Your version of PHP (%s) is below the minimum version of PHP required by CurateWP - Related Posts (5.6). Please contact your host and request that your version be upgraded to 5.6 or later."
|
||||
msgstr ""
|
||||
@@ -0,0 +1,141 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Daily Snapshot for WooCommerce Admin 1.0.0\n"
|
||||
"POT-Creation-Date: 2019-06-05 18:53+0530\n"
|
||||
"PO-Revision-Date: 2019-06-05 18:53+0530\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: MakeWebBetter <webmaster@makewebbetter.com>\n"
|
||||
"Language: English\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"X-Poedit-KeywordsList: __;esc_html_e\n"
|
||||
"X-Poedit-Basepath: \n"
|
||||
"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: daily-snapshot-for-woocommerce-admin.php:34
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The Daily Snapshots for WooCommerce Admin feature plugin requires <a href="
|
||||
"\"%s\">WooCommerce Admin</a> to be installed and active."
|
||||
msgstr ""
|
||||
|
||||
#: daily-snapshot-for-woocommerce-admin.php:78
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:32
|
||||
msgid "Daily Snapshot"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:53
|
||||
msgid "Automated Reports"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:58
|
||||
msgid "Enable/Disable"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:62
|
||||
msgid "Enable Daily Snapshot"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:65
|
||||
msgid "Recipients"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:67
|
||||
msgid "Comma seperated email addresses, reports are sent to."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:68
|
||||
msgid "Comma seperated emails to send reports to."
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:212
|
||||
#, php-format
|
||||
msgid "Daily summary of %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-mwb-dss-wc-admin.php:214
|
||||
msgid "Store Admin"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:27
|
||||
msgid "Gross Revenue"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:65
|
||||
msgid "Net Revenue"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:94
|
||||
msgid "Taxes|Shipping"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:112
|
||||
msgid "Taxes"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:139
|
||||
msgid "Shipping"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:181
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:204
|
||||
msgid "Avg Orders Value"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:232
|
||||
msgid "Product Sold"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:265
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:288
|
||||
msgid "Avg items/order"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:297
|
||||
msgid "N/A"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:324
|
||||
msgid "Best Product"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:361
|
||||
msgid "Coupons"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:384
|
||||
msgid "Coupons Value"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:417
|
||||
msgid "Refunds"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:440
|
||||
msgid "Refunded Value"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:482
|
||||
msgid "New/Returning Customer"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:493
|
||||
msgid "Number of returning customer"
|
||||
msgstr ""
|
||||
|
||||
#: templates/emails/snap-two-stacks.php:507
|
||||
msgid "Number of new customer"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,2 @@
|
||||
Version 1.0.0
|
||||
- Initial Release
|
||||
@@ -0,0 +1,123 @@
|
||||
# Copyright (C) 2019 WebEmpire
|
||||
# This file is distributed under the GPL version 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Design Sidebar Using Page Builder 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/design-sidebar-with-builder\n"
|
||||
"POT-Creation-Date: 2019-04-27 19:05:24+00:00\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: en\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-Country: United States\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-KeywordsList: "
|
||||
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
|
||||
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-Bookmarks: \n"
|
||||
"X-Textdomain-Support: yes\n"
|
||||
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:59
|
||||
msgid "Search Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:60
|
||||
msgid "Sidebar Page"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:61
|
||||
msgid "Edit Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:62
|
||||
msgid "View Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:63
|
||||
msgid "Add New"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:64
|
||||
msgid "Update Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:65
|
||||
msgid "Add New Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:66
|
||||
msgid "New Sidebar"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:103
|
||||
#: classes/class-sidebar-builder-cpt.php:104
|
||||
msgid "Sidebar Builder"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:161
|
||||
msgid "Page Title"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:162
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:163
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-template-library-widget.php:60
|
||||
msgid "Sidebar Template Library"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-template-library-widget.php:121
|
||||
msgid "No templates to show."
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-template-library-widget.php:127
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-template-library-widget.php:132
|
||||
msgid "Choose Template"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-template-library-widget.php:134
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "Design Sidebar Using Page Builder"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "#"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid ""
|
||||
"The plugin is useful to edit and design the sidebar of your site without "
|
||||
"sacrificing your favorite page builder."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "WebEmpire"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:57
|
||||
msgctxt "flow general name"
|
||||
msgid "Sidebar Builder"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-sidebar-builder-cpt.php:58
|
||||
msgctxt "flow singular name"
|
||||
msgid "Sidebar"
|
||||
msgstr ""
|
||||
742
spec/fixtures/dynamic_finders/plugin_version/download-after-email/translation_file/languages/dae.pot
vendored
Normal file
742
spec/fixtures/dynamic_finders/plugin_version/download-after-email/translation_file/languages/dae.pot
vendored
Normal file
@@ -0,0 +1,742 @@
|
||||
# Copyright (C) 2019 MK-Scripts
|
||||
# This file is distributed under the GNU General Public License v3 or later.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Download After Email v1.3\n"
|
||||
"Report-Msgid-Bugs-To: MK-Scripts <mk-scripts@outlook.com>\n"
|
||||
"POT-Creation-Date: 2019-04-14 01:11+0100\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
|
||||
"X-Generator: grunt-wp-i18n1.0.2\n"
|
||||
|
||||
#: dae.php:48
|
||||
msgid ""
|
||||
"\"Download after Email\" "
|
||||
"is using the same name "
|
||||
"for a variable, function "
|
||||
"or a class as another "
|
||||
"plugin and may not "
|
||||
"function as expected. "
|
||||
msgstr ""
|
||||
|
||||
#: dae.php:256
|
||||
#: includes/functions.php:137
|
||||
msgid "Select File"
|
||||
msgstr ""
|
||||
|
||||
#: dae.php:257
|
||||
msgid "Select"
|
||||
msgstr ""
|
||||
|
||||
#: dae.php:258
|
||||
#: includes/functions.php:107
|
||||
msgid "No image selected"
|
||||
msgstr ""
|
||||
|
||||
#: dae.php:259
|
||||
#: includes/functions.php:128
|
||||
msgid "No file selected"
|
||||
msgstr ""
|
||||
|
||||
#: dae.php:260
|
||||
msgid ""
|
||||
"Are you sure you want to "
|
||||
"remove this subscriber, "
|
||||
"including the attached "
|
||||
"data of the "
|
||||
"downloadlinks?"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:15
|
||||
#: includes/admin-menu.php:29
|
||||
msgid "Settings saved."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:48
|
||||
msgid "Customize Messages"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:49
|
||||
#: includes/admin-menu.php:439
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:57
|
||||
#: includes/admin-menu.php:58
|
||||
msgid "Subscribers"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:66
|
||||
#: includes/admin-menu.php:67
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:92
|
||||
msgid "Submit Messages"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:96
|
||||
msgid "Unvalid Input"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:98
|
||||
#: includes/shortcodes.php:328
|
||||
msgid ""
|
||||
"Please make sure all "
|
||||
"fields are filled in "
|
||||
"correctly."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:99
|
||||
#: includes/admin-menu.php:106
|
||||
#: includes/admin-menu.php:113
|
||||
#: includes/admin-menu.php:126
|
||||
msgid ""
|
||||
"Saving while left empty, "
|
||||
"the default value is "
|
||||
"been filled in."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:103
|
||||
msgid "Email Exists"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:105
|
||||
#: includes/shortcodes.php:383
|
||||
msgid ""
|
||||
"To this email address an "
|
||||
"email with the download "
|
||||
"link has already been "
|
||||
"sent."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:110
|
||||
msgid "Email Success"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:112
|
||||
#: includes/shortcodes.php:491
|
||||
msgid ""
|
||||
"An email has been sent "
|
||||
"with the download link."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:119
|
||||
msgid "Email Messages"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:123
|
||||
msgid "Unvalid Link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:125
|
||||
msgid ""
|
||||
"This link already is "
|
||||
"used and is now "
|
||||
"unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:130
|
||||
msgid "From Email"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:134
|
||||
msgid "From Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:138
|
||||
msgid "Email Subject"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:145
|
||||
msgid ""
|
||||
"You can use the "
|
||||
"following tags in the "
|
||||
"(html) email content "
|
||||
"below:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:196
|
||||
msgid "Search results for:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:202
|
||||
#: includes/admin-menu.php:229
|
||||
#: includes/admin-menu.php:245
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:203
|
||||
#: includes/admin-menu.php:230
|
||||
#: includes/post-types.php:573
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:212
|
||||
#: includes/admin-menu.php:239
|
||||
msgid "Downloadlinks"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:249
|
||||
msgid "File"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:253
|
||||
msgid "Created"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:257
|
||||
msgid "IP (created)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:261
|
||||
msgid "Used"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:262
|
||||
#: includes/admin-menu.php:266
|
||||
msgid "not used"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:265
|
||||
msgid "IP (used)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:282
|
||||
msgid "of"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:298
|
||||
msgid "Subscribers Log"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:301
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:394
|
||||
msgid "Premium Features"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:395
|
||||
msgid ""
|
||||
"We are working on an "
|
||||
"extension to upgrade "
|
||||
"this plugin to the "
|
||||
"premium version with the "
|
||||
"following features:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:399
|
||||
msgid "Form Fields"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:400
|
||||
msgid ""
|
||||
"Create and manage your "
|
||||
"own form fields."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:403
|
||||
msgid "Export CSV"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:404
|
||||
msgid ""
|
||||
"Export subscriber data "
|
||||
"to a CSV-file and use it "
|
||||
"for email marketing, "
|
||||
"newsletters etc."
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:407
|
||||
msgid ""
|
||||
"Integration Mailchimp"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:408
|
||||
msgid ""
|
||||
"Integration with "
|
||||
"Mailchimp. It "
|
||||
"automatically saves "
|
||||
"subscribers and their "
|
||||
"data to your Mailchimp "
|
||||
"list. "
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:434
|
||||
msgid "Deactivation"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:435
|
||||
msgid ""
|
||||
"The following data will "
|
||||
"be deleted on "
|
||||
"deactivation:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/admin-menu.php:443
|
||||
msgid ""
|
||||
"Subscribers + "
|
||||
"Downloadlinks"
|
||||
msgstr ""
|
||||
|
||||
#: includes/download.php:19
|
||||
msgid ""
|
||||
"This link has already "
|
||||
"been used and is now "
|
||||
"unavailable."
|
||||
msgstr ""
|
||||
|
||||
#: includes/download.php:34
|
||||
msgid ""
|
||||
"A problem occurred. "
|
||||
"Please try again or feel "
|
||||
"free to contact us."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:11
|
||||
msgctxt ""
|
||||
"post type general name"
|
||||
msgid "Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:12
|
||||
msgctxt ""
|
||||
"post type singular name"
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:13
|
||||
msgctxt "download"
|
||||
msgid "Add New"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:14
|
||||
msgid "Add New Download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:15
|
||||
msgid "Edit Download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:16
|
||||
msgid "New Download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:17
|
||||
msgid "View Download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:18
|
||||
msgid "View Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:19
|
||||
msgid "Search Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:20
|
||||
msgid "No downloads found."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:21
|
||||
msgid ""
|
||||
"No downloads found in "
|
||||
"Trash."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:23
|
||||
msgid "All Downloads"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:24
|
||||
msgid "Download Archives"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:25
|
||||
msgid "Download Attributes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:26
|
||||
msgid ""
|
||||
"Insert into download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:27
|
||||
msgid ""
|
||||
"Uploaded to this download"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:28
|
||||
msgctxt "download"
|
||||
msgid "Featured Image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:29
|
||||
msgctxt "download"
|
||||
msgid "Set featured image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:30
|
||||
msgctxt "download"
|
||||
msgid ""
|
||||
"Remove featured image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:31
|
||||
msgctxt "download"
|
||||
msgid ""
|
||||
"Use as featured image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:32
|
||||
msgid ""
|
||||
"Filter downloads list"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:33
|
||||
msgid ""
|
||||
"Downloads list navigation"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:34
|
||||
msgid "Downloads list"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:63
|
||||
msgid "M j, Y @ H:i"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:67
|
||||
#: includes/post-types.php:70
|
||||
msgid "Download updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:68
|
||||
msgid ""
|
||||
"Custom field updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:69
|
||||
msgid ""
|
||||
"Custom field deleted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:71
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Download restored to "
|
||||
"revision from %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:72
|
||||
msgid "Download published."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:73
|
||||
msgid "Download saved."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:74
|
||||
msgid "Download submitted."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:75
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Page scheduled for: %s."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:76
|
||||
msgid ""
|
||||
"Download draft updated."
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:85
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:86
|
||||
#: includes/post-types.php:572
|
||||
msgid "Shortcode"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:87
|
||||
#: includes/post-types.php:417
|
||||
msgid "Preview"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:124
|
||||
#: includes/post-types.php:128
|
||||
msgid "Download file"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:134
|
||||
msgid "File image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:140
|
||||
msgid "File image size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:143
|
||||
msgid "Thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:144
|
||||
msgid "Medium"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:145
|
||||
msgid "Medium large"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:146
|
||||
msgid "Large"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:147
|
||||
msgid "Full"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:153
|
||||
#: includes/post-types.php:157
|
||||
msgid "Background"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:160
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:161
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:167
|
||||
msgid ""
|
||||
"Background-attachment"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:170
|
||||
msgid "Scroll"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:171
|
||||
msgid "Fixed"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:177
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:181
|
||||
msgid "Title font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:185
|
||||
msgid "Title color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:190
|
||||
msgid "Content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:194
|
||||
msgid "Text font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:198
|
||||
msgid "Text color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:203
|
||||
msgid "Button"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:207
|
||||
msgid "Button text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:211
|
||||
msgid "Button color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:215
|
||||
msgid "Button color hover"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:219
|
||||
msgid "Button background"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:223
|
||||
msgid ""
|
||||
"Button background hover"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:227
|
||||
msgid "Button border-color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:231
|
||||
msgid ""
|
||||
"Button border-color hover"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:235
|
||||
msgid "Button font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:239
|
||||
msgid "Button width"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:243
|
||||
msgid "Button padding"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:248
|
||||
#: includes/post-types.php:252
|
||||
msgid "Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:256
|
||||
msgid "Label font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:260
|
||||
msgid "Label color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:265
|
||||
msgid "Input fields"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:269
|
||||
msgid "Input font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:273
|
||||
msgid "Input color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:277
|
||||
msgid "Input background"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:281
|
||||
msgid "Input icon color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:285
|
||||
msgid ""
|
||||
"Input icon background"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:290
|
||||
msgid "Placeholders"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:295
|
||||
msgid "Placeholder text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:300
|
||||
msgid "Placeholder color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:305
|
||||
msgid "Checkbox"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:309
|
||||
msgid "Checkbox text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:313
|
||||
msgid ""
|
||||
"Checkbox text font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:317
|
||||
msgid "Checkbox text color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:322
|
||||
msgid "Submit button"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:326
|
||||
msgid "Submit button text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:330
|
||||
msgid "Submit button color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:334
|
||||
msgid ""
|
||||
"Submit button color hover"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:338
|
||||
msgid ""
|
||||
"Submit button background"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:342
|
||||
msgid ""
|
||||
"Submit button background "
|
||||
"hover"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:346
|
||||
msgid ""
|
||||
"Submit button font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:351
|
||||
msgid "Submit message"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:355
|
||||
msgid ""
|
||||
"Submit message font-size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:359
|
||||
msgid ""
|
||||
"Submit message color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:364
|
||||
msgid "Borders"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:368
|
||||
msgid "Border-radius"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:373
|
||||
msgid "Font"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:377
|
||||
msgid "Font-family"
|
||||
msgstr ""
|
||||
|
||||
#: includes/post-types.php:409
|
||||
msgid "Your shortcode..."
|
||||
msgstr ""
|
||||
|
||||
#: includes/preview.php:24
|
||||
msgid ""
|
||||
"Click the preview button "
|
||||
"to see the latest "
|
||||
"changes..."
|
||||
msgstr ""
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user