Version Description
= 3.0.0 =
This is a major overhaul without backwards compliance of over 80 changes. Please read the Testimonials Widget 3.0 and Testimonials Widget Premium 2.0 Upgrade Notice for more help.
If you use custom CSS, actions, or filters to modify Testimonials Widget and Testimonials Widget Premium actions or output, this upgrade will not be compatible with those modifications until corrections are made.
= Older Versions =
Read UPGRADING.
Download this release
Release Info
Developer | subharanjan |
Plugin | Testimonials Widget |
Version | 3.3.0 |
Comparing to | |
See all releases |
Code changes from version 3.2.0 to 3.3.0
- CHANGELOG.md +15 -0
- README.md +0 -1
- UPGRADING.md +30 -1
- assets/css/testimonials-widget.css +4 -0
- includes/class-testimonials-widget-archives-widget.php +3 -3
- includes/class-testimonials-widget-categories-widget.php +3 -3
- includes/class-testimonials-widget-recent-testimonials-widget.php +3 -3
- includes/class-testimonials-widget-settings.php +37 -30
- includes/class-testimonials-widget-slider-widget.php +9 -12
- includes/class-testimonials-widget-tag-cloud-widget.php +6 -6
- includes/class-testimonials-widget-template-loader.php +2 -2
- includes/class-testimonials-widget.php +44 -48
- includes/libraries/Gamajo-Template-Loader/README.md +9 -21
- includes/libraries/Gamajo-Template-Loader/class-gamajo-template-loader.php +2 -42
- includes/libraries/aihrus-framework/CHANGELOG.md +13 -0
- includes/libraries/aihrus-framework/README.md +2 -2
- includes/libraries/aihrus-framework/aihrus-framework.php +4 -18
- includes/libraries/aihrus-framework/includes/class-aihrus-common.php +8 -7
- includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php +2 -2
- includes/libraries/aihrus-framework/includes/class-aihrus-settings.php +2 -4
- includes/libraries/aihrus-framework/includes/class-aihrus-widget.php +7 -5
- includes/libraries/aihrus-framework/includes/libraries/parsedown/Parsedown.php +565 -439
- includes/libraries/aihrus-framework/includes/libraries/parsedown/README.md +27 -17
- includes/libraries/aihrus-framework/includes/libraries/parsedown/phpunit.xml.dist +1 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/aligned_table.html +9 -9
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/atx_heading.html +1 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/atx_heading.md +1 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/block-level_html.html +8 -9
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/block-level_html.md +8 -9
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/escaping.html +3 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/escaping.md +5 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_reference.html +2 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_reference.md +2 -0
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_title.html +2 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_title.md +3 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link.html +5 -3
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link.md +5 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link_title.html +6 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link_title.md +11 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/simple_table.html +3 -3
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/special_characters.html +1 -1
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/table_inline_markdown.html +6 -2
- includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/table_inline_markdown.md +2 -1
- includes/libraries/bxslider-4/package.json +1 -2
- languages/testimonials-widget.pot +364 -248
- readme.txt +6 -2
- templates/testimonial-cite.php +12 -12
- templates/testimonial-content.php +15 -7
- templates/testimonial-open.php +1 -1
- templates/testimonials-archives.php +4 -4
- templates/testimonials-categories.php +1 -1
- templates/testimonials-open.php +1 -1
- templates/testimonials-paging.php +4 -4
- templates/testimonials-recent.php +1 -1
- testimonials-widget.php +53 -29
CHANGELOG.md
CHANGED
@@ -2,6 +2,21 @@
|
|
2 |
|
3 |
## master
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
## 3.2.0
|
6 |
* Add filter tw_testimonial_query to alter WP_Query in get_testimonials
|
7 |
* Require Aihrus Framework 1.2.2
|
2 |
|
3 |
## master
|
4 |
|
5 |
+
## 3.3.0
|
6 |
+
* Change support email address to support@axelerant.com
|
7 |
+
* Confirm WordPress 4.4 compatibility
|
8 |
+
* Fix aggregate rating count
|
9 |
+
* Fix coding standards for CI
|
10 |
+
* Remove option to disable the license not saved notice rather set sslverify to false.
|
11 |
+
* Remove the use of deprecated function `wp_htmledit_pre()` and use `format_for_editor()` instead.
|
12 |
+
* Require Aihrus Framework 1.2.4
|
13 |
+
* RESOLVE #178 Provide ways to display the testimonial title on top of the testimonial content
|
14 |
+
* RESOLVE #180 Add missing required `ratingValue` for AggregateRating schema property
|
15 |
+
* RESOLVE #183 Rename core class name to prevent fatal errors
|
16 |
+
* RESOLVE #193 Warning in Google's structured data testing tool for `aggregateRating` in testimonials
|
17 |
+
* RESOLVE Replace deprecated 'post_permalink' with 'get_permalink'
|
18 |
+
* Update Gamajo-Template-Loader
|
19 |
+
|
20 |
## 3.2.0
|
21 |
* Add filter tw_testimonial_query to alter WP_Query in get_testimonials
|
22 |
* Require Aihrus Framework 1.2.2
|
README.md
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
# Developer Readme - Testimonials Widget
|
2 |
|
3 |
[![Codeship status](https://www.codeship.io/projects/b5524630-43f6-0131-3b4d-76a8e32a74d4/status)](https://www.codeship.io/projects/10739)
|
4 |
-
[![ProjectStatus](http://stillmaintained.com/michael-cannon/testimonials-widget.png)](http://stillmaintained.com/michael-cannon/testimonials-widget)
|
5 |
|
6 |
## Welcome to the Testimonials Widget Github repository
|
7 |
|
1 |
# Developer Readme - Testimonials Widget
|
2 |
|
3 |
[![Codeship status](https://www.codeship.io/projects/b5524630-43f6-0131-3b4d-76a8e32a74d4/status)](https://www.codeship.io/projects/10739)
|
|
|
4 |
|
5 |
## Welcome to the Testimonials Widget Github repository
|
6 |
|
UPGRADING.md
CHANGED
@@ -1,5 +1,34 @@
|
|
1 |
# Upgrade Notices - Testimonials Widget
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
## 3.0.0
|
4 |
|
5 |
This is a major overhaul *without* backwards compliance of over 80 changes. Please read the [Testimonials Widget 3.0 and Testimonials Widget Premium 2.0 Upgrade Notice](https://nodedesk.zendesk.com/hc/en-us/articles/202476552) for more help.
|
@@ -78,7 +107,7 @@ The changes and helpers below are intended to help you update your customization
|
|
78 |
## 2.14.0
|
79 |
|
80 |
* **60 modifications** See [Changelog](https://github.com/michael-cannon/testimonials-widget/blob/master/CHANGELOG.md)
|
81 |
-
* CSS wp_register_style and wp_enqueue_style slug changed from 'testimonials-widget' to '
|
82 |
* Gravatar image size now based upon Thumbnail size in Media Settings
|
83 |
* Scripts `ksort` removed. Use `array_unshift` in your `tw_testimonials_js` filters instead.
|
84 |
* Testimonials > Settings, General tab, option Enable Review Schema? is enabled by default.
|
1 |
# Upgrade Notices - Testimonials Widget
|
2 |
|
3 |
+
## 3.3.0
|
4 |
+
|
5 |
+
This is an overhaul **without** backwards compliance.
|
6 |
+
|
7 |
+
If you use the template system, class, methods, global variables of the plugin to modify Testimonials Widget and Testimonials Widget Premium output, this upgrade will not be compatible with those modifications until corrections are made.
|
8 |
+
|
9 |
+
The changes and helpers below are intended to help you update your customizations quickly. If further help is required, please request it via the support forum.
|
10 |
+
|
11 |
+
### Changes
|
12 |
+
|
13 |
+
* Class names below and all the references to these inside the plugin have been prepended with `Axl_`.
|
14 |
+
* `Testimonials_Widget` > `Axl_Testimonials_Widget`
|
15 |
+
* `Testimonials_Widget_Slider_Widget` > `Axl_Testimonials_Widget_Slider_Widget`
|
16 |
+
* `Testimonials_Widget_Archives_Widget` > `Axl_Testimonials_Widget_Archives_Widget`
|
17 |
+
* `Testimonials_Widget_Tag_Cloud_Widget` > `Axl_Testimonials_Widget_Tag_Cloud_Widget`
|
18 |
+
* `Testimonials_Widget_Categories_Widget` > `Axl_Testimonials_Widget_Categories_Widget`
|
19 |
+
* `Testimonials_Widget_Recent_Testimonials_Widget` > `Axl_Testimonials_Widget_Recent_Testimonials_Widget`
|
20 |
+
* `Testimonials_Widget_Settings` > `Axl_Testimonials_Widget_Settings`
|
21 |
+
* `Testimonials_Widget_Template_Loader` > `Axl_Testimonials_Widget_Template_Loader`
|
22 |
+
* Global variables below have been prepended with `Axl_`.
|
23 |
+
* `$Testimonials_Widget_Settings` > `$Axl_Testimonials_Widget_Settings`
|
24 |
+
* `$Testimonials_Widget` > `$Axl_Testimonials_Widget`
|
25 |
+
|
26 |
+
### Helpers
|
27 |
+
|
28 |
+
*Replace `Testimonials_Widget` with `Axl_Testimonials_Widget` through out all your custom plugins and themes which customize Testimonials Widget's output. Please take backup measures beforehand.*
|
29 |
+
|
30 |
+
* `find . -type f \( -name "*.php" -o -name "*.txt" -o -name "*.md" \) -exec perl -pi -e "s#\b(Testimonials_Widget)#Axl_\1#g" {} \;`
|
31 |
+
|
32 |
## 3.0.0
|
33 |
|
34 |
This is a major overhaul *without* backwards compliance of over 80 changes. Please read the [Testimonials Widget 3.0 and Testimonials Widget Premium 2.0 Upgrade Notice](https://nodedesk.zendesk.com/hc/en-us/articles/202476552) for more help.
|
107 |
## 2.14.0
|
108 |
|
109 |
* **60 modifications** See [Changelog](https://github.com/michael-cannon/testimonials-widget/blob/master/CHANGELOG.md)
|
110 |
+
* CSS wp_register_style and wp_enqueue_style slug changed from 'testimonials-widget' to 'Axl_Testimonials_Widget'
|
111 |
* Gravatar image size now based upon Thumbnail size in Media Settings
|
112 |
* Scripts `ksort` removed. Use `array_unshift` in your `tw_testimonials_js` filters instead.
|
113 |
* Testimonials > Settings, General tab, option Enable Review Schema? is enabled by default.
|
assets/css/testimonials-widget.css
CHANGED
@@ -46,6 +46,10 @@
|
|
46 |
float: none;
|
47 |
}
|
48 |
|
|
|
|
|
|
|
|
|
49 |
.testimonials-widget-testimonial q,
|
50 |
.testimonials-widget-testimonial blockquote {
|
51 |
/* the testimonial itself */
|
46 |
float: none;
|
47 |
}
|
48 |
|
49 |
+
.testimonials-widget-testimonial .list-title {
|
50 |
+
font-weight: bold;
|
51 |
+
}
|
52 |
+
|
53 |
.testimonials-widget-testimonial q,
|
54 |
.testimonials-widget-testimonial blockquote {
|
55 |
/* the testimonial itself */
|
includes/class-testimonials-widget-archives-widget.php
CHANGED
@@ -20,12 +20,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
-
if ( class_exists( '
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
-
class
|
29 |
const ID = 'tw_archives_widget';
|
30 |
|
31 |
public static $title;
|
@@ -45,7 +45,7 @@ class Testimonials_Widget_Archives_Widget extends Aihrus_Widget {
|
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
-
return
|
49 |
}
|
50 |
|
51 |
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Archives_Widget' ) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
+
class Axl_Testimonials_Widget_Archives_Widget extends Aihrus_Widget {
|
29 |
const ID = 'tw_archives_widget';
|
30 |
|
31 |
public static $title;
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
+
return Axl_Testimonials_Widget::testimonials_archives( $instance, $widget_number );
|
49 |
}
|
50 |
|
51 |
|
includes/class-testimonials-widget-categories-widget.php
CHANGED
@@ -20,12 +20,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
-
if ( class_exists( '
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
-
class
|
29 |
const ID = 'tw_categories_widget';
|
30 |
|
31 |
public static $title;
|
@@ -45,7 +45,7 @@ class Testimonials_Widget_Categories_Widget extends Aihrus_Widget {
|
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
-
return
|
49 |
}
|
50 |
|
51 |
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Categories_Widget' ) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
+
class Axl_Testimonials_Widget_Categories_Widget extends Aihrus_Widget {
|
29 |
const ID = 'tw_categories_widget';
|
30 |
|
31 |
public static $title;
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
+
return Axl_Testimonials_Widget::testimonials_categories( $instance, $widget_number );
|
49 |
}
|
50 |
|
51 |
|
includes/class-testimonials-widget-recent-testimonials-widget.php
CHANGED
@@ -20,12 +20,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
-
if ( class_exists( '
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
-
class
|
29 |
const ID = 'tw_recent_testimonials_widget';
|
30 |
|
31 |
public static $title;
|
@@ -45,7 +45,7 @@ class Testimonials_Widget_Recent_Testimonials_Widget extends Aihrus_Widget {
|
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
-
return
|
49 |
}
|
50 |
|
51 |
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Recent_Testimonials_Widget' ) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
+
class Axl_Testimonials_Widget_Recent_Testimonials_Widget extends Aihrus_Widget {
|
29 |
const ID = 'tw_recent_testimonials_widget';
|
30 |
|
31 |
public static $title;
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
+
return Axl_Testimonials_Widget::testimonials_recent( $instance, $widget_number );
|
49 |
}
|
50 |
|
51 |
|
includes/class-testimonials-widget-settings.php
CHANGED
@@ -26,12 +26,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
26 |
|
27 |
require_once AIHR_DIR_INC . 'class-aihrus-settings.php';
|
28 |
|
29 |
-
if ( class_exists( '
|
30 |
return;
|
31 |
}
|
32 |
|
33 |
|
34 |
-
class
|
35 |
const ID = 'testimonialswidget_settings';
|
36 |
const NAME = 'Testimonials Widget Settings';
|
37 |
|
@@ -77,14 +77,14 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
77 |
add_filter( 'wp_unique_post_slug_is_bad_flat_slug', array( __CLASS__, 'is_bad_flat_slug' ), 10, 3 );
|
78 |
|
79 |
$version = tw_get_option( 'version' );
|
80 |
-
self::$version =
|
81 |
self::$version = apply_filters( 'tw_version', self::$version );
|
82 |
|
83 |
if ( $version != self::$version ) {
|
84 |
self::initialize_settings();
|
85 |
}
|
86 |
|
87 |
-
if ( !
|
88 |
return;
|
89 |
}
|
90 |
|
@@ -94,7 +94,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
94 |
|
95 |
|
96 |
public static function admin_menu() {
|
97 |
-
self::$admin_page = add_submenu_page( 'edit.php?post_type=' .
|
98 |
|
99 |
add_action( 'admin_print_scripts-' . self::$admin_page, array( __CLASS__, 'scripts' ) );
|
100 |
add_action( 'admin_print_styles-' . self::$admin_page, array( __CLASS__, 'styles' ) );
|
@@ -105,7 +105,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
105 |
public static function init() {
|
106 |
load_plugin_textdomain( 'testimonials-widget', false, '/testimonials-widget/languages/' );
|
107 |
|
108 |
-
self::$plugin_assets =
|
109 |
}
|
110 |
|
111 |
|
@@ -348,6 +348,15 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
348 |
'type' => 'expand_begin',
|
349 |
);
|
350 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
self::$settings['hide_source'] = array(
|
352 |
'section' => 'fields',
|
353 |
'title' => esc_html__( 'Hide Author?', 'testimonials-widget' ),
|
@@ -725,7 +734,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
725 |
// Examples
|
726 |
self::$settings['examples'] = array(
|
727 |
'section' => 'examples',
|
728 |
-
'desc' =>
|
729 |
'type' => 'content',
|
730 |
'widget' => 0,
|
731 |
);
|
@@ -735,7 +744,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
735 |
self::$settings['options'] = array(
|
736 |
'section' => 'options',
|
737 |
'type' => 'content',
|
738 |
-
'desc' =>
|
739 |
'widget' => 0,
|
740 |
);
|
741 |
self::$settings['options'] = wp_parse_args( self::$settings['options'], self::$default );
|
@@ -845,7 +854,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
845 |
}
|
846 |
|
847 |
$input['version'] = self::$version;
|
848 |
-
$input['donate_version'] =
|
849 |
|
850 |
$input = apply_filters( 'tw_validate_settings', $input, $errors );
|
851 |
if ( empty( $do_errors ) ) {
|
@@ -943,7 +952,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
943 |
array(
|
944 |
'id' => 'tw-general',
|
945 |
'title' => esc_html__( 'General', 'testimonials-widget' ),
|
946 |
-
'content' => '<p>' . esc_html__( 'General options.', 'testimonials-widget' ) . '</p>'
|
947 |
)
|
948 |
);
|
949 |
|
@@ -951,7 +960,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
951 |
array(
|
952 |
'id' => 'tw-fields',
|
953 |
'title' => esc_html__( 'Fields', 'testimonials-widget' ),
|
954 |
-
'content' => '<p>' . esc_html__( 'Show or hide fields.', 'testimonials-widget' ) . '</p>'
|
955 |
)
|
956 |
);
|
957 |
|
@@ -959,7 +968,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
959 |
array(
|
960 |
'id' => 'tw-selection',
|
961 |
'title' => esc_html__( 'Selection', 'testimonials-widget' ),
|
962 |
-
'content' => '<p>' . esc_html__( 'Options used to select testimonials.', 'testimonials-widget' ) . '</p>'
|
963 |
)
|
964 |
);
|
965 |
|
@@ -967,7 +976,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
967 |
array(
|
968 |
'id' => 'tw-ordering',
|
969 |
'title' => esc_html__( 'Ordering', 'testimonials-widget' ),
|
970 |
-
'content' => '<p>' . esc_html__( 'Options used to determine displayed testimonials ordering.', 'testimonials-widget' ) . '</p>'
|
971 |
)
|
972 |
);
|
973 |
|
@@ -975,7 +984,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
975 |
array(
|
976 |
'id' => 'tw-columns',
|
977 |
'title' => esc_html__( 'Columns', 'testimonials-widget' ),
|
978 |
-
'content' => '<p>' . esc_html__( 'Allowed columns to display on edit page.', 'testimonials-widget' ) . '</p>'
|
979 |
)
|
980 |
);
|
981 |
|
@@ -983,7 +992,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
983 |
array(
|
984 |
'id' => 'tw-post_type',
|
985 |
'title' => esc_html__( 'Post Type', 'testimonials-widget' ),
|
986 |
-
'content' => '<p>' . esc_html__( 'Archive and singular page URL related testimonials options.', 'testimonials-widget' ) . '</p>'
|
987 |
)
|
988 |
);
|
989 |
|
@@ -991,7 +1000,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
991 |
array(
|
992 |
'id' => 'tw-widget',
|
993 |
'title' => esc_html__( 'Slider Widget', 'testimonials-widget' ),
|
994 |
-
'content' => '<p>' . esc_html__( 'Options related to showing testimonials in widgets.', 'testimonials-widget' ) . '</p>'
|
995 |
)
|
996 |
);
|
997 |
|
@@ -999,7 +1008,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
999 |
array(
|
1000 |
'id' => 'tw-reset',
|
1001 |
'title' => esc_html__( 'Reset', 'testimonials-widget' ),
|
1002 |
-
'content' => '<p>' . esc_html__( 'Backwards compatibility, import/export options, and reset options.', 'testimonials-widget' ) . '</p>'
|
1003 |
)
|
1004 |
);
|
1005 |
|
@@ -1017,7 +1026,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
1017 |
if ( ! $use_cpt_taxonomy ) {
|
1018 |
$taxonomy = 'category';
|
1019 |
} else {
|
1020 |
-
$taxonomy =
|
1021 |
}
|
1022 |
|
1023 |
break;
|
@@ -1026,7 +1035,7 @@ class Testimonials_Widget_Settings extends Aihrus_Settings {
|
|
1026 |
if ( ! $use_cpt_taxonomy ) {
|
1027 |
$taxonomy = 'post_tag';
|
1028 |
} else {
|
1029 |
-
$taxonomy =
|
1030 |
}
|
1031 |
|
1032 |
break;
|
@@ -1045,17 +1054,15 @@ EOD;
|
|
1045 |
|
1046 |
return $scripts;
|
1047 |
}
|
1048 |
-
|
1049 |
-
|
1050 |
}
|
1051 |
|
1052 |
|
1053 |
function tw_get_options() {
|
1054 |
-
$options = get_option(
|
1055 |
|
1056 |
if ( false === $options ) {
|
1057 |
-
$options =
|
1058 |
-
update_option(
|
1059 |
}
|
1060 |
|
1061 |
return $options;
|
@@ -1063,7 +1070,7 @@ function tw_get_options() {
|
|
1063 |
|
1064 |
|
1065 |
function tw_get_option( $option, $default = null ) {
|
1066 |
-
$options = get_option(
|
1067 |
|
1068 |
if ( isset( $options[ $option ] ) ) {
|
1069 |
return $options[ $option ];
|
@@ -1074,22 +1081,22 @@ function tw_get_option( $option, $default = null ) {
|
|
1074 |
|
1075 |
|
1076 |
function tw_set_option( $option, $value = null ) {
|
1077 |
-
$options = get_option(
|
1078 |
|
1079 |
if ( ! is_array( $options ) ) {
|
1080 |
$options = array();
|
1081 |
}
|
1082 |
|
1083 |
$options[ $option ] = $value;
|
1084 |
-
update_option(
|
1085 |
}
|
1086 |
|
1087 |
|
1088 |
function tw_init_options() {
|
1089 |
$options = tw_get_options();
|
1090 |
-
$options = wp_parse_args( $options,
|
1091 |
-
$options =
|
1092 |
-
update_option(
|
1093 |
}
|
1094 |
|
1095 |
?>
|
26 |
|
27 |
require_once AIHR_DIR_INC . 'class-aihrus-settings.php';
|
28 |
|
29 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Settings' ) ) {
|
30 |
return;
|
31 |
}
|
32 |
|
33 |
|
34 |
+
class Axl_Testimonials_Widget_Settings extends Aihrus_Settings {
|
35 |
const ID = 'testimonialswidget_settings';
|
36 |
const NAME = 'Testimonials Widget Settings';
|
37 |
|
77 |
add_filter( 'wp_unique_post_slug_is_bad_flat_slug', array( __CLASS__, 'is_bad_flat_slug' ), 10, 3 );
|
78 |
|
79 |
$version = tw_get_option( 'version' );
|
80 |
+
self::$version = Axl_Testimonials_Widget::VERSION;
|
81 |
self::$version = apply_filters( 'tw_version', self::$version );
|
82 |
|
83 |
if ( $version != self::$version ) {
|
84 |
self::initialize_settings();
|
85 |
}
|
86 |
|
87 |
+
if ( ! Axl_Testimonials_Widget::do_load() ) {
|
88 |
return;
|
89 |
}
|
90 |
|
94 |
|
95 |
|
96 |
public static function admin_menu() {
|
97 |
+
self::$admin_page = add_submenu_page( 'edit.php?post_type=' . Axl_Testimonials_Widget::PT, esc_html__( 'Testimonials Settings', 'testimonials-widget' ), esc_html__( 'Settings', 'testimonials-widget' ), 'manage_options', self::ID, array( __CLASS__, 'display_page' ) );
|
98 |
|
99 |
add_action( 'admin_print_scripts-' . self::$admin_page, array( __CLASS__, 'scripts' ) );
|
100 |
add_action( 'admin_print_styles-' . self::$admin_page, array( __CLASS__, 'styles' ) );
|
105 |
public static function init() {
|
106 |
load_plugin_textdomain( 'testimonials-widget', false, '/testimonials-widget/languages/' );
|
107 |
|
108 |
+
self::$plugin_assets = Axl_Testimonials_Widget::$plugin_assets;
|
109 |
}
|
110 |
|
111 |
|
348 |
'type' => 'expand_begin',
|
349 |
);
|
350 |
|
351 |
+
self::$settings['hide_source_title'] = array(
|
352 |
+
'section' => 'fields',
|
353 |
+
'title' => esc_html__( 'Hide Title Above Content?', 'testimonials-widget' ),
|
354 |
+
'type' => 'checkbox',
|
355 |
+
'validate' => 'is_true',
|
356 |
+
'std' => 1,
|
357 |
+
'desc' => esc_html__( 'Don\'t display testimonial title above testimonial content.', 'testimonials-widget' ),
|
358 |
+
);
|
359 |
+
|
360 |
self::$settings['hide_source'] = array(
|
361 |
'section' => 'fields',
|
362 |
'title' => esc_html__( 'Hide Author?', 'testimonials-widget' ),
|
734 |
// Examples
|
735 |
self::$settings['examples'] = array(
|
736 |
'section' => 'examples',
|
737 |
+
'desc' => Axl_Testimonials_Widget::testimonials_examples(),
|
738 |
'type' => 'content',
|
739 |
'widget' => 0,
|
740 |
);
|
744 |
self::$settings['options'] = array(
|
745 |
'section' => 'options',
|
746 |
'type' => 'content',
|
747 |
+
'desc' => Axl_Testimonials_Widget::testimonials_options(),
|
748 |
'widget' => 0,
|
749 |
);
|
750 |
self::$settings['options'] = wp_parse_args( self::$settings['options'], self::$default );
|
854 |
}
|
855 |
|
856 |
$input['version'] = self::$version;
|
857 |
+
$input['donate_version'] = Axl_Testimonials_Widget::VERSION;
|
858 |
|
859 |
$input = apply_filters( 'tw_validate_settings', $input, $errors );
|
860 |
if ( empty( $do_errors ) ) {
|
952 |
array(
|
953 |
'id' => 'tw-general',
|
954 |
'title' => esc_html__( 'General', 'testimonials-widget' ),
|
955 |
+
'content' => '<p>' . esc_html__( 'General options.', 'testimonials-widget' ) . '</p>',
|
956 |
)
|
957 |
);
|
958 |
|
960 |
array(
|
961 |
'id' => 'tw-fields',
|
962 |
'title' => esc_html__( 'Fields', 'testimonials-widget' ),
|
963 |
+
'content' => '<p>' . esc_html__( 'Show or hide fields.', 'testimonials-widget' ) . '</p>',
|
964 |
)
|
965 |
);
|
966 |
|
968 |
array(
|
969 |
'id' => 'tw-selection',
|
970 |
'title' => esc_html__( 'Selection', 'testimonials-widget' ),
|
971 |
+
'content' => '<p>' . esc_html__( 'Options used to select testimonials.', 'testimonials-widget' ) . '</p>',
|
972 |
)
|
973 |
);
|
974 |
|
976 |
array(
|
977 |
'id' => 'tw-ordering',
|
978 |
'title' => esc_html__( 'Ordering', 'testimonials-widget' ),
|
979 |
+
'content' => '<p>' . esc_html__( 'Options used to determine displayed testimonials ordering.', 'testimonials-widget' ) . '</p>',
|
980 |
)
|
981 |
);
|
982 |
|
984 |
array(
|
985 |
'id' => 'tw-columns',
|
986 |
'title' => esc_html__( 'Columns', 'testimonials-widget' ),
|
987 |
+
'content' => '<p>' . esc_html__( 'Allowed columns to display on edit page.', 'testimonials-widget' ) . '</p>',
|
988 |
)
|
989 |
);
|
990 |
|
992 |
array(
|
993 |
'id' => 'tw-post_type',
|
994 |
'title' => esc_html__( 'Post Type', 'testimonials-widget' ),
|
995 |
+
'content' => '<p>' . esc_html__( 'Archive and singular page URL related testimonials options.', 'testimonials-widget' ) . '</p>',
|
996 |
)
|
997 |
);
|
998 |
|
1000 |
array(
|
1001 |
'id' => 'tw-widget',
|
1002 |
'title' => esc_html__( 'Slider Widget', 'testimonials-widget' ),
|
1003 |
+
'content' => '<p>' . esc_html__( 'Options related to showing testimonials in widgets.', 'testimonials-widget' ) . '</p>',
|
1004 |
)
|
1005 |
);
|
1006 |
|
1008 |
array(
|
1009 |
'id' => 'tw-reset',
|
1010 |
'title' => esc_html__( 'Reset', 'testimonials-widget' ),
|
1011 |
+
'content' => '<p>' . esc_html__( 'Backwards compatibility, import/export options, and reset options.', 'testimonials-widget' ) . '</p>',
|
1012 |
)
|
1013 |
);
|
1014 |
|
1026 |
if ( ! $use_cpt_taxonomy ) {
|
1027 |
$taxonomy = 'category';
|
1028 |
} else {
|
1029 |
+
$taxonomy = Axl_Testimonials_Widget::$cpt_category;
|
1030 |
}
|
1031 |
|
1032 |
break;
|
1035 |
if ( ! $use_cpt_taxonomy ) {
|
1036 |
$taxonomy = 'post_tag';
|
1037 |
} else {
|
1038 |
+
$taxonomy = Axl_Testimonials_Widget::$cpt_tags;
|
1039 |
}
|
1040 |
|
1041 |
break;
|
1054 |
|
1055 |
return $scripts;
|
1056 |
}
|
|
|
|
|
1057 |
}
|
1058 |
|
1059 |
|
1060 |
function tw_get_options() {
|
1061 |
+
$options = get_option( Axl_Testimonials_Widget_Settings::ID );
|
1062 |
|
1063 |
if ( false === $options ) {
|
1064 |
+
$options = Axl_Testimonials_Widget_Settings::get_defaults();
|
1065 |
+
update_option( Axl_Testimonials_Widget_Settings::ID, $options );
|
1066 |
}
|
1067 |
|
1068 |
return $options;
|
1070 |
|
1071 |
|
1072 |
function tw_get_option( $option, $default = null ) {
|
1073 |
+
$options = get_option( Axl_Testimonials_Widget_Settings::ID, null );
|
1074 |
|
1075 |
if ( isset( $options[ $option ] ) ) {
|
1076 |
return $options[ $option ];
|
1081 |
|
1082 |
|
1083 |
function tw_set_option( $option, $value = null ) {
|
1084 |
+
$options = get_option( Axl_Testimonials_Widget_Settings::ID );
|
1085 |
|
1086 |
if ( ! is_array( $options ) ) {
|
1087 |
$options = array();
|
1088 |
}
|
1089 |
|
1090 |
$options[ $option ] = $value;
|
1091 |
+
update_option( Axl_Testimonials_Widget_Settings::ID, $options );
|
1092 |
}
|
1093 |
|
1094 |
|
1095 |
function tw_init_options() {
|
1096 |
$options = tw_get_options();
|
1097 |
+
$options = wp_parse_args( $options, Axl_Testimonials_Widget::get_defaults() );
|
1098 |
+
$options = Axl_Testimonials_Widget_Settings::validate_settings( $options );
|
1099 |
+
update_option( Axl_Testimonials_Widget_Settings::ID, $options );
|
1100 |
}
|
1101 |
|
1102 |
?>
|
includes/class-testimonials-widget-slider-widget.php
CHANGED
@@ -20,12 +20,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
-
if ( class_exists( '
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
-
class
|
29 |
// should be tw_slider_widget, but for backwards compliance left alone
|
30 |
const ID = 'testimonials_widget';
|
31 |
|
@@ -41,22 +41,22 @@ class Testimonials_Widget_Slider_Widget extends Aihrus_Widget {
|
|
41 |
|
42 |
|
43 |
public static function get_testimonials_css() {
|
44 |
-
|
45 |
}
|
46 |
|
47 |
|
48 |
public static function get_testimonials_scripts() {
|
49 |
-
|
50 |
}
|
51 |
|
52 |
|
53 |
public static function get_defaults() {
|
54 |
-
return
|
55 |
}
|
56 |
|
57 |
|
58 |
public static function get_content( $instance = null, $widget_number = null ) {
|
59 |
-
return
|
60 |
}
|
61 |
|
62 |
|
@@ -84,10 +84,10 @@ class Testimonials_Widget_Slider_Widget extends Aihrus_Widget {
|
|
84 |
|
85 |
|
86 |
public static function form_parts( $instance = null, $number = null ) {
|
87 |
-
$form_parts =
|
88 |
|
89 |
if ( ! empty( $instance['do_number'] ) ) {
|
90 |
-
$std = ' .' .
|
91 |
|
92 |
$form_parts['css_class'] = array(
|
93 |
'section' => 'widget',
|
@@ -106,11 +106,8 @@ class Testimonials_Widget_Slider_Widget extends Aihrus_Widget {
|
|
106 |
|
107 |
|
108 |
public static function get_suggest( $id, $suggest_id ) {
|
109 |
-
return
|
110 |
}
|
111 |
-
|
112 |
-
|
113 |
}
|
114 |
|
115 |
-
|
116 |
?>
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Slider_Widget' ) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
+
class Axl_Testimonials_Widget_Slider_Widget extends Aihrus_Widget {
|
29 |
// should be tw_slider_widget, but for backwards compliance left alone
|
30 |
const ID = 'testimonials_widget';
|
31 |
|
41 |
|
42 |
|
43 |
public static function get_testimonials_css() {
|
44 |
+
Axl_Testimonials_Widget::get_testimonials_css();
|
45 |
}
|
46 |
|
47 |
|
48 |
public static function get_testimonials_scripts() {
|
49 |
+
Axl_Testimonials_Widget::get_testimonials_scripts();
|
50 |
}
|
51 |
|
52 |
|
53 |
public static function get_defaults() {
|
54 |
+
return Axl_Testimonials_Widget::get_defaults();
|
55 |
}
|
56 |
|
57 |
|
58 |
public static function get_content( $instance = null, $widget_number = null ) {
|
59 |
+
return Axl_Testimonials_Widget::testimonials_slider( $instance, $widget_number );
|
60 |
}
|
61 |
|
62 |
|
84 |
|
85 |
|
86 |
public static function form_parts( $instance = null, $number = null ) {
|
87 |
+
$form_parts = Axl_Testimonials_Widget_Settings::get_settings();
|
88 |
|
89 |
if ( ! empty( $instance['do_number'] ) ) {
|
90 |
+
$std = ' .' . Axl_Testimonials_Widget::ID . $number;
|
91 |
|
92 |
$form_parts['css_class'] = array(
|
93 |
'section' => 'widget',
|
106 |
|
107 |
|
108 |
public static function get_suggest( $id, $suggest_id ) {
|
109 |
+
return Axl_Testimonials_Widget_Settings::get_suggest( $id, $suggest_id );
|
110 |
}
|
|
|
|
|
111 |
}
|
112 |
|
|
|
113 |
?>
|
includes/class-testimonials-widget-tag-cloud-widget.php
CHANGED
@@ -20,12 +20,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
-
if ( class_exists( '
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
-
class
|
29 |
const ID = 'tw_tag_cloud_widget';
|
30 |
|
31 |
public static $title;
|
@@ -45,7 +45,7 @@ class Testimonials_Widget_Tag_Cloud_Widget extends Aihrus_Widget {
|
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
-
return
|
49 |
}
|
50 |
|
51 |
|
@@ -67,11 +67,11 @@ class Testimonials_Widget_Tag_Cloud_Widget extends Aihrus_Widget {
|
|
67 |
$std = 'post_tag';
|
68 |
} else {
|
69 |
$options = array(
|
70 |
-
|
71 |
-
|
72 |
);
|
73 |
|
74 |
-
$std =
|
75 |
}
|
76 |
|
77 |
$form_parts['taxonomy'] = array(
|
20 |
|
21 |
require_once AIHR_DIR_INC . 'class-aihrus-widget.php';
|
22 |
|
23 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Tag_Cloud_Widget' ) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
|
28 |
+
class Axl_Testimonials_Widget_Tag_Cloud_Widget extends Aihrus_Widget {
|
29 |
const ID = 'tw_tag_cloud_widget';
|
30 |
|
31 |
public static $title;
|
45 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
46 |
*/
|
47 |
public static function get_content( $instance = null, $widget_number = null ) {
|
48 |
+
return Axl_Testimonials_Widget::testimonials_tag_cloud( $instance, $widget_number );
|
49 |
}
|
50 |
|
51 |
|
67 |
$std = 'post_tag';
|
68 |
} else {
|
69 |
$options = array(
|
70 |
+
Axl_Testimonials_Widget::$cpt_category => esc_html__( 'Category', 'testimonials-widget' ),
|
71 |
+
Axl_Testimonials_Widget::$cpt_tags => esc_html__( 'Tags', 'testimonials-widget' ),
|
72 |
);
|
73 |
|
74 |
+
$std = Axl_Testimonials_Widget::$cpt_tags;
|
75 |
}
|
76 |
|
77 |
$form_parts['taxonomy'] = array(
|
includes/class-testimonials-widget-template-loader.php
CHANGED
@@ -26,7 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|
26 |
|
27 |
require_once TW_DIR_LIB . 'Gamajo-Template-Loader/class-gamajo-template-loader.php';
|
28 |
|
29 |
-
if ( class_exists( '
|
30 |
return;
|
31 |
}
|
32 |
|
@@ -36,7 +36,7 @@ if ( class_exists( 'Testimonials_Widget_Template_Loader' ) ) {
|
|
36 |
*
|
37 |
* @SuppressWarnings(PHPMD.LongVariable)
|
38 |
*/
|
39 |
-
class
|
40 |
protected $filter_prefix = 'testimonials_widget';
|
41 |
protected $theme_template_directory = 'testimonials-widget';
|
42 |
protected $plugin_directory = TW_DIR;
|
26 |
|
27 |
require_once TW_DIR_LIB . 'Gamajo-Template-Loader/class-gamajo-template-loader.php';
|
28 |
|
29 |
+
if ( class_exists( 'Axl_Testimonials_Widget_Template_Loader' ) ) {
|
30 |
return;
|
31 |
}
|
32 |
|
36 |
*
|
37 |
* @SuppressWarnings(PHPMD.LongVariable)
|
38 |
*/
|
39 |
+
class Axl_Testimonials_Widget_Template_Loader extends Gamajo_Template_Loader {
|
40 |
protected $filter_prefix = 'testimonials_widget';
|
41 |
protected $theme_template_directory = 'testimonials-widget';
|
42 |
protected $plugin_directory = TW_DIR;
|
includes/class-testimonials-widget.php
CHANGED
@@ -28,12 +28,12 @@ require_once TW_DIR_INC . 'class-testimonials-widget-slider-widget.php';
|
|
28 |
require_once TW_DIR_INC . 'class-testimonials-widget-tag-cloud-widget.php';
|
29 |
require_once TW_DIR_INC . 'class-testimonials-widget-template-loader.php';
|
30 |
|
31 |
-
if ( class_exists( '
|
32 |
return;
|
33 |
}
|
34 |
|
35 |
|
36 |
-
class
|
37 |
const BASE = TW_BASE;
|
38 |
const ID = 'testimonials-widget-testimonials';
|
39 |
const SLUG = 'tw_';
|
@@ -71,6 +71,9 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
71 |
public static $aggregate_review = 'reviewCount';
|
72 |
public static $aggregate_schema = 'http://schema.org/AggregateRating';
|
73 |
|
|
|
|
|
|
|
74 |
public static $cw_author = 'author';
|
75 |
public static $cw_date = 'datePublished';
|
76 |
public static $cw_date_mod = 'dateModified';
|
@@ -133,7 +136,7 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
133 |
public static function admin_init() {
|
134 |
self::support_thumbnails();
|
135 |
|
136 |
-
self::$settings_link = '<a href="' . get_admin_url() . 'edit.php?post_type=' . self::PT . '&page=' .
|
137 |
|
138 |
self::add_meta_box_testimonials_widget();
|
139 |
self::update();
|
@@ -297,7 +300,7 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
297 |
|
298 |
$delete_data = tw_get_option( 'delete_data', false );
|
299 |
if ( $delete_data ) {
|
300 |
-
delete_option(
|
301 |
$wpdb->query( 'OPTIMIZE TABLE `' . $wpdb->options . '`' );
|
302 |
|
303 |
self::delete_testimonials();
|
@@ -395,6 +398,7 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
395 |
if ( $prior_version < self::VERSION ) {
|
396 |
tw_requirements_check( true );
|
397 |
tw_init_options();
|
|
|
398 |
flush_rewrite_rules();
|
399 |
do_action( 'tw_update' );
|
400 |
}
|
@@ -404,7 +408,7 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
404 |
|
405 |
// display donate on major/minor version release
|
406 |
$donate_version = tw_get_option( 'donate_version', false );
|
407 |
-
if ( ! $donate_version || (
|
408 |
self::set_notice( 'notice_donate' );
|
409 |
tw_set_option( 'donate_version', self::VERSION );
|
410 |
}
|
@@ -678,7 +682,7 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
678 |
|
679 |
public static function testimonials( $atts ) {
|
680 |
$atts = wp_parse_args( $atts, self::get_defaults() );
|
681 |
-
$atts =
|
682 |
|
683 |
if ( get_query_var( 'paged' ) ) {
|
684 |
$atts['paged'] = get_query_var( 'paged' );
|
@@ -722,7 +726,7 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
722 |
}
|
723 |
|
724 |
$atts = wp_parse_args( $atts, self::get_defaults() );
|
725 |
-
$atts =
|
726 |
|
727 |
$atts['paging'] = false;
|
728 |
$atts['type'] = 'testimonials_slider';
|
@@ -817,14 +821,14 @@ class Testimonials_Widget extends Aihrus_Common {
|
|
817 |
$adaptive_height = $atts['adaptive_height'] ? 'true' : 'false';
|
818 |
$enable_video = $atts['enable_video'];
|
819 |
$show_start_stop = $atts['show_start_stop'];
|
820 |
-
$slide_width = empty( $slide_width ) ? 0 : $atts['slide_width'];
|
821 |
$transition_mode = $atts['transition_mode'];
|
822 |
|
823 |
$auto = $refresh_interval ? 'true' : 'false';
|
824 |
$pause = $refresh_interval * 1000;
|
825 |
$video = $enable_video ? "video: true,\nuseCSS: false" : 'video: false';
|
826 |
|
827 |
-
$
|
828 |
|
829 |
$slider_var = self::SLUG . $widget_number;
|
830 |
$javascript .= <<<EOF
|
@@ -834,7 +838,7 @@ jQuery(document).ready(function() {
|
|
834 |
{$slider_var} = jQuery('.{$id_base}').bxSlider({
|
835 |
adaptiveHeight: {$adaptive_height},
|
836 |
auto: {$auto},
|
837 |
-
{$
|
838 |
autoHover: true,
|
839 |
controls: false,
|
840 |
mode: '{$transition_mode}',
|
@@ -869,7 +873,7 @@ EOF;
|
|
869 |
|
870 |
$div_open = self::get_template_part( 'testimonials', 'open' );
|
871 |
|
872 |
-
$paging =
|
873 |
$pre_paging = '';
|
874 |
if ( $paging || 'before' === strtolower( $atts['paging'] ) ) {
|
875 |
$pre_paging = self::get_testimonials_paging( $atts );
|
@@ -1355,11 +1359,11 @@ EOF;
|
|
1355 |
|
1356 |
|
1357 |
public static function widgets_init() {
|
1358 |
-
register_widget( '
|
1359 |
-
register_widget( '
|
1360 |
-
register_widget( '
|
1361 |
-
register_widget( '
|
1362 |
-
register_widget( '
|
1363 |
}
|
1364 |
|
1365 |
|
@@ -1447,7 +1451,7 @@ EOF;
|
|
1447 |
7 => esc_html__( 'Testimonial saved.', 'testimonials-widget' ),
|
1448 |
8 => sprintf( __( 'Testimonial submitted. <a target="_blank" href="%s">Preview testimonial</a>', 'testimonials-widget' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) ),
|
1449 |
9 => sprintf( __( 'Testimonial scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview testimonial</a>', 'testimonials-widget' ), date_i18n( 'M j, Y @ G:i', strtotime( $post->post_date ) ), esc_url( get_permalink( $post->ID ) ) ),
|
1450 |
-
10 => sprintf( __( 'Testimonial draft updated. <a target="_blank" href="%s">Preview testimonial</a>', 'testimonials-widget' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) )
|
1451 |
);
|
1452 |
|
1453 |
return $m;
|
@@ -1581,7 +1585,7 @@ EOF;
|
|
1581 |
|
1582 |
$review_meta[ self::$cw_date ] = $the_date;
|
1583 |
$review_meta[ self::$cw_date_mod ] = $the_date_mod;
|
1584 |
-
$review_meta[ self::$thing_url ] =
|
1585 |
if ( empty( $review_meta[ self::$thing_name ] ) ) {
|
1586 |
$review_meta[ self::$thing_name ] = self::testimonials_truncate( $testimonial_content, $review_name_length );
|
1587 |
}
|
@@ -1592,13 +1596,6 @@ EOF;
|
|
1592 |
$review_meta[ self::$thing_image ] = $src;
|
1593 |
}
|
1594 |
|
1595 |
-
$aggregate_meta = array(
|
1596 |
-
self::$aggregate_review => self::get_review_count( $testimonial ),
|
1597 |
-
);
|
1598 |
-
|
1599 |
-
$aggregate_meta[ self::$aggregate_count ] = $aggregate_meta[ self::$aggregate_review ];
|
1600 |
-
$review_meta[ self::$aggregate_rating ] = array( self::$aggregate_schema, $aggregate_meta );
|
1601 |
-
|
1602 |
$review_meta = apply_filters( 'tw_schema_review', $review_meta, $testimonial, $atts );
|
1603 |
$review = self::create_schema_meta( $review_meta );
|
1604 |
$schema .= $review;
|
@@ -1765,7 +1762,7 @@ EOF;
|
|
1765 |
} elseif ( ! empty( $_REQUEST['post_type'] ) && self::PT == $_REQUEST['post_type'] ) {
|
1766 |
if ( ! empty( $GLOBALS['pagenow'] ) && in_array( $GLOBALS['pagenow'], array( 'edit.php', 'edit-tags.php' ) ) ) {
|
1767 |
$do_load = true;
|
1768 |
-
} elseif ( ! empty( $_REQUEST['option_page'] ) &&
|
1769 |
$do_load = true;
|
1770 |
}
|
1771 |
}
|
@@ -1858,7 +1855,7 @@ EOF;
|
|
1858 |
|
1859 |
public static function get_template_part( $slug, $name = null ) {
|
1860 |
if ( is_null( self::$template_loader ) ) {
|
1861 |
-
self::$template_loader = new
|
1862 |
}
|
1863 |
|
1864 |
ob_start();
|
@@ -1885,8 +1882,8 @@ EOF;
|
|
1885 |
|
1886 |
|
1887 |
public static function testimonials_archives( $atts, $widget_number = null ) {
|
1888 |
-
$atts = wp_parse_args( $atts,
|
1889 |
-
$atts =
|
1890 |
|
1891 |
$atts['type'] = 'testimonials_archives';
|
1892 |
|
@@ -1940,13 +1937,13 @@ EOF;
|
|
1940 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
1941 |
*/
|
1942 |
public static function getarchives_where( $where, $args ) {
|
1943 |
-
return "WHERE post_type = '" .
|
1944 |
}
|
1945 |
|
1946 |
|
1947 |
public static function testimonials_categories( $atts, $widget_number = null ) {
|
1948 |
-
$atts = wp_parse_args( $atts,
|
1949 |
-
$atts =
|
1950 |
|
1951 |
$atts['type'] = 'testimonials_categories';
|
1952 |
|
@@ -1980,8 +1977,8 @@ EOF;
|
|
1980 |
|
1981 |
|
1982 |
public static function testimonials_recent( $atts, $widget_number = null ) {
|
1983 |
-
$atts = wp_parse_args( $atts,
|
1984 |
-
$atts =
|
1985 |
|
1986 |
$atts['type'] = 'testimonials_recent';
|
1987 |
|
@@ -2015,8 +2012,8 @@ EOF;
|
|
2015 |
|
2016 |
|
2017 |
public static function testimonials_tag_cloud( $atts, $widget_number = null ) {
|
2018 |
-
$atts = wp_parse_args( $atts,
|
2019 |
-
$atts =
|
2020 |
|
2021 |
$atts['type'] = 'testimonials_tag_cloud';
|
2022 |
|
@@ -2057,14 +2054,14 @@ EOF;
|
|
2057 |
if ( self::$aggregate_no_item != $testimonial_item ) {
|
2058 |
// @codingStandardsIgnoreStart
|
2059 |
$query_args = array(
|
2060 |
-
'post_type' =>
|
2061 |
'posts_per_page' => -1,
|
2062 |
'meta_query' => array(
|
2063 |
'relation' => 'AND',
|
2064 |
array(
|
2065 |
'key' => 'testimonials-widget-item',
|
2066 |
'value' => $testimonial_item,
|
2067 |
-
'compare' => '
|
2068 |
),
|
2069 |
),
|
2070 |
);
|
@@ -2072,14 +2069,14 @@ EOF;
|
|
2072 |
} else {
|
2073 |
// @codingStandardsIgnoreStart
|
2074 |
$query_args = array(
|
2075 |
-
'post_type' =>
|
2076 |
'posts_per_page' => -1,
|
2077 |
'meta_query' => array(
|
2078 |
'relation' => 'AND',
|
2079 |
array(
|
2080 |
'key' => 'testimonials-widget-item',
|
2081 |
'value' => '',
|
2082 |
-
'compare' => '
|
2083 |
),
|
2084 |
),
|
2085 |
);
|
@@ -2160,10 +2157,10 @@ EOF;
|
|
2160 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
2161 |
*/
|
2162 |
public static function get_testimonials_options( $atts = null ) {
|
2163 |
-
$sections =
|
2164 |
-
$settings =
|
2165 |
|
2166 |
-
$ignored_types = array( 'expand_begin', 'expand_end', 'expand_all', 'content'
|
2167 |
|
2168 |
$do_continue = false;
|
2169 |
$do_used_with = false;
|
@@ -2261,10 +2258,10 @@ EOF;
|
|
2261 |
|
2262 |
// remaining widgets
|
2263 |
$widgets = array(
|
2264 |
-
'
|
2265 |
-
'
|
2266 |
-
'
|
2267 |
-
'
|
2268 |
);
|
2269 |
|
2270 |
$widgets = apply_filters( 'tw_options_widgets', $widgets );
|
@@ -2354,7 +2351,6 @@ EOF;
|
|
2354 |
|
2355 |
return $used_with_codes;
|
2356 |
}
|
2357 |
-
|
2358 |
}
|
2359 |
|
2360 |
?>
|
28 |
require_once TW_DIR_INC . 'class-testimonials-widget-tag-cloud-widget.php';
|
29 |
require_once TW_DIR_INC . 'class-testimonials-widget-template-loader.php';
|
30 |
|
31 |
+
if ( class_exists( 'Axl_Testimonials_Widget' ) ) {
|
32 |
return;
|
33 |
}
|
34 |
|
35 |
|
36 |
+
class Axl_Testimonials_Widget extends Aihrus_Common {
|
37 |
const BASE = TW_BASE;
|
38 |
const ID = 'testimonials-widget-testimonials';
|
39 |
const SLUG = 'tw_';
|
71 |
public static $aggregate_review = 'reviewCount';
|
72 |
public static $aggregate_schema = 'http://schema.org/AggregateRating';
|
73 |
|
74 |
+
public static $rating_max = 5;
|
75 |
+
public static $rating_value = 'ratingValue';
|
76 |
+
|
77 |
public static $cw_author = 'author';
|
78 |
public static $cw_date = 'datePublished';
|
79 |
public static $cw_date_mod = 'dateModified';
|
136 |
public static function admin_init() {
|
137 |
self::support_thumbnails();
|
138 |
|
139 |
+
self::$settings_link = '<a href="' . get_admin_url() . 'edit.php?post_type=' . self::PT . '&page=' . Axl_Testimonials_Widget_Settings::ID . '">' . esc_html__( 'Settings', 'testimonials-widget' ) . '</a>';
|
140 |
|
141 |
self::add_meta_box_testimonials_widget();
|
142 |
self::update();
|
300 |
|
301 |
$delete_data = tw_get_option( 'delete_data', false );
|
302 |
if ( $delete_data ) {
|
303 |
+
delete_option( Axl_Testimonials_Widget_Settings::ID );
|
304 |
$wpdb->query( 'OPTIMIZE TABLE `' . $wpdb->options . '`' );
|
305 |
|
306 |
self::delete_testimonials();
|
398 |
if ( $prior_version < self::VERSION ) {
|
399 |
tw_requirements_check( true );
|
400 |
tw_init_options();
|
401 |
+
self::init_post_type();
|
402 |
flush_rewrite_rules();
|
403 |
do_action( 'tw_update' );
|
404 |
}
|
408 |
|
409 |
// display donate on major/minor version release
|
410 |
$donate_version = tw_get_option( 'donate_version', false );
|
411 |
+
if ( ! $donate_version || ( self::VERSION != $donate_version && preg_match( '#\.0$#', self::VERSION ) ) ) {
|
412 |
self::set_notice( 'notice_donate' );
|
413 |
tw_set_option( 'donate_version', self::VERSION );
|
414 |
}
|
682 |
|
683 |
public static function testimonials( $atts ) {
|
684 |
$atts = wp_parse_args( $atts, self::get_defaults() );
|
685 |
+
$atts = Axl_Testimonials_Widget_Settings::validate_settings( $atts );
|
686 |
|
687 |
if ( get_query_var( 'paged' ) ) {
|
688 |
$atts['paged'] = get_query_var( 'paged' );
|
726 |
}
|
727 |
|
728 |
$atts = wp_parse_args( $atts, self::get_defaults() );
|
729 |
+
$atts = Axl_Testimonials_Widget_Settings::validate_settings( $atts );
|
730 |
|
731 |
$atts['paging'] = false;
|
732 |
$atts['type'] = 'testimonials_slider';
|
821 |
$adaptive_height = $atts['adaptive_height'] ? 'true' : 'false';
|
822 |
$enable_video = $atts['enable_video'];
|
823 |
$show_start_stop = $atts['show_start_stop'];
|
824 |
+
$slide_width = empty( $atts['slide_width'] ) ? 0 : $atts['slide_width'];
|
825 |
$transition_mode = $atts['transition_mode'];
|
826 |
|
827 |
$auto = $refresh_interval ? 'true' : 'false';
|
828 |
$pause = $refresh_interval * 1000;
|
829 |
$video = $enable_video ? "video: true,\nuseCSS: false" : 'video: false';
|
830 |
|
831 |
+
$auto_controls = $show_start_stop ? 'autoControls: true,' : '';
|
832 |
|
833 |
$slider_var = self::SLUG . $widget_number;
|
834 |
$javascript .= <<<EOF
|
838 |
{$slider_var} = jQuery('.{$id_base}').bxSlider({
|
839 |
adaptiveHeight: {$adaptive_height},
|
840 |
auto: {$auto},
|
841 |
+
{$auto_controls}
|
842 |
autoHover: true,
|
843 |
controls: false,
|
844 |
mode: '{$transition_mode}',
|
873 |
|
874 |
$div_open = self::get_template_part( 'testimonials', 'open' );
|
875 |
|
876 |
+
$paging = Axl_Testimonials_Widget_Settings::is_true( $atts['paging'] );
|
877 |
$pre_paging = '';
|
878 |
if ( $paging || 'before' === strtolower( $atts['paging'] ) ) {
|
879 |
$pre_paging = self::get_testimonials_paging( $atts );
|
1359 |
|
1360 |
|
1361 |
public static function widgets_init() {
|
1362 |
+
register_widget( 'Axl_Testimonials_Widget_Archives_Widget' );
|
1363 |
+
register_widget( 'Axl_Testimonials_Widget_Categories_Widget' );
|
1364 |
+
register_widget( 'Axl_Testimonials_Widget_Recent_Testimonials_Widget' );
|
1365 |
+
register_widget( 'Axl_Testimonials_Widget_Slider_Widget' );
|
1366 |
+
register_widget( 'Axl_Testimonials_Widget_Tag_Cloud_Widget' );
|
1367 |
}
|
1368 |
|
1369 |
|
1451 |
7 => esc_html__( 'Testimonial saved.', 'testimonials-widget' ),
|
1452 |
8 => sprintf( __( 'Testimonial submitted. <a target="_blank" href="%s">Preview testimonial</a>', 'testimonials-widget' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) ),
|
1453 |
9 => sprintf( __( 'Testimonial scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview testimonial</a>', 'testimonials-widget' ), date_i18n( 'M j, Y @ G:i', strtotime( $post->post_date ) ), esc_url( get_permalink( $post->ID ) ) ),
|
1454 |
+
10 => sprintf( __( 'Testimonial draft updated. <a target="_blank" href="%s">Preview testimonial</a>', 'testimonials-widget' ), esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) ),
|
1455 |
);
|
1456 |
|
1457 |
return $m;
|
1585 |
|
1586 |
$review_meta[ self::$cw_date ] = $the_date;
|
1587 |
$review_meta[ self::$cw_date_mod ] = $the_date_mod;
|
1588 |
+
$review_meta[ self::$thing_url ] = get_permalink( $post->ID );
|
1589 |
if ( empty( $review_meta[ self::$thing_name ] ) ) {
|
1590 |
$review_meta[ self::$thing_name ] = self::testimonials_truncate( $testimonial_content, $review_name_length );
|
1591 |
}
|
1596 |
$review_meta[ self::$thing_image ] = $src;
|
1597 |
}
|
1598 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1599 |
$review_meta = apply_filters( 'tw_schema_review', $review_meta, $testimonial, $atts );
|
1600 |
$review = self::create_schema_meta( $review_meta );
|
1601 |
$schema .= $review;
|
1762 |
} elseif ( ! empty( $_REQUEST['post_type'] ) && self::PT == $_REQUEST['post_type'] ) {
|
1763 |
if ( ! empty( $GLOBALS['pagenow'] ) && in_array( $GLOBALS['pagenow'], array( 'edit.php', 'edit-tags.php' ) ) ) {
|
1764 |
$do_load = true;
|
1765 |
+
} elseif ( ! empty( $_REQUEST['option_page'] ) && Axl_Testimonials_Widget_Settings::ID == $_REQUEST['option_page'] ) {
|
1766 |
$do_load = true;
|
1767 |
}
|
1768 |
}
|
1855 |
|
1856 |
public static function get_template_part( $slug, $name = null ) {
|
1857 |
if ( is_null( self::$template_loader ) ) {
|
1858 |
+
self::$template_loader = new Axl_Testimonials_Widget_Template_Loader();
|
1859 |
}
|
1860 |
|
1861 |
ob_start();
|
1882 |
|
1883 |
|
1884 |
public static function testimonials_archives( $atts, $widget_number = null ) {
|
1885 |
+
$atts = wp_parse_args( $atts, Axl_Testimonials_Widget_Archives_Widget::get_defaults() );
|
1886 |
+
$atts = Axl_Testimonials_Widget_Archives_Widget::validate_settings( $atts );
|
1887 |
|
1888 |
$atts['type'] = 'testimonials_archives';
|
1889 |
|
1937 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
1938 |
*/
|
1939 |
public static function getarchives_where( $where, $args ) {
|
1940 |
+
return "WHERE post_type = '" . Axl_Testimonials_Widget::PT . "' AND post_status = 'publish'";
|
1941 |
}
|
1942 |
|
1943 |
|
1944 |
public static function testimonials_categories( $atts, $widget_number = null ) {
|
1945 |
+
$atts = wp_parse_args( $atts, Axl_Testimonials_Widget_Categories_Widget::get_defaults() );
|
1946 |
+
$atts = Axl_Testimonials_Widget_Categories_Widget::validate_settings( $atts );
|
1947 |
|
1948 |
$atts['type'] = 'testimonials_categories';
|
1949 |
|
1977 |
|
1978 |
|
1979 |
public static function testimonials_recent( $atts, $widget_number = null ) {
|
1980 |
+
$atts = wp_parse_args( $atts, Axl_Testimonials_Widget_Recent_Testimonials_Widget::get_defaults() );
|
1981 |
+
$atts = Axl_Testimonials_Widget_Recent_Testimonials_Widget::validate_settings( $atts );
|
1982 |
|
1983 |
$atts['type'] = 'testimonials_recent';
|
1984 |
|
2012 |
|
2013 |
|
2014 |
public static function testimonials_tag_cloud( $atts, $widget_number = null ) {
|
2015 |
+
$atts = wp_parse_args( $atts, Axl_Testimonials_Widget_Tag_Cloud_Widget::get_defaults() );
|
2016 |
+
$atts = Axl_Testimonials_Widget_Tag_Cloud_Widget::validate_settings( $atts );
|
2017 |
|
2018 |
$atts['type'] = 'testimonials_tag_cloud';
|
2019 |
|
2054 |
if ( self::$aggregate_no_item != $testimonial_item ) {
|
2055 |
// @codingStandardsIgnoreStart
|
2056 |
$query_args = array(
|
2057 |
+
'post_type' => Axl_Testimonials_Widget::PT,
|
2058 |
'posts_per_page' => -1,
|
2059 |
'meta_query' => array(
|
2060 |
'relation' => 'AND',
|
2061 |
array(
|
2062 |
'key' => 'testimonials-widget-item',
|
2063 |
'value' => $testimonial_item,
|
2064 |
+
'compare' => '=',
|
2065 |
),
|
2066 |
),
|
2067 |
);
|
2069 |
} else {
|
2070 |
// @codingStandardsIgnoreStart
|
2071 |
$query_args = array(
|
2072 |
+
'post_type' => Axl_Testimonials_Widget::PT,
|
2073 |
'posts_per_page' => -1,
|
2074 |
'meta_query' => array(
|
2075 |
'relation' => 'AND',
|
2076 |
array(
|
2077 |
'key' => 'testimonials-widget-item',
|
2078 |
'value' => '',
|
2079 |
+
'compare' => '=',
|
2080 |
),
|
2081 |
),
|
2082 |
);
|
2157 |
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
2158 |
*/
|
2159 |
public static function get_testimonials_options( $atts = null ) {
|
2160 |
+
$sections = Axl_Testimonials_Widget_Settings::get_sections();
|
2161 |
+
$settings = Axl_Testimonials_Widget_Settings::get_settings();
|
2162 |
|
2163 |
+
$ignored_types = array( 'expand_begin', 'expand_end', 'expand_all', 'content' );
|
2164 |
|
2165 |
$do_continue = false;
|
2166 |
$do_used_with = false;
|
2258 |
|
2259 |
// remaining widgets
|
2260 |
$widgets = array(
|
2261 |
+
'Axl_Testimonials_Widget_Archives_Widget' => 'testimonials_archives',
|
2262 |
+
'Axl_Testimonials_Widget_Categories_Widget' => 'testimonials_categories',
|
2263 |
+
'Axl_Testimonials_Widget_Recent_Testimonials_Widget' => 'testimonials_recent',
|
2264 |
+
'Axl_Testimonials_Widget_Tag_Cloud_Widget' => 'testimonials_tag_cloud',
|
2265 |
);
|
2266 |
|
2267 |
$widgets = apply_filters( 'tw_options_widgets', $widgets );
|
2351 |
|
2352 |
return $used_with_codes;
|
2353 |
}
|
|
|
2354 |
}
|
2355 |
|
2356 |
?>
|
includes/libraries/Gamajo-Template-Loader/README.md
CHANGED
@@ -15,38 +15,25 @@ The `get_template_part()` function in WordPress was never really designed with p
|
|
15 |
This isn't a WordPress plugin on its own, so the usual instructions don't apply. Instead:
|
16 |
|
17 |
1. Copy [`class-gamajo-template-loader.php`](class-gamajo-template-loader.php) into your plugin. It can be into a file in the plugin root, or better, an `includes` directory.
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
22 |
|
23 |
-
~~~
|
24 |
// Template loader instantiated elsewhere, such as the main plugin file
|
25 |
$meal_planner_template_loader = new Meal_Planner_Template_Loader;
|
26 |
-
~~~
|
27 |
-
* Use it to call the `get_template_part()` method. This could be within a shortcode callback, or something you want theme developers to include in their files.
|
28 |
|
29 |
-
|
30 |
-
$meal_planner_template_loader->get_template_part( 'recipe' );
|
31 |
-
~~~
|
32 |
-
* If you want to pass data to the template, call the `add_template_data()` method with an array before calling `get_template_part()`.
|
33 |
-
|
34 |
-
~~~php
|
35 |
-
$data = array( 'foo' => 'bar', 'baz' => 'boom' );
|
36 |
-
$meal_planner_template_loader->add_template_data( $data );
|
37 |
-
$meal_planner_template_loader->get_template_part( 'recipe' );
|
38 |
-
~~~
|
39 |
-
The value of `bar` is now available inside the recipe template as `$template['foo']`.
|
40 |
-
* Optionally, you can wrap the reference to the object in a functions e.g.
|
41 |
|
42 |
-
~~~php
|
43 |
// This function can live wherever is suitable in your plugin
|
44 |
function meal_planner_get_template_part( $slug, $name = null, $load = true ) {
|
45 |
global $meal_planner_template_loader;
|
46 |
$meal_planner_template_loader->get_template_part( $slug, $name, $load );
|
47 |
}
|
48 |
~~~
|
49 |
-
An example using
|
50 |
|
51 |
~~~
|
52 |
add_filter( 'the_content', 'meal_planner_single_recipe_content' );
|
@@ -55,6 +42,7 @@ An example using this helper function would be:
|
|
55 |
return $content;
|
56 |
}
|
57 |
meal_planner_get_template_part( 'recipe', 'ingredients' );
|
|
|
58 |
}
|
59 |
~~~
|
60 |
This will try to load up `wp-content/themes/my-theme/meal-planner/recipe-ingredients.php`, or `wp-content/themes/my-theme/meal-planner/recipe.php`, then fallback to `wp-content/plugins/meal-planner/templates/recipe-ingredients.php` or `wp-content/plugins/meal-planner/templates/recipe.php`.
|
15 |
This isn't a WordPress plugin on its own, so the usual instructions don't apply. Instead:
|
16 |
|
17 |
1. Copy [`class-gamajo-template-loader.php`](class-gamajo-template-loader.php) into your plugin. It can be into a file in the plugin root, or better, an `includes` directory.
|
18 |
+
2. Create a new file, such as `class-your-plugin-template-loader.php`, in the same directory.
|
19 |
+
3. Create a class in that file that extends `Gamajo_Template_Loader`. You can copy the [meal planner](class-meal-planner-template-loader.php) example class as a starting point if it helps.
|
20 |
+
4. Override the class properties to suit your plugin. You could also override the `get_templates_dir()` method if it isn't right for you.
|
21 |
+
5. You can now instantiate your custom template loader class, and use it to call the `get_template_part()` method. This could be within a shortcode callback, or something you want theme developers to include in their files.
|
22 |
+
6. Optionally, you can wrap the reference to the object in a functions e.g.
|
23 |
|
24 |
+
~~~
|
25 |
// Template loader instantiated elsewhere, such as the main plugin file
|
26 |
$meal_planner_template_loader = new Meal_Planner_Template_Loader;
|
|
|
|
|
27 |
|
28 |
+
// ...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
|
|
|
30 |
// This function can live wherever is suitable in your plugin
|
31 |
function meal_planner_get_template_part( $slug, $name = null, $load = true ) {
|
32 |
global $meal_planner_template_loader;
|
33 |
$meal_planner_template_loader->get_template_part( $slug, $name, $load );
|
34 |
}
|
35 |
~~~
|
36 |
+
7. An example using the helper function (or class method) would be:
|
37 |
|
38 |
~~~
|
39 |
add_filter( 'the_content', 'meal_planner_single_recipe_content' );
|
42 |
return $content;
|
43 |
}
|
44 |
meal_planner_get_template_part( 'recipe', 'ingredients' );
|
45 |
+
meal_planner_get_template_part( 'recipe', 'instructions' );
|
46 |
}
|
47 |
~~~
|
48 |
This will try to load up `wp-content/themes/my-theme/meal-planner/recipe-ingredients.php`, or `wp-content/themes/my-theme/meal-planner/recipe.php`, then fallback to `wp-content/plugins/meal-planner/templates/recipe-ingredients.php` or `wp-content/plugins/meal-planner/templates/recipe.php`.
|
includes/libraries/Gamajo-Template-Loader/class-gamajo-template-loader.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @link http://github.com/GaryJones/Gamajo-Template-Loader
|
8 |
* @copyright 2013 Gary Jones
|
9 |
* @license GPL-2.0+
|
10 |
-
* @version 1.
|
11 |
*/
|
12 |
|
13 |
if ( ! class_exists( 'Gamajo_Template_Loader' ) ) {
|
@@ -62,15 +62,6 @@ if ( ! class_exists( 'Gamajo_Template_Loader' ) ) {
|
|
62 |
*/
|
63 |
protected $plugin_template_directory = 'templates'; // or includes/templates, etc.
|
64 |
|
65 |
-
/**
|
66 |
-
* Clean up template data.
|
67 |
-
*
|
68 |
-
* @since 1.2.0
|
69 |
-
*/
|
70 |
-
public function __destruct() {
|
71 |
-
$this->unset_template_data();
|
72 |
-
}
|
73 |
-
|
74 |
/**
|
75 |
* Retrieve a template part.
|
76 |
*
|
@@ -97,37 +88,6 @@ if ( ! class_exists( 'Gamajo_Template_Loader' ) ) {
|
|
97 |
return $this->locate_template( $templates, $load, false );
|
98 |
}
|
99 |
|
100 |
-
/**
|
101 |
-
* Make custom data available to template.
|
102 |
-
*
|
103 |
-
* Data is available to the template as properties under the `$data` variable.
|
104 |
-
* i.e. A value provided here under `$data['foo']` is available as `$data->foo`.
|
105 |
-
*
|
106 |
-
* When an input key has a hyphen, you can use `$data->{foo-bar}` in the template.
|
107 |
-
*
|
108 |
-
* @since 1.2.0
|
109 |
-
*
|
110 |
-
* @param array $data Custom data for the
|
111 |
-
*/
|
112 |
-
public function set_template_data( array $data ) {
|
113 |
-
global $wp_query;
|
114 |
-
$wp_query->query_vars['data'] = (object) $data;
|
115 |
-
}
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Remove access to custom data in template.
|
119 |
-
*
|
120 |
-
* Good to use once the final template part has been requested.
|
121 |
-
*
|
122 |
-
* @since 1.2.0
|
123 |
-
*/
|
124 |
-
public function unset_template_data() {
|
125 |
-
global $wp_query;
|
126 |
-
if ( isset( $wp_query->query_vars['data'] ) ) {
|
127 |
-
unset( $wp_query->query_vars['data'] );
|
128 |
-
}
|
129 |
-
}
|
130 |
-
|
131 |
/**
|
132 |
* Given a slug and optional name, create the file names of templates.
|
133 |
*
|
@@ -174,7 +134,7 @@ if ( ! class_exists( 'Gamajo_Template_Loader' ) ) {
|
|
174 |
* @param string|array $template_names Template file(s) to search for, in order.
|
175 |
* @param bool $load If true the template file will be loaded if it is found.
|
176 |
* @param bool $require_once Whether to require_once or require. Default true.
|
177 |
-
*
|
178 |
*
|
179 |
* @return string The template filename if one is located.
|
180 |
*/
|
7 |
* @link http://github.com/GaryJones/Gamajo-Template-Loader
|
8 |
* @copyright 2013 Gary Jones
|
9 |
* @license GPL-2.0+
|
10 |
+
* @version 1.1.0
|
11 |
*/
|
12 |
|
13 |
if ( ! class_exists( 'Gamajo_Template_Loader' ) ) {
|
62 |
*/
|
63 |
protected $plugin_template_directory = 'templates'; // or includes/templates, etc.
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
/**
|
66 |
* Retrieve a template part.
|
67 |
*
|
88 |
return $this->locate_template( $templates, $load, false );
|
89 |
}
|
90 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
/**
|
92 |
* Given a slug and optional name, create the file names of templates.
|
93 |
*
|
134 |
* @param string|array $template_names Template file(s) to search for, in order.
|
135 |
* @param bool $load If true the template file will be loaded if it is found.
|
136 |
* @param bool $require_once Whether to require_once or require. Default true.
|
137 |
+
* Has no effect if $load is false.
|
138 |
*
|
139 |
* @return string The template filename if one is located.
|
140 |
*/
|
includes/libraries/aihrus-framework/CHANGELOG.md
CHANGED
@@ -2,6 +2,19 @@
|
|
2 |
|
3 |
## master
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
## 1.2.2
|
6 |
* Add Inside Axelerant link
|
7 |
* Store branding updates
|
2 |
|
3 |
## master
|
4 |
|
5 |
+
## 1.2.4
|
6 |
+
* Change support email address to `support@axelerant.com`
|
7 |
+
* Fix coding standards for CI
|
8 |
+
* Remove option to disable the license not saved notice rather set sslverify to false
|
9 |
+
* Remove the use of deprecated function `wp_htmledit_pre()` and use `format_for_editor()` instead
|
10 |
+
|
11 |
+
## 1.2.3
|
12 |
+
* RELATES #7 Add option to disable the license not saved notice
|
13 |
+
* RESOLVE #8 Remove activation helpers
|
14 |
+
* RESOLVE michael-cannon/testimonials-widget#184 Remove deprecated constructor calls for WP_Widget
|
15 |
+
* Tested with WordPress 4.4
|
16 |
+
* Update Parsedown 1.5.4 library
|
17 |
+
|
18 |
## 1.2.2
|
19 |
* Add Inside Axelerant link
|
20 |
* Store branding updates
|
includes/libraries/aihrus-framework/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
# Aihrus Framework
|
2 |
|
3 |
-
Tested up to: 4.
|
4 |
-
Stable tag: 1.2.
|
5 |
|
6 |
A helper library for WordPress plugins by Aihrus and maintained by [Axelerant](//axelerant.com).
|
7 |
|
1 |
# Aihrus Framework
|
2 |
|
3 |
+
Tested up to: 4.4.0
|
4 |
+
Stable tag: 1.2.4
|
5 |
|
6 |
A helper library for WordPress plugins by Aihrus and maintained by [Axelerant](//axelerant.com).
|
7 |
|
includes/libraries/aihrus-framework/aihrus-framework.php
CHANGED
@@ -35,7 +35,7 @@ if ( ! defined( 'AIHR_DIR_LIB' ) ) {
|
|
35 |
}
|
36 |
|
37 |
if ( ! defined( 'AIHR_VERSION' ) ) {
|
38 |
-
define( 'AIHR_VERSION', '1.2.
|
39 |
}
|
40 |
|
41 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
@@ -232,22 +232,8 @@ if ( ! function_exists( 'aihr_notice_updated' ) ) {
|
|
232 |
}
|
233 |
|
234 |
if ( ! function_exists( 'aihr_notice_version' ) ) {
|
235 |
-
function aihr_notice_version( $
|
236 |
-
$
|
237 |
-
if ( $is_active ) {
|
238 |
-
$link = sprintf( __( '<a href="%1$s">update to</a>' ), self_admin_url( 'update-core.php' ) );
|
239 |
-
} else {
|
240 |
-
$plugins = get_plugins();
|
241 |
-
if ( empty( $plugins[ $required_base ] ) ) {
|
242 |
-
$install = esc_url( wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $required_slug ), 'install-plugin_' . $required_slug ) );
|
243 |
-
$link = sprintf( __( '<a href="%1$s">install</a>' ), $install );
|
244 |
-
} else {
|
245 |
-
$activate = esc_url( wp_nonce_url( admin_url( 'plugins.php?action=activate&plugin=' . $required_base ), 'activate-plugin_' . $required_base ) );
|
246 |
-
$link = sprintf( __( '<a href="%1$s">activate</a>' ), $activate );
|
247 |
-
}
|
248 |
-
}
|
249 |
-
|
250 |
-
$text = sprintf( __( 'Plugin "%3$s" has been deactivated. Please %1$s "%4$s" version %2$s or newer before activating "%3$s".' ), $link, $required_version, $item_name, $required_name );
|
251 |
|
252 |
aihr_notice_error( $text );
|
253 |
}
|
@@ -344,7 +330,7 @@ if ( ! function_exists( 'aihr_notice_deactivate' ) ) {
|
|
344 |
$plugin_slug = dirname( plugin_basename( $file ) );
|
345 |
$url = 'https://wordpress.org/plugins/' . $plugin_slug . '/developers/';
|
346 |
|
347 |
-
$text = sprintf( __( 'Plugin "%1$s" has been deactivated due to "%2$s". Once corrected, "%1$s" can be activated.</p><p>If you want to revert "%1$s", look for <a href="%3$s">older versions on WordPress</a> or <a href="mailto:support@
|
348 |
|
349 |
aihr_notice_error( $text );
|
350 |
|
35 |
}
|
36 |
|
37 |
if ( ! defined( 'AIHR_VERSION' ) ) {
|
38 |
+
define( 'AIHR_VERSION', '1.2.4' );
|
39 |
}
|
40 |
|
41 |
require_once ABSPATH . 'wp-admin/includes/plugin.php';
|
232 |
}
|
233 |
|
234 |
if ( ! function_exists( 'aihr_notice_version' ) ) {
|
235 |
+
function aihr_notice_version( $required_name, $required_version, $item_name ) {
|
236 |
+
$text = sprintf( __( 'Plugin "%2$s" has been deactivated. Please install and activate "%3$s" version %1$s or newer before activating "%2$s".' ), $required_version, $item_name, $required_name );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
|
238 |
aihr_notice_error( $text );
|
239 |
}
|
330 |
$plugin_slug = dirname( plugin_basename( $file ) );
|
331 |
$url = 'https://wordpress.org/plugins/' . $plugin_slug . '/developers/';
|
332 |
|
333 |
+
$text = sprintf( __( 'Plugin "%1$s" has been deactivated due to "%2$s". Once corrected, "%1$s" can be activated.</p><p>If you want to revert "%1$s", look for <a href="%3$s">older versions on WordPress</a> or <a href="mailto:support@axelerant.com?subject=Old+Plugin+Version+Request">email Axelerant support</a> if this is a premium plugin.' ), $name, $reason, $url );
|
334 |
|
335 |
aihr_notice_error( $text );
|
336 |
|
includes/libraries/aihrus-framework/includes/class-aihrus-common.php
CHANGED
@@ -440,14 +440,14 @@ EOD;
|
|
440 |
$output .= $text;
|
441 |
$output_length += $func_strlen( $text );
|
442 |
|
443 |
-
if ( $tag[0]
|
444 |
// Handle HTML entity by copying straight through
|
445 |
$output .= $tag;
|
446 |
$output_length++; // only counted as one character
|
447 |
} else {
|
448 |
// Handle HTML tag
|
449 |
$tag_inner = $match[1][0];
|
450 |
-
if ( $tag[1]
|
451 |
// This is a closing tag.
|
452 |
$output .= $tag;
|
453 |
// If input tags aren't balanced, we leave the popped tag
|
@@ -593,13 +593,16 @@ EOD;
|
|
593 |
$dates = array(
|
594 |
array(
|
595 |
'rule' => '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})',
|
596 |
-
'vars' => array( 'year', 'monthnum', 'day' )
|
|
|
597 |
array(
|
598 |
'rule' => '([0-9]{4})/([0-9]{1,2})',
|
599 |
-
'vars' => array( 'year', 'monthnum' )
|
|
|
600 |
array(
|
601 |
'rule' => '([0-9]{4})',
|
602 |
-
'vars' => array( 'year' )
|
|
|
603 |
);
|
604 |
|
605 |
foreach ( $dates as $data ) {
|
@@ -773,8 +776,6 @@ EOD;
|
|
773 |
|
774 |
return $value;
|
775 |
}
|
776 |
-
|
777 |
-
|
778 |
}
|
779 |
|
780 |
|
440 |
$output .= $text;
|
441 |
$output_length += $func_strlen( $text );
|
442 |
|
443 |
+
if ( '&' == $tag[0] ) {
|
444 |
// Handle HTML entity by copying straight through
|
445 |
$output .= $tag;
|
446 |
$output_length++; // only counted as one character
|
447 |
} else {
|
448 |
// Handle HTML tag
|
449 |
$tag_inner = $match[1][0];
|
450 |
+
if ( '/' == $tag[1] ) {
|
451 |
// This is a closing tag.
|
452 |
$output .= $tag;
|
453 |
// If input tags aren't balanced, we leave the popped tag
|
593 |
$dates = array(
|
594 |
array(
|
595 |
'rule' => '([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})',
|
596 |
+
'vars' => array( 'year', 'monthnum', 'day' ),
|
597 |
+
),
|
598 |
array(
|
599 |
'rule' => '([0-9]{4})/([0-9]{1,2})',
|
600 |
+
'vars' => array( 'year', 'monthnum' ),
|
601 |
+
),
|
602 |
array(
|
603 |
'rule' => '([0-9]{4})',
|
604 |
+
'vars' => array( 'year' ),
|
605 |
+
),
|
606 |
);
|
607 |
|
608 |
foreach ( $dates as $data ) {
|
776 |
|
777 |
return $value;
|
778 |
}
|
|
|
|
|
779 |
}
|
780 |
|
781 |
|
includes/libraries/aihrus-framework/includes/class-aihrus-licensing.php
CHANGED
@@ -133,7 +133,7 @@ abstract class Aihrus_Licensing {
|
|
133 |
|
134 |
|
135 |
public function get_remote_get( $api_call ) {
|
136 |
-
$response = wp_remote_get( $api_call );
|
137 |
|
138 |
return $response;
|
139 |
}
|
@@ -158,7 +158,7 @@ abstract class Aihrus_Licensing {
|
|
158 |
public function get_license_data( $action = 'check_license' ) {
|
159 |
$api_call = $this->get_api_call( $action );
|
160 |
$response = $this->get_remote_get( $api_call );
|
161 |
-
if ( is_wp_error( $response ) ) {
|
162 |
return false;
|
163 |
}
|
164 |
|
133 |
|
134 |
|
135 |
public function get_remote_get( $api_call ) {
|
136 |
+
$response = wp_remote_get( $api_call, array( 'sslverify' => false ) );
|
137 |
|
138 |
return $response;
|
139 |
}
|
158 |
public function get_license_data( $action = 'check_license' ) {
|
159 |
$api_call = $this->get_api_call( $action );
|
160 |
$response = $this->get_remote_get( $api_call );
|
161 |
+
if ( empty( $response ) || is_wp_error( $response ) ) {
|
162 |
return false;
|
163 |
}
|
164 |
|
includes/libraries/aihrus-framework/includes/class-aihrus-settings.php
CHANGED
@@ -559,8 +559,8 @@ abstract class Aihrus_Settings {
|
|
559 |
$errors = array();
|
560 |
|
561 |
foreach ( $options as $id => $parts ) {
|
562 |
-
$default = $parts['std'];
|
563 |
-
$type = $parts['type'];
|
564 |
$validations = ! empty( $parts['validate'] ) ? $parts['validate'] : array();
|
565 |
if ( ! empty( $validations ) ) {
|
566 |
$validations = explode( ',', $validations );
|
@@ -889,8 +889,6 @@ EOD;
|
|
889 |
|
890 |
return static::$sections;
|
891 |
}
|
892 |
-
|
893 |
-
|
894 |
}
|
895 |
|
896 |
|
559 |
$errors = array();
|
560 |
|
561 |
foreach ( $options as $id => $parts ) {
|
562 |
+
$default = isset( $parts['std'] ) ? $parts['std'] : '';
|
563 |
+
$type = isset( $parts['type'] ) ? $parts['type'] : '';
|
564 |
$validations = ! empty( $parts['validate'] ) ? $parts['validate'] : array();
|
565 |
if ( ! empty( $validations ) ) {
|
566 |
$validations = explode( ',', $validations );
|
889 |
|
890 |
return static::$sections;
|
891 |
}
|
|
|
|
|
892 |
}
|
893 |
|
894 |
|
includes/libraries/aihrus-framework/includes/class-aihrus-widget.php
CHANGED
@@ -52,7 +52,7 @@ abstract class Aihrus_Widget extends WP_Widget {
|
|
52 |
);
|
53 |
|
54 |
// Create the widget
|
55 |
-
|
56 |
static::ID,
|
57 |
$title,
|
58 |
$widget_ops,
|
@@ -251,7 +251,11 @@ abstract class Aihrus_Widget extends WP_Widget {
|
|
251 |
case 'textarea':
|
252 |
echo '<label for="' . $this->get_field_id( $id ) . '">' . $title . '</label>';
|
253 |
|
254 |
-
|
|
|
|
|
|
|
|
|
255 |
break;
|
256 |
|
257 |
case 'password':
|
@@ -318,7 +322,7 @@ abstract class Aihrus_Widget extends WP_Widget {
|
|
318 |
$defaults = array();
|
319 |
$options = static::form_parts();
|
320 |
foreach ( $options as $option => $value ) {
|
321 |
-
$defaults[ $option ] = $value['std'];
|
322 |
}
|
323 |
|
324 |
return $defaults;
|
@@ -355,8 +359,6 @@ abstract class Aihrus_Widget extends WP_Widget {
|
|
355 |
public static function get_content( $instance = null, $widget_number = null ) {
|
356 |
return;
|
357 |
}
|
358 |
-
|
359 |
-
|
360 |
}
|
361 |
|
362 |
|
52 |
);
|
53 |
|
54 |
// Create the widget
|
55 |
+
parent::__construct(
|
56 |
static::ID,
|
57 |
$title,
|
58 |
$widget_ops,
|
251 |
case 'textarea':
|
252 |
echo '<label for="' . $this->get_field_id( $id ) . '">' . $title . '</label>';
|
253 |
|
254 |
+
if ( function_exists( 'format_for_editor' ) ) {
|
255 |
+
echo '<textarea class="widefat' . $field_class . '" id="' . $this->get_field_id( $id ) . '" name="' . $this->get_field_name( $id ) . '" placeholder="' . $std . '" rows="5" cols="30">' . format_for_editor( $options[ $id ] ) . '</textarea>';
|
256 |
+
} else {
|
257 |
+
echo '<textarea class="widefat' . $field_class . '" id="' . $this->get_field_id( $id ) . '" name="' . $this->get_field_name( $id ) . '" placeholder="' . $std . '" rows="5" cols="30">' . wp_htmledit_pre( $options[ $id ] ) . '</textarea>';
|
258 |
+
}
|
259 |
break;
|
260 |
|
261 |
case 'password':
|
322 |
$defaults = array();
|
323 |
$options = static::form_parts();
|
324 |
foreach ( $options as $option => $value ) {
|
325 |
+
$defaults[ $option ] = isset( $value['std'] ) ? $value['std'] : '';
|
326 |
}
|
327 |
|
328 |
return $defaults;
|
359 |
public static function get_content( $instance = null, $widget_number = null ) {
|
360 |
return;
|
361 |
}
|
|
|
|
|
362 |
}
|
363 |
|
364 |
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/Parsedown.php
CHANGED
@@ -15,28 +15,19 @@
|
|
15 |
|
16 |
class Parsedown
|
17 |
{
|
18 |
-
#
|
19 |
-
# Philosophy
|
20 |
|
21 |
-
|
22 |
-
# it tries to read like one. It goes through text line by line. It looks at
|
23 |
-
# how lines start to identify blocks. It looks for special characters to
|
24 |
-
# identify inline elements.
|
25 |
|
26 |
-
#
|
27 |
# ~
|
28 |
|
29 |
function text($text)
|
30 |
{
|
31 |
# make sure no definitions are set
|
32 |
-
$this->
|
33 |
|
34 |
# standardize line breaks
|
35 |
-
$text = str_replace("\r\n", "\n", $text);
|
36 |
-
$text = str_replace("\r", "\n", $text);
|
37 |
-
|
38 |
-
# replace tabs with spaces
|
39 |
-
$text = str_replace("\t", ' ', $text);
|
40 |
|
41 |
# remove surrounding line breaks
|
42 |
$text = trim($text, "\n");
|
@@ -57,8 +48,6 @@ class Parsedown
|
|
57 |
# Setters
|
58 |
#
|
59 |
|
60 |
-
private $breaksEnabled;
|
61 |
-
|
62 |
function setBreaksEnabled($breaksEnabled)
|
63 |
{
|
64 |
$this->breaksEnabled = $breaksEnabled;
|
@@ -66,15 +55,35 @@ class Parsedown
|
|
66 |
return $this;
|
67 |
}
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
#
|
70 |
# Lines
|
71 |
#
|
72 |
|
73 |
protected $BlockTypes = array(
|
74 |
-
'#' => array('
|
75 |
'*' => array('Rule', 'List'),
|
76 |
'+' => array('List'),
|
77 |
-
'-' => array('
|
78 |
'0' => array('List'),
|
79 |
'1' => array('List'),
|
80 |
'2' => array('List'),
|
@@ -87,8 +96,9 @@ class Parsedown
|
|
87 |
'9' => array('List'),
|
88 |
':' => array('Table'),
|
89 |
'<' => array('Comment', 'Markup'),
|
90 |
-
'=' => array('
|
91 |
'>' => array('Quote'),
|
|
|
92 |
'_' => array('Rule'),
|
93 |
'`' => array('FencedCode'),
|
94 |
'|' => array('Table'),
|
@@ -97,14 +107,8 @@ class Parsedown
|
|
97 |
|
98 |
# ~
|
99 |
|
100 |
-
protected $DefinitionTypes = array(
|
101 |
-
'[' => array('Reference'),
|
102 |
-
);
|
103 |
-
|
104 |
-
# ~
|
105 |
-
|
106 |
protected $unmarkedBlockTypes = array(
|
107 |
-
'
|
108 |
);
|
109 |
|
110 |
#
|
@@ -127,6 +131,23 @@ class Parsedown
|
|
127 |
continue;
|
128 |
}
|
129 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
$indent = 0;
|
131 |
|
132 |
while (isset($line[$indent]) and $line[$indent] === ' ')
|
@@ -142,9 +163,9 @@ class Parsedown
|
|
142 |
|
143 |
# ~
|
144 |
|
145 |
-
if (isset($CurrentBlock['
|
146 |
{
|
147 |
-
$Block = $this->{'
|
148 |
|
149 |
if (isset($Block))
|
150 |
{
|
@@ -154,12 +175,10 @@ class Parsedown
|
|
154 |
}
|
155 |
else
|
156 |
{
|
157 |
-
if (method_exists($this, '
|
158 |
{
|
159 |
-
$CurrentBlock = $this->{'
|
160 |
}
|
161 |
-
|
162 |
-
unset($CurrentBlock['incomplete']);
|
163 |
}
|
164 |
}
|
165 |
|
@@ -167,21 +186,6 @@ class Parsedown
|
|
167 |
|
168 |
$marker = $text[0];
|
169 |
|
170 |
-
if (isset($this->DefinitionTypes[$marker]))
|
171 |
-
{
|
172 |
-
foreach ($this->DefinitionTypes[$marker] as $definitionType)
|
173 |
-
{
|
174 |
-
$Definition = $this->{'identify'.$definitionType}($Line, $CurrentBlock);
|
175 |
-
|
176 |
-
if (isset($Definition))
|
177 |
-
{
|
178 |
-
$this->Definitions[$definitionType][$Definition['id']] = $Definition['data'];
|
179 |
-
|
180 |
-
continue 2;
|
181 |
-
}
|
182 |
-
}
|
183 |
-
}
|
184 |
-
|
185 |
# ~
|
186 |
|
187 |
$blockTypes = $this->unmarkedBlockTypes;
|
@@ -199,7 +203,7 @@ class Parsedown
|
|
199 |
|
200 |
foreach ($blockTypes as $blockType)
|
201 |
{
|
202 |
-
$Block = $this->{'
|
203 |
|
204 |
if (isset($Block))
|
205 |
{
|
@@ -207,14 +211,14 @@ class Parsedown
|
|
207 |
|
208 |
if ( ! isset($Block['identified']))
|
209 |
{
|
210 |
-
$
|
211 |
|
212 |
$Block['identified'] = true;
|
213 |
}
|
214 |
|
215 |
-
if (method_exists($this, '
|
216 |
{
|
217 |
-
$Block['
|
218 |
}
|
219 |
|
220 |
$CurrentBlock = $Block;
|
@@ -231,9 +235,9 @@ class Parsedown
|
|
231 |
}
|
232 |
else
|
233 |
{
|
234 |
-
$
|
235 |
|
236 |
-
$CurrentBlock = $this->
|
237 |
|
238 |
$CurrentBlock['identified'] = true;
|
239 |
}
|
@@ -241,59 +245,49 @@ class Parsedown
|
|
241 |
|
242 |
# ~
|
243 |
|
244 |
-
if (isset($CurrentBlock['
|
245 |
{
|
246 |
-
$CurrentBlock = $this->{'
|
247 |
}
|
248 |
|
249 |
# ~
|
250 |
|
251 |
-
$
|
252 |
-
|
253 |
-
unset($Elements[0]);
|
254 |
|
255 |
-
|
256 |
-
|
257 |
-
$markup = $this->elements($Elements);
|
258 |
|
259 |
# ~
|
260 |
|
261 |
-
|
262 |
-
}
|
263 |
-
|
264 |
-
#
|
265 |
-
# Atx
|
266 |
|
267 |
-
|
268 |
-
{
|
269 |
-
if (isset($Line['text'][1]))
|
270 |
{
|
271 |
-
$
|
272 |
-
|
273 |
-
while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')
|
274 |
{
|
275 |
-
|
276 |
}
|
277 |
|
278 |
-
$
|
|
|
|
|
279 |
|
280 |
-
|
281 |
-
'element' => array(
|
282 |
-
'name' => 'h' . min(6, $level),
|
283 |
-
'text' => $text,
|
284 |
-
'handler' => 'line',
|
285 |
-
),
|
286 |
-
);
|
287 |
|
288 |
-
|
289 |
-
|
|
|
290 |
}
|
291 |
|
292 |
#
|
293 |
# Code
|
294 |
|
295 |
-
protected function
|
296 |
{
|
|
|
|
|
|
|
|
|
|
|
297 |
if ($Line['indent'] >= 4)
|
298 |
{
|
299 |
$text = substr($Line['body'], 4);
|
@@ -313,7 +307,7 @@ class Parsedown
|
|
313 |
}
|
314 |
}
|
315 |
|
316 |
-
protected function
|
317 |
{
|
318 |
if ($Line['indent'] >= 4)
|
319 |
{
|
@@ -334,7 +328,7 @@ class Parsedown
|
|
334 |
}
|
335 |
}
|
336 |
|
337 |
-
protected function
|
338 |
{
|
339 |
$text = $Block['element']['text']['text'];
|
340 |
|
@@ -348,12 +342,17 @@ class Parsedown
|
|
348 |
#
|
349 |
# Comment
|
350 |
|
351 |
-
protected function
|
352 |
{
|
|
|
|
|
|
|
|
|
|
|
353 |
if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')
|
354 |
{
|
355 |
$Block = array(
|
356 |
-
'
|
357 |
);
|
358 |
|
359 |
if (preg_match('/-->$/', $Line['text']))
|
@@ -365,14 +364,14 @@ class Parsedown
|
|
365 |
}
|
366 |
}
|
367 |
|
368 |
-
protected function
|
369 |
{
|
370 |
if (isset($Block['closed']))
|
371 |
{
|
372 |
return;
|
373 |
}
|
374 |
|
375 |
-
$Block['
|
376 |
|
377 |
if (preg_match('/-->$/', $Line['text']))
|
378 |
{
|
@@ -385,18 +384,18 @@ class Parsedown
|
|
385 |
#
|
386 |
# Fenced Code
|
387 |
|
388 |
-
protected function
|
389 |
{
|
390 |
-
if (preg_match('/^
|
391 |
{
|
392 |
$Element = array(
|
393 |
'name' => 'code',
|
394 |
'text' => '',
|
395 |
);
|
396 |
|
397 |
-
if (isset($matches[
|
398 |
{
|
399 |
-
$class = 'language-'.$matches[
|
400 |
|
401 |
$Element['attributes'] = array(
|
402 |
'class' => $class,
|
@@ -416,7 +415,7 @@ class Parsedown
|
|
416 |
}
|
417 |
}
|
418 |
|
419 |
-
protected function
|
420 |
{
|
421 |
if (isset($Block['complete']))
|
422 |
{
|
@@ -444,7 +443,7 @@ class Parsedown
|
|
444 |
return $Block;
|
445 |
}
|
446 |
|
447 |
-
protected function
|
448 |
{
|
449 |
$text = $Block['element']['text']['text'];
|
450 |
|
@@ -455,10 +454,43 @@ class Parsedown
|
|
455 |
return $Block;
|
456 |
}
|
457 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
458 |
#
|
459 |
# List
|
460 |
|
461 |
-
protected function
|
462 |
{
|
463 |
list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');
|
464 |
|
@@ -487,9 +519,9 @@ class Parsedown
|
|
487 |
}
|
488 |
}
|
489 |
|
490 |
-
protected function
|
491 |
{
|
492 |
-
if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'[ ]+(.*)/', $Line['text'], $matches))
|
493 |
{
|
494 |
if (isset($Block['interrupted']))
|
495 |
{
|
@@ -500,11 +532,13 @@ class Parsedown
|
|
500 |
|
501 |
unset($Block['li']);
|
502 |
|
|
|
|
|
503 |
$Block['li'] = array(
|
504 |
'name' => 'li',
|
505 |
'handler' => 'li',
|
506 |
'text' => array(
|
507 |
-
$
|
508 |
),
|
509 |
);
|
510 |
|
@@ -513,6 +547,11 @@ class Parsedown
|
|
513 |
return $Block;
|
514 |
}
|
515 |
|
|
|
|
|
|
|
|
|
|
|
516 |
if ( ! isset($Block['interrupted']))
|
517 |
{
|
518 |
$text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
|
@@ -539,7 +578,7 @@ class Parsedown
|
|
539 |
#
|
540 |
# Quote
|
541 |
|
542 |
-
protected function
|
543 |
{
|
544 |
if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
|
545 |
{
|
@@ -555,7 +594,7 @@ class Parsedown
|
|
555 |
}
|
556 |
}
|
557 |
|
558 |
-
protected function
|
559 |
{
|
560 |
if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
|
561 |
{
|
@@ -582,9 +621,9 @@ class Parsedown
|
|
582 |
#
|
583 |
# Rule
|
584 |
|
585 |
-
protected function
|
586 |
{
|
587 |
-
if (preg_match('/^(['.$Line['text'][0].'])([ ]
|
588 |
{
|
589 |
$Block = array(
|
590 |
'element' => array(
|
@@ -599,7 +638,7 @@ class Parsedown
|
|
599 |
#
|
600 |
# Setext
|
601 |
|
602 |
-
protected function
|
603 |
{
|
604 |
if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
|
605 |
{
|
@@ -617,46 +656,71 @@ class Parsedown
|
|
617 |
#
|
618 |
# Markup
|
619 |
|
620 |
-
protected function
|
621 |
{
|
622 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
623 |
{
|
624 |
-
|
|
|
|
|
625 |
{
|
626 |
return;
|
627 |
}
|
628 |
|
629 |
$Block = array(
|
630 |
-
'
|
|
|
|
|
631 |
);
|
632 |
|
633 |
-
|
|
|
|
|
|
|
|
|
634 |
{
|
635 |
-
$
|
|
|
|
|
|
|
|
|
|
|
636 |
}
|
637 |
else
|
638 |
{
|
639 |
-
$
|
640 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
641 |
}
|
642 |
|
643 |
return $Block;
|
644 |
}
|
645 |
}
|
646 |
|
647 |
-
protected function
|
648 |
{
|
649 |
if (isset($Block['closed']))
|
650 |
{
|
651 |
return;
|
652 |
}
|
653 |
|
654 |
-
if (preg_match('
|
655 |
{
|
656 |
$Block['depth'] ++;
|
657 |
}
|
658 |
|
659 |
-
if (
|
660 |
{
|
661 |
if ($Block['depth'] > 0)
|
662 |
{
|
@@ -668,15 +732,51 @@ class Parsedown
|
|
668 |
}
|
669 |
}
|
670 |
|
671 |
-
$Block['
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
672 |
|
673 |
return $Block;
|
674 |
}
|
675 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
676 |
#
|
677 |
# Table
|
678 |
|
679 |
-
protected function
|
680 |
{
|
681 |
if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
|
682 |
{
|
@@ -710,7 +810,7 @@ class Parsedown
|
|
710 |
$alignment = 'left';
|
711 |
}
|
712 |
|
713 |
-
if (substr($dividerCell, -1) === ':')
|
714 |
{
|
715 |
$alignment = $alignment === 'left' ? 'center' : 'right';
|
716 |
}
|
@@ -744,7 +844,7 @@ class Parsedown
|
|
744 |
$alignment = $alignments[$index];
|
745 |
|
746 |
$HeaderElement['attributes'] = array(
|
747 |
-
'
|
748 |
);
|
749 |
}
|
750 |
|
@@ -783,8 +883,13 @@ class Parsedown
|
|
783 |
}
|
784 |
}
|
785 |
|
786 |
-
protected function
|
787 |
{
|
|
|
|
|
|
|
|
|
|
|
788 |
if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))
|
789 |
{
|
790 |
$Elements = array();
|
@@ -794,9 +899,9 @@ class Parsedown
|
|
794 |
$row = trim($row);
|
795 |
$row = trim($row, '|');
|
796 |
|
797 |
-
|
798 |
|
799 |
-
foreach ($
|
800 |
{
|
801 |
$cell = trim($cell);
|
802 |
|
@@ -809,7 +914,7 @@ class Parsedown
|
|
809 |
if (isset($Block['alignments'][$index]))
|
810 |
{
|
811 |
$Element['attributes'] = array(
|
812 |
-
'
|
813 |
);
|
814 |
}
|
815 |
|
@@ -828,35 +933,11 @@ class Parsedown
|
|
828 |
}
|
829 |
}
|
830 |
|
831 |
-
#
|
832 |
-
# Definitions
|
833 |
-
#
|
834 |
-
|
835 |
-
protected function identifyReference($Line)
|
836 |
-
{
|
837 |
-
if (preg_match('/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches))
|
838 |
-
{
|
839 |
-
$Definition = array(
|
840 |
-
'id' => strtolower($matches[1]),
|
841 |
-
'data' => array(
|
842 |
-
'url' => $matches[2],
|
843 |
-
),
|
844 |
-
);
|
845 |
-
|
846 |
-
if (isset($matches[3]))
|
847 |
-
{
|
848 |
-
$Definition['data']['title'] = $matches[3];
|
849 |
-
}
|
850 |
-
|
851 |
-
return $Definition;
|
852 |
-
}
|
853 |
-
}
|
854 |
-
|
855 |
#
|
856 |
# ~
|
857 |
#
|
858 |
|
859 |
-
protected function
|
860 |
{
|
861 |
$Block = array(
|
862 |
'element' => array(
|
@@ -870,92 +951,27 @@ class Parsedown
|
|
870 |
}
|
871 |
|
872 |
#
|
873 |
-
#
|
874 |
-
#
|
875 |
-
|
876 |
-
protected function element(array $Element)
|
877 |
-
{
|
878 |
-
$markup = '<'.$Element['name'];
|
879 |
-
|
880 |
-
if (isset($Element['attributes']))
|
881 |
-
{
|
882 |
-
foreach ($Element['attributes'] as $name => $value)
|
883 |
-
{
|
884 |
-
$markup .= ' '.$name.'="'.$value.'"';
|
885 |
-
}
|
886 |
-
}
|
887 |
-
|
888 |
-
if (isset($Element['text']))
|
889 |
-
{
|
890 |
-
$markup .= '>';
|
891 |
-
|
892 |
-
if (isset($Element['handler']))
|
893 |
-
{
|
894 |
-
$markup .= $this->$Element['handler']($Element['text']);
|
895 |
-
}
|
896 |
-
else
|
897 |
-
{
|
898 |
-
$markup .= $Element['text'];
|
899 |
-
}
|
900 |
-
|
901 |
-
$markup .= '</'.$Element['name'].'>';
|
902 |
-
}
|
903 |
-
else
|
904 |
-
{
|
905 |
-
$markup .= ' />';
|
906 |
-
}
|
907 |
-
|
908 |
-
return $markup;
|
909 |
-
}
|
910 |
-
|
911 |
-
protected function elements(array $Elements)
|
912 |
-
{
|
913 |
-
$markup = '';
|
914 |
-
|
915 |
-
foreach ($Elements as $Element)
|
916 |
-
{
|
917 |
-
if ($Element === null)
|
918 |
-
{
|
919 |
-
continue;
|
920 |
-
}
|
921 |
-
|
922 |
-
$markup .= "\n";
|
923 |
-
|
924 |
-
if (is_string($Element)) # because of Markup
|
925 |
-
{
|
926 |
-
$markup .= $Element;
|
927 |
-
|
928 |
-
continue;
|
929 |
-
}
|
930 |
-
|
931 |
-
$markup .= $this->element($Element);
|
932 |
-
}
|
933 |
-
|
934 |
-
$markup .= "\n";
|
935 |
-
|
936 |
-
return $markup;
|
937 |
-
}
|
938 |
-
|
939 |
-
#
|
940 |
-
# Spans
|
941 |
#
|
942 |
|
943 |
-
protected $
|
944 |
-
'
|
945 |
-
'
|
|
|
946 |
'*' => array('Emphasis'),
|
947 |
-
'
|
948 |
-
'<' => array('UrlTag', 'EmailTag', '
|
|
|
949 |
'[' => array('Link'),
|
950 |
'_' => array('Emphasis'),
|
951 |
-
'`' => array('
|
952 |
'~' => array('Strikethrough'),
|
953 |
'\\' => array('EscapeSequence'),
|
954 |
);
|
955 |
|
956 |
# ~
|
957 |
|
958 |
-
protected $
|
959 |
|
960 |
#
|
961 |
# ~
|
@@ -965,64 +981,64 @@ class Parsedown
|
|
965 |
{
|
966 |
$markup = '';
|
967 |
|
968 |
-
$
|
969 |
|
970 |
-
$
|
971 |
-
|
972 |
-
while ($excerpt = strpbrk($remainder, $this->spanMarkerList))
|
973 |
{
|
974 |
$marker = $excerpt[0];
|
975 |
|
976 |
-
$markerPosition
|
977 |
|
978 |
$Excerpt = array('text' => $excerpt, 'context' => $text);
|
979 |
|
980 |
-
foreach ($this->
|
981 |
{
|
982 |
-
$
|
983 |
-
|
984 |
-
$Span = $this->$handler($Excerpt);
|
985 |
|
986 |
-
if ( ! isset($
|
987 |
{
|
988 |
continue;
|
989 |
}
|
990 |
|
991 |
-
#
|
992 |
|
993 |
-
if (isset($
|
994 |
{
|
995 |
continue;
|
996 |
}
|
997 |
|
998 |
-
#
|
999 |
|
1000 |
-
if ( ! isset($
|
1001 |
{
|
1002 |
-
$
|
1003 |
}
|
1004 |
|
1005 |
-
|
1006 |
-
|
1007 |
-
$markup .= $this->readPlainText($plainText);
|
1008 |
-
|
1009 |
-
$markup .= isset($Span['markup']) ? $Span['markup'] : $this->element($Span['element']);
|
1010 |
|
1011 |
-
|
|
|
1012 |
|
1013 |
-
|
|
|
1014 |
|
1015 |
-
|
|
|
1016 |
|
1017 |
continue 2;
|
1018 |
}
|
1019 |
|
1020 |
-
|
1021 |
|
1022 |
-
$markerPosition
|
|
|
|
|
|
|
|
|
1023 |
}
|
1024 |
|
1025 |
-
$markup .= $this->
|
1026 |
|
1027 |
return $markup;
|
1028 |
}
|
@@ -1031,63 +1047,83 @@ class Parsedown
|
|
1031 |
# ~
|
1032 |
#
|
1033 |
|
1034 |
-
protected function
|
1035 |
{
|
1036 |
-
|
1037 |
-
{
|
1038 |
-
return;
|
1039 |
-
}
|
1040 |
|
1041 |
-
if (preg_match('
|
1042 |
{
|
1043 |
-
$
|
1044 |
-
|
|
|
|
|
1045 |
return array(
|
1046 |
-
'extent' => strlen($matches[0]
|
1047 |
-
'position' => $matches[0][1],
|
1048 |
'element' => array(
|
1049 |
-
'name' => '
|
1050 |
-
'text' => $
|
1051 |
-
'attributes' => array(
|
1052 |
-
'href' => $url,
|
1053 |
-
),
|
1054 |
),
|
1055 |
);
|
1056 |
}
|
1057 |
}
|
1058 |
|
1059 |
-
protected function
|
1060 |
{
|
1061 |
-
if (
|
1062 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1063 |
return array(
|
1064 |
-
'
|
1065 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
1066 |
);
|
1067 |
}
|
1068 |
}
|
1069 |
|
1070 |
-
protected function
|
1071 |
{
|
1072 |
if ( ! isset($Excerpt['text'][1]))
|
1073 |
{
|
1074 |
return;
|
1075 |
}
|
1076 |
|
1077 |
-
|
|
|
|
|
1078 |
{
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
|
|
1087 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1088 |
}
|
1089 |
|
1090 |
-
protected function
|
1091 |
{
|
1092 |
if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))
|
1093 |
{
|
@@ -1098,53 +1134,137 @@ class Parsedown
|
|
1098 |
}
|
1099 |
}
|
1100 |
|
1101 |
-
protected function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1102 |
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1103 |
return array(
|
1104 |
-
'
|
1105 |
-
'
|
1106 |
);
|
1107 |
}
|
1108 |
|
1109 |
-
protected function
|
1110 |
{
|
1111 |
-
if (strpos($Excerpt['text'], '>')
|
1112 |
{
|
1113 |
-
|
|
|
1114 |
|
|
|
|
|
1115 |
return array(
|
|
|
1116 |
'extent' => strlen($matches[0]),
|
1117 |
-
'element' => array(
|
1118 |
-
'name' => 'a',
|
1119 |
-
'text' => $url,
|
1120 |
-
'attributes' => array(
|
1121 |
-
'href' => $url,
|
1122 |
-
),
|
1123 |
-
),
|
1124 |
);
|
1125 |
}
|
1126 |
-
}
|
1127 |
|
1128 |
-
|
1129 |
-
{
|
1130 |
-
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\S+?@\S+?)>/', $Excerpt['text'], $matches))
|
1131 |
{
|
1132 |
return array(
|
|
|
1133 |
'extent' => strlen($matches[0]),
|
1134 |
-
'element' => array(
|
1135 |
-
'name' => 'a',
|
1136 |
-
'text' => $matches[1],
|
1137 |
-
'attributes' => array(
|
1138 |
-
'href' => 'mailto:'.$matches[1],
|
1139 |
-
),
|
1140 |
-
),
|
1141 |
);
|
1142 |
}
|
1143 |
-
}
|
1144 |
|
1145 |
-
|
1146 |
-
{
|
1147 |
-
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<\/?\w.*?>/', $Excerpt['text'], $matches))
|
1148 |
{
|
1149 |
return array(
|
1150 |
'markup' => $matches[0],
|
@@ -1153,164 +1273,167 @@ class Parsedown
|
|
1153 |
}
|
1154 |
}
|
1155 |
|
1156 |
-
protected function
|
1157 |
{
|
1158 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1159 |
|
1160 |
-
if (
|
1161 |
{
|
1162 |
-
|
1163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1164 |
|
|
|
|
|
1165 |
return array(
|
1166 |
'extent' => strlen($matches[0]),
|
1167 |
'element' => array(
|
1168 |
-
'name' => '
|
1169 |
-
'text' => $
|
|
|
1170 |
),
|
1171 |
);
|
1172 |
}
|
1173 |
}
|
1174 |
|
1175 |
-
protected function
|
1176 |
{
|
1177 |
-
$
|
1178 |
-
|
1179 |
-
if (strpos($Excerpt['text'], ']') and preg_match('/\[((?:[^][]|(?R))*)\]/', $Excerpt['text'], $matches))
|
1180 |
-
{
|
1181 |
-
$Link = array('text' => $matches[1], 'label' => strtolower($matches[1]));
|
1182 |
-
|
1183 |
-
$extent += strlen($matches[0]);
|
1184 |
-
|
1185 |
-
$substring = substr($Excerpt['text'], $extent);
|
1186 |
-
|
1187 |
-
if (preg_match('/^\s*\[([^][]+)\]/', $substring, $matches))
|
1188 |
-
{
|
1189 |
-
$Link['label'] = strtolower($matches[1]);
|
1190 |
-
|
1191 |
-
if (isset($this->Definitions['Reference'][$Link['label']]))
|
1192 |
-
{
|
1193 |
-
$Link += $this->Definitions['Reference'][$Link['label']];
|
1194 |
-
|
1195 |
-
$extent += strlen($matches[0]);
|
1196 |
-
}
|
1197 |
-
else
|
1198 |
-
{
|
1199 |
-
return;
|
1200 |
-
}
|
1201 |
-
}
|
1202 |
-
elseif (isset($this->Definitions['Reference'][$Link['label']]))
|
1203 |
-
{
|
1204 |
-
$Link += $this->Definitions['Reference'][$Link['label']];
|
1205 |
-
|
1206 |
-
if (preg_match('/^[ ]*\[\]/', $substring, $matches))
|
1207 |
-
{
|
1208 |
-
$extent += strlen($matches[0]);
|
1209 |
-
}
|
1210 |
-
}
|
1211 |
-
elseif (preg_match('/^\([ ]*(.*?)(?:[ ]+[\'"](.+?)[\'"])?[ ]*\)/', $substring, $matches))
|
1212 |
-
{
|
1213 |
-
$Link['url'] = $matches[1];
|
1214 |
-
|
1215 |
-
if (isset($matches[2]))
|
1216 |
-
{
|
1217 |
-
$Link['title'] = $matches[2];
|
1218 |
-
}
|
1219 |
-
|
1220 |
-
$extent += strlen($matches[0]);
|
1221 |
-
}
|
1222 |
-
else
|
1223 |
-
{
|
1224 |
-
return;
|
1225 |
-
}
|
1226 |
-
}
|
1227 |
-
else
|
1228 |
{
|
1229 |
return;
|
1230 |
}
|
1231 |
|
1232 |
-
|
1233 |
-
|
1234 |
-
if ($Excerpt['text'][0] === '!')
|
1235 |
{
|
1236 |
-
$
|
1237 |
-
'
|
1238 |
-
'
|
1239 |
-
|
1240 |
-
'
|
|
|
|
|
|
|
|
|
1241 |
),
|
1242 |
);
|
|
|
|
|
1243 |
}
|
1244 |
-
|
|
|
|
|
|
|
|
|
1245 |
{
|
1246 |
-
$
|
1247 |
-
|
1248 |
-
|
1249 |
-
'
|
1250 |
-
'
|
1251 |
-
'
|
|
|
|
|
|
|
|
|
1252 |
),
|
1253 |
);
|
1254 |
}
|
|
|
1255 |
|
1256 |
-
|
|
|
|
|
|
|
|
|
1257 |
{
|
1258 |
-
$
|
|
|
|
|
|
|
|
|
|
|
1259 |
}
|
1260 |
|
1261 |
-
return
|
1262 |
-
'extent' => $extent,
|
1263 |
-
'element' => $Element,
|
1264 |
-
);
|
1265 |
}
|
1266 |
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
{
|
1271 |
-
return;
|
1272 |
-
}
|
1273 |
|
1274 |
-
|
|
|
|
|
1275 |
|
1276 |
-
if (
|
1277 |
{
|
1278 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1279 |
}
|
1280 |
-
|
|
|
1281 |
{
|
1282 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1283 |
}
|
1284 |
else
|
1285 |
{
|
1286 |
-
|
1287 |
}
|
1288 |
|
1289 |
-
return
|
1290 |
-
'extent' => strlen($matches[0]),
|
1291 |
-
'element' => array(
|
1292 |
-
'name' => $emphasis,
|
1293 |
-
'handler' => 'line',
|
1294 |
-
'text' => $matches[1],
|
1295 |
-
),
|
1296 |
-
);
|
1297 |
}
|
1298 |
|
1299 |
-
|
1300 |
-
# ~
|
1301 |
-
|
1302 |
-
protected function readPlainText($text)
|
1303 |
{
|
1304 |
-
$
|
1305 |
|
1306 |
-
|
|
|
|
|
|
|
1307 |
|
1308 |
-
|
|
|
|
|
1309 |
}
|
1310 |
|
1311 |
-
#
|
1312 |
# ~
|
1313 |
-
#
|
1314 |
|
1315 |
protected function li($lines)
|
1316 |
{
|
@@ -1332,7 +1455,18 @@ class Parsedown
|
|
1332 |
}
|
1333 |
|
1334 |
#
|
1335 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1336 |
#
|
1337 |
|
1338 |
static function instance($name = 'default')
|
@@ -1342,7 +1476,7 @@ class Parsedown
|
|
1342 |
return self::$instances[$name];
|
1343 |
}
|
1344 |
|
1345 |
-
$instance = new
|
1346 |
|
1347 |
self::$instances[$name] = $instance;
|
1348 |
|
@@ -1351,41 +1485,33 @@ class Parsedown
|
|
1351 |
|
1352 |
private static $instances = array();
|
1353 |
|
1354 |
-
#
|
1355 |
-
# Deprecated Methods
|
1356 |
-
#
|
1357 |
-
|
1358 |
-
/**
|
1359 |
-
* @deprecated in favor of "text"
|
1360 |
-
*/
|
1361 |
-
function parse($text)
|
1362 |
-
{
|
1363 |
-
$markup = $this->text($text);
|
1364 |
-
|
1365 |
-
return $markup;
|
1366 |
-
}
|
1367 |
-
|
1368 |
#
|
1369 |
# Fields
|
1370 |
#
|
1371 |
|
1372 |
-
protected $
|
1373 |
|
1374 |
#
|
1375 |
-
# Read-
|
1376 |
|
1377 |
protected $specialCharacters = array(
|
1378 |
-
'\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!',
|
1379 |
);
|
1380 |
|
1381 |
protected $StrongRegex = array(
|
1382 |
-
'*' => '/^[*]{2}((
|
1383 |
-
'_' => '/^__((
|
1384 |
);
|
1385 |
|
1386 |
protected $EmRegex = array(
|
1387 |
-
'*' => '/^[*]((
|
1388 |
-
'_' => '/^_((
|
|
|
|
|
|
|
|
|
|
|
|
|
1389 |
);
|
1390 |
|
1391 |
protected $textLevelElements = array(
|
15 |
|
16 |
class Parsedown
|
17 |
{
|
18 |
+
# ~
|
|
|
19 |
|
20 |
+
const version = '1.5.4';
|
|
|
|
|
|
|
21 |
|
|
|
22 |
# ~
|
23 |
|
24 |
function text($text)
|
25 |
{
|
26 |
# make sure no definitions are set
|
27 |
+
$this->DefinitionData = array();
|
28 |
|
29 |
# standardize line breaks
|
30 |
+
$text = str_replace(array("\r\n", "\r"), "\n", $text);
|
|
|
|
|
|
|
|
|
31 |
|
32 |
# remove surrounding line breaks
|
33 |
$text = trim($text, "\n");
|
48 |
# Setters
|
49 |
#
|
50 |
|
|
|
|
|
51 |
function setBreaksEnabled($breaksEnabled)
|
52 |
{
|
53 |
$this->breaksEnabled = $breaksEnabled;
|
55 |
return $this;
|
56 |
}
|
57 |
|
58 |
+
protected $breaksEnabled;
|
59 |
+
|
60 |
+
function setMarkupEscaped($markupEscaped)
|
61 |
+
{
|
62 |
+
$this->markupEscaped = $markupEscaped;
|
63 |
+
|
64 |
+
return $this;
|
65 |
+
}
|
66 |
+
|
67 |
+
protected $markupEscaped;
|
68 |
+
|
69 |
+
function setUrlsLinked($urlsLinked)
|
70 |
+
{
|
71 |
+
$this->urlsLinked = $urlsLinked;
|
72 |
+
|
73 |
+
return $this;
|
74 |
+
}
|
75 |
+
|
76 |
+
protected $urlsLinked = true;
|
77 |
+
|
78 |
#
|
79 |
# Lines
|
80 |
#
|
81 |
|
82 |
protected $BlockTypes = array(
|
83 |
+
'#' => array('Header'),
|
84 |
'*' => array('Rule', 'List'),
|
85 |
'+' => array('List'),
|
86 |
+
'-' => array('SetextHeader', 'Table', 'Rule', 'List'),
|
87 |
'0' => array('List'),
|
88 |
'1' => array('List'),
|
89 |
'2' => array('List'),
|
96 |
'9' => array('List'),
|
97 |
':' => array('Table'),
|
98 |
'<' => array('Comment', 'Markup'),
|
99 |
+
'=' => array('SetextHeader'),
|
100 |
'>' => array('Quote'),
|
101 |
+
'[' => array('Reference'),
|
102 |
'_' => array('Rule'),
|
103 |
'`' => array('FencedCode'),
|
104 |
'|' => array('Table'),
|
107 |
|
108 |
# ~
|
109 |
|
|
|
|
|
|
|
|
|
|
|
|
|
110 |
protected $unmarkedBlockTypes = array(
|
111 |
+
'Code',
|
112 |
);
|
113 |
|
114 |
#
|
131 |
continue;
|
132 |
}
|
133 |
|
134 |
+
if (strpos($line, "\t") !== false)
|
135 |
+
{
|
136 |
+
$parts = explode("\t", $line);
|
137 |
+
|
138 |
+
$line = $parts[0];
|
139 |
+
|
140 |
+
unset($parts[0]);
|
141 |
+
|
142 |
+
foreach ($parts as $part)
|
143 |
+
{
|
144 |
+
$shortage = 4 - mb_strlen($line, 'utf-8') % 4;
|
145 |
+
|
146 |
+
$line .= str_repeat(' ', $shortage);
|
147 |
+
$line .= $part;
|
148 |
+
}
|
149 |
+
}
|
150 |
+
|
151 |
$indent = 0;
|
152 |
|
153 |
while (isset($line[$indent]) and $line[$indent] === ' ')
|
163 |
|
164 |
# ~
|
165 |
|
166 |
+
if (isset($CurrentBlock['continuable']))
|
167 |
{
|
168 |
+
$Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);
|
169 |
|
170 |
if (isset($Block))
|
171 |
{
|
175 |
}
|
176 |
else
|
177 |
{
|
178 |
+
if (method_exists($this, 'block'.$CurrentBlock['type'].'Complete'))
|
179 |
{
|
180 |
+
$CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
|
181 |
}
|
|
|
|
|
182 |
}
|
183 |
}
|
184 |
|
186 |
|
187 |
$marker = $text[0];
|
188 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
189 |
# ~
|
190 |
|
191 |
$blockTypes = $this->unmarkedBlockTypes;
|
203 |
|
204 |
foreach ($blockTypes as $blockType)
|
205 |
{
|
206 |
+
$Block = $this->{'block'.$blockType}($Line, $CurrentBlock);
|
207 |
|
208 |
if (isset($Block))
|
209 |
{
|
211 |
|
212 |
if ( ! isset($Block['identified']))
|
213 |
{
|
214 |
+
$Blocks []= $CurrentBlock;
|
215 |
|
216 |
$Block['identified'] = true;
|
217 |
}
|
218 |
|
219 |
+
if (method_exists($this, 'block'.$blockType.'Continue'))
|
220 |
{
|
221 |
+
$Block['continuable'] = true;
|
222 |
}
|
223 |
|
224 |
$CurrentBlock = $Block;
|
235 |
}
|
236 |
else
|
237 |
{
|
238 |
+
$Blocks []= $CurrentBlock;
|
239 |
|
240 |
+
$CurrentBlock = $this->paragraph($Line);
|
241 |
|
242 |
$CurrentBlock['identified'] = true;
|
243 |
}
|
245 |
|
246 |
# ~
|
247 |
|
248 |
+
if (isset($CurrentBlock['continuable']) and method_exists($this, 'block'.$CurrentBlock['type'].'Complete'))
|
249 |
{
|
250 |
+
$CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
|
251 |
}
|
252 |
|
253 |
# ~
|
254 |
|
255 |
+
$Blocks []= $CurrentBlock;
|
|
|
|
|
256 |
|
257 |
+
unset($Blocks[0]);
|
|
|
|
|
258 |
|
259 |
# ~
|
260 |
|
261 |
+
$markup = '';
|
|
|
|
|
|
|
|
|
262 |
|
263 |
+
foreach ($Blocks as $Block)
|
|
|
|
|
264 |
{
|
265 |
+
if (isset($Block['hidden']))
|
|
|
|
|
266 |
{
|
267 |
+
continue;
|
268 |
}
|
269 |
|
270 |
+
$markup .= "\n";
|
271 |
+
$markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']);
|
272 |
+
}
|
273 |
|
274 |
+
$markup .= "\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
|
276 |
+
# ~
|
277 |
+
|
278 |
+
return $markup;
|
279 |
}
|
280 |
|
281 |
#
|
282 |
# Code
|
283 |
|
284 |
+
protected function blockCode($Line, $Block = null)
|
285 |
{
|
286 |
+
if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted']))
|
287 |
+
{
|
288 |
+
return;
|
289 |
+
}
|
290 |
+
|
291 |
if ($Line['indent'] >= 4)
|
292 |
{
|
293 |
$text = substr($Line['body'], 4);
|
307 |
}
|
308 |
}
|
309 |
|
310 |
+
protected function blockCodeContinue($Line, $Block)
|
311 |
{
|
312 |
if ($Line['indent'] >= 4)
|
313 |
{
|
328 |
}
|
329 |
}
|
330 |
|
331 |
+
protected function blockCodeComplete($Block)
|
332 |
{
|
333 |
$text = $Block['element']['text']['text'];
|
334 |
|
342 |
#
|
343 |
# Comment
|
344 |
|
345 |
+
protected function blockComment($Line)
|
346 |
{
|
347 |
+
if ($this->markupEscaped)
|
348 |
+
{
|
349 |
+
return;
|
350 |
+
}
|
351 |
+
|
352 |
if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!')
|
353 |
{
|
354 |
$Block = array(
|
355 |
+
'markup' => $Line['body'],
|
356 |
);
|
357 |
|
358 |
if (preg_match('/-->$/', $Line['text']))
|
364 |
}
|
365 |
}
|
366 |
|
367 |
+
protected function blockCommentContinue($Line, array $Block)
|
368 |
{
|
369 |
if (isset($Block['closed']))
|
370 |
{
|
371 |
return;
|
372 |
}
|
373 |
|
374 |
+
$Block['markup'] .= "\n" . $Line['body'];
|
375 |
|
376 |
if (preg_match('/-->$/', $Line['text']))
|
377 |
{
|
384 |
#
|
385 |
# Fenced Code
|
386 |
|
387 |
+
protected function blockFencedCode($Line)
|
388 |
{
|
389 |
+
if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches))
|
390 |
{
|
391 |
$Element = array(
|
392 |
'name' => 'code',
|
393 |
'text' => '',
|
394 |
);
|
395 |
|
396 |
+
if (isset($matches[1]))
|
397 |
{
|
398 |
+
$class = 'language-'.$matches[1];
|
399 |
|
400 |
$Element['attributes'] = array(
|
401 |
'class' => $class,
|
415 |
}
|
416 |
}
|
417 |
|
418 |
+
protected function blockFencedCodeContinue($Line, $Block)
|
419 |
{
|
420 |
if (isset($Block['complete']))
|
421 |
{
|
443 |
return $Block;
|
444 |
}
|
445 |
|
446 |
+
protected function blockFencedCodeComplete($Block)
|
447 |
{
|
448 |
$text = $Block['element']['text']['text'];
|
449 |
|
454 |
return $Block;
|
455 |
}
|
456 |
|
457 |
+
#
|
458 |
+
# Header
|
459 |
+
|
460 |
+
protected function blockHeader($Line)
|
461 |
+
{
|
462 |
+
if (isset($Line['text'][1]))
|
463 |
+
{
|
464 |
+
$level = 1;
|
465 |
+
|
466 |
+
while (isset($Line['text'][$level]) and $Line['text'][$level] === '#')
|
467 |
+
{
|
468 |
+
$level ++;
|
469 |
+
}
|
470 |
+
|
471 |
+
if ($level > 6)
|
472 |
+
{
|
473 |
+
return;
|
474 |
+
}
|
475 |
+
|
476 |
+
$text = trim($Line['text'], '# ');
|
477 |
+
|
478 |
+
$Block = array(
|
479 |
+
'element' => array(
|
480 |
+
'name' => 'h' . min(6, $level),
|
481 |
+
'text' => $text,
|
482 |
+
'handler' => 'line',
|
483 |
+
),
|
484 |
+
);
|
485 |
+
|
486 |
+
return $Block;
|
487 |
+
}
|
488 |
+
}
|
489 |
+
|
490 |
#
|
491 |
# List
|
492 |
|
493 |
+
protected function blockList($Line)
|
494 |
{
|
495 |
list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]');
|
496 |
|
519 |
}
|
520 |
}
|
521 |
|
522 |
+
protected function blockListContinue($Line, array $Block)
|
523 |
{
|
524 |
+
if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches))
|
525 |
{
|
526 |
if (isset($Block['interrupted']))
|
527 |
{
|
532 |
|
533 |
unset($Block['li']);
|
534 |
|
535 |
+
$text = isset($matches[1]) ? $matches[1] : '';
|
536 |
+
|
537 |
$Block['li'] = array(
|
538 |
'name' => 'li',
|
539 |
'handler' => 'li',
|
540 |
'text' => array(
|
541 |
+
$text,
|
542 |
),
|
543 |
);
|
544 |
|
547 |
return $Block;
|
548 |
}
|
549 |
|
550 |
+
if ($Line['text'][0] === '[' and $this->blockReference($Line))
|
551 |
+
{
|
552 |
+
return $Block;
|
553 |
+
}
|
554 |
+
|
555 |
if ( ! isset($Block['interrupted']))
|
556 |
{
|
557 |
$text = preg_replace('/^[ ]{0,4}/', '', $Line['body']);
|
578 |
#
|
579 |
# Quote
|
580 |
|
581 |
+
protected function blockQuote($Line)
|
582 |
{
|
583 |
if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
|
584 |
{
|
594 |
}
|
595 |
}
|
596 |
|
597 |
+
protected function blockQuoteContinue($Line, array $Block)
|
598 |
{
|
599 |
if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches))
|
600 |
{
|
621 |
#
|
622 |
# Rule
|
623 |
|
624 |
+
protected function blockRule($Line)
|
625 |
{
|
626 |
+
if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text']))
|
627 |
{
|
628 |
$Block = array(
|
629 |
'element' => array(
|
638 |
#
|
639 |
# Setext
|
640 |
|
641 |
+
protected function blockSetextHeader($Line, array $Block = null)
|
642 |
{
|
643 |
if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
|
644 |
{
|
656 |
#
|
657 |
# Markup
|
658 |
|
659 |
+
protected function blockMarkup($Line)
|
660 |
{
|
661 |
+
if ($this->markupEscaped)
|
662 |
+
{
|
663 |
+
return;
|
664 |
+
}
|
665 |
+
|
666 |
+
if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
|
667 |
{
|
668 |
+
$element = strtolower($matches[1]);
|
669 |
+
|
670 |
+
if (in_array($element, $this->textLevelElements))
|
671 |
{
|
672 |
return;
|
673 |
}
|
674 |
|
675 |
$Block = array(
|
676 |
+
'name' => $matches[1],
|
677 |
+
'depth' => 0,
|
678 |
+
'markup' => $Line['text'],
|
679 |
);
|
680 |
|
681 |
+
$length = strlen($matches[0]);
|
682 |
+
|
683 |
+
$remainder = substr($Line['text'], $length);
|
684 |
+
|
685 |
+
if (trim($remainder) === '')
|
686 |
{
|
687 |
+
if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
|
688 |
+
{
|
689 |
+
$Block['closed'] = true;
|
690 |
+
|
691 |
+
$Block['void'] = true;
|
692 |
+
}
|
693 |
}
|
694 |
else
|
695 |
{
|
696 |
+
if (isset($matches[2]) or in_array($matches[1], $this->voidElements))
|
697 |
+
{
|
698 |
+
return;
|
699 |
+
}
|
700 |
+
|
701 |
+
if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder))
|
702 |
+
{
|
703 |
+
$Block['closed'] = true;
|
704 |
+
}
|
705 |
}
|
706 |
|
707 |
return $Block;
|
708 |
}
|
709 |
}
|
710 |
|
711 |
+
protected function blockMarkupContinue($Line, array $Block)
|
712 |
{
|
713 |
if (isset($Block['closed']))
|
714 |
{
|
715 |
return;
|
716 |
}
|
717 |
|
718 |
+
if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open
|
719 |
{
|
720 |
$Block['depth'] ++;
|
721 |
}
|
722 |
|
723 |
+
if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close
|
724 |
{
|
725 |
if ($Block['depth'] > 0)
|
726 |
{
|
732 |
}
|
733 |
}
|
734 |
|
735 |
+
if (isset($Block['interrupted']))
|
736 |
+
{
|
737 |
+
$Block['markup'] .= "\n";
|
738 |
+
|
739 |
+
unset($Block['interrupted']);
|
740 |
+
}
|
741 |
+
|
742 |
+
$Block['markup'] .= "\n".$Line['body'];
|
743 |
|
744 |
return $Block;
|
745 |
}
|
746 |
|
747 |
+
#
|
748 |
+
# Reference
|
749 |
+
|
750 |
+
protected function blockReference($Line)
|
751 |
+
{
|
752 |
+
if (preg_match('/^\[(.+?)\]:[ ]*<?(\S+?)>?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches))
|
753 |
+
{
|
754 |
+
$id = strtolower($matches[1]);
|
755 |
+
|
756 |
+
$Data = array(
|
757 |
+
'url' => $matches[2],
|
758 |
+
'title' => null,
|
759 |
+
);
|
760 |
+
|
761 |
+
if (isset($matches[3]))
|
762 |
+
{
|
763 |
+
$Data['title'] = $matches[3];
|
764 |
+
}
|
765 |
+
|
766 |
+
$this->DefinitionData['Reference'][$id] = $Data;
|
767 |
+
|
768 |
+
$Block = array(
|
769 |
+
'hidden' => true,
|
770 |
+
);
|
771 |
+
|
772 |
+
return $Block;
|
773 |
+
}
|
774 |
+
}
|
775 |
+
|
776 |
#
|
777 |
# Table
|
778 |
|
779 |
+
protected function blockTable($Line, array $Block = null)
|
780 |
{
|
781 |
if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted']))
|
782 |
{
|
810 |
$alignment = 'left';
|
811 |
}
|
812 |
|
813 |
+
if (substr($dividerCell, - 1) === ':')
|
814 |
{
|
815 |
$alignment = $alignment === 'left' ? 'center' : 'right';
|
816 |
}
|
844 |
$alignment = $alignments[$index];
|
845 |
|
846 |
$HeaderElement['attributes'] = array(
|
847 |
+
'style' => 'text-align: '.$alignment.';',
|
848 |
);
|
849 |
}
|
850 |
|
883 |
}
|
884 |
}
|
885 |
|
886 |
+
protected function blockTableContinue($Line, array $Block)
|
887 |
{
|
888 |
+
if (isset($Block['interrupted']))
|
889 |
+
{
|
890 |
+
return;
|
891 |
+
}
|
892 |
+
|
893 |
if ($Line['text'][0] === '|' or strpos($Line['text'], '|'))
|
894 |
{
|
895 |
$Elements = array();
|
899 |
$row = trim($row);
|
900 |
$row = trim($row, '|');
|
901 |
|
902 |
+
preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches);
|
903 |
|
904 |
+
foreach ($matches[0] as $index => $cell)
|
905 |
{
|
906 |
$cell = trim($cell);
|
907 |
|
914 |
if (isset($Block['alignments'][$index]))
|
915 |
{
|
916 |
$Element['attributes'] = array(
|
917 |
+
'style' => 'text-align: '.$Block['alignments'][$index].';',
|
918 |
);
|
919 |
}
|
920 |
|
933 |
}
|
934 |
}
|
935 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
936 |
#
|
937 |
# ~
|
938 |
#
|
939 |
|
940 |
+
protected function paragraph($Line)
|
941 |
{
|
942 |
$Block = array(
|
943 |
'element' => array(
|
951 |
}
|
952 |
|
953 |
#
|
954 |
+
# Inline Elements
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
955 |
#
|
956 |
|
957 |
+
protected $InlineTypes = array(
|
958 |
+
'"' => array('SpecialCharacter'),
|
959 |
+
'!' => array('Image'),
|
960 |
+
'&' => array('SpecialCharacter'),
|
961 |
'*' => array('Emphasis'),
|
962 |
+
':' => array('Url'),
|
963 |
+
'<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'),
|
964 |
+
'>' => array('SpecialCharacter'),
|
965 |
'[' => array('Link'),
|
966 |
'_' => array('Emphasis'),
|
967 |
+
'`' => array('Code'),
|
968 |
'~' => array('Strikethrough'),
|
969 |
'\\' => array('EscapeSequence'),
|
970 |
);
|
971 |
|
972 |
# ~
|
973 |
|
974 |
+
protected $inlineMarkerList = '!"*_&[:<>`~\\';
|
975 |
|
976 |
#
|
977 |
# ~
|
981 |
{
|
982 |
$markup = '';
|
983 |
|
984 |
+
# $excerpt is based on the first occurrence of a marker
|
985 |
|
986 |
+
while ($excerpt = strpbrk($text, $this->inlineMarkerList))
|
|
|
|
|
987 |
{
|
988 |
$marker = $excerpt[0];
|
989 |
|
990 |
+
$markerPosition = strpos($text, $marker);
|
991 |
|
992 |
$Excerpt = array('text' => $excerpt, 'context' => $text);
|
993 |
|
994 |
+
foreach ($this->InlineTypes[$marker] as $inlineType)
|
995 |
{
|
996 |
+
$Inline = $this->{'inline'.$inlineType}($Excerpt);
|
|
|
|
|
997 |
|
998 |
+
if ( ! isset($Inline))
|
999 |
{
|
1000 |
continue;
|
1001 |
}
|
1002 |
|
1003 |
+
# makes sure that the inline belongs to "our" marker
|
1004 |
|
1005 |
+
if (isset($Inline['position']) and $Inline['position'] > $markerPosition)
|
1006 |
{
|
1007 |
continue;
|
1008 |
}
|
1009 |
|
1010 |
+
# sets a default inline position
|
1011 |
|
1012 |
+
if ( ! isset($Inline['position']))
|
1013 |
{
|
1014 |
+
$Inline['position'] = $markerPosition;
|
1015 |
}
|
1016 |
|
1017 |
+
# the text that comes before the inline
|
1018 |
+
$unmarkedText = substr($text, 0, $Inline['position']);
|
|
|
|
|
|
|
1019 |
|
1020 |
+
# compile the unmarked text
|
1021 |
+
$markup .= $this->unmarkedText($unmarkedText);
|
1022 |
|
1023 |
+
# compile the inline
|
1024 |
+
$markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
|
1025 |
|
1026 |
+
# remove the examined text
|
1027 |
+
$text = substr($text, $Inline['position'] + $Inline['extent']);
|
1028 |
|
1029 |
continue 2;
|
1030 |
}
|
1031 |
|
1032 |
+
# the marker does not belong to an inline
|
1033 |
|
1034 |
+
$unmarkedText = substr($text, 0, $markerPosition + 1);
|
1035 |
+
|
1036 |
+
$markup .= $this->unmarkedText($unmarkedText);
|
1037 |
+
|
1038 |
+
$text = substr($text, $markerPosition + 1);
|
1039 |
}
|
1040 |
|
1041 |
+
$markup .= $this->unmarkedText($text);
|
1042 |
|
1043 |
return $markup;
|
1044 |
}
|
1047 |
# ~
|
1048 |
#
|
1049 |
|
1050 |
+
protected function inlineCode($Excerpt)
|
1051 |
{
|
1052 |
+
$marker = $Excerpt['text'][0];
|
|
|
|
|
|
|
1053 |
|
1054 |
+
if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(?<!'.$marker.')\1(?!'.$marker.')/s', $Excerpt['text'], $matches))
|
1055 |
{
|
1056 |
+
$text = $matches[2];
|
1057 |
+
$text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8');
|
1058 |
+
$text = preg_replace("/[ ]*\n/", ' ', $text);
|
1059 |
+
|
1060 |
return array(
|
1061 |
+
'extent' => strlen($matches[0]),
|
|
|
1062 |
'element' => array(
|
1063 |
+
'name' => 'code',
|
1064 |
+
'text' => $text,
|
|
|
|
|
|
|
1065 |
),
|
1066 |
);
|
1067 |
}
|
1068 |
}
|
1069 |
|
1070 |
+
protected function inlineEmailTag($Excerpt)
|
1071 |
{
|
1072 |
+
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches))
|
1073 |
{
|
1074 |
+
$url = $matches[1];
|
1075 |
+
|
1076 |
+
if ( ! isset($matches[2]))
|
1077 |
+
{
|
1078 |
+
$url = 'mailto:' . $url;
|
1079 |
+
}
|
1080 |
+
|
1081 |
return array(
|
1082 |
+
'extent' => strlen($matches[0]),
|
1083 |
+
'element' => array(
|
1084 |
+
'name' => 'a',
|
1085 |
+
'text' => $matches[1],
|
1086 |
+
'attributes' => array(
|
1087 |
+
'href' => $url,
|
1088 |
+
),
|
1089 |
+
),
|
1090 |
);
|
1091 |
}
|
1092 |
}
|
1093 |
|
1094 |
+
protected function inlineEmphasis($Excerpt)
|
1095 |
{
|
1096 |
if ( ! isset($Excerpt['text'][1]))
|
1097 |
{
|
1098 |
return;
|
1099 |
}
|
1100 |
|
1101 |
+
$marker = $Excerpt['text'][0];
|
1102 |
+
|
1103 |
+
if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))
|
1104 |
{
|
1105 |
+
$emphasis = 'strong';
|
1106 |
+
}
|
1107 |
+
elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))
|
1108 |
+
{
|
1109 |
+
$emphasis = 'em';
|
1110 |
+
}
|
1111 |
+
else
|
1112 |
+
{
|
1113 |
+
return;
|
1114 |
}
|
1115 |
+
|
1116 |
+
return array(
|
1117 |
+
'extent' => strlen($matches[0]),
|
1118 |
+
'element' => array(
|
1119 |
+
'name' => $emphasis,
|
1120 |
+
'handler' => 'line',
|
1121 |
+
'text' => $matches[1],
|
1122 |
+
),
|
1123 |
+
);
|
1124 |
}
|
1125 |
|
1126 |
+
protected function inlineEscapeSequence($Excerpt)
|
1127 |
{
|
1128 |
if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))
|
1129 |
{
|
1134 |
}
|
1135 |
}
|
1136 |
|
1137 |
+
protected function inlineImage($Excerpt)
|
1138 |
+
{
|
1139 |
+
if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')
|
1140 |
+
{
|
1141 |
+
return;
|
1142 |
+
}
|
1143 |
+
|
1144 |
+
$Excerpt['text']= substr($Excerpt['text'], 1);
|
1145 |
+
|
1146 |
+
$Link = $this->inlineLink($Excerpt);
|
1147 |
+
|
1148 |
+
if ($Link === null)
|
1149 |
+
{
|
1150 |
+
return;
|
1151 |
+
}
|
1152 |
+
|
1153 |
+
$Inline = array(
|
1154 |
+
'extent' => $Link['extent'] + 1,
|
1155 |
+
'element' => array(
|
1156 |
+
'name' => 'img',
|
1157 |
+
'attributes' => array(
|
1158 |
+
'src' => $Link['element']['attributes']['href'],
|
1159 |
+
'alt' => $Link['element']['text'],
|
1160 |
+
),
|
1161 |
+
),
|
1162 |
+
);
|
1163 |
+
|
1164 |
+
$Inline['element']['attributes'] += $Link['element']['attributes'];
|
1165 |
+
|
1166 |
+
unset($Inline['element']['attributes']['href']);
|
1167 |
+
|
1168 |
+
return $Inline;
|
1169 |
+
}
|
1170 |
+
|
1171 |
+
protected function inlineLink($Excerpt)
|
1172 |
{
|
1173 |
+
$Element = array(
|
1174 |
+
'name' => 'a',
|
1175 |
+
'handler' => 'line',
|
1176 |
+
'text' => null,
|
1177 |
+
'attributes' => array(
|
1178 |
+
'href' => null,
|
1179 |
+
'title' => null,
|
1180 |
+
),
|
1181 |
+
);
|
1182 |
+
|
1183 |
+
$extent = 0;
|
1184 |
+
|
1185 |
+
$remainder = $Excerpt['text'];
|
1186 |
+
|
1187 |
+
if (preg_match('/\[((?:[^][]|(?R))*)\]/', $remainder, $matches))
|
1188 |
+
{
|
1189 |
+
$Element['text'] = $matches[1];
|
1190 |
+
|
1191 |
+
$extent += strlen($matches[0]);
|
1192 |
+
|
1193 |
+
$remainder = substr($remainder, $extent);
|
1194 |
+
}
|
1195 |
+
else
|
1196 |
+
{
|
1197 |
+
return;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches))
|
1201 |
+
{
|
1202 |
+
$Element['attributes']['href'] = $matches[1];
|
1203 |
+
|
1204 |
+
if (isset($matches[2]))
|
1205 |
+
{
|
1206 |
+
$Element['attributes']['title'] = substr($matches[2], 1, - 1);
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
$extent += strlen($matches[0]);
|
1210 |
+
}
|
1211 |
+
else
|
1212 |
+
{
|
1213 |
+
if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches))
|
1214 |
+
{
|
1215 |
+
$definition = strlen($matches[1]) ? $matches[1] : $Element['text'];
|
1216 |
+
$definition = strtolower($definition);
|
1217 |
+
|
1218 |
+
$extent += strlen($matches[0]);
|
1219 |
+
}
|
1220 |
+
else
|
1221 |
+
{
|
1222 |
+
$definition = strtolower($Element['text']);
|
1223 |
+
}
|
1224 |
+
|
1225 |
+
if ( ! isset($this->DefinitionData['Reference'][$definition]))
|
1226 |
+
{
|
1227 |
+
return;
|
1228 |
+
}
|
1229 |
+
|
1230 |
+
$Definition = $this->DefinitionData['Reference'][$definition];
|
1231 |
+
|
1232 |
+
$Element['attributes']['href'] = $Definition['url'];
|
1233 |
+
$Element['attributes']['title'] = $Definition['title'];
|
1234 |
+
}
|
1235 |
+
|
1236 |
+
$Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']);
|
1237 |
+
|
1238 |
return array(
|
1239 |
+
'extent' => $extent,
|
1240 |
+
'element' => $Element,
|
1241 |
);
|
1242 |
}
|
1243 |
|
1244 |
+
protected function inlineMarkup($Excerpt)
|
1245 |
{
|
1246 |
+
if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false)
|
1247 |
{
|
1248 |
+
return;
|
1249 |
+
}
|
1250 |
|
1251 |
+
if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches))
|
1252 |
+
{
|
1253 |
return array(
|
1254 |
+
'markup' => $matches[0],
|
1255 |
'extent' => strlen($matches[0]),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1256 |
);
|
1257 |
}
|
|
|
1258 |
|
1259 |
+
if ($Excerpt['text'][1] === '!' and preg_match('/^<!---?[^>-](?:-?[^-])*-->/s', $Excerpt['text'], $matches))
|
|
|
|
|
1260 |
{
|
1261 |
return array(
|
1262 |
+
'markup' => $matches[0],
|
1263 |
'extent' => strlen($matches[0]),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1264 |
);
|
1265 |
}
|
|
|
1266 |
|
1267 |
+
if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches))
|
|
|
|
|
1268 |
{
|
1269 |
return array(
|
1270 |
'markup' => $matches[0],
|
1273 |
}
|
1274 |
}
|
1275 |
|
1276 |
+
protected function inlineSpecialCharacter($Excerpt)
|
1277 |
{
|
1278 |
+
if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text']))
|
1279 |
+
{
|
1280 |
+
return array(
|
1281 |
+
'markup' => '&',
|
1282 |
+
'extent' => 1,
|
1283 |
+
);
|
1284 |
+
}
|
1285 |
+
|
1286 |
+
$SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot');
|
1287 |
|
1288 |
+
if (isset($SpecialCharacter[$Excerpt['text'][0]]))
|
1289 |
{
|
1290 |
+
return array(
|
1291 |
+
'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';',
|
1292 |
+
'extent' => 1,
|
1293 |
+
);
|
1294 |
+
}
|
1295 |
+
}
|
1296 |
+
|
1297 |
+
protected function inlineStrikethrough($Excerpt)
|
1298 |
+
{
|
1299 |
+
if ( ! isset($Excerpt['text'][1]))
|
1300 |
+
{
|
1301 |
+
return;
|
1302 |
+
}
|
1303 |
|
1304 |
+
if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches))
|
1305 |
+
{
|
1306 |
return array(
|
1307 |
'extent' => strlen($matches[0]),
|
1308 |
'element' => array(
|
1309 |
+
'name' => 'del',
|
1310 |
+
'text' => $matches[1],
|
1311 |
+
'handler' => 'line',
|
1312 |
),
|
1313 |
);
|
1314 |
}
|
1315 |
}
|
1316 |
|
1317 |
+
protected function inlineUrl($Excerpt)
|
1318 |
{
|
1319 |
+
if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1320 |
{
|
1321 |
return;
|
1322 |
}
|
1323 |
|
1324 |
+
if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE))
|
|
|
|
|
1325 |
{
|
1326 |
+
$Inline = array(
|
1327 |
+
'extent' => strlen($matches[0][0]),
|
1328 |
+
'position' => $matches[0][1],
|
1329 |
+
'element' => array(
|
1330 |
+
'name' => 'a',
|
1331 |
+
'text' => $matches[0][0],
|
1332 |
+
'attributes' => array(
|
1333 |
+
'href' => $matches[0][0],
|
1334 |
+
),
|
1335 |
),
|
1336 |
);
|
1337 |
+
|
1338 |
+
return $Inline;
|
1339 |
}
|
1340 |
+
}
|
1341 |
+
|
1342 |
+
protected function inlineUrlTag($Excerpt)
|
1343 |
+
{
|
1344 |
+
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches))
|
1345 |
{
|
1346 |
+
$url = str_replace(array('&', '<'), array('&', '<'), $matches[1]);
|
1347 |
+
|
1348 |
+
return array(
|
1349 |
+
'extent' => strlen($matches[0]),
|
1350 |
+
'element' => array(
|
1351 |
+
'name' => 'a',
|
1352 |
+
'text' => $url,
|
1353 |
+
'attributes' => array(
|
1354 |
+
'href' => $url,
|
1355 |
+
),
|
1356 |
),
|
1357 |
);
|
1358 |
}
|
1359 |
+
}
|
1360 |
|
1361 |
+
# ~
|
1362 |
+
|
1363 |
+
protected function unmarkedText($text)
|
1364 |
+
{
|
1365 |
+
if ($this->breaksEnabled)
|
1366 |
{
|
1367 |
+
$text = preg_replace('/[ ]*\n/', "<br />\n", $text);
|
1368 |
+
}
|
1369 |
+
else
|
1370 |
+
{
|
1371 |
+
$text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "<br />\n", $text);
|
1372 |
+
$text = str_replace(" \n", "\n", $text);
|
1373 |
}
|
1374 |
|
1375 |
+
return $text;
|
|
|
|
|
|
|
1376 |
}
|
1377 |
|
1378 |
+
#
|
1379 |
+
# Handlers
|
1380 |
+
#
|
|
|
|
|
|
|
1381 |
|
1382 |
+
protected function element(array $Element)
|
1383 |
+
{
|
1384 |
+
$markup = '<'.$Element['name'];
|
1385 |
|
1386 |
+
if (isset($Element['attributes']))
|
1387 |
{
|
1388 |
+
foreach ($Element['attributes'] as $name => $value)
|
1389 |
+
{
|
1390 |
+
if ($value === null)
|
1391 |
+
{
|
1392 |
+
continue;
|
1393 |
+
}
|
1394 |
+
|
1395 |
+
$markup .= ' '.$name.'="'.$value.'"';
|
1396 |
+
}
|
1397 |
}
|
1398 |
+
|
1399 |
+
if (isset($Element['text']))
|
1400 |
{
|
1401 |
+
$markup .= '>';
|
1402 |
+
|
1403 |
+
if (isset($Element['handler']))
|
1404 |
+
{
|
1405 |
+
$markup .= $this->{$Element['handler']}($Element['text']);
|
1406 |
+
}
|
1407 |
+
else
|
1408 |
+
{
|
1409 |
+
$markup .= $Element['text'];
|
1410 |
+
}
|
1411 |
+
|
1412 |
+
$markup .= '</'.$Element['name'].'>';
|
1413 |
}
|
1414 |
else
|
1415 |
{
|
1416 |
+
$markup .= ' />';
|
1417 |
}
|
1418 |
|
1419 |
+
return $markup;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1420 |
}
|
1421 |
|
1422 |
+
protected function elements(array $Elements)
|
|
|
|
|
|
|
1423 |
{
|
1424 |
+
$markup = '';
|
1425 |
|
1426 |
+
foreach ($Elements as $Element)
|
1427 |
+
{
|
1428 |
+
$markup .= "\n" . $this->element($Element);
|
1429 |
+
}
|
1430 |
|
1431 |
+
$markup .= "\n";
|
1432 |
+
|
1433 |
+
return $markup;
|
1434 |
}
|
1435 |
|
|
|
1436 |
# ~
|
|
|
1437 |
|
1438 |
protected function li($lines)
|
1439 |
{
|
1455 |
}
|
1456 |
|
1457 |
#
|
1458 |
+
# Deprecated Methods
|
1459 |
+
#
|
1460 |
+
|
1461 |
+
function parse($text)
|
1462 |
+
{
|
1463 |
+
$markup = $this->text($text);
|
1464 |
+
|
1465 |
+
return $markup;
|
1466 |
+
}
|
1467 |
+
|
1468 |
+
#
|
1469 |
+
# Static Methods
|
1470 |
#
|
1471 |
|
1472 |
static function instance($name = 'default')
|
1476 |
return self::$instances[$name];
|
1477 |
}
|
1478 |
|
1479 |
+
$instance = new static();
|
1480 |
|
1481 |
self::$instances[$name] = $instance;
|
1482 |
|
1485 |
|
1486 |
private static $instances = array();
|
1487 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1488 |
#
|
1489 |
# Fields
|
1490 |
#
|
1491 |
|
1492 |
+
protected $DefinitionData;
|
1493 |
|
1494 |
#
|
1495 |
+
# Read-Only
|
1496 |
|
1497 |
protected $specialCharacters = array(
|
1498 |
+
'\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|',
|
1499 |
);
|
1500 |
|
1501 |
protected $StrongRegex = array(
|
1502 |
+
'*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s',
|
1503 |
+
'_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us',
|
1504 |
);
|
1505 |
|
1506 |
protected $EmRegex = array(
|
1507 |
+
'*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',
|
1508 |
+
'_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us',
|
1509 |
+
);
|
1510 |
+
|
1511 |
+
protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?';
|
1512 |
+
|
1513 |
+
protected $voidElements = array(
|
1514 |
+
'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source',
|
1515 |
);
|
1516 |
|
1517 |
protected $textLevelElements = array(
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/README.md
CHANGED
@@ -1,18 +1,22 @@
|
|
1 |
## Parsedown
|
2 |
|
3 |
-
|
|
|
4 |
|
5 |
-
|
|
|
|
|
|
|
|
|
|
|
6 |
|
7 |
### Features
|
8 |
|
9 |
-
*
|
10 |
-
* [
|
11 |
-
* [GitHub Flavored](https://help.github.com/articles/github-flavored-markdown)
|
12 |
-
* [Tested](http://parsedown.org/tests/) in PHP 5.2, 5.3, 5.4, 5.5, 5.6 and [hhvm](http://www.hhvm.com/)
|
13 |
* Extensible
|
14 |
-
*
|
15 |
-
* [
|
16 |
|
17 |
### Installation
|
18 |
|
@@ -26,18 +30,24 @@ $Parsedown = new Parsedown();
|
|
26 |
echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
|
27 |
```
|
28 |
|
29 |
-
More examples in [the wiki](https://github.com/erusev/parsedown/wiki/
|
30 |
|
31 |
### Questions
|
32 |
|
33 |
-
**How does Parsedown work
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
|
36 |
-
|
37 |
-
Using namespaces would mean dropping support for PHP 5.2. We believe that since Parsedown is a single class with an uncommon name, making this trade wouldn't be worth it.
|
38 |
|
39 |
-
**
|
40 |
-
We are [working on it](https://github.com/erusev/parsedown/tree/commonmark).
|
41 |
|
42 |
-
|
43 |
-
[phpDocumentor](http://www.phpdoc.org/), [Bolt CMS](http://bolt.cm/), [RaspberryPi.org](http://www.raspberrypi.org/) and [more](https://www.versioneye.com/php/erusev:parsedown/references).
|
1 |
## Parsedown
|
2 |
|
3 |
+
[![Build Status](https://img.shields.io/travis/erusev/parsedown/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown)
|
4 |
+
<!--[![Total Downloads](http://img.shields.io/packagist/dt/erusev/parsedown.svg?style=flat-square)](https://packagist.org/packages/erusev/parsedown)-->
|
5 |
|
6 |
+
Better Markdown Parser in PHP
|
7 |
+
|
8 |
+
[Demo](http://parsedown.org/demo) |
|
9 |
+
[Benchmarks](http://parsedown.org/speed) |
|
10 |
+
[Tests](http://parsedown.org/tests/) |
|
11 |
+
[Documentation](https://github.com/erusev/parsedown/wiki/)
|
12 |
|
13 |
### Features
|
14 |
|
15 |
+
* Super Fast
|
16 |
+
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
|
|
|
|
|
17 |
* Extensible
|
18 |
+
* Tested in 5.3 to 5.6
|
19 |
+
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
|
20 |
|
21 |
### Installation
|
22 |
|
30 |
echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
|
31 |
```
|
32 |
|
33 |
+
More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).
|
34 |
|
35 |
### Questions
|
36 |
|
37 |
+
**How does Parsedown work?**
|
38 |
+
|
39 |
+
It tries to read Markdown like a human. First, it looks at the lines. It’s interested in how the lines start. This helps it recognise blocks. It knows, for example, that if a line start with a `-` then it perhaps belong to a list. Once it recognises the blocks, it continues to the content. As it reads, it watches out for special characters. This helps it recognise inline elements (or inlines).
|
40 |
+
|
41 |
+
We call this approach "line based". We believe that Parsedown is the first Markdown parser to use it. Since the release of Parsedown, other developers have used the same approach to develop other Markdown parsers in PHP and in other languages.
|
42 |
+
|
43 |
+
**Is it compliant with CommonMark?**
|
44 |
+
|
45 |
+
It passes most of the CommonMark tests. Most of the tests that don't pass deal with cases that are quite uncommon. Still, as CommonMark matures, compliance should improve.
|
46 |
+
|
47 |
+
**Who uses it?**
|
48 |
|
49 |
+
[phpDocumentor](http://www.phpdoc.org/), [October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [Kirby CMS](http://getkirby.com/), [Grav CMS](http://getgrav.org/), [Statamic CMS](http://www.statamic.com/), [RaspberryPi.org](http://www.raspberrypi.org/) and [more](https://www.versioneye.com/php/erusev:parsedown/references).
|
|
|
50 |
|
51 |
+
**How can I help?**
|
|
|
52 |
|
53 |
+
Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
|
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/phpunit.xml.dist
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<phpunit bootstrap="test/bootstrap.php" colors="true">
|
3 |
<testsuites>
|
4 |
<testsuite>
|
5 |
-
<file>test/
|
6 |
</testsuite>
|
7 |
</testsuites>
|
8 |
</phpunit>
|
2 |
<phpunit bootstrap="test/bootstrap.php" colors="true">
|
3 |
<testsuites>
|
4 |
<testsuite>
|
5 |
+
<file>test/ParsedownTest.php</file>
|
6 |
</testsuite>
|
7 |
</testsuites>
|
8 |
</phpunit>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/aligned_table.html
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
<table>
|
2 |
<thead>
|
3 |
<tr>
|
4 |
-
<th
|
5 |
-
<th
|
6 |
-
<th
|
7 |
</tr>
|
8 |
</thead>
|
9 |
<tbody>
|
10 |
<tr>
|
11 |
-
<td
|
12 |
-
<td
|
13 |
-
<td
|
14 |
</tr>
|
15 |
<tr>
|
16 |
-
<td
|
17 |
-
<td
|
18 |
-
<td
|
19 |
</tr>
|
20 |
</tbody>
|
21 |
</table>
|
1 |
<table>
|
2 |
<thead>
|
3 |
<tr>
|
4 |
+
<th style="text-align: left;">header 1</th>
|
5 |
+
<th style="text-align: center;">header 2</th>
|
6 |
+
<th style="text-align: right;">header 2</th>
|
7 |
</tr>
|
8 |
</thead>
|
9 |
<tbody>
|
10 |
<tr>
|
11 |
+
<td style="text-align: left;">cell 1.1</td>
|
12 |
+
<td style="text-align: center;">cell 1.2</td>
|
13 |
+
<td style="text-align: right;">cell 1.3</td>
|
14 |
</tr>
|
15 |
<tr>
|
16 |
+
<td style="text-align: left;">cell 2.1</td>
|
17 |
+
<td style="text-align: center;">cell 2.2</td>
|
18 |
+
<td style="text-align: right;">cell 2.3</td>
|
19 |
</tr>
|
20 |
</tbody>
|
21 |
</table>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/atx_heading.html
CHANGED
@@ -4,6 +4,6 @@
|
|
4 |
<h4>h4</h4>
|
5 |
<h5>h5</h5>
|
6 |
<h6>h6</h6>
|
7 |
-
<
|
8 |
<h1>closed h1</h1>
|
9 |
<p>#</p>
|
4 |
<h4>h4</h4>
|
5 |
<h5>h5</h5>
|
6 |
<h6>h6</h6>
|
7 |
+
<p>####### not a heading</p>
|
8 |
<h1>closed h1</h1>
|
9 |
<p>#</p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/atx_heading.md
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
|
11 |
###### h6
|
12 |
|
13 |
-
#######
|
14 |
|
15 |
# closed h1 #
|
16 |
|
10 |
|
11 |
###### h6
|
12 |
|
13 |
+
####### not a heading
|
14 |
|
15 |
# closed h1 #
|
16 |
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/block-level_html.html
CHANGED
@@ -1,13 +1,12 @@
|
|
1 |
<div>_content_</div>
|
2 |
-
<p>
|
3 |
<div>
|
4 |
-
<div class="inner">
|
5 |
-
_content_
|
6 |
-
</div>
|
7 |
</div>
|
8 |
-
<p>paragraph</p>
|
9 |
<style type="text/css">
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
</
|
1 |
<div>_content_</div>
|
2 |
+
<p>paragraph</p>
|
3 |
<div>
|
4 |
+
<div class="inner">
|
5 |
+
_content_
|
6 |
+
</div>
|
7 |
</div>
|
|
|
8 |
<style type="text/css">
|
9 |
+
p {color: #789;}
|
10 |
+
</style>
|
11 |
+
<div>
|
12 |
+
<a href="/">home</a></div>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/block-level_html.md
CHANGED
@@ -1,17 +1,16 @@
|
|
1 |
<div>_content_</div>
|
2 |
|
3 |
-
|
4 |
|
5 |
<div>
|
6 |
-
<div class="inner">
|
7 |
-
_content_
|
8 |
-
</div>
|
9 |
</div>
|
10 |
|
11 |
-
paragraph
|
12 |
-
|
13 |
<style type="text/css">
|
14 |
-
|
15 |
-
color: red;
|
16 |
-
}
|
17 |
</style>
|
|
|
|
|
|
1 |
<div>_content_</div>
|
2 |
|
3 |
+
paragraph
|
4 |
|
5 |
<div>
|
6 |
+
<div class="inner">
|
7 |
+
_content_
|
8 |
+
</div>
|
9 |
</div>
|
10 |
|
|
|
|
|
11 |
<style type="text/css">
|
12 |
+
p {color: #789;}
|
|
|
|
|
13 |
</style>
|
14 |
+
|
15 |
+
<div>
|
16 |
+
<a href="/">home</a></div>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/escaping.html
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
<p>escaped *emphasis*.</p>
|
2 |
<p><code>escaped \*emphasis\* in a code span</code></p>
|
3 |
<pre><code>escaped \*emphasis\* in a code block</code></pre>
|
4 |
-
<p>\ ` * _ { } [ ] ( ) > # + - . !</p>
|
|
|
|
1 |
<p>escaped *emphasis*.</p>
|
2 |
<p><code>escaped \*emphasis\* in a code span</code></p>
|
3 |
<pre><code>escaped \*emphasis\* in a code block</code></pre>
|
4 |
+
<p>\ ` * _ { } [ ] ( ) > # + - . !</p>
|
5 |
+
<p><em>one_two</em> <strong>one_two</strong></p>
|
6 |
+
<p><em>one*two</em> <strong>one*two</strong></p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/escaping.md
CHANGED
@@ -4,4 +4,8 @@ escaped \*emphasis\*.
|
|
4 |
|
5 |
escaped \*emphasis\* in a code block
|
6 |
|
7 |
-
\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!
|
|
|
|
|
|
|
|
4 |
|
5 |
escaped \*emphasis\* in a code block
|
6 |
|
7 |
+
\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!
|
8 |
+
|
9 |
+
_one\_two_ __one\_two__
|
10 |
+
|
11 |
+
*one\*two* **one\*two**
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_reference.html
CHANGED
@@ -1 +1,2 @@
|
|
1 |
-
<p><img
|
|
1 |
+
<p><img src="/md.png" alt="Markdown Logo" /></p>
|
2 |
+
<p>![missing reference]</p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_reference.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1 |
![Markdown Logo][image]
|
2 |
|
3 |
[image]: /md.png
|
|
|
|
1 |
![Markdown Logo][image]
|
2 |
|
3 |
[image]: /md.png
|
4 |
+
|
5 |
+
![missing reference]
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_title.html
CHANGED
@@ -1 +1,2 @@
|
|
1 |
-
<p><img
|
|
1 |
+
<p><img src="/md.png" alt="alt" title="title" /></p>
|
2 |
+
<p><img src="/md.png" alt="blank title" title="" /></p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/image_title.md
CHANGED
@@ -1 +1,3 @@
|
|
1 |
-
![alt](/md.png "title")
|
|
|
|
1 |
+
![alt](/md.png "title")
|
2 |
+
|
3 |
+
![blank title](/md.png "")
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link.html
CHANGED
@@ -1,4 +1,6 @@
|
|
1 |
-
<p><a href="http://example.com">link</a
|
|
|
|
|
2 |
<p><a href="http://example.com"><code>link</code></a></p>
|
3 |
-
<p><a href="http://example.com"><img
|
4 |
-
<p><a href="http://example.com"><img
|
1 |
+
<p><a href="http://example.com">link</a></p>
|
2 |
+
<p><a href="/url-(parentheses)">link</a> with parentheses in URL </p>
|
3 |
+
<p>(<a href="/index.php">link</a>) in parentheses</p>
|
4 |
<p><a href="http://example.com"><code>link</code></a></p>
|
5 |
+
<p><a href="http://example.com"><img src="http://parsedown.org/md.png" alt="MD Logo" /></a></p>
|
6 |
+
<p><a href="http://example.com"><img src="http://parsedown.org/md.png" alt="MD Logo" /> and text</a></p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1 |
-
[link](http://example.com)
|
|
|
|
|
|
|
|
|
2 |
|
3 |
[`link`](http://example.com)
|
4 |
|
1 |
+
[link](http://example.com)
|
2 |
+
|
3 |
+
[link](/url-(parentheses)) with parentheses in URL
|
4 |
+
|
5 |
+
([link](/index.php)) in parentheses
|
6 |
|
7 |
[`link`](http://example.com)
|
8 |
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link_title.html
CHANGED
@@ -1 +1,6 @@
|
|
1 |
-
<p><a href="http://example.com" title="Title">single quotes</a
|
|
|
|
|
|
|
|
|
|
1 |
+
<p><a href="http://example.com" title="Title">single quotes</a></p>
|
2 |
+
<p><a href="http://example.com" title="Title">double quotes</a></p>
|
3 |
+
<p><a href="http://example.com" title="">single quotes blank</a></p>
|
4 |
+
<p><a href="http://example.com" title="">double quotes blank</a></p>
|
5 |
+
<p><a href="http://example.com" title="2 Words">space</a></p>
|
6 |
+
<p><a href="http://example.com/url-(parentheses)" title="Title">parentheses</a></p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/inline_link_title.md
CHANGED
@@ -1 +1,11 @@
|
|
1 |
-
[single quotes](http://example.com 'Title')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[single quotes](http://example.com 'Title')
|
2 |
+
|
3 |
+
[double quotes](http://example.com "Title")
|
4 |
+
|
5 |
+
[single quotes blank](http://example.com '')
|
6 |
+
|
7 |
+
[double quotes blank](http://example.com "")
|
8 |
+
|
9 |
+
[space](http://example.com "2 Words")
|
10 |
+
|
11 |
+
[parentheses](http://example.com/url-(parentheses) "Title")
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/simple_table.html
CHANGED
@@ -20,17 +20,17 @@
|
|
20 |
<table>
|
21 |
<thead>
|
22 |
<tr>
|
23 |
-
<th
|
24 |
<th>header 2</th>
|
25 |
</tr>
|
26 |
</thead>
|
27 |
<tbody>
|
28 |
<tr>
|
29 |
-
<td
|
30 |
<td>cell 1.2</td>
|
31 |
</tr>
|
32 |
<tr>
|
33 |
-
<td
|
34 |
<td>cell 2.2</td>
|
35 |
</tr>
|
36 |
</tbody>
|
20 |
<table>
|
21 |
<thead>
|
22 |
<tr>
|
23 |
+
<th style="text-align: left;">header 1</th>
|
24 |
<th>header 2</th>
|
25 |
</tr>
|
26 |
</thead>
|
27 |
<tbody>
|
28 |
<tr>
|
29 |
+
<td style="text-align: left;">cell 1.1</td>
|
30 |
<td>cell 1.2</td>
|
31 |
</tr>
|
32 |
<tr>
|
33 |
+
<td style="text-align: left;">cell 2.1</td>
|
34 |
<td>cell 2.2</td>
|
35 |
</tr>
|
36 |
</tbody>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/special_characters.html
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<p>AT&T has an ampersand in their name</p>
|
2 |
<p>this & that</p>
|
3 |
-
<p>4 < 5 and 6
|
4 |
<p><a href="http://example.com/autolink?a=1&b=2">http://example.com/autolink?a=1&b=2</a></p>
|
5 |
<p><a href="/script?a=1&b=2">inline link</a></p>
|
6 |
<p><a href="http://example.com/?a=1&b=2">reference link</a></p>
|
1 |
<p>AT&T has an ampersand in their name</p>
|
2 |
<p>this & that</p>
|
3 |
+
<p>4 < 5 and 6 > 5</p>
|
4 |
<p><a href="http://example.com/autolink?a=1&b=2">http://example.com/autolink?a=1&b=2</a></p>
|
5 |
<p><a href="/script?a=1&b=2">inline link</a></p>
|
6 |
<p><a href="http://example.com/?a=1&b=2">reference link</a></p>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/table_inline_markdown.html
CHANGED
@@ -11,8 +11,12 @@
|
|
11 |
<td><del>cell</del> 1.2</td>
|
12 |
</tr>
|
13 |
<tr>
|
14 |
-
<td><code
|
15 |
-
<td
|
|
|
|
|
|
|
|
|
16 |
</tr>
|
17 |
</tbody>
|
18 |
</table>
|
11 |
<td><del>cell</del> 1.2</td>
|
12 |
</tr>
|
13 |
<tr>
|
14 |
+
<td><code>|</code> 2.1</td>
|
15 |
+
<td>| 2.2</td>
|
16 |
+
</tr>
|
17 |
+
<tr>
|
18 |
+
<td><code>\|</code> 2.1</td>
|
19 |
+
<td><a href="/">link</a></td>
|
20 |
</tr>
|
21 |
</tbody>
|
22 |
</table>
|
includes/libraries/aihrus-framework/includes/libraries/parsedown/test/data/table_inline_markdown.md
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
| _header_ 1 | header 2 |
|
2 |
| ------------ | ------------ |
|
3 |
| _cell_ 1.1 | ~~cell~~ 1.2 |
|
4 |
-
|
|
|
1 |
| _header_ 1 | header 2 |
|
2 |
| ------------ | ------------ |
|
3 |
| _cell_ 1.1 | ~~cell~~ 1.2 |
|
4 |
+
| `|` 2.1 | \| 2.2 |
|
5 |
+
| `\|` 2.1 | [link](/) |
|
includes/libraries/bxslider-4/package.json
CHANGED
@@ -46,6 +46,5 @@
|
|
46 |
"bxslider",
|
47 |
"jQuery",
|
48 |
"plugin"
|
49 |
-
]
|
50 |
-
"private": true
|
51 |
}
|
46 |
"bxslider",
|
47 |
"jQuery",
|
48 |
"plugin"
|
49 |
+
]
|
|
|
50 |
}
|
languages/testimonials-widget.pot
CHANGED
@@ -1,14 +1,15 @@
|
|
1 |
-
# Copyright (C)
|
2 |
# This file is distributed under the same license as the Testimonials Widget package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Testimonials Widget 3.
|
6 |
-
"Report-Msgid-Bugs-To:
|
7 |
-
"
|
|
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
11 |
-
"PO-Revision-Date:
|
12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
13 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
14 |
|
@@ -63,42 +64,42 @@ msgid "Testimonials Settings"
|
|
63 |
msgstr ""
|
64 |
|
65 |
#: includes/class-testimonials-widget-settings.php:97
|
66 |
-
#: includes/class-testimonials-widget.php:
|
67 |
msgid "Settings"
|
68 |
msgstr ""
|
69 |
|
70 |
#: includes/class-testimonials-widget-settings.php:113
|
71 |
-
#: includes/class-testimonials-widget-settings.php:
|
72 |
msgid "General"
|
73 |
msgstr ""
|
74 |
|
75 |
#: includes/class-testimonials-widget-settings.php:114
|
76 |
-
#: includes/class-testimonials-widget-settings.php:
|
77 |
msgid "Fields"
|
78 |
msgstr ""
|
79 |
|
80 |
#: includes/class-testimonials-widget-settings.php:115
|
81 |
-
#: includes/class-testimonials-widget-settings.php:
|
82 |
msgid "Selection"
|
83 |
msgstr ""
|
84 |
|
85 |
#: includes/class-testimonials-widget-settings.php:116
|
86 |
-
#: includes/class-testimonials-widget-settings.php:
|
87 |
msgid "Ordering"
|
88 |
msgstr ""
|
89 |
|
90 |
#: includes/class-testimonials-widget-settings.php:117
|
91 |
-
#: includes/class-testimonials-widget-settings.php:
|
92 |
msgid "Columns"
|
93 |
msgstr ""
|
94 |
|
95 |
#: includes/class-testimonials-widget-settings.php:118
|
96 |
-
#: includes/class-testimonials-widget-settings.php:
|
97 |
msgid "Post Type"
|
98 |
msgstr ""
|
99 |
|
100 |
#: includes/class-testimonials-widget-settings.php:119
|
101 |
-
#: includes/class-testimonials-widget-settings.php:
|
102 |
msgid "Slider Widget"
|
103 |
msgstr ""
|
104 |
|
@@ -111,24 +112,26 @@ msgid "Shortcode Examples"
|
|
111 |
msgstr ""
|
112 |
|
113 |
#: includes/class-testimonials-widget-settings.php:139
|
114 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-widget.php:
|
115 |
msgid "Title"
|
116 |
msgstr ""
|
117 |
|
118 |
#: includes/class-testimonials-widget-settings.php:140
|
119 |
-
#: includes/class-testimonials-widget.php:
|
120 |
-
#: includes/class-testimonials-widget.php:
|
121 |
msgid "Testimonials"
|
122 |
msgstr ""
|
123 |
|
124 |
#: includes/class-testimonials-widget-settings.php:146
|
125 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-widget.php:
|
126 |
msgid "Title Link"
|
127 |
msgstr ""
|
128 |
|
129 |
#: includes/class-testimonials-widget-settings.php:147
|
130 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-widget.php:
|
131 |
-
msgid "
|
|
|
|
|
132 |
msgstr ""
|
133 |
|
134 |
#: includes/class-testimonials-widget-settings.php:153
|
@@ -168,7 +171,9 @@ msgid "Rotation Speed"
|
|
168 |
msgstr ""
|
169 |
|
170 |
#: includes/class-testimonials-widget-settings.php:186
|
171 |
-
msgid "
|
|
|
|
|
172 |
msgstr ""
|
173 |
|
174 |
#: includes/class-testimonials-widget-settings.php:193
|
@@ -184,7 +189,9 @@ msgid "Slide Width?"
|
|
184 |
msgstr ""
|
185 |
|
186 |
#: includes/class-testimonials-widget-settings.php:203
|
187 |
-
msgid "
|
|
|
|
|
188 |
msgstr ""
|
189 |
|
190 |
#: includes/class-testimonials-widget-settings.php:210
|
@@ -240,7 +247,9 @@ msgid "Disable \"Testimonials Not Found\"?"
|
|
240 |
msgstr ""
|
241 |
|
242 |
#: includes/class-testimonials-widget-settings.php:257
|
243 |
-
msgid "
|
|
|
|
|
244 |
msgstr ""
|
245 |
|
246 |
#: includes/class-testimonials-widget-settings.php:263
|
@@ -268,7 +277,10 @@ msgid "After testimonials"
|
|
268 |
msgstr ""
|
269 |
|
270 |
#: includes/class-testimonials-widget-settings.php:276
|
271 |
-
msgid "
|
|
|
|
|
|
|
272 |
msgstr ""
|
273 |
|
274 |
#: includes/class-testimonials-widget-settings.php:279
|
@@ -312,7 +324,8 @@ msgid "Remove `.hentry` CSS?"
|
|
312 |
msgstr ""
|
313 |
|
314 |
#: includes/class-testimonials-widget-settings.php:321
|
315 |
-
msgid "
|
|
|
316 |
msgstr ""
|
317 |
|
318 |
#: includes/class-testimonials-widget-settings.php:328
|
@@ -336,331 +349,354 @@ msgid "Field Options"
|
|
336 |
msgstr ""
|
337 |
|
338 |
#: includes/class-testimonials-widget-settings.php:353
|
339 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
340 |
msgid "Hide Author?"
|
341 |
msgstr ""
|
342 |
|
343 |
-
#: includes/class-testimonials-widget-settings.php:
|
344 |
msgid "Don't display testimonial title in cite."
|
345 |
msgstr ""
|
346 |
|
347 |
-
#: includes/class-testimonials-widget-settings.php:
|
348 |
-
#: includes/class-testimonials-widget-settings.php:
|
349 |
msgid "Hide Company?"
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: includes/class-testimonials-widget-settings.php:
|
353 |
msgid "Don't display testimonial company in cite."
|
354 |
msgstr ""
|
355 |
|
356 |
-
#: includes/class-testimonials-widget-settings.php:
|
357 |
msgid "Hide Content?"
|
358 |
msgstr ""
|
359 |
|
360 |
-
#: includes/class-testimonials-widget-settings.php:
|
361 |
msgid "Don't display testimonial content in a view."
|
362 |
msgstr ""
|
363 |
|
364 |
-
#: includes/class-testimonials-widget-settings.php:
|
365 |
-
#: includes/class-testimonials-widget-settings.php:
|
366 |
msgid "Hide Email?"
|
367 |
msgstr ""
|
368 |
|
369 |
-
#: includes/class-testimonials-widget-settings.php:
|
370 |
msgid "Don't display or link to testimonial email in cite."
|
371 |
msgstr ""
|
372 |
|
373 |
-
#: includes/class-testimonials-widget-settings.php:
|
374 |
msgid "Hide Gravatar?"
|
375 |
msgstr ""
|
376 |
|
377 |
-
#: includes/class-testimonials-widget-settings.php:
|
378 |
msgid "Don't display Gravatar image with testimonial."
|
379 |
msgstr ""
|
380 |
|
381 |
-
#: includes/class-testimonials-widget-settings.php:
|
382 |
-
#: includes/class-testimonials-widget-settings.php:
|
383 |
msgid "Hide Image?"
|
384 |
msgstr ""
|
385 |
|
386 |
-
#: includes/class-testimonials-widget-settings.php:
|
387 |
msgid "Don't display featured image with testimonial."
|
388 |
msgstr ""
|
389 |
|
390 |
-
#: includes/class-testimonials-widget-settings.php:
|
391 |
msgid "Hide Image in Single View?"
|
392 |
msgstr ""
|
393 |
|
394 |
-
#: includes/class-testimonials-widget-settings.php:
|
395 |
-
#: includes/class-testimonials-widget-settings.php:
|
396 |
msgid "Hide Job Title?"
|
397 |
msgstr ""
|
398 |
|
399 |
-
#: includes/class-testimonials-widget-settings.php:
|
400 |
msgid "Don't display testimonial job title in cite."
|
401 |
msgstr ""
|
402 |
|
403 |
-
#: includes/class-testimonials-widget-settings.php:
|
404 |
-
#: includes/class-testimonials-widget-settings.php:
|
405 |
msgid "Hide Location?"
|
406 |
msgstr ""
|
407 |
|
408 |
-
#: includes/class-testimonials-widget-settings.php:
|
409 |
msgid "Don't display testimonial location in cite."
|
410 |
msgstr ""
|
411 |
|
412 |
-
#: includes/class-testimonials-widget-settings.php:
|
413 |
-
#: includes/class-testimonials-widget-settings.php:
|
414 |
msgid "Hide URL?"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: includes/class-testimonials-widget-settings.php:
|
418 |
msgid "Don't display or link to testimonial URL in cite."
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: includes/class-testimonials-widget-settings.php:
|
422 |
msgid "Selection Options"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: includes/class-testimonials-widget-settings.php:
|
426 |
msgid "Category Filter"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: includes/class-testimonials-widget-settings.php:
|
430 |
msgid "Comma separated category names or IDs."
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: includes/class-testimonials-widget-settings.php:
|
434 |
msgid "Exclude IDs Filter"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: includes/class-testimonials-widget-settings.php:
|
438 |
-
#: includes/class-testimonials-widget-settings.php:
|
439 |
msgid "Comma separated testimonial IDs."
|
440 |
msgstr ""
|
441 |
|
442 |
-
#: includes/class-testimonials-widget-settings.php:
|
443 |
msgid "Include IDs Filter"
|
444 |
msgstr ""
|
445 |
|
446 |
-
#: includes/class-testimonials-widget-settings.php:
|
447 |
msgid "Limit"
|
448 |
msgstr ""
|
449 |
|
450 |
-
#: includes/class-testimonials-widget-settings.php:
|
451 |
msgid "Number of testimonials to select per instance."
|
452 |
msgstr ""
|
453 |
|
454 |
-
#: includes/class-testimonials-widget-settings.php:
|
455 |
msgid "Require All Tags?"
|
456 |
msgstr ""
|
457 |
|
458 |
-
#: includes/class-testimonials-widget-settings.php:
|
459 |
msgid "Select only testimonials with all of the given tags."
|
460 |
msgstr ""
|
461 |
|
462 |
-
#: includes/class-testimonials-widget-settings.php:
|
463 |
msgid "Tags Filter"
|
464 |
msgstr ""
|
465 |
|
466 |
-
#: includes/class-testimonials-widget-settings.php:
|
467 |
msgid "Comma separated tag slugs or IDs."
|
468 |
msgstr ""
|
469 |
|
470 |
-
#: includes/class-testimonials-widget-settings.php:
|
471 |
msgid "Ordering Options"
|
472 |
msgstr ""
|
473 |
|
474 |
-
#: includes/class-testimonials-widget-settings.php:
|
475 |
msgid "ORDER BY"
|
476 |
msgstr ""
|
477 |
|
478 |
-
#: includes/class-testimonials-widget-settings.php:
|
479 |
msgid "Used when \"Random Order\" is disabled."
|
480 |
msgstr ""
|
481 |
|
482 |
-
#: includes/class-testimonials-widget-settings.php:
|
483 |
msgid "Testimonial ID"
|
484 |
msgstr ""
|
485 |
|
486 |
-
#: includes/class-testimonials-widget-settings.php:
|
487 |
-
#: includes/class-testimonials-widget-settings.php:
|
488 |
-
#: includes/class-testimonials-widget.php:
|
489 |
-
#: includes/class-testimonials-widget.php:
|
490 |
-
#: includes/class-testimonials-widget.php:
|
491 |
msgid "Author"
|
492 |
msgstr ""
|
493 |
|
494 |
-
#: includes/class-testimonials-widget-settings.php:
|
495 |
-
#: includes/class-testimonials-widget.php:
|
496 |
msgid "Date"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/class-testimonials-widget-settings.php:
|
500 |
msgid "Menu Order"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/class-testimonials-widget-settings.php:
|
504 |
msgid "No order"
|
505 |
msgstr ""
|
506 |
|
507 |
-
#: includes/class-testimonials-widget-settings.php:
|
508 |
msgid "ORDER BY meta_key"
|
509 |
msgstr ""
|
510 |
|
511 |
-
#: includes/class-testimonials-widget-settings.php:
|
512 |
-
msgid "
|
|
|
|
|
513 |
msgstr ""
|
514 |
|
515 |
-
#: includes/class-testimonials-widget-settings.php:
|
516 |
msgid "None"
|
517 |
msgstr ""
|
518 |
|
519 |
-
#: includes/class-testimonials-widget-settings.php:
|
520 |
-
#: includes/class-testimonials-widget.php:
|
521 |
-
#: includes/class-testimonials-widget.php:
|
522 |
msgid "Job Title"
|
523 |
msgstr ""
|
524 |
|
525 |
-
#: includes/class-testimonials-widget-settings.php:
|
526 |
-
#: includes/class-testimonials-widget.php:
|
527 |
-
#: includes/class-testimonials-widget.php:
|
528 |
msgid "Email"
|
529 |
msgstr ""
|
530 |
|
531 |
-
#: includes/class-testimonials-widget-settings.php:
|
532 |
-
#: includes/class-testimonials-widget.php:
|
533 |
-
#: includes/class-testimonials-widget.php:
|
534 |
msgid "Location"
|
535 |
msgstr ""
|
536 |
|
537 |
-
#: includes/class-testimonials-widget-settings.php:
|
538 |
-
#: includes/class-testimonials-widget.php:
|
539 |
-
#: includes/class-testimonials-widget.php:
|
540 |
msgid "Company"
|
541 |
msgstr ""
|
542 |
|
543 |
-
#: includes/class-testimonials-widget-settings.php:
|
544 |
-
#: includes/class-testimonials-widget.php:
|
545 |
-
#: includes/class-testimonials-widget.php:
|
546 |
msgid "URL"
|
547 |
msgstr ""
|
548 |
|
549 |
-
#: includes/class-testimonials-widget-settings.php:
|
550 |
msgid "ORDER BY Order"
|
551 |
msgstr ""
|
552 |
|
553 |
-
#: includes/class-testimonials-widget-settings.php:
|
554 |
msgid "Descending"
|
555 |
msgstr ""
|
556 |
|
557 |
-
#: includes/class-testimonials-widget-settings.php:
|
558 |
msgid "Ascending"
|
559 |
msgstr ""
|
560 |
|
561 |
-
#: includes/class-testimonials-widget-settings.php:
|
562 |
msgid "Random Order?"
|
563 |
msgstr ""
|
564 |
|
565 |
-
#: includes/class-testimonials-widget-settings.php:
|
566 |
-
msgid "
|
|
|
|
|
567 |
msgstr ""
|
568 |
|
569 |
-
#: includes/class-testimonials-widget-settings.php:
|
570 |
msgid "Allow Comments?"
|
571 |
msgstr ""
|
572 |
|
573 |
-
#: includes/class-testimonials-widget-settings.php:
|
574 |
-
msgid "
|
|
|
|
|
575 |
msgstr ""
|
576 |
|
577 |
-
#: includes/class-testimonials-widget-settings.php:
|
578 |
msgid "URL slug-name for <a href=\"%1s\">testimonials archive</a> page."
|
579 |
msgstr ""
|
580 |
|
581 |
-
#: includes/class-testimonials-widget-settings.php:
|
582 |
msgid "Archive Page URL"
|
583 |
msgstr ""
|
584 |
|
585 |
-
#: includes/class-testimonials-widget-settings.php:
|
586 |
msgid "Disable Default Taxonomies?"
|
587 |
msgstr ""
|
588 |
|
589 |
-
#: includes/class-testimonials-widget-settings.php:
|
590 |
-
msgid "
|
|
|
|
|
591 |
msgstr ""
|
592 |
|
593 |
-
#: includes/class-testimonials-widget-settings.php:
|
594 |
msgid "Include testimonials in archive and category views."
|
595 |
msgstr ""
|
596 |
|
597 |
-
#: includes/class-testimonials-widget-settings.php:
|
598 |
msgid "Enable archives view?"
|
599 |
msgstr ""
|
600 |
|
601 |
-
#: includes/class-testimonials-widget-settings.php:
|
602 |
-
msgid "
|
|
|
|
|
603 |
msgstr ""
|
604 |
|
605 |
-
#: includes/class-testimonials-widget-settings.php:
|
606 |
msgid "Testimonial Page URL"
|
607 |
msgstr ""
|
608 |
|
609 |
-
#: includes/class-testimonials-widget-settings.php:
|
610 |
msgid "Hide ID?"
|
611 |
msgstr ""
|
612 |
|
613 |
-
#: includes/class-testimonials-widget-settings.php:
|
614 |
msgid "Hide Shortcode?"
|
615 |
msgstr ""
|
616 |
|
617 |
-
#: includes/class-testimonials-widget-settings.php:
|
618 |
-
#: includes/class-testimonials-widget-settings.php:
|
619 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:65
|
620 |
msgid "Reset"
|
621 |
msgstr ""
|
622 |
|
623 |
-
#: includes/class-testimonials-widget-settings.php:
|
624 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
625 |
msgstr ""
|
626 |
|
627 |
-
#: includes/class-testimonials-widget-settings.php:
|
628 |
msgid "Shortcode option names are listed below each entry."
|
629 |
msgstr ""
|
630 |
|
631 |
-
#: includes/class-testimonials-widget-settings.php:
|
632 |
msgid "View the <a href=\"%s\">Testimonials documentation</a>."
|
633 |
msgstr ""
|
634 |
|
635 |
-
#: includes/class-testimonials-widget-settings.php:
|
636 |
msgid "General options."
|
637 |
msgstr ""
|
638 |
|
639 |
-
#: includes/class-testimonials-widget-settings.php:
|
640 |
msgid "Show or hide fields."
|
641 |
msgstr ""
|
642 |
|
643 |
-
#: includes/class-testimonials-widget-settings.php:
|
644 |
msgid "Options used to select testimonials."
|
645 |
msgstr ""
|
646 |
|
647 |
-
#: includes/class-testimonials-widget-settings.php:
|
648 |
msgid "Options used to determine displayed testimonials ordering."
|
649 |
msgstr ""
|
650 |
|
651 |
-
#: includes/class-testimonials-widget-settings.php:
|
652 |
msgid "Allowed columns to display on edit page."
|
653 |
msgstr ""
|
654 |
|
655 |
-
#: includes/class-testimonials-widget-settings.php:
|
656 |
msgid "Archive and singular page URL related testimonials options."
|
657 |
msgstr ""
|
658 |
|
659 |
-
#: includes/class-testimonials-widget-settings.php:
|
660 |
msgid "Options related to showing testimonials in widgets."
|
661 |
msgstr ""
|
662 |
|
663 |
-
#: includes/class-testimonials-widget-settings.php:
|
664 |
msgid "Backwards compatibility, import/export options, and reset options."
|
665 |
msgstr ""
|
666 |
|
@@ -690,15 +726,15 @@ msgstr ""
|
|
690 |
|
691 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:63
|
692 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:70
|
693 |
-
#: includes/class-testimonials-widget.php:
|
694 |
-
#: includes/class-testimonials-widget.php:
|
695 |
msgid "Category"
|
696 |
msgstr ""
|
697 |
|
698 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:64
|
699 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:71
|
700 |
-
#: includes/class-testimonials-widget.php:
|
701 |
-
#: includes/class-testimonials-widget.php:
|
702 |
msgid "Tags"
|
703 |
msgstr ""
|
704 |
|
@@ -706,140 +742,151 @@ msgstr ""
|
|
706 |
msgid "Taxonomy"
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: includes/class-testimonials-widget.php:
|
710 |
-
msgid "
|
|
|
|
|
711 |
msgstr ""
|
712 |
|
713 |
-
#: includes/class-testimonials-widget.php:
|
714 |
msgid "Published by"
|
715 |
msgstr ""
|
716 |
|
717 |
-
#: includes/class-testimonials-widget.php:
|
718 |
msgid "ID"
|
719 |
msgstr ""
|
720 |
|
721 |
-
#: includes/class-testimonials-widget.php:
|
722 |
msgid "Image"
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: includes/class-testimonials-widget.php:
|
726 |
msgid "Shortcodes"
|
727 |
msgstr ""
|
728 |
|
729 |
-
#: includes/class-testimonials-widget.php:
|
730 |
msgid "Add New"
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: includes/class-testimonials-widget.php:
|
734 |
-
#: includes/class-testimonials-widget.php:
|
735 |
msgid "Add New Testimonial"
|
736 |
msgstr ""
|
737 |
|
738 |
-
#: includes/class-testimonials-widget.php:
|
739 |
msgid "Edit Testimonial"
|
740 |
msgstr ""
|
741 |
|
742 |
-
#: includes/class-testimonials-widget.php:
|
743 |
-
#: includes/class-testimonials-widget.php:
|
744 |
msgid "No testimonials found"
|
745 |
msgstr ""
|
746 |
|
747 |
-
#: includes/class-testimonials-widget.php:
|
748 |
msgid "No testimonials found in Trash"
|
749 |
msgstr ""
|
750 |
|
751 |
-
#: includes/class-testimonials-widget.php:
|
752 |
msgid "Search Testimonials"
|
753 |
msgstr ""
|
754 |
|
755 |
-
#: includes/class-testimonials-widget.php:
|
756 |
-
#: includes/class-testimonials-widget.php:
|
757 |
-
#: includes/class-testimonials-widget.php:
|
758 |
msgid "Testimonial"
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: includes/class-testimonials-widget.php:
|
762 |
msgid "View Testimonial"
|
763 |
msgstr ""
|
764 |
|
765 |
-
#: includes/class-testimonials-widget.php:
|
766 |
msgid "Use when the testimonial title is not the authors' name."
|
767 |
msgstr ""
|
768 |
|
769 |
-
#: includes/class-testimonials-widget.php:
|
770 |
-
msgid "
|
|
|
|
|
771 |
msgstr ""
|
772 |
|
773 |
-
#: includes/class-testimonials-widget.php:
|
774 |
msgid "Testimonial Data"
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: includes/class-testimonials-widget.php:
|
778 |
msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
|
779 |
msgstr ""
|
780 |
|
781 |
-
#: includes/class-testimonials-widget.php:
|
782 |
msgid "Custom field updated."
|
783 |
msgstr ""
|
784 |
|
785 |
-
#: includes/class-testimonials-widget.php:
|
786 |
msgid "Custom field deleted."
|
787 |
msgstr ""
|
788 |
|
789 |
-
#: includes/class-testimonials-widget.php:
|
790 |
msgid "Testimonial updated."
|
791 |
msgstr ""
|
792 |
|
793 |
#. translators: %s: date and time of the revision
|
794 |
-
|
795 |
-
#: includes/class-testimonials-widget.php:1445
|
796 |
msgid "Testimonial restored to revision from %s"
|
797 |
msgstr ""
|
798 |
|
799 |
-
#: includes/class-testimonials-widget.php:
|
800 |
msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
|
801 |
msgstr ""
|
802 |
|
803 |
-
#: includes/class-testimonials-widget.php:
|
804 |
msgid "Testimonial saved."
|
805 |
msgstr ""
|
806 |
|
807 |
-
#: includes/class-testimonials-widget.php:
|
808 |
-
msgid "
|
|
|
|
|
809 |
msgstr ""
|
810 |
|
811 |
-
#: includes/class-testimonials-widget.php:
|
812 |
-
msgid "
|
|
|
|
|
813 |
msgstr ""
|
814 |
|
815 |
-
#: includes/class-testimonials-widget.php:
|
816 |
-
msgid "
|
|
|
|
|
817 |
msgstr ""
|
818 |
|
819 |
-
#: includes/class-testimonials-widget.php:
|
820 |
-
msgid "
|
|
|
|
|
821 |
msgstr ""
|
822 |
|
823 |
-
#: includes/class-testimonials-widget.php:
|
824 |
msgid "Failed version check"
|
825 |
msgstr ""
|
826 |
|
827 |
-
#: includes/class-testimonials-widget.php:
|
828 |
msgid "Shortcode"
|
829 |
msgstr ""
|
830 |
|
831 |
-
#: includes/class-testimonials-widget.php:
|
832 |
-
#: includes/class-testimonials-widget.php:
|
833 |
msgid "Used with: "
|
834 |
msgstr ""
|
835 |
|
836 |
-
#: includes/class-testimonials-widget.php:
|
837 |
-
#: includes/class-testimonials-widget.php:
|
838 |
msgid "Options: "
|
839 |
msgstr ""
|
840 |
|
841 |
-
#: includes/class-testimonials-widget.php:
|
842 |
-
#: includes/class-testimonials-widget.php:
|
843 |
msgid "Usage: "
|
844 |
msgstr ""
|
845 |
|
@@ -849,7 +896,8 @@ msgstr ""
|
|
849 |
|
850 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:90
|
851 |
#: includes/requirements.php:62
|
852 |
-
msgid "
|
|
|
853 |
msgstr ""
|
854 |
|
855 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:101
|
@@ -857,7 +905,10 @@ msgid "Plugin \"%1$s\" is causing the out of date issue."
|
|
857 |
msgstr ""
|
858 |
|
859 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:106
|
860 |
-
msgid "
|
|
|
|
|
|
|
861 |
msgstr ""
|
862 |
|
863 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:115
|
@@ -865,7 +916,10 @@ msgid "`aihr_check_php` requires $file argument"
|
|
865 |
msgstr ""
|
866 |
|
867 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:154
|
868 |
-
msgid "
|
|
|
|
|
|
|
869 |
msgstr ""
|
870 |
|
871 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:163
|
@@ -873,154 +927,182 @@ msgid "`aihr_check_wp` requires $file argument"
|
|
873 |
msgstr ""
|
874 |
|
875 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:206
|
876 |
-
msgid "
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
msgid "<a href=\"%1$s\">update to</a>"
|
881 |
-
msgstr ""
|
882 |
-
|
883 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:243
|
884 |
-
msgid "<a href=\"%1$s\">install</a>"
|
885 |
msgstr ""
|
886 |
|
887 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
888 |
-
msgid "
|
|
|
|
|
889 |
msgstr ""
|
890 |
|
891 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:250
|
892 |
-
msgid "
|
893 |
-
|
894 |
-
|
895 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:264
|
896 |
-
msgid "<a href=\"%1$s\">%2$s > Settings</a>, <em>Premium</em> tab, <em>License Key</em>"
|
897 |
msgstr ""
|
898 |
|
899 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
900 |
msgid "<a href=\"%s\">Where's my license key?</a>"
|
901 |
msgstr ""
|
902 |
|
903 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
904 |
msgid "<a href=\"%1$s\">Purchase</a>"
|
905 |
msgstr ""
|
906 |
|
907 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
908 |
msgid "%1$s/checkout/?edd_license_key=%2$s&download_id=%3$s"
|
909 |
msgstr ""
|
910 |
|
911 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
912 |
msgid "<a href=\"%1$s\">Renew</a> or "
|
913 |
msgstr ""
|
914 |
|
915 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
916 |
-
msgid "
|
|
|
|
|
|
|
917 |
msgstr ""
|
918 |
|
919 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
920 |
msgid "`aihr_deactivate_plugin` requires $file argument"
|
921 |
msgstr ""
|
922 |
|
923 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
924 |
msgid "Unknown"
|
925 |
msgstr ""
|
926 |
|
927 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
928 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
929 |
msgstr ""
|
930 |
|
931 |
-
#: includes/libraries/aihrus-framework/aihrus-framework.php:
|
932 |
msgid "`aihr_deactivate_plugin_do` requires $file argument"
|
933 |
msgstr ""
|
934 |
|
935 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:160
|
936 |
-
msgid "
|
|
|
|
|
937 |
msgstr ""
|
938 |
|
939 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:341
|
940 |
-
msgid "
|
941 |
-
|
942 |
-
|
943 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:661
|
944 |
-
msgid "<a href=\"http://codex.wordpress.org/Function_Reference/absint\">absint</a>."
|
945 |
-
msgstr ""
|
946 |
-
|
947 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:662
|
948 |
-
msgid "Digit-only characters to make a multiple or single entries. Regex <code>#^\\d+(,\\s?\\d+)*$#</code>."
|
949 |
-
msgstr ""
|
950 |
-
|
951 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:663
|
952 |
-
msgid "<a href=\"php.net/manual/en/function.intval.php\">intval</a>."
|
953 |
msgstr ""
|
954 |
|
955 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:664
|
956 |
-
msgid "
|
|
|
957 |
msgstr ""
|
958 |
|
959 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:665
|
960 |
-
msgid "
|
|
|
|
|
961 |
msgstr ""
|
962 |
|
963 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:666
|
964 |
-
msgid "
|
965 |
msgstr ""
|
966 |
|
967 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:667
|
968 |
-
msgid "
|
|
|
|
|
969 |
msgstr ""
|
970 |
|
971 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:668
|
972 |
-
msgid "
|
|
|
|
|
973 |
msgstr ""
|
974 |
|
975 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:669
|
976 |
-
msgid "
|
|
|
977 |
msgstr ""
|
978 |
|
979 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:670
|
980 |
-
msgid "
|
981 |
msgstr ""
|
982 |
|
983 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:671
|
984 |
-
msgid "
|
|
|
|
|
985 |
msgstr ""
|
986 |
|
987 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:672
|
988 |
-
msgid "
|
|
|
|
|
989 |
msgstr ""
|
990 |
|
991 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:673
|
992 |
-
msgid "
|
|
|
993 |
msgstr ""
|
994 |
|
995 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:674
|
996 |
-
msgid "
|
|
|
|
|
997 |
msgstr ""
|
998 |
|
999 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:675
|
1000 |
-
msgid "
|
1001 |
msgstr ""
|
1002 |
|
1003 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1004 |
msgid "Validatation: "
|
1005 |
msgstr ""
|
1006 |
|
1007 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:
|
1008 |
msgid "TBD empty "
|
1009 |
msgstr ""
|
1010 |
|
1011 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:
|
1012 |
msgid "Pick an option"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:
|
1016 |
msgid "Category A, Another category, 123"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:
|
1020 |
msgid "Tag A, Another tag, 123"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
-
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:
|
1024 |
msgid "You decide…"
|
1025 |
msgstr ""
|
1026 |
|
@@ -1045,7 +1127,9 @@ msgid "Export Settings"
|
|
1045 |
msgstr ""
|
1046 |
|
1047 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:86
|
1048 |
-
msgid "
|
|
|
|
|
1049 |
msgstr ""
|
1050 |
|
1051 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:95
|
@@ -1053,11 +1137,14 @@ msgid "Import Settings"
|
|
1053 |
msgstr ""
|
1054 |
|
1055 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:97
|
1056 |
-
msgid "
|
|
|
1057 |
msgstr ""
|
1058 |
|
1059 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:102
|
1060 |
-
msgid "
|
|
|
|
|
1061 |
msgstr ""
|
1062 |
|
1063 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:106
|
@@ -1073,7 +1160,26 @@ msgid "Check this box to reset options to their defaults."
|
|
1073 |
msgstr ""
|
1074 |
|
1075 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:251
|
1076 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1077 |
msgstr ""
|
1078 |
|
1079 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:290
|
@@ -1081,7 +1187,12 @@ msgid "Save Changes"
|
|
1081 |
msgstr ""
|
1082 |
|
1083 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:298
|
1084 |
-
msgid "
|
|
|
|
|
|
|
|
|
|
|
1085 |
msgstr ""
|
1086 |
|
1087 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:309
|
@@ -1129,7 +1240,9 @@ msgid "Old WordPress version detected"
|
|
1129 |
msgstr ""
|
1130 |
|
1131 |
#: includes/requirements.php:64
|
1132 |
-
msgid "
|
|
|
|
|
1133 |
msgstr ""
|
1134 |
|
1135 |
#: templates/testimonial-content.php:9
|
@@ -1151,6 +1264,7 @@ msgstr ""
|
|
1151 |
#: templates/testimonials-paging.php:25
|
1152 |
msgid "»"
|
1153 |
msgstr ""
|
|
|
1154 |
#. Plugin Name of the plugin/theme
|
1155 |
msgid "Testimonials Widget"
|
1156 |
msgstr ""
|
@@ -1160,7 +1274,9 @@ msgid "http://wordpress.org/plugins/testimonials-widget/"
|
|
1160 |
msgstr ""
|
1161 |
|
1162 |
#. Description of the plugin/theme
|
1163 |
-
msgid "
|
|
|
|
|
1164 |
msgstr ""
|
1165 |
|
1166 |
#. Author of the plugin/theme
|
1 |
+
# Copyright (C) 2016 Testimonials Widget
|
2 |
# This file is distributed under the same license as the Testimonials Widget package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Testimonials Widget 3.3.0\n"
|
6 |
+
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/testimonials-"
|
7 |
+
"widget\n"
|
8 |
+
"POT-Creation-Date: 2016-03-28 11:36:07+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2016-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
15 |
|
64 |
msgstr ""
|
65 |
|
66 |
#: includes/class-testimonials-widget-settings.php:97
|
67 |
+
#: includes/class-testimonials-widget.php:139
|
68 |
msgid "Settings"
|
69 |
msgstr ""
|
70 |
|
71 |
#: includes/class-testimonials-widget-settings.php:113
|
72 |
+
#: includes/class-testimonials-widget-settings.php:954
|
73 |
msgid "General"
|
74 |
msgstr ""
|
75 |
|
76 |
#: includes/class-testimonials-widget-settings.php:114
|
77 |
+
#: includes/class-testimonials-widget-settings.php:962
|
78 |
msgid "Fields"
|
79 |
msgstr ""
|
80 |
|
81 |
#: includes/class-testimonials-widget-settings.php:115
|
82 |
+
#: includes/class-testimonials-widget-settings.php:970
|
83 |
msgid "Selection"
|
84 |
msgstr ""
|
85 |
|
86 |
#: includes/class-testimonials-widget-settings.php:116
|
87 |
+
#: includes/class-testimonials-widget-settings.php:978
|
88 |
msgid "Ordering"
|
89 |
msgstr ""
|
90 |
|
91 |
#: includes/class-testimonials-widget-settings.php:117
|
92 |
+
#: includes/class-testimonials-widget-settings.php:986
|
93 |
msgid "Columns"
|
94 |
msgstr ""
|
95 |
|
96 |
#: includes/class-testimonials-widget-settings.php:118
|
97 |
+
#: includes/class-testimonials-widget-settings.php:994
|
98 |
msgid "Post Type"
|
99 |
msgstr ""
|
100 |
|
101 |
#: includes/class-testimonials-widget-settings.php:119
|
102 |
+
#: includes/class-testimonials-widget-settings.php:1002
|
103 |
msgid "Slider Widget"
|
104 |
msgstr ""
|
105 |
|
112 |
msgstr ""
|
113 |
|
114 |
#: includes/class-testimonials-widget-settings.php:139
|
115 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-widget.php:340
|
116 |
msgid "Title"
|
117 |
msgstr ""
|
118 |
|
119 |
#: includes/class-testimonials-widget-settings.php:140
|
120 |
+
#: includes/class-testimonials-widget.php:580
|
121 |
+
#: includes/class-testimonials-widget.php:628
|
122 |
msgid "Testimonials"
|
123 |
msgstr ""
|
124 |
|
125 |
#: includes/class-testimonials-widget-settings.php:146
|
126 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-widget.php:344
|
127 |
msgid "Title Link"
|
128 |
msgstr ""
|
129 |
|
130 |
#: includes/class-testimonials-widget-settings.php:147
|
131 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-widget.php:345
|
132 |
+
msgid ""
|
133 |
+
"URL, path, or post ID to link widget title to. Ex: http://example.com/"
|
134 |
+
"stuff, /testimonials, or 123"
|
135 |
msgstr ""
|
136 |
|
137 |
#: includes/class-testimonials-widget-settings.php:153
|
171 |
msgstr ""
|
172 |
|
173 |
#: includes/class-testimonials-widget-settings.php:186
|
174 |
+
msgid ""
|
175 |
+
"Number of seconds between testimonial rotations or 0 for no rotation at all "
|
176 |
+
"refresh."
|
177 |
msgstr ""
|
178 |
|
179 |
#: includes/class-testimonials-widget-settings.php:193
|
189 |
msgstr ""
|
190 |
|
191 |
#: includes/class-testimonials-widget-settings.php:203
|
192 |
+
msgid ""
|
193 |
+
"Width of each testimonial. Increase to thumbnail width or greater for "
|
194 |
+
"improved looks. Requried for horizontal transitions."
|
195 |
msgstr ""
|
196 |
|
197 |
#: includes/class-testimonials-widget-settings.php:210
|
247 |
msgstr ""
|
248 |
|
249 |
#: includes/class-testimonials-widget-settings.php:257
|
250 |
+
msgid ""
|
251 |
+
"Remove \"Testimonials Not Found\" content when no testimonials are found to "
|
252 |
+
"be displayed."
|
253 |
msgstr ""
|
254 |
|
255 |
#: includes/class-testimonials-widget-settings.php:263
|
277 |
msgstr ""
|
278 |
|
279 |
#: includes/class-testimonials-widget-settings.php:276
|
280 |
+
msgid ""
|
281 |
+
"Adds HTML tag markup per the <a href=\"%s\">Review schema</a> to "
|
282 |
+
"testimonials. Search engines including Bing, Google, Yahoo! and Yandex rely "
|
283 |
+
"on this markup to improve the display of search results."
|
284 |
msgstr ""
|
285 |
|
286 |
#: includes/class-testimonials-widget-settings.php:279
|
324 |
msgstr ""
|
325 |
|
326 |
#: includes/class-testimonials-widget-settings.php:321
|
327 |
+
msgid ""
|
328 |
+
"Some themes use class `.hentry` in a manner that breaks Testimonials' CSS."
|
329 |
msgstr ""
|
330 |
|
331 |
#: includes/class-testimonials-widget-settings.php:328
|
349 |
msgstr ""
|
350 |
|
351 |
#: includes/class-testimonials-widget-settings.php:353
|
352 |
+
msgid "Hide Title Above Content?"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: includes/class-testimonials-widget-settings.php:357
|
356 |
+
msgid "Don't display testimonial title above testimonial content."
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: includes/class-testimonials-widget-settings.php:362
|
360 |
+
#: includes/class-testimonials-widget-settings.php:628
|
361 |
msgid "Hide Author?"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: includes/class-testimonials-widget-settings.php:365
|
365 |
msgid "Don't display testimonial title in cite."
|
366 |
msgstr ""
|
367 |
|
368 |
+
#: includes/class-testimonials-widget-settings.php:370
|
369 |
+
#: includes/class-testimonials-widget-settings.php:638
|
370 |
msgid "Hide Company?"
|
371 |
msgstr ""
|
372 |
|
373 |
+
#: includes/class-testimonials-widget-settings.php:373
|
374 |
msgid "Don't display testimonial company in cite."
|
375 |
msgstr ""
|
376 |
|
377 |
+
#: includes/class-testimonials-widget-settings.php:378
|
378 |
msgid "Hide Content?"
|
379 |
msgstr ""
|
380 |
|
381 |
+
#: includes/class-testimonials-widget-settings.php:381
|
382 |
msgid "Don't display testimonial content in a view."
|
383 |
msgstr ""
|
384 |
|
385 |
+
#: includes/class-testimonials-widget-settings.php:386
|
386 |
+
#: includes/class-testimonials-widget-settings.php:648
|
387 |
msgid "Hide Email?"
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: includes/class-testimonials-widget-settings.php:390
|
391 |
msgid "Don't display or link to testimonial email in cite."
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: includes/class-testimonials-widget-settings.php:395
|
395 |
msgid "Hide Gravatar?"
|
396 |
msgstr ""
|
397 |
|
398 |
+
#: includes/class-testimonials-widget-settings.php:398
|
399 |
msgid "Don't display Gravatar image with testimonial."
|
400 |
msgstr ""
|
401 |
|
402 |
+
#: includes/class-testimonials-widget-settings.php:403
|
403 |
+
#: includes/class-testimonials-widget-settings.php:668
|
404 |
msgid "Hide Image?"
|
405 |
msgstr ""
|
406 |
|
407 |
+
#: includes/class-testimonials-widget-settings.php:406
|
408 |
msgid "Don't display featured image with testimonial."
|
409 |
msgstr ""
|
410 |
|
411 |
+
#: includes/class-testimonials-widget-settings.php:411
|
412 |
msgid "Hide Image in Single View?"
|
413 |
msgstr ""
|
414 |
|
415 |
+
#: includes/class-testimonials-widget-settings.php:419
|
416 |
+
#: includes/class-testimonials-widget-settings.php:677
|
417 |
msgid "Hide Job Title?"
|
418 |
msgstr ""
|
419 |
|
420 |
+
#: includes/class-testimonials-widget-settings.php:422
|
421 |
msgid "Don't display testimonial job title in cite."
|
422 |
msgstr ""
|
423 |
|
424 |
+
#: includes/class-testimonials-widget-settings.php:427
|
425 |
+
#: includes/class-testimonials-widget-settings.php:687
|
426 |
msgid "Hide Location?"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: includes/class-testimonials-widget-settings.php:430
|
430 |
msgid "Don't display testimonial location in cite."
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: includes/class-testimonials-widget-settings.php:435
|
434 |
+
#: includes/class-testimonials-widget-settings.php:706
|
435 |
msgid "Hide URL?"
|
436 |
msgstr ""
|
437 |
|
438 |
+
#: includes/class-testimonials-widget-settings.php:438
|
439 |
msgid "Don't display or link to testimonial URL in cite."
|
440 |
msgstr ""
|
441 |
|
442 |
+
#: includes/class-testimonials-widget-settings.php:448
|
443 |
msgid "Selection Options"
|
444 |
msgstr ""
|
445 |
|
446 |
+
#: includes/class-testimonials-widget-settings.php:454
|
447 |
msgid "Category Filter"
|
448 |
msgstr ""
|
449 |
|
450 |
+
#: includes/class-testimonials-widget-settings.php:455
|
451 |
msgid "Comma separated category names or IDs."
|
452 |
msgstr ""
|
453 |
|
454 |
+
#: includes/class-testimonials-widget-settings.php:462
|
455 |
msgid "Exclude IDs Filter"
|
456 |
msgstr ""
|
457 |
|
458 |
+
#: includes/class-testimonials-widget-settings.php:463
|
459 |
+
#: includes/class-testimonials-widget-settings.php:470
|
460 |
msgid "Comma separated testimonial IDs."
|
461 |
msgstr ""
|
462 |
|
463 |
+
#: includes/class-testimonials-widget-settings.php:469
|
464 |
msgid "Include IDs Filter"
|
465 |
msgstr ""
|
466 |
|
467 |
+
#: includes/class-testimonials-widget-settings.php:476
|
468 |
msgid "Limit"
|
469 |
msgstr ""
|
470 |
|
471 |
+
#: includes/class-testimonials-widget-settings.php:477
|
472 |
msgid "Number of testimonials to select per instance."
|
473 |
msgstr ""
|
474 |
|
475 |
+
#: includes/class-testimonials-widget-settings.php:484
|
476 |
msgid "Require All Tags?"
|
477 |
msgstr ""
|
478 |
|
479 |
+
#: includes/class-testimonials-widget-settings.php:485
|
480 |
msgid "Select only testimonials with all of the given tags."
|
481 |
msgstr ""
|
482 |
|
483 |
+
#: includes/class-testimonials-widget-settings.php:492
|
484 |
msgid "Tags Filter"
|
485 |
msgstr ""
|
486 |
|
487 |
+
#: includes/class-testimonials-widget-settings.php:493
|
488 |
msgid "Comma separated tag slugs or IDs."
|
489 |
msgstr ""
|
490 |
|
491 |
+
#: includes/class-testimonials-widget-settings.php:506
|
492 |
msgid "Ordering Options"
|
493 |
msgstr ""
|
494 |
|
495 |
+
#: includes/class-testimonials-widget-settings.php:512
|
496 |
msgid "ORDER BY"
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: includes/class-testimonials-widget-settings.php:513
|
500 |
msgid "Used when \"Random Order\" is disabled."
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: includes/class-testimonials-widget-settings.php:516
|
504 |
msgid "Testimonial ID"
|
505 |
msgstr ""
|
506 |
|
507 |
+
#: includes/class-testimonials-widget-settings.php:517
|
508 |
+
#: includes/class-testimonials-widget-settings.php:520
|
509 |
+
#: includes/class-testimonials-widget.php:510
|
510 |
+
#: includes/class-testimonials-widget.php:541
|
511 |
+
#: includes/class-testimonials-widget.php:1378
|
512 |
msgid "Author"
|
513 |
msgstr ""
|
514 |
|
515 |
+
#: includes/class-testimonials-widget-settings.php:518
|
516 |
+
#: includes/class-testimonials-widget.php:512
|
517 |
msgid "Date"
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/class-testimonials-widget-settings.php:519
|
521 |
msgid "Menu Order"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: includes/class-testimonials-widget-settings.php:521
|
525 |
msgid "No order"
|
526 |
msgstr ""
|
527 |
|
528 |
+
#: includes/class-testimonials-widget-settings.php:529
|
529 |
msgid "ORDER BY meta_key"
|
530 |
msgstr ""
|
531 |
|
532 |
+
#: includes/class-testimonials-widget-settings.php:530
|
533 |
+
msgid ""
|
534 |
+
"Used when \"Random Order\" is disabled and sorting by a testimonials meta "
|
535 |
+
"key is needed. Overrides ORDER BY."
|
536 |
msgstr ""
|
537 |
|
538 |
+
#: includes/class-testimonials-widget-settings.php:533
|
539 |
msgid "None"
|
540 |
msgstr ""
|
541 |
|
542 |
+
#: includes/class-testimonials-widget-settings.php:534
|
543 |
+
#: includes/class-testimonials-widget.php:546
|
544 |
+
#: includes/class-testimonials-widget.php:1384
|
545 |
msgid "Job Title"
|
546 |
msgstr ""
|
547 |
|
548 |
+
#: includes/class-testimonials-widget-settings.php:535
|
549 |
+
#: includes/class-testimonials-widget.php:561
|
550 |
+
#: includes/class-testimonials-widget.php:1402
|
551 |
msgid "Email"
|
552 |
msgstr ""
|
553 |
|
554 |
+
#: includes/class-testimonials-widget-settings.php:536
|
555 |
+
#: includes/class-testimonials-widget.php:551
|
556 |
+
#: includes/class-testimonials-widget.php:1390
|
557 |
msgid "Location"
|
558 |
msgstr ""
|
559 |
|
560 |
+
#: includes/class-testimonials-widget-settings.php:537
|
561 |
+
#: includes/class-testimonials-widget.php:556
|
562 |
+
#: includes/class-testimonials-widget.php:1396
|
563 |
msgid "Company"
|
564 |
msgstr ""
|
565 |
|
566 |
+
#: includes/class-testimonials-widget-settings.php:538
|
567 |
+
#: includes/class-testimonials-widget.php:566
|
568 |
+
#: includes/class-testimonials-widget.php:1408
|
569 |
msgid "URL"
|
570 |
msgstr ""
|
571 |
|
572 |
+
#: includes/class-testimonials-widget-settings.php:545
|
573 |
msgid "ORDER BY Order"
|
574 |
msgstr ""
|
575 |
|
576 |
+
#: includes/class-testimonials-widget-settings.php:548
|
577 |
msgid "Descending"
|
578 |
msgstr ""
|
579 |
|
580 |
+
#: includes/class-testimonials-widget-settings.php:549
|
581 |
msgid "Ascending"
|
582 |
msgstr ""
|
583 |
|
584 |
+
#: includes/class-testimonials-widget-settings.php:557
|
585 |
msgid "Random Order?"
|
586 |
msgstr ""
|
587 |
|
588 |
+
#: includes/class-testimonials-widget-settings.php:558
|
589 |
+
msgid ""
|
590 |
+
"If checked, ignores ORDER BY, ORDER BY meta_key, and ORDER BY Order. Widgets "
|
591 |
+
"are random by default automatically."
|
592 |
msgstr ""
|
593 |
|
594 |
+
#: includes/class-testimonials-widget-settings.php:571
|
595 |
msgid "Allow Comments?"
|
596 |
msgstr ""
|
597 |
|
598 |
+
#: includes/class-testimonials-widget-settings.php:572
|
599 |
+
msgid ""
|
600 |
+
"Only affects the Testimonials post edit page. Your theme controls the front-"
|
601 |
+
"end view."
|
602 |
msgstr ""
|
603 |
|
604 |
+
#: includes/class-testimonials-widget-settings.php:579
|
605 |
msgid "URL slug-name for <a href=\"%1s\">testimonials archive</a> page."
|
606 |
msgstr ""
|
607 |
|
608 |
+
#: includes/class-testimonials-widget-settings.php:585
|
609 |
msgid "Archive Page URL"
|
610 |
msgstr ""
|
611 |
|
612 |
+
#: includes/class-testimonials-widget-settings.php:595
|
613 |
msgid "Disable Default Taxonomies?"
|
614 |
msgstr ""
|
615 |
|
616 |
+
#: includes/class-testimonials-widget-settings.php:598
|
617 |
+
msgid ""
|
618 |
+
"If checked, use Testimonials' own category and tag taxonomies than "
|
619 |
+
"WordPress' defaults."
|
620 |
msgstr ""
|
621 |
|
622 |
+
#: includes/class-testimonials-widget-settings.php:604
|
623 |
msgid "Include testimonials in archive and category views."
|
624 |
msgstr ""
|
625 |
|
626 |
+
#: includes/class-testimonials-widget-settings.php:607
|
627 |
msgid "Enable archives view?"
|
628 |
msgstr ""
|
629 |
|
630 |
+
#: includes/class-testimonials-widget-settings.php:613
|
631 |
+
msgid ""
|
632 |
+
"URL slug-name for testimonial view pages. Shouldn't be the same as the "
|
633 |
+
"Archive Page URL nor should it match a page URL slug."
|
634 |
msgstr ""
|
635 |
|
636 |
+
#: includes/class-testimonials-widget-settings.php:617
|
637 |
msgid "Testimonial Page URL"
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: includes/class-testimonials-widget-settings.php:658
|
641 |
msgid "Hide ID?"
|
642 |
msgstr ""
|
643 |
|
644 |
+
#: includes/class-testimonials-widget-settings.php:697
|
645 |
msgid "Hide Shortcode?"
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: includes/class-testimonials-widget-settings.php:717
|
649 |
+
#: includes/class-testimonials-widget-settings.php:1010
|
650 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:65
|
651 |
msgid "Reset"
|
652 |
msgstr ""
|
653 |
|
654 |
+
#: includes/class-testimonials-widget-settings.php:940
|
655 |
+
msgid ""
|
656 |
+
"These Testimonials Settings establish the default option values for "
|
657 |
+
"shortcodes, theme functions, and widget instances. Widgets, once created no "
|
658 |
+
"longer inherit these global settings. Therefore, you'll need to update each "
|
659 |
+
"widget with the new settings. It might be easier to delete the widget and "
|
660 |
+
"then recreate it."
|
661 |
msgstr ""
|
662 |
|
663 |
+
#: includes/class-testimonials-widget-settings.php:942
|
664 |
msgid "Shortcode option names are listed below each entry."
|
665 |
msgstr ""
|
666 |
|
667 |
+
#: includes/class-testimonials-widget-settings.php:945
|
668 |
msgid "View the <a href=\"%s\">Testimonials documentation</a>."
|
669 |
msgstr ""
|
670 |
|
671 |
+
#: includes/class-testimonials-widget-settings.php:955
|
672 |
msgid "General options."
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: includes/class-testimonials-widget-settings.php:963
|
676 |
msgid "Show or hide fields."
|
677 |
msgstr ""
|
678 |
|
679 |
+
#: includes/class-testimonials-widget-settings.php:971
|
680 |
msgid "Options used to select testimonials."
|
681 |
msgstr ""
|
682 |
|
683 |
+
#: includes/class-testimonials-widget-settings.php:979
|
684 |
msgid "Options used to determine displayed testimonials ordering."
|
685 |
msgstr ""
|
686 |
|
687 |
+
#: includes/class-testimonials-widget-settings.php:987
|
688 |
msgid "Allowed columns to display on edit page."
|
689 |
msgstr ""
|
690 |
|
691 |
+
#: includes/class-testimonials-widget-settings.php:995
|
692 |
msgid "Archive and singular page URL related testimonials options."
|
693 |
msgstr ""
|
694 |
|
695 |
+
#: includes/class-testimonials-widget-settings.php:1003
|
696 |
msgid "Options related to showing testimonials in widgets."
|
697 |
msgstr ""
|
698 |
|
699 |
+
#: includes/class-testimonials-widget-settings.php:1011
|
700 |
msgid "Backwards compatibility, import/export options, and reset options."
|
701 |
msgstr ""
|
702 |
|
726 |
|
727 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:63
|
728 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:70
|
729 |
+
#: includes/class-testimonials-widget.php:517
|
730 |
+
#: includes/class-testimonials-widget.php:520
|
731 |
msgid "Category"
|
732 |
msgstr ""
|
733 |
|
734 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:64
|
735 |
#: includes/class-testimonials-widget-tag-cloud-widget.php:71
|
736 |
+
#: includes/class-testimonials-widget.php:518
|
737 |
+
#: includes/class-testimonials-widget.php:521
|
738 |
msgid "Tags"
|
739 |
msgstr ""
|
740 |
|
742 |
msgid "Taxonomy"
|
743 |
msgstr ""
|
744 |
|
745 |
+
#: includes/class-testimonials-widget.php:371
|
746 |
+
msgid ""
|
747 |
+
"If your Testimonials display has gone to funky town, please <a href=\"%s"
|
748 |
+
"\">read the FAQ</a> about possible CSS fixes."
|
749 |
msgstr ""
|
750 |
|
751 |
+
#: includes/class-testimonials-widget.php:511
|
752 |
msgid "Published by"
|
753 |
msgstr ""
|
754 |
|
755 |
+
#: includes/class-testimonials-widget.php:526
|
756 |
msgid "ID"
|
757 |
msgstr ""
|
758 |
|
759 |
+
#: includes/class-testimonials-widget.php:531
|
760 |
msgid "Image"
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: includes/class-testimonials-widget.php:536
|
764 |
msgid "Shortcodes"
|
765 |
msgstr ""
|
766 |
|
767 |
+
#: includes/class-testimonials-widget.php:577
|
768 |
msgid "Add New"
|
769 |
msgstr ""
|
770 |
|
771 |
+
#: includes/class-testimonials-widget.php:578
|
772 |
+
#: includes/class-testimonials-widget.php:581
|
773 |
msgid "Add New Testimonial"
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: includes/class-testimonials-widget.php:579
|
777 |
msgid "Edit Testimonial"
|
778 |
msgstr ""
|
779 |
|
780 |
+
#: includes/class-testimonials-widget.php:582
|
781 |
+
#: includes/class-testimonials-widget.php:884
|
782 |
msgid "No testimonials found"
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: includes/class-testimonials-widget.php:583
|
786 |
msgid "No testimonials found in Trash"
|
787 |
msgstr ""
|
788 |
|
789 |
+
#: includes/class-testimonials-widget.php:585
|
790 |
msgid "Search Testimonials"
|
791 |
msgstr ""
|
792 |
|
793 |
+
#: includes/class-testimonials-widget.php:586
|
794 |
+
#: includes/class-testimonials-widget.php:1469
|
795 |
+
#: includes/class-testimonials-widget.php:1830
|
796 |
msgid "Testimonial"
|
797 |
msgstr ""
|
798 |
|
799 |
+
#: includes/class-testimonials-widget.php:587
|
800 |
msgid "View Testimonial"
|
801 |
msgstr ""
|
802 |
|
803 |
+
#: includes/class-testimonials-widget.php:1381
|
804 |
msgid "Use when the testimonial title is not the authors' name."
|
805 |
msgstr ""
|
806 |
|
807 |
+
#: includes/class-testimonials-widget.php:1405
|
808 |
+
msgid ""
|
809 |
+
"If an email is provided, but not an image, a Gravatar icon will be attempted "
|
810 |
+
"to be loaded."
|
811 |
msgstr ""
|
812 |
|
813 |
+
#: includes/class-testimonials-widget.php:1420
|
814 |
msgid "Testimonial Data"
|
815 |
msgstr ""
|
816 |
|
817 |
+
#: includes/class-testimonials-widget.php:1444
|
818 |
msgid "Testimonial updated. <a href=\"%s\">View testimonial</a>"
|
819 |
msgstr ""
|
820 |
|
821 |
+
#: includes/class-testimonials-widget.php:1445
|
822 |
msgid "Custom field updated."
|
823 |
msgstr ""
|
824 |
|
825 |
+
#: includes/class-testimonials-widget.php:1446
|
826 |
msgid "Custom field deleted."
|
827 |
msgstr ""
|
828 |
|
829 |
+
#: includes/class-testimonials-widget.php:1447
|
830 |
msgid "Testimonial updated."
|
831 |
msgstr ""
|
832 |
|
833 |
#. translators: %s: date and time of the revision
|
834 |
+
#: includes/class-testimonials-widget.php:1449
|
|
|
835 |
msgid "Testimonial restored to revision from %s"
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: includes/class-testimonials-widget.php:1450
|
839 |
msgid "Testimonial published. <a href=\"%s\">View testimonial</a>"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: includes/class-testimonials-widget.php:1451
|
843 |
msgid "Testimonial saved."
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: includes/class-testimonials-widget.php:1452
|
847 |
+
msgid ""
|
848 |
+
"Testimonial submitted. <a target=\"_blank\" href=\"%s\">Preview testimonial</"
|
849 |
+
"a>"
|
850 |
msgstr ""
|
851 |
|
852 |
+
#: includes/class-testimonials-widget.php:1453
|
853 |
+
msgid ""
|
854 |
+
"Testimonial scheduled for: <strong>%1$s</strong>. <a target=\"_blank\" href="
|
855 |
+
"\"%2$s\">Preview testimonial</a>"
|
856 |
msgstr ""
|
857 |
|
858 |
+
#: includes/class-testimonials-widget.php:1454
|
859 |
+
msgid ""
|
860 |
+
"Testimonial draft updated. <a target=\"_blank\" href=\"%s\">Preview "
|
861 |
+
"testimonial</a>"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: includes/class-testimonials-widget.php:1725
|
865 |
+
msgid ""
|
866 |
+
"If your Testimonials display has gone to funky town, please <a href=\"%s"
|
867 |
+
"\">read the FAQ</a> about possible fixes."
|
868 |
msgstr ""
|
869 |
|
870 |
+
#: includes/class-testimonials-widget.php:1744
|
871 |
msgid "Failed version check"
|
872 |
msgstr ""
|
873 |
|
874 |
+
#: includes/class-testimonials-widget.php:1775
|
875 |
msgid "Shortcode"
|
876 |
msgstr ""
|
877 |
|
878 |
+
#: includes/class-testimonials-widget.php:2213
|
879 |
+
#: includes/class-testimonials-widget.php:2286
|
880 |
msgid "Used with: "
|
881 |
msgstr ""
|
882 |
|
883 |
+
#: includes/class-testimonials-widget.php:2250
|
884 |
+
#: includes/class-testimonials-widget.php:2314
|
885 |
msgid "Options: "
|
886 |
msgstr ""
|
887 |
|
888 |
+
#: includes/class-testimonials-widget.php:2255
|
889 |
+
#: includes/class-testimonials-widget.php:2319
|
890 |
msgid "Usage: "
|
891 |
msgstr ""
|
892 |
|
896 |
|
897 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:90
|
898 |
#: includes/requirements.php:62
|
899 |
+
msgid ""
|
900 |
+
"<a href=\"%1$s\">Update plugins</a>. <a href=\"%2$s\">More information</a>."
|
901 |
msgstr ""
|
902 |
|
903 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:101
|
905 |
msgstr ""
|
906 |
|
907 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:106
|
908 |
+
msgid ""
|
909 |
+
"Plugin \"%1$s\" has been deactivated as it requires Aihrus Framework %2$s or "
|
910 |
+
"newer. You're running Aihrus Framework %4$s. Once corrected, \"%1$s\" can be "
|
911 |
+
"activated. %5$s %3$s"
|
912 |
msgstr ""
|
913 |
|
914 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:115
|
916 |
msgstr ""
|
917 |
|
918 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:154
|
919 |
+
msgid ""
|
920 |
+
"Plugin \"%1$s\" has been deactivated as it requires PHP %2$s or newer. "
|
921 |
+
"You're running PHP %4$s. Once corrected, \"%1$s\" can be activated. <a href="
|
922 |
+
"\"%3$s\">More information</a>."
|
923 |
msgstr ""
|
924 |
|
925 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:163
|
927 |
msgstr ""
|
928 |
|
929 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:206
|
930 |
+
msgid ""
|
931 |
+
"Plugin \"%1$s\" has been deactivated as it requires WordPress %2$s or newer. "
|
932 |
+
"You're running WordPress %4$s. Once corrected, \"%1$s\" can be activated. <a "
|
933 |
+
"href=\"%3$s\">Update WordPress</a>."
|
|
|
|
|
|
|
|
|
|
|
934 |
msgstr ""
|
935 |
|
936 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:236
|
937 |
+
msgid ""
|
938 |
+
"Plugin \"%2$s\" has been deactivated. Please install and activate \"%3$s\" "
|
939 |
+
"version %1$s or newer before activating \"%2$s\"."
|
940 |
msgstr ""
|
941 |
|
942 |
#: includes/libraries/aihrus-framework/aihrus-framework.php:250
|
943 |
+
msgid ""
|
944 |
+
"<a href=\"%1$s\">%2$s > Settings</a>, <em>Premium</em> tab, <em>License "
|
945 |
+
"Key</em>"
|
|
|
|
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:255
|
949 |
msgid "<a href=\"%s\">Where's my license key?</a>"
|
950 |
msgstr ""
|
951 |
|
952 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:260
|
953 |
msgid "<a href=\"%1$s\">Purchase</a>"
|
954 |
msgstr ""
|
955 |
|
956 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:268
|
957 |
msgid "%1$s/checkout/?edd_license_key=%2$s&download_id=%3$s"
|
958 |
msgstr ""
|
959 |
|
960 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:272
|
961 |
msgid "<a href=\"%1$s\">Renew</a> or "
|
962 |
msgstr ""
|
963 |
|
964 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:277
|
965 |
+
msgid ""
|
966 |
+
"Plugin \"%1$s\" requires license activation for software updates and "
|
967 |
+
"support. Please activate the license via %2$s. See %3$s for help. "
|
968 |
+
"Alternately, %5$s%4$s a %1$s license."
|
969 |
msgstr ""
|
970 |
|
971 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:287
|
972 |
msgid "`aihr_deactivate_plugin` requires $file argument"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:326
|
976 |
msgid "Unknown"
|
977 |
msgstr ""
|
978 |
|
979 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:333
|
980 |
+
msgid ""
|
981 |
+
"Plugin \"%1$s\" has been deactivated due to \"%2$s\". Once corrected, \"%1$s"
|
982 |
+
"\" can be activated.</p><p>If you want to revert \"%1$s\", look for <a href="
|
983 |
+
"\"%3$s\">older versions on WordPress</a> or <a href=\"mailto:"
|
984 |
+
"support@axelerant.com?subject=Old+Plugin+Version+Request\">email Axelerant "
|
985 |
+
"support</a> if this is a premium plugin."
|
986 |
msgstr ""
|
987 |
|
988 |
+
#: includes/libraries/aihrus-framework/aihrus-framework.php:344
|
989 |
msgid "`aihr_deactivate_plugin_do` requires $file argument"
|
990 |
msgstr ""
|
991 |
|
992 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:160
|
993 |
+
msgid ""
|
994 |
+
"Please donate $5 towards ongoing free support and development of the \"%1$s"
|
995 |
+
"\" plugin. %2$s"
|
996 |
msgstr ""
|
997 |
|
998 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:341
|
999 |
+
msgid ""
|
1000 |
+
"cURL is not installed and file_get_contents is not accessible. Unable to "
|
1001 |
+
"retrieve URL %1$s."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1002 |
msgstr ""
|
1003 |
|
1004 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:664
|
1005 |
+
msgid ""
|
1006 |
+
"<a href=\"http://codex.wordpress.org/Function_Reference/absint\">absint</a>."
|
1007 |
msgstr ""
|
1008 |
|
1009 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:665
|
1010 |
+
msgid ""
|
1011 |
+
"Digit-only characters to make a multiple or single entries. Regex <code>#^\\d"
|
1012 |
+
"+(,\\s?\\d+)*$#</code>."
|
1013 |
msgstr ""
|
1014 |
|
1015 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:666
|
1016 |
+
msgid "<a href=\"php.net/manual/en/function.intval.php\">intval</a>."
|
1017 |
msgstr ""
|
1018 |
|
1019 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:667
|
1020 |
+
msgid ""
|
1021 |
+
"Values like true, 'true', 1, 'on', and 'yes' are <strong>true</strong>; "
|
1022 |
+
"otherwise <strong>false</strong>."
|
1023 |
msgstr ""
|
1024 |
|
1025 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:668
|
1026 |
+
msgid ""
|
1027 |
+
"An <a href=\"php.net/manual/en/function.intval.php\">intval</a> greater than "
|
1028 |
+
"zero."
|
1029 |
msgstr ""
|
1030 |
|
1031 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:669
|
1032 |
+
msgid ""
|
1033 |
+
"A non-zero <a href=\"php.net/manual/en/function.intval.php\">intval</a>."
|
1034 |
msgstr ""
|
1035 |
|
1036 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:670
|
1037 |
+
msgid "SQL ordering \"ASC\" or \"DESC\". Regex <code>#^desc|asc$#i</code>."
|
1038 |
msgstr ""
|
1039 |
|
1040 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:671
|
1041 |
+
msgid ""
|
1042 |
+
"<a href=\"http://codex.wordpress.org/Function_Reference/sanitize_title"
|
1043 |
+
"\">sanitize_title</a>."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:672
|
1047 |
+
msgid ""
|
1048 |
+
"Word-only characters including a hyphen to make a single term. Regex <code>#^"
|
1049 |
+
"[\\w-]+$#</code>."
|
1050 |
msgstr ""
|
1051 |
|
1052 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:673
|
1053 |
+
msgid ""
|
1054 |
+
"Word-only characters to make a single term. Regex <code>#^\\w+$#</code>."
|
1055 |
msgstr ""
|
1056 |
|
1057 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:674
|
1058 |
+
msgid ""
|
1059 |
+
"Word-only characters including hyphens and spaces to make a multiple or "
|
1060 |
+
"single terms. Regex <code>#^(([\\w- ]+)(,\\s?)?)+$#</code>."
|
1061 |
msgstr ""
|
1062 |
|
1063 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:675
|
1064 |
+
msgid "Current license."
|
1065 |
msgstr ""
|
1066 |
|
1067 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:676
|
1068 |
+
msgid ""
|
1069 |
+
"<a href=\"http://php.net/manual/en/filter.filters.validate.php\">filter_var"
|
1070 |
+
"( $url, FILTER_VALIDATE_URL )</a>."
|
1071 |
+
msgstr ""
|
1072 |
+
|
1073 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:677
|
1074 |
+
msgid ""
|
1075 |
+
"<a href=\"http://codex.wordpress.org/Function_Reference/wp_kses_data"
|
1076 |
+
"\">wp_kses_data</a>."
|
1077 |
+
msgstr ""
|
1078 |
+
|
1079 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:678
|
1080 |
+
msgid ""
|
1081 |
+
"<a href=\"http://codex.wordpress.org/Function_Reference/wp_kses_post"
|
1082 |
+
"\">wp_kses_post</a>."
|
1083 |
+
msgstr ""
|
1084 |
+
|
1085 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:683
|
1086 |
msgid "Validatation: "
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:732
|
1090 |
msgid "TBD empty "
|
1091 |
msgstr ""
|
1092 |
|
1093 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:738
|
1094 |
msgid "Pick an option"
|
1095 |
msgstr ""
|
1096 |
|
1097 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:761
|
1098 |
msgid "Category A, Another category, 123"
|
1099 |
msgstr ""
|
1100 |
|
1101 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:763
|
1102 |
msgid "Tag A, Another tag, 123"
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#: includes/libraries/aihrus-framework/includes/class-aihrus-common.php:766
|
1106 |
msgid "You decide…"
|
1107 |
msgstr ""
|
1108 |
|
1127 |
msgstr ""
|
1128 |
|
1129 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:86
|
1130 |
+
msgid ""
|
1131 |
+
"These are your current settings in a serialized format. Copy the contents to "
|
1132 |
+
"make a backup of your settings."
|
1133 |
msgstr ""
|
1134 |
|
1135 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:95
|
1137 |
msgstr ""
|
1138 |
|
1139 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:97
|
1140 |
+
msgid ""
|
1141 |
+
"Paste new serialized settings here to overwrite your current configuration."
|
1142 |
msgstr ""
|
1143 |
|
1144 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:102
|
1145 |
+
msgid ""
|
1146 |
+
"Delete all %s data and options from database on plugin deletion. Even if "
|
1147 |
+
"this option isn't checked, WordPress will still give a data deletion warning."
|
1148 |
msgstr ""
|
1149 |
|
1150 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:106
|
1160 |
msgstr ""
|
1161 |
|
1162 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:251
|
1163 |
+
msgid ""
|
1164 |
+
"<img class=\"size-medium\" src=\"%5$s\" alt=\"Axelerant 2015 Retreat in Goa"
|
1165 |
+
"\" width=\"640\" height=\"327\" /><p>Axelerant is a full-service software "
|
1166 |
+
"development company that focuses on open-source technologies. Top technical "
|
1167 |
+
"talent who are passionate, giving, and communicative demonstrates our "
|
1168 |
+
"backbone. We provide high-end Strategy, Implementation, and Support services "
|
1169 |
+
"for our clients and agencies with whom we partner.</p><p>Our team members "
|
1170 |
+
"span the world, and we follow agile delivery and working processes. Further, "
|
1171 |
+
"we’re actively giving back to many open-source communities and have fostered "
|
1172 |
+
"an innovative, incubator culture to give ideas a chance to succeed.</"
|
1173 |
+
"p><h2>Foundations of Axelerant</h2><ul><li><b>Passion</b> – Our passion is "
|
1174 |
+
"so strong, we’re selfdirected to make the difficult easy.</"
|
1175 |
+
"li><li><b>Openness</b> – We’re so honest and painstaking in our discussions "
|
1176 |
+
"that there are no questions left, and standards are created.</"
|
1177 |
+
"li><li><b>Giving</b> – We’re excited to share our results to inspire all to "
|
1178 |
+
"surpass them.</li></ul><h3>Learn More About Axelerant</h3><ul><li><a href="
|
1179 |
+
"\"%1$s\">Axelerant Team</a></li><li><a href=\"%2$s\">Giving Back</a></"
|
1180 |
+
"li><li><a href=\"%7$s\">Inside Axelerant</a></li><li><a href=\"%3$s\">Our "
|
1181 |
+
"Services</a></li><li><a href=\"%4$s\">Testimonials</a></li><li><a href=\"%6$s"
|
1182 |
+
"\">Careers</a></li></ul>"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:290
|
1187 |
msgstr ""
|
1188 |
|
1189 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:298
|
1190 |
+
msgid ""
|
1191 |
+
"If you like this plugin, please <a href=\"%1$s\" title=\"Donate for Good "
|
1192 |
+
"Karma\"><img src=\"%2$s\" border=\"0\" alt=\"Donate for Good Karma\" /></a> "
|
1193 |
+
"or <a href=\"%3$s\" title=\"purchase premium WordPress plugins from "
|
1194 |
+
"Axelerant \">purchase the Premium version</a> to help fund further "
|
1195 |
+
"development and <a href=\"%4$s\" title=\"Support forums\">support</a>."
|
1196 |
msgstr ""
|
1197 |
|
1198 |
#: includes/libraries/aihrus-framework/includes/class-aihrus-settings.php:309
|
1240 |
msgstr ""
|
1241 |
|
1242 |
#: includes/requirements.php:64
|
1243 |
+
msgid ""
|
1244 |
+
"Plugin \"%1$s\" has been deactivated as it requires a current Aihrus "
|
1245 |
+
"Framework. Once corrected, \"%1$s\" can be activated. %2$s"
|
1246 |
msgstr ""
|
1247 |
|
1248 |
#: templates/testimonial-content.php:9
|
1264 |
#: templates/testimonials-paging.php:25
|
1265 |
msgid "»"
|
1266 |
msgstr ""
|
1267 |
+
|
1268 |
#. Plugin Name of the plugin/theme
|
1269 |
msgid "Testimonials Widget"
|
1270 |
msgstr ""
|
1274 |
msgstr ""
|
1275 |
|
1276 |
#. Description of the plugin/theme
|
1277 |
+
msgid ""
|
1278 |
+
"Easily add social proofing to your website with Testimonials Widget. List or "
|
1279 |
+
"slide reviews via functions, shortcodes, or widgets."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
#. Author of the plugin/theme
|
readme.txt
CHANGED
@@ -4,8 +4,8 @@ Contributors: comprock,saurabhd,subharanjan
|
|
4 |
Donate link: https://axelerant.com/about-axelerant/donate/
|
5 |
Tags: axelerant, client, customer, portfolio, quote, quotes, random, recommendation, reference, review, reviews, slider, testimonial, testimonials, wpml
|
6 |
Requires at least: 3.9.2
|
7 |
-
Tested up to: 4.
|
8 |
-
Stable tag: 3.
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
@@ -70,6 +70,10 @@ Widgets display content sans `wpautop` formatting. This means there's no forced
|
|
70 |
|
71 |
The single testimonial view supports image, author, title, location, email, company and URL details with optional Review schema.
|
72 |
|
|
|
|
|
|
|
|
|
73 |
= Shortcodes =
|
74 |
|
75 |
* `[testimonials]` - Testimonials listings with paging
|
4 |
Donate link: https://axelerant.com/about-axelerant/donate/
|
5 |
Tags: axelerant, client, customer, portfolio, quote, quotes, random, recommendation, reference, review, reviews, slider, testimonial, testimonials, wpml
|
6 |
Requires at least: 3.9.2
|
7 |
+
Tested up to: 4.4.2
|
8 |
+
Stable tag: 3.3.0
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
|
70 |
|
71 |
The single testimonial view supports image, author, title, location, email, company and URL details with optional Review schema.
|
72 |
|
73 |
+
As per Google's quality guidelines, marking up irrelevant or misleading content, such as fake reviews or content unrelated to the focus of a page may lead to review stars removed.
|
74 |
+
|
75 |
+
As per John Mueller, Webmaster Trends Analyst at Google, testimonials are not reviews, and it doesn't make sense to use review schema for them. Please use "Enable Review Schema" option wisely to stay "compliant" with Google's recommendations.
|
76 |
+
|
77 |
= Shortcodes =
|
78 |
|
79 |
* `[testimonials]` - Testimonials listings with paging
|
templates/testimonial-cite.php
CHANGED
@@ -17,43 +17,43 @@ $cite = '';
|
|
17 |
$done_url = false;
|
18 |
|
19 |
if ( $do_source && $do_email ) {
|
20 |
-
$cite .=
|
21 |
} elseif ( $do_source && ! $do_company && $do_url ) {
|
22 |
$done_url = true;
|
23 |
|
24 |
-
$cite .=
|
25 |
} elseif ( $do_source ) {
|
26 |
-
$cite .=
|
27 |
} elseif ( $do_email ) {
|
28 |
-
$cite .=
|
29 |
}
|
30 |
|
31 |
if ( $do_title && $cite ) {
|
32 |
-
$cite .=
|
33 |
}
|
34 |
|
35 |
if ( $do_title ) {
|
36 |
-
$cite .=
|
37 |
}
|
38 |
|
39 |
if ( ( $do_company || ( $do_url && ! $done_url ) ) && $cite ) {
|
40 |
-
$cite .=
|
41 |
}
|
42 |
|
43 |
if ( $do_company && $do_url ) {
|
44 |
-
$cite .=
|
45 |
} elseif ( $do_company ) {
|
46 |
-
$cite .=
|
47 |
} elseif ( $do_url && ! $done_url ) {
|
48 |
-
$cite .=
|
49 |
}
|
50 |
|
51 |
if ( $do_location && $cite ) {
|
52 |
-
$cite .=
|
53 |
}
|
54 |
|
55 |
if ( $do_location ) {
|
56 |
-
$cite .=
|
57 |
}
|
58 |
|
59 |
if ( ! empty( $cite ) ) {
|
17 |
$done_url = false;
|
18 |
|
19 |
if ( $do_source && $do_email ) {
|
20 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'author-email' );
|
21 |
} elseif ( $do_source && ! $do_company && $do_url ) {
|
22 |
$done_url = true;
|
23 |
|
24 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'author-url' );
|
25 |
} elseif ( $do_source ) {
|
26 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'author' );
|
27 |
} elseif ( $do_email ) {
|
28 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'email' );
|
29 |
}
|
30 |
|
31 |
if ( $do_title && $cite ) {
|
32 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'join-title' );
|
33 |
}
|
34 |
|
35 |
if ( $do_title ) {
|
36 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'job-title' );
|
37 |
}
|
38 |
|
39 |
if ( ( $do_company || ( $do_url && ! $done_url ) ) && $cite ) {
|
40 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'join-company' );
|
41 |
}
|
42 |
|
43 |
if ( $do_company && $do_url ) {
|
44 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'company-url' );
|
45 |
} elseif ( $do_company ) {
|
46 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'company' );
|
47 |
} elseif ( $do_url && ! $done_url ) {
|
48 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'url' );
|
49 |
}
|
50 |
|
51 |
if ( $do_location && $cite ) {
|
52 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'join-location' );
|
53 |
}
|
54 |
|
55 |
if ( $do_location ) {
|
56 |
+
$cite .= Axl_Testimonials_Widget::get_template_part( 'span', 'location' );
|
57 |
}
|
58 |
|
59 |
if ( ! empty( $cite ) ) {
|
templates/testimonial-content.php
CHANGED
@@ -5,23 +5,31 @@ $atts = $tw_template_args['atts'];
|
|
5 |
$testimonial = $tw_template_args['testimonial'];
|
6 |
$widget_number = $tw_template_args['widget_number'];
|
7 |
|
8 |
-
$char_limit
|
9 |
-
$content_more
|
10 |
-
$content_more
|
11 |
-
$do_content
|
12 |
-
$
|
|
|
13 |
|
14 |
if ( $do_content ) {
|
15 |
$content = $testimonial['testimonial_content'];
|
16 |
-
$content =
|
17 |
if ( $char_limit ) {
|
18 |
-
$content =
|
19 |
$content = force_balance_tags( $content );
|
20 |
}
|
21 |
|
22 |
$content = apply_filters( 'tw_content', $content, $widget_number, $testimonial, $atts );
|
23 |
$content = make_clickable( $content );
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
if ( ! $use_quote_tag ) {
|
26 |
?>
|
27 |
<blockquote><?php echo $content; ?></blockquote>
|
5 |
$testimonial = $tw_template_args['testimonial'];
|
6 |
$widget_number = $tw_template_args['widget_number'];
|
7 |
|
8 |
+
$char_limit = $atts['char_limit'];
|
9 |
+
$content_more = apply_filters( 'tw_content_more', esc_html__( '…', 'testimonials-widget' ) );
|
10 |
+
$content_more .= Axl_Testimonials_Widget::$tag_close_quote;
|
11 |
+
$do_content = ! $atts['hide_content'] && ! empty( $testimonial['testimonial_content'] );
|
12 |
+
$do_title = ! $atts['hide_source_title'] && ! empty( $testimonial['testimonial_source'] );
|
13 |
+
$use_quote_tag = $atts['use_quote_tag'];
|
14 |
|
15 |
if ( $do_content ) {
|
16 |
$content = $testimonial['testimonial_content'];
|
17 |
+
$content = Axl_Testimonials_Widget::format_content( $content, $widget_number, $atts );
|
18 |
if ( $char_limit ) {
|
19 |
+
$content = Axl_Testimonials_Widget::testimonials_truncate( $content, $char_limit, $content_more );
|
20 |
$content = force_balance_tags( $content );
|
21 |
}
|
22 |
|
23 |
$content = apply_filters( 'tw_content', $content, $widget_number, $testimonial, $atts );
|
24 |
$content = make_clickable( $content );
|
25 |
|
26 |
+
//Prepand Title to content if "Hide Title Above Content?" is active from Testimonials Widget settings.
|
27 |
+
if ( $do_title && ! is_single() ) {
|
28 |
+
$testimonial_title = $testimonial['testimonial_source'];
|
29 |
+
$testimonial_title_html = '<span class="list-title">' . $testimonial_title . '</span><br/>';
|
30 |
+
$content = $testimonial_title_html . $content;
|
31 |
+
}
|
32 |
+
|
33 |
if ( ! $use_quote_tag ) {
|
34 |
?>
|
35 |
<blockquote><?php echo $content; ?></blockquote>
|
templates/testimonial-open.php
CHANGED
@@ -43,4 +43,4 @@ if ( $atts['remove_hentry'] ) {
|
|
43 |
$class = apply_filters( 'tw_get_testimonial_html_class', $class, $testimonial, $atts, $is_list, $is_first, $widget_number );
|
44 |
?>
|
45 |
<div class="<?php echo $class; ?>" style="<?php echo $style; ?>">
|
46 |
-
<!-- <?php echo
|
43 |
$class = apply_filters( 'tw_get_testimonial_html_class', $class, $testimonial, $atts, $is_list, $is_first, $widget_number );
|
44 |
?>
|
45 |
<div class="<?php echo $class; ?>" style="<?php echo $style; ?>">
|
46 |
+
<!-- <?php echo Axl_Testimonials_Widget::ID; ?>:<?php echo $post_id; ?>: -->
|
templates/testimonials-archives.php
CHANGED
@@ -6,8 +6,8 @@ $atts = $tw_template_args['atts'];
|
|
6 |
$c = ! empty( $atts['count'] ) ? '1' : '0';
|
7 |
$d = ! empty( $atts['dropdown'] ) ? '1' : '0';
|
8 |
|
9 |
-
add_filter( 'getarchives_where', array( '
|
10 |
-
add_filter( 'get_archives_link', array( '
|
11 |
|
12 |
if ( $d ) {
|
13 |
?>
|
@@ -37,6 +37,6 @@ if ( $d ) {
|
|
37 |
<?php
|
38 |
}
|
39 |
|
40 |
-
remove_filter( 'get_archives_link', array( '
|
41 |
-
remove_filter( 'getarchives_where', array( '
|
42 |
?>
|
6 |
$c = ! empty( $atts['count'] ) ? '1' : '0';
|
7 |
$d = ! empty( $atts['dropdown'] ) ? '1' : '0';
|
8 |
|
9 |
+
add_filter( 'getarchives_where', array( 'Axl_Testimonials_Widget', 'getarchives_where' ), 10, 2 );
|
10 |
+
add_filter( 'get_archives_link', array( 'Axl_Testimonials_Widget', 'get_archives_link' ), 10, 1 );
|
11 |
|
12 |
if ( $d ) {
|
13 |
?>
|
37 |
<?php
|
38 |
}
|
39 |
|
40 |
+
remove_filter( 'get_archives_link', array( 'Axl_Testimonials_Widget', 'get_archives_link' ), 10, 1 );
|
41 |
+
remove_filter( 'getarchives_where', array( 'Axl_Testimonials_Widget', 'getarchives_where' ), 10, 2 );
|
42 |
?>
|
templates/testimonials-categories.php
CHANGED
@@ -15,7 +15,7 @@ $cat_args = array(
|
|
15 |
|
16 |
$use_cpt_taxonomy = tw_get_option( 'use_cpt_taxonomy', false );
|
17 |
if ( $use_cpt_taxonomy ) {
|
18 |
-
$cat_args['taxonomy'] =
|
19 |
}
|
20 |
|
21 |
if ( $d ) {
|
15 |
|
16 |
$use_cpt_taxonomy = tw_get_option( 'use_cpt_taxonomy', false );
|
17 |
if ( $use_cpt_taxonomy ) {
|
18 |
+
$cat_args['taxonomy'] = Axl_Testimonials_Widget::$cpt_category;
|
19 |
}
|
20 |
|
21 |
if ( $d ) {
|
templates/testimonials-open.php
CHANGED
@@ -4,7 +4,7 @@ global $tw_template_args;
|
|
4 |
$is_list = $tw_template_args['is_list'];
|
5 |
$widget_number = $tw_template_args['widget_number'];
|
6 |
|
7 |
-
$id =
|
8 |
if ( is_null( $widget_number ) ) {
|
9 |
$class = $id;
|
10 |
if ( $is_list ) {
|
4 |
$is_list = $tw_template_args['is_list'];
|
5 |
$widget_number = $tw_template_args['widget_number'];
|
6 |
|
7 |
+
$id = Axl_Testimonials_Widget::ID;
|
8 |
if ( is_null( $widget_number ) ) {
|
9 |
$class = $id;
|
10 |
if ( $is_list ) {
|
templates/testimonials-paging.php
CHANGED
@@ -4,7 +4,7 @@ global $tw_template_args;
|
|
4 |
$atts = $tw_template_args['atts'];
|
5 |
$prepend = $tw_template_args['prepend'];
|
6 |
|
7 |
-
if ( is_home() || 1 ===
|
8 |
return;
|
9 |
}
|
10 |
|
@@ -21,16 +21,16 @@ if ( ! function_exists( 'wp_pagenavi' ) ) {
|
|
21 |
|
22 |
$paging .= '</div>';
|
23 |
$paging .= '<div class="alignright">';
|
24 |
-
if (
|
25 |
$raquo = apply_filters( 'tw_next_posts_link_text', esc_html__( '»', 'testimonials-widget' ) );
|
26 |
-
$paging .= get_next_posts_link( $raquo,
|
27 |
}
|
28 |
|
29 |
$paging .= '</div>';
|
30 |
} else {
|
31 |
$args = array(
|
32 |
'echo' => false,
|
33 |
-
'query' =>
|
34 |
);
|
35 |
$args = apply_filters( 'tw_wp_pagenavi', $args );
|
36 |
|
4 |
$atts = $tw_template_args['atts'];
|
5 |
$prepend = $tw_template_args['prepend'];
|
6 |
|
7 |
+
if ( is_home() || 1 === Axl_Testimonials_Widget::$max_num_pages ) {
|
8 |
return;
|
9 |
}
|
10 |
|
21 |
|
22 |
$paging .= '</div>';
|
23 |
$paging .= '<div class="alignright">';
|
24 |
+
if ( Axl_Testimonials_Widget::$max_num_pages != $paged ) {
|
25 |
$raquo = apply_filters( 'tw_next_posts_link_text', esc_html__( '»', 'testimonials-widget' ) );
|
26 |
+
$paging .= get_next_posts_link( $raquo, Axl_Testimonials_Widget::$max_num_pages );
|
27 |
}
|
28 |
|
29 |
$paging .= '</div>';
|
30 |
} else {
|
31 |
$args = array(
|
32 |
'echo' => false,
|
33 |
+
'query' => Axl_Testimonials_Widget::$wp_query,
|
34 |
);
|
35 |
$args = apply_filters( 'tw_wp_pagenavi', $args );
|
36 |
|
templates/testimonials-recent.php
CHANGED
@@ -11,7 +11,7 @@ $args = array(
|
|
11 |
'no_found_rows' => true,
|
12 |
'post_status' => 'publish',
|
13 |
'ignore_sticky_posts' => true,
|
14 |
-
'post_type' =>
|
15 |
);
|
16 |
$args = apply_filters( 'tw_recent_testimonials_args', $args );
|
17 |
|
11 |
'no_found_rows' => true,
|
12 |
'post_status' => 'publish',
|
13 |
'ignore_sticky_posts' => true,
|
14 |
+
'post_type' => Axl_Testimonials_Widget::PT,
|
15 |
);
|
16 |
$args = apply_filters( 'tw_recent_testimonials_args', $args );
|
17 |
|
testimonials-widget.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Plugin URI: http://wordpress.org/plugins/testimonials-widget/
|
5 |
* Description: Easily add social proofing to your website with Testimonials Widget. List or slide reviews via functions, shortcodes, or widgets.
|
6 |
* lets you socially randomly slide or list selected portfolios, quotes, reviews, or text with images or videos on your WordPress site.
|
7 |
-
* Version: 3.
|
8 |
* Author: Axelerant
|
9 |
* Author URI: https://axelerant.com/
|
10 |
* License: GPLv2 or later
|
@@ -36,7 +36,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
36 |
}
|
37 |
|
38 |
if ( ! defined( 'TW_AIHR_VERSION' ) ) {
|
39 |
-
define( 'TW_AIHR_VERSION', '1.2.
|
40 |
}
|
41 |
|
42 |
if ( ! defined( 'TW_BASE' ) ) {
|
@@ -64,7 +64,7 @@ if ( ! defined( 'TW_PREMIUM_LINK' ) ) {
|
|
64 |
}
|
65 |
|
66 |
if ( ! defined( 'TW_VERSION' ) ) {
|
67 |
-
define( 'TW_VERSION', '3.
|
68 |
}
|
69 |
|
70 |
require_once TW_DIR_INC . 'requirements.php';
|
@@ -91,94 +91,118 @@ add_action( 'plugins_loaded', 'testimonialswidget_init', 99 );
|
|
91 |
*/
|
92 |
if ( ! function_exists( 'testimonialswidget_init' ) ) {
|
93 |
function testimonialswidget_init() {
|
94 |
-
if (
|
95 |
-
global $
|
96 |
-
if ( is_null( $
|
97 |
-
$
|
98 |
}
|
99 |
|
100 |
-
global $
|
101 |
-
if ( is_null( $
|
102 |
-
$
|
103 |
}
|
104 |
}
|
105 |
}
|
106 |
}
|
107 |
|
108 |
|
109 |
-
register_activation_hook( __FILE__, array( '
|
110 |
-
register_deactivation_hook( __FILE__, array( '
|
111 |
-
register_uninstall_hook( __FILE__, array( '
|
112 |
|
113 |
|
|
|
|
|
|
|
114 |
if ( ! function_exists( 'testimonials' ) ) {
|
115 |
function testimonials( $atts = array() ) {
|
116 |
-
global $
|
117 |
|
118 |
-
return $
|
119 |
}
|
120 |
}
|
121 |
|
122 |
|
|
|
|
|
|
|
123 |
if ( ! function_exists( 'testimonials_archives' ) ) {
|
124 |
function testimonials_archives( $atts = array() ) {
|
125 |
-
global $
|
126 |
|
127 |
-
return $
|
128 |
}
|
129 |
}
|
130 |
|
131 |
|
|
|
|
|
|
|
132 |
if ( ! function_exists( 'testimonials_categories' ) ) {
|
133 |
function testimonials_categories( $atts = array() ) {
|
134 |
-
global $
|
135 |
|
136 |
-
return $
|
137 |
}
|
138 |
}
|
139 |
|
140 |
|
|
|
|
|
|
|
141 |
if ( ! function_exists( 'testimonials_recent' ) ) {
|
142 |
function testimonials_recent( $atts = array() ) {
|
143 |
-
global $
|
144 |
|
145 |
-
return $
|
146 |
}
|
147 |
}
|
148 |
|
149 |
|
|
|
|
|
|
|
150 |
if ( ! function_exists( 'testimonials_slider' ) ) {
|
151 |
function testimonials_slider( $atts = array(), $widget_number = null ) {
|
152 |
-
global $
|
153 |
|
154 |
-
return $
|
155 |
}
|
156 |
}
|
157 |
|
158 |
|
|
|
|
|
|
|
159 |
if ( ! function_exists( 'testimonials_tag_cloud' ) ) {
|
160 |
function testimonials_tag_cloud( $atts = array() ) {
|
161 |
-
global $
|
162 |
|
163 |
-
return $
|
164 |
}
|
165 |
}
|
166 |
|
167 |
|
|
|
|
|
|
|
168 |
if ( ! function_exists( 'testimonials_examples' ) ) {
|
169 |
function testimonials_examples( $atts = array() ) {
|
170 |
-
global $
|
171 |
|
172 |
-
return $
|
173 |
}
|
174 |
}
|
175 |
|
176 |
|
|
|
|
|
|
|
177 |
if ( ! function_exists( 'testimonials_options' ) ) {
|
178 |
function testimonials_options( $atts = array() ) {
|
179 |
-
global $
|
180 |
|
181 |
-
return $
|
182 |
}
|
183 |
}
|
184 |
|
4 |
* Plugin URI: http://wordpress.org/plugins/testimonials-widget/
|
5 |
* Description: Easily add social proofing to your website with Testimonials Widget. List or slide reviews via functions, shortcodes, or widgets.
|
6 |
* lets you socially randomly slide or list selected portfolios, quotes, reviews, or text with images or videos on your WordPress site.
|
7 |
+
* Version: 3.3.0
|
8 |
* Author: Axelerant
|
9 |
* Author URI: https://axelerant.com/
|
10 |
* License: GPLv2 or later
|
36 |
}
|
37 |
|
38 |
if ( ! defined( 'TW_AIHR_VERSION' ) ) {
|
39 |
+
define( 'TW_AIHR_VERSION', '1.2.4' );
|
40 |
}
|
41 |
|
42 |
if ( ! defined( 'TW_BASE' ) ) {
|
64 |
}
|
65 |
|
66 |
if ( ! defined( 'TW_VERSION' ) ) {
|
67 |
+
define( 'TW_VERSION', '3.3.0' );
|
68 |
}
|
69 |
|
70 |
require_once TW_DIR_INC . 'requirements.php';
|
91 |
*/
|
92 |
if ( ! function_exists( 'testimonialswidget_init' ) ) {
|
93 |
function testimonialswidget_init() {
|
94 |
+
if ( Axl_Testimonials_Widget::version_check() ) {
|
95 |
+
global $Axl_Testimonials_Widget_Settings;
|
96 |
+
if ( is_null( $Axl_Testimonials_Widget_Settings ) ) {
|
97 |
+
$Axl_Testimonials_Widget_Settings = new Axl_Testimonials_Widget_Settings();
|
98 |
}
|
99 |
|
100 |
+
global $Axl_Testimonials_Widget;
|
101 |
+
if ( is_null( $Axl_Testimonials_Widget ) ) {
|
102 |
+
$Axl_Testimonials_Widget = new Axl_Testimonials_Widget();
|
103 |
}
|
104 |
}
|
105 |
}
|
106 |
}
|
107 |
|
108 |
|
109 |
+
register_activation_hook( __FILE__, array( 'Axl_Testimonials_Widget', 'activation' ) );
|
110 |
+
register_deactivation_hook( __FILE__, array( 'Axl_Testimonials_Widget', 'deactivation' ) );
|
111 |
+
register_uninstall_hook( __FILE__, array( 'Axl_Testimonials_Widget', 'uninstall' ) );
|
112 |
|
113 |
|
114 |
+
/**
|
115 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
116 |
+
*/
|
117 |
if ( ! function_exists( 'testimonials' ) ) {
|
118 |
function testimonials( $atts = array() ) {
|
119 |
+
global $Axl_Testimonials_Widget;
|
120 |
|
121 |
+
return $Axl_Testimonials_Widget->testimonials( $atts );
|
122 |
}
|
123 |
}
|
124 |
|
125 |
|
126 |
+
/**
|
127 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
128 |
+
*/
|
129 |
if ( ! function_exists( 'testimonials_archives' ) ) {
|
130 |
function testimonials_archives( $atts = array() ) {
|
131 |
+
global $Axl_Testimonials_Widget;
|
132 |
|
133 |
+
return $Axl_Testimonials_Widget->testimonials_archives( $atts );
|
134 |
}
|
135 |
}
|
136 |
|
137 |
|
138 |
+
/**
|
139 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
140 |
+
*/
|
141 |
if ( ! function_exists( 'testimonials_categories' ) ) {
|
142 |
function testimonials_categories( $atts = array() ) {
|
143 |
+
global $Axl_Testimonials_Widget;
|
144 |
|
145 |
+
return $Axl_Testimonials_Widget->testimonials_categories( $atts );
|
146 |
}
|
147 |
}
|
148 |
|
149 |
|
150 |
+
/**
|
151 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
152 |
+
*/
|
153 |
if ( ! function_exists( 'testimonials_recent' ) ) {
|
154 |
function testimonials_recent( $atts = array() ) {
|
155 |
+
global $Axl_Testimonials_Widget;
|
156 |
|
157 |
+
return $Axl_Testimonials_Widget->testimonials_recent( $atts );
|
158 |
}
|
159 |
}
|
160 |
|
161 |
|
162 |
+
/**
|
163 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
164 |
+
*/
|
165 |
if ( ! function_exists( 'testimonials_slider' ) ) {
|
166 |
function testimonials_slider( $atts = array(), $widget_number = null ) {
|
167 |
+
global $Axl_Testimonials_Widget;
|
168 |
|
169 |
+
return $Axl_Testimonials_Widget->testimonials_slider( $atts, $widget_number );
|
170 |
}
|
171 |
}
|
172 |
|
173 |
|
174 |
+
/**
|
175 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
176 |
+
*/
|
177 |
if ( ! function_exists( 'testimonials_tag_cloud' ) ) {
|
178 |
function testimonials_tag_cloud( $atts = array() ) {
|
179 |
+
global $Axl_Testimonials_Widget;
|
180 |
|
181 |
+
return $Axl_Testimonials_Widget->testimonials_tag_cloud( $atts );
|
182 |
}
|
183 |
}
|
184 |
|
185 |
|
186 |
+
/**
|
187 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
188 |
+
*/
|
189 |
if ( ! function_exists( 'testimonials_examples' ) ) {
|
190 |
function testimonials_examples( $atts = array() ) {
|
191 |
+
global $Axl_Testimonials_Widget;
|
192 |
|
193 |
+
return $Axl_Testimonials_Widget->testimonials_examples( $atts );
|
194 |
}
|
195 |
}
|
196 |
|
197 |
|
198 |
+
/**
|
199 |
+
* @SuppressWarnings(PHPMD.LongVariable)
|
200 |
+
*/
|
201 |
if ( ! function_exists( 'testimonials_options' ) ) {
|
202 |
function testimonials_options( $atts = array() ) {
|
203 |
+
global $Axl_Testimonials_Widget;
|
204 |
|
205 |
+
return $Axl_Testimonials_Widget->testimonials_options( $atts );
|
206 |
}
|
207 |
}
|
208 |
|