Compare commits

...

32 Commits

Author SHA1 Message Date
erwanlr
adff971d62 Bumps version 2019-03-10 09:47:41 +00:00
erwanlr
23b22f71b8 Reduces confidence of wp-cron detection 2019-03-10 08:02:51 +00:00
erwanlr
fee3671e32 Adds wp-cron.php detection - Fixes #1299 2019-03-10 07:53:12 +00:00
erwanlr
26c6be7268 Fixes #1307 2019-03-10 07:11:48 +00:00
erwanlr
01c5bcf2be Adds DFs 2019-03-09 16:19:25 +00:00
erwanlr
1ab8a5ab98 Updates deps 2019-03-07 19:37:01 +00:00
erwanlr
b54aaca28a Adds missing lines 2019-03-04 07:40:45 +00:00
erwanlr
86a29ae000 Adds DF 2019-03-04 07:35:21 +00:00
erwanlr
a5dbee93ff Adds DFs 2019-03-02 10:43:45 +00:00
Christian Mehlmauer
e0465e6e10 remove line 2019-02-28 08:41:19 +01:00
Christian Mehlmauer
7da48b9dd1 readme linting 2019-02-28 08:18:01 +01:00
Christian Mehlmauer
a64895c3a6 remove UTF characters from license 2019-02-28 08:13:42 +01:00
erwanlr
21f1a5d4c4 Adds DFs 2019-02-23 08:27:27 +00:00
erwanlr
d60f79ca33 Adds DFs 2019-02-16 13:20:51 +00:00
Erwan
2d5cea5033 Adds missing #to_s calls again 2019-02-11 21:14:40 +01:00
erwanlr
b0615215fe Adds missing #to_s calls 2019-02-11 20:03:05 +00:00
erwanlr
7a0f98b2cb Uses Pathname#join rather than File#join when possible 2019-02-11 19:56:07 +00:00
erwanlr
cdc1dab4a6 Bumps version 2019-02-11 11:48:49 +00:00
erwanlr
431739ab19 Updates Rubocop dep 2019-02-11 10:44:29 +00:00
erwanlr
1780399050 Fixes #1277 2019-02-10 15:32:30 +00:00
erwanlr
eb75d38716 Fixes #1284 2019-02-10 13:47:19 +00:00
erwanlr
06f82d78f4 Ref #1285 - Adds comment about the pagination 2019-02-10 10:49:03 +00:00
erwanlr
dee4da1c0e Fixes #1285 2019-02-10 10:45:54 +00:00
erwanlr
e341ec7c60 Adds DFs 2019-02-10 09:44:17 +00:00
Erwan
9146609e4a Update Readme, Fixes #1286 2019-02-03 20:46:03 +01:00
erwanlr
f90615ca41 Adds DF 2019-02-03 07:08:05 +00:00
erwanlr
8a2a6a05ff Adds DFs 2019-01-27 10:54:13 +00:00
Erwan
5a787f8ed5 Adds a note about bug in Ruby 2.5.x, Ref #1283 2019-01-25 20:14:14 +00:00
erwanlr
a904053002 Adds DFs 2019-01-20 17:04:32 +00:00
Erwan
70ecd30dcc Merge pull request #1276 from wpscanteam/dependabot/bundler/rubocop-tw-0.63.0
Update rubocop requirement from ~> 0.62.0 to ~> 0.63.0
2019-01-17 09:32:24 +00:00
dependabot[bot]
b0976d7e47 Update rubocop requirement from ~> 0.62.0 to ~> 0.63.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/commits/v0.63.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-17 05:54:18 +00:00
erwanlr
bb5e55016c Adds DFs 2019-01-13 16:56:13 +00:00
161 changed files with 27648 additions and 244 deletions

10
LICENSE
View File

@@ -6,9 +6,9 @@ Cases that include commercialization of WPScan require a commercial, non-free li
1. Definitions
1.1 License means this document.
1.2 Contributor means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
1.3 WPScan Team means WPScans core developers.
1.1 "License" means this document.
1.2 "Contributor" means each individual or legal entity that creates, contributes to the creation of, or owns WPScan.
1.3 "WPScan Team" means WPScans core developers.
2. Commercialization
@@ -29,6 +29,8 @@ Example cases which do not require a commercial license, and thus fall under the
If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - team@wpscan.org.
We may grant commercial licenses at no monetary cost at our own discretion if the commercial usage is deemed by the WPScan Team to significantly benefit WPScan.
Free-use Terms and Conditions;
3. Redistribution
@@ -57,7 +59,7 @@ WPScan is provided under an AS-IS basis and without any support, updates or main
8. Disclaimer of Warranty
WPScan is provided under this License on an as is basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.
WPScan is provided under this License on an "as is" basis, without warranty of any kind, either expressed, implied, or statutory, including, without limitation, warranties that the WPScan is free of defects, merchantable, fit for a particular purpose or non-infringing.
9. Limitation of Liability

View File

@@ -7,23 +7,28 @@
# INSTALL
## Prerequisites:
## Prerequisites
- (Optional but highly recommended: [RVM](https://rvm.io/rvm/install))
- Ruby >= 2.3 - Recommended: latest
- Curl >= 7.21 - Recommended: latest - FYI the 7.29 has a segfault
- Ruby 2.5.0 to 2.5.3 can cause an 'undefined symbol: rmpd_util_str_to_d' error in some systems, see [#1283](https://github.com/wpscanteam/wpscan/issues/1283)
- Curl >= 7.21 - Recommended: latest
- The 7.29 has a segfault
- RubyGems - Recommended: latest
### From RubyGems:
### From RubyGems (Recommended)
```
```shell
gem install wpscan
```
### From sources:
On MacOSX, if a ```Gem::FilePermissionError``` is raised due to the Apple's System Integrity Protection (SIP), either install RVM and install wpscan again, or run ```sudo gem install -n /usr/local/bin wpscan``` (see [#1286](https://github.com/wpscanteam/wpscan/issues/1286))
### From sources (NOT Recommended)
Prerequisites: Git
```
```shell
git clone https://github.com/wpscanteam/wpscan
cd wpscan/
@@ -31,19 +36,28 @@ cd wpscan/
bundle install && rake install
```
# Updating
You can update the local database by using ```wpscan --update```
Updating WPScan itself is either done via ```gem update wpscan``` or the packages manager (this is quite important for distributions such as in Kali Linux: ```apt-get update && apt-get upgrade```) depending how WPScan was (pre)installed
# Docker
Pull the repo with ```docker pull wpscanteam/wpscan```
Enumerating usernames
```
```shell
docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u
```
Enumerating a range of usernames
```
```shell
docker run -it --rm wpscanteam/wpscan --url https://target.tld/ --enumerate u1-100
```
** replace u1-100 with a range of your choice.
# Usage
@@ -57,41 +71,44 @@ The DB is located at ~/.wpscan/db
WPScan can load all options (including the --url) from configuration files, the following locations are checked (order: first to last):
* ~/.wpscan/cli_options.json
* ~/.wpscan/cli_options.yml
* pwd/.wpscan/cli_options.json
* pwd/.wpscan/cli_options.yml
- ~/.wpscan/cli_options.json
- ~/.wpscan/cli_options.yml
- pwd/.wpscan/cli_options.json
- pwd/.wpscan/cli_options.yml
If those files exist, options from them will be loaded and overridden if found twice.
e.g:
~/.wpscan/cli_options.yml:
```
```yml
proxy: 'http://127.0.0.1:8080'
verbose: true
```
pwd/.wpscan/cli_options.yml:
```
```yml
proxy: 'socks5://127.0.0.1:9090'
url: 'http://target.tld'
```
Running ```wpscan``` in the current directory (pwd), is the same as ```wpscan -v --proxy socks5://127.0.0.1:9090 --url http://target.tld```
Enumerating usernames
```
```shell
wpscan --url https://target.tld/ --enumerate u
```
Enumerating a range of usernames
```
```shell
wpscan --url https://target.tld/ --enumerate u1-100
```
** replace u1-100 with a range of your choice.
** replace u1-100 with a range of your choice.
# PROJECT HOME
@@ -123,16 +140,16 @@ A commercial use is one intended for commercial advantage or monetary compensati
Example cases of commercialization are:
- Using WPScan to provide commercial managed/Software-as-a-Service services.
- Distributing WPScan as a commercial product or as part of one.
- Using WPScan as a value added service/product.
- Using WPScan to provide commercial managed/Software-as-a-Service services.
- Distributing WPScan as a commercial product or as part of one.
- Using WPScan as a value added service/product.
Example cases which do not require a commercial license, and thus fall under the terms set out below, include (but are not limited to):
- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
- Using WPScan to test your own systems.
- Any non-commercial use of WPScan.
- Penetration testers (or penetration testing organizations) using WPScan as part of their assessment toolkit.
- Penetration Testing Linux Distributions including but not limited to Kali Linux, SamuraiWTF, BackBox Linux.
- Using WPScan to test your own systems.
- Any non-commercial use of WPScan.
If you need to purchase a commercial license or are unsure whether you need to purchase a commercial license contact us - team@wpscan.org.
@@ -142,9 +159,9 @@ Free-use Terms and Conditions;
Redistribution is permitted under the following conditions:
- Unmodified License is provided with WPScan.
- Unmodified Copyright notices are provided with WPScan.
- Does not conflict with the commercialization clause.
- Unmodified License is provided with WPScan.
- Unmodified Copyright notices are provided with WPScan.
- Does not conflict with the commercialization clause.
### 4. Copying

View File

@@ -71,7 +71,7 @@ module WPScan
exit(WPScan::ExitCode::VULNERABLE)
end
raise NotWordPressError unless target.wordpress? || parsed_options[:force]
raise NotWordPressError unless target.wordpress?(parsed_options[:detection_mode]) || parsed_options[:force]
end
# Loads the related server module in the target

View File

@@ -98,7 +98,7 @@ module WPScan
[
OptFilePath.new(
['--timthumbs-list FILE-PATH', 'List of timthumbs\' location to use'],
exists: true, default: File.join(DB_DIR, 'timthumbs-v3.txt'), advanced: true
exists: true, default: DB_DIR.join('timthumbs-v3.txt').to_s, advanced: true
),
OptChoice.new(
['--timthumbs-detection MODE',
@@ -113,7 +113,7 @@ module WPScan
[
OptFilePath.new(
['--config-backups-list FILE-PATH', 'List of config backups\' filenames to use'],
exists: true, default: File.join(DB_DIR, 'config_backups.txt'), advanced: true
exists: true, default: DB_DIR.join('config_backups.txt').to_s, advanced: true
),
OptChoice.new(
['--config-backups-detection MODE',
@@ -128,7 +128,7 @@ module WPScan
[
OptFilePath.new(
['--db-exports-list FILE-PATH', 'List of DB exports\' paths to use'],
exists: true, default: File.join(DB_DIR, 'db_exports.txt'), advanced: true
exists: true, default: DB_DIR.join('db_exports.txt').to_s, advanced: true
),
OptChoice.new(
['--db-exports-detection MODE',

View File

@@ -3,9 +3,10 @@ module WPScan
# Enumeration Methods
class Enumeration < CMSScanner::Controller::Base
# @param [ String ] type (plugins or themes)
# @param [ Symbol ] detection_mode
#
# @return [ String ] The related enumration message depending on the parsed_options and type supplied
def enum_message(type)
def enum_message(type, detection_mode)
return unless %w[plugins themes].include?(type)
details = if parsed_options[:enumerate][:"vulnerable_#{type}"]
@@ -16,7 +17,20 @@ module WPScan
'Most Popular'
end
"Enumerating #{details} #{type.capitalize}"
"Enumerating #{details} #{type.capitalize} #{enum_detection_message(detection_mode)}"
end
# @param [ Symbol ] detection_mode
#
# @return [ String ]
def enum_detection_message(detection_mode)
detection_method = if detection_mode == :mixed
'Passive and Aggressive'
else
detection_mode.to_s.capitalize
end
"(via #{detection_method} Methods)"
end
# @param [ String ] type (plugins, themes etc)
@@ -49,12 +63,15 @@ module WPScan
sort: true
)
output('@info', msg: enum_message('plugins')) if user_interaction?
output('@info', msg: enum_message('plugins', opts[:mode])) if user_interaction?
# Enumerate the plugins & find their versions to avoid doing that when #version
# is called in the view
plugins = target.plugins(opts)
output('@info', msg: 'Checking Plugin Versions') if user_interaction? && !plugins.empty?
if user_interaction? && !plugins.empty?
output('@info',
msg: "Checking Plugin Versions #{enum_detection_message(opts[:version_detection][:mode])}")
end
plugins.each(&:version)
@@ -92,12 +109,15 @@ module WPScan
sort: true
)
output('@info', msg: enum_message('themes')) if user_interaction?
output('@info', msg: enum_message('themes', opts[:mode])) if user_interaction?
# Enumerate the themes & find their versions to avoid doing that when #version
# is called in the view
themes = target.themes(opts)
output('@info', msg: 'Checking Theme Versions') if user_interaction? && !themes.empty?
if user_interaction? && !themes.empty?
output('@info',
msg: "Checking Theme Versions #{enum_detection_message(opts[:version_detection][:mode])}")
end
themes.each(&:version)
@@ -125,21 +145,21 @@ module WPScan
def enum_timthumbs
opts = default_opts('timthumbs').merge(list: parsed_options[:timthumbs_list])
output('@info', msg: 'Enumerating Timthumbs') if user_interaction?
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])
output('@info', msg: 'Enumerating Config Backups') if user_interaction?
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])
output('@info', msg: 'Enumerating DB Exports') if user_interaction?
output('@info', msg: "Enumerating DB Exports #{enum_detection_message(opts[:mode])}") if user_interaction?
output('db_exports', db_exports: target.db_exports(opts))
end
@@ -147,7 +167,9 @@ module WPScan
opts = default_opts('medias').merge(range: parsed_options[:enumerate][:medias])
if user_interaction?
output('@info', msg: 'Enumerating Medias (Permalink setting must be set to "Plain" for those to be detected)')
output('@info',
msg: "Enumerating Medias #{enum_detection_message(opts[:mode])} "\
'(Permalink setting must be set to "Plain" for those to be detected)')
end
output('medias', medias: target.medias(opts))
@@ -166,7 +188,7 @@ module WPScan
list: parsed_options[:users_list]
)
output('@info', msg: 'Enumerating Users') if user_interaction?
output('@info', msg: "Enumerating Users #{enum_detection_message(opts[:mode])}") if user_interaction?
output('users', users: target.users(opts))
end

View File

@@ -65,8 +65,12 @@ module WPScan
when :wp_login
WPScan::Finders::Passwords::WpLogin.new(target)
when :xmlrpc
raise XMLRPCNotDetected unless xmlrpc
WPScan::Finders::Passwords::XMLRPC.new(xmlrpc)
when :xmlrpc_multicall
raise XMLRPCNotDetected unless xmlrpc
WPScan::Finders::Passwords::XMLRPCMulticall.new(xmlrpc)
end
end

View File

@@ -1,4 +1,5 @@
require_relative 'interesting_findings/readme'
require_relative 'interesting_findings/wp_cron'
require_relative 'interesting_findings/multisite'
require_relative 'interesting_findings/debug_log'
require_relative 'interesting_findings/backup_db'
@@ -23,7 +24,7 @@ module WPScan
%w[
Readme DebugLog FullPathDisclosure BackupDB DuplicatorInstallerLog
Multisite MuPlugins Registration UploadDirectoryListing TmmDbMigrate
UploadSQLDump EmergencyPwdResetScript
UploadSQLDump EmergencyPwdResetScript WPCron
].each do |f|
finders << InterestingFindings.const_get(f).new(target)
end

View File

@@ -0,0 +1,31 @@
module WPScan
module Finders
module InterestingFindings
# wp-cron.php finder
class WPCron < CMSScanner::Finders::Finder
# @return [ InterestingFinding ]
def aggressive(_opts = {})
res = Browser.get(wp_cron_url)
return unless res.code == 200
WPScan::WPCron.new(
wp_cron_url,
confidence: 60,
found_by: DIRECT_ACCESS,
references: {
url: [
'https://www.iplocation.net/defend-wordpress-from-ddos',
'https://github.com/wpscanteam/wpscan/issues/1299'
]
}
)
end
def wp_cron_url
@wp_cron_url ||= target.url('wp-cron.php')
end
end
end
end
end

View File

@@ -4,20 +4,29 @@ module WPScan
# WP JSON API
#
# Since 4.7 - Need more investigation as it seems WP 4.7.1 reduces the exposure, see https://github.com/wpscanteam/wpscan/issues/1038)
# For the pagination, see https://github.com/wpscanteam/wpscan/issues/1285
#
class WpJsonApi < CMSScanner::Finders::Finder
MAX_PER_PAGE = 100 # See https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/
# @param [ Hash ] opts
#
# @return [ Array<User> ]
def aggressive(_opts = {})
found = []
current_page = 0
JSON.parse(Browser.get(api_url).body)&.each do |user|
found << CMSScanner::User.new(user['slug'],
id: user['id'],
found_by: found_by,
confidence: 100,
interesting_entries: [api_url])
loop do
current_page += 1
res = Typhoeus.get(api_url, params: { per_page: MAX_PER_PAGE, page: current_page })
total_pages ||= res.headers['X-WP-TotalPages'].to_i
users_in_page = users_from_response(res)
found += users_in_page
break if current_page >= total_pages || users_in_page.empty?
end
found
@@ -25,6 +34,23 @@ module WPScan
found
end
# @param [ Typhoeus::Response ] response
#
# @return [ Array<User> ] The users from the response
def users_from_response(response)
found = []
JSON.parse(response.body)&.each do |user|
found << CMSScanner::User.new(user['slug'],
id: user['id'],
found_by: found_by,
confidence: 100,
interesting_entries: [response.effective_url])
end
found
end
# @return [ String ] The URL of the API listing the Users
def api_url
@api_url ||= target.url('wp-json/wp/v2/users/')

View File

@@ -42,4 +42,7 @@ module WPScan
class UploadSQLDump < InterestingFinding
end
class WPCron < InterestingFinding
end
end

View File

@@ -33,7 +33,7 @@ module WPScan
include CMSScanner
APP_DIR = Pathname.new(__FILE__).dirname.join('..', 'app').expand_path
DB_DIR = File.join(Dir.home, '.wpscan', 'db')
DB_DIR = Pathname.new(Dir.home).join('.wpscan', 'db')
# Override, otherwise it would be returned as 'wp_scan'
#

View File

@@ -5,7 +5,7 @@ module WPScan
# @return [ String ] The path to the user agents list
def user_agents_list
@user_agents_list ||= File.join(DB_DIR, 'user-agents.txt')
@user_agents_list ||= DB_DIR.join('user-agents.txt').to_s
end
# @return [ String ]

View File

@@ -4,7 +4,7 @@ module WPScan
class Base
# @return [ String ]
def self.db_file
@db_file ||= File.join(DB_DIR, 'dynamic_finders.yml')
@db_file ||= DB_DIR.join('dynamic_finders.yml').to_s
end
# @return [ Hash ]

View File

@@ -33,7 +33,7 @@ module WPScan
# @return [ String ]
def self.wp_fingerprints_path
@wp_fingerprints_path ||= File.join(DB_DIR, 'wp_fingerprints.json')
@wp_fingerprints_path ||= DB_DIR.join('wp_fingerprints.json').to_s
end
# @return [ Hash ]

View File

@@ -4,7 +4,7 @@ module WPScan
class Plugin < WpItem
# @return [ String ]
def self.db_file
@db_file ||= File.join(DB_DIR, 'plugins.json')
@db_file ||= DB_DIR.join('plugins.json').to_s
end
end
end

View File

@@ -4,7 +4,7 @@ module WPScan
class Theme < WpItem
# @return [ String ]
def self.db_file
@db_file ||= File.join(DB_DIR, 'themes.json')
@db_file ||= DB_DIR.join('themes.json').to_s
end
end
end

View File

@@ -15,11 +15,11 @@ module WPScan
attr_reader :repo_directory
def initialize(repo_directory)
@repo_directory = repo_directory
@repo_directory = Pathname.new(repo_directory).expand_path
FileUtils.mkdir_p(repo_directory) unless Dir.exist?(repo_directory)
FileUtils.mkdir_p(repo_directory.to_s) unless Dir.exist?(repo_directory.to_s)
raise "#{repo_directory} is not writable" unless Pathname.new(repo_directory).writable?
raise "#{repo_directory} is not writable" unless repo_directory.writable?
delete_old_files
end
@@ -41,7 +41,7 @@ module WPScan
# @return [ String ]
def last_update_file
@last_update_file ||= File.join(repo_directory, '.last_update')
@last_update_file ||= repo_directory.join('.last_update').to_s
end
# @return [ Boolean ]
@@ -54,7 +54,7 @@ module WPScan
# @return [ Boolean ]
def missing_files?
FILES.each do |file|
return true unless File.exist?(File.join(repo_directory, file))
return true unless File.exist?(repo_directory.join(file))
end
false
end
@@ -85,16 +85,18 @@ module WPScan
res.body.chomp
end
# @return [ String ]
def local_file_path(filename)
File.join(repo_directory, filename.to_s)
repo_directory.join(filename.to_s).to_s
end
def local_file_checksum(filename)
Digest::SHA512.file(local_file_path(filename)).hexdigest
end
# @return [ String ]
def backup_file_path(filename)
File.join(repo_directory, "#{filename}.back")
repo_directory.join("#{filename}.back").to_s
end
def create_backup(filename)

View File

@@ -4,7 +4,7 @@ module WPScan
class Version < WpItem
# @return [ String ]
def self.db_file
@db_file ||= File.join(DB_DIR, 'wordpresses.json')
@db_file ||= DB_DIR.join('wordpresses.json').to_s
end
end
end

View File

@@ -6,3 +6,4 @@ end
require_relative 'errors/http'
require_relative 'errors/update'
require_relative 'errors/wordpress'
require_relative 'errors/xmlrpc'

View File

@@ -0,0 +1,8 @@
module WPScan
# XML-RPC Not Detected
class XMLRPCNotDetected < Error
def to_s
'The XML-RPC Interface was not detected.'
end
end
end

View File

@@ -18,10 +18,10 @@ module WPScan
alias registration_enabled? registration_enabled
alias mu_plugins? mu_plugins
# @param [ Symbol ] detection_mode
#
# @return [ Boolean ]
def wordpress?
# res = Browser.get(url)
def wordpress?(detection_mode)
in_scope_urls(homepage_res) do |url|
return true if Addressable::URI.parse(url).path.match(WORDPRESS_PATTERN)
end
@@ -32,6 +32,14 @@ module WPScan
return true unless comments_from_page(/wordpress/i, homepage_res).empty?
if %i[mixed aggressive].include?(detection_mode)
%w[wp-admin/install.php wp-login.php].each do |path|
in_scope_urls(Browser.get_and_follow_location(url(path))).each do |url|
return true if Addressable::URI.parse(url).path.match(WORDPRESS_PATTERN)
end
end
end
false
end

View File

@@ -1,4 +1,4 @@
# Version
module WPScan
VERSION = '3.4.3'.freeze
VERSION = '3.4.5'.freeze
end

View File

@@ -165,7 +165,7 @@ describe WPScan::Controller::Core do
before do
expect(core).to receive(:load_server_module)
expect(core.target).to receive(:wordpress?).and_return(true)
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(true)
end
it 'calls the formatter when started and finished to update the db' do
@@ -208,7 +208,7 @@ describe WPScan::Controller::Core do
context 'when wordpress' do
it 'does not raise an error' do
expect(core.target).to receive(:wordpress?).and_return(true)
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(true)
expect { core.before_scan }.to_not raise_error
end
@@ -216,7 +216,7 @@ describe WPScan::Controller::Core do
context 'when not wordpress' do
it 'raises an error' do
expect(core.target).to receive(:wordpress?).and_return(false)
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
expect { core.before_scan }.to raise_error(WPScan::NotWordPressError)
end
@@ -237,7 +237,7 @@ describe WPScan::Controller::Core do
context 'when wordpress' do
before do
expect(core).to receive(:load_server_module)
expect(core.target).to receive(:wordpress?).and_return(true)
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(true)
end
it 'does not raise any error' do
@@ -248,7 +248,7 @@ 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?).and_return(false)
expect(core.target).to receive(:wordpress?).with(:mixed).and_return(false)
end
context 'when no --force' do

View File

@@ -14,10 +14,11 @@ describe WPScan::Controller::Enumeration do
end
describe '#enum_message' do
after { expect(controller.enum_message(type)).to eql @expected }
after { expect(controller.enum_message(type, detection_mode)).to eql @expected }
context 'when type argument is incorrect' do
let(:type) { 'spec' }
let(:detection_mode) { :mixed }
it 'returns nil' do
@expected = nil
@@ -27,28 +28,31 @@ describe WPScan::Controller::Enumeration do
%w[plugins themes].each do |t|
context "type = #{t}" do
let(:type) { t }
let(:detection_mode) { :mixed }
context 'when vulnerable' do
let(:cli_args) { "#{super()} -e v#{type[0]}" }
it 'returns the expected string' do
@expected = "Enumerating Vulnerable #{type.capitalize}"
@expected = "Enumerating Vulnerable #{type.capitalize} (via Passive and Aggressive Methods)"
end
end
context 'when all' do
let(:cli_args) { "#{super()} -e a#{type[0]}" }
let(:detection_mode) { :passive }
it 'returns the expected string' do
@expected = "Enumerating All #{type.capitalize}"
@expected = "Enumerating All #{type.capitalize} (via Passive Methods)"
end
end
context 'when most popular' do
let(:cli_args) { "#{super()} -e #{type[0]}" }
let(:detection_mode) { :aggressive }
it 'returns the expected string' do
@expected = "Enumerating Most Popular #{type.capitalize}"
@expected = "Enumerating Most Popular #{type.capitalize} (via Aggressive Methods)"
end
end
end

View File

@@ -66,6 +66,29 @@ describe WPScan::Controller::PasswordAttack do
end
context 'when xmlrpc' do
context 'when xmlrpc not detected on target' do
before do
expect(controller.target).to receive(:xmlrpc).and_return(nil)
end
context 'when single xmlrpc' do
let(:attack) { 'xmlrpc' }
it 'raises an error' do
expect { controller.attacker }.to raise_error(WPScan::XMLRPCNotDetected)
end
end
context 'when xmlrpc-multicall' do
let(:attack) { 'xmlrpc-multicall' }
it 'raises an error' do
expect { controller.attacker }.to raise_error(WPScan::XMLRPCNotDetected)
end
end
end
context 'when xmlrpc detected on target' do
before do
expect(controller.target).to receive(:xmlrpc).and_return(WPScan::XMLRPC.new("#{target_url}/xmlrpc.php"))
end
@@ -89,6 +112,7 @@ describe WPScan::Controller::PasswordAttack do
end
end
end
end
context 'when automatic detection' do
before { expect(controller.target).to receive(:xmlrpc).and_return(xmlrpc) }

View File

@@ -2,8 +2,8 @@ describe WPScan::Finders::ConfigBackups::KnownFilenames do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'config_backups') }
let(:opts) { { list: File.join(WPScan::DB_DIR, 'config_backups.txt') } }
let(:fixtures) { FINDERS_FIXTURES.join('config_backups') }
let(:opts) { { list: WPScan::DB_DIR.join('config_backups.txt').to_s } }
describe '#aggressive' do
before do
@@ -23,7 +23,7 @@ describe WPScan::Finders::ConfigBackups::KnownFilenames do
context 'when some files exist' do
let(:files) { ['%23wp-config.php%23', 'wp-config.bak'] }
let(:config_backup) { File.read(File.join(fixtures, 'wp-config.php')) }
let(:config_backup) { File.read(fixtures.join('wp-config.php')) }
before do
files.each do |file|

View File

@@ -2,8 +2,8 @@ describe WPScan::Finders::DbExports::KnownLocations do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/aa/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'db_exports') }
let(:opts) { { list: File.join(WPScan::DB_DIR, 'db_exports.txt') } }
let(:fixtures) { FINDERS_FIXTURES.join('db_exports') }
let(:opts) { { list: WPScan::DB_DIR.join('db_exports.txt').to_s } }
describe '#potential_urls' do
before do
@@ -40,7 +40,7 @@ describe WPScan::Finders::DbExports::KnownLocations do
context 'when some files exist' do
let(:files) { %w[ex.sql backups/db_backup.sql] }
let(:db_export) { File.read(File.join(fixtures, 'dump.sql')) }
let(:db_export) { File.read(fixtures.join('dump.sql')) }
before do
files.each do |file|

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::BackupDB do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'backup_db') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'backup_db') }
let(:wp_content) { 'wp-content' }
let(:dir_url) { target.url("#{wp_content}/backup-db/") }
@@ -51,7 +51,7 @@ describe WPScan::Finders::InterestingFindings::BackupDB do
end
context 'when directory listing enabled' do
let(:body) { File.read(File.join(fixtures, 'dir_listing.html')) }
let(:body) { File.read(fixtures.join('dir_listing.html')) }
it 'returns the expected interesting_findings attribute' do
@expected_entries = %w[sqldump.sql test.txt]

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::DebugLog do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'debug_log') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'debug_log') }
let(:wp_content) { 'wp-content' }
let(:log_url) { target.url("#{wp_content}/debug.log") }
@@ -18,7 +18,7 @@ describe WPScan::Finders::InterestingFindings::DebugLog do
end
context 'when a log file' do
let(:body) { File.read(File.join(fixtures, 'debug.log')) }
let(:body) { File.read(fixtures.join('debug.log')) }
it 'returns the InterestingFinding' do
expect(finder.aggressive).to eql WPScan::DebugLog.new(

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::DuplicatorInstallerLog do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'duplicator_installer_log') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'duplicator_installer_log') }
let(:filename) { 'installer-log.txt' }
let(:log_url) { target.url(filename) }
@@ -19,7 +19,7 @@ describe WPScan::Finders::InterestingFindings::DuplicatorInstallerLog do
end
context 'when the body matches' do
let(:body) { File.read(File.join(fixtures, filename)) }
let(:body) { File.read(fixtures.join(filename)) }
it 'returns the InterestingFinding' do
expect(finder.aggressive).to eql WPScan::DuplicatorInstallerLog.new(

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::EmergencyPwdResetScript do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'emergency_pwd_reset_script') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'emergency_pwd_reset_script') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::FullPathDisclosure do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'fpd') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'fpd') }
let(:file_url) { target.url('wp-includes/rss-functions.php') }
describe '#aggressive' do
@@ -18,7 +18,7 @@ describe WPScan::Finders::InterestingFindings::FullPathDisclosure do
end
context 'when a log file' do
let(:body) { File.read(File.join(fixtures, 'rss_functions.php')) }
let(:body) { File.read(fixtures.join('rss_functions.php')) }
it 'returns the InterestingFinding' do
found = finder.aggressive

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::MuPlugins do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'mu_plugins') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'mu_plugins') }
describe '#passive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::Multisite do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'multisite') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'multisite') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::Readme do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'readme') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'readme') }
describe '#aggressive' do
before do
@@ -20,7 +20,7 @@ describe WPScan::Finders::InterestingFindings::Readme do
# TODO: case when multiple files are present ? (should return only the first one found)
context 'when a file exists' do
let(:file) { finder.potential_files.sample }
let(:readme) { File.read(File.join(fixtures, 'readme-3.9.2.html')) }
let(:readme) { File.read(fixtures.join('readme-3.9.2.html')) }
before { stub_request(:get, target.url(file)).to_return(body: readme) }

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::Registration do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'registration') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'registration') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::TmmDbMigrate do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'tmm_db_migrate') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'tmm_db_migrate') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::UploadDirectoryListing do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'upload_directory_listing') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'upload_directory_listing') }
let(:wp_content) { 'wp-content' }
describe '#aggressive' do

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::InterestingFindings::UploadSQLDump do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'interesting_findings', 'upload_sql_dump') }
let(:fixtures) { FINDERS_FIXTURES.join('interesting_findings', 'upload_sql_dump') }
let(:wp_content) { 'wp-content' }
describe '#aggressive' do
@@ -21,7 +21,7 @@ describe WPScan::Finders::InterestingFindings::UploadSQLDump do
context 'when a 200' do
before do
stub_request(:get, finder.dump_url)
.to_return(status: 200, body: File.read(File.join(fixtures, fixture)))
.to_return(status: 200, body: File.read(fixtures.join(fixture)))
end
context 'when the body does not match a SQL dump' do

View File

@@ -0,0 +1,30 @@
describe WPScan::Finders::InterestingFindings::WPCron do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:wp_content) { 'wp-content' }
before { expect(target).to receive(:sub_dir).at_least(1).and_return(false) }
describe '#aggressive' do
before { stub_request(:get, finder.wp_cron_url).to_return(status: status) }
context 'when 200' do
let(:status) { 200 }
it 'returns the InterestingFinding' do
expect(finder.aggressive).to eql WPScan::WPCron.new(
finder.wp_cron_url,
confidence: 60,
found_by: described_class::DIRECT_ACCESS
)
end
end
context 'otherwise' do
let(:status) { 403 }
its(:aggressive) { should be_nil }
end
end
end

View File

@@ -2,11 +2,11 @@ describe WPScan::Finders::MainTheme::CssStyle do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'main_theme', 'css_style') }
let(:fixtures) { FINDERS_FIXTURES.join('main_theme', 'css_style') }
describe '#passive' do
after do
stub_request(:get, url).to_return(body: File.read(File.join(fixtures, fixture)))
stub_request(:get, url).to_return(body: File.read(fixtures.join(fixture)))
expect(finder.passive).to eql @expected
end

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::MainTheme::UrlsInHomepage do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'main_theme', 'urls_in_homepage') }
let(:fixtures) { FINDERS_FIXTURES.join('main_theme', 'urls_in_homepage') }
it_behaves_like 'App::Finders::WpItems::URLsInHomepage' do
let(:type) { 'themes' }
@@ -15,7 +15,7 @@ describe WPScan::Finders::MainTheme::UrlsInHomepage do
describe '#passive' do
before do
stub_request(:get, /.*.css/)
stub_request(:get, target.url).to_return(body: File.read(File.join(fixtures, 'found.html')))
stub_request(:get, target.url).to_return(body: File.read(fixtures.join('found.html')))
end
it 'returns the expected Themes' do

View File

@@ -2,11 +2,11 @@ describe WPScan::Finders::MainTheme::WooFrameworkMetaGenerator do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'main_theme', 'woo_framework_meta_generator') }
let(:fixtures) { FINDERS_FIXTURES.join('main_theme', 'woo_framework_meta_generator') }
describe '#passive' do
after do
stub_request(:get, url).to_return(body: File.read(File.join(fixtures, @file)))
stub_request(:get, url).to_return(body: File.read(fixtures.join(@file)))
expect(finder.passive).to eql @expected
end

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Medias::AttachmentBruteForcing do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'medias', 'attachment_brute_forcing') }
let(:fixtures) { FINDERS_FIXTURES.join('medias', 'attachment_brute_forcing') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::PluginVersion::Readme do
subject(:finder) { described_class.new(plugin) }
let(:plugin) { WPScan::Plugin.new('spec', target) }
let(:target) { WPScan::Target.new('http://wp.lab/') }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'plugin_version', 'readme') }
let(:fixtures) { FINDERS_FIXTURES.join('plugin_version', 'readme') }
def version(number, found_by, confidence)
WPScan::Version.new(
@@ -26,7 +26,7 @@ describe WPScan::Finders::PluginVersion::Readme do
after do
stub_request(:get, /.*/).to_return(status: 404)
stub_request(:get, readme_url).to_return(body: File.read(File.join(fixtures, @file)))
stub_request(:get, readme_url).to_return(body: File.read(fixtures.join(@file)))
expect(finder.aggressive).to eql @expected
end

View File

@@ -3,7 +3,7 @@ describe WPScan::Finders::Plugins::BodyPattern do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
let(:expected_all) { df_expected_all['plugins'] }
let(:item_class) { WPScan::Plugin }

View File

@@ -3,7 +3,7 @@ describe WPScan::Finders::Plugins::Comment do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
let(:expected_all) { df_expected_all['plugins'] }
let(:item_class) { WPScan::Plugin }

View File

@@ -5,7 +5,7 @@ describe WPScan::Finders::Plugins::ConfigParser do
# subject(:finder) { described_class.new(target) }
# let(:target) { WPScan::Target.new(url) }
# let(:url) { 'http://wp.lab/' }
# let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
# let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
#
# let(:expected_all) { df_expected_all['plugins'] }
# let(:item_class) { WPScan::Plugin }

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Plugins::HeaderPattern do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
def plugin(slug)
WPScan::Plugin.new(slug, target)
@@ -29,7 +29,7 @@ describe WPScan::Finders::Plugins::HeaderPattern do
context 'when headers' do
before { expect(target).to receive(:content_dir).and_return('wp-content') }
let(:headers) { JSON.parse(File.read(File.join(fixtures, 'header_pattern_passive_all.html'))) }
let(:headers) { JSON.parse(File.read(fixtures.join('header_pattern_passive_all.html'))) }
it 'returns the expected plugins' do
@expected = []

View File

@@ -3,7 +3,7 @@ describe WPScan::Finders::Plugins::JavascriptVar do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
let(:expected_all) { df_expected_all['plugins'] }
let(:item_class) { WPScan::Plugin }

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Plugins::KnownLocations do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'plugins', 'known_locations') }
let(:fixtures) { FINDERS_FIXTURES.join('plugins', 'known_locations') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Plugins::QueryParameter do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
describe '#passive' do
its(:passive) { should be nil }

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Plugins::UrlsInHomepage do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'plugins', 'urls_in_homepage') }
let(:fixtures) { FINDERS_FIXTURES.join('plugins', 'urls_in_homepage') }
it_behaves_like 'App::Finders::WpItems::URLsInHomepage' do
let(:type) { 'plugins' }
@@ -15,7 +15,7 @@ describe WPScan::Finders::Plugins::UrlsInHomepage do
describe '#passive' do
before do
stub_request(:get, finder.target.url)
.to_return(body: File.read(File.join(fixtures, 'found.html')))
.to_return(body: File.read(fixtures.join('found.html')))
expect(finder.target).to receive(:content_dir).at_least(1).and_return('wp-content')
end

View File

@@ -3,7 +3,7 @@ describe WPScan::Finders::Plugins::Xpath do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(DYNAMIC_FINDERS_FIXTURES, 'plugin_version') }
let(:fixtures) { DYNAMIC_FINDERS_FIXTURES.join('plugin_version') }
let(:expected_all) { df_expected_all['plugins'] }
let(:item_class) { WPScan::Plugin }

View File

@@ -2,10 +2,10 @@ describe WPScan::Finders::ThemeVersion::Style do
subject(:finder) { described_class.new(theme) }
let(:theme) { WPScan::Theme.new('spec', target) }
let(:target) { WPScan::Target.new('http://wp.lab/') }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'theme_version', 'style') }
let(:fixtures) { FINDERS_FIXTURES.join('theme_version', 'style') }
before :all do
Typhoeus::Config.cache = WPScan::Cache::Typhoeus.new(File.join(SPECS, 'cache'))
Typhoeus::Config.cache = WPScan::Cache::Typhoeus.new(SPECS.join('cache'))
end
before do
@@ -77,7 +77,7 @@ describe WPScan::Finders::ThemeVersion::Style do
'no_version' => nil
}.each do |file, expected_version|
context "when #{file}" do
let(:style_body) { File.new(File.join(fixtures, "#{file}.css")) }
let(:style_body) { File.new(fixtures.join("#{file}.css")) }
it 'returns the expected version' do
expected = if expected_version

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::ThemeVersion::WooFrameworkMetaGenerator do
subject(:finder) { described_class.new(theme) }
let(:theme) { WPScan::Theme.new(slug, target) }
let(:target) { WPScan::Target.new('http://wp.lab/') }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'theme_version', 'woo_framework_meta_generator') }
let(:fixtures) { FINDERS_FIXTURES.join('theme_version', 'woo_framework_meta_generator') }
before do
expect(target).to receive(:content_dir).and_return('wp-content')
@@ -11,7 +11,7 @@ describe WPScan::Finders::ThemeVersion::WooFrameworkMetaGenerator do
describe '#passive' do
after do
stub_request(:get, target.url).to_return(body: File.read(File.join(fixtures, 'editorial-1.3.5.html')))
stub_request(:get, target.url).to_return(body: File.read(fixtures.join('editorial-1.3.5.html')))
expect(finder.passive).to eql @expected
end

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Themes::KnownLocations do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'themes', 'known_locations') }
let(:fixtures) { FINDERS_FIXTURES.join('themes', 'known_locations') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Themes::UrlsInHomepage do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'themes', 'urls_in_homepage') }
let(:fixtures) { FINDERS_FIXTURES.join('themes', 'urls_in_homepage') }
it_behaves_like 'App::Finders::WpItems::URLsInHomepage' do
let(:type) { 'themes' }

View File

@@ -2,10 +2,10 @@ describe WPScan::Finders::TimthumbVersion::BadRequest do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Timthumb.new(url) }
let(:url) { 'http://ex.lo/timthumb.php' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'timthumb_version', 'bad_request') }
let(:fixtures) { FINDERS_FIXTURES.join('timthumb_version', 'bad_request') }
describe '#aggressive' do
before { stub_request(:get, url).to_return(body: File.read(File.join(fixtures, file))) }
before { stub_request(:get, url).to_return(body: File.read(fixtures.join(file))) }
after { expect(finder.aggressive).to eql @expected }
context 'when no version' do

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Timthumbs::KnownLocations do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'timthumbs', 'known_locations') }
let(:fixtures) { FINDERS_FIXTURES.join('timthumbs', 'known_locations') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Users::AuthorIdBruteForcing do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'users', 'author_id_brute_forcing') }
let(:fixtures) { FINDERS_FIXTURES.join('users', 'author_id_brute_forcing') }
describe '#aggressive' do
xit
@@ -24,7 +24,7 @@ describe WPScan::Finders::Users::AuthorIdBruteForcing do
'2.9.2', '2.9.2-permalink'
].each do |file|
it "returns 'admin' from #{file}.html" do
body = File.read(File.join(fixtures, "#{file}.html"))
body = File.read(fixtures.join("#{file}.html"))
res = Typhoeus::Response.new(body: body)
expect(finder.username_from_response(res)).to eql 'admin'
@@ -40,7 +40,7 @@ describe WPScan::Finders::Users::AuthorIdBruteForcing do
'2.9.2', '2.9.2-permalink'
].each do |file|
it "returns 'admin display_name' from #{file}.html" do
body = File.read(File.join(fixtures, "#{file}.html"))
body = File.read(fixtures.join("#{file}.html"))
expect(finder.display_name_from_body(body)).to eql 'admin display_name'
end
@@ -50,7 +50,7 @@ describe WPScan::Finders::Users::AuthorIdBruteForcing do
context 'when no display_name' do
['4.1.1', '3.0', '2.9.2'].each do |file|
it "returns nil for #{file}-empty.html" do
body = File.read(File.join(fixtures, "#{file}-empty.html"))
body = File.read(fixtures.join("#{file}-empty.html"))
expect(finder.display_name_from_body(body)).to eql nil
end

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Users::AuthorPosts do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'users', 'author_posts') }
let(:fixtures) { FINDERS_FIXTURES.join('users', 'author_posts') }
describe '#passive' do
xit
@@ -10,7 +10,7 @@ describe WPScan::Finders::Users::AuthorPosts do
describe '#potential_usernames' do
it 'returns the expected usernames' do
res = Typhoeus::Response.new(body: File.read(File.join(fixtures, 'potential_usernames.html')))
res = Typhoeus::Response.new(body: File.read(fixtures.join('potential_usernames.html')))
results = finder.potential_usernames(res)

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Users::LoginErrorMessages do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'users', 'login_error_messages') }
let(:fixtures) { FINDERS_FIXTURES.join('users', 'login_error_messages') }
describe '#aggressive' do
xit

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Users::OembedApi do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'users', 'oembed_api') }
let(:fixtures) { FINDERS_FIXTURES.join('users', 'oembed_api') }
describe '#aggressive' do
before do
@@ -18,14 +18,14 @@ describe WPScan::Finders::Users::OembedApi do
context 'when a JSON response' do
context 'when 404' do
let(:body) { File.read(File.join(fixtures, '404.json')) }
let(:body) { File.read(fixtures.join('404.json')) }
its(:aggressive) { should eql([]) }
end
context 'when 200' do
context 'when author_url present' do
let(:body) { File.read(File.join(fixtures, '200_author_url.json')) }
let(:body) { File.read(fixtures.join('200_author_url.json')) }
it 'returns the expected array of users' do
users = finder.aggressive
@@ -42,7 +42,7 @@ describe WPScan::Finders::Users::OembedApi do
end
context 'when author_url not present but author_name' do
let(:body) { File.read(File.join(fixtures, '200_author_name.json')) }
let(:body) { File.read(fixtures.join('200_author_name.json')) }
it 'returns the expected array of users' do
users = finder.aggressive

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::Users::RSSGenerator do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { Pathname.new(FINDERS_FIXTURES).join('users', 'rss_generator') }
let(:fixtures) { FINDERS_FIXTURES.join('users', 'rss_generator') }
let(:rss_fixture) { File.read(fixtures.join('feed.xml')) }
describe '#passive, #aggressive' do
@@ -39,7 +39,7 @@ describe WPScan::Finders::Users::RSSGenerator do
end
context 'when RSS link in homepage' do
let(:homepage_fixture) { File.join(fixtures, 'homepage_links.html') }
let(:homepage_fixture) { fixtures.join('homepage_links.html') }
it 'returns the expected from #passive' do
stub_request(:get, target.url('feed/')).to_return(body: rss_fixture)

View File

@@ -2,12 +2,16 @@ describe WPScan::Finders::Users::WpJsonApi do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url) }
let(:url) { 'http://wp.lab/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'users', 'wp_json_api') }
let(:fixtures) { FINDERS_FIXTURES.join('users', 'wp_json_api') }
describe '#aggressive' do
before { allow(target).to receive(:sub_dir).and_return(false) }
context 'when only one page of results' do
before do
allow(target).to receive(:sub_dir).and_return(false)
stub_request(:get, finder.api_url).to_return(body: body)
stub_request(:get, finder.api_url)
.with(query: { page: 1, per_page: 100 })
.to_return(body: body, headers: {})
end
context 'when not a JSON response' do
@@ -18,13 +22,13 @@ describe WPScan::Finders::Users::WpJsonApi do
context 'when a JSON response' do
context 'when unauthorised' do
let(:body) { File.read(File.join(fixtures, '401.json')) }
let(:body) { File.read(fixtures.join('401.json')) }
its(:aggressive) { should eql([]) }
end
context 'when limited exposure (WP >= 4.7.1)' do
let(:body) { File.read(File.join(fixtures, '4.7.2.json')) }
let(:body) { File.read(fixtures.join('4.7.2.json')) }
it 'returns the expected array of users' do
users = finder.aggressive
@@ -36,9 +40,42 @@ describe WPScan::Finders::Users::WpJsonApi do
expect(user.id).to eql 1
expect(user.username).to eql 'admin'
expect(user.confidence).to eql 100
expect(user.interesting_entries).to eql ['http://wp.lab/wp-json/wp/v2/users/']
expect(user.interesting_entries).to eql ['http://wp.lab/wp-json/wp/v2/users/?page=1&per_page=100']
end
end
end
end
context 'when multiple pages of results' do
before do
stub_request(:get, finder.api_url)
.with(query: { page: 1, per_page: 100 })
.to_return(body: File.read(fixtures.join('4.7.2.json')), headers: { 'X-WP-TotalPages' => 2 })
stub_request(:get, finder.api_url)
.with(query: { page: 2, per_page: 100 })
.to_return(body: File.read(fixtures.join('4.7.2-2.json')), headers: { 'X-WP-TotalPages' => 2 })
end
it 'returns the expected array of users' do
users = finder.aggressive
expect(users.size).to eql 2
user = users.first
expect(user.id).to eql 1
expect(user.username).to eql 'admin'
expect(user.confidence).to eql 100
expect(user.interesting_entries).to eql ['http://wp.lab/wp-json/wp/v2/users/?page=1&per_page=100']
user = users.second
expect(user.id).to eql 20
expect(user.username).to eql 'user'
expect(user.confidence).to eql 100
expect(user.interesting_entries).to eql ['http://wp.lab/wp-json/wp/v2/users/?page=2&per_page=100']
end
end
end
end

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::WpVersion::AtomGenerator do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { Pathname.new(FINDERS_FIXTURES).join('wp_version', 'atom_generator') }
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'atom_generator') }
let(:atom_fixture) { File.read(fixtures.join('feed', 'atom')) }
describe '#passive, #aggressive' do
@@ -36,7 +36,7 @@ describe WPScan::Finders::WpVersion::AtomGenerator do
end
context 'when atom links in homepage' do
let(:homepage_fixture) { File.join(fixtures, 'links.html') }
let(:homepage_fixture) { fixtures.join('links.html') }
it 'returns the expected from #passive' do
stub_request(:get, target.url('?feed=atom')).to_return(body: atom_fixture)

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::WpVersion::RDFGenerator do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'wp_version', 'rdf_generator') }
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'rdf_generator') }
xit
end

View File

@@ -2,11 +2,11 @@ describe WPScan::Finders::WpVersion::Readme do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'wp_version', 'readme') }
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'readme') }
let(:readme_url) { url + 'readme.html' }
describe '#aggressive' do
before { stub_request(:get, readme_url).to_return(body: File.read(File.join(fixtures, file))) }
before { stub_request(:get, readme_url).to_return(body: File.read(fixtures.join(file))) }
after do
expect(target).to receive(:sub_dir).and_return(false)

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::WpVersion::RSSGenerator do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'wp_version', 'rss_generator') }
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'rss_generator') }
xit
end

View File

@@ -2,7 +2,7 @@ describe WPScan::Finders::WpVersion::UniqueFingerprinting do
subject(:finder) { described_class.new(target) }
let(:target) { WPScan::Target.new(url).extend(CMSScanner::Target::Server::Apache) }
let(:url) { 'http://ex.lo/' }
let(:fixtures) { File.join(FINDERS_FIXTURES, 'wp_version', 'unique_fingerprinting') }
let(:fixtures) { FINDERS_FIXTURES.join('wp_version', 'unique_fingerprinting') }
xit
end

View File

@@ -3,14 +3,14 @@ describe WPScan::Theme do
let(:slug) { 'spec' }
let(:blog) { WPScan::Target.new('http://wp.lab/') }
let(:opts) { {} }
let(:fixtures) { File.join(FIXTURES, 'models', 'theme') }
let(:fixtures) { FIXTURES.join('models', 'theme') }
before { expect(blog).to receive(:content_dir).at_least(1).and_return('wp-content') }
describe '#new' do
before do
stub_request(:get, /.*\.css\z/)
.to_return(body: File.read(File.join(fixtures, 'style.css')))
.to_return(body: File.read(fixtures.join('style.css')))
end
its(:url) { should eql 'http://wp.lab/wp-content/themes/spec/' }
@@ -37,7 +37,7 @@ describe WPScan::Theme do
describe '#version' do
after do
stub_request(:get, /.*\.css\z/)
.to_return(body: File.read(File.join(fixtures, 'style.css')))
.to_return(body: File.read(fixtures.join('style.css')))
expect(WPScan::Finders::ThemeVersion::Base).to receive(:find).with(theme, @expected_opts)
theme.version(version_opts)
@@ -91,7 +91,7 @@ describe WPScan::Theme do
describe '#parent_theme' do
before do
stub_request(:get, blog.url('wp-content/themes/spec/style.css'))
.to_return(body: File.read(File.join(fixtures, main_theme)))
.to_return(body: File.read(fixtures.join(main_theme)))
end
context 'when no template' do
@@ -108,7 +108,7 @@ describe WPScan::Theme do
before do
stub_request(:get, parent_url)
.to_return(body: File.read(File.join(fixtures, 'style.css')))
.to_return(body: File.read(fixtures.join('style.css')))
end
%w[child_style windows_line_endings].each do |fixture|

View File

@@ -1,7 +1,7 @@
describe WPScan::Timthumb do
subject(:timthumb) { described_class.new(url, opts) }
let(:url) { 'http://wp.lab/wp-content/timthumb.php' }
let(:fixtures) { File.join(FIXTURES, 'models', 'timthumb') }
let(:fixtures) { FIXTURES.join('models', 'timthumb') }
let(:opts) { {} }
describe '#new' do
@@ -59,7 +59,7 @@ describe WPScan::Timthumb do
describe '#webshot_enabled?' do
before do
stub_request(:get, /#{timthumb.url}\?src=.*&webshot=1/i)
.to_return(body: File.read(File.join(fixtures, fixture)))
.to_return(body: File.read(fixtures.join(fixture)))
end
context 'when enabled' do

View File

@@ -1,7 +1,7 @@
describe 'App::Views' do
let(:target_url) { 'http://ex.lo/' }
let(:target) { WPScan::Target.new(target_url) }
let(:fixtures) { File.join(SPECS, 'output') }
let(:fixtures) { SPECS.join('output') }
# CliNoColour is used to test the CLI output to avoid the painful colours
# in the expected output.
@@ -23,7 +23,7 @@ describe 'App::Views' do
view_filename = defined?(expected_view) ? expected_view : view
view_filename = "#{view_filename}.#{formatter.to_s.underscore.downcase}"
controller_dir = controller.class.to_s.demodulize.underscore.downcase
expected_output = File.read(File.join(fixtures, controller_dir, view_filename))
expected_output = File.read(fixtures.join(controller_dir, view_filename))
expect($stdout).to receive(:puts).with(expected_output)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,412 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Ad Blocks 1.0.0\n"
"POT-Creation-Date: 2019-01-29 02:40+0200\n"
"PO-Revision-Date: 2016-07-05 22:59+0300\n"
"Last-Translator: \n"
"Language-Team: Sergey Kravchenko\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2\n"
"X-Poedit-Basepath: ..\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"
"Language: ru\n"
"X-Poedit-KeywordsList: __;_e;esc_attr_e;_x;_n\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-SearchPathExcluded-0: includes/plugins/cmb2\n"
#: includes/class-calendar-functions.php:49
#: includes/class-calendar-functions.php:63
msgid "Sun"
msgstr ""
#: includes/class-calendar-functions.php:50
#: includes/class-calendar-functions.php:57
msgid "Mon"
msgstr ""
#: includes/class-calendar-functions.php:51
#: includes/class-calendar-functions.php:58
msgid "Tue"
msgstr ""
#: includes/class-calendar-functions.php:52
#: includes/class-calendar-functions.php:59
msgid "Wed"
msgstr ""
#: includes/class-calendar-functions.php:53
#: includes/class-calendar-functions.php:60
msgid "Thu"
msgstr ""
#: includes/class-calendar-functions.php:54
#: includes/class-calendar-functions.php:61
msgid "Fri"
msgstr ""
#: includes/class-calendar-functions.php:55
#: includes/class-calendar-functions.php:62
msgid "Sat"
msgstr ""
#: includes/class-calendar-functions.php:76
#: includes/class-calendar-functions.php:90
msgid "Su"
msgstr ""
#: includes/class-calendar-functions.php:77
#: includes/class-calendar-functions.php:84
msgid "Mo"
msgstr ""
#: includes/class-calendar-functions.php:78
#: includes/class-calendar-functions.php:85
msgid "Tu"
msgstr ""
#: includes/class-calendar-functions.php:79
#: includes/class-calendar-functions.php:86
msgid "We"
msgstr ""
#: includes/class-calendar-functions.php:80
#: includes/class-calendar-functions.php:87
msgid "Th"
msgstr ""
#: includes/class-calendar-functions.php:81
#: includes/class-calendar-functions.php:88
msgid "Fr"
msgstr ""
#: includes/class-calendar-functions.php:82
#: includes/class-calendar-functions.php:89
msgid "Sa"
msgstr ""
#: includes/class-cmb2-admin.php:90
msgid "Shortcode options"
msgstr ""
#: includes/class-cmb2-admin.php:100
msgid "Shortcode name param"
msgstr ""
#: includes/class-cmb2-admin.php:111
msgid "Auto posting"
msgstr ""
#: includes/class-cmb2-admin.php:121
msgid "Auto add to posts"
msgstr ""
#: includes/class-cmb2-admin.php:125 includes/class-settings-admin.php:348
msgid "No"
msgstr ""
#: includes/class-cmb2-admin.php:126 includes/class-settings-admin.php:347
msgid "Yes"
msgstr ""
#: includes/class-cmb2-admin.php:132
msgid "Insert location"
msgstr ""
#: includes/class-cmb2-admin.php:136
msgid "Before content"
msgstr ""
#: includes/class-cmb2-admin.php:137
msgid "After content"
msgstr ""
#: includes/class-cmb2-admin.php:143
msgid "Post types"
msgstr ""
#: includes/class-post-types.php:56 includes/class-post-types.php:57
msgid "Ad Block"
msgstr ""
#: includes/class-post-types.php:58 includes/class-post-types.php:59
#: includes/class-post-types.php:65 includes/class-post-types.php:76
#: includes/widgets/class-adblocks.php:10
msgid "Ad Blocks"
msgstr ""
#: includes/class-post-types.php:60
msgid "Add new"
msgstr ""
#: includes/class-post-types.php:61
msgid "Add New Ad Block"
msgstr ""
#: includes/class-post-types.php:62
msgid "New Ad Block"
msgstr ""
#: includes/class-post-types.php:63
msgid "Edit Ad Block"
msgstr ""
#: includes/class-post-types.php:64
msgid "View Ad Block"
msgstr ""
#: includes/class-post-types.php:66
msgid "Search Ad Block"
msgstr ""
#: includes/class-post-types.php:67
msgid "Parent Ad Block:"
msgstr ""
#: includes/class-post-types.php:68
msgid "Not found."
msgstr ""
#: includes/class-post-types.php:69
msgid "Not found in Trash."
msgstr ""
#: includes/class-post-types.php:70
msgid "Update Ad Block"
msgstr ""
#: includes/class-posts-admin.php:37
msgid "Shortcode"
msgstr ""
#: includes/class-posts-admin.php:38
msgid "Date"
msgstr ""
#: includes/class-settings-admin.php:55
#: includes/class-settings-admin.php:56
#: includes/class-settings-admin.php:74
msgid "Ad Blocks Settings"
msgstr ""
#: includes/class-settings-admin.php:184
msgid "General"
msgstr ""
#: includes/class-settings-admin.php:191
msgid "Use classic editor for Ad Block post type"
msgstr ""
#: includes/class-settings-admin.php:200
msgid "Date format"
msgstr ""
#: includes/class-settings-admin.php:279
msgid "Upload"
msgstr ""
#: includes/class-settings-admin.php:287
msgid "Custom Image"
msgstr ""
#: includes/class-settings-admin.php:289
msgid "Upload Image"
msgstr ""
#: includes/class-settings-admin.php:361
msgid "d/m/Y"
msgstr ""
#: includes/class-settings-admin.php:362
msgid "m/d/Y"
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Base.php:422
#, php-format
msgid ""
"The \"%1$s\" field parameter has been deprecated in favor of the \"%2$s"
"\" parameter."
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Base.php:426
#, php-format
msgid ""
"Using the \"%1$s\" field parameter as a callback has been deprecated in "
"favor of the \"%2$s\" parameter."
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Base.php:456
#, php-format
msgid ""
"%1$s was called with a parameter that is <strong>deprecated</strong> "
"since version %2$s! %3$s"
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Base.php:458
#, php-format
msgid ""
"%1$s was called with a parameter that is <strong>deprecated</strong> "
"since version %2$s with no alternative available."
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_JS.php:200
msgid "mm/dd/yy"
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_JS.php:220
msgid "hh:mm TT"
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Options_Hookup.php:139
msgid "Nothing to update."
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Options_Hookup.php:143
msgid "Settings updated."
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_Types.php:232
msgid "Custom CMB2 field type classes must extend CMB2_Type_Base."
msgstr ""
#: includes/vendors/cmb2/includes/CMB2_hookup.php:466
#, php-format
msgid "Toggle panel: %s"
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller.php:257
msgid "This box does not have read permissions."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller.php:277
msgid "This box does not have write permissions."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller.php:300
msgid ""
"No box found by that id. A box needs to be registered with the "
"\"show_in_rest\" parameter configured."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller.php:378
msgid "A human-readable description of the object."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller.php:385
msgid "The id for the object."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller.php:392
msgid "The title for the object."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Boxes.php:51
msgid "Includes the registered fields for the box in the response."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Boxes.php:72
msgid ""
"Includes the fully rendered attributes, 'form_open', 'form_close', as "
"well as the enqueued 'js_dependencies' script handles, and "
"'css_dependencies' stylesheet handles."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Boxes.php:122
msgid "No boxes found."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:27
msgid ""
"Includes the box object which the fields are registered to in the "
"response."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:30
msgid ""
"When the '_rendered' argument is passed, the renderable field attributes "
"will be returned fully rendered. By default, the names of the callback "
"handers for the renderable attributes will be returned."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:33
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:36
msgid ""
"To view or modify the field's value, the 'object_id' and 'object_type' "
"arguments are required."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:236
msgid ""
"CMB2 Field value cannot be updated without the value parameter specified."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:297
msgid ""
"CMB2 Field value cannot be modified without the object_id and "
"object_type parameters specified."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:312
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:341
msgid "No field found by that id."
msgstr ""
#: includes/vendors/cmb2/includes/rest-api/CMB2_REST_Controller_Fields.php:415
#, php-format
msgid "Value Error for %s"
msgstr ""
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:25
#, php-format
msgid "Method '%s' must be overridden."
msgstr ""
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:35
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:47
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:59
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:71
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:83
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:95
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:107
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:119
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:131
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:143
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:155
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:168
#, php-format
msgid "Method '%s' not implemented. Must be overridden in subclass."
msgstr ""
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:273
msgid "Current page of the collection."
msgstr ""
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:281
msgid "Maximum number of items to be returned in result set."
msgstr ""
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:290
msgid "Limit results to those matching a string."
msgstr ""
#: includes/vendors/cmb2/includes/shim/WP_REST_Controller.php:308
msgid ""
"Scope under which the request is made; determines fields present in "
"response."
msgstr ""
#: includes/widgets/class-adblocks.php:12
msgid "Show Ad Blocks"
msgstr ""
#: includes/widgets/class-adblocks.php:51
msgid "Title:"
msgstr ""
#: includes/widgets/class-adblocks.php:56
msgid "Ad block name(s):"
msgstr ""

View File

@@ -0,0 +1,20 @@
{
"name": "adrecord-affiliate",
"version": "1.0.0",
"private": true,
"dependencies": {
"react": "^16.7.0",
"react-dom": "^16.7.0",
"react-toggle-component": "^1.0.5",
"react-wp-scripts": "0.2.0",
"styled-components": "^4.1.3"
},
"scripts": {
"start": "react-wp-scripts start",
"build": "react-scripts build",
"make-pot": "wp i18n make-pot . --exclude=src,build --debug",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject",
"zip": "zip ../adrecord-affiliate.zip -r build src public adrecord-affiliate.php react-wp-scripts.php readme.txt yarn.lock languages php package.json build-tools.md"
}
}

View File

@@ -0,0 +1,118 @@
# Copyright (C) 2019 Adrecord
# This file is distributed under the same license as the Adrecord Affiliate plugin.
msgid ""
msgstr ""
"Project-Id-Version: Adrecord Affiliate 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/adrecord-affiliate\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-01-24T13:33:13+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: adrecord\n"
#. Plugin Name of the plugin
msgid "Adrecord Affiliate"
msgstr ""
#. Plugin URI of the plugin
msgid "https://wordpress.org/plugins/adrecord-affiliate/"
msgstr ""
#. Description of the plugin
msgid "Adrecords WordPress plugin for affiliates. Easily enable and make use of clean links and other features right in your WordPress site."
msgstr ""
#. Author of the plugin
msgid "Adrecord"
msgstr ""
#. Author URI of the plugin
msgid "https://www.adrecord.com"
msgstr ""
#: php/App.php:176
msgid "Loading"
msgstr ""
#: php/LanguageDictionary.php:7
msgid "Welcome to the Adrecord Wordpress plugin"
msgstr ""
#: php/LanguageDictionary.php:8
msgid "To get started, enter your API-key to connect with your account at Adrecord."
msgstr ""
#: php/LanguageDictionary.php:9
msgid "Welcome"
msgstr ""
#: php/LanguageDictionary.php:10
msgid "API-key:"
msgstr ""
#: php/LanguageDictionary.php:11
msgid "You can find your API-key "
msgstr ""
#: php/LanguageDictionary.php:12
msgid "in the Adrecord dashboard advanced section."
msgstr ""
#: php/LanguageDictionary.php:13
msgid "Clean links enabled:"
msgstr ""
#: php/LanguageDictionary.php:14
msgid "Clean links is a technique for linking to advertisers with \"regular links\", for example, directly to http://www.example.com instead of https://click.adrecord.com/?p=19&c=TEST. When you have enabled clean links and have entered a regular link to one of your advertisers in your content, please try to click one of your links and make sure you can see the clicks counting in the Adrecord dashboard."
msgstr ""
#: php/LanguageDictionary.php:15
msgid "Latest programs"
msgstr ""
#: php/LanguageDictionary.php:16
msgid "About Adrecord"
msgstr ""
#: php/LanguageDictionary.php:17
msgid ""
"Adrecord is an affiliate network with long experience and broad \n"
" knowledge that helps with affiliate marketing in a friendly and\n"
" transparent way."
msgstr ""
#: php/LanguageDictionary.php:20
msgid ""
"With our help you can set up and administer an affiliate program\n"
" according to your terms, we will take full responsibility for\n"
" the technology, finance and support, and create relationships\n"
" with talented affiliates."
msgstr ""
#: php/LanguageDictionary.php:24
msgid "Get started with Adrecord"
msgstr ""
#: php/LanguageDictionary.php:25
msgid ""
"Don't have an affiliate account at Adrecord? No worries, just\n"
" sign up for free here and "
msgstr ""
#: php/LanguageDictionary.php:27
msgid "create your account here."
msgstr ""
#: php/LanguageDictionary.php:28
msgid ""
"For more information on how to get started, please have a look\n"
" at our "
msgstr ""
#: php/LanguageDictionary.php:30
msgid "quick-start guide."
msgstr ""

View File

@@ -0,0 +1,17 @@
{
"name": "my-block-cgb-guten-block",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"dependencies": {
"cgb-scripts": "1.13.0",
"classnames": "^2.2.6",
"moment": "^2.23.0",
"query-string": "^6.2.0",
"querystringify": "^2.1.0"
}
}

View File

@@ -0,0 +1,396 @@
# Copyright (C) 2019 AnalogWP
# This file is distributed under the same license as the AnalogWP Templates plugin.
msgid ""
msgstr ""
"Project-Id-Version: AnalogWP Templates 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/analogwp-templates\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-02-20T09:13:27+00:00\n"
"PO-Revision-Date: 2019-02-20T09:13:27+00:00\n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: ang\n"
#: src/js/app/Header.js:101
#: src/js/app/popup.js:125
#: languages/ang-translations.php:10
msgid "Close"
msgstr ""
#: src/js/app/Header.js:86
#: languages/ang-translations.php:13
msgid "Templates library refreshed"
msgstr ""
#: src/js/app/Header.js:87
#: languages/ang-translations.php:16
msgid "Error refreshing templates library, please try again."
msgstr ""
#: src/js/app/Header.js:91
#: languages/ang-translations.php:19
msgid "Syncing..."
msgstr ""
#: src/js/app/Header.js:92
#: languages/ang-translations.php:22
msgid "Sync Library"
msgstr ""
#: src/js/app/ProModal.js:81
#: languages/ang-translations.php:25
msgid "Back to library"
msgstr ""
#: src/js/app/ProModal.js:83
#: languages/ang-translations.php:28
msgid "Elevate your Elementor design with Analog Pro"
msgstr ""
#: src/js/app/ProModal.js:84
#: languages/ang-translations.php:31
msgid "Step up your workflow with unlimited design resources for your Elementor-powered projects."
msgstr ""
#: src/js/app/ProModal.js:85
#: languages/ang-translations.php:34
msgid "Learn More"
msgstr ""
#: src/js/app/ProModal.js:88
#: languages/ang-translations.php:37
msgid "Why Pro"
msgstr ""
#: src/js/app/ProModal.js:90
#: languages/ang-translations.php:40
msgid "Access to all template library"
msgstr ""
#: src/js/app/ProModal.js:91
#: languages/ang-translations.php:43
msgid "Templates for singles, archives, popups and more"
msgstr ""
#: src/js/app/ProModal.js:92
#: languages/ang-translations.php:46
msgid "Multi-niche, human made design that makes sense"
msgstr ""
#: src/js/app/ProModal.js:93
#: languages/ang-translations.php:49
msgid "Unlimited license for peace of mind"
msgstr ""
#: src/js/app/ProModal.js:96
#: languages/ang-translations.php:52
msgid "* Requires Elementor Pro"
msgstr ""
#: src/js/app/Templates.js:274
#: languages/ang-translations.php:55
msgid "Blimey! Your template has been imported."
msgstr ""
#: src/js/app/Templates.js:279
#: languages/ang-translations.php:58
msgid "Edit Template"
msgstr ""
#: src/js/app/Templates.js:284
#: languages/ang-translations.php:61
msgid "Importing "
msgstr ""
#: src/js/app/Templates.js:284
#: languages/ang-translations.php:64
msgid "Imported "
msgstr ""
#: src/js/app/Templates.js:291
#: languages/ang-translations.php:67
msgid "Import this template to your library to make it available in your Elementor "
msgstr ""
#: src/js/app/Templates.js:292
#: languages/ang-translations.php:70
msgid "Saved Templates"
msgstr ""
#: src/js/app/Templates.js:293
#: languages/ang-translations.php:73
msgid " list for future use."
msgstr ""
#: src/js/app/Templates.js:302
#: languages/ang-translations.php:76
msgid "Import to Library"
msgstr ""
#: src/js/app/Templates.js:313
#: languages/ang-translations.php:79
msgid "Create a new page from this template to make it available as a draft page in your Pages list."
msgstr ""
#: src/js/app/Templates.js:317
#: languages/ang-translations.php:82
msgid "Enter a Page Name"
msgstr ""
#: src/js/app/Templates.js:328
#: languages/ang-translations.php:85
msgid "Import to page"
msgstr ""
#: src/js/app/Templates.js:359
#: languages/ang-translations.php:88
msgid "Pro"
msgstr ""
#: src/js/app/Templates.js:367
#: languages/ang-translations.php:91
msgid "Preview"
msgstr ""
#: src/js/app/Templates.js:370
#: languages/ang-translations.php:94
msgid "Import"
msgstr ""
#: src/js/app/filters.js:107
#: languages/ang-translations.php:97
msgid "Show All"
msgstr ""
#: src/js/app/filters.js:112
#: languages/ang-translations.php:100
msgid "Latest"
msgstr ""
#: src/js/app/filters.js:113
#: languages/ang-translations.php:103
msgid "Popular"
msgstr ""
#: src/js/app/filters.js:125
#: languages/ang-translations.php:106
msgid "Back to all"
msgstr ""
#: src/js/app/filters.js:126
#: languages/ang-translations.php:109
msgid "My Favorites"
msgstr ""
#: src/js/app/filters.js:130
#: languages/ang-translations.php:112
msgid "Filter"
msgstr ""
#: src/js/app/filters.js:142
#: languages/ang-translations.php:115
msgid "Sort By"
msgstr ""
#: src/js/app/filters.js:156
#: languages/ang-translations.php:118
msgid "Only Show Free Templates"
msgstr ""
#: src/js/app/modal.js:73
#: languages/ang-translations.php:121
msgid "Open Preview in New Tab"
msgstr ""
#: src/js/app/modal.js:79
#: languages/ang-translations.php:124
msgid "Insert Layout"
msgstr ""
#. Plugin Name of the plugin
#: languages/ang-translations.php:127
msgid "AnalogWP Templates"
msgstr ""
#. Plugin URI of the plugin
#. Author URI of the plugin
#: languages/ang-translations.php:131
msgid "https://analogwp.com/"
msgstr ""
#. Description of the plugin
#: languages/ang-translations.php:134
msgid "Handfully crafted Elementor templates packs."
msgstr ""
#. Author of the plugin
#: inc/register-settings.php:18
#: languages/ang-translations.php:138
msgid "AnalogWP"
msgstr ""
#: inc/register-settings.php:17
#: languages/ang-translations.php:141
msgid "Analog Templates"
msgstr ""
#: inc/register-settings.php:53
#: languages/ang-translations.php:144
msgid "Imported Count"
msgstr ""
#: inc/register-settings.php:65
#: languages/ang-translations.php:147
msgid "Imported templates"
msgstr ""
#: inc/class-licensemanager.php:62
#: languages/ang-translations.php:150
msgid "Theme License"
msgstr ""
#: inc/class-licensemanager.php:63
#: languages/ang-translations.php:153
msgid "Enter your theme license key received upon purchase from <a target=\"_blank\" href=\"https://analogwp.com/account/\">AnalogWP</a>."
msgstr ""
#: inc/class-licensemanager.php:67
#: languages/ang-translations.php:156
msgid "License Key"
msgstr ""
#: inc/class-licensemanager.php:68
#: languages/ang-translations.php:159
msgid "License Action"
msgstr ""
#: inc/class-licensemanager.php:69
#: languages/ang-translations.php:162
msgid "Deactivate License"
msgstr ""
#: inc/class-licensemanager.php:70
#: languages/ang-translations.php:165
msgid "Activate License"
msgstr ""
#: inc/class-licensemanager.php:71
#: inc/class-licensemanager.php:90
#: languages/ang-translations.php:169
msgid "License status is unknown."
msgstr ""
#: inc/class-licensemanager.php:72
#: languages/ang-translations.php:172
msgid "Renew?"
msgstr ""
#: inc/class-licensemanager.php:73
#: languages/ang-translations.php:175
msgid "unlimited"
msgstr ""
#: inc/class-licensemanager.php:74
#: languages/ang-translations.php:178
msgid "License key is active."
msgstr ""
#. translators: %s: expiration date
#: inc/class-licensemanager.php:76
#: languages/ang-translations.php:181
msgid "Expires %s."
msgstr ""
#: inc/class-licensemanager.php:77
#: languages/ang-translations.php:184
msgid "Lifetime License."
msgstr ""
#. translators: %1$s: active sites, %2$s: sites limit
#: inc/class-licensemanager.php:79
#: languages/ang-translations.php:187
msgid "You have %1$s / %2$s sites activated."
msgstr ""
#. translators: %s: product name
#: inc/class-licensemanager.php:81
#: languages/ang-translations.php:190
msgid "License key expired %s."
msgstr ""
#: inc/class-licensemanager.php:82
#: languages/ang-translations.php:193
msgid "License key has expired."
msgstr ""
#: inc/class-licensemanager.php:83
#: languages/ang-translations.php:196
msgid "License keys do not match. <br><br> Enter your theme license key received upon purchase from <a target=\"_blank\" href=\"https://analogwp.com/account/\">AnalogWP</a>."
msgstr ""
#: inc/class-licensemanager.php:87
#: languages/ang-translations.php:199
msgid "License is inactive."
msgstr ""
#: inc/class-licensemanager.php:88
#: languages/ang-translations.php:202
msgid "License key is disabled."
msgstr ""
#: inc/class-licensemanager.php:89
#: languages/ang-translations.php:205
msgid "Site is inactive."
msgstr ""
#: inc/class-licensemanager.php:91
#: languages/ang-translations.php:208
msgid "Updating this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to update."
msgstr ""
#: inc/class-licensemanager.php:92
msgid "<strong>%1$s %2$s</strong> is available. <a href=\"%3$s\" class=\"thickbox\" title=\"%4$s\">Check out what's new</a> or <a href=\"%5$s\" %6$s>update now</a>."
msgstr ""
#: inc/class-base.php:41
#: inc/class-base.php:51
#: languages/ang-translations.php:215
msgid "Something went wrong."
msgstr ""
#: inc/api/class-local.php:288
msgid "Setting updated."
msgstr ""
#: languages/ang-translations.php:211
msgid "<strong>%1$s %2$s</strong> is available. <a href=\"%3$s\" class=\"thickbox\" title=\"%4s\">Check out what's new</a> or <a href=\"%5$s\"%6$s>update now</a>."
msgstr ""
#: languages/ang-translations.php:219
#: analogwp-templates.php:62
#: analogwp-templates.php:72
msgid "Cheatin&#8217; huh?"
msgstr ""
#: languages/ang-translations.php:222
#: analogwp-templates.php:240
msgid "Analog Templates is not working because you need to activate the Elementor plugin."
msgstr ""
#: languages/ang-translations.php:225
#: analogwp-templates.php:241
msgid "Activate Elementor Now"
msgstr ""
#: languages/ang-translations.php:228
#: analogwp-templates.php:248
msgid "Analog Templates is not working because you need to install the Elementor plugin."
msgstr ""
#: languages/ang-translations.php:231
#: analogwp-templates.php:249
msgid "Install Elementor Now"
msgstr ""

View File

@@ -0,0 +1,800 @@
# Copyright (C) 2018 Angelleye PayPal Invoicing
# This file is distributed under the same license as the Angelleye PayPal Invoicing package.
msgid ""
msgstr ""
"Project-Id-Version: Angelleye PayPal Invoicing 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/angelleye-paypal-"
"invoicing\n"
"POT-Creation-Date: 2018-10-09 12:30+0530\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2018-10-09 13:01+0530\n"
"Language-Team: \n"
"X-Generator: Poedit 2.1.1\n"
"Last-Translator: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: en_US\n"
#: admin/class-angelleye-paypal-invoicing-admin.php:120
msgid "Would you like to delete the invoice at PayPal?"
msgstr "Would you like to delete the invoice at PayPal?"
#: admin/class-angelleye-paypal-invoicing-admin.php:140
msgid "Manage invoices"
msgstr "Manage invoices"
#: admin/class-angelleye-paypal-invoicing-admin.php:141
msgid "PayPal invoice"
msgstr "PayPal invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:142
msgctxt "Manage invoices"
msgid "Manage invoices"
msgstr "Manage invoices"
#: admin/class-angelleye-paypal-invoicing-admin.php:143
msgid "Add invoice"
msgstr "Add invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:144
#: admin/class-angelleye-paypal-invoicing-admin.php:437
msgid "Add New invoice"
msgstr "Add New invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:145
msgid "Edit"
msgstr "Edit"
#: admin/class-angelleye-paypal-invoicing-admin.php:146
msgid "Invoice Details"
msgstr "Invoice Details"
#: admin/class-angelleye-paypal-invoicing-admin.php:147
msgid "New invoice"
msgstr "New invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:148
#: admin/class-angelleye-paypal-invoicing-admin.php:149
msgid "View PayPal invoice"
msgstr "View PayPal invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:150
msgid "Search PayPal invoices"
msgstr "Search PayPal invoices"
#: admin/class-angelleye-paypal-invoicing-admin.php:151
msgid "No PayPal invoice found"
msgstr "No PayPal invoice found"
#: admin/class-angelleye-paypal-invoicing-admin.php:152
msgid "No PayPal invoice found in trash"
msgstr "No PayPal invoice found in trash"
#: admin/class-angelleye-paypal-invoicing-admin.php:153
msgid "Parent PayPal invoice"
msgstr "Parent PayPal invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:155
msgid "This is where you can add new PayPal Invoice to your store."
msgstr "This is where you can add new PayPal Invoice to your store."
#: admin/class-angelleye-paypal-invoicing-admin.php:303
msgid ""
"PayPal API credentials is not set up, <a href=\"?page=apifw_settings\" class="
"\"alert-link\">Click here to set up</a>."
msgstr ""
"PayPal API credentials is not set up, <a href=\"?page=apifw_settings\" class="
"\"alert-link\">Click here to set up</a>."
#: admin/class-angelleye-paypal-invoicing-admin.php:321
msgid "Your settings have been saved."
msgstr "Your settings have been saved."
#: admin/class-angelleye-paypal-invoicing-admin.php:371
msgid "Successfully deleted log files."
msgstr "Successfully deleted log files."
#: admin/class-angelleye-paypal-invoicing-admin.php:446
msgid "Invoice ID"
msgstr "Invoice ID"
#: admin/class-angelleye-paypal-invoicing-admin.php:447
msgctxt "angelleye-paypal-invoicing"
msgid "Date"
msgstr "Date"
#: admin/class-angelleye-paypal-invoicing-admin.php:448
#: admin/views/html-admin-page-invoice-list.php:22
#: admin/views/html-admin-page-invoice-list.php:53
#: admin/views/html-admin-page-template_list.php:21
#: admin/views/html-admin-page-template_list.php:40
msgid "Invoice #"
msgstr "Invoice #"
#: admin/class-angelleye-paypal-invoicing-admin.php:449
msgctxt "angelleye-paypal-invoicing"
msgid "Recipient"
msgstr "Recipient"
#: admin/class-angelleye-paypal-invoicing-admin.php:450
#: admin/views/html-admin-page-invoice-list.php:24
#: admin/views/html-admin-page-invoice-list.php:55
#: admin/views/html-admin-page-template_list.php:23
#: admin/views/html-admin-page-template_list.php:42
msgid "Status"
msgstr "Status"
#: admin/class-angelleye-paypal-invoicing-admin.php:451
#: admin/views/html-admin-page-create-invoice.php:106
#: admin/views/html-admin-page-create-invoice.php:116
#: admin/views/html-admin-page-invoice-list.php:25
#: admin/views/html-admin-page-invoice-list.php:56
#: admin/views/html-admin-page-template_list.php:25
#: admin/views/html-admin-page-template_list.php:44
#: admin/views/html-admin-page-view-invoice.php:174
msgid "Amount"
msgstr "Amount"
#: admin/class-angelleye-paypal-invoicing-admin.php:607
#: admin/views/html-admin-page-view-invoice.php:39
msgid "View PayPal Invoice"
msgstr "View PayPal Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:610
#: admin/class-angelleye-paypal-invoicing-admin.php:625
#: admin/views/html-admin-page-create-invoice.php:21
#: admin/views/html-admin-page-create-invoice.php:232
#: admin/views/html-admin-page-view-invoice.php:42
msgid "Send Invoice"
msgstr "Send Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:611
#: admin/class-angelleye-paypal-invoicing-admin.php:628
#: admin/views/html-admin-page-view-invoice.php:43
msgid "Delete Invoice"
msgstr "Delete Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:614
#: admin/class-angelleye-paypal-invoicing-admin.php:626
#: admin/views/html-admin-page-view-invoice.php:46
msgid "Send Invoice Reminder"
msgstr "Send Invoice Reminder"
#: admin/class-angelleye-paypal-invoicing-admin.php:617
#: admin/class-angelleye-paypal-invoicing-admin.php:627
#: admin/views/html-admin-page-view-invoice.php:49
msgid "Cancel Invoice"
msgstr "Cancel Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:643
#: admin/class-angelleye-paypal-invoicing-admin.php:766
msgid "You sent a invoice to %1$s"
msgstr "You sent a invoice to %1$s"
#: admin/class-angelleye-paypal-invoicing-admin.php:657
#: admin/class-angelleye-paypal-invoicing-admin.php:775
msgid "You sent a payment reminder to %1$s"
msgstr "You sent a payment reminder to %1$s"
#: admin/class-angelleye-paypal-invoicing-admin.php:670
#: admin/class-angelleye-paypal-invoicing-admin.php:979
msgid "You canceled this invoice."
msgstr "You canceled this invoice."
#: admin/class-angelleye-paypal-invoicing-admin.php:703
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:22
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:181
msgid "PayPal Invoice"
msgstr "PayPal Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:704
msgid "paypal_invoice"
msgstr "paypal_invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:783
msgid "You canceled this invoice"
msgstr "You canceled this invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:849
msgid "Save PayPal Invoice Draft"
msgstr "Save PayPal Invoice Draft"
#: admin/class-angelleye-paypal-invoicing-admin.php:850
#: admin/class-angelleye-paypal-invoicing-admin.php:862
msgid "Send PayPal Invoice"
msgstr "Send PayPal Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:856
msgid "Send PayPal Invoice Reminder"
msgstr "Send PayPal Invoice Reminder"
#: admin/class-angelleye-paypal-invoicing-admin.php:859
msgid "Cancel PayPal Invoice"
msgstr "Cancel PayPal Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:863
msgid "Delete PayPal Invoice"
msgstr "Delete PayPal Invoice"
#: admin/class-angelleye-paypal-invoicing-admin.php:886
msgid "Your invoice is created."
msgstr "Your invoice is created."
#: admin/class-angelleye-paypal-invoicing-admin.php:892
#: admin/class-angelleye-paypal-invoicing-admin.php:934
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:253
msgctxt "PayPal Invoice"
msgid "Awaiting payment"
msgstr "Awaiting payment"
#: admin/class-angelleye-paypal-invoicing-admin.php:918
#: admin/class-angelleye-paypal-invoicing-admin.php:928
msgid "We've sent your invoice."
msgstr "We've sent your invoice."
#: admin/class-angelleye-paypal-invoicing-admin.php:958
msgid "Your reminder is sent."
msgstr "Your reminder is sent."
#: admin/class-angelleye-paypal-invoicing-admin.php:1004
msgid "Your invoice is deleted."
msgstr "Your invoice is deleted."
#: admin/views/html-admin-page-create-invoice.php:22
#: admin/views/html-admin-page-create-invoice.php:233
msgid "Save as Draft"
msgstr "Save as Draft"
#: admin/views/html-admin-page-create-invoice.php:30
msgid "Invoice number"
msgstr "Invoice number"
#: admin/views/html-admin-page-create-invoice.php:35
msgid ""
"Invoices are numbered automatically beginning with invoice number 0001. You "
"can customize the invoice number any way you'd like, and the next number "
"will increment by 1."
msgstr ""
"Invoices are numbered automatically beginning with invoice number 0001. You "
"can customize the invoice number any way you'd like, and the next number "
"will increment by 1."
#: admin/views/html-admin-page-create-invoice.php:39
msgid "Invoice date"
msgstr "Invoice date"
#: admin/views/html-admin-page-create-invoice.php:44
msgid ""
"You can select any invoice date. This invoice will be sent today or on a "
"future date you choose."
msgstr ""
"You can select any invoice date. This invoice will be sent today or on a "
"future date you choose."
#: admin/views/html-admin-page-create-invoice.php:48
msgid "Reference"
msgstr "Reference"
#: admin/views/html-admin-page-create-invoice.php:50
msgid "Such as PO#"
msgstr "Such as PO#"
#: admin/views/html-admin-page-create-invoice.php:54
msgid "Due date"
msgstr "Due date"
#: admin/views/html-admin-page-create-invoice.php:57
msgid "No due date"
msgstr "No due date"
#: admin/views/html-admin-page-create-invoice.php:58
msgid "Due on receipt"
msgstr "Due on receipt"
#: admin/views/html-admin-page-create-invoice.php:59
msgid "Due on date specified"
msgstr "Due on date specified"
#: admin/views/html-admin-page-create-invoice.php:60
msgid "Due in 10 days"
msgstr "Due in 10 days"
#: admin/views/html-admin-page-create-invoice.php:61
msgid "Due in 15 days"
msgstr "Due in 15 days"
#: admin/views/html-admin-page-create-invoice.php:62
msgid "Due in 30 days"
msgstr "Due in 30 days"
#: admin/views/html-admin-page-create-invoice.php:63
msgid "Due in 45 days"
msgstr "Due in 45 days"
#: admin/views/html-admin-page-create-invoice.php:64
msgid "Due in 60 days"
msgstr "Due in 60 days"
#: admin/views/html-admin-page-create-invoice.php:65
msgid "Due in 90 days"
msgstr "Due in 90 days"
#: admin/views/html-admin-page-create-invoice.php:72
msgid "d/m/Y"
msgstr "d/m/Y"
#: admin/views/html-admin-page-create-invoice.php:102
#: admin/views/html-admin-page-view-invoice.php:171
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:86
msgid "Description"
msgstr "Description"
#: admin/views/html-admin-page-create-invoice.php:103
#: admin/views/html-admin-page-view-invoice.php:172
msgid "Quantity"
msgstr "Quantity"
#: admin/views/html-admin-page-create-invoice.php:104
#: admin/views/html-admin-page-view-invoice.php:173
msgid "Price"
msgstr "Price"
#: admin/views/html-admin-page-create-invoice.php:105
msgid "Tax"
msgstr "Tax"
#: admin/views/html-admin-page-create-invoice.php:112
msgid "Item name"
msgstr "Item name"
#: admin/views/html-admin-page-create-invoice.php:113
msgid "0"
msgstr "0"
#: admin/views/html-admin-page-create-invoice.php:114
#: admin/views/html-admin-page-invoice-setting.php:167
msgid "0.00"
msgstr "0.00"
#: admin/views/html-admin-page-create-invoice.php:115
msgid "Name"
msgstr "Name"
#: admin/views/html-admin-page-create-invoice.php:121
msgid "Enter detailed description (optional)"
msgstr "Enter detailed description (optional)"
#: admin/views/html-admin-page-create-invoice.php:130
msgid "Add another line item"
msgstr "Add another line item"
#: admin/views/html-admin-page-create-invoice.php:143
msgid "Allow partial payment"
msgstr "Allow partial payment"
#: admin/views/html-admin-page-create-invoice.php:143
msgid ""
"Your customer will be allowed to enter any payment amount above the minimum "
"until the invoice is paid in full."
msgstr ""
"Your customer will be allowed to enter any payment amount above the minimum "
"until the invoice is paid in full."
#: admin/views/html-admin-page-create-invoice.php:148
msgid "Minimum amount due (optional)"
msgstr "Minimum amount due (optional)"
#: admin/views/html-admin-page-create-invoice.php:160
msgid "Allow customer to add a tip."
msgstr "Allow customer to add a tip."
#: admin/views/html-admin-page-create-invoice.php:169
#: admin/views/html-admin-page-view-invoice.php:227
msgid "Subtotal"
msgstr "Subtotal"
#: admin/views/html-admin-page-create-invoice.php:173
#: admin/views/html-admin-page-view-invoice.php:255
msgid "Discount"
msgstr "Discount"
#: admin/views/html-admin-page-create-invoice.php:186
#: admin/views/html-admin-page-view-invoice.php:235
msgid "Shipping"
msgstr "Shipping"
#: admin/views/html-admin-page-create-invoice.php:194
#: admin/views/html-admin-page-view-invoice.php:263
msgid "Total"
msgstr "Total"
#: admin/views/html-admin-page-create-invoice.php:205
msgid "Note to recipient"
msgstr "Note to recipient"
#: admin/views/html-admin-page-create-invoice.php:205
msgid "Such as Thank you for your business"
msgstr "Such as Thank you for your business"
#: admin/views/html-admin-page-create-invoice.php:208
msgid "Terms and conditions"
msgstr "Terms and conditions"
#: admin/views/html-admin-page-create-invoice.php:208
msgid "Include your return or cancelation policy"
msgstr "Include your return or cancelation policy"
#: admin/views/html-admin-page-create-invoice.php:216
msgid "Add memo to self"
msgstr "Add memo to self"
#: admin/views/html-admin-page-create-invoice.php:219
msgid "Memo"
msgstr "Memo"
#: admin/views/html-admin-page-create-invoice.php:220
msgid "Add memo to self (your recipient won't see this)"
msgstr "Add memo to self (your recipient won't see this)"
#: admin/views/html-admin-page-create-invoice.php:222
msgid "Hide"
msgstr "Hide"
#: admin/views/html-admin-page-invoice-list.php:17
msgid "Manage Invoices"
msgstr "Manage Invoices"
#: admin/views/html-admin-page-invoice-list.php:21
#: admin/views/html-admin-page-invoice-list.php:52
#: admin/views/html-admin-page-template_list.php:20
#: admin/views/html-admin-page-template_list.php:39
msgid "Date"
msgstr "Date"
#: admin/views/html-admin-page-invoice-list.php:23
#: admin/views/html-admin-page-invoice-list.php:54
#: admin/views/html-admin-page-template_list.php:22
#: admin/views/html-admin-page-template_list.php:41
msgid "Recipient"
msgstr "Recipient"
#: admin/views/html-admin-page-invoice-list.php:46
#: admin/views/html-admin-page-template_list.php:33
msgid "You havent created any invoices"
msgstr "You havent created any invoices"
#: admin/views/html-admin-page-invoice-setting.php:45
msgid "PayPal API Credentials"
msgstr "PayPal API Credentials"
#: admin/views/html-admin-page-invoice-setting.php:47
msgid "PayPal Sandbox"
msgstr "PayPal Sandbox"
#: admin/views/html-admin-page-invoice-setting.php:52
msgid "Enable PayPal Sandbox"
msgstr "Enable PayPal Sandbox"
#: admin/views/html-admin-page-invoice-setting.php:59
#: admin/views/html-admin-page-invoice-setting.php:61
msgid "Sandbox PayPal Email"
msgstr "Sandbox PayPal Email"
#: admin/views/html-admin-page-invoice-setting.php:65
#: admin/views/html-admin-page-invoice-setting.php:67
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:115
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:120
msgid "Sandbox Client ID"
msgstr "Sandbox Client ID"
#: admin/views/html-admin-page-invoice-setting.php:71
#: admin/views/html-admin-page-invoice-setting.php:73
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:123
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:128
msgid "Sandbox Secret"
msgstr "Sandbox Secret"
#: admin/views/html-admin-page-invoice-setting.php:78
#: admin/views/html-admin-page-invoice-setting.php:80
msgid "PayPal Email"
msgstr "PayPal Email"
#: admin/views/html-admin-page-invoice-setting.php:84
#: admin/views/html-admin-page-invoice-setting.php:86
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:139
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:144
msgid "Client ID"
msgstr "Client ID"
#: admin/views/html-admin-page-invoice-setting.php:90
#: admin/views/html-admin-page-invoice-setting.php:92
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:147
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:152
msgid "Secret"
msgstr "Secret"
#: admin/views/html-admin-page-invoice-setting.php:95
msgid "Merchant / Business Information"
msgstr "Merchant / Business Information"
#: admin/views/html-admin-page-invoice-setting.php:97
#: admin/views/html-admin-page-invoice-setting.php:99
msgid "First Name"
msgstr "First Name"
#: admin/views/html-admin-page-invoice-setting.php:103
#: admin/views/html-admin-page-invoice-setting.php:105
msgid "Last Name"
msgstr "Last Name"
#: admin/views/html-admin-page-invoice-setting.php:109
#: admin/views/html-admin-page-invoice-setting.php:111
msgid "Company Name"
msgstr "Company Name"
#: admin/views/html-admin-page-invoice-setting.php:115
#: admin/views/html-admin-page-invoice-setting.php:117
msgid "Phone Number"
msgstr "Phone Number"
#: admin/views/html-admin-page-invoice-setting.php:120
msgid "Merchant / Business Address"
msgstr "Merchant / Business Address"
#: admin/views/html-admin-page-invoice-setting.php:122
msgid "Address line 1"
msgstr "Address line 1"
#: admin/views/html-admin-page-invoice-setting.php:124
msgid "House number and street name"
msgstr "House number and street name"
#: admin/views/html-admin-page-invoice-setting.php:128
msgid "Address line 2"
msgstr "Address line 2"
#: admin/views/html-admin-page-invoice-setting.php:130
msgid "Apartment, suite, unit etc."
msgstr "Apartment, suite, unit etc."
#: admin/views/html-admin-page-invoice-setting.php:134
#: admin/views/html-admin-page-invoice-setting.php:136
msgid "City"
msgstr "City"
#: admin/views/html-admin-page-invoice-setting.php:140
msgid "Postcode / ZIP"
msgstr "Postcode / ZIP"
#: admin/views/html-admin-page-invoice-setting.php:146
msgid "State / County"
msgstr "State / County"
#: admin/views/html-admin-page-invoice-setting.php:152
msgid "Country"
msgstr "Country"
#: admin/views/html-admin-page-invoice-setting.php:157
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:155
msgid "Default Values"
msgstr "Default Values"
#: admin/views/html-admin-page-invoice-setting.php:159
msgid "Shipping Rate %"
msgstr "Shipping Rate %"
#: admin/views/html-admin-page-invoice-setting.php:161
#: admin/views/html-admin-page-invoice-setting.php:179
msgid "%"
msgstr "%"
#: admin/views/html-admin-page-invoice-setting.php:165
msgid "Shipping Amount"
msgstr "Shipping Amount"
#: admin/views/html-admin-page-invoice-setting.php:171
msgid "Tax Name"
msgstr "Tax Name"
#: admin/views/html-admin-page-invoice-setting.php:177
msgid "Tax Rate %"
msgstr "Tax Rate %"
#. translators: %s: URL
#: admin/views/html-admin-page-invoice-setting.php:183
#: admin/views/html-admin-page-invoice-setting.php:185
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:161
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:166
msgid "Note to Recipient"
msgstr "Note to Recipient"
#: admin/views/html-admin-page-invoice-setting.php:189
#: admin/views/html-admin-page-invoice-setting.php:191
#: admin/views/html-admin-page-view-invoice.php:288
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:169
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:174
msgid "Terms and Conditions"
msgstr "Terms and Conditions"
#: admin/views/html-admin-page-invoice-setting.php:194
msgid "Log Event"
msgstr "Log Event"
#: admin/views/html-admin-page-invoice-setting.php:196
msgid "Debug Log"
msgstr "Debug Log"
#: admin/views/html-admin-page-invoice-setting.php:202
msgid "Enable logging"
msgstr "Enable logging"
#: admin/views/html-admin-page-invoice-setting.php:205
msgid "Log PayPal events, inside"
msgstr "Log PayPal events, inside"
#: admin/views/html-admin-page-invoice-setting.php:211
#: admin/views/html-admin-page-invoice-setting.php:213
msgid "Delete Logs"
msgstr "Delete Logs"
#: admin/views/html-admin-page-invoice-setting.php:218
msgid "Save changes"
msgstr "Save changes"
#: admin/views/html-admin-page-template_list.php:24
#: admin/views/html-admin-page-template_list.php:43
#: admin/views/html-admin-page-view-invoice.php:34
msgid "Action"
msgstr "Action"
#: admin/views/html-admin-page-view-invoice.php:13
msgid "INVOICE"
msgstr "INVOICE"
#: admin/views/html-admin-page-view-invoice.php:59
msgid "Invoice #:"
msgstr "Invoice #:"
#: admin/views/html-admin-page-view-invoice.php:65
msgid "Invoice date:"
msgstr "Invoice date:"
#: admin/views/html-admin-page-view-invoice.php:71
msgid "Reference:"
msgstr "Reference:"
#: admin/views/html-admin-page-view-invoice.php:77
msgid "Due date:"
msgstr "Due date:"
#: admin/views/html-admin-page-view-invoice.php:88
msgid "Merchant Info"
msgstr "Merchant Info"
#: admin/views/html-admin-page-view-invoice.php:280
msgid "Notes"
msgstr "Notes"
#: includes/class-angelleye-paypal-invoicing-calculations.php:93
msgid "Item"
msgstr "Item"
#: includes/class-angelleye-paypal-invoicing-calculations.php:107
msgid "Fee"
msgstr "Fee"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:21
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:82
msgctxt "PayPal Invoice"
msgid "PayPal Invoice"
msgstr "PayPal Invoice"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:73
msgid "Enable/Disable"
msgstr "Enable/Disable"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:75
msgid "Enable PayPal Invoice"
msgstr "Enable PayPal Invoice"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:79
msgid "Title"
msgstr "Title"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:81
msgid "This controls the title which the user sees during checkout."
msgstr "This controls the title which the user sees during checkout."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:88
msgid "Payment method description that the customer will see on your checkout."
msgstr ""
"Payment method description that the customer will see on your checkout."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:89
msgid ""
"Please send a check to Store Name, Store Street, Store Town, Store State / "
"County, Store Postcode."
msgstr ""
"Please send a check to Store Name, Store Street, Store Town, Store State / "
"County, Store Postcode."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:93
msgid "Instructions"
msgstr "Instructions"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:95
msgid "Instructions that will be added to the thank you page and emails."
msgstr "Instructions that will be added to the thank you page and emails."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:100
msgid "PayPal sandbox"
msgstr "PayPal sandbox"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:102
msgid "Enable PayPal sandbox"
msgstr "Enable PayPal sandbox"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:107
msgid "Sandbox PayPal email"
msgstr "Sandbox PayPal email"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:117
msgid "Get your Sandbox Client ID from PayPal."
msgstr "Get your Sandbox Client ID from PayPal."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:125
msgid "Get your Sandbox Secret from PayPal."
msgstr "Get your Sandbox Secret from PayPal."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:131
msgid "PayPal email"
msgstr "PayPal email"
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:141
msgid "Get your Client ID from PayPal."
msgstr "Get your Client ID from PayPal."
#: includes/class-angelleye-paypal-invoicing-wc-payment.php:149
msgid "Get your Secret from PayPal."
msgstr "Get your Secret from PayPal."
#: includes/class-angelleye-paypal-invoicing.php:249
msgid "Configure"
msgstr "Configure"
#: includes/class-angelleye-paypal-invoicing.php:250
msgid "Docs"
msgstr "Docs"
#: includes/class-angelleye-paypal-invoicing.php:251
msgid "Support"
msgstr "Support"
#: includes/class-angelleye-paypal-invoicing.php:252
msgid "Write a Review"
msgstr "Write a Review"
#. Plugin Name of the plugin/theme
msgid "Angelleye PayPal Invoicing"
msgstr "Angelleye PayPal Invoicing"
#. Plugin URI of the plugin/theme
msgid "http://www.angelleye.com/product/angelleye-paypal-invoicing/"
msgstr "http://www.angelleye.com/product/angelleye-paypal-invoicing/"
#. Description of the plugin/theme
msgid ""
"This is a short description of what the plugin does. It's displayed in the "
"WordPress admin area."
msgstr ""
"This is a short description of what the plugin does. It's displayed in the "
"WordPress admin area."
#. Author of the plugin/theme
msgid "Angell EYE"
msgstr "Angell EYE"
#. Author URI of the plugin/theme
msgid "http://www.angelleye.com/"
msgstr "http://www.angelleye.com/"

View File

@@ -0,0 +1,133 @@
# Copyright (C) 2015 Browsers Detect
msgid ""
msgstr ""
"Project-Id-Version: Bros 1.0.0\n"
"POT-Creation-Date: 2015-06-25 10:17+0300\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANG <admin@muzu.ru>\n"
"X-Generator: Poedit 1.8.1\n"
#: ../aomailer_plugin.php:1
msgid "Param_1"
msgstr ""
#: ../aomailer_plugin.php:2
msgid "Param_2"
msgstr ""
#: ../aomailer_plugin.php:3
msgid "Param_3"
msgstr ""
#: ../aomailer_plugin.php:4
msgid "Param_4"
msgstr ""
#: ../aomailer_plugin.php:5
msgid "Param_5"
msgstr ""
#: ../aomailer_plugin.php:6
msgid "Param_6"
msgstr ""
#: ../aomailer_plugin.php:7
msgid "Param_7"
msgstr ""
#: ../aomailer_plugin.php:8
msgid "Param_8"
msgstr ""
#: ../aomailer_plugin.php:9
msgid "Param_9"
msgstr ""
#: ../aomailer_plugin.php:10
msgid "Param_10"
msgstr ""
#: ../aomailer_plugin.php:11
msgid "Param_11"
msgstr ""
#: ../aomailer_plugin.php:12
msgid "Param_12"
msgstr ""
#: ../aomailer_plugin.php:13
msgid "Param_13"
msgstr ""
#: ../aomailer_plugin.php:14
msgid "Param_14"
msgstr ""
#: ../aomailer_plugin.php:15
msgid "Param_15"
msgstr ""
#: ../aomailer_plugin.php:16
msgid "Param_16"
msgstr ""
#: ../aomailer_plugin.php:17
msgid "Param_17"
msgstr ""
#: ../aomailer_plugin.php:18
msgid "Param_18"
msgstr ""
#: ../aomailer_plugin.php:19
msgid "Param_19"
msgstr ""
#: ../aomailer_plugin.php:20
msgid "Param_20"
msgstr ""
#: ../aomailer_plugin.php:21
msgid "Param_21"
msgstr ""
#: ../aomailer_plugin.php:22
msgid "Param_22"
msgstr ""
#: ../aomailer_plugin.php:23
msgid "Param_23"
msgstr ""
#: ../aomailer_plugin.php:24
msgid "Param_24"
msgstr ""
#: ../aomailer_plugin.php:25
msgid "Param_25"
msgstr ""
#: ../aomailer_plugin.php:26
msgid "Param_26"
msgstr ""
#: ../aomailer_plugin.php:27
msgid "Param_27"
msgstr ""
#: ../aomailer_plugin.php:28
msgid "Param_28"
msgstr ""
#: ../aomailer_plugin.php:29
msgid "Aoplayer"
msgstr ""
#: ../aomailer_plugin.php:30
msgid "Aoplayer Plugin"
msgstr ""

View File

@@ -0,0 +1,23 @@
{
"name": "block-buddy",
"version": "0.1",
"description": "",
"main": "index.php",
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"repository": {
"type": "git",
"url": "git+ssh://git@bitbucket.org/hookturn/custom-query-block.git"
},
"author": "",
"license": "ISC",
"homepage": "https://bitbucket.org/hookturn/custom-query-block#readme",
"dependencies": {
"cgb-scripts": "^1.11.0",
"create-guten-block": "^1.11.0",
"npm": "^5.10.0"
}
}

View File

@@ -0,0 +1,17 @@
{
"name": "my-block-cgb-guten-block",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"dependencies": {
"cgb-scripts": "1.13.0",
"classnames": "^2.2.6",
"moment": "^2.23.0",
"query-string": "^6.2.0",
"querystringify": "^2.1.0"
}
}

View File

@@ -0,0 +1,20 @@
# This file is distributed under the GNU General Public License v3 or later.
msgid ""
msgstr ""
"Project-Id-Version: Clicksports Maps v1.0.0\n"
"POT-Creation-Date: 2012-10-05 10:50+0100\n"
"PO-Revision-Date: \n"
"Language-Team: CLICKSPORTS <wordpress@clicksports.de>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Textdomain-Support: yes"
"X-Generator: Poedit 1.6.4\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: __;_e;esc_html_e;esc_html_x:1,2c;esc_html__;esc_attr_e;esc_attr_x:1,2c;esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_x:1,2c;_n:1,2;_n_noop:1,2;__ngettext:1,2;__ngettext_noop:1,2;_c,_nc:4c,1,2;\n"
"X-Poedit-Basepath: ../\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-Language: English\n"
"X-Poedit-Country: UNITED STATES\n"
"X-Poedit-Bookmarks: \n"

View File

@@ -0,0 +1,17 @@
{
"name": "my-block-cgb-guten-block",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"dependencies": {
"cgb-scripts": "1.13.0",
"classnames": "^2.2.6",
"moment": "^2.23.0",
"query-string": "^6.2.0",
"querystringify": "^2.1.0"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,63 @@
# Copyright (C) 2019 Woocommerce Colorlab
# This file is distributed under the same license as the Woocommerce Colorlab package.
msgid ""
msgstr ""
"Project-Id-Version: Woocommerce Colorlab 1.0.6\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/woocommerce-"
"colorlab\n"
"POT-Creation-Date: 2019-01-01 15:44:41+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"
#: admin/class-woocommerce-colorlab-admin.php:46
msgid "Colorlab product id"
msgstr ""
#: admin/class-woocommerce-colorlab-admin.php:49
msgid ""
"Add here the colorlab product id. If this is not added, we will try to match "
"the SKU, and the product ID."
msgstr ""
#: admin/class-woocommerce-colorlab-settings.php:18
#: admin/class-woocommerce-colorlab-settings.php:39
msgid "Colorlab"
msgstr ""
#: admin/class-woocommerce-colorlab-settings.php:48
msgid "Shop ID"
msgstr ""
#: admin/class-woocommerce-colorlab-settings.php:49
msgid "Your colorlab ID"
msgstr ""
#: public/class-woocommerce-colorlab-public.php:158
msgid "Customize your personalization"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Woocommerce Colorlab"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "http://example.com/woocommerce-colorlab-uri/"
msgstr ""
#. Description of the plugin/theme
msgid ""
"This is a short description of what the plugin does. It's displayed in the "
"WordPress admin area."
msgstr ""
#. Author of the plugin/theme
msgid "Your Name or Your Company"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://example.com/"
msgstr ""

View File

@@ -246,6 +246,7 @@ Content-Type: text/html; charset=UTF-8
<!-- Powered by WeatherIcon v2.99.102 | http://www.viper007bond.com/wordpress-plugins/weathericon/ -->
<!-- wordpress-seo -->
<!-- This site is optimized with the Yoast WordPress SEO plugin v1.7.3.3 - https://yoast.com/wordpress/plugins/seo/ -->
<!-- This site is optimized with the Yoast SEO plugin v2.3.4 - https://yoast.com/wordpress/plugins/seo/ -->
<meta name="robots" content="noindex,follow"/>
@@ -259,6 +260,11 @@ Content-Type: text/html; charset=UTF-8
<!-- / Yoast WordPress SEO plugin. -->
<!-- wordpress-seo-premium -->
<!-- This site is optimized with the Yoast SEO Premium plugin v9.5 - https://yoast.com/wordpress/plugins/seo/ -->
<!-- / Yoast SEO Premium plugin. -->
<!--
wsl_render_auth_widget
WordPress Social Login 2.2.3.
@@ -969,3 +975,7 @@ If above timestamp is not current time, this page is cached.</p> -->
<!-- Optimized by WP Performance 1.0.0 -->
<!-- sharing-plus -->
<!-- Open Graph Meta Tags generated by Sharing Plus 1.0.0 -->

View File

@@ -0,0 +1,46 @@
# Copyright (C) 2019 Dash Notifier
# This file is distributed under the same license as the Dash Notifier package.
msgid ""
msgstr ""
"Project-Id-Version: Dash Notifier 1.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/dash-notifier\n"
"POT-Creation-Date: 2019-02-28 21:04:36+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"
#: dash-notifier.php:313
msgid "Dismiss"
msgstr ""
#: dash-notifier.php:324
msgctxt "plugin"
msgid "Activate %s"
msgstr ""
#: dash-notifier.php:327
msgid "Install %s now"
msgstr ""
#: dash-notifier.php:331
msgid "Never Notify Me Again"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Dash Notifier"
msgstr ""
#. Plugin URI of the plugin/theme
msgid "https://github.com/litespeedtech/wp-dashboard-notifier"
msgstr ""
#. Description of the plugin/theme
msgid "WordPress dashboard notifier"
msgstr ""
#. Author of the plugin/theme
msgid "LiteSpeed Technologies"
msgstr ""

View File

@@ -0,0 +1,68 @@
msgid ""
msgstr ""
"Project-Id-Version: dashly 1.1.0\n"
"POT-Creation-Date: 2018-11-01 15:50+0500\n"
"PO-Revision-Date: 2018-11-01 16:15+0500\n"
"Last-Translator: \n"
"Language-Team: Dashly <support@dashly.app>\n"
"Language: ru_RU\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2\n"
"X-Poedit-Basepath: ..\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"
#: includes/main.php:47
msgid "Settings"
msgstr "Настройки"
#: includes/main.php:56 includes/main.php:57
msgid "Dashly"
msgstr ""
#: includes/main.php:121
msgid "Settings saved"
msgstr "Настройки сохранены"
#: includes/main.php:124
msgid "Failed"
msgstr "Не удалось сохранить настройки"
#: options.php:8
msgid ""
"You can look up parameters \"API Key\", \"API Secret\" and \"User Auth Key\" "
"in \"Settings\" section of your Dashly account administrative panel"
msgstr ""
"Параметры \"API Key\", \"API Secret\" и \"User Auth Key\" можно узнать в "
"разделе \"Настройки\" в панели администратора Вашего аккаунта Dashly"
#: options.php:14
msgid "API Key"
msgstr "API Key"
#: options.php:20
msgid "API Secret"
msgstr ""
#: options.php:26
msgid "User Auth Key"
msgstr ""
#: options.php:31
msgid "User authorization"
msgstr "Авторизация пользователей"
#: options.php:36
msgid "Send customer ID to Dashly as User ID"
msgstr "Отправлять ID пользователя в Dashly в качестве User ID"
#: options.php:43
msgid "Save Changes"
msgstr "Сохранить изменения"
#~ msgid "<No image>"
#~ msgstr "<Нет изображения>"

View File

@@ -0,0 +1,124 @@
# Copyright (C) 2019 Navanath Bhosale
# This file is distributed under the GPLv2.
msgid ""
msgstr ""
"Project-Id-Version: Developer Tool 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/developer-tool\n"
"POT-Creation-Date: 2019-02-05 09:02:37+00:00\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"PO-Revision-Date: 2019-MO-DA HO:MI+ZONE\n"
"Last-Translator: 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-dev-tool.php:142 includes/settings.php:26
msgid "Error Log"
msgstr ""
#: classes/class-dev-tool.php:150 includes/settings.php:63
msgid "Debug Settings"
msgstr ""
#: includes/functions.php:66
msgid "Debug log not cleared."
msgstr ""
#: includes/functions.php:74
msgid "Debug log cleared successfully."
msgstr ""
#: includes/functions.php:110
msgid ""
"Your wp-config file not updated. Copy and paste following code in your "
"wp-config.php file."
msgstr ""
#: includes/settings.php:50
msgid "Clear Log"
msgstr ""
#: includes/settings.php:69
msgid ""
"( These settings will overwrite wp-config.php file. Please make sure to "
"backup first. )"
msgstr ""
#: includes/settings.php:72
msgid "wp-config.php File Backup"
msgstr ""
#: includes/settings.php:75
msgid "Download"
msgstr ""
#: includes/settings.php:79
msgid "Enable Debug Settings"
msgstr ""
#: includes/settings.php:85
msgid "Enable WP_DEBUG mode => "
msgstr ""
#: includes/settings.php:88
msgid "define(WP_DEBUG, true);"
msgstr ""
#: includes/settings.php:95
msgid "Enable debug logging to the /wp-content/debug.log file => "
msgstr ""
#: includes/settings.php:98
msgid "define(WP_DEBUG_LOG, true);"
msgstr ""
#: includes/settings.php:105
msgid "Enable display of errors and warnings to frontend => "
msgstr ""
#: includes/settings.php:108
msgid "define(WP_DEBUG_DISPLAY, true);"
msgstr ""
#: includes/settings.php:115
msgid "Enable Script Debug - only needed if you are modifying these core files => "
msgstr ""
#: includes/settings.php:118
msgid "define( SCRIPT_DEBUG, true );"
msgstr ""
#: includes/settings.php:125
msgid "Save Changes"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Developer Tool"
msgstr ""
#. Description of the plugin/theme
msgid ""
"Developer Tool helps you to <strong> debug your working "
"environment</strong>. It shows you notices / warnings / errors which may "
"cause during development or beacuse of conflicts."
msgstr ""
#. Author of the plugin/theme
msgid "Navanath Bhosale"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://profiles.wordpress.org/navanathbhosale/profile/"
msgstr ""

View File

@@ -0,0 +1,185 @@
# Copyright (C) 2019 Sébastien Dumont
# This file is distributed under the same license as the Double Image plugin.
msgid ""
msgstr ""
"Project-Id-Version: Double Image 1.2.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/double-image\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-01-26T19:51:56+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: double-image\n"
#: src/block/double-image/components/controls.js:44
msgid "Edit first image"
msgstr ""
#: src/block/double-image/components/controls.js:54
msgid "Remove first image"
msgstr ""
#: src/block/double-image/components/controls.js:70
msgid "Edit second image"
msgstr ""
#: src/block/double-image/components/controls.js:80
msgid "Remove second image"
msgstr ""
#: src/block/double-image/components/edit.js:119
msgid "Add image"
msgstr ""
#. Plugin Name of the plugin
#: src/block/double-image/components/edit.js:126
#: src/block/double-image/index.js:25
msgid "Double Image"
msgstr ""
#: src/block/double-image/components/edit.js:127
msgid "Drag an image, upload a new one or select a file from your library."
msgstr ""
#: src/block/double-image/components/edit.js:135
msgid "Uploading image"
msgstr ""
#: src/block/double-image/components/edit.js:267
msgid "Enter optional overlay text..."
msgstr ""
#: src/block/double-image/components/inspector.js:105
msgid "First Image"
msgstr ""
#: src/block/double-image/components/inspector.js:187
msgid "Second Image"
msgstr ""
#: src/block/double-image/components/inspector.js:189
msgid "Fixed Background"
msgstr ""
#: src/block/double-image/components/inspector.js:192
msgid "Enable to have a parallax scrolling effect."
msgstr ""
#: src/block/double-image/components/inspector.js:196
msgid "Show Overlay"
msgstr ""
#: src/block/double-image/components/inspector.js:199
msgid "Enable to add a text overlay."
msgstr ""
#: src/block/double-image/components/inspector.js:204
msgid "Overlay Settings"
msgstr ""
#: src/block/double-image/components/inspector.js:209
msgid "Background Color"
msgstr ""
#: src/block/double-image/components/inspector.js:214
msgid "Text Color"
msgstr ""
#: src/block/double-image/components/inspector.js:219
msgid "Background Opacity"
msgstr ""
#: src/block/double-image/components/inspector.js:225
msgid "Change the background opacity for the overlay."
msgstr ""
#: src/block/double-image/components/inspector.js:229
msgid "Text Position"
msgstr ""
#: src/block/double-image/components/inspector.js:234
msgid "Top"
msgstr ""
#: src/block/double-image/components/inspector.js:238
msgid "Bottom"
msgstr ""
#: src/block/double-image/components/inspector.js:243
msgid "Place overlay text at the top or bottom."
msgstr ""
#: src/block/double-image/components/inspector.js:247
msgid "Font Style"
msgstr ""
#: src/block/double-image/components/inspector.js:252
msgid "Normal"
msgstr ""
#: src/block/double-image/components/inspector.js:256
msgid "Italic"
msgstr ""
#: src/block/double-image/components/inspector.js:79
msgid "Image Layout"
msgstr ""
#: src/block/double-image/components/inspector.js:85
msgid "Narrow | Wide"
msgstr ""
#: src/block/double-image/components/inspector.js:89
msgid "Wide | Narrow"
msgstr ""
#: src/block/double-image/components/inspector.js:93
msgid "Even"
msgstr ""
#: src/block/double-image/components/inspector.js:97
msgid "Stacked"
msgstr ""
#: src/block/double-image/index.js:192
msgid "Insert two images side by side or stacked with optional overlay text."
msgstr ""
#: src/block/double-image/index.js:30
msgid "image"
msgstr ""
#: src/block/double-image/index.js:31
msgid "overlay"
msgstr ""
#: src/block/double-image/index.js:32
msgid "double"
msgstr ""
#. Plugin URI of the plugin
msgid "https://github.com/seb86/double-image"
msgstr ""
#. Description of the plugin
msgid "A way to insert two images side by side or stacked with optional overlay text using Gutenberg."
msgstr ""
#. Author of the plugin
msgid "Sébastien Dumont"
msgstr ""
#. Author URI of the plugin
msgid "https://sebastiendumont.com"
msgstr ""
#: double-image.php:75
msgid "Cloning this object is forbidden."
msgstr ""
#: double-image.php:85
msgid "Unserializing instances of this class is forbidden."
msgstr ""

View File

@@ -0,0 +1,19 @@
{
"name": "DummyImages",
"version": "1.0.0",
"description": "This plugin is a generator of customizable dummy images.",
"license": "ISC",
"author": "mbelchev",
"repository": {
"type": "git",
"url": "git+https://github.com/mbelchev/dummy-images.git"
},
"scripts": {
"build-css": "node-sass assets/sass/dummy-images.scss assets/css/dummy-images.min.css --output-style compressed",
"build-js": "uglifyjs assets/js/src/dummy-images.js --output assets/js/dist/dummy-images.min.js --mangle --compress"
},
"devDependencies": {
"node-sass": "^4.11.0",
"uglify-js": "^3.4.9"
}
}

View File

@@ -0,0 +1,150 @@
# Copyright (C) 2019 Brainstorm Force
# This file is distributed under the same license as the Easy Digital Downloads - Purchase Details package.
msgid ""
msgstr ""
"Project-Id-Version: Easy Digital Downloads - Purchase Details 1.0.0\n"
"Report-Msgid-Bugs-To: "
"https://wordpress.org/support/plugin/edd-purchase-details\n"
"POT-Creation-Date: 2019-01-29 06:46:29+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-edd-purchase-details-admin.php:40
msgid " Access Payment History"
msgstr ""
#: classes/class-edd-purchase-details-admin.php:40
msgid "Access Payment History"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:76
msgid "Enter customer email address"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:78
msgid "Search"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:177
msgid "ID"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:178
msgid "Date"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:179
msgid "Products"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:180
msgid "Amount"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:181
#: classes/class-edd-purchase-details-frontend.php:285
msgid "Status"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:182
msgid "License Keys"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:215
msgid "View Licenses"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:233
#: classes/class-edd-purchase-details-frontend.php:239
msgid "This user hasn't purchased anything!"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:244
#: classes/class-edd-purchase-details-frontend.php:333
msgid "You do not have permission to access this page"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:249
#: classes/class-edd-purchase-details-frontend.php:339
msgid " You are not logged in. Please log in and try again."
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:270
msgid "Go back"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:283
msgid "Item"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:284
msgid "Key"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:286
msgid "Activations"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:287
msgid "Expiration"
msgstr ""
#: classes/class-edd-purchase-details-frontend.php:321
#: classes/class-edd-purchase-details-frontend.php:327
msgid "Invalid Request."
msgstr ""
#: classes/class-edd-purchase-details-loader.php:74
#. translators: %s: html tags
msgid ""
"The %1$s EDD Purchase Details %2$s plugin requires %1$s Easy Digital "
"Downloads %2$s plugin installed & activated."
msgstr ""
#: includes/admin-setting-user-access.php:15
msgid "Access Payment History "
msgstr ""
#: includes/admin-setting-user-access.php:16
msgid "Manage which user roles can access purchase details information."
msgstr ""
#: includes/admin-setting-user-access.php:47
msgid "Getting Started"
msgstr ""
#: includes/admin-setting-user-access.php:50
msgid "Copy this shortcode and paste it into your post or page"
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Easy Digital Downloads - Purchase Details"
msgstr ""
#. Author URI of the plugin/theme
msgid "https://www.brainstormforce.com"
msgstr ""
#. Description of the plugin/theme
msgid "Easy Digital Downloads Access to Purchase Details"
msgstr ""
#. Author of the plugin/theme
msgid "Brainstorm Force"
msgstr ""

View File

@@ -0,0 +1,141 @@
# Copyright (C) 2019 Sanjeev Aryal
# This file is distributed under the same license as the Fancy Fields For WPForms package.
msgid ""
msgstr ""
"Project-Id-Version: Fancy Fields For WPForms 1.0.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-02-01 02:49:50+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 <EMAIL@ADDRESS>\n"
"X-Generator: grunt-wp-i18n1.0.2\n"
#: includes/class-fancy-fields-for-wpforms.php:48
#: includes/class-fancy-fields-for-wpforms.php:57
msgid "Cheatin&#8217; huh?"
msgstr ""
#: includes/class-fancy-fields-for-wpforms.php:154
msgid "Please install WPForms plugin to use Fancy Fields For WPForms."
msgstr ""
#: includes/class-ffwp-core.php:46
#. translators: %s: Fancy Fields For WPForms plugin link
msgid "Thank you for using Fancy Fields For WPForms! %s plugin is recommended!"
msgstr ""
#: includes/class-ffwp-core.php:46
msgid "Entries For WPForms"
msgstr ""
#: includes/class-ffwp-core.php:66
msgid "Deactivating..."
msgstr ""
#: includes/class-ffwp-core.php:67
msgid "Error!"
msgstr ""
#: includes/class-ffwp-core.php:68
msgid "Success!"
msgstr ""
#: includes/class-ffwp-core.php:69
msgid "Plugin Deactivated!"
msgstr ""
#: includes/class-ffwp-core.php:70
msgid "Sad to see you leave!"
msgstr ""
#: includes/class-ffwp-core.php:71
msgid "Oops! Something went wrong"
msgstr ""
#: includes/class-ffwp-core.php:101
#: includes/fields/class-ffwp-field-date-time.php:20
msgid "Date"
msgstr ""
#: includes/class-ffwp-core.php:151
msgid ""
"Would you care to let me know the deactivation reason so that I can improve "
"it for you?"
msgstr ""
#: includes/class-ffwp-core.php:158
msgid "Skip and deactivate"
msgstr ""
#: includes/fields/class-ffwp-field-date-time.php:152
msgid "Please enter a valid date."
msgstr ""
#: includes/fields/class-ffwp-field-divider.php:20
msgid "Section Divider"
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:20
msgid "File Upload"
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:61
msgid "Allowed Extensions"
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:62
msgid ""
"Enter allowed extensions for file upload. Add extensions separated by "
"comma. For e.g. csv, docx, png, jpeg"
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:91
msgid "Max File Size"
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:92
msgid "Enter maximum file size to upload in kb (kilobytes). 1 mb = 1024 kb."
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:215
msgid "File upload is required."
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:225
msgid "Maximum file size exceeded."
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:239
msgid "File extension not allowed."
msgstr ""
#: includes/fields/class-ffwp-field-file-upload.php:246
msgid "File upload error."
msgstr ""
#: includes/fields/class-ffwp-field-url.php:20
msgid "Website"
msgstr ""
#: includes/fields/class-ffwp-field-url.php:156
msgid "Please enter a valid url."
msgstr ""
#. Plugin Name of the plugin/theme
msgid "Fancy Fields For WPForms"
msgstr ""
#. Description of the plugin/theme
msgid "Fancy Fields For WPForms Lite Plugin Including File Upload"
msgstr ""
#. Author of the plugin/theme
msgid "Sanjeev Aryal"
msgstr ""
#. Author URI of the plugin/theme
msgid "http://www.sanjeebaryal.com.np"
msgstr ""

View File

@@ -0,0 +1,366 @@
# Copyright (C) 2019 Egor Milyukov
# This file is distributed under the same license as the Flight Search Widget Blocks plugin.
msgid ""
msgstr ""
"Project-Id-Version: Flight Search Widget Blocks 1.0.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/flight-search-widget-blocks\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-01-07T13:06:40+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.1.0\n"
"X-Domain: fswb\n"
#. Plugin Name of the plugin
#: include/fswb-admin.php:20
#: include/fswb-categories.php:15
#: flight-search-widget-blocks.php:24
msgid "Flight Search Widget Blocks"
msgstr ""
#. Plugin URI of the plugin
msgid "http://swb.milukove.ru/"
msgstr ""
#. Description of the plugin
msgid "Plugin adds Skyscanner widgets as gutenberg editor blocks."
msgstr ""
#. Author of the plugin
#: flight-search-widget-blocks.php:27
msgid "Egor Milyukov"
msgstr ""
#. Author URI of the plugin
msgid "http://milukove.ru/"
msgstr ""
#: include/fswb-admin.php:25
msgid "General settings"
msgstr ""
#: include/fswb-admin.php:29
msgid "Associate ID"
msgstr ""
#: include/fswb-admin.php:29
msgid "If you have a direct partnership with Skyscanner paste your associate ID here to ensure your exits are tracked. "
msgstr ""
#: include/fswb-admin.php:32
msgid "If you do not know your associate ID, you can obtain it from your account manager."
msgstr ""
#: include/fswb-admin.php:38
msgid "WhiteLabel domain"
msgstr ""
#: include/fswb-admin.php:38
msgid "Widgets have been designed to work with White Labels from the start, and include features such as automatic styling to make your life easier."
msgstr ""
#: include/fswb-admin.php:44
msgid "Set widget language."
msgstr ""
#: include/fswb-admin.php:44
msgid "This language will be used on skyscannner or whitelabel site when user redirected to it by one of your widgets"
msgstr ""
#: include/fswb-admin.php:100
msgid "Widget Blocks"
msgstr ""
#: include/fswb-admin.php:106
msgid "Basic Widget Block"
msgstr ""
#: include/fswb-admin.php:107
msgid "Basic Widget provide a clean and simple tracked referral to the flight search on Skyscanner or a White Label."
msgstr ""
#: include/fswb-admin.php:114
msgid "Location Widget Block"
msgstr ""
#: include/fswb-admin.php:115
msgid "Location Widgets provide a clean and simple tracked referral to the flight search on Skyscanner or a White Label."
msgstr ""
#: include/fswb-admin.php:122
msgid "Simple Flight Search Widget"
msgstr ""
#: include/fswb-admin.php:123
msgid "Simple Flight Search Widget gives you everything your users need to start a search for flights on your site."
msgstr ""
#: include/fswb-admin.php:131
#: include/fswb-admin.php:189
msgid "<a href=\"%s\"><strong>Get Premium</strong></a> to enable Flight Search Widget and Insider Tips Widget"
msgstr ""
#: include/fswb-admin.php:144
msgid "Flight Search Widget"
msgstr ""
#: include/fswb-admin.php:144
#: include/fswb-admin.php:152
msgid "Premium"
msgstr ""
#: include/fswb-admin.php:145
msgid "Flight Search Widget is similar to the Simple Flight Search Widget, but it provides a comprehensive control of flight search on your site."
msgstr ""
#: include/fswb-admin.php:152
msgid "Insider Tips Widget"
msgstr ""
#: include/fswb-admin.php:153
msgid "Insider Tips Widgets are designed to provide users with helpful statistical information about flights, like the cheapest month to fly and indicative pricing for a specified route."
msgstr ""
#: include/fswb-admin.php:166
msgid "About"
msgstr ""
#: include/fswb-admin.php:169
msgid "Plugin name: %s"
msgstr ""
#: include/fswb-admin.php:171
msgid "Plugin author: %s"
msgstr ""
#: include/fswb-admin.php:173
msgid "Plugin version: %s"
msgstr ""
#: include/fswb-admin.php:182
msgid "Description"
msgstr ""
#: include/fswb-admin.php:182
msgid "Flight Search Widget Blocks is the easiest way to start earning money with SkyScanner affiliate program. Plugin adds Skyscanner widgets as gutenberg editor customizable blocks."
msgstr ""
#: include/fswb-admin.php:182
msgid "Adding a widget to your site takes just a few clicks. Set some options on the plugin settings page. Then go to your post edit page and pick up one of SkyScanner Widgets from Flight Search Widgets section."
msgstr ""
#: include/fswb-admin.php:182
msgid "Thats it, the widget is ready to go. You can change some styles and set another custom parameters or just use it as is. Plugin will work fine both ways."
msgstr ""
#: include/fswb-admin.php:197
msgid "<a href=\"%s\">Full plugin documentation</a>"
msgstr ""
#: include/fswb-admin.php:202
msgid "If you like our plugin and you find it useful, please, help us spread a word about it — <a href=\"%s\">leave a review</a>"
msgstr ""
#: flight-search-widget-blocks.php:26
msgid "Plugin adds Skyscanner widgets as gutenberg editor blocks"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:57
#: assets/js/blocks/fswb-location-widget.js:305
#: assets/js/blocks/min/fswb-location-widget.js:1
#: assets/js/blocks/min/fswb-location-widget.js:3
msgid "SkyScanner Location Widget"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:153
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:161
#: assets/js/blocks/fswb-basic-widget.js:149
#: assets/js/blocks/fswb-simple-flight-search-widget.js:161
#: assets/js/blocks/min/fswb-location-widget.js:2
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-basic-widget.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Button Label"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:158
#: assets/js/blocks/min/fswb-location-widget.js:2
msgid "Use {location} to insert Location into button text. E.g.: \"Let's go to {location} right now!\""
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:168
#: assets/js/blocks/min/fswb-location-widget.js:2
msgid "Location name in single quotes"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:182
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:175
#: assets/js/blocks/fswb-basic-widget.js:163
#: assets/js/blocks/fswb-simple-flight-search-widget.js:175
#: assets/js/blocks/min/fswb-location-widget.js:2
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-basic-widget.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Show arrow icon insted of a plane"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:193
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:186
#: assets/js/blocks/fswb-basic-widget.js:174
#: assets/js/blocks/fswb-simple-flight-search-widget.js:186
#: assets/js/blocks/min/fswb-location-widget.js:2
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-basic-widget.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Open in new tab"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:203
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:207
#: assets/js/blocks/fswb-basic-widget.js:184
#: assets/js/blocks/fswb-simple-flight-search-widget.js:207
#: assets/js/blocks/min/fswb-location-widget.js:2
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-basic-widget.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:209
msgid "Widget colors"
msgstr ""
#: assets/js/blocks/fswb-location-widget.js:211
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:215
#: assets/js/blocks/fswb-basic-widget.js:192
#: assets/js/blocks/fswb-simple-flight-search-widget.js:215
#: assets/js/blocks/min/fswb-location-widget.js:2
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-basic-widget.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Background color"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:57
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:1
msgid "SkyScanner Flight Search Widget"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:196
#: assets/js/blocks/fswb-simple-flight-search-widget.js:196
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Enable Placeholders"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:201
#: assets/js/blocks/fswb-simple-flight-search-widget.js:201
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Show placeholders inside input tags instead of label tags"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:222
#: assets/js/blocks/fswb-simple-flight-search-widget.js:222
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Font color"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:229
#: assets/js/blocks/fswb-simple-flight-search-widget.js:229
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Button background color"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:236
#: assets/js/blocks/fswb-simple-flight-search-widget.js:236
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:2
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:2
msgid "Button font color"
msgstr ""
#: assets/js/blocks/fswb-flight-search-widget__premium_only.js:339
#: assets/js/blocks/fswb-simple-flight-search-widget.js:57
#: assets/js/blocks/fswb-simple-flight-search-widget.js:339
#: assets/js/blocks/min/fswb-flight-search-widget__premium_only.js:3
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:1
#: assets/js/blocks/min/fswb-simple-flight-search-widget.js:3
msgid "SkyScanner Simple Flight Search Widget"
msgstr ""
#: assets/js/blocks/fswb-basic-widget.js:57
#: assets/js/blocks/fswb-basic-widget.js:283
#: assets/js/blocks/min/fswb-basic-widget.js:1
#: assets/js/blocks/min/fswb-basic-widget.js:3
msgid "SkyScanner Basic Widget"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:1
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:3
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:57
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:349
msgid "SkyScanner Insider Tips Widget"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:163
msgid "Insider Tips Widget requires presetting both Origin and Destination locations"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:168
msgid "Origin name"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:173
msgid "Free text (Location name in single quotes)"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:179
msgid "Destination name"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:184
msgid "Free text (Destination name in single quotes)"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:190
msgid "Defines a type of displayed statistics"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:195
msgid "The widget's design completely depends on this attribute"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:217
msgid "Text color of the heading banner"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:224
msgid "Color for the chart line/bars"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:231
msgid "Color for the chart minimum/maximum data point"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:238
msgid "Background color of the search button"
msgstr ""
#: assets/js/blocks/min/fswb-insider-tips-widget__premium_only.js:2
#: assets/js/blocks/fswb-insider-tips-widget__premium_only.js:245
msgid "Font color of the search button"
msgstr ""

View File

@@ -0,0 +1,55 @@
{
"name": "g-debugger",
"version": "1.0.0",
"private": true,
"description": "Visual debugging tools for block development",
"scripts": {
"build": "NODE_ENV=production rollup -c",
"dev": "rollup -c -w",
"test": "npm run test:lint",
"test:lint": "eslint src",
"prepackage-plugin": "npm run build",
"package-plugin": "npm-pack-zip"
},
"files": [
"g-debugger.js",
"g-debugger.php",
"readme.txt",
"style.css"
],
"author": {
"name": "Andrew Duthie",
"email": "andrew@andrewduthie.com",
"url": "https://andrewduthie.com"
},
"homepage": "https://github.com/aduth/g-debugger",
"repository": {
"type": "git",
"url": "https://github.com/aduth/g-debugger.git"
},
"bugs": {
"url": "https://github.com/aduth/g-debugger/issues"
},
"license": "GPL-2.0-or-later",
"devDependencies": {
"@babel/core": "^7.2.2",
"@babel/plugin-transform-react-constant-elements": "^7.2.0",
"@babel/plugin-transform-react-jsx": "^7.2.0",
"@babel/preset-env": "^7.2.3",
"@wordpress/babel-plugin-import-jsx-pragma": "^1.1.3",
"@wordpress/eslint-plugin": "^1.0.1",
"eslint": "^5.12.1",
"npm-pack-zip": "^1.2.7",
"rollup": "^1.1.0",
"rollup-plugin-babel": "^4.3.2",
"rollup-plugin-commonjs": "^9.2.0",
"rollup-plugin-css-only": "^0.4.0",
"rollup-plugin-node-resolve": "^4.0.0",
"rollup-plugin-postcss": "^1.6.3",
"rollup-plugin-sass": "^1.1.0",
"rollup-plugin-terser": "^4.0.2"
},
"dependencies": {
"clsx": "^1.0.1"
}
}

View File

@@ -0,0 +1,13 @@
{
"name": "gosign-promo-box",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "cgb-scripts start",
"build": "cgb-scripts build",
"eject": "cgb-scripts eject"
},
"dependencies": {
"cgb-scripts": "1.15.0"
}
}

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