Compare commits
100 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f0997bfe0d | ||
|
|
8b67dad456 | ||
|
|
53fdac1038 | ||
|
|
534a7602e6 | ||
|
|
30f329fe43 | ||
|
|
4ce39951a9 | ||
|
|
0e9eb34626 | ||
|
|
0ff299c425 | ||
|
|
6366258ce9 | ||
|
|
bca69a026e | ||
|
|
adc26ea42a | ||
|
|
b16e8d84d7 | ||
|
|
5ee405d5a0 | ||
|
|
a5b9470636 | ||
|
|
16a3d54cb6 | ||
|
|
9677dcd978 | ||
|
|
17ea42f918 | ||
|
|
bd8915918d | ||
|
|
91db6773a0 | ||
|
|
f50680b61f | ||
|
|
3fb5d33333 | ||
|
|
f70bbb2660 | ||
|
|
589c1ac9bb | ||
|
|
d458fa1b89 | ||
|
|
dc2c99434f | ||
|
|
bbf36562d0 | ||
|
|
c458edf3e4 | ||
|
|
99c2aaef7a | ||
|
|
921096ca10 | ||
|
|
b0fbd6fa36 | ||
|
|
21bd67c44f | ||
|
|
4f142985a2 | ||
|
|
bfa89b44bc | ||
|
|
eba876e72b | ||
|
|
f1a7413e20 | ||
|
|
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 |
@@ -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,3 +1,4 @@
|
||||
require: rubocop-performance
|
||||
AllCops:
|
||||
TargetRubyVersion: 2.4
|
||||
Exclude:
|
||||
@@ -9,6 +10,8 @@ LineLength:
|
||||
Max: 120
|
||||
MethodLength:
|
||||
Max: 20
|
||||
Exclude:
|
||||
- 'app/controllers/enumeration/cli_options.rb'
|
||||
Lint/UriEscapeUnescape:
|
||||
Enabled: false
|
||||
Metrics/AbcSize:
|
||||
@@ -18,6 +21,8 @@ Metrics/BlockLength:
|
||||
- 'spec/**/*'
|
||||
Metrics/ClassLength:
|
||||
Max: 150
|
||||
Exclude:
|
||||
- 'app/controllers/enumeration/cli_options.rb'
|
||||
Metrics/CyclomaticComplexity:
|
||||
Max: 8
|
||||
Style/Documentation:
|
||||
|
||||
@@ -17,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"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM ruby:2.6.2-alpine3.9 AS builder
|
||||
FROM ruby:2.6.3-alpine AS builder
|
||||
LABEL maintainer="WPScan Team <team@wpscan.org>"
|
||||
|
||||
ARG BUNDLER_ARGS="--jobs=8 --without test development"
|
||||
@@ -19,19 +19,22 @@ RUN rake install --trace
|
||||
RUN chmod -R a+r /usr/local/bundle
|
||||
|
||||
|
||||
FROM ruby:2.6.2-alpine3.9
|
||||
FROM ruby:2.6.3-alpine
|
||||
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"]
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
<a href="https://badge.fury.io/rb/wpscan" target="_blank"><img src="https://badge.fury.io/rb/wpscan.svg"></a>
|
||||
<a href="https://travis-ci.org/wpscanteam/wpscan" target="_blank"><img src="https://travis-ci.org/wpscanteam/wpscan.svg?branch=master"></a>
|
||||
<a href="https://codeclimate.com/github/wpscanteam/wpscan" target="_blank"><img src="https://codeclimate.com/github/wpscanteam/wpscan/badges/gpa.svg"></a>
|
||||
<a href="https://www.patreon.com/wpscan" target="_blank"><img src="https://img.shields.io/badge/patreon-donate-green.svg"></a>
|
||||
</p>
|
||||
|
||||
# INSTALL
|
||||
@@ -30,6 +29,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)
|
||||
|
||||
|
||||
@@ -7,8 +7,10 @@ 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
|
||||
|
||||
@@ -16,7 +18,7 @@ module WPScan
|
||||
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
|
||||
|
||||
@@ -7,15 +7,6 @@ module WPScan
|
||||
module Controller
|
||||
# Enumeration Controller
|
||||
class Enumeration < CMSScanner::Controller::Base
|
||||
def before_scan
|
||||
DB::DynamicFinders::Plugin.create_versions_finders
|
||||
DB::DynamicFinders::Theme.create_versions_finders
|
||||
|
||||
# Force the Garbage Collector to run due to the above method being
|
||||
# quite heavy in objects allocation
|
||||
GC.start
|
||||
end
|
||||
|
||||
def run
|
||||
enum = ParsedCli.enumerate || {}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ module WPScan
|
||||
end
|
||||
|
||||
# @return [ Array<OptParseValidator::OptBase> ]
|
||||
# rubocop:disable Metrics/MethodLength
|
||||
def cli_enum_choices
|
||||
[
|
||||
OptMultiChoices.new(
|
||||
@@ -45,7 +44,6 @@ module WPScan
|
||||
)
|
||||
]
|
||||
end
|
||||
# rubocop:enable Metrics/MethodLength
|
||||
|
||||
# @return [ Array<OptParseValidator::OptBase> ]
|
||||
def cli_plugins_opts
|
||||
@@ -67,6 +65,11 @@ module WPScan
|
||||
'Use the supplied mode to check plugins versions instead of the --detection-mode ' \
|
||||
'or --plugins-detection modes.'],
|
||||
choices: %w[mixed passive aggressive], normalize: :to_sym, default: :mixed
|
||||
),
|
||||
OptInteger.new(
|
||||
['--plugins-threshold THRESHOLD',
|
||||
'Raise an error when the number of detected plugins via known locations reaches the threshold. ' \
|
||||
'Set to 0 to ignore the threshold.'], default: 100
|
||||
)
|
||||
]
|
||||
end
|
||||
@@ -91,6 +94,11 @@ module WPScan
|
||||
'Use the supplied mode to check themes versions instead of the --detection-mode ' \
|
||||
'or --themes-detection modes.'],
|
||||
choices: %w[mixed passive aggressive], normalize: :to_sym, advanced: true
|
||||
),
|
||||
OptInteger.new(
|
||||
['--themes-threshold THRESHOLD',
|
||||
'Raise an error when the number of detected themes via known locations reaches the threshold. ' \
|
||||
'Set to 0 to ignore the threshold.'], default: 20
|
||||
)
|
||||
]
|
||||
end
|
||||
|
||||
@@ -62,6 +62,7 @@ module WPScan
|
||||
def enum_plugins
|
||||
opts = default_opts('plugins').merge(
|
||||
list: plugins_list_from_opts(ParsedCli.options),
|
||||
threshold: ParsedCli.plugins_threshold,
|
||||
sort: true
|
||||
)
|
||||
|
||||
@@ -108,6 +109,7 @@ module WPScan
|
||||
def enum_themes
|
||||
opts = default_opts('themes').merge(
|
||||
list: themes_list_from_opts(ParsedCli.options),
|
||||
threshold: ParsedCli.themes_threshold,
|
||||
sort: true
|
||||
)
|
||||
|
||||
|
||||
@@ -65,30 +65,43 @@ module WPScan
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ module WPScan
|
||||
end
|
||||
|
||||
def before_scan
|
||||
WPScan::DB::DynamicFinders::Wordpress.create_versions_finders
|
||||
DB::DynamicFinders::Wordpress.create_versions_finders
|
||||
end
|
||||
|
||||
def run
|
||||
|
||||
@@ -20,9 +20,9 @@ module WPScan
|
||||
|
||||
enumerate(potential_urls(opts), opts.merge(check_full_response: 200)) do |res|
|
||||
if res.effective_url.end_with?('.zip')
|
||||
next unless res.headers['Content-Type'] =~ %r{\Aapplication/zip}i
|
||||
next unless %r{\Aapplication/zip}i.match?(res.headers['Content-Type'])
|
||||
else
|
||||
next unless res.body =~ SQL_PATTERN
|
||||
next unless SQL_PATTERN.match?(res.body)
|
||||
end
|
||||
|
||||
found << Model::DbExport.new(res.request.url, found_by: DIRECT_ACCESS, confidence: 100)
|
||||
|
||||
@@ -9,7 +9,7 @@ module WPScan
|
||||
def aggressive(_opts = {})
|
||||
path = 'installer-log.txt'
|
||||
|
||||
return unless target.head_and_get(path).body =~ /DUPLICATOR INSTALL-LOG/
|
||||
return unless /DUPLICATOR INSTALL-LOG/.match?(target.head_and_get(path).body)
|
||||
|
||||
Model::DuplicatorInstallerLog.new(
|
||||
target.url(path),
|
||||
|
||||
@@ -9,8 +9,8 @@ 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&.match?(pattern)
|
||||
|
||||
url = target.url('wp-content/mu-plugins/')
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ module WPScan
|
||||
path = 'wp-content/uploads/dump.sql'
|
||||
res = target.head_and_get(path, [200], get: { headers: { 'Range' => 'bytes=0-3000' } })
|
||||
|
||||
return unless res.body =~ SQL_PATTERN
|
||||
return unless SQL_PATTERN.match?(res.body)
|
||||
|
||||
Model::UploadSQLDump.new(
|
||||
target.url(path),
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -13,25 +13,15 @@ module WPScan
|
||||
def initialize(plugin)
|
||||
finders << PluginVersion::Readme.new(plugin)
|
||||
|
||||
load_specific_finders(plugin)
|
||||
create_and_load_dynamic_versions_finders(plugin)
|
||||
end
|
||||
|
||||
# Load the finders associated with the plugin
|
||||
# Create the dynamic version finders related to the plugin and register them
|
||||
#
|
||||
# @param [ Model::Plugin ] plugin
|
||||
def load_specific_finders(plugin)
|
||||
module_name = plugin.classify
|
||||
|
||||
return unless Finders::PluginVersion.constants.include?(module_name)
|
||||
|
||||
mod = Finders::PluginVersion.const_get(module_name)
|
||||
|
||||
mod.constants.each do |constant|
|
||||
c = mod.const_get(constant)
|
||||
|
||||
next unless c.is_a?(Class)
|
||||
|
||||
finders << c.new(plugin)
|
||||
def create_and_load_dynamic_versions_finders(plugin)
|
||||
DB::DynamicFinders::Plugin.create_versions_finders(plugin.slug).each do |finder|
|
||||
finders << finder.new(plugin)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -11,7 +11,7 @@ module WPScan
|
||||
|
||||
# The target(plugin)#readme_url can't be used directly here
|
||||
# as if the --detection-mode is passive, it will always return nil
|
||||
Model::WpItem::READMES.each do |file|
|
||||
target.potential_readme_filenames.each do |file|
|
||||
res = target.head_and_get(file)
|
||||
|
||||
next unless res.code == 200 && !(numbers = version_numbers(res.body)).empty?
|
||||
@@ -52,7 +52,7 @@ module WPScan
|
||||
|
||||
number = Regexp.last_match[1]
|
||||
|
||||
number if number =~ /[0-9]+/
|
||||
number if /[0-9]+/.match?(number)
|
||||
end
|
||||
|
||||
# @param [ String ] body
|
||||
|
||||
@@ -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
|
||||
@@ -15,7 +15,7 @@ module WPScan
|
||||
#
|
||||
# @return [ Plugin ] The detected plugin in the response, related to the config
|
||||
def process_response(opts, response, slug, klass, config)
|
||||
return unless response.body =~ config['pattern']
|
||||
return unless response.body&.match?(config['pattern'])
|
||||
|
||||
Model::Plugin.new(
|
||||
slug,
|
||||
|
||||
@@ -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
|
||||
@@ -18,7 +18,7 @@ module WPScan
|
||||
response.html.xpath(config['xpath'] || '//comment()').each do |node|
|
||||
comment = node.text.to_s.strip
|
||||
|
||||
next unless comment =~ config['pattern']
|
||||
next unless comment&.match?(config['pattern'])
|
||||
|
||||
return Model::Plugin.new(
|
||||
slug,
|
||||
|
||||
@@ -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,8 +19,10 @@ 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))
|
||||
|
||||
raise Error::PluginsThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
|
||||
end
|
||||
|
||||
found
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -16,25 +16,15 @@ module WPScan
|
||||
ThemeVersion::Style.new(theme) <<
|
||||
ThemeVersion::WooFrameworkMetaGenerator.new(theme)
|
||||
|
||||
load_specific_finders(theme)
|
||||
create_and_load_dynamic_versions_finders(theme)
|
||||
end
|
||||
|
||||
# Load the finders associated with the theme
|
||||
# Create the dynamic version finders related to the theme and register them
|
||||
#
|
||||
# @param [ Model::Theme ] theme
|
||||
def load_specific_finders(theme)
|
||||
module_name = theme.classify
|
||||
|
||||
return unless Finders::ThemeVersion.constants.include?(module_name)
|
||||
|
||||
mod = Finders::ThemeVersion.const_get(module_name)
|
||||
|
||||
mod.constants.each do |constant|
|
||||
c = mod.const_get(constant)
|
||||
|
||||
next unless c.is_a?(Class)
|
||||
|
||||
finders << c.new(theme)
|
||||
def create_and_load_dynamic_versions_finders(theme)
|
||||
DB::DynamicFinders::Theme.create_versions_finders(theme.slug).each do |finder|
|
||||
finders << finder.new(theme)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -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,8 +19,10 @@ 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))
|
||||
|
||||
raise Error::ThemesThresholdReached if opts[:threshold].positive? && found.size >= opts[:threshold]
|
||||
end
|
||||
|
||||
found
|
||||
|
||||
@@ -22,7 +22,7 @@ module WPScan
|
||||
found = []
|
||||
|
||||
enumerate(target_urls(opts), opts.merge(check_full_response: 400)) do |res|
|
||||
next unless res.body =~ /no image specified/i
|
||||
next unless /no image specified/i.match?(res.body)
|
||||
|
||||
found << Model::Timthumb.new(res.request.url, opts.merge(found_by: found_by, confidence: 100))
|
||||
end
|
||||
|
||||
@@ -83,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,9 +45,7 @@ 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 /author=[0-9]+/.match?(uri.query)
|
||||
|
||||
@@ -24,7 +24,7 @@ module WPScan
|
||||
|
||||
return found if error.empty? # Protection plugin / error disabled
|
||||
|
||||
next unless error =~ /The password you entered for the username|Incorrect Password/i
|
||||
next unless /The password you entered for the username|Incorrect Password/i.match?(error)
|
||||
|
||||
found << Model::User.new(username, found_by: found_by, confidence: 100)
|
||||
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)
|
||||
|
||||
@@ -28,6 +28,11 @@ module WPScan
|
||||
|
||||
@version
|
||||
end
|
||||
|
||||
# @return [ Array<String> ]
|
||||
def potential_readme_filenames
|
||||
@potential_readme_filenames ||= [*(DB::DynamicFinders::Plugin.df_data.dig(slug, 'Readme', 'path') || super)]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -9,11 +9,12 @@ module WPScan
|
||||
include CMSScanner::Target::Platform::PHP
|
||||
include CMSScanner::Target::Server::Generic
|
||||
|
||||
# Most common readme filenames, based on checking all public plugins and themes.
|
||||
READMES = %w[readme.txt README.txt README.md readme.md Readme.txt].freeze
|
||||
|
||||
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
|
||||
@@ -117,7 +118,7 @@ module WPScan
|
||||
|
||||
return @readme_url unless @readme_url.nil?
|
||||
|
||||
READMES.each do |path|
|
||||
potential_readme_filenames.each do |path|
|
||||
t_url = url(path)
|
||||
|
||||
return @readme_url = t_url if Browser.forge_request(t_url, blog.head_or_get_params).run.code == 200
|
||||
@@ -126,6 +127,10 @@ module WPScan
|
||||
@readme_url = false
|
||||
end
|
||||
|
||||
def potential_readme_filenames
|
||||
@potential_readme_filenames ||= READMES
|
||||
end
|
||||
|
||||
# @param [ String ] path
|
||||
# @param [ Hash ] params The request params
|
||||
#
|
||||
|
||||
@@ -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 -%>
|
||||
@@ -5,18 +5,19 @@ module WPScan
|
||||
module DynamicFinders
|
||||
class Base
|
||||
# @return [ String ]
|
||||
def self.db_file
|
||||
@db_file ||= DB_DIR.join('dynamic_finders.yml').to_s
|
||||
def self.df_file
|
||||
@df_file ||= DB_DIR.join('dynamic_finders.yml').to_s
|
||||
end
|
||||
|
||||
# @return [ Hash ]
|
||||
def self.db_data
|
||||
# true allows aliases to be loaded
|
||||
@db_data ||= YAML.safe_load(File.read(db_file), [Regexp], [], true)
|
||||
def self.all_df_data
|
||||
@all_df_data ||= YAML.safe_load(File.read(df_file), [Regexp])
|
||||
end
|
||||
|
||||
# @return [ Array<Symbol> ]
|
||||
def self.allowed_classes
|
||||
# The Readme is not put in there as it's not a Real DF, but rather using the DF system
|
||||
# to get the list of potential filenames for a given slug
|
||||
@allowed_classes ||= %i[Comment Xpath HeaderPattern BodyPattern JavascriptVar QueryParameter ConfigParser]
|
||||
end
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ module WPScan
|
||||
module DynamicFinders
|
||||
class Plugin < Base
|
||||
# @return [ Hash ]
|
||||
def self.db_data
|
||||
@db_data ||= super['plugins'] || {}
|
||||
def self.df_data
|
||||
@df_data ||= all_df_data['plugins'] || {}
|
||||
end
|
||||
|
||||
def self.version_finder_module
|
||||
@@ -21,7 +21,7 @@ module WPScan
|
||||
|
||||
return configs unless allowed_classes.include?(finder_class)
|
||||
|
||||
db_data.each do |slug, finders|
|
||||
df_data.each do |slug, finders|
|
||||
# Quite sure better can be done with some kind of logic statement in the select
|
||||
fs = if aggressive
|
||||
finders.reject { |_f, c| c['path'].nil? }
|
||||
@@ -48,7 +48,7 @@ module WPScan
|
||||
|
||||
@versions_finders_configs = {}
|
||||
|
||||
db_data.each do |slug, finders|
|
||||
df_data.each do |slug, finders|
|
||||
finders.each do |finder_name, config|
|
||||
next unless config.key?('version')
|
||||
|
||||
@@ -73,23 +73,33 @@ module WPScan
|
||||
version_finder_module.const_get(constant_name)
|
||||
end
|
||||
|
||||
def self.create_versions_finders
|
||||
versions_finders_configs.each do |slug, finders|
|
||||
mod = maybe_create_module(slug)
|
||||
# Create the dynamic finders related to the given slug, and return the created classes
|
||||
#
|
||||
# @param [ String ] slug
|
||||
#
|
||||
# @return [ Array<Class> ] The created classes
|
||||
def self.create_versions_finders(slug)
|
||||
created = []
|
||||
mod = maybe_create_module(slug)
|
||||
|
||||
finders.each do |finder_class, config|
|
||||
klass = config['class'] || finder_class
|
||||
versions_finders_configs[slug]&.each do |finder_class, config|
|
||||
klass = config['class'] || finder_class
|
||||
|
||||
# Instead of raising exceptions, skip unallowed/already defined finders
|
||||
# So that, when new DF configs are put in the .yml
|
||||
# users with old version of WPScan will still be able to scan blogs
|
||||
# when updating the DB but not the tool
|
||||
next if mod.constants.include?(finder_class.to_sym) ||
|
||||
!allowed_classes.include?(klass.to_sym)
|
||||
# Instead of raising exceptions, skip unallowed/already defined finders
|
||||
# So that, when new DF configs are put in the .yml
|
||||
# users with old version of WPScan will still be able to scan blogs
|
||||
# when updating the DB but not the tool
|
||||
|
||||
version_finder_super_class(klass).create_child_class(mod, finder_class.to_sym, config)
|
||||
end
|
||||
next unless allowed_classes.include?(klass.to_sym)
|
||||
|
||||
created << if mod.constants.include?(finder_class.to_sym)
|
||||
mod.const_get(finder_class.to_sym)
|
||||
else
|
||||
version_finder_super_class(klass).create_child_class(mod, finder_class.to_sym, config)
|
||||
end
|
||||
end
|
||||
|
||||
created
|
||||
end
|
||||
|
||||
# The idea here would be to check if the class exist in
|
||||
|
||||
@@ -5,8 +5,8 @@ module WPScan
|
||||
module DynamicFinders
|
||||
class Theme < Plugin
|
||||
# @return [ Hash ]
|
||||
def self.db_data
|
||||
@db_data ||= super['themes'] || {}
|
||||
def self.df_data
|
||||
@df_data ||= all_df_data['themes'] || {}
|
||||
end
|
||||
|
||||
def self.version_finder_module
|
||||
|
||||
@@ -5,8 +5,8 @@ module WPScan
|
||||
module DynamicFinders
|
||||
class Wordpress < Base
|
||||
# @return [ Hash ]
|
||||
def self.db_data
|
||||
@db_data ||= super['wordpress'] || {}
|
||||
def self.df_data
|
||||
@df_data ||= all_df_data['wordpress'] || {}
|
||||
end
|
||||
|
||||
# @return [ Constant ]
|
||||
@@ -30,9 +30,9 @@ module WPScan
|
||||
return configs unless allowed_classes.include?(finder_class)
|
||||
|
||||
finders = if aggressive
|
||||
db_data.reject { |_f, c| c['path'].nil? }
|
||||
df_data.reject { |_f, c| c['path'].nil? }
|
||||
else
|
||||
db_data.select { |_f, c| c['path'].nil? }
|
||||
df_data.select { |_f, c| c['path'].nil? }
|
||||
end
|
||||
|
||||
finders.each do |finder_name, config|
|
||||
@@ -48,7 +48,7 @@ module WPScan
|
||||
|
||||
# @return [ Hash ]
|
||||
def self.versions_finders_configs
|
||||
@versions_finders_configs ||= db_data.select { |_finder_name, config| config.key?('version') }
|
||||
@versions_finders_configs ||= df_data.select { |_finder_name, config| config.key?('version') }
|
||||
end
|
||||
|
||||
def self.create_versions_finders
|
||||
|
||||
@@ -64,11 +64,12 @@ module WPScan
|
||||
# @return [ Hash ] The params for Typhoeus::Request
|
||||
# @note Those params can't be overriden by CLI options
|
||||
def request_params
|
||||
{
|
||||
@request_params ||= {
|
||||
timeout: 600,
|
||||
connecttimeout: 300,
|
||||
accept_encoding: 'gzip, deflate',
|
||||
cache_ttl: 0
|
||||
cache_ttl: 0,
|
||||
headers: { 'User-Agent' => Browser.instance.default_user_agent, 'Referer' => nil }
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ module WPScan
|
||||
end
|
||||
end
|
||||
|
||||
require_relative 'errors/enumeration'
|
||||
require_relative 'errors/http'
|
||||
require_relative 'errors/update'
|
||||
require_relative 'errors/wordpress'
|
||||
|
||||
21
lib/wpscan/errors/enumeration.rb
Normal file
21
lib/wpscan/errors/enumeration.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module WPScan
|
||||
module Error
|
||||
class PluginsThresholdReached < Standard
|
||||
def to_s
|
||||
"The number of plugins detected reached the threshold of #{ParsedCli.plugins_threshold} " \
|
||||
'which might indicate False Positive. It would be recommended to use the --exclude-content-based ' \
|
||||
'option to ignore the bad responses.'
|
||||
end
|
||||
end
|
||||
|
||||
class ThemesThresholdReached < Standard
|
||||
def to_s
|
||||
"The number of themes detected reached the threshold of #{ParsedCli.themes_threshold} " \
|
||||
'which might indicate False Positive. It would be recommended to use the --exclude-content-based ' \
|
||||
'option to ignore the bad responses.'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -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 ]
|
||||
|
||||
@@ -6,13 +6,15 @@ rescue StandardError => e
|
||||
raise "JSON parsing error in #{file} #{e}"
|
||||
end
|
||||
|
||||
# @return [ Symbol ]
|
||||
# Sanitize and classify a slug
|
||||
# @note As a class can not start with a digit or underscore, a D_ is
|
||||
# put as a prefix in such case. Ugly but well :x
|
||||
# Not only used to classify slugs though, but Dynamic Finder names as well
|
||||
# put as a prefix in such case. Ugly but well :x
|
||||
# Not only used to classify slugs though, but Dynamic Finder names as well
|
||||
#
|
||||
# @return [ Symbol ]
|
||||
def classify_slug(slug)
|
||||
classified = slug.to_s.tr('-', '_').camelize.to_s
|
||||
classified = "D_#{classified}" if classified[0] =~ /\d/
|
||||
classified = slug.to_s.gsub(/[^a-z\d\-]/i, '-').gsub(/\-{1,}/, '_').camelize.to_s
|
||||
classified = "D_#{classified}" if /\d/.match?(classified[0])
|
||||
|
||||
classified.to_sym
|
||||
end
|
||||
|
||||
@@ -24,20 +24,20 @@ 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|
|
||||
return true if node['content'] =~ /wordpress/i
|
||||
return true if /wordpress/i.match?(node['content'])
|
||||
end
|
||||
|
||||
return true unless comments_from_page(/wordpress/i, homepage_res).empty?
|
||||
|
||||
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
|
||||
@@ -78,8 +78,19 @@ module WPScan
|
||||
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?
|
||||
/\.wordpress\.com$/i.match?(uri.host) ? 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,23 +97,21 @@ 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
|
||||
# the check would be done each time, which would make enumeration of
|
||||
# long list of items very slow to generate
|
||||
def sub_dir
|
||||
unless @sub_dir
|
||||
escaped_url = Regexp.escape(url).gsub(/https?/i, 'https?')
|
||||
pattern = %r{#{escaped_url}(.+?)\/(?:xmlrpc\.php|wp\-includes\/)}i
|
||||
return @sub_dir unless @sub_dir.nil?
|
||||
|
||||
in_scope_urls(homepage_res) do |url|
|
||||
return @sub_dir = Regexp.last_match[1] if url.match(pattern)
|
||||
end
|
||||
# url_pattern is from CMSScanner::Target
|
||||
pattern = %r{#{url_pattern}(.+?)/(?:xmlrpc\.php|wp\-includes/)}i
|
||||
|
||||
@sub_dir = false
|
||||
in_scope_uris(homepage_res) do |uri|
|
||||
return @sub_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
|
||||
end
|
||||
|
||||
@sub_dir
|
||||
@sub_dir = false
|
||||
end
|
||||
|
||||
# Override of the WebSite#url to consider the custom WP directories
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
|
||||
# Version
|
||||
module WPScan
|
||||
VERSION = '3.5.1'
|
||||
VERSION = '3.6.2'
|
||||
end
|
||||
|
||||
@@ -19,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)
|
||||
|
||||
@@ -70,8 +70,8 @@ describe WPScan::Controller::Enumeration do
|
||||
it 'contains the correct options' do
|
||||
expect(controller.cli_options.map(&:to_sym)).to eql(
|
||||
%i[enumerate exclude_content_based
|
||||
plugins_list plugins_detection plugins_version_all plugins_version_detection
|
||||
themes_list themes_detection themes_version_all themes_version_detection
|
||||
plugins_list plugins_detection plugins_version_all plugins_version_detection plugins_threshold
|
||||
themes_list themes_detection themes_version_all themes_version_detection themes_threshold
|
||||
timthumbs_list timthumbs_detection
|
||||
config_backups_list config_backups_detection
|
||||
db_exports_list db_exports_detection
|
||||
@@ -102,15 +102,6 @@ describe WPScan::Controller::Enumeration do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#before_scan' do
|
||||
it 'creates the Dynamic Finders' do
|
||||
expect(WPScan::DB::DynamicFinders::Plugin).to receive(:create_versions_finders)
|
||||
expect(WPScan::DB::DynamicFinders::Theme).to receive(:create_versions_finders)
|
||||
|
||||
controller.before_scan
|
||||
end
|
||||
end
|
||||
|
||||
describe '#run' do
|
||||
context 'when no :enumerate' do
|
||||
before do
|
||||
|
||||
@@ -52,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}" }
|
||||
@@ -92,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
|
||||
@@ -117,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
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
# If this file is tested alone (rspec path-to-this-file), then there will be an error about
|
||||
# constants not being intilialized. This is due to the Dynamic Finders.
|
||||
|
||||
describe WPScan::Finders::PluginVersion::Base do
|
||||
subject(:plugin_version) { described_class.new(plugin) }
|
||||
let(:plugin) { WPScan::Model::Plugin.new(slug, target) }
|
||||
@@ -15,7 +12,7 @@ describe WPScan::Finders::PluginVersion::Base do
|
||||
expect(plugin_version.finders.map { |f| f.class.to_s.demodulize }).to match_array @expected
|
||||
end
|
||||
|
||||
context 'when no related specific finders' do
|
||||
context 'when no related dynamic finders' do
|
||||
let(:slug) { 'spec' }
|
||||
|
||||
it 'contains the default finders' do
|
||||
@@ -25,19 +22,13 @@ describe WPScan::Finders::PluginVersion::Base do
|
||||
|
||||
# Dynamic Version Finders are not tested here, they are in
|
||||
# spec/lib/finders/dynamic_finder/plugin_versions_spec
|
||||
context 'when specific finders' do
|
||||
let(:specific) do
|
||||
{
|
||||
# None so far
|
||||
}
|
||||
end
|
||||
|
||||
context 'when dynamic finders' do
|
||||
WPScan::DB::DynamicFinders::Plugin.versions_finders_configs.each do |plugin_slug, configs|
|
||||
context "when #{plugin_slug} plugin" do
|
||||
let(:slug) { plugin_slug }
|
||||
|
||||
it 'contains the expected finders (default + specific + the dynamic ones)' do
|
||||
@expected = default_finders + [*specific[plugin_slug]] + configs.keys
|
||||
it 'contains the expected finders (default + the dynamic ones)' do
|
||||
@expected = default_finders + configs.keys
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,20 +13,21 @@ describe WPScan::Finders::ThemeVersion::Base do
|
||||
expect(theme_version.finders.map { |f| f.class.to_s.demodulize }).to eql @expected
|
||||
end
|
||||
|
||||
context 'when no related specific finders' do
|
||||
context 'when no related dynamic finders' do
|
||||
it 'contains the default finders' do
|
||||
@expected = default_finders
|
||||
end
|
||||
end
|
||||
|
||||
context 'when specific finders' do
|
||||
{
|
||||
}.each do |theme_slug, specific_finders|
|
||||
# Dynamic Version Finders are not tested here, they are in
|
||||
# spec/lib/finders/dynamic_finder/theme_versions_spec
|
||||
context 'when dynamic finders' do
|
||||
WPScan::DB::DynamicFinders::Theme.versions_finders_configs.each do |theme_slug, configs|
|
||||
context "when #{theme_slug} theme" do
|
||||
let(:slug) { theme_slug }
|
||||
|
||||
it 'contains the expected finders' do
|
||||
@expected = default_finders + specific_finders
|
||||
it 'contains the expected finders (default + the dynamic ones)' do
|
||||
@expected = default_finders + configs.keys
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -60,6 +60,26 @@ describe WPScan::Model::Plugin do
|
||||
end
|
||||
end
|
||||
|
||||
describe 'potential_readme_filenames' do
|
||||
context 'when not set in the DF file' do
|
||||
its(:potential_readme_filenames) { should eql described_class::READMES }
|
||||
end
|
||||
|
||||
context 'when set in the DF file' do
|
||||
context 'as a string' do
|
||||
let(:slug) { 'photoblocks-grid-gallery' }
|
||||
|
||||
its(:potential_readme_filenames) { should eql %w[README.txt] }
|
||||
end
|
||||
|
||||
context 'as an array' do
|
||||
let(:slug) { 'customerlabs-actionrecorder' }
|
||||
|
||||
its(:potential_readme_filenames) { should eql %w[Readme.txt Readme.md] }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#latest_version, #last_updated, #popular' do
|
||||
context 'when none' do
|
||||
let(:slug) { 'vulnerable-not-popular' }
|
||||
|
||||
7567
spec/fixtures/db/dynamic_finders.yml
vendored
7567
spec/fixtures/db/dynamic_finders.yml
vendored
File diff suppressed because it is too large
Load Diff
3277
spec/fixtures/dynamic_finders/expected.yml
vendored
3277
spec/fixtures/dynamic_finders/expected.yml
vendored
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,63 @@
|
||||
# Copyright (C) 2019 Jörn Lund
|
||||
# This file is distributed under the same license as the ACF Dropzone plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ACF Dropzone 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/acf-dropzone\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-07-04T10:29:43+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: acf-dropzone\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "ACF Dropzone"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "https://github.com/mcguffin/acf-dropzone"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Drag and drop file upload for ACF-Fields."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Jörn Lund"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://github.com/mcguffin"
|
||||
msgstr ""
|
||||
|
||||
#: include/AcfDropzone/Compat/ACF.php:47
|
||||
#: tmp/svn/tags/1.0.0/include/AcfDropzone/Compat/ACF.php:47
|
||||
#: tmp/svn/trunk/include/AcfDropzone/Compat/ACF.php:47
|
||||
#: tmp/git/include/AcfDropzone/Compat/ACF.php:47
|
||||
msgid "Enable Dropzone"
|
||||
msgstr ""
|
||||
|
||||
#: include/AcfDropzone/Compat/ACF.php:103
|
||||
#: tmp/svn/tags/1.0.0/include/AcfDropzone/Compat/ACF.php:103
|
||||
#: tmp/svn/trunk/include/AcfDropzone/Compat/ACF.php:103
|
||||
#: tmp/git/include/AcfDropzone/Compat/ACF.php:103
|
||||
msgid "Dismiss this notice."
|
||||
msgstr ""
|
||||
|
||||
#: include/AcfDropzone/Compat/ACF.php:107
|
||||
#: tmp/svn/tags/1.0.0/include/AcfDropzone/Compat/ACF.php:107
|
||||
#: tmp/svn/trunk/include/AcfDropzone/Compat/ACF.php:107
|
||||
#: tmp/git/include/AcfDropzone/Compat/ACF.php:107
|
||||
msgid "Drop files here"
|
||||
msgstr ""
|
||||
|
||||
#: include/AcfDropzone/Compat/ACF.php:108
|
||||
#: tmp/svn/tags/1.0.0/include/AcfDropzone/Compat/ACF.php:108
|
||||
#: tmp/svn/trunk/include/AcfDropzone/Compat/ACF.php:108
|
||||
#: tmp/git/include/AcfDropzone/Compat/ACF.php:108
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,225 @@
|
||||
# Copyright (C) 2019 Jörn Lund
|
||||
# This file is distributed under the same license as the ACF OpenStreetMap Field plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: ACF OpenStreetMap Field 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/acf-field-openstreetmap\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-07-05T08:37:19+00:00\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"X-Generator: WP-CLI 2.1.0\n"
|
||||
"X-Domain: acf-openstreetmap-field\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "ACF OpenStreetMap Field"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "https://wordpress.org/plugins/acf-openstreetmap-field"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "A configurable OpenStreetMap Field for ACF."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Jörn Lund"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin
|
||||
msgid "https://github.com/mcguffin"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
msgid "OpenStreetMap Settings"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:51
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:51
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:51
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:37
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:51
|
||||
msgid "OpenStreetMap"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:51
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:51
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:51
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:51
|
||||
msgid "acf-openstreetmap-field Settings"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:57
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:57
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:57
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:57
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:86
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:86
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:86
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:86
|
||||
msgid "Access Tokens"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:139
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:139
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:139
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Settings/SettingsOpenStreetMap.php:139
|
||||
msgid "Enter Access Tokens for various Map Tile providers."
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:125
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:125
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:125
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:125
|
||||
msgid "Raw Data"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:126
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:126
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:126
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:126
|
||||
msgid "Leaflet JS"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:127
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:127
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:127
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:127
|
||||
msgid "iFrame (OpenStreetMap.org)"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:146
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:146
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:146
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:146
|
||||
msgid "Map Appearance"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:147
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:147
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:147
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:147
|
||||
msgid "Set zoom, center and select layers being displayed."
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:167
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:167
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:167
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:167
|
||||
msgid "Map Position"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:168
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:179
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:168
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:179
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:168
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:179
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:168
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:179
|
||||
msgid "Center the initial map"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:171
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:171
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:171
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:171
|
||||
msgid "lat"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:178
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:178
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:178
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:178
|
||||
msgid "Center"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:182
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:182
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:182
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:182
|
||||
msgid "lng"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:190
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:190
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:190
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:190
|
||||
msgid "Zoom"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:191
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:191
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:191
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:191
|
||||
msgid "Set the initial zoom level"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:196
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:196
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:196
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:196
|
||||
msgid "zoom"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:203
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:203
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:203
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:203
|
||||
msgid "Allow layer selection"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:213
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:213
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:213
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:213
|
||||
msgid "Customise the map height"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:222
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:222
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:222
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:222
|
||||
msgid "Max. number of Markers"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:223
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:223
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:223
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:223
|
||||
msgid "Leave empty for infinite markers"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:380
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:380
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:380
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:380
|
||||
msgid "Locate Marker"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:407
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:407
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:407
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:407
|
||||
msgid "Remove Marker"
|
||||
msgstr ""
|
||||
|
||||
#: include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:734
|
||||
#: tmp/svn/tags/1.0.0/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:734
|
||||
#: tmp/svn/trunk/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:734
|
||||
#: tmp/git/include/ACFFieldOpenstreetmap/Field/OpenStreetMap.php:734
|
||||
msgid "View Larger Map"
|
||||
msgstr ""
|
||||
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.
|
||||
@@ -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,238 @@
|
||||
# Copyright (C) 2019 Palbo Capello
|
||||
# This file is distributed under the GPL-2.0+.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Advanced Custom Types for Divi 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/advanced-custom-types-divi\n"
|
||||
"POT-Creation-Date: 2019-06-29 00:00:14+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"
|
||||
|
||||
#: advanced-custom-types-divi.php:32
|
||||
msgid ""
|
||||
"Advanced Custom Types for Divi was deactivated because <span "
|
||||
"style='font-weight: bold;'>ACT for Divi PRO</span> is active"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-act-divi.php:266
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-act-divi.php:267
|
||||
msgid "License"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:15
|
||||
msgid "ACT Post Type Grid"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:81
|
||||
msgid "View more button"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:116
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:124
|
||||
msgid "Body"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:127
|
||||
msgid "Button"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:153
|
||||
msgid "Content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:157
|
||||
msgid "Query"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:165
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:339
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:169
|
||||
msgid "Card"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:182
|
||||
msgid "Show title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:185
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:201
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:233
|
||||
msgid "Toggle whether mushroom will be added to the pizza."
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:189
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:205
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:237
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:396
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:190
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:206
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:238
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:397
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:198
|
||||
msgid "Show thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:213
|
||||
msgid "Thumbnail size"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:218
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:250
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:269
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:343
|
||||
msgid "Content entered here will appear inside the module."
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:230
|
||||
msgid "Show content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:245
|
||||
msgid "Content length"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:265
|
||||
msgid "Post type"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:276
|
||||
msgid "Posts limit"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:279
|
||||
msgid "Posts limit."
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:286
|
||||
msgid "Posts offset"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:289
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:301
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:313
|
||||
msgid "Posts offset."
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:296
|
||||
msgid "Order"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:308
|
||||
msgid "Order by"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:323
|
||||
msgid "View more text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:326
|
||||
msgid "Post button."
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:352
|
||||
msgid "Heading Level"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:356
|
||||
msgid "H1"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:357
|
||||
msgid "H2"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:358
|
||||
msgid "H3"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:359
|
||||
msgid "H4"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:360
|
||||
msgid "H5"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:361
|
||||
msgid "H6"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:371
|
||||
msgid "Columns"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:375
|
||||
msgid "1 Column"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:376
|
||||
msgid "2 Columns"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:377
|
||||
msgid "3 Columns"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:378
|
||||
msgid "4 Columns"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:389
|
||||
msgid "Card inner padding"
|
||||
msgstr ""
|
||||
|
||||
#: includes/modules/ACTPostTypeGrid/ACTPostTypeGrid.php:392
|
||||
msgid "Card inner padding."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "Advanced Custom Types for Divi"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://www.advancedcustomtypes.io"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid "Advanced custom types for Divi theme and Divi builder."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "Palbo Capello"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "http://capellopablo.com/"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,231 @@
|
||||
# Copyright (C) 2019 Idenovasi
|
||||
# This file is distributed under the same license as the Advanced Random Posts Widget package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Advanced Random Posts Widget 2.2.0\n"
|
||||
"Report-Msgid-Bugs-To: https://idenovasi.com/contact/\n"
|
||||
"POT-Creation-Date: 2019-03-07 16:09:37+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: Idenovasi\n"
|
||||
"Language-Team: Idenovasi\n"
|
||||
"X-Generator: grunt-wp-i18n 1.0.3\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Poedit-Language: English\n"
|
||||
"X-Poedit-Country: UNITED STATES\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Poedit-KeywordsList: "
|
||||
"__;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c;_nc:4c,1,2;_"
|
||||
"x:1,2c;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
|
||||
"X-Textdomain-Support: yes\n"
|
||||
|
||||
#: includes/form.php:48
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:55
|
||||
msgid "Title URL"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:62
|
||||
msgid "CSS Class"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:69
|
||||
msgid "HTML or text before the random posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:76
|
||||
msgid "HTML or text after the random posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:88
|
||||
msgid "Ignore sticky posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:94
|
||||
msgid "Number of posts to show"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:97
|
||||
msgid "to show all posts."
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:102
|
||||
msgid "Offset"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:105
|
||||
msgid "The number of posts to skip"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:110
|
||||
msgid "Post type"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:121
|
||||
msgid "Post status"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:136
|
||||
msgid "Limit to Category"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:152
|
||||
msgid "Limit to Tag"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:168
|
||||
msgid "Limit to Taxonomy"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:171
|
||||
msgid "Ex: category=1,2,4&post_tag=6,12"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:172
|
||||
msgid "Available: "
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:184
|
||||
msgid "Display thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:190
|
||||
msgid "Thumbnail Size "
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:197
|
||||
msgid "Please read %1$sFAQ%2$s for more information."
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:203
|
||||
msgid "Use custom thumbnail sizes"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:209
|
||||
msgid "Width & Height"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:217
|
||||
msgid "Thumbnail Alignment"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:220
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:221
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:222
|
||||
msgid "Center"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:227
|
||||
msgid ""
|
||||
"Your theme does not support Post Thumbnail feature, please go to "
|
||||
"%1$shttp://codex.wordpress.org/Post_Thumbnails%2$s to read more info and "
|
||||
"how to activate it in your theme."
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:237
|
||||
msgid "Display full post"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:244
|
||||
msgid "Display excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:250
|
||||
msgid "Excerpt Length"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:258
|
||||
msgid "Display Date"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:265
|
||||
msgid "Display Modified Date"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:272
|
||||
msgid "Use Relative Date. eg: 5 days ago"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:282
|
||||
msgid "Custom CSS"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:285
|
||||
msgid "You can find the plugin css selector on %1$sFAQ page%2$s."
|
||||
msgstr ""
|
||||
|
||||
#: includes/functions.php:14 includes/widget.php:27
|
||||
msgid "Random Posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/posts.php:101 includes/posts.php:107
|
||||
msgid "%s ago"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widget.php:17
|
||||
msgid ""
|
||||
"An advanced widget that gives you total control over the output of the "
|
||||
"random posts."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "Advanced Random Posts Widget"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://github.com/idenovasi/advanced-random-posts-widget"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid "Easily to display advanced random posts via shortcode or widget."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "Idenovasi"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://idenovasi.com/"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:34
|
||||
msgctxt "widget tab name"
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:35
|
||||
msgctxt "widget tab name"
|
||||
msgid "Posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:36
|
||||
msgctxt "widget tab name"
|
||||
msgid "Taxonomy"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:37
|
||||
msgctxt "widget tab name"
|
||||
msgid "Thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:38
|
||||
msgctxt "widget tab name"
|
||||
msgid "Extras"
|
||||
msgstr ""
|
||||
|
||||
#: includes/form.php:39
|
||||
msgctxt "widget tab name"
|
||||
msgid "Custom CSS"
|
||||
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
|
||||
9
spec/fixtures/dynamic_finders/plugin_version/astra-widgets/change_log/changelog.txt
vendored
Normal file
9
spec/fixtures/dynamic_finders/plugin_version/astra-widgets/change_log/changelog.txt
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
v1.1.1
|
||||
- Fix: PHP Notice for address fixed.
|
||||
|
||||
v1.1.0
|
||||
- New: Add support for full FontAwesome library in widgets.
|
||||
- Fix: JS error in the WordPress admin panel causing errors in
|
||||
|
||||
v1.0.0
|
||||
- Initial release
|
||||
File diff suppressed because it is too large
Load Diff
258
spec/fixtures/dynamic_finders/plugin_version/avaibook/translation_file/languages/avaibook-pt_PT.po
vendored
Normal file
258
spec/fixtures/dynamic_finders/plugin_version/avaibook/translation_file/languages/avaibook-pt_PT.po
vendored
Normal file
@@ -0,0 +1,258 @@
|
||||
# Copyright (C) 2019 Carlos G. Cerro cgcerro@gmail.com
|
||||
# This file is distributed under the same license as the AvaiBook plugin.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: AvaiBook 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/avaibook\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"POT-Creation-Date: 2019-06-25T12:50:01+02:00\n"
|
||||
"PO-Revision-Date: 2019-06-28 09:34+0200\n"
|
||||
"X-Generator: Poedit 2.2.3\n"
|
||||
"X-Domain: avaibook\n"
|
||||
"Last-Translator: \n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Language: pt_PT\n"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
msgid "AvaiBook"
|
||||
msgstr "AvaiBook"
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
msgid "http://wordpress.org/plugins/avaibook/"
|
||||
msgstr "http://wordpress.org/plugins/avaibook/"
|
||||
|
||||
#. Description of the plugin
|
||||
msgid "Show Avaibook booking form in your wordpress"
|
||||
msgstr "Mostre o formulário de reserva Avaibook no seu Wordpress"
|
||||
|
||||
#. Author of the plugin
|
||||
msgid "Carlos G. Cerro cgcerro@gmail.com"
|
||||
msgstr ""
|
||||
|
||||
#: avaibook.php:239
|
||||
msgid "Show Avaibook book form 1"
|
||||
msgstr "Mostrar formulário AvaiBook 1"
|
||||
|
||||
#: avaibook.php:260
|
||||
msgid "Show Avaibook book form 2"
|
||||
msgstr "Mostrar formulário AvaiBook 2"
|
||||
|
||||
#: avaibook.php:282
|
||||
msgid "Show Avaibook book form 3"
|
||||
msgstr "Mostrar formulário AvaiBook 3"
|
||||
|
||||
#: includes/admin.php:3
|
||||
msgid "Form 1"
|
||||
msgstr "Formulário 1"
|
||||
|
||||
#: includes/admin.php:3
|
||||
msgid "Form 2"
|
||||
msgstr "Formulário 2"
|
||||
|
||||
#: includes/admin.php:3
|
||||
msgid "Form 3"
|
||||
msgstr "Formulário 3"
|
||||
|
||||
#: includes/admin.php:15
|
||||
msgid ""
|
||||
"You can define three types of form. Each one can have a different "
|
||||
"configuration or presentation."
|
||||
msgstr ""
|
||||
"É possível definir três tipos diferentes de formulários. Cada um com uma "
|
||||
"configuração ou apresentação diferente."
|
||||
|
||||
#: includes/admin.php:33
|
||||
msgid "Rental Id is mandatory with \"single\" rental type."
|
||||
msgstr ""
|
||||
"A identificação do alojamento é obrigatória no tipo de motor \"simples\"."
|
||||
|
||||
#: includes/admin.php:37
|
||||
msgid "Owner Id is mandatory with \"multiple\" rental type."
|
||||
msgstr ""
|
||||
"A identificação do alojamento é obrigatória no tipo de motor \"múltiplo\"."
|
||||
|
||||
#: includes/admin.php:41
|
||||
msgid "Configuration saved."
|
||||
msgstr "Configuração gravada."
|
||||
|
||||
#: includes/admin.php:47
|
||||
msgid "Form"
|
||||
msgstr "Formulário"
|
||||
|
||||
#: includes/admin.php:54
|
||||
msgid "AvaiBook configuration"
|
||||
msgstr "Configuração AvaiBook"
|
||||
|
||||
#: includes/admin.php:56
|
||||
msgid ""
|
||||
"Choose the type of Booking Engine you wish to link, and fill in the "
|
||||
"requested parameters (those marked with * are mandatory and you will find "
|
||||
"their value in your private area of AvaiBook)"
|
||||
msgstr ""
|
||||
"Escolha o tipo de motor de reservas que pretende utilizar. Preencha os "
|
||||
"campos obrigatórios (aqueles marcados com * são obrigatórios e encontrará o "
|
||||
"valor em sua área privada AvaiBook)"
|
||||
|
||||
#: includes/admin.php:61
|
||||
msgid "Booking Engine type"
|
||||
msgstr "Tipo de motor AvaiBook"
|
||||
|
||||
#: includes/admin.php:64
|
||||
msgid "Single"
|
||||
msgstr "Simples"
|
||||
|
||||
#: includes/admin.php:65
|
||||
msgid "Multiple"
|
||||
msgstr "Múltiplo"
|
||||
|
||||
#: includes/admin.php:67
|
||||
msgid ""
|
||||
"Choose the type of booking engine you want to use. To a single accommodation "
|
||||
"or to all your accommodations"
|
||||
msgstr ""
|
||||
"Escolha o tipo de motor de reservas que pretende utilizar. Para um único "
|
||||
"alojamento ou para todos os alojamentos"
|
||||
|
||||
#: includes/admin.php:73
|
||||
msgid "Rental Id"
|
||||
msgstr "ID de Alojamento"
|
||||
|
||||
#: includes/admin.php:75
|
||||
msgid "This is the AvaiBook accommodation Id"
|
||||
msgstr "Este é o identificador do alojamento"
|
||||
|
||||
#: includes/admin.php:79
|
||||
msgid "Reference"
|
||||
msgstr "Referência"
|
||||
|
||||
#: includes/admin.php:81 includes/admin.php:99
|
||||
msgid ""
|
||||
"(optional) the generated reserves will have this reference so that you can "
|
||||
"distinguish them"
|
||||
msgstr ""
|
||||
"(opcional) as reservas geradas terão esta referência anotada para que possa "
|
||||
"distingui-las"
|
||||
|
||||
#: includes/admin.php:92
|
||||
msgid "This is your customer id in AvaiBook"
|
||||
msgstr "Este é o seu ID de cliente no AvaiBook"
|
||||
|
||||
#: includes/admin.php:105
|
||||
msgid "Show rental units"
|
||||
msgstr "Mostrar unidades habitacionais"
|
||||
|
||||
#: includes/admin.php:106
|
||||
msgid "Show zones"
|
||||
msgstr "Mostrar zonas"
|
||||
|
||||
#: includes/admin.php:107
|
||||
msgid "Show people"
|
||||
msgstr "Mostrar pessoas"
|
||||
|
||||
#: includes/admin.php:108
|
||||
msgid "Behavior in the booking engine"
|
||||
msgstr "Comportamento no motor de reservas"
|
||||
|
||||
#: includes/admin.php:116
|
||||
msgid "Display options"
|
||||
msgstr "Opções de apresentação"
|
||||
|
||||
#: includes/admin.php:118
|
||||
msgid ""
|
||||
"Choose how you want your widget to be and what colors you want it to have. "
|
||||
"If you do not mark any of the options below your widget will only be a "
|
||||
"button."
|
||||
msgstr ""
|
||||
"Escolha como quer que seja o seu widget e que cores quer que ele tenha. Se "
|
||||
"não marcar nenhuma das opções, o widget será apenas um botão."
|
||||
|
||||
#: includes/admin.php:121
|
||||
msgid "title"
|
||||
msgstr "título"
|
||||
|
||||
#: includes/admin.php:122
|
||||
msgid "This text title will be showed in your form"
|
||||
msgstr "Este título será exibido no seu formulário"
|
||||
|
||||
#: includes/admin.php:127
|
||||
msgid "Request dates"
|
||||
msgstr "Pedir datas"
|
||||
|
||||
#: includes/admin.php:128
|
||||
msgid "show dates request's fields"
|
||||
msgstr "exibir campos de datas"
|
||||
|
||||
#: includes/admin.php:135
|
||||
msgid "Request guest number"
|
||||
msgstr "Pedir número de clientes"
|
||||
|
||||
#: includes/admin.php:136
|
||||
msgid "show guest's numbers field"
|
||||
msgstr "mostrar no campo o número de pessoas"
|
||||
|
||||
#: includes/admin.php:140
|
||||
msgid "Colour settings"
|
||||
msgstr "Configuração de cores"
|
||||
|
||||
#: includes/admin.php:141
|
||||
msgid "Set empty for keep your default style."
|
||||
msgstr "Mantenha a caixa vazia para deixar o seu estilo por defeito."
|
||||
|
||||
#: includes/admin.php:144
|
||||
msgid "Background colour"
|
||||
msgstr "Cor de fundo"
|
||||
|
||||
#: includes/admin.php:153
|
||||
msgid "Main colour"
|
||||
msgstr "Cor principal"
|
||||
|
||||
#: includes/admin.php:162
|
||||
msgid "Text colour"
|
||||
msgstr "Cor do texto"
|
||||
|
||||
#: includes/admin.php:176
|
||||
msgid "Save changes"
|
||||
msgstr "Guardar modificações"
|
||||
|
||||
#: includes/admin.php:181
|
||||
msgid "Options"
|
||||
msgstr "Opções"
|
||||
|
||||
#: includes/admin.php:183
|
||||
msgid "You can use this shortcode"
|
||||
msgstr "Pode usar o seguinte shortcode"
|
||||
|
||||
#: includes/admin.php:185
|
||||
msgid "Only copy this code, and put it where you want in your post or pages."
|
||||
msgstr "Basta copiar o código e colá-lo onde quiser nos seus posts ou páginas."
|
||||
|
||||
#: includes/admin.php:187
|
||||
msgid "Or you can use our widget"
|
||||
msgstr "Ou pode usar o nosso widget"
|
||||
|
||||
#: includes/admin.php:189
|
||||
msgid ""
|
||||
"Go to <a href=\"%s\">widgets section</a> and drag our widget \"avaibook%s\" "
|
||||
"where you want."
|
||||
msgstr ""
|
||||
"Vá até a seção <a href=\"%s\">widget </a> e arraste o nosso widget \"avaibook"
|
||||
"%s\" onde quiser."
|
||||
|
||||
#: includes/front.php:11
|
||||
msgid "Arrive date"
|
||||
msgstr "Data de chegada"
|
||||
|
||||
#: includes/front.php:16
|
||||
msgid "Departure date"
|
||||
msgstr "Data saída"
|
||||
|
||||
#: includes/front.php:24 includes/front.php:25
|
||||
msgid "Guest Num."
|
||||
msgstr "Número de pessoas."
|
||||
|
||||
#: includes/front.php:29
|
||||
msgid "search"
|
||||
msgstr "procurar"
|
||||
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,947 @@
|
||||
# Copyright (C) 2019 blossomthemes
|
||||
# This file is distributed under the GPL-2.0+.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: BlossomThemes Toolkit 2.1.2\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/blossomthemes-toolkit\n"
|
||||
"POT-Creation-Date: 2019-05-13 06:01:18+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-i18n1.0.2\n"
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:104
|
||||
#: includes/class-blossomthemes-toolkit-functions.php:124
|
||||
msgid "Upload"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:105
|
||||
#: includes/class-blossomthemes-toolkit-functions.php:126
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:106
|
||||
#: includes/class-blossomthemes-toolkit-functions.php:147
|
||||
msgid "Please upload valid image file."
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:109
|
||||
msgid "Are you sure?"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:110
|
||||
msgid "Select Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:115
|
||||
msgid "Are you sure you want to delete this Social Media?"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:164
|
||||
msgid "Portfolio Template"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:202
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:231
|
||||
msgid "Image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:206
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:242
|
||||
msgid "Add Image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:207
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:243
|
||||
#: includes/class-blossomthemes-toolkit-functions.php:135
|
||||
msgid "Remove Image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:337
|
||||
#: includes/widgets/widget-advertisement.php:127
|
||||
#: includes/widgets/widget-client-logo.php:160
|
||||
#: includes/widgets/widget-cta.php:251
|
||||
#: includes/widgets/widget-icon-text.php:124
|
||||
#: includes/widgets/widget-image-text.php:37
|
||||
#: includes/widgets/widget-image-text.php:160
|
||||
#: includes/widgets/widget-testimonial.php:120
|
||||
msgid "Upload Image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:343
|
||||
#: includes/widgets/widget-advertisement.php:135
|
||||
#: includes/widgets/widget-client-logo.php:163
|
||||
#: includes/widgets/widget-image-text.php:44
|
||||
#: includes/widgets/widget-image-text.php:167
|
||||
msgid "Featured Link"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:357
|
||||
#: includes/widgets/widget-faqs.php:105
|
||||
msgid "Question"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:359
|
||||
#: includes/widgets/widget-faqs.php:107
|
||||
msgid "Answer"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:410
|
||||
msgid "Add New"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:417
|
||||
msgid "Not found"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:418
|
||||
msgid "Not found in Trash"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:419
|
||||
msgid "Featured Image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:420
|
||||
msgid "Set featured image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:421
|
||||
msgid "Remove featured image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:422
|
||||
msgid "Use as featured image"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:467
|
||||
msgid "Search Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:468
|
||||
msgid "All Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:469
|
||||
msgid "Parent Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:470
|
||||
msgid "Parent Categories:"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:471
|
||||
msgid "Edit Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:472
|
||||
msgid "Update Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:473
|
||||
msgid "Add New Categories"
|
||||
msgstr ""
|
||||
|
||||
#: admin/class-blossomthemes-toolkit-admin.php:474
|
||||
msgid "New Categories Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-blossomthemes-toolkit-functions.php:121
|
||||
msgid "No file chosen"
|
||||
msgstr ""
|
||||
|
||||
#: includes/class-blossomthemes-toolkit-functions.php:129
|
||||
msgid "Upgrade your version of WordPress for full media support."
|
||||
msgstr ""
|
||||
|
||||
#: includes/templates/blossom-portfolio.php:22
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
|
||||
#: includes/templates/single-blossom-portfolio.php:40
|
||||
msgid "Related Projects"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:25
|
||||
msgid "Blossom: Advertisement Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:26
|
||||
msgid "An Advertisement Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:115
|
||||
#: includes/widgets/widget-author-bio.php:347
|
||||
#: includes/widgets/widget-client-logo.php:138
|
||||
#: includes/widgets/widget-contact.php:240 includes/widgets/widget-cta.php:187
|
||||
#: includes/widgets/widget-facebook-page.php:107
|
||||
#: includes/widgets/widget-icon-text.php:115
|
||||
#: includes/widgets/widget-image-text.php:140
|
||||
#: includes/widgets/widget-popular-post.php:213
|
||||
#: includes/widgets/widget-recent-post.php:144
|
||||
#: includes/widgets/widget-socialmedia.php:219
|
||||
#: includes/widgets/widget-stat-counter.php:132
|
||||
#: includes/widgets/widget-twitter-feeds.php:139
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:120
|
||||
msgid "Display Advertisement from:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:122
|
||||
#: includes/widgets/widget-advertisement.php:140
|
||||
msgid "Ad Code"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:124
|
||||
#: includes/widgets/widget-author-bio.php:361
|
||||
#: includes/widgets/widget-author-bio.php:382
|
||||
msgid "Uploaded Photo"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-advertisement.php:131
|
||||
#: includes/widgets/widget-client-logo.php:151
|
||||
#: includes/widgets/widget-featured-page.php:187
|
||||
#: includes/widgets/widget-icon-text.php:147
|
||||
#: includes/widgets/widget-image-text.php:145
|
||||
#: includes/widgets/widget-team-member.php:199
|
||||
msgid "Open in Same Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:33
|
||||
msgid "Blossom: Author Bio"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:34
|
||||
msgid "An Author Bio Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:108
|
||||
#: includes/widgets/widget-author-bio.php:437
|
||||
#: includes/widgets/widget-contact.php:60
|
||||
#: includes/widgets/widget-contact.php:299
|
||||
#: includes/widgets/widget-socialmedia.php:60
|
||||
#: includes/widgets/widget-socialmedia.php:256
|
||||
msgid "Social Icon"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:110
|
||||
#: includes/widgets/widget-contact.php:62
|
||||
#: includes/widgets/widget-socialmedia.php:62
|
||||
msgid "Search Social Icons"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:111
|
||||
#: includes/widgets/widget-author-bio.php:440
|
||||
#: includes/widgets/widget-contact.php:63
|
||||
#: includes/widgets/widget-contact.php:302
|
||||
#: includes/widgets/widget-socialmedia.php:63
|
||||
#: includes/widgets/widget-socialmedia.php:259
|
||||
msgid "Link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:352
|
||||
msgid "Author Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:357
|
||||
msgid "Display photo from:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:359
|
||||
msgid "Gravatar"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:364
|
||||
msgid "Upload Author Image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:367
|
||||
msgid "Author Email"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:370
|
||||
msgid ""
|
||||
"You can show your %1$s image instead of manually uploading your photo. Just "
|
||||
"add your gravatar registered email address here."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:373
|
||||
#: includes/widgets/widget-contact.php:245 includes/widgets/widget-cta.php:192
|
||||
#: includes/widgets/widget-icon-text.php:120
|
||||
#: includes/widgets/widget-team-member.php:193
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:378
|
||||
msgid "Display Signature from:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:380
|
||||
msgid "Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:385
|
||||
msgid "Upload Signature Image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:389
|
||||
msgid "Signature Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:393
|
||||
msgid "Button Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:398
|
||||
msgid "Button Link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:405
|
||||
#: includes/widgets/widget-popular-post.php:257
|
||||
#: includes/widgets/widget-posts-category-slider.php:250
|
||||
#: includes/widgets/widget-recent-post.php:179
|
||||
#: includes/widgets/widget-socialmedia.php:224
|
||||
msgid "Open in New Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:454
|
||||
msgid "Add Social Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-author-bio.php:455
|
||||
#: includes/widgets/widget-contact.php:318
|
||||
#: includes/widgets/widget-socialmedia.php:275
|
||||
msgid ""
|
||||
"Click on the above button to add social media icons. You can also change "
|
||||
"the order of the social icons."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-client-logo.php:25
|
||||
msgid "Blossom: Client Logo Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-client-logo.php:26
|
||||
msgid "A Client Logo Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-client-logo.php:145
|
||||
msgid "Display logo in black and white"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-client-logo.php:175
|
||||
msgid "Add Another Logo"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:44
|
||||
msgid "Blossom: Contact Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:45
|
||||
msgid "A Contact Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:250
|
||||
msgid "Telephone"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:255
|
||||
msgid "Email"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:260
|
||||
msgid "Address"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:267
|
||||
msgid "Open Social Links in New Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-contact.php:317
|
||||
#: includes/widgets/widget-socialmedia.php:274
|
||||
msgid "Add Social Icon"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:26
|
||||
msgid "Blossom: Call To Action"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:27
|
||||
msgid "A Call To Action Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:34
|
||||
#: includes/widgets/widget-featured-page.php:33
|
||||
msgid "Right"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:35
|
||||
#: includes/widgets/widget-featured-page.php:35
|
||||
msgid "Centered"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:197
|
||||
msgid "Number of Call-to-Action Buttons:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:211
|
||||
msgid "Button 1 Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:215
|
||||
msgid "Button 1 Link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:222
|
||||
msgid "Button 2 Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:226
|
||||
msgid "Button 2 Link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:232
|
||||
msgid "Button Alignment:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:243
|
||||
#: includes/widgets/widget-custom-categories.php:105
|
||||
msgid "Open in new Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-cta.php:246
|
||||
msgid "Background Color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-custom-categories.php:16
|
||||
msgid "Blossom: Custom Categories"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-custom-categories.php:19
|
||||
msgid "Widget to display categories with Image and Posts Count"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-custom-categories.php:70
|
||||
msgid " Post(s)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-custom-categories.php:88
|
||||
#: includes/widgets/widget-posts-category-slider.php:179
|
||||
msgid "New title"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-custom-categories.php:100
|
||||
#: includes/widgets/widget-pinterest.php:69
|
||||
#: includes/widgets/widget-posts-category-slider.php:214
|
||||
#: includes/widgets/widget-snapchat.php:101
|
||||
msgid "Title:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-custom-categories.php:153
|
||||
msgid ""
|
||||
"To set thumbnail for categories, go to %1$sPosts > Categories%2$s and "
|
||||
"%3$sEdit%4$s the categories."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:25
|
||||
msgid "Blossom: Facebook Page"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:26
|
||||
msgid "A widget that shows Facebook Page Box"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:112
|
||||
msgid "Facebook Page URL"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:117
|
||||
msgid "Height"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:123
|
||||
msgid "Show Friend's Faces"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:128
|
||||
msgid "Use Small Header"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:133
|
||||
msgid "Hide Cover Photo"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:138
|
||||
msgid "Show Timeline Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:143
|
||||
msgid "Show Event Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-facebook-page.php:148
|
||||
msgid "Show Message Tab"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-faqs.php:25
|
||||
msgid "Blossom: FAQs"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-faqs.php:26
|
||||
msgid "A Widget for FAQs."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-faqs.php:52
|
||||
msgid "Expand/Close"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-faqs.php:91
|
||||
msgid "Enable FAQs Toggle"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-faqs.php:118
|
||||
msgid "Add FAQs"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:25
|
||||
msgid "Blossom: Featured Page Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:26
|
||||
msgid "A Featured Page Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:34
|
||||
msgid "Left"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:48
|
||||
#: includes/widgets/widget-featured-page.php:131
|
||||
#: includes/widgets/widget-featured-page.php:228
|
||||
msgid "Read More"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:119
|
||||
msgid "--Choose--"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:142
|
||||
msgid "Page:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:154
|
||||
msgid "Show Page Full Content"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:161
|
||||
msgid "Show Featured Image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:166
|
||||
msgid "Image Alignment:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:181
|
||||
msgid "Show Read More"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-featured-page.php:191
|
||||
msgid "Read More Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:25
|
||||
msgid "Blossom: Icon Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:26
|
||||
msgid "An Icon Text Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:126
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:129
|
||||
#: includes/widgets/widget-stat-counter.php:147
|
||||
msgid "Icons"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:141
|
||||
msgid "search icons here..."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:151
|
||||
msgid "Read More Label"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-icon-text.php:156
|
||||
msgid "Read More Link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-image-text.php:26
|
||||
msgid "Blossom: Image Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-image-text.php:27
|
||||
msgid "An Image Text Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-image-text.php:40
|
||||
#: includes/widgets/widget-image-text.php:163
|
||||
msgid "Link Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-image-text.php:179
|
||||
msgid "Add Image Text"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-pinterest.php:15
|
||||
msgid "Add your latest pins form Pinterest."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-pinterest.php:16
|
||||
msgid "Blossom: Pinterest"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-pinterest.php:73
|
||||
msgid "Pinterest URL:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-pinterest.php:77
|
||||
msgid "Height: (px)"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:28
|
||||
msgid "Blossom: Popular Post"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:29
|
||||
msgid "A Popular Post Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:65
|
||||
msgid "0 View"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:67
|
||||
msgid " View"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:69
|
||||
msgid " Views"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:83
|
||||
#: includes/widgets/widget-popular-post.php:201
|
||||
msgid "Popular Posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:146
|
||||
#: includes/widgets/widget-posts-category-slider.php:96
|
||||
#: includes/widgets/widget-recent-post.php:89
|
||||
msgid "View all posts in %s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:185
|
||||
#: includes/widgets/widget-recent-post.php:119
|
||||
msgid "Style One"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:186
|
||||
#: includes/widgets/widget-recent-post.php:120
|
||||
msgid "Style Two"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:187
|
||||
#: includes/widgets/widget-recent-post.php:121
|
||||
msgid "Style Three"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:218
|
||||
#: includes/widgets/widget-recent-post.php:149
|
||||
msgid "Number of Posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:223
|
||||
msgid "Popular based on:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:225
|
||||
msgid "Post Views"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:226
|
||||
msgid "Comment Count"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:231
|
||||
#: includes/widgets/widget-recent-post.php:164
|
||||
msgid "Layout:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:247
|
||||
#: includes/widgets/widget-recent-post.php:155
|
||||
msgid "Show Post Thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:252
|
||||
#: includes/widgets/widget-recent-post.php:160
|
||||
msgid "Show Post Date"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-popular-post.php:276
|
||||
#: includes/widgets/widget-recent-post.php:39
|
||||
#: includes/widgets/widget-recent-post.php:135
|
||||
#: includes/widgets/widget-recent-post.php:198
|
||||
msgid "Recent Posts"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:18
|
||||
msgid "Blossom: Posts Category Slider"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:21
|
||||
msgid "Simple posts slider from category."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:219
|
||||
msgid "Category:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:228
|
||||
msgid "Number of Slides:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:230
|
||||
msgid ""
|
||||
"Total number of posts available in the selected category will be the "
|
||||
"maximum number of slides."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:235
|
||||
msgid "Show Slider Arrows"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:240
|
||||
msgid "Show Slider Pagination"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:245
|
||||
msgid "Change Direction"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-posts-category-slider.php:246
|
||||
msgid ""
|
||||
"Enabling this will change slider direction from 'right to left' to 'left to "
|
||||
"right'."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-recent-post.php:25
|
||||
msgid "Blossom: Recent Post"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-recent-post.php:26
|
||||
msgid "A Recent Post Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-recent-post.php:97
|
||||
msgid "%1$s"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:29
|
||||
msgid "Display your Snapchat Snapcode."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:52
|
||||
msgid "Please upload your Snapchat image."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:71
|
||||
msgid "Follow <b>%s</b> on Snapchat!"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:105
|
||||
msgid "Step 1. Download your Snapcode PNG image from"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:105
|
||||
msgid "this link"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:106
|
||||
msgid "Step 2. Upload your Snapcode PNG image using the button below."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:118
|
||||
msgid "Upload Snapchat Image"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:124
|
||||
msgid "Snapchat Account Name:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-snapchat.php:125
|
||||
msgid "For example:"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-socialmedia.php:44
|
||||
msgid "Blossom: Social Media"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-socialmedia.php:45
|
||||
msgid "A Social Links Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-socialmedia.php:205
|
||||
msgid "Subscribe and Follow"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-stat-counter.php:26
|
||||
msgid "Blossom: Stat Counter Widget"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-stat-counter.php:27
|
||||
msgid "Widget for stat counter."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-stat-counter.php:137
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-stat-counter.php:143
|
||||
msgid "Show Comma"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-stat-counter.php:158
|
||||
msgid "Search Icons Here..."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:25
|
||||
msgid "Blossom: Team Member"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:26
|
||||
msgid "A Team Member Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:183
|
||||
#: includes/widgets/widget-testimonial.php:105
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:188
|
||||
#: includes/widgets/widget-testimonial.php:110
|
||||
msgid "Designation"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:202
|
||||
msgid "Upload Photo"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:205
|
||||
msgid "LinkedIn Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:211
|
||||
msgid "Twitter Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:215
|
||||
msgid "Facebook Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:219
|
||||
msgid "Instagram Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:223
|
||||
msgid "YouTube Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:227
|
||||
msgid "Dribbble Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-team-member.php:231
|
||||
msgid "Behance Profile"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-testimonial.php:25
|
||||
msgid "Blossom: Testimonial"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-testimonial.php:26
|
||||
msgid "A Testimonial Widget."
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-testimonial.php:115
|
||||
msgid "Testimonial"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:28
|
||||
msgid "Light"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:29
|
||||
msgid "Dark"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:39
|
||||
msgid "Blossom: Twitter Feed"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:40
|
||||
msgid "A widget that shows latest tweets"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:143
|
||||
msgid "Theme"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:144
|
||||
#: includes/widgets/widget-twitter-feeds.php:145
|
||||
msgid "Choose a theme…"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:157
|
||||
msgid "Twitter Username"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:162
|
||||
msgid "Border Color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:167
|
||||
msgid "Link Color"
|
||||
msgstr ""
|
||||
|
||||
#: includes/widgets/widget-twitter-feeds.php:173
|
||||
msgid "Number of tweets"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "BlossomThemes Toolkit"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://wordpress.org/plugins/blossomthemes-toolkit/"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid ""
|
||||
"BlossomThemes Toolkit provides you necessary widgets for better and "
|
||||
"effective blogging."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "blossomthemes"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://blossomthemes.com/"
|
||||
msgstr ""
|
||||
@@ -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,8 @@
|
||||
Version 1.2.0 - 20th July 2019
|
||||
New: Countdown animation effect added.
|
||||
|
||||
Version 1.1.0 - 16th July 2019
|
||||
New: When to apply animation option added in admin settings.
|
||||
|
||||
Version 1.0.0 - 15th July 2019
|
||||
- Initial Release
|
||||
@@ -0,0 +1,191 @@
|
||||
# Copyright (C) 2019 Sandesh
|
||||
# This file is distributed under the same license as the Browser Title Bar Animation package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Browser Title Bar Animation 1.2.0\n"
|
||||
"Report-Msgid-Bugs-To: "
|
||||
"https://wordpress.org/support/plugin/browser-title-bar-animation\n"
|
||||
"POT-Creation-Date: 2019-07-20 06:55:08+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-tbas-admin.php:42
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:55 classes/class-tbas-admin.php:56
|
||||
#: classes/class-tbas-admin.php:72 classes/class-tbas-metabox.php:76
|
||||
msgid "Title Bar Animation"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:85
|
||||
msgid "Support"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:86
|
||||
msgid "Got a question? I'm happy to help!"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:87
|
||||
msgid "Submit a Ticket »"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:103
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:111 classes/class-tbas-metabox.php:122
|
||||
msgid "Enable Title Bar Animation"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:118
|
||||
msgid "Enable Title Bar Animation Globally"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:125
|
||||
msgid "Apply Animation"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:132 classes/class-tbas-metabox.php:142
|
||||
msgid "When to apply animation?"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:134 classes/class-tbas-metabox.php:139
|
||||
msgid "Always"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:135 classes/class-tbas-metabox.php:140
|
||||
msgid "When user switch to another tab"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:143 classes/class-tbas-admin.php:150
|
||||
#: classes/class-tbas-metabox.php:149
|
||||
msgid "Animation Type"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:152 classes/class-tbas-metabox.php:153
|
||||
msgid "Typing"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:153 classes/class-tbas-metabox.php:154
|
||||
msgid "Scrolling"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:154 classes/class-tbas-metabox.php:155
|
||||
msgid "Blinking"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:155 classes/class-tbas-metabox.php:156
|
||||
msgid "Countdown"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:169
|
||||
msgid "Animation Examples"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:176 classes/class-tbas-metabox.php:163
|
||||
msgid "Animation Speed"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:183
|
||||
msgid "Animation speed"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:190 classes/class-tbas-metabox.php:172
|
||||
msgid "Animation Title"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:197 classes/class-tbas-admin.php:225
|
||||
#: classes/class-tbas-metabox.php:175
|
||||
msgid ""
|
||||
"Animation will apply on this title. If empty, default title will consider "
|
||||
"as animation title."
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:204 classes/class-tbas-metabox.php:180
|
||||
msgid "Countdown Duration"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:211
|
||||
msgid "Time in minutes"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:217 classes/class-tbas-metabox.php:189
|
||||
msgid "Countdown Title"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-admin.php:224
|
||||
msgid "{{countdown}}"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:112
|
||||
msgid "Override Global Settings"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:115
|
||||
msgid "Enable this to override global settings"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:126
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:127
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:135
|
||||
msgid "Animation Show"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:166
|
||||
msgid "Animation speed. eg. 1000 for 1second"
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:183
|
||||
msgid "Duration in minutes."
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:192
|
||||
msgid "User {{countdown}} tag."
|
||||
msgstr ""
|
||||
|
||||
#: classes/class-tbas-metabox.php:193
|
||||
msgid "You can use {{countdown}} tag in string."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin Name of the plugin/theme
|
||||
msgid "Browser Title Bar Animation"
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of the plugin/theme
|
||||
msgid "https://www.techiesandesh.com/"
|
||||
msgstr ""
|
||||
|
||||
#. Description of the plugin/theme
|
||||
msgid "Don't lose visitors. Catch the user's attention."
|
||||
msgstr ""
|
||||
|
||||
#. Author of the plugin/theme
|
||||
msgid "Sandesh"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of the plugin/theme
|
||||
msgid "https://sandeshjangam.com/"
|
||||
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
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user