Compare commits

..

79 Commits

Author SHA1 Message Date
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
erwanlr
f3810a1504 Bumps version 2019-04-07 17:45:29 +01:00
erwanlr
4831760c11 Merge branch '3.5.1' 2019-04-07 17:42:51 +01:00
erwanlr
f375d8991e Update deps 2019-04-07 17:35:18 +01:00
erwanlr
8145a4a3a6 Fixes #1330 2019-04-07 17:06:19 +01:00
erwanlr
12c9b49d4c Adds DFs 2019-04-06 11:34:23 +01:00
erwanlr
c8eb81161e Uses https rather than git protocols for CMSScanner dep 2019-04-05 19:53:29 +01:00
erwanlr
8ab246a66c Uses CMSScanner git dep 2019-04-05 19:48:22 +01:00
erwanlr
8dfc4797fa Handles default user_agent_list via CLI option (in CMSScanner) 2019-04-05 19:30:53 +01:00
erwanlr
7888fe1176 Uses ParsedCli 2019-04-05 16:47:14 +01:00
Erwan
8a6f3056a3 Merge pull request #1329 from wpscanteam/dependabot/bundler/rubocop-tw-0.67.1
Update rubocop requirement from ~> 0.66.0 to ~> 0.67.1
2019-04-05 11:37:00 +02:00
dependabot[bot]
5fbdf9e013 Update rubocop requirement from ~> 0.66.0 to ~> 0.67.1
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.66.0...v0.67.1)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-04-05 06:16:13 +00:00
erwanlr
1da2f5e823 Sets the Target#mu_plugind to true when detected passively 2019-04-04 17:25:58 +01:00
erwanlr
888779f81b Support of Ruby 2.3 removed as its life ended 2019-04-04 15:40:21 +01:00
erwanlr
352286e497 Adds a #maybe_add_cookies to handle website requiring a specific cookie 2019-04-03 19:08:52 +01:00
225 changed files with 38369 additions and 304 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.
@@ -24,4 +35,4 @@ Things you have tried (where relevant):
* Update Ruby to the latest version [ ]
* Ensure you can reach the target site using cURL [ ]
* Proxied WPScan through a HTTP proxy to view the raw traffic [ ]
* Ensure you are using a supported Operating System (Linux and macOS) [ ]
* Ensure you are using a supported Operating System (Linux and macOS) [ ]

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,5 +1,6 @@
require: rubocop-performance
AllCops:
TargetRubyVersion: 2.3
TargetRubyVersion: 2.4
Exclude:
- '*.gemspec'
- 'vendor/**/*'

View File

@@ -2,20 +2,12 @@ language: ruby
sudo: false
cache: bundler
rvm:
- 2.3.0
- 2.3.1
- 2.3.2
- 2.3.3
- 2.3.4
- 2.3.5
- 2.3.6
- 2.3.7
- 2.3.8
- 2.4.1
- 2.4.2
- 2.4.3
- 2.4.4
- 2.4.5
- 2.4.6
- 2.5.0
- 2.5.1
- 2.5.2
@@ -25,6 +17,7 @@ rvm:
- 2.6.0
- 2.6.1
- 2.6.2
- 2.6.3
- ruby-head
before_install:
- "echo 'gem: --no-ri --no-rdoc' > ~/.gemrc"

View File

@@ -25,13 +25,16 @@ LABEL maintainer="WPScan Team <team@wpscan.org>"
RUN adduser -h /wpscan -g WPScan -D wpscan
COPY --from=builder /usr/local/bundle /usr/local/bundle
RUN chown -R wpscan:wpscan /wpscan
# runtime dependencies
RUN apk add --no-cache libcurl procps sqlite-libs
WORKDIR /wpscan
USER wpscan
RUN /usr/local/bundle/bin/wpscan --update --verbose
ENTRYPOINT ["/usr/local/bundle/bin/wpscan"]

View File

@@ -2,3 +2,5 @@
source 'https://rubygems.org'
gemspec
# gem 'cms_scanner', branch: 'xxx', git: 'https://github.com/wpscanteam/CMSScanner.git'

View File

@@ -30,6 +30,7 @@
- Curl >= 7.21 - Recommended: latest
- The 7.29 has a segfault
- RubyGems - Recommended: latest
- Nokogiri might require packages to be installed via your package manager depending on your OS, see https://nokogiri.org/tutorials/installing_nokogiri.html
### From RubyGems (Recommended)

View File

@@ -27,38 +27,41 @@ module WPScan
# @return [ Boolean ]
def update_db_required?
if local_db.missing_files?
raise Error::MissingDatabaseFile if parsed_options[:update] == false
raise Error::MissingDatabaseFile if ParsedCli.update == false
return true
end
return parsed_options[:update] unless parsed_options[:update].nil?
return ParsedCli.update unless ParsedCli.update.nil?
return false unless user_interaction? && local_db.outdated?
output('@notice', msg: 'It seems like you have not updated the database for some time.')
print '[?] Do you want to update now? [Y]es [N]o, default: [N]'
Readline.readline =~ /^y/i ? true : false
/^y/i.match?(Readline.readline) ? true : false
end
def update_db
output('db_update_started')
output('db_update_finished', updated: local_db.update, verbose: parsed_options[:verbose])
output('db_update_finished', updated: local_db.update, verbose: ParsedCli.verbose)
exit(0) unless parsed_options[:url]
exit(0) unless ParsedCli.url
end
def before_scan
@last_update = local_db.last_update
maybe_output_banner_help_and_version # From CMS Scanner
maybe_output_banner_help_and_version # From CMSScanner
update_db if update_db_required?
setup_cache
check_target_availability
load_server_module
check_wordpress_state
rescue Error::NotWordPress => e
target.maybe_add_cookies
raise e unless target.wordpress?(ParsedCli.detection_mode)
end
# Raises errors if the target is hosted on wordpress.com or is not running WordPress
@@ -66,14 +69,14 @@ module WPScan
def check_wordpress_state
raise Error::WordPressHosted if target.wordpress_hosted?
if Addressable::URI.parse(target.homepage_url).path =~ %r{/wp-admin/install.php$}i
if %r{/wp-admin/install.php$}i.match?(Addressable::URI.parse(target.homepage_url).path)
output('not_fully_configured', url: target.homepage_url)
exit(WPScan::ExitCode::VULNERABLE)
end
raise Error::NotWordPress unless target.wordpress?(parsed_options[:detection_mode]) || parsed_options[:force]
raise Error::NotWordPress unless target.wordpress?(ParsedCli.detection_mode) || ParsedCli.force
end
# Loads the related server module in the target
@@ -85,7 +88,7 @@ module WPScan
server = target.server || :Apache # Tries to auto detect the server
# Force a specific server module to be loaded if supplied
case parsed_options[:server]
case ParsedCli.server
when :apache
server = :Apache
when :iis

View File

@@ -7,16 +7,18 @@ module WPScan
class CustomDirectories < CMSScanner::Controller::Base
def cli_options
[
OptString.new(['--wp-content-dir DIR']),
OptString.new(['--wp-plugins-dir DIR'])
OptString.new(['--wp-content-dir DIR',
'The wp-content directory if custom or not detected, such as "wp-content"']),
OptString.new(['--wp-plugins-dir DIR',
'The plugins directory if custom or not detected, such as "wp-content/plugins"'])
]
end
def before_scan
target.content_dir = parsed_options[:wp_content_dir] if parsed_options[:wp_content_dir]
target.plugins_dir = parsed_options[:wp_plugins_dir] if parsed_options[:wp_plugins_dir]
target.content_dir = ParsedCli.wp_content_dir if ParsedCli.wp_content_dir
target.plugins_dir = ParsedCli.wp_plugins_dir if ParsedCli.wp_plugins_dir
return if target.content_dir
return if target.content_dir(ParsedCli.detection_mode)
raise Error::WpContentDirNotDetected
end

View File

@@ -17,7 +17,7 @@ module WPScan
end
def run
enum = parsed_options[:enumerate] || {}
enum = ParsedCli.enumerate || {}
enum_plugins if enum_plugins?(enum)
enum_themes if enum_themes?(enum)

View File

@@ -7,13 +7,13 @@ module WPScan
# @param [ String ] type (plugins or themes)
# @param [ Symbol ] detection_mode
#
# @return [ String ] The related enumration message depending on the parsed_options and type supplied
# @return [ String ] The related enumration message depending on the ParsedCli and type supplied
def enum_message(type, detection_mode)
return unless %w[plugins themes].include?(type)
details = if parsed_options[:enumerate][:"vulnerable_#{type}"]
details = if ParsedCli.enumerate[:"vulnerable_#{type}"]
'Vulnerable'
elsif parsed_options[:enumerate][:"all_#{type}"]
elsif ParsedCli.enumerate[:"all_#{type}"]
'All'
else
'Most Popular'
@@ -39,15 +39,15 @@ module WPScan
#
# @return [ Hash ]
def default_opts(type)
mode = parsed_options[:"#{type}_detection"] || parsed_options[:detection_mode]
mode = ParsedCli.options[:"#{type}_detection"] || ParsedCli.detection_mode
{
mode: mode,
exclude_content: parsed_options[:exclude_content_based],
exclude_content: ParsedCli.exclude_content_based,
show_progression: user_interaction?,
version_detection: {
mode: parsed_options[:"#{type}_version_detection"] || mode,
confidence_threshold: parsed_options[:"#{type}_version_all"] ? 0 : 100
mode: ParsedCli.options[:"#{type}_version_detection"] || mode,
confidence_threshold: ParsedCli.options[:"#{type}_version_all"] ? 0 : 100
}
}
end
@@ -61,7 +61,7 @@ module WPScan
def enum_plugins
opts = default_opts('plugins').merge(
list: plugins_list_from_opts(parsed_options),
list: plugins_list_from_opts(ParsedCli.options),
sort: true
)
@@ -77,7 +77,7 @@ module WPScan
plugins.each(&:version)
plugins.select!(&:vulnerable?) if parsed_options[:enumerate][:vulnerable_plugins]
plugins.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_plugins]
output('plugins', plugins: plugins)
end
@@ -107,7 +107,7 @@ module WPScan
def enum_themes
opts = default_opts('themes').merge(
list: themes_list_from_opts(parsed_options),
list: themes_list_from_opts(ParsedCli.options),
sort: true
)
@@ -123,7 +123,7 @@ module WPScan
themes.each(&:version)
themes.select!(&:vulnerable?) if parsed_options[:enumerate][:vulnerable_themes]
themes.select!(&:vulnerable?) if ParsedCli.enumerate[:vulnerable_themes]
output('themes', themes: themes)
end
@@ -145,28 +145,28 @@ module WPScan
end
def enum_timthumbs
opts = default_opts('timthumbs').merge(list: parsed_options[:timthumbs_list])
opts = default_opts('timthumbs').merge(list: ParsedCli.timthumbs_list)
output('@info', msg: "Enumerating Timthumbs #{enum_detection_message(opts[:mode])}") if user_interaction?
output('timthumbs', timthumbs: target.timthumbs(opts))
end
def enum_config_backups
opts = default_opts('config_backups').merge(list: parsed_options[:config_backups_list])
opts = default_opts('config_backups').merge(list: ParsedCli.config_backups_list)
output('@info', msg: "Enumerating Config Backups #{enum_detection_message(opts[:mode])}") if user_interaction?
output('config_backups', config_backups: target.config_backups(opts))
end
def enum_db_exports
opts = default_opts('db_exports').merge(list: parsed_options[:db_exports_list])
opts = default_opts('db_exports').merge(list: ParsedCli.db_exports_list)
output('@info', msg: "Enumerating DB Exports #{enum_detection_message(opts[:mode])}") if user_interaction?
output('db_exports', db_exports: target.db_exports(opts))
end
def enum_medias
opts = default_opts('medias').merge(range: parsed_options[:enumerate][:medias])
opts = default_opts('medias').merge(range: ParsedCli.enumerate[:medias])
if user_interaction?
output('@info',
@@ -181,13 +181,13 @@ module WPScan
#
# @return [ Boolean ] Wether or not to enumerate the users
def enum_users?(opts)
opts[:users] || (parsed_options[:passwords] && !parsed_options[:username] && !parsed_options[:usernames])
opts[:users] || (ParsedCli.passwords && !ParsedCli.username && !ParsedCli.usernames)
end
def enum_users
opts = default_opts('users').merge(
range: enum_users_range,
list: parsed_options[:users_list]
list: ParsedCli.users_list
)
output('@info', msg: "Enumerating Users #{enum_detection_message(opts[:mode])}") if user_interaction?
@@ -198,7 +198,7 @@ module WPScan
# If the --enumerate is used, the default value is handled by the Option
# However, when using --passwords alone, the default has to be set by the code below
def enum_users_range
parsed_options[:enumerate][:users] || cli_enum_choices[0].choices[:u].validate(nil)
ParsedCli.enumerate[:users] || cli_enum_choices[0].choices[:u].validate(nil)
end
end
end

View File

@@ -18,9 +18,9 @@ module WPScan
output(
'theme',
theme: target.main_theme(
mode: parsed_options[:main_theme_detection] || parsed_options[:detection_mode]
mode: ParsedCli.main_theme_detection || ParsedCli.detection_mode
),
verbose: parsed_options[:verbose]
verbose: ParsedCli.verbose
)
end
end

View File

@@ -24,7 +24,7 @@ module WPScan
end
def run
return unless parsed_options[:passwords]
return unless ParsedCli.passwords
if user_interaction?
output('@info',
@@ -33,13 +33,13 @@ module WPScan
attack_opts = {
show_progression: user_interaction?,
multicall_max_passwords: parsed_options[:multicall_max_passwords]
multicall_max_passwords: ParsedCli.multicall_max_passwords
}
begin
found = []
attacker.attack(users, passwords(parsed_options[:passwords]), attack_opts) do |user|
attacker.attack(users, passwords(ParsedCli.passwords), attack_opts) do |user|
found << user
attacker.progress_bar.log("[SUCCESS] - #{user.username} / #{user.password}")
@@ -61,42 +61,55 @@ module WPScan
# @return [ CMSScanner::Finders::Finder ]
def attacker_from_cli_options
return unless parsed_options[:password_attack]
return unless ParsedCli.password_attack
case parsed_options[:password_attack]
case ParsedCli.password_attack
when :wp_login
WPScan::Finders::Passwords::WpLogin.new(target)
Finders::Passwords::WpLogin.new(target)
when :xmlrpc
raise Error::XMLRPCNotDetected unless xmlrpc
WPScan::Finders::Passwords::XMLRPC.new(xmlrpc)
Finders::Passwords::XMLRPC.new(xmlrpc)
when :xmlrpc_multicall
raise Error::XMLRPCNotDetected unless xmlrpc
WPScan::Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
end
end
# @return [ Boolean ]
def xmlrpc_get_users_blogs_enabled?
if xmlrpc&.enabled? &&
xmlrpc.available_methods.include?('wp.getUsersBlogs') &&
xmlrpc.method_call('wp.getUsersBlogs', [SecureRandom.hex[0, 6], SecureRandom.hex[0, 4]])
.run.body !~ /XML\-RPC services are disabled/
true
else
false
end
end
# @return [ CMSScanner::Finders::Finder ]
def attacker_from_automatic_detection
if xmlrpc&.enabled? && xmlrpc.available_methods.include?('wp.getUsersBlogs')
if xmlrpc_get_users_blogs_enabled?
wp_version = target.wp_version
if wp_version && wp_version < '4.4'
WPScan::Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
else
WPScan::Finders::Passwords::XMLRPC.new(xmlrpc)
Finders::Passwords::XMLRPC.new(xmlrpc)
end
else
WPScan::Finders::Passwords::WpLogin.new(target)
Finders::Passwords::WpLogin.new(target)
end
end
# @return [ Array<Users> ] The users to brute force
def users
return target.users unless parsed_options[:usernames]
return target.users unless ParsedCli.usernames
parsed_options[:usernames].reduce([]) do |acc, elem|
ParsedCli.usernames.reduce([]) do |acc, elem|
acc << Model::User.new(elem.chomp)
end
end

View File

@@ -17,15 +17,15 @@ module WPScan
end
def before_scan
WPScan::DB::DynamicFinders::Wordpress.create_versions_finders
DB::DynamicFinders::Wordpress.create_versions_finders
end
def run
output(
'version',
version: target.wp_version(
mode: parsed_options[:wp_version_detection] || parsed_options[:detection_mode],
confidence_threshold: parsed_options[:wp_version_all] ? 0 : 100,
mode: ParsedCli.wp_version_detection || ParsedCli.detection_mode,
confidence_threshold: ParsedCli.wp_version_all ? 0 : 100,
show_progression: user_interaction?
)
)

View File

@@ -14,7 +14,7 @@ module WPScan
Model::EmergencyPwdResetScript.new(
target.url(path),
confidence: res.body =~ /password/i ? 100 : 40,
confidence: /password/i.match?(res.body) ? 100 : 40,
found_by: DIRECT_ACCESS,
references: {
url: 'https://codex.wordpress.org/Resetting_Your_Password#Using_the_Emergency_Password_Reset_Script'

View File

@@ -9,11 +9,13 @@ module WPScan
def passive(_opts = {})
pattern = %r{#{target.content_dir}/mu\-plugins/}i
target.in_scope_urls(target.homepage_res) do |url|
next unless Addressable::URI.parse(url).path =~ pattern
target.in_scope_uris(target.homepage_res) do |uri|
next unless uri.path =~ pattern
url = target.url('wp-content/mu-plugins/')
target.mu_plugins = true
return Model::MuPlugins.new(
url,
confidence: 70,
@@ -33,8 +35,6 @@ module WPScan
return unless [200, 401, 403].include?(res.code)
return if target.homepage_or_404?(res)
# TODO: add the check for --exclude-content once implemented ?
target.mu_plugins = true
Model::MuPlugins.new(

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

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

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

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,7 +19,7 @@ module WPScan
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: [200, 401, 403, 500])) do |_res, slug|
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
found << Model::Plugin.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
end

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

@@ -9,7 +9,7 @@ module WPScan
# @return [ Array<Integer> ]
def valid_response_codes
@valid_response_codes ||= [200, 401, 403, 301, 500].freeze
@valid_response_codes ||= [200, 401, 403, 500].freeze
end
# @param [ Hash ] opts
@@ -19,7 +19,7 @@ module WPScan
def aggressive(opts = {})
found = []
enumerate(target_urls(opts), opts.merge(check_full_response: [200, 401, 403, 500])) do |_res, slug|
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |_res, slug|
found << Model::Theme.new(slug, target, opts.merge(found_by: found_by, confidence: 80))
end

View File

@@ -7,6 +7,11 @@ module WPScan
class AuthorIdBruteForcing < CMSScanner::Finders::Finder
include CMSScanner::Finders::Finder::Enumerator
# @return [ Array<Integer> ]
def valid_response_codes
@valid_response_codes ||= [200, 301, 302]
end
# @param [ Hash ] opts
# @option opts [ Range ] :range Mandatory
#
@@ -15,7 +20,7 @@ module WPScan
found = []
found_by_msg = 'Author Id Brute Forcing - %s (Aggressive Detection)'
enumerate(target_urls(opts), opts) do |res, id|
enumerate(target_urls(opts), opts.merge(check_full_response: true)) do |res, id|
username, found_by, confidence = potential_username(res)
next unless username
@@ -49,7 +54,7 @@ module WPScan
super(opts.merge(title: ' Brute Forcing Author IDs -'))
end
def request_params
def full_request_params
{ followlocation: true }
end
@@ -78,8 +83,8 @@ module WPScan
# @return [ String, nil ] The username found
def username_from_response(res)
# Permalink enabled
target.in_scope_urls(res, '//link/@href|//a/@href') do |url|
username = username_from_author_url(url)
target.in_scope_uris(res, '//link/@href|//a/@href') do |uri|
username = username_from_author_url(uri.to_s)
return username if username
end

View File

@@ -45,12 +45,10 @@ module WPScan
def potential_usernames(res)
usernames = []
target.in_scope_urls(res, '//a/@href') do |url, node|
uri = Addressable::URI.parse(url)
target.in_scope_uris(res, '//a/@href') do |uri, node|
if uri.path =~ %r{/author/([^/\b]+)/?\z}i
usernames << [Regexp.last_match[1], 'Author Pattern', 100]
elsif uri.query =~ /author=[0-9]+/
elsif /author=[0-9]+/.match?(uri.query)
usernames << [node.text.to_s.strip, 'Display Name', 30]
end
end

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

@@ -63,7 +63,7 @@ module WPScan
def webshot_enabled?
res = Browser.get(url, params: { webshot: 1, src: "http://#{default_allowed_domains.sample}" })
res.body =~ /WEBSHOT_ENABLED == true/ ? false : true
/WEBSHOT_ENABLED == true/.match?(res.body) ? false : true
end
# @return [ Array<String> ] The default allowed domains (between the 2.0 and 2.8.13)

View File

@@ -13,7 +13,7 @@ module WPScan
attr_reader :uri, :slug, :detection_opts, :version_detection_opts, :blog, :path_from_blog, :db_data
delegate :homepage_res, :xpath_pattern_from_page, :in_scope_urls, :head_or_get_params, to: :blog
delegate :homepage_res, :xpath_pattern_from_page, :in_scope_uris, :head_or_get_params, to: :blog
# @param [ String ] slug The plugin/theme slug
# @param [ Target ] blog The targeted blog

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| -%>
{
@@ -23,4 +24,5 @@
}<% unless index == last_index -%>,<% end -%>
<% end -%>
<% end -%>
]
]
<% end -%>

View File

@@ -19,6 +19,7 @@ require 'wpscan/helper'
require 'wpscan/db'
require 'wpscan/version'
require 'wpscan/errors'
require 'wpscan/parsed_cli'
require 'wpscan/browser'
require 'wpscan/target'
require 'wpscan/finders'

View File

@@ -5,11 +5,6 @@ module WPScan
class Browser < CMSScanner::Browser
extend Actions
# @return [ String ] The path to the user agents list
def user_agents_list
@user_agents_list ||= DB_DIR.join('user-agents.txt').to_s
end
# @return [ String ]
def default_user_agent
"WPScan v#{VERSION} (https://wpscan.org/)"

View File

@@ -8,11 +8,11 @@ module WPScan
# /!\ Might want to also update the Enumeration#cli_options when some filenames are changed here
FILES = %w[
plugins.json themes.json wordpresses.json
timthumbs-v3.txt user-agents.txt config_backups.txt
db_exports.txt dynamic_finders.yml wp_fingerprints.json LICENSE
timthumbs-v3.txt config_backups.txt db_exports.txt
dynamic_finders.yml wp_fingerprints.json LICENSE
].freeze
OLD_FILES = %w[wordpress.db dynamic_finders_01.yml].freeze
OLD_FILES = %w[wordpress.db user-agents.txt dynamic_finders_01.yml].freeze
attr_reader :repo_directory

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 ]

7
lib/wpscan/parsed_cli.rb Normal file
View File

@@ -0,0 +1,7 @@
# frozen_string_literal: true
module WPScan
# To be able to use ParsedCli directly, rather than having to access it via WPscan::ParsedCli
class ParsedCli < CMSScanner::ParsedCli
end
end

View File

@@ -24,8 +24,8 @@ module WPScan
#
# @return [ Boolean ]
def wordpress?(detection_mode)
in_scope_urls(homepage_res) do |url|
return true if Addressable::URI.parse(url).path.match(WORDPRESS_PATTERN)
in_scope_uris(homepage_res) do |uri|
return true if uri.path.match(WORDPRESS_PATTERN)
end
homepage_res.html.css('meta[name="generator"]').each do |node|
@@ -36,8 +36,8 @@ module WPScan
if %i[mixed aggressive].include?(detection_mode)
%w[wp-admin/install.php wp-login.php].each do |path|
in_scope_urls(Browser.get_and_follow_location(url(path))).each do |url|
return true if Addressable::URI.parse(url).path.match(WORDPRESS_PATTERN)
in_scope_uris(Browser.get_and_follow_location(url(path))).each do |uri|
return true if uri.path.match(WORDPRESS_PATTERN)
end
end
end
@@ -45,13 +45,52 @@ module WPScan
false
end
COOKIE_PATTERNS = {
'vjs' => /createCookie\('vjs','(?<c_value>\d+)',\d+\);/i
}.freeze
# Sometimes there is a mechanism in place on the blog, which requires a specific
# cookie and value to be added to requests. Lets try to detect and add them
def maybe_add_cookies
COOKIE_PATTERNS.each do |cookie_key, pattern|
next unless homepage_res.body =~ pattern
browser = Browser.instance
cookie_string = "#{cookie_key}=#{Regexp.last_match[:c_value]}"
cookie_string += "; #{browser.cookie_string}" if browser.cookie_string
browser.cookie_string = cookie_string
# Force recheck of the homepage when retying wordpress?
# No need to clear the cache, as the request (which will contain the cookies)
# will be different
@homepage_res = nil
@homepage_url = nil
break
end
end
# @return [ String ]
def registration_url
multisite? ? url('wp-signup.php') : url('wp-login.php?action=register')
end
# @return [ Boolean ] Whether or not the target is hosted on wordpress.com
def wordpress_hosted?
uri.host =~ /\.wordpress\.com$/i ? true : false
return true if /\.wordpress\.com$/i.match?(uri.host)
unless content_dir(:passive)
pattern = %r{https?://s\d\.wp\.com#{WORDPRESS_PATTERN}}i.freeze
uris_from_page(homepage_res) do |uri|
return true if uri.to_s.match?(pattern)
end
end
false
end
# @param [ String ] username

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,17 +97,16 @@ module WPScan
themes_uri.join("#{URI.encode(slug)}/").to_s
end
# TODO: Factorise the code and the content_dir one ?
# @return [ String, False ] String of the sub_dir found, false otherwise
# @note: nil can not be returned here, otherwise if there is no sub_dir
# the check would be done each time
def sub_dir
unless @sub_dir
escaped_url = Regexp.escape(url).gsub(/https?/i, 'https?')
pattern = %r{#{escaped_url}(.+?)\/(?:xmlrpc\.php|wp\-includes\/)}i
# url_pattern is from CMSScanner::Target
pattern = %r{#{url_pattern}(.+?)/(?:xmlrpc\.php|wp\-includes/)}i
in_scope_urls(homepage_res) do |url|
return @sub_dir = Regexp.last_match[1] if url.match(pattern)
in_scope_uris(homepage_res) do |uri|
return @sub_dir = Regexp.last_match[1] if uri.to_s.match(pattern)
end
@sub_dir = false
@@ -112,9 +123,9 @@ module WPScan
def url(path = nil)
return @uri.to_s unless path
if path =~ %r{wp\-content/plugins}i
if %r{wp\-content/plugins}i.match?(path)
path = +path.gsub('wp-content/plugins', plugins_dir)
elsif path =~ /wp\-content/i
elsif /wp\-content/i.match?(path)
path = +path.gsub('wp-content', content_dir)
elsif path[0] != '/' && sub_dir
path = "#{sub_dir}/#{path}"

View File

@@ -2,5 +2,5 @@
# Version
module WPScan
VERSION = '3.5.0'
VERSION = '3.5.5'
end

View File

@@ -3,12 +3,10 @@
describe WPScan::Controller::Aliases do
subject(:controller) { described_class.new }
let(:target_url) { 'http://ex.lo/' }
let(:parsed_options) { rspec_parsed_options(cli_args) }
let(:cli_args) { "--url #{target_url}" }
before do
WPScan::Browser.reset
described_class.parsed_options = parsed_options
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
end
describe '#cli_options' do
@@ -22,14 +20,18 @@ describe WPScan::Controller::Aliases do
describe 'parsed_options' do
context 'when no --stealthy supplied' do
its(:parsed_options) { should eql parsed_options }
it 'contains the correct options' do
expect(WPScan::ParsedCli.options).to include(
detection_mode: :mixed, plugins_version_detection: :mixed
)
end
end
context 'when --stealthy supplied' do
let(:cli_args) { "#{super()} --stealthy" }
it 'contains the correct options' do
expect(controller.parsed_options).to include(
expect(WPScan::ParsedCli.options).to include(
random_user_agent: true, detection_mode: :passive, plugins_version_detection: :passive
)
end

View File

@@ -3,13 +3,11 @@
describe WPScan::Controller::Core do
subject(:core) { described_class.new }
let(:target_url) { 'http://ex.lo/' }
let(:parsed_options) { rspec_parsed_options(cli_args) }
let(:cli_args) { "--url #{target_url}" }
before do
WPScan::Browser.reset
described_class.reset
described_class.parsed_options = parsed_options
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
end
describe '#cli_options' do
@@ -140,7 +138,7 @@ describe WPScan::Controller::Core do
expect(core.formatter).to receive(:output).with('banner', hash_including(verbose: nil), 'core')
expect(core).to receive(:update_db_required?).and_return(false) unless parsed_options[:update]
expect(core).to receive(:update_db_required?).and_return(false) unless WPScan::ParsedCli.update
end
context 'when --update' do
@@ -218,7 +216,7 @@ describe WPScan::Controller::Core do
context 'when not wordpress' do
it 'raises an error' do
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
expect(core.target).to receive(:wordpress?).twice.with(:mixed).and_return(false)
expect { core.before_scan }.to raise_error(WPScan::Error::NotWordPress)
end
@@ -250,12 +248,26 @@ describe WPScan::Controller::Core do
context 'when not wordpress' do
before do
expect(core).to receive(:load_server_module)
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
end
context 'when no --force' do
it 'raises an error' do
expect { core.before_scan }.to raise_error(WPScan::Error::NotWordPress)
before { expect(core.target).to receive(:maybe_add_cookies) }
context 'when no cookies added or still not wordpress after being added' do
it 'raises an error' do
expect(core.target).to receive(:wordpress?).twice.with(:mixed).and_return(false)
expect { core.before_scan }.to raise_error(WPScan::Error::NotWordPress)
end
end
context 'when the added cookies solved it' do
it 'does not raise an error' do
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false).ordered
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(true).ordered
expect { core.before_scan }.to_not raise_error
end
end
end
@@ -263,6 +275,8 @@ describe WPScan::Controller::Core do
let(:cli_args) { "#{super()} --force" }
it 'does not raise any error' do
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
expect { core.before_scan }.to_not raise_error
end
end

View File

@@ -3,12 +3,10 @@
describe WPScan::Controller::CustomDirectories do
subject(:controller) { described_class.new }
let(:target_url) { 'http://ex.lo/' }
let(:parsed_options) { rspec_parsed_options(cli_args) }
let(:cli_args) { "--url #{target_url}" }
before do
WPScan::Browser.reset
described_class.parsed_options = parsed_options
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
end
describe '#cli_options' do
@@ -21,8 +19,8 @@ describe WPScan::Controller::CustomDirectories do
end
describe '#before_scan' do
context 'when the content_dir is not found and not supply' do
before { expect(controller.target).to receive(:content_dir) }
context 'when the content_dir is not found and not supplied' do
before { expect(controller.target).to receive(:content_dir).with(:mixed) }
it 'raises an exception' do
expect { controller.before_scan }.to raise_error(WPScan::Error::WpContentDirNotDetected)
@@ -34,7 +32,7 @@ describe WPScan::Controller::CustomDirectories do
it 'does not raise any error' do
expect { controller.before_scan }.to_not raise_error
expect(controller.target.content_dir).to eq parsed_options[:wp_content_dir]
expect(controller.target.content_dir).to eq WPScan::ParsedCli.wp_content_dir
end
end
end

View File

@@ -3,16 +3,13 @@
describe WPScan::Controller::Enumeration do
subject(:controller) { described_class.new }
let(:target_url) { 'http://wp.lab/' }
let(:parsed_options) { rspec_parsed_options(cli_args) }
let(:cli_args) { "--url #{target_url}" }
before do
WPScan::Browser.reset
## For the --passwords options
allow_any_instance_of(OptParseValidator::OptPath).to receive(:check_file)
described_class.parsed_options = parsed_options
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
end
describe '#enum_message' do
@@ -120,7 +117,7 @@ describe WPScan::Controller::Enumeration do
expect(controller).to receive(:enum_plugins)
expect(controller).to receive(:enum_config_backups)
expect(parsed_options[:plugins_detection]).to eql :passive
expect(WPScan::ParsedCli.plugins_detection).to eql :passive
end
it 'calls enum_plugins and enum_config_backups' do

View File

@@ -3,12 +3,10 @@
describe WPScan::Controller::PasswordAttack do
subject(:controller) { described_class.new }
let(:target_url) { 'http://ex.lo/' }
let(:parsed_options) { rspec_parsed_options(cli_args) }
let(:cli_args) { "--url #{target_url}" }
before do
WPScan::Browser.reset
described_class.parsed_options = parsed_options
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
end
describe '#cli_options' do
@@ -54,6 +52,60 @@ describe WPScan::Controller::PasswordAttack do
end
end
describe '#xmlrpc_get_users_blogs_enabled?' do
before { expect(controller.target).to receive(:xmlrpc).and_return(xmlrpc) }
context 'when xmlrpc not found' do
let(:xmlrpc) { nil }
its(:xmlrpc_get_users_blogs_enabled?) { should be false }
end
context 'when xmlrpc not enabled' do
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php") }
it 'returns false' do
expect(xmlrpc).to receive(:enabled?).and_return(false)
expect(controller.xmlrpc_get_users_blogs_enabled?).to be false
end
end
context 'when xmlrpc enabled' do
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php") }
before { expect(xmlrpc).to receive(:enabled?).and_return(true) }
context 'when wp.getUsersBlogs methods not listed' do
it 'returns false' do
expect(xmlrpc).to receive(:available_methods).and_return(%w[m1 m2])
expect(controller.xmlrpc_get_users_blogs_enabled?).to be false
end
end
context 'when wp.getUsersBlogs method listed' do
before { expect(xmlrpc).to receive(:available_methods).and_return(%w[wp.getUsersBlogs m2]) }
context 'when wp.getUsersBlogs method disabled' do
it 'returns false' do
stub_request(:post, xmlrpc.url).to_return(body: 'XML-RPC services are disabled on this site.')
expect(controller.xmlrpc_get_users_blogs_enabled?).to be false
end
end
context 'when wp.getUsersBlogs method enabled' do
it 'returns true' do
stub_request(:post, xmlrpc.url).to_return(body: 'Incorrect username or password.')
expect(controller.xmlrpc_get_users_blogs_enabled?).to be true
end
end
end
end
end
describe '#attacker' do
context 'when --password-attack provided' do
let(:cli_args) { "#{super()} --password-attack #{attack}" }
@@ -94,7 +146,7 @@ describe WPScan::Controller::PasswordAttack do
before do
expect(controller.target)
.to receive(:xmlrpc)
.and_return(WPScan::Model::XMLRPC.new("#{target_url}/xmlrpc.php"))
.and_return(WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php"))
end
context 'when single xmlrpc' do
@@ -119,73 +171,50 @@ describe WPScan::Controller::PasswordAttack do
end
context 'when automatic detection' do
before { expect(controller.target).to receive(:xmlrpc).and_return(xmlrpc) }
context 'when xmlrpc not found' do
let(:xmlrpc) { nil }
context 'when xmlrpc_get_users_blogs_enabled? is false' do
it 'returns the WpLogin' do
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
expect(controller.attacker.target).to be_a WPScan::Target
end
end
context 'when xmlrpc not enabled' do
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}/xmlrpc.php") }
it 'returns the WpLogin' do
expect(xmlrpc).to receive(:enabled?).and_return(false)
expect(controller).to receive(:xmlrpc_get_users_blogs_enabled?).and_return(false)
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
expect(controller.attacker.target).to be_a WPScan::Target
end
end
context 'when xmlrpc enabled' do
let(:xmlrpc) { WPScan::Model::XMLRPC.new("#{target_url}/xmlrpc.php") }
context 'when xmlrpc_get_users_blogs_enabled? is true' do
before do
expect(controller).to receive(:xmlrpc_get_users_blogs_enabled?).and_return(true)
before { expect(xmlrpc).to receive(:enabled?).and_return(true) }
expect(controller.target)
.to receive(:xmlrpc).and_return(WPScan::Model::XMLRPC.new("#{target_url}xmlrpc.php"))
end
context 'when wp.getUsersBlogs methods not available' do
it 'returns the WpLogin' do
expect(xmlrpc).to receive(:available_methods).and_return(%w[m1 m2])
context 'when WP version not found' do
it 'returns the XMLRPC' do
expect(controller.target).to receive(:wp_version).and_return(false)
expect(controller.attacker).to be_a WPScan::Finders::Passwords::WpLogin
expect(controller.attacker.target).to be_a WPScan::Target
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
end
end
context 'when wp.getUsersBlogs method evailable' do
before { expect(xmlrpc).to receive(:available_methods).and_return(%w[wp.getUsersBlogs m2]) }
context 'when WP version found' do
before { expect(controller.target).to receive(:wp_version).and_return(wp_version) }
context 'when WP version not found' do
it 'returns the XMLRPC' do
expect(controller.target).to receive(:wp_version).and_return(false)
context 'when WP < 4.4' do
let(:wp_version) { WPScan::Model::WpVersion.new('3.8.1') }
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
it 'returns the XMLRPCMulticall' do
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPCMulticall
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
end
end
context 'when WP version found' do
before { expect(controller.target).to receive(:wp_version).and_return(wp_version) }
context 'when WP >= 4.4' do
let(:wp_version) { WPScan::Model::WpVersion.new('4.4') }
context 'when WP < 4.4' do
let(:wp_version) { WPScan::Model::WpVersion.new('3.8.1') }
it 'returns the XMLRPCMulticall' do
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPCMulticall
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
end
end
context 'when WP >= 4.4' do
let(:wp_version) { WPScan::Model::WpVersion.new('4.4') }
it 'returns the XMLRPC' do
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
end
it 'returns the XMLRPC' do
expect(controller.attacker).to be_a WPScan::Finders::Passwords::XMLRPC
expect(controller.attacker.target).to be_a WPScan::Model::XMLRPC
end
end
end

View File

@@ -24,12 +24,10 @@ end
describe WPScan::Controller::WpVersion do
subject(:controller) { described_class.new }
let(:target_url) { 'http://ex.lo/' }
let(:parsed_options) { rspec_parsed_options(cli_args) }
let(:cli_args) { "--url #{target_url}" }
before do
WPScan::Browser.reset
described_class.parsed_options = parsed_options
WPScan::ParsedCli.options = rspec_parsed_options(cli_args)
end
describe '#cli_options' do
@@ -46,8 +44,8 @@ describe WPScan::Controller::WpVersion do
expect(controller.target).to receive(:wp_version)
.with(
hash_including(
mode: parsed_options[:wp_version_detection] || parsed_options[:detection_mode],
confidence_threshold: parsed_options[:wp_version_all] ? 0 : 100
mode: WPScan::ParsedCli.wp_version_detection || WPScan::ParsedCli.detection_mode,
confidence_threshold: WPScan::ParsedCli.wp_version_all ? 0 : 100
)
).and_return(stubbed)
end

View File

@@ -16,7 +16,7 @@ describe 'App::Views' do
let(:parsed_options) { { url: target_url, format: formatter.to_s.underscore.dasherize } }
before do
controller.class.parsed_options = parsed_options
WPScan::ParsedCli.options = parsed_options
# Resets the formatter to ensure the correct one is loaded
controller.class.class_variable_set(:@@formatter, nil)
end

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +0,0 @@
# Coments should be ignored
UA-1
UA-2

File diff suppressed because it is too large Load Diff

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,146 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2019 Atlex
# This file is distributed under the same license as the PACKAGE package.
# Atlex developer@atlex.ru, 2019.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Admin Atlex Cloud Plugin 1.0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-05 21:53+0400\n"
"PO-Revision-Date: 2019-03-20 21:53+0400\n"
"Last-Translator: ATLEX developer@atlex.ru\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#msgfmt ru_RU.pot --output-file=ru_RU.mo
msgid "Host"
msgstr "Адрес"
msgid "Cloud Adapter"
msgstr "Тип Адаптера"
msgid "Project"
msgstr "Проект"
msgid "User"
msgstr "Пользователь"
msgid "Password"
msgstr "Пароль"
msgid "Backup Container"
msgstr "Удаленный Контейнер"
msgid "Local Directory"
msgstr "Локальный Каталог"
msgid "Save"
msgstr "Сохранить"
msgid "Atlex Cloud Settings"
msgstr "Настройки Облака Атлекс"
msgid "Cloud Tools"
msgstr "Инструменты Облака"
msgid "Settings"
msgstr "Настройки"
msgid "Atlex Cloud"
msgstr "Атлекс Облако"
msgid "Atlex Settings"
msgstr "Атлекс Настройки"
msgid "Backup Batabase"
msgstr "Резервная Копия Базы Данных"
msgid "Archive Name"
msgstr "Имя Архива"
msgid "Backup"
msgstr "Резервная Копия"
msgid "Remote Archive"
msgstr "Удаленный Архив"
msgid "Restore"
msgstr "Восстановить"
msgid "Delete"
msgstr "Удалить"
msgid "Backup Wordpress Files"
msgstr "Резервная Копия Wordpress Файлов"
msgid "Wordpress Directory"
msgstr "Директория Wordpress"
msgid "Cloud Directory Name"
msgstr "Имя каталога в облаке"
msgid "Remote Directories Archive"
msgstr "Удаленный Архив Каталогов"
msgid "Download"
msgstr "Скачать"
msgid "You need configurate cloud setting for connection"
msgstr "Вам необходимо настроить параметры облака для подключения"
msgid "Loading"
msgstr "Загружается"
msgid "Do you want to delete sql archive from cloud?"
msgstr "Вы хотите удалить архив sql из облака?"
msgid "Do you want to restore database from sql archive?"
msgstr "Хотите восстановить базу данных из sql архива?"
msgid "Do you want to delete files archive from cloud?"
msgstr "Хотите удалить архив файлов из облака?"
msgid "File success downloaded to "
msgstr "Файл успешно загружен в "
msgid "Error on connection"
msgstr "Ошибка при подключении"
msgid "Successfully connected"
msgstr "Успешное подключение"
msgid "Use CDN for Mediafiles"
msgstr "Использовать CDN для Медиафайлов"
msgid "CDN Mediafiles Status"
msgstr "CDN Статус Медиафайлов"
msgid "Synchronization process"
msgstr "Процесс Синхронизации"
msgid "Cloud Public URL"
msgstr "URL-адрес public облака"
msgid "Synchronized"
msgstr "Синхронизирован"
msgid "Synchronization Off"
msgstr "Выключено"
msgid "Started Mediafiles Synchronization Process"
msgstr "Запущен процесс синхронизации медиафайлов"
msgid "Synchronize Again"
msgstr "Синхронизировать Повторно"

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

View File

@@ -0,0 +1,126 @@
# Copyright (C) 2019 Clust
# This file is distributed under the same license as the Clust Client Portal plugin.
msgid ""
msgstr ""
"Project-Id-Version: Clust Client Portal 1.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/clust-client-portal\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-03-19T22:16:02+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: clust-client-portal\n"
#. Plugin Name of the plugin
#: clust-client-portal.php:54
#: clust-client-portal.php:55
msgid "Clust Client Portal"
msgstr ""
#. Plugin URI of the plugin
msgid "https://www.clustdoc.com"
msgstr ""
#. Description of the plugin
msgid "Ads a media button to the Classic Wordpress Editor for inserting Clust iframe"
msgstr ""
#. Author of the plugin
msgid "Clust"
msgstr ""
#: clust-client-portal.php:71
msgid "Insert a Clust portal"
msgstr ""
#: clust-client-portal.php:72
msgid "Select a template to add to your post page"
msgstr ""
#: clust-client-portal.php:78
msgid "Can't find your form? Make sure it is active."
msgstr ""
#: clust-client-portal.php:80
msgid "Enter the URL of the page that will host this portal"
msgstr ""
#: clust-client-portal.php:83
msgid "Enter the height of your portal"
msgstr ""
#: clust-client-portal.php:86
msgid "Select the main color of your portal"
msgstr ""
#: clust-client-portal.php:89
msgid "Includes header"
msgstr ""
#: clust-client-portal.php:91
msgid "Includes logo"
msgstr ""
#: clust-client-portal.php:93
msgid "Insert"
msgstr ""
#: clust-client-portal.php:97
msgid "Insert Clust Portal"
msgstr ""
#: clust-client-portal.php:135
msgid "Error: API Token hasn't been set yet. Go to plugin's options page."
msgstr ""
#: clust-client-portal.php:139
#: clust-client-portal.php:143
msgid "Error: no options were found"
msgstr ""
#: options.php:77
msgid "Clust Client Portal - Options"
msgstr ""
#: options.php:88
msgid "Embed a Clust client portal on your website"
msgstr ""
#: options.php:89
msgid "Enter below your Clust API Key and validate. Once that's done, Go to your wordpress Page or Post to add you portal using the Clust Portal inserter button."
msgstr ""
#: options.php:92
msgid "Validate"
msgstr ""
#: options.php:95
msgid "Where can I find my key?"
msgstr ""
#: options.php:97
msgid "Use a test key"
msgstr ""
#: options.php:107
msgid "What is Clust?"
msgstr ""
#: options.php:109
msgid "Clust is the No 1 documents collection forr small businesses. Thousands of modern businesses around the world to collect, approve and share useful information with their clients"
msgstr ""
#: options.php:117
msgid "New to Clust? Get 20% off!"
msgstr ""
#: options.php:119
msgid "Register today and get a 20% discount on your Clust account forever."
msgstr ""
#: options.php:122
msgid "Signup and grab API key."
msgstr ""

View File

@@ -0,0 +1,8 @@
=== version 1.3.0 ===
Added support for additional currencies. Thanks to [kennyhunter16](https://wordpress.org/support/users/kennyhunter16/), the currency is now detected from the order that was placed.
=== version 1.2.0 ===
cj.com added some new required fields. This update brings the plugin into conformation with their documentation at https://developers.cj.com/docs/tracking-integration/advanced-integration
=== version 1.1.0 ===
Orders that originated from cj.com are now marked as such in the order notes
=== version 1.0.0 ===
Initial commit

View File

@@ -989,3 +989,20 @@ If above timestamp is not current time, this page is cached.</p> -->
<!-- Analytics by WP-Statistics v12.6.2 - https://wp-statistics.com/ -->
<!-- swift-performance-lite -->
<!--Cached with Swift Performance Lite-->
<!-- master-popups-lite -->
<!-- MPP:MasterPopups v1.0.2 -->
<!-- social-rocket -->
<!-- Begin Social Rocket v1.0.1 https://wpsocialrocket.com -->
<!-- open-wp-seo -->
<!-- Open WordPress SEO 1.0.0 -->

View File

@@ -0,0 +1,401 @@
# Copyright (C) 2019 ScriptsTown
# This file is distributed under the same license as the Contact Form Query plugin.
msgid ""
msgstr ""
"Project-Id-Version: Contact Form Query 1.0.2\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/contact-form-query\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-05-22T23:31:24+02:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.2.0\n"
"X-Domain: contact-form-query\n"
#. Plugin Name of the plugin
#: admin/inc/class-stcfq-admin-menu.php:10
#: admin/inc/setting/index.php:13
msgid "Contact Form Query"
msgstr ""
#. Description of the plugin
msgid "Add a contact form and receive messages directly to your WordPress admin panel with search and filter options. View latest messages received in dashboard."
msgstr ""
#. Author of the plugin
msgid "ScriptsTown"
msgstr ""
#. Author URI of the plugin
msgid "https://scriptstown.com/"
msgstr ""
#. translators: %d: Number of unanswered messages
#: admin/inc/class-stcfq-admin-menu.php:14
msgid "Contact <span class=\"awaiting-mod\">%d</span>"
msgstr ""
#: admin/inc/class-stcfq-admin-menu.php:16
msgid "Contact"
msgstr ""
#: admin/inc/class-stcfq-admin-menu.php:25
msgid "Messages"
msgstr ""
#: admin/inc/class-stcfq-admin-menu.php:28
#: admin/inc/class-stcfq-setting.php:7
msgid "Settings"
msgstr ""
#: admin/inc/class-stcfq-message.php:41
#: admin/inc/class-stcfq-message.php:97
msgid "Message not found."
msgstr ""
#: admin/inc/class-stcfq-message.php:58
msgid "Message deleted successfully."
msgstr ""
#: admin/inc/class-stcfq-message.php:123
msgid "Message status updated."
msgstr ""
#: admin/inc/class-stcfq-message.php:147
msgid "Contact Form Latest Messages"
msgstr ""
#: admin/inc/class-stcfq-setting.php:51
#: includes/class-stcfq-helper.php:17
msgid "Your Name"
msgstr ""
#: admin/inc/class-stcfq-setting.php:54
#: includes/class-stcfq-helper.php:25
msgid "Your Email"
msgstr ""
#: admin/inc/class-stcfq-setting.php:57
#: admin/inc/message/filter.php:17
#: admin/inc/message/filter.php:45
#: admin/inc/message/index.php:19
#: admin/inc/message/load.php:37
#: admin/inc/message/view.php:32
#: includes/class-stcfq-helper.php:33
msgid "Subject"
msgstr ""
#: admin/inc/class-stcfq-setting.php:60
#: admin/inc/message/filter.php:26
#: admin/inc/message/filter.php:48
#: admin/inc/message/index.php:20
#: admin/inc/message/load.php:40
#: admin/inc/message/view.php:24
#: admin/inc/message/view.php:36
#: includes/class-stcfq-helper.php:41
msgid "Message"
msgstr ""
#: admin/inc/class-stcfq-setting.php:66
msgid "The fields are invalid or not supported."
msgstr ""
#: admin/inc/class-stcfq-setting.php:72
msgid "Please enable at least one field."
msgstr ""
#: admin/inc/class-stcfq-setting.php:113
#: admin/inc/class-stcfq-setting.php:149
#: admin/inc/class-stcfq-setting.php:165
msgid "Setting saved."
msgstr ""
#: admin/inc/message/filter.php:5
msgid "Search & Filter Messages"
msgstr ""
#: admin/inc/message/filter.php:20
#: admin/inc/message/filter.php:46
#: admin/inc/message/index.php:21
#: admin/inc/message/load.php:43
#: admin/inc/message/view.php:40
msgid "Name"
msgstr ""
#: admin/inc/message/filter.php:23
#: admin/inc/message/filter.php:47
#: admin/inc/message/index.php:22
#: admin/inc/message/load.php:46
#: admin/inc/message/view.php:44
msgid "Email"
msgstr ""
#: admin/inc/message/filter.php:29
#: admin/inc/message/filter.php:49
#: admin/inc/message/index.php:23
#: admin/inc/message/load.php:49
#: admin/inc/message/view.php:48
msgid "Answered"
msgstr ""
#: admin/inc/message/filter.php:32
#: admin/inc/message/filter.php:50
#: admin/inc/message/view.php:52
#: admin/inc/message/view.php:93
msgid "Note"
msgstr ""
#: admin/inc/message/filter.php:62
msgid "Add more"
msgstr ""
#: admin/inc/message/filter.php:63
msgid "Apply filter"
msgstr ""
#: admin/inc/message/index.php:12
msgid "Contact Form Messages"
msgstr ""
#: admin/inc/message/index.php:18
#: admin/inc/message/load.php:34
msgid "S.No"
msgstr ""
#: admin/inc/message/index.php:24
#: admin/inc/message/view.php:56
msgid "Timestamp"
msgstr ""
#: admin/inc/message/index.php:25
#: admin/inc/message/load.php:55
msgid "Action"
msgstr ""
#: admin/inc/message/index.php:68
msgid "No more messages."
msgstr ""
#: admin/inc/message/latest.php:42
msgid "View all"
msgstr ""
#: admin/inc/message/load.php:50
#: admin/inc/message/view.php:49
#: admin/inc/setting/tabs/form-fields.php:50
#: admin/inc/setting/tabs/form-fields.php:76
#: admin/inc/setting/tabs/form-fields.php:111
msgid "Yes"
msgstr ""
#: admin/inc/message/load.php:50
#: admin/inc/message/view.php:49
#: admin/inc/setting/tabs/form-fields.php:55
#: admin/inc/setting/tabs/form-fields.php:81
#: admin/inc/setting/tabs/form-fields.php:116
msgid "No"
msgstr ""
#: admin/inc/message/load.php:52
msgid "Date"
msgstr ""
#: admin/inc/message/load.php:59
msgid "Are you sure to delete this message?"
msgstr ""
#: admin/inc/message/view.php:74
#: admin/inc/message/view.php:78
#: admin/inc/message/view.php:82
msgid "Is Answered?"
msgstr ""
#: admin/inc/message/view.php:85
msgid "Mark this message as \"Answered\"."
msgstr ""
#: admin/inc/message/view.php:98
msgid "Enter any extra note."
msgstr ""
#: admin/inc/message/view.php:106
#: admin/inc/setting/tabs/captcha.php:106
#: admin/inc/setting/tabs/form-fields.php:182
#: admin/inc/setting/tabs/uninstall.php:39
msgid "Save Changes"
msgstr ""
#: admin/inc/setting/index.php:7
#: admin/inc/setting/tabs/form-fields.php:30
msgid "Form Fields"
msgstr ""
#: admin/inc/setting/index.php:8
#: admin/inc/setting/tabs/captcha.php:25
msgid "Captcha"
msgstr ""
#: admin/inc/setting/index.php:9
msgid "Uninstall"
msgstr ""
#: admin/inc/setting/tabs/captcha.php:29
msgid "Select Captcha"
msgstr ""
#: admin/inc/setting/tabs/captcha.php:51
msgid "Site Key"
msgstr ""
#: admin/inc/setting/tabs/captcha.php:56
msgid "Enter Google reCAPTCHA v2 Site Key."
msgstr ""
#: admin/inc/setting/tabs/captcha.php:57
#: admin/inc/setting/tabs/captcha.php:70
msgid "Click Here"
msgstr ""
#: admin/inc/setting/tabs/captcha.php:64
msgid "Secret Key"
msgstr ""
#: admin/inc/setting/tabs/captcha.php:69
msgid "Enter Google reCAPTCHA v2 Secret Key."
msgstr ""
#: admin/inc/setting/tabs/captcha.php:77
msgid "Theme"
msgstr ""
#: admin/inc/setting/tabs/captcha.php:82
#: admin/inc/setting/tabs/captcha.php:99
msgid "Select Google reCAPTCHA Version 2 Theme."
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:20
msgid "Contact Form Shortcode"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:24
msgid "Use above shortcode in any page or post to display the contact form."
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:37
msgid "field"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:45
#: admin/inc/setting/tabs/form-fields.php:106
msgid "Enable"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:62
msgid "Form Label"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:71
msgid "Required Field"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:88
#: admin/inc/setting/tabs/form-fields.php:132
#: admin/inc/setting/tabs/form-fields.php:167
msgid "Additional Class (use space for multiple classes)"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:101
msgid "Consent Field"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:123
msgid "Field Text"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:141
msgid "Validation message (if unchecked)"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:152
msgid "Submit Button"
msgstr ""
#: admin/inc/setting/tabs/form-fields.php:158
msgid "Button Text"
msgstr ""
#: admin/inc/setting/tabs/uninstall.php:15
msgid "This will delete all the data when you delete the plugin using WordPress \"Plugins\" menu if you enable this setting."
msgstr ""
#: admin/inc/setting/tabs/uninstall.php:22
msgid "Data Deletion"
msgstr ""
#: admin/inc/setting/tabs/uninstall.php:26
#: admin/inc/setting/tabs/uninstall.php:30
msgid "Delete all data on plugin's deletion"
msgstr ""
#: includes/class-stcfq-helper.php:104
msgid "I consent to having this website store my submitted information so they can respond to my inquiry."
msgstr ""
#: includes/class-stcfq-helper.php:108
msgid "Please confirm."
msgstr ""
#: includes/class-stcfq-helper.php:121
msgid "Send Your Message"
msgstr ""
#: includes/class-stcfq-helper.php:129
msgid "None"
msgstr ""
#: includes/class-stcfq-helper.php:130
msgid "Google reCAPTCHA Version 2"
msgstr ""
#: includes/class-stcfq-helper.php:136
msgid "Light"
msgstr ""
#: includes/class-stcfq-helper.php:137
msgid "Dark"
msgstr ""
#: public/inc/class-stcfq-shortcode.php:16
msgid "Error occurred while sending your message. Please try again after some time."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:45
#: public/inc/class-stcfq-shortcode.php:48
msgid "<strong>ERROR:</strong> Please confirm you are not a robot."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:82
msgid "Please provide your name."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:91
msgid "Please provide your email."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:93
msgid "Please provide a valid email."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:102
msgid "Please specify subject."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:111
msgid "Please provide your message."
msgstr ""
#: public/inc/class-stcfq-shortcode.php:146
msgid "Thank you for contacting us. We will reply to your email as soon as possible."
msgstr ""

View File

@@ -0,0 +1,137 @@
# Copyright (C) 2019 1&1 IONOS
# This file is distributed under the GPLv2 or later.
msgid ""
msgstr ""
"Project-Id-Version: CoSy Address Book 1.0.0\n"
"Report-Msgid-Bugs-To: "
"https://wordpress.org/support/plugin/cosy-address-book\n"
"POT-Creation-Date: 2019-03-11 17:02:56+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"X-Generator: grunt-wp-i18n 0.5.4\n"
#: cosy-address-book/cosy-address-book.php:87
msgid "cosy_address_book_admin_page_title"
msgstr ""
#: cosy-address-book/cosy-address-book.php:88
msgid "cosy_address_book_menu_title"
msgstr ""
#: cosy-address-book/inc/views/description.php:2
msgid "cosy_address_book_invitation"
msgstr ""
#: cosy-address-book/inc/views/description.php:4
#: cosy-address-book/inc/views/description.php:22
msgid "cosy_address_book_url_text"
msgstr ""
#: cosy-address-book/inc/views/description.php:7
#: cosy-address-book/inc/views/settings.php:2
msgid "cosy_address_book_connection_header"
msgstr ""
#: cosy-address-book/inc/views/description.php:8
#: cosy-address-book/inc/views/plugins/settings.php:18
msgid "cosy_address_book_generic_error"
msgstr ""
#: cosy-address-book/inc/views/description.php:11
msgid "cosy_address_book_guidance_summary"
msgstr ""
#: cosy-address-book/inc/views/description.php:15
msgid "cosy_address_book_guidance_step_one_label"
msgstr ""
#: cosy-address-book/inc/views/description.php:19
msgid "cosy_address_book_guidance_step_one_content"
msgstr ""
#: cosy-address-book/inc/views/description.php:29
msgid "cosy_address_book_guidance_step_two_label"
msgstr ""
#: cosy-address-book/inc/views/description.php:33
msgid "cosy_address_book_guidance_step_two_content"
msgstr ""
#: cosy-address-book/inc/views/description.php:37
msgid "cosy_address_book_activation_form_label"
msgstr ""
#: cosy-address-book/inc/views/description.php:45
#: cosy-address-book/inc/views/plugins/settings.php:55
msgid "cosy_address_book_form_button_text"
msgstr ""
#: cosy-address-book/inc/views/main.php:3
msgid "cosy_address_book_menu_page_headline"
msgstr ""
#: cosy-address-book/inc/views/plugins/description.php:2
msgid "cosy_address_book_plugin_description_header"
msgstr ""
#: cosy-address-book/inc/views/plugins/description.php:3
msgid "cosy_address_book_plugin_activation_hint"
msgstr ""
#: cosy-address-book/inc/views/plugins/description.php:11
msgid "cosy_address_book_web_form_insertion_hint"
msgstr ""
#: cosy-address-book/inc/views/plugins/settings.php:15
msgid "cosy_address_book_mapping_description"
msgstr ""
#: cosy-address-book/inc/views/plugins/settings.php:22
msgid "cosy_address_book_mapping_header_api_fields"
msgstr ""
#: cosy-address-book/inc/views/plugins/settings.php:25
msgid "cosy_address_book_mapping_header_form_fields"
msgstr ""
#: cosy-address-book/inc/views/plugins/settings.php:50
msgid "cosy_address_book_consent_field_constraint_hint"
msgstr ""
#: cosy-address-book/inc/views/plugins/settings.php:60
msgid "cosy_address_book_synchronisation_ready_hint"
msgstr ""
#: cosy-address-book/inc/views/plugins/settings.php:65
msgid "cosy_address_book_gdpr_hint_content"
msgstr ""
#: cosy-address-book/inc/views/settings.php:3
msgid "cosy_address_book_connection_confirmation"
msgstr ""
#: cosy-address-book/inc/views/settings.php:6
msgid "cosy_address_book_deconnection_url_text"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "CoSy Address Book"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://www.ionos.com"
msgstr ""
#. Description of the plugin/theme
msgid ""
"Sends visitor contact data generated by contact forms embedded in WordPress "
"websites to CoSy Address Book"
msgstr ""
#. Author of the plugin/theme
msgid "1&1 IONOS"
msgstr ""

View File

@@ -0,0 +1,9 @@
# Changelog
## 1.0.1
- Typo in plugin name
## 1.0.0
- Initial

View File

@@ -0,0 +1,5 @@
# Changelog
## 1.0.0
- Initial

View File

@@ -0,0 +1,5 @@
Version 1.0.1 - Monday, 30th May 2019
- Fix: Authentication with new AffiliateWP setup where visits are Zero.
Version 1.0.0 - Monday, 20th May 2019
- Initial Release

View File

@@ -0,0 +1,163 @@
msgid ""
msgstr ""
"Project-Id-Version: CryptoPanel Payment Gateway 1.0\n"
"Report-Msgid-Bugs-To: https://www.cryptopanel.de\n"
"POT-Creation-Date: 2019-04-09 17:18+0200\n"
"PO-Revision-Date: 2019-04-09 17:18+0200\n"
"Last-Translator: \n"
"Language-Team: EMAIL@ADDRESS\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.7.1\n"
"X-Poedit-KeywordsList: __;_e\n"
"X-Poedit-Basepath: ..\n"
"X-Poedit-SourceCharset: UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-SearchPath-0: .\n"
#: cryptopanel-payment-gateway.php:66 cryptopanel-payment-gateway.php:116
msgid "CryptoPanel Payment Gateway"
msgstr "CryptoPanel Payment Gateway"
#: cryptopanel-payment-gateway.php:67
msgid "Enables payments with the CryptoGate Gateway."
msgstr "Ermöglicht Zahlungen mit dem CryptoGate Gateway."
#: cryptopanel-payment-gateway.php:107
msgid "Enable/Disable"
msgstr "Aktivieren/Deaktivieren"
#: cryptopanel-payment-gateway.php:109
msgid "Activate CryptoPanel Payment Gateway"
msgstr "Aktiviere CryptoPanel Payment Gateway"
#: cryptopanel-payment-gateway.php:113
msgid "Title"
msgstr "Titel"
#: cryptopanel-payment-gateway.php:115
msgid "This controls the title which the user sees during checkout."
msgstr "Dieser Titel wird dem Kunden beim Checkout angezeigt."
#: cryptopanel-payment-gateway.php:120
msgid "Order Status"
msgstr "Bestellstatus"
#: cryptopanel-payment-gateway.php:123
msgid "Status after checkout."
msgstr "Status nach dem Checkout."
#: cryptopanel-payment-gateway.php:129
msgid "Description"
msgstr "Beschreibung"
#: cryptopanel-payment-gateway.php:131
msgid "The description which the user sees during checkout."
msgstr "Beschreibung, die dem Kunden beim Checkout angezeigt wird."
#: cryptopanel-payment-gateway.php:132
msgid "Pay Securely with Bitcoin, Bitcoin Cash or Litecoin."
msgstr ""
"Jetzt sicher und verschlüsselt mit Bitcoin, Bitcoin Cash, Dash oder Litecoin "
"zahlen."
#: cryptopanel-payment-gateway.php:136
msgid "Note"
msgstr "Hinweis"
#: cryptopanel-payment-gateway.php:138
msgid ""
"A Note, which will be displayed during customers checkout and inside the "
"order email."
msgstr ""
"Hinweis, der dem Kunden beim Checkout und in der E-Mail Bestätigung "
"angezeigt wird."
#: cryptopanel-payment-gateway.php:143
msgid "Error"
msgstr "Fehler"
#: cryptopanel-payment-gateway.php:145
msgid "An error has occured."
msgstr "Ein Fehler ist aufgetreten."
#: cryptopanel-payment-gateway.php:146
msgid ""
"An error has occured. Please try again. If the problem persists please "
"contact us."
msgstr ""
"Ein Fehler ist aufgetreten. Bitte versuche es erneut. Falls der Fehler "
"weiterhin besteht kontaktiere uns."
#: cryptopanel-payment-gateway.php:150
msgid "CryptoGate URL"
msgstr "CryptoGate URL"
#: cryptopanel-payment-gateway.php:152
msgid "Your CryptoGate URL"
msgstr "Deine CryptoGate URL"
#: cryptopanel-payment-gateway.php:157
msgid "Merchant Api Token"
msgstr "Merchant Api Token"
#: cryptopanel-payment-gateway.php:159
msgid "Your Merchant Api Token"
msgstr "Dein Merchant Api Token"
#: cryptopanel-payment-gateway.php:164
msgid "Transmit customer order data"
msgstr "Kundenbestelldaten übertragen"
#: cryptopanel-payment-gateway.php:166
msgid ""
"Display customer order data at <a target=\"_blank\" href=\"https://member."
"cryptopanel.de/member/transaction\">CryptoPanel -> CryptoGate > "
"Transactions</a>"
msgstr ""
"Kundenbestelldaten unter <a target=\"_blank\" href=\"https://member."
"cryptopanel.de/member/transaction\">CryptoPanel -> CryptoGate > "
"Transaktionen</a> anzeigen"
#: cryptopanel-payment-gateway.php:167
msgid ""
"Under certain cirumstances you need an Order data processing contract (=ADV) "
"from your service provider. In case you are using CryptoPanel, the ADV "
"contract can be requested <a target=\"_blank\" href =\"https://www."
"cryptopanel.de/\">here</a>"
msgstr ""
"Benötigt unter Umständen einen Auftragsdatenverarbeitungsvertrag (=ADV) von "
"Deinem Dienstleister. Solltest Du das CryptoPanel nutzen, kannst Du den ADV "
"<a target=\"_blank\" href =\"https://www.cryptopanel.de/\">hier</a> "
"abschließen"
#: cryptopanel-payment-gateway.php:175
msgid "Currencies"
msgstr "Währungen"
#: cryptopanel-payment-gateway.php:177
msgid "Select enabled currencies"
msgstr "Aktive Währungen wählen"
#: cryptopanel-payment-gateway.php:198
msgid "Checkout with crypto payment."
msgstr "Mit Kryptowährung bezahlen"
#: lib/CryptoGatePaymentService.php:48
#, php-format
msgid "Your order at %s"
msgstr "Ihr Einkauf bei %s"
#~ msgid "ApiUrl"
#~ msgstr "ApiUrl"
#~ msgid "ApiUrl."
#~ msgstr "ApiUrl."
#~ msgid "ApiKey"
#~ msgstr "ApiKey"
#~ msgid "Ermöglicht Zahlungen mit dem CryptoGate Gateway."
#~ msgstr "Enables payments with the CryptoGate Gateway."

View File

@@ -0,0 +1,2 @@
2019-04-22 - version 1.0.0
* Ready

View File

@@ -0,0 +1,138 @@
# Copyright (C) 2019 JR Tashjian
# This file is distributed under the same license as the CurateWP - Nested Posts plugin.
msgid ""
msgstr ""
"Project-Id-Version: CurateWP - Nested Posts 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/curatewp-nested-posts\n"
"Last-Translator: JR Tashjian <jr@curatewp.com>\n"
"Language-Team: CurateWP <info@curatewp.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-04-09T01:17:50+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: cwpnp\n"
#. Plugin Name of the plugin
msgid "CurateWP - Nested Posts"
msgstr ""
#. Plugin URI of the plugin
msgid "https://curatewp.com/"
msgstr ""
#. Description of the plugin
msgid "Display child posts within the current post, in a widget, and in your theme."
msgstr ""
#. Author of the plugin
msgid "JR Tashjian"
msgstr ""
#. Author URI of the plugin
msgid "https://jrtashjian.com"
msgstr ""
#. Translators: this message outputs a minimum PHP requirement.
#: curatewp-nested-posts.php:53
msgid "Your version of PHP (%s) is below the minimum version of PHP required by CurateWP - Nested Posts (5.6). Please contact your host and request that your version be upgraded to 5.6 or later."
msgstr ""
#: includes/Widget.php:31
msgid "A section of nested posts."
msgstr ""
#: includes/Widget.php:33
msgid "Nested Posts (CurateWP)"
msgstr ""
#: includes/Widget.php:125
msgid "Title:"
msgstr ""
#: includes/Widget.php:134
msgid "Description:"
msgstr ""
#: includes/Widget.php:142
msgid "Number of posts to show:"
msgstr ""
#: includes/Widget.php:153
#: assets/src/block.js:72
msgid "Order by"
msgstr ""
#. translators: label for ordering posts by date in descending order.
#: includes/Widget.php:160
#: assets/src/block.js:77
msgid "Newest to Oldest"
msgstr ""
#. translators: label for ordering posts by date in ascending order.
#: includes/Widget.php:163
#: assets/src/block.js:82
msgid "Oldest to Newest"
msgstr ""
#. translators: label for ordering posts by title in ascending order.
#: includes/Widget.php:166
#: assets/src/block.js:87
msgid "A → Z"
msgstr ""
#. translators: label for ordering posts by title in descending order.
#: includes/Widget.php:169
#: assets/src/block.js:92
msgid "Z → A"
msgstr ""
#: includes/Widget.php:172
msgid "Random"
msgstr ""
#: includes/Core.php:182
msgid "CurateWP"
msgstr ""
#: assets/src/block.js:15
msgid "Nested Posts"
msgstr ""
#: assets/src/block.js:18
msgid "Display a list of posts which includes descendants of the current page."
msgstr ""
#: assets/src/block.js:20
msgid "Get CurateWP"
msgstr ""
#: assets/src/block.js:29
msgid "nested"
msgstr ""
#: assets/src/block.js:30
msgid "engagement"
msgstr ""
#: assets/src/block.js:31
msgid "similar"
msgstr ""
#: assets/src/block.js:66
msgid "Number of posts to show"
msgstr ""
#. translators: label for ordering posts by menu_order.
#: assets/src/block.js:97
msgid "Menu Order"
msgstr ""
#: assets/src/block.js:118
msgid "Title for section"
msgstr ""
#: assets/src/block.js:129
msgid "Description for section..."
msgstr ""

View File

@@ -0,0 +1,108 @@
msgid ""
msgstr ""
"Project-Id-Version: CurateWP - Related Posts 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/curatewp-related-posts\n"
"Last-Translator: JR Tashjian <jr@curatewp.com>\n"
"Language-Team: CurateWP <info@curatewp.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2019-04-05T06:39:43+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Language: \n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: cwprp\n"
#. Plugin Name of the plugin
msgid "CurateWP - Related Posts"
msgstr ""
#. Plugin URI of the plugin
msgid "https://curatewp.com/"
msgstr ""
#. Description of the plugin
msgid "Display related posts within the current post, in a widget, and in your theme."
msgstr ""
#. Author of the plugin
msgid "JR Tashjian"
msgstr ""
#. Author URI of the plugin
msgid "https://jrtashjian.com"
msgstr ""
#: includes/Widget.php:31
msgid "A section of related posts."
msgstr ""
#: includes/Widget.php:33
msgid "Related Posts (CurateWP)"
msgstr ""
#: includes/Widget.php:139
msgid "Title:"
msgstr ""
#: includes/Widget.php:148
msgid "Description:"
msgstr ""
#: includes/Widget.php:156
msgid "Number of posts to show:"
msgstr ""
#: includes/Widget.php:167
#: assets/src/block.js:80
msgid "Order by"
msgstr ""
#. translators: label for ordering posts by date in descending order.
#: includes/Widget.php:174
#: assets/src/block.js:85
msgid "Newest to Oldest"
msgstr ""
#. translators: label for ordering posts by date in ascending order.
#: includes/Widget.php:177
#: assets/src/block.js:90
msgid "Oldest to Newest"
msgstr ""
#. translators: label for ordering posts by title in ascending order.
#: includes/Widget.php:180
#: assets/src/block.js:95
msgid "A → Z"
msgstr ""
#. translators: label for ordering posts by title in descending order.
#: includes/Widget.php:183
#: assets/src/block.js:100
msgid "Z → A"
msgstr ""
#. translators: label for randomly ordering posts.
#: includes/Widget.php:186
#: assets/src/block.js:105
msgid "Random"
msgstr ""
#: includes/Widget.php:198
#: assets/src/block.js:120
msgid "In Category"
msgstr ""
#: includes/Widget.php:208
#: assets/src/block.js:126
msgid "In Tag"
msgstr ""
#: includes/Core.php:184
msgid "CurateWP"
msgstr ""
#. Translators: this message outputs a minimum PHP requirement.
#: curatewp-related-posts.php:53
msgid "Your version of PHP (%s) is below the minimum version of PHP required by CurateWP - Related Posts (5.6). Please contact your host and request that your version be upgraded to 5.6 or later."
msgstr ""

View File

@@ -0,0 +1,141 @@
msgid ""
msgstr ""
"Project-Id-Version: Daily Snapshot for WooCommerce Admin 1.0.0\n"
"POT-Creation-Date: 2019-06-05 18:53+0530\n"
"PO-Revision-Date: 2019-06-05 18:53+0530\n"
"Last-Translator: \n"
"Language-Team: MakeWebBetter <webmaster@makewebbetter.com>\n"
"Language: English\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.4\n"
"X-Poedit-KeywordsList: __;esc_html_e\n"
"X-Poedit-Basepath: \n"
"Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
#: daily-snapshot-for-woocommerce-admin.php:34
#, php-format
msgid ""
"The Daily Snapshots for WooCommerce Admin feature plugin requires <a href="
"\"%s\">WooCommerce Admin</a> to be installed and active."
msgstr ""
#: daily-snapshot-for-woocommerce-admin.php:78
msgid "Settings"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:32
msgid "Daily Snapshot"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:53
msgid "Automated Reports"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:58
msgid "Enable/Disable"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:62
msgid "Enable Daily Snapshot"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:65
msgid "Recipients"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:67
msgid "Comma seperated email addresses, reports are sent to."
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:68
msgid "Comma seperated emails to send reports to."
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:212
#, php-format
msgid "Daily summary of %s"
msgstr ""
#: includes/class-mwb-dss-wc-admin.php:214
msgid "Store Admin"
msgstr ""
#: templates/emails/snap-two-stacks.php:27
msgid "Gross Revenue"
msgstr ""
#: templates/emails/snap-two-stacks.php:65
msgid "Net Revenue"
msgstr ""
#: templates/emails/snap-two-stacks.php:94
msgid "Taxes|Shipping"
msgstr ""
#: templates/emails/snap-two-stacks.php:112
msgid "Taxes"
msgstr ""
#: templates/emails/snap-two-stacks.php:139
msgid "Shipping"
msgstr ""
#: templates/emails/snap-two-stacks.php:181
msgid "Order"
msgstr ""
#: templates/emails/snap-two-stacks.php:204
msgid "Avg Orders Value"
msgstr ""
#: templates/emails/snap-two-stacks.php:232
msgid "Product Sold"
msgstr ""
#: templates/emails/snap-two-stacks.php:265
msgid "Items"
msgstr ""
#: templates/emails/snap-two-stacks.php:288
msgid "Avg items/order"
msgstr ""
#: templates/emails/snap-two-stacks.php:297
msgid "N/A"
msgstr ""
#: templates/emails/snap-two-stacks.php:324
msgid "Best Product"
msgstr ""
#: templates/emails/snap-two-stacks.php:361
msgid "Coupons"
msgstr ""
#: templates/emails/snap-two-stacks.php:384
msgid "Coupons Value"
msgstr ""
#: templates/emails/snap-two-stacks.php:417
msgid "Refunds"
msgstr ""
#: templates/emails/snap-two-stacks.php:440
msgid "Refunded Value"
msgstr ""
#: templates/emails/snap-two-stacks.php:482
msgid "New/Returning Customer"
msgstr ""
#: templates/emails/snap-two-stacks.php:493
msgid "Number of returning customer"
msgstr ""
#: templates/emails/snap-two-stacks.php:507
msgid "Number of new customer"
msgstr ""

View File

@@ -0,0 +1,2 @@
Version 1.0.0
- Initial Release

View File

@@ -0,0 +1,123 @@
# Copyright (C) 2019 WebEmpire
# This file is distributed under the GPL version 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
msgid ""
msgstr ""
"Project-Id-Version: Design Sidebar Using Page Builder 1.0.0\n"
"Report-Msgid-Bugs-To: "
"https://wordpress.org/support/plugin/design-sidebar-with-builder\n"
"POT-Creation-Date: 2019-04-27 19:05:24+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Country: United States\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: "
"__;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;_nx_noop:1,2,3c;esc_"
"attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;esc_html_x:1,2c;\n"
"X-Poedit-Basepath: ../\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-Bookmarks: \n"
"X-Textdomain-Support: yes\n"
"X-Generator: grunt-wp-i18n 1.0.3\n"
#: classes/class-sidebar-builder-cpt.php:59
msgid "Search Sidebar"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:60
msgid "Sidebar Page"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:61
msgid "Edit Sidebar"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:62
msgid "View Sidebar"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:63
msgid "Add New"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:64
msgid "Update Sidebar"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:65
msgid "Add New Sidebar"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:66
msgid "New Sidebar"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:103
#: classes/class-sidebar-builder-cpt.php:104
msgid "Sidebar Builder"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:161
msgid "Page Title"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:162
msgid "Actions"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:163
msgid "Date"
msgstr ""
#: classes/class-template-library-widget.php:60
msgid "Sidebar Template Library"
msgstr ""
#: classes/class-template-library-widget.php:121
msgid "No templates to show."
msgstr ""
#: classes/class-template-library-widget.php:127
msgid "Title"
msgstr ""
#: classes/class-template-library-widget.php:132
msgid "Choose Template"
msgstr ""
#: classes/class-template-library-widget.php:134
msgid "Select"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Design Sidebar Using Page Builder"
msgstr ""
#. Author URI of the plugin/theme
msgid "#"
msgstr ""
#. Description of the plugin/theme
msgid ""
"The plugin is useful to edit and design the sidebar of your site without "
"sacrificing your favorite page builder."
msgstr ""
#. Author of the plugin/theme
msgid "WebEmpire"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:57
msgctxt "flow general name"
msgid "Sidebar Builder"
msgstr ""
#: classes/class-sidebar-builder-cpt.php:58
msgctxt "flow singular name"
msgid "Sidebar"
msgstr ""

View File

@@ -0,0 +1,742 @@
# Copyright (C) 2019 MK-Scripts
# This file is distributed under the GNU General Public License v3 or later.
msgid ""
msgstr ""
"Project-Id-Version: Download After Email v1.3\n"
"Report-Msgid-Bugs-To: MK-Scripts <mk-scripts@outlook.com>\n"
"POT-Creation-Date: 2019-04-14 01:11+0100\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
"X-Generator: grunt-wp-i18n1.0.2\n"
#: dae.php:48
msgid ""
"\"Download after Email\" "
"is using the same name "
"for a variable, function "
"or a class as another "
"plugin and may not "
"function as expected. "
msgstr ""
#: dae.php:256
#: includes/functions.php:137
msgid "Select File"
msgstr ""
#: dae.php:257
msgid "Select"
msgstr ""
#: dae.php:258
#: includes/functions.php:107
msgid "No image selected"
msgstr ""
#: dae.php:259
#: includes/functions.php:128
msgid "No file selected"
msgstr ""
#: dae.php:260
msgid ""
"Are you sure you want to "
"remove this subscriber, "
"including the attached "
"data of the "
"downloadlinks?"
msgstr ""
#: includes/admin-menu.php:15
#: includes/admin-menu.php:29
msgid "Settings saved."
msgstr ""
#: includes/admin-menu.php:48
msgid "Customize Messages"
msgstr ""
#: includes/admin-menu.php:49
#: includes/admin-menu.php:439
msgid "Messages"
msgstr ""
#: includes/admin-menu.php:57
#: includes/admin-menu.php:58
msgid "Subscribers"
msgstr ""
#: includes/admin-menu.php:66
#: includes/admin-menu.php:67
msgid "Options"
msgstr ""
#: includes/admin-menu.php:92
msgid "Submit Messages"
msgstr ""
#: includes/admin-menu.php:96
msgid "Unvalid Input"
msgstr ""
#: includes/admin-menu.php:98
#: includes/shortcodes.php:328
msgid ""
"Please make sure all "
"fields are filled in "
"correctly."
msgstr ""
#: includes/admin-menu.php:99
#: includes/admin-menu.php:106
#: includes/admin-menu.php:113
#: includes/admin-menu.php:126
msgid ""
"Saving while left empty, "
"the default value is "
"been filled in."
msgstr ""
#: includes/admin-menu.php:103
msgid "Email Exists"
msgstr ""
#: includes/admin-menu.php:105
#: includes/shortcodes.php:383
msgid ""
"To this email address an "
"email with the download "
"link has already been "
"sent."
msgstr ""
#: includes/admin-menu.php:110
msgid "Email Success"
msgstr ""
#: includes/admin-menu.php:112
#: includes/shortcodes.php:491
msgid ""
"An email has been sent "
"with the download link."
msgstr ""
#: includes/admin-menu.php:119
msgid "Email Messages"
msgstr ""
#: includes/admin-menu.php:123
msgid "Unvalid Link"
msgstr ""
#: includes/admin-menu.php:125
msgid ""
"This link already is "
"used and is now "
"unavailable."
msgstr ""
#: includes/admin-menu.php:130
msgid "From Email"
msgstr ""
#: includes/admin-menu.php:134
msgid "From Name"
msgstr ""
#: includes/admin-menu.php:138
msgid "Email Subject"
msgstr ""
#: includes/admin-menu.php:145
msgid ""
"You can use the "
"following tags in the "
"(html) email content "
"below:"
msgstr ""
#: includes/admin-menu.php:196
msgid "Search results for:"
msgstr ""
#: includes/admin-menu.php:202
#: includes/admin-menu.php:229
#: includes/admin-menu.php:245
msgid "ID"
msgstr ""
#: includes/admin-menu.php:203
#: includes/admin-menu.php:230
#: includes/post-types.php:573
msgid "Date"
msgstr ""
#: includes/admin-menu.php:212
#: includes/admin-menu.php:239
msgid "Downloadlinks"
msgstr ""
#: includes/admin-menu.php:249
msgid "File"
msgstr ""
#: includes/admin-menu.php:253
msgid "Created"
msgstr ""
#: includes/admin-menu.php:257
msgid "IP (created)"
msgstr ""
#: includes/admin-menu.php:261
msgid "Used"
msgstr ""
#: includes/admin-menu.php:262
#: includes/admin-menu.php:266
msgid "not used"
msgstr ""
#: includes/admin-menu.php:265
msgid "IP (used)"
msgstr ""
#: includes/admin-menu.php:282
msgid "of"
msgstr ""
#: includes/admin-menu.php:298
msgid "Subscribers Log"
msgstr ""
#: includes/admin-menu.php:301
msgid "Search"
msgstr ""
#: includes/admin-menu.php:394
msgid "Premium Features"
msgstr ""
#: includes/admin-menu.php:395
msgid ""
"We are working on an "
"extension to upgrade "
"this plugin to the "
"premium version with the "
"following features:"
msgstr ""
#: includes/admin-menu.php:399
msgid "Form Fields"
msgstr ""
#: includes/admin-menu.php:400
msgid ""
"Create and manage your "
"own form fields."
msgstr ""
#: includes/admin-menu.php:403
msgid "Export CSV"
msgstr ""
#: includes/admin-menu.php:404
msgid ""
"Export subscriber data "
"to a CSV-file and use it "
"for email marketing, "
"newsletters etc."
msgstr ""
#: includes/admin-menu.php:407
msgid ""
"Integration Mailchimp"
msgstr ""
#: includes/admin-menu.php:408
msgid ""
"Integration with "
"Mailchimp. It "
"automatically saves "
"subscribers and their "
"data to your Mailchimp "
"list. "
msgstr ""
#: includes/admin-menu.php:434
msgid "Deactivation"
msgstr ""
#: includes/admin-menu.php:435
msgid ""
"The following data will "
"be deleted on "
"deactivation:"
msgstr ""
#: includes/admin-menu.php:443
msgid ""
"Subscribers + "
"Downloadlinks"
msgstr ""
#: includes/download.php:19
msgid ""
"This link has already "
"been used and is now "
"unavailable."
msgstr ""
#: includes/download.php:34
msgid ""
"A problem occurred. "
"Please try again or feel "
"free to contact us."
msgstr ""
#: includes/post-types.php:11
msgctxt ""
"post type general name"
msgid "Downloads"
msgstr ""
#: includes/post-types.php:12
msgctxt ""
"post type singular name"
msgid "Download"
msgstr ""
#: includes/post-types.php:13
msgctxt "download"
msgid "Add New"
msgstr ""
#: includes/post-types.php:14
msgid "Add New Download"
msgstr ""
#: includes/post-types.php:15
msgid "Edit Download"
msgstr ""
#: includes/post-types.php:16
msgid "New Download"
msgstr ""
#: includes/post-types.php:17
msgid "View Download"
msgstr ""
#: includes/post-types.php:18
msgid "View Downloads"
msgstr ""
#: includes/post-types.php:19
msgid "Search Downloads"
msgstr ""
#: includes/post-types.php:20
msgid "No downloads found."
msgstr ""
#: includes/post-types.php:21
msgid ""
"No downloads found in "
"Trash."
msgstr ""
#: includes/post-types.php:23
msgid "All Downloads"
msgstr ""
#: includes/post-types.php:24
msgid "Download Archives"
msgstr ""
#: includes/post-types.php:25
msgid "Download Attributes"
msgstr ""
#: includes/post-types.php:26
msgid ""
"Insert into download"
msgstr ""
#: includes/post-types.php:27
msgid ""
"Uploaded to this download"
msgstr ""
#: includes/post-types.php:28
msgctxt "download"
msgid "Featured Image"
msgstr ""
#: includes/post-types.php:29
msgctxt "download"
msgid "Set featured image"
msgstr ""
#: includes/post-types.php:30
msgctxt "download"
msgid ""
"Remove featured image"
msgstr ""
#: includes/post-types.php:31
msgctxt "download"
msgid ""
"Use as featured image"
msgstr ""
#: includes/post-types.php:32
msgid ""
"Filter downloads list"
msgstr ""
#: includes/post-types.php:33
msgid ""
"Downloads list navigation"
msgstr ""
#: includes/post-types.php:34
msgid "Downloads list"
msgstr ""
#: includes/post-types.php:63
msgid "M j, Y @ H:i"
msgstr ""
#: includes/post-types.php:67
#: includes/post-types.php:70
msgid "Download updated."
msgstr ""
#: includes/post-types.php:68
msgid ""
"Custom field updated."
msgstr ""
#: includes/post-types.php:69
msgid ""
"Custom field deleted."
msgstr ""
#: includes/post-types.php:71
#, php-format
msgid ""
"Download restored to "
"revision from %s"
msgstr ""
#: includes/post-types.php:72
msgid "Download published."
msgstr ""
#: includes/post-types.php:73
msgid "Download saved."
msgstr ""
#: includes/post-types.php:74
msgid "Download submitted."
msgstr ""
#: includes/post-types.php:75
#, php-format
msgid ""
"Page scheduled for: %s."
msgstr ""
#: includes/post-types.php:76
msgid ""
"Download draft updated."
msgstr ""
#: includes/post-types.php:85
msgid "Settings"
msgstr ""
#: includes/post-types.php:86
#: includes/post-types.php:572
msgid "Shortcode"
msgstr ""
#: includes/post-types.php:87
#: includes/post-types.php:417
msgid "Preview"
msgstr ""
#: includes/post-types.php:124
#: includes/post-types.php:128
msgid "Download file"
msgstr ""
#: includes/post-types.php:134
msgid "File image"
msgstr ""
#: includes/post-types.php:140
msgid "File image size"
msgstr ""
#: includes/post-types.php:143
msgid "Thumbnail"
msgstr ""
#: includes/post-types.php:144
msgid "Medium"
msgstr ""
#: includes/post-types.php:145
msgid "Medium large"
msgstr ""
#: includes/post-types.php:146
msgid "Large"
msgstr ""
#: includes/post-types.php:147
msgid "Full"
msgstr ""
#: includes/post-types.php:153
#: includes/post-types.php:157
msgid "Background"
msgstr ""
#: includes/post-types.php:160
msgid "Image"
msgstr ""
#: includes/post-types.php:161
msgid "Color"
msgstr ""
#: includes/post-types.php:167
msgid ""
"Background-attachment"
msgstr ""
#: includes/post-types.php:170
msgid "Scroll"
msgstr ""
#: includes/post-types.php:171
msgid "Fixed"
msgstr ""
#: includes/post-types.php:177
msgid "Title"
msgstr ""
#: includes/post-types.php:181
msgid "Title font-size"
msgstr ""
#: includes/post-types.php:185
msgid "Title color"
msgstr ""
#: includes/post-types.php:190
msgid "Content"
msgstr ""
#: includes/post-types.php:194
msgid "Text font-size"
msgstr ""
#: includes/post-types.php:198
msgid "Text color"
msgstr ""
#: includes/post-types.php:203
msgid "Button"
msgstr ""
#: includes/post-types.php:207
msgid "Button text"
msgstr ""
#: includes/post-types.php:211
msgid "Button color"
msgstr ""
#: includes/post-types.php:215
msgid "Button color hover"
msgstr ""
#: includes/post-types.php:219
msgid "Button background"
msgstr ""
#: includes/post-types.php:223
msgid ""
"Button background hover"
msgstr ""
#: includes/post-types.php:227
msgid "Button border-color"
msgstr ""
#: includes/post-types.php:231
msgid ""
"Button border-color hover"
msgstr ""
#: includes/post-types.php:235
msgid "Button font-size"
msgstr ""
#: includes/post-types.php:239
msgid "Button width"
msgstr ""
#: includes/post-types.php:243
msgid "Button padding"
msgstr ""
#: includes/post-types.php:248
#: includes/post-types.php:252
msgid "Label"
msgstr ""
#: includes/post-types.php:256
msgid "Label font-size"
msgstr ""
#: includes/post-types.php:260
msgid "Label color"
msgstr ""
#: includes/post-types.php:265
msgid "Input fields"
msgstr ""
#: includes/post-types.php:269
msgid "Input font-size"
msgstr ""
#: includes/post-types.php:273
msgid "Input color"
msgstr ""
#: includes/post-types.php:277
msgid "Input background"
msgstr ""
#: includes/post-types.php:281
msgid "Input icon color"
msgstr ""
#: includes/post-types.php:285
msgid ""
"Input icon background"
msgstr ""
#: includes/post-types.php:290
msgid "Placeholders"
msgstr ""
#: includes/post-types.php:295
msgid "Placeholder text"
msgstr ""
#: includes/post-types.php:300
msgid "Placeholder color"
msgstr ""
#: includes/post-types.php:305
msgid "Checkbox"
msgstr ""
#: includes/post-types.php:309
msgid "Checkbox text"
msgstr ""
#: includes/post-types.php:313
msgid ""
"Checkbox text font-size"
msgstr ""
#: includes/post-types.php:317
msgid "Checkbox text color"
msgstr ""
#: includes/post-types.php:322
msgid "Submit button"
msgstr ""
#: includes/post-types.php:326
msgid "Submit button text"
msgstr ""
#: includes/post-types.php:330
msgid "Submit button color"
msgstr ""
#: includes/post-types.php:334
msgid ""
"Submit button color hover"
msgstr ""
#: includes/post-types.php:338
msgid ""
"Submit button background"
msgstr ""
#: includes/post-types.php:342
msgid ""
"Submit button background "
"hover"
msgstr ""
#: includes/post-types.php:346
msgid ""
"Submit button font-size"
msgstr ""
#: includes/post-types.php:351
msgid "Submit message"
msgstr ""
#: includes/post-types.php:355
msgid ""
"Submit message font-size"
msgstr ""
#: includes/post-types.php:359
msgid ""
"Submit message color"
msgstr ""
#: includes/post-types.php:364
msgid "Borders"
msgstr ""
#: includes/post-types.php:368
msgid "Border-radius"
msgstr ""
#: includes/post-types.php:373
msgid "Font"
msgstr ""
#: includes/post-types.php:377
msgid "Font-family"
msgstr ""
#: includes/post-types.php:409
msgid "Your shortcode..."
msgstr ""
#: includes/preview.php:24
msgid ""
"Click the preview button "
"to see the latest "
"changes..."
msgstr ""

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