Compare commits

...

100 Commits

Author SHA1 Message Date
erwanlr
f0997bfe0d Bumps version 2019-07-31 15:46:59 +01:00
erwanlr
8b67dad456 Fixes regexp perf 2019-07-31 14:54:57 +01:00
erwanlr
53fdac1038 Fixes #1376 2019-07-31 14:53:11 +01:00
erwanlr
534a7602e6 Adds DFs 2019-07-27 18:36:53 +01:00
erwanlr
30f329fe43 Bumps version 2019-07-23 18:27:09 +01:00
erwanlr
4ce39951a9 Additional specs for #1374 2019-07-23 16:33:09 +01:00
ethicalhack3r
0e9eb34626 Remove Patreon link 2019-07-23 12:09:04 +02:00
erwanlr
0ff299c425 Updates UA used when updating the DB 2019-07-22 12:13:01 +01:00
erwanlr
6366258ce9 Merge branch 'df' 2019-07-20 19:11:06 +01:00
erwanlr
bca69a026e Adds DFs 2019-07-20 19:10:47 +01:00
Christian Mehlmauer
adc26ea42a ruby 2.6.3 2019-07-19 09:16:56 +02:00
Erwan
b16e8d84d7 Merge pull request #1369 from wpscanteam/dependabot/bundler/rubocop-tw-0.73.0
Update rubocop requirement from ~> 0.72.0 to ~> 0.73.0
2019-07-17 11:38:45 +02:00
dependabot-preview[bot]
5ee405d5a0 Update rubocop requirement from ~> 0.72.0 to ~> 0.73.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.72.0...v0.73.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-07-17 05:28:25 +00:00
erwanlr
a5b9470636 Adds DFs 2019-07-13 11:57:18 +01:00
erwanlr
16a3d54cb6 Bumps version 2019-07-11 17:50:46 +01:00
erwanlr
9677dcd978 Makes sure the sub_dir is only checked once 2019-07-10 18:35:46 +01:00
erwanlr
17ea42f918 Updates cms_scanner dep 2019-07-10 09:17:49 +01:00
erwanlr
bd8915918d Switcing back to master 2019-07-09 15:07:42 +01:00
erwanlr
91db6773a0 Reduces --themes-threshold 2019-07-09 14:37:30 +01:00
erwanlr
f50680b61f Adds a --plugins-threshold and --themes-threshold options 2019-07-08 19:47:46 +01:00
erwanlr
3fb5d33333 Switching to dev 2019-07-08 17:34:13 +01:00
erwanlr
f70bbb2660 Switching to master 2019-07-08 14:02:38 +01:00
erwanlr
589c1ac9bb Only create Versions DF when needed 2019-07-08 13:02:29 +01:00
erwanlr
d458fa1b89 Switching to dev 2019-07-08 10:23:42 +01:00
erwanlr
dc2c99434f Switching to master 2019-07-07 12:19:05 +01:00
erwanlr
bbf36562d0 Fixes specs 2019-07-07 09:57:54 +01:00
erwanlr
c458edf3e4 Adds a note about the Readme DF 2019-07-07 08:51:29 +01:00
erwanlr
99c2aaef7a Changes some DF method names to avoid confusion with db ones 2019-07-07 08:35:41 +01:00
erwanlr
921096ca10 Adds DFs 2019-07-07 08:09:22 +01:00
erwanlr
b0fbd6fa36 Removes empty expected DF 2019-07-06 15:58:23 +01:00
erwanlr
21bd67c44f Switching to minor release 2019-07-06 15:53:00 +01:00
erwanlr
4f142985a2 Fixes #1364 2019-07-06 15:32:42 +01:00
erwanlr
bfa89b44bc Switching to dev 2019-07-06 13:04:38 +01:00
erwanlr
eba876e72b Adds DFs 2019-07-06 11:05:22 +01:00
erwanlr
f1a7413e20 Adds Theme DFs 2019-07-05 09:34:13 +01:00
erwanlr
4d32749489 Updates deps and bump version 2019-07-04 17:06:28 +01:00
erwanlr
d911a16684 Removes useless WPScan namespace 2019-07-04 16:46:33 +01:00
erwanlr
d7193bc755 Ref #1364 2019-07-04 16:33:14 +01:00
erwanlr
aee9ffdb9c Fixes #1365 2019-07-04 15:45:01 +01:00
erwanlr
1f627d5e49 Adds DFs 2019-06-29 10:51:03 +01:00
ethicalhack3r
bb67626d09 Change thimthub enum icon back to info 2019-06-28 15:04:30 +02:00
ethicalhack3r
4e0153e94a Change some enum icons to critical 2019-06-28 15:00:05 +02:00
erwanlr
065142ff19 Updates Rubocop dep 2019-06-27 08:15:54 +01:00
erwanlr
8bb6fae52f Adds DFs 2019-06-22 11:31:28 +01:00
Erwan
8cb7b81903 Merge pull request #1359 from wpscanteam/dependabot/bundler/rubocop-performance-tw-1.4.0
Update rubocop-performance requirement from ~> 1.3.0 to ~> 1.4.0
2019-06-21 13:02:00 +02:00
dependabot-preview[bot]
cb214ccda9 Update rubocop-performance requirement from ~> 1.3.0 to ~> 1.4.0
Updates the requirements on [rubocop-performance](https://github.com/rubocop-hq/rubocop-performance) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop-performance/compare/v1.3.0...v1.4.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-06-21 05:41:30 +00:00
erwanlr
3fa7b96f27 Bumps version 2019-06-17 18:11:37 +01:00
erwanlr
7c8e259072 Adds DFs 2019-06-15 16:28:14 +01:00
erwanlr
743d067042 Adds DFs 2019-06-08 12:11:24 +01:00
Erwan
50ea410718 Merge pull request #1353 from wpscanteam/dependabot/bundler/webmock-tw-3.6.0
Update webmock requirement from ~> 3.5.1 to ~> 3.6.0
2019-06-05 12:50:44 +02:00
dependabot-preview[bot]
e71182aed2 Update webmock requirement from ~> 3.5.1 to ~> 3.6.0
Updates the requirements on [webmock](https://github.com/bblimke/webmock) to permit the latest version.
- [Release notes](https://github.com/bblimke/webmock/releases)
- [Changelog](https://github.com/bblimke/webmock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/bblimke/webmock/compare/v3.5.1...v3.6.0)
2019-06-05 07:53:59 +00:00
erwanlr
97f7963e0b Adds DFs 2019-06-02 14:05:44 +01:00
Erwan
6cea6a10bd Merge pull request #1352 from wpscanteam/dependabot/bundler/rubocop-tw-0.71.0
Update rubocop requirement from ~> 0.70.0 to ~> 0.71.0
2019-05-31 14:24:27 +02:00
dependabot-preview[bot]
344d41e365 Update rubocop requirement from ~> 0.70.0 to ~> 0.71.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.70.0...v0.71.0)
2019-05-31 08:04:55 +00:00
erwanlr
597a8adfed Removes FP DF 2019-05-24 11:16:52 +01:00
erwanlr
5682e5483a Adds DFs 2019-05-24 11:06:50 +01:00
Erwan
18779edd7d Merge pull request #1349 from wpscanteam/dependabot/bundler/rubocop-tw-0.70.0
Update rubocop requirement from ~> 0.69.0 to ~> 0.70.0
2019-05-22 14:23:49 +02:00
dependabot[bot]
63aeaea77a Update rubocop requirement from ~> 0.69.0 to ~> 0.70.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.69.0...v0.70.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-22 06:25:23 +00:00
Erwan
f51e48cb40 Merge pull request #1347 from wpscanteam/dependabot/bundler/rubocop-tw-0.69.0
Update rubocop requirement from ~> 0.68.0 to ~> 0.69.0
2019-05-14 17:50:34 +02:00
Erwan
193372c79c Adds a note about Nokogiri in the Readme 2019-05-14 14:12:28 +02:00
dependabot[bot]
34d0afe7e5 Update rubocop requirement from ~> 0.68.0 to ~> 0.69.0
Updates the requirements on [rubocop](https://github.com/rubocop-hq/rubocop) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop/compare/v0.68.0...v0.69.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-14 11:26:28 +00:00
Erwan
d33a9dd56d Merge pull request #1346 from wpscanteam/dependabot/bundler/rubocop-performance-tw-1.3.0
Update rubocop-performance requirement from ~> 1.2.0 to ~> 1.3.0
2019-05-14 13:19:26 +02:00
dependabot[bot]
af2be90176 Update rubocop-performance requirement from ~> 1.2.0 to ~> 1.3.0
Updates the requirements on [rubocop-performance](https://github.com/rubocop-hq/rubocop-performance) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop-performance/compare/v1.2.0...v1.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-14 06:21:57 +00:00
erwanlr
701fb21544 Adds DFs 2019-05-11 11:34:47 +01:00
erwanlr
c8f010d9a6 Ref #1344 2019-05-08 18:17:25 +01:00
Erwan
c1ca7580e2 Merge pull request #1343 from wpscanteam/dependabot/bundler/rubocop-performance-tw-1.2.0
Update rubocop-performance requirement from ~> 1.1.0 to ~> 1.2.0
2019-05-08 18:56:36 +02:00
dependabot[bot]
11d3c2cbf1 Update rubocop-performance requirement from ~> 1.1.0 to ~> 1.2.0
Updates the requirements on [rubocop-performance](https://github.com/rubocop-hq/rubocop-performance) to permit the latest version.
- [Release notes](https://github.com/rubocop-hq/rubocop-performance/releases)
- [Changelog](https://github.com/rubocop-hq/rubocop-performance/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rubocop-hq/rubocop-performance/compare/v1.1.0...v1.2.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-05-06 06:12:47 +00:00
erwanlr
412f576aee Adds DFs 2019-05-03 11:54:25 +01:00
erwanlr
ff98a7b23b Fixes #1341 2019-05-01 19:50:43 +01:00
erwanlr
507bac8542 Merge branch 'master' of github.com:wpscanteam/wpscan 2019-04-29 15:48:07 +01:00
erwanlr
3bd6cf4805 Adds Ruby 2.6.3 to Travis 2019-04-29 15:47:55 +01:00
erwanlr
5712b31869 Updates Rubocop dep 2019-04-29 15:47:33 +01:00
Erwan
b0f9a0b18f Update issue templates 2019-04-29 15:24:22 +02:00
Erwan
f7665b460e Update issue templates 2019-04-29 15:20:44 +02:00
Erwan
100029b640 Delete old issue template 2019-04-29 15:18:10 +02:00
Erwan
2b89bddf0f Update issue templates 2019-04-29 15:17:39 +02:00
erwanlr
ca46bad8ec Bumps version 2019-04-26 11:53:00 +01:00
erwanlr
1ecd2600a3 Adds DFs 2019-04-26 10:56:26 +01:00
erwanlr
28306b126b Adds DFs 2019-04-24 17:32:25 +01:00
erwanlr
5c842e192b Updates deps 2019-04-24 12:42:18 +01:00
erwanlr
f9f307118d Adds DFs 2019-04-19 10:18:52 +01:00
erwanlr
2266fa4f4b Removes useless comment 2019-04-18 14:43:21 +01:00
erwanlr
6df2564d1a Improves Target#wordpress_hosted? 2019-04-18 14:17:00 +01:00
erwanlr
b2a62ebd26 Fixes #1335 2019-04-18 12:26:47 +01:00
erwanlr
2fca30752a Improves wp-content detection 2019-04-18 12:13:56 +01:00
erwanlr
210eced369 Typo in comments 2019-04-17 17:39:20 +01:00
erwanlr
08c574aff8 Improves detection of wp-content folder 2019-04-17 15:52:06 +01:00
Christian Mehlmauer
f4db2d65f1 fix #1309 2019-04-16 06:42:26 +02:00
erwanlr
23b02ade96 Adds DFs 2019-04-13 14:29:24 +01:00
erwanlr
71d35b16ac Adds DFs 2019-04-13 14:22:42 +01:00
erwanlr
200058c52a Adds DFs 2019-04-13 10:37:39 +01:00
erwanlr
edb5fb202a Removes check for 301 when enumerating plugins and themes 2019-04-13 08:13:38 +01:00
erwanlr
d114c25cdb Typo 2019-04-12 14:52:39 +01:00
erwanlr
64e469568b Adds message help for --wp-content-dir and --wp-plugins-dir options 2019-04-12 14:07:28 +01:00
erwanlr
c63d777372 Fixes version wrongly bumped 2019-04-12 14:00:39 +01:00
erwanlr
ae343b8cb0 Checks for wp-content directly (depends on detection-mode) when not identified passively 2019-04-12 13:55:40 +01:00
Erwan
86eb5d2d57 Merge pull request #1332 from wpscanteam/dependabot/bundler/rspec-its-tw-1.3.0
Update rspec-its requirement from ~> 1.2.0 to ~> 1.3.0
2019-04-10 10:33:27 +02:00
dependabot[bot]
b562d241db Update rspec-its requirement from ~> 1.2.0 to ~> 1.3.0
Updates the requirements on [rspec-its](https://github.com/rspec/rspec-its) to permit the latest version.
- [Release notes](https://github.com/rspec/rspec-its/releases)
- [Changelog](https://github.com/rspec/rspec-its/blob/master/Changelog.md)
- [Commits](https://github.com/rspec/rspec-its/compare/v1.2.0...v1.3.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-04-10 06:07:39 +00:00
erwanlr
49b1829b78 Bumps version 2019-04-08 16:58:26 +01:00
erwanlr
1a5bf4035c Update deps 2019-04-08 09:39:07 +01:00
284 changed files with 94166 additions and 349 deletions

View File

@@ -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.

View 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
View 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.

View File

@@ -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:

View File

@@ -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"

View File

@@ -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"]

View File

@@ -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)

View File

@@ -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

View File

@@ -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 || {}

View File

@@ -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

View File

@@ -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
)

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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),

View File

@@ -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/')

View File

@@ -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),

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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,

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 = {})

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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 = []

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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
#

View File

@@ -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 %>

View File

@@ -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 %>

View File

@@ -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| -%>
{
@@ -24,3 +25,4 @@
<% end -%>
<% end -%>
]
<% end -%>

View File

@@ -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

View File

@@ -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|
# 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|
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)
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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -9,6 +9,7 @@ module WPScan
end
end
require_relative 'errors/enumeration'
require_relative 'errors/http'
require_relative 'errors/update'
require_relative 'errors/wordpress'

View 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

View File

@@ -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

View File

@@ -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)

View File

@@ -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()')

View File

@@ -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

View File

@@ -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)

View File

@@ -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(

View File

@@ -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

View File

@@ -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(

View File

@@ -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

View File

@@ -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 ]

View File

@@ -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
#
# @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

View File

@@ -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

View File

@@ -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,25 +97,23 @@ 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)
# url_pattern is from CMSScanner::Target
pattern = %r{#{url_pattern}(.+?)/(?:xmlrpc\.php|wp\-includes/)}i
in_scope_uris(homepage_res) do |uri|
return @sub_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
end
@sub_dir = false
end
@sub_dir
end
# Override of the WebSite#url to consider the custom WP directories
#
# @param [ String ] path Optional path to merge with the uri

View File

@@ -2,5 +2,5 @@
# Version
module WPScan
VERSION = '3.5.1'
VERSION = '3.6.2'
end

View File

@@ -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)

View File

@@ -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

View File

@@ -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,44 +171,22 @@ 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) }
context 'when wp.getUsersBlogs methods not available' do
it 'returns the WpLogin' do
expect(xmlrpc).to receive(:available_methods).and_return(%w[m1 m2])
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
expect(controller.attacker.target).to be_a WPScan::Target
expect(controller.target)
.to receive(:xmlrpc).and_return(WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php"))
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 not found' do
it 'returns the XMLRPC' do
@@ -190,4 +222,3 @@ describe WPScan::Controller::PasswordAttack do
end
end
end
end

View File

@@ -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

View File

@@ -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

View File

@@ -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' }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -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 ""

View File

@@ -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 ""

View 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.

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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&amp;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 ""

View File

@@ -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 ""

File diff suppressed because it is too large Load Diff

View 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

View 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

View 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"

View 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.

View 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"
}
}

View File

@@ -0,0 +1,9 @@
# Changelog
## 1.0.1
- Updated readme
## 1.0.0
- Initial

View File

@@ -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 ""

View File

@@ -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 ""

View File

@@ -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.

View File

@@ -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 &#8220;%s&#8221;"
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 "&laquo; Previous %s Reviews"
msgstr ""
#: includes/display/layout-review-list.php:231
msgid "Next %s Reviews &raquo;"
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 ""

View 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"
}
}

View File

@@ -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&hellip;"
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 ""

View File

@@ -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 ""

View File

@@ -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

View File

@@ -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 ""

View File

@@ -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 ""

Some files were not shown because too many files have changed in this diff Show More