Version Description
Be careful! This is a great update and completely new code! Don't forget, you can always install old version.
Upgrade normally via your Wordpress admin -> Plugins panel.
Download this release
Release Info
Developer | gn_themes |
Plugin | Shortcodes Ultimate |
Version | 4.2.0 |
Comparing to | |
See all releases |
Code changes from version 4.1.9 to 4.2.0
- assets/css/generator.css +30 -26
- inc/core/class.assets.php +3 -1
- inc/core/class.data.php +116 -50
- inc/core/class.generator.php +7 -15
- inc/core/class.shortcodes.php +1069 -0
- inc/core/shortcodes.php +0 -1448
- inc/core/tools.php +12 -1
- inc/vendor/class.sunrise-framework.php +2 -1
- readme.txt +3 -17
- shortcodes-ultimate.php +2 -2
assets/css/generator.css
CHANGED
@@ -83,7 +83,7 @@
|
|
83 |
/* Dropdown choices */
|
84 |
#su-generator-choices {
|
85 |
margin-top: 20px;
|
86 |
-
text-align:
|
87 |
}
|
88 |
#su-generator-choices:after {
|
89 |
display: block;
|
@@ -91,10 +91,12 @@
|
|
91 |
content: '';
|
92 |
}
|
93 |
#su-generator-choices > span {
|
|
|
94 |
display: inline-block;
|
95 |
-
width:
|
96 |
-
height:
|
97 |
-
|
|
|
98 |
overflow: hidden;
|
99 |
border: 1px solid #fff;
|
100 |
border-bottom-style: dotted;
|
@@ -104,7 +106,7 @@
|
|
104 |
border-radius: 0;
|
105 |
color: #222;
|
106 |
vertical-align: top;
|
107 |
-
text-align:
|
108 |
cursor: pointer;
|
109 |
}
|
110 |
#su-generator-choices span:hover {
|
@@ -118,30 +120,32 @@
|
|
118 |
box-shadow: 0 0 20px #fff inset;
|
119 |
}
|
120 |
#su-generator-choices span img {
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
|
127 |
-
filter: alpha(opacity=30);
|
128 |
-
-moz-opacity: 0.3;
|
129 |
-
-khtml-opacity: 0.3;
|
130 |
}
|
131 |
#su-generator-choices span:hover img {
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
}
|
138 |
-
#su-generator-choices
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
}
|
146 |
|
147 |
/* Breadcrumbs */
|
83 |
/* Dropdown choices */
|
84 |
#su-generator-choices {
|
85 |
margin-top: 20px;
|
86 |
+
text-align: left;
|
87 |
}
|
88 |
#su-generator-choices:after {
|
89 |
display: block;
|
91 |
content: '';
|
92 |
}
|
93 |
#su-generator-choices > span {
|
94 |
+
position: relative;
|
95 |
display: inline-block;
|
96 |
+
width: 140px;
|
97 |
+
height: 28px;
|
98 |
+
line-height: 28px;
|
99 |
+
padding: 0 5px 0 28px;
|
100 |
overflow: hidden;
|
101 |
border: 1px solid #fff;
|
102 |
border-bottom-style: dotted;
|
106 |
border-radius: 0;
|
107 |
color: #222;
|
108 |
vertical-align: top;
|
109 |
+
text-align: left;
|
110 |
cursor: pointer;
|
111 |
}
|
112 |
#su-generator-choices span:hover {
|
120 |
box-shadow: 0 0 20px #fff inset;
|
121 |
}
|
122 |
#su-generator-choices span img {
|
123 |
+
position: absolute;
|
124 |
+
left: 7px;
|
125 |
+
top: 7px;
|
126 |
+
width: 14px;
|
127 |
+
height: 14px;
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
#su-generator-choices span:hover img {
|
130 |
+
position: absolute;
|
131 |
+
left: 5px;
|
132 |
+
top: 5px;
|
133 |
+
width: 18px;
|
134 |
+
height: 18px;
|
135 |
}
|
136 |
+
#su-generator-choices span i {
|
137 |
+
position: absolute;
|
138 |
+
top: 7px;
|
139 |
+
left: 7px;
|
140 |
+
color: #aaa;
|
141 |
+
font-size: 14px;
|
142 |
+
}
|
143 |
+
#su-generator-choices span:hover i {
|
144 |
+
top: 5px;
|
145 |
+
left: 5px;
|
146 |
+
color: #aaa;
|
147 |
+
color: #000;
|
148 |
+
font-size: 18px;
|
149 |
}
|
150 |
|
151 |
/* Breadcrumbs */
|
inc/core/class.assets.php
CHANGED
@@ -38,6 +38,8 @@ class Shortcodes_Ultimate_Assets {
|
|
38 |
public static function register() {
|
39 |
// Get plugin object
|
40 |
$shult = shortcodes_ultimate();
|
|
|
|
|
41 |
// qTip
|
42 |
wp_register_style( 'qtip', $shult->assets( 'css', 'qtip.css' ), false, '2.1.1', 'all' );
|
43 |
wp_register_script( 'qtip', $shult->assets( 'js', 'qtip.js' ), array( 'jquery' ), '2.1.1', true );
|
@@ -112,7 +114,7 @@ class Shortcodes_Ultimate_Assets {
|
|
112 |
public static function custom_css() {
|
113 |
$shult = shortcodes_ultimate();
|
114 |
// Get custom CSS and apply filters to it
|
115 |
-
$custom_css = apply_filters( 'su/assets/custom_css', str_replace( ''', '\'', html_entity_decode( $shult->get_option( 'custom_css' ) ) ) );
|
116 |
// Print CSS if exists
|
117 |
if ( $custom_css ) echo "\n\n<!-- Shortcodes Ultimate custom CSS - begin -->\n<style type='text/css'>\n" . stripslashes( str_replace( array( '%theme_url%', '%home_url%', '%plugin_url%' ), array( get_stylesheet_directory_uri(), get_option( 'home' ), $shult->url ), $custom_css ) ) . "\n</style>\n<!-- Shortcodes Ultimate custom CSS - end -->\n\n";
|
118 |
}
|
38 |
public static function register() {
|
39 |
// Get plugin object
|
40 |
$shult = shortcodes_ultimate();
|
41 |
+
// Font Awesome
|
42 |
+
wp_register_style( 'font-awesome', $shult->assets( 'css', 'font-awesome.css' ), false, '3.2.1', 'all' );
|
43 |
// qTip
|
44 |
wp_register_style( 'qtip', $shult->assets( 'css', 'qtip.css' ), false, '2.1.1', 'all' );
|
45 |
wp_register_script( 'qtip', $shult->assets( 'js', 'qtip.js' ), array( 'jquery' ), '2.1.1', true );
|
114 |
public static function custom_css() {
|
115 |
$shult = shortcodes_ultimate();
|
116 |
// Get custom CSS and apply filters to it
|
117 |
+
$custom_css = apply_filters( 'su/assets/custom_css', str_replace( ''', '\'', html_entity_decode( (string) $shult->get_option( 'custom_css' ) ) ) );
|
118 |
// Print CSS if exists
|
119 |
if ( $custom_css ) echo "\n\n<!-- Shortcodes Ultimate custom CSS - begin -->\n<style type='text/css'>\n" . stripslashes( str_replace( array( '%theme_url%', '%home_url%', '%plugin_url%' ), array( get_stylesheet_directory_uri(), get_option( 'home' ), $shult->url ), $custom_css ) ) . "\n</style>\n<!-- Shortcodes Ultimate custom CSS - end -->\n\n";
|
120 |
}
|
inc/core/class.data.php
CHANGED
@@ -16,14 +16,16 @@ class Shortcodes_Ultimate_Data {
|
|
16 |
*/
|
17 |
public static function register() {
|
18 |
// Loop through shortcodes
|
19 |
-
foreach ( ( array ) self::shortcodes() as $
|
20 |
-
|
21 |
-
|
|
|
|
|
22 |
// Register shortcode
|
23 |
-
add_shortcode(
|
24 |
}
|
25 |
-
// Register [media] manually
|
26 |
-
add_shortcode(
|
27 |
}
|
28 |
|
29 |
/**
|
@@ -77,7 +79,8 @@ class Shortcodes_Ultimate_Data {
|
|
77 |
)
|
78 |
),
|
79 |
'usage' => '[heading] Content [/heading]<br/>[heading size="5"] Content [/heading]', 'content' => __( 'Heading text', 'su' ),
|
80 |
-
'desc' => __( 'Styled heading', 'su' )
|
|
|
81 |
),
|
82 |
// tabs
|
83 |
'tabs' => array(
|
@@ -108,7 +111,8 @@ class Shortcodes_Ultimate_Data {
|
|
108 |
),
|
109 |
'usage' => '[tabs style="default"] [tab title="Tab name"] Tab content [/tab] [/tabs]',
|
110 |
'content' => __( "[%prefix_tab title=\"Title 1\"]Content 1[/%prefix_tab]\n[%prefix_tab title=\"Title 2\"]Content 2[/%prefix_tab]\n[%prefix_tab title=\"Title 3\"]Content 3[/%prefix_tab]", 'su' ),
|
111 |
-
'desc' => __( 'Tabs container', 'su' )
|
|
|
112 |
),
|
113 |
// tab
|
114 |
'tab' => array(
|
@@ -135,7 +139,8 @@ class Shortcodes_Ultimate_Data {
|
|
135 |
),
|
136 |
'usage' => '[tabs] [tab title="Tab name"] Tab content [/tab] [/tabs]',
|
137 |
'content' => __( 'Tab content', 'su' ),
|
138 |
-
'desc' => __( 'Single tab', 'su' )
|
|
|
139 |
),
|
140 |
// spoiler
|
141 |
'spoiler' => array(
|
@@ -170,7 +175,10 @@ class Shortcodes_Ultimate_Data {
|
|
170 |
'desc' => __( 'Extra CSS class', 'su' )
|
171 |
)
|
172 |
),
|
173 |
-
'usage' => '[spoiler title="Spoiler title"] Hidden text [/spoiler]',
|
|
|
|
|
|
|
174 |
),
|
175 |
// accordion
|
176 |
'accordion' => array(
|
@@ -186,7 +194,8 @@ class Shortcodes_Ultimate_Data {
|
|
186 |
),
|
187 |
'usage' => '[accordion]<br/>[spoiler open="yes"] content [/spoiler]<br/>[spoiler] content [/spoiler]<br/>[spoiler] content [/spoiler]<br/>[/accordion]',
|
188 |
'content' => __( "[%prefix_spoiler]Content[/%prefix_spoiler]\n[%prefix_spoiler]Content[/%prefix_spoiler]\n[%prefix_spoiler]Content[/%prefix_spoiler]", 'su' ),
|
189 |
-
'desc' => __( 'Accordion with spoilers', 'su' )
|
|
|
190 |
),
|
191 |
// divider
|
192 |
'divider' => array(
|
@@ -212,7 +221,8 @@ class Shortcodes_Ultimate_Data {
|
|
212 |
)
|
213 |
),
|
214 |
'usage' => '[divider top="yes" text="Go to top"]',
|
215 |
-
'desc' => __( 'Content divider with optional TOP link', 'su' )
|
|
|
216 |
),
|
217 |
// spacer
|
218 |
'spacer' => array(
|
@@ -235,7 +245,8 @@ class Shortcodes_Ultimate_Data {
|
|
235 |
)
|
236 |
),
|
237 |
'usage' => '[spacer size="20"]',
|
238 |
-
'desc' => __( 'Empty space with adjustable height', 'su' )
|
|
|
239 |
),
|
240 |
// highlight
|
241 |
'highlight' => array(
|
@@ -263,7 +274,8 @@ class Shortcodes_Ultimate_Data {
|
|
263 |
)
|
264 |
),
|
265 |
'usage' => '[highlight background="#DDFF99" color="#000000"] Content [/highlight]', 'content' => __( 'Highlighted text', 'su' ),
|
266 |
-
'desc' => __( 'Highlighted text', 'su' )
|
|
|
267 |
),
|
268 |
// label
|
269 |
'label' => array(
|
@@ -292,7 +304,8 @@ class Shortcodes_Ultimate_Data {
|
|
292 |
)
|
293 |
),
|
294 |
'usage' => '[label type="info"] Information [/label]', 'content' => __( 'Label', 'su' ),
|
295 |
-
'desc' => __( 'Styled label', 'su' )
|
|
|
296 |
),
|
297 |
// quote
|
298 |
'quote' => array(
|
@@ -319,7 +332,8 @@ class Shortcodes_Ultimate_Data {
|
|
319 |
)
|
320 |
),
|
321 |
'usage' => '[quote style="default"] Content [/quote]', 'content' => __( 'Quote', 'su' ),
|
322 |
-
'desc' => __( 'Blockquote alternative', 'su' )
|
|
|
323 |
),
|
324 |
// pullquote
|
325 |
'pullquote' => array(
|
@@ -343,7 +357,8 @@ class Shortcodes_Ultimate_Data {
|
|
343 |
)
|
344 |
),
|
345 |
'usage' => '[pullquote align="left"] Content [/pullquote]', 'content' => __( 'Pullquote', 'su' ),
|
346 |
-
'desc' => __( 'Pullquote', 'su' )
|
|
|
347 |
),
|
348 |
// dropcap
|
349 |
'dropcap' => array(
|
@@ -374,7 +389,8 @@ class Shortcodes_Ultimate_Data {
|
|
374 |
)
|
375 |
),
|
376 |
'usage' => '[dropcap style="default"]D[/dropcap]ropcap', 'content' => __( 'D', 'su' ),
|
377 |
-
'desc' => __( 'Dropcap', 'su' )
|
|
|
378 |
),
|
379 |
// frame
|
380 |
'frame' => array(
|
@@ -401,7 +417,8 @@ class Shortcodes_Ultimate_Data {
|
|
401 |
),
|
402 |
'usage' => '[frame align="center"]<img src="image.jpg">[/frame]',
|
403 |
'content' => '<img src="http://lorempixel.com/g/400/200/" />',
|
404 |
-
'desc' => __( 'Styled image frame', 'su' )
|
|
|
405 |
),
|
406 |
// row
|
407 |
'row' => array(
|
@@ -417,7 +434,8 @@ class Shortcodes_Ultimate_Data {
|
|
417 |
),
|
418 |
'usage' => '[row]<br/>[column size="1/2"] 50% [/column]<br/>[column size="1/4"] 25% [/column]<br/>[column size="1/4"] 25% [/column]<br/>[/row]',
|
419 |
'content' => __( "[%prefix_column size=\"1/3\"]Content[/%prefix_column]\n[%prefix_column size=\"1/3\"]Content[/%prefix_column]\n[%prefix_column size=\"1/3\"]Content[/%prefix_column]", 'su' ),
|
420 |
-
'desc' => __( 'Row for flexible columns', 'su' )
|
|
|
421 |
),
|
422 |
// column
|
423 |
'column' => array(
|
@@ -457,7 +475,10 @@ class Shortcodes_Ultimate_Data {
|
|
457 |
'desc' => __( 'Extra CSS class', 'su' )
|
458 |
)
|
459 |
),
|
460 |
-
'usage' => '[row]<br/>[column size="6"] 50% [/column]<br/>[column size="3"] 25% [/column]<br/>[column size="3"] 25% [/column]<br/>[/row]',
|
|
|
|
|
|
|
461 |
),
|
462 |
// list
|
463 |
'list' => array(
|
@@ -494,7 +515,9 @@ class Shortcodes_Ultimate_Data {
|
|
494 |
)
|
495 |
),
|
496 |
'usage' => '[list style="check"] <ul> <li> List item </li> </ul> [/list]',
|
497 |
-
'content' => __( "<ul>\n<li>List item</li>\n<li>List item</li>\n<li>List item</li>\n</ul>", 'su' ),
|
|
|
|
|
498 |
),
|
499 |
// button
|
500 |
'button' => array(
|
@@ -608,8 +631,10 @@ class Shortcodes_Ultimate_Data {
|
|
608 |
'desc' => __( 'Extra CSS class', 'su' )
|
609 |
)
|
610 |
),
|
611 |
-
'usage' => '[button url="#" background="#b00" size="3" style="default"] Button text [/button]',
|
612 |
-
'
|
|
|
|
|
613 |
),
|
614 |
// service
|
615 |
'service' => array(
|
@@ -642,7 +667,10 @@ class Shortcodes_Ultimate_Data {
|
|
642 |
'desc' => __( 'Extra CSS class', 'su' )
|
643 |
)
|
644 |
),
|
645 |
-
'usage' => '[service title="Service title" icon="service.png" size="32"] Service description [/service]',
|
|
|
|
|
|
|
646 |
),
|
647 |
// box
|
648 |
'box' => array(
|
@@ -696,7 +724,8 @@ class Shortcodes_Ultimate_Data {
|
|
696 |
),
|
697 |
'usage' => '[box title="Box title"] Content [/box]',
|
698 |
'content' => __( 'Box content', 'su' ),
|
699 |
-
'desc' => __( 'Colored box with caption', 'su' )
|
|
|
700 |
),
|
701 |
// note
|
702 |
'note' => array(
|
@@ -730,7 +759,8 @@ class Shortcodes_Ultimate_Data {
|
|
730 |
)
|
731 |
),
|
732 |
'usage' => '[note background="#FFCC00"] Content [/note]', 'content' => __( 'Note text', 'su' ),
|
733 |
-
'desc' => __( 'Colored box', 'su' )
|
|
|
734 |
),
|
735 |
// lightbox
|
736 |
'lightbox' => array(
|
@@ -762,7 +792,8 @@ class Shortcodes_Ultimate_Data {
|
|
762 |
),
|
763 |
'usage' => '[lightbox src="http://example.com/" type="iframe"] Open example.com [/lightbox]',
|
764 |
'content' => __( '[%prefix_button] Click Here to Watch the Video [/%prefix_button]', 'su' ),
|
765 |
-
'desc' => __( 'Lightbox window with custom content', 'su' )
|
|
|
766 |
),
|
767 |
// tooltip
|
768 |
'tooltip' => array(
|
@@ -864,7 +895,8 @@ class Shortcodes_Ultimate_Data {
|
|
864 |
),
|
865 |
'usage' => '[tooltip] Hover me [/lightbox]',
|
866 |
'content' => __( '[%prefix_button] Hover me to open tooltip [/%prefix_button]', 'su' ),
|
867 |
-
'desc' => __( 'Tooltip window with custom content', 'su' )
|
|
|
868 |
),
|
869 |
// private
|
870 |
'private' => array(
|
@@ -879,8 +911,9 @@ class Shortcodes_Ultimate_Data {
|
|
879 |
)
|
880 |
),
|
881 |
'usage' => '[private] Private content [/private]',
|
882 |
-
'content' => __( 'Private note text', 'su' ),
|
883 |
-
'desc' => __( 'Private note for post authors', 'su' )
|
|
|
884 |
),
|
885 |
// youtube
|
886 |
'youtube' => array(
|
@@ -930,7 +963,9 @@ class Shortcodes_Ultimate_Data {
|
|
930 |
'desc' => __( 'Extra CSS class', 'su' )
|
931 |
)
|
932 |
),
|
933 |
-
'usage' => '[youtube url="http://www.youtube.com/watch?v=NbE8INOjTKM"]',
|
|
|
|
|
934 |
),
|
935 |
// vimeo
|
936 |
'vimeo' => array(
|
@@ -979,7 +1014,9 @@ class Shortcodes_Ultimate_Data {
|
|
979 |
'desc' => __( 'Extra CSS class', 'su' )
|
980 |
)
|
981 |
),
|
982 |
-
'usage' => '[vimeo url="http://vimeo.com/21294655"]',
|
|
|
|
|
983 |
),
|
984 |
// screenr
|
985 |
'screenr' => array(
|
@@ -1021,7 +1058,9 @@ class Shortcodes_Ultimate_Data {
|
|
1021 |
'desc' => __( 'Extra CSS class', 'su' )
|
1022 |
)
|
1023 |
),
|
1024 |
-
'usage' => '[screenr url="http://www.screenr.com/OuWH"]',
|
|
|
|
|
1025 |
),
|
1026 |
// audio
|
1027 |
'audio' => array(
|
@@ -1060,7 +1099,8 @@ class Shortcodes_Ultimate_Data {
|
|
1060 |
)
|
1061 |
),
|
1062 |
'usage' => '[audio url="http://example.com/audio.mp3"]',
|
1063 |
-
'desc' => __( 'Custom audio player', 'su' )
|
|
|
1064 |
),
|
1065 |
// video
|
1066 |
'video' => array(
|
@@ -1129,7 +1169,8 @@ class Shortcodes_Ultimate_Data {
|
|
1129 |
)
|
1130 |
),
|
1131 |
'usage' => '[video url="http://example.com/video.mp4"]',
|
1132 |
-
'desc' => __( 'Custom video player', 'su' )
|
|
|
1133 |
),
|
1134 |
// table
|
1135 |
'table' => array(
|
@@ -1151,7 +1192,8 @@ class Shortcodes_Ultimate_Data {
|
|
1151 |
),
|
1152 |
'usage' => '[table style="default"] <table> ... </table> [/table]<br/>[table style="default" url="http://example.com/file.csv"] [/table]',
|
1153 |
'content' => __( "<table>\n<tr>\n\t<td>Table</td>\n\t<td>Table</td>\n</tr>\n<tr>\n\t<td>Table</td>\n\t<td>Table</td>\n</tr>\n</table>", 'su' ),
|
1154 |
-
'desc' => __( 'Styled table from HTML or CSV file', 'su' )
|
|
|
1155 |
),
|
1156 |
// permalink
|
1157 |
'permalink' => array(
|
@@ -1182,7 +1224,8 @@ class Shortcodes_Ultimate_Data {
|
|
1182 |
),
|
1183 |
'usage' => '[permalink id=52]<br/>[permalink id="52" target="blank"] Content [/permalink]',
|
1184 |
'content' => '',
|
1185 |
-
'desc' => __( 'Permalink to specified post/page', 'su' )
|
|
|
1186 |
),
|
1187 |
// members
|
1188 |
'members' => array(
|
@@ -1215,7 +1258,8 @@ class Shortcodes_Ultimate_Data {
|
|
1215 |
),
|
1216 |
'usage' => '[members style="default"] Content for logged members [/members]',
|
1217 |
'content' => __( 'Content for logged members', 'su' ),
|
1218 |
-
'desc' => __( 'Content for logged in members only', 'su' )
|
|
|
1219 |
),
|
1220 |
// guests
|
1221 |
'guests' => array(
|
@@ -1229,7 +1273,10 @@ class Shortcodes_Ultimate_Data {
|
|
1229 |
'desc' => __( 'Extra CSS class', 'su' )
|
1230 |
)
|
1231 |
),
|
1232 |
-
'usage' => '[guests] Content for guests [/guests]',
|
|
|
|
|
|
|
1233 |
),
|
1234 |
// feed
|
1235 |
'feed' => array(
|
@@ -1254,7 +1301,9 @@ class Shortcodes_Ultimate_Data {
|
|
1254 |
'desc' => __( 'Extra CSS class', 'su' )
|
1255 |
)
|
1256 |
),
|
1257 |
-
'usage' => '[feed url="http://rss1.smashingmagazine.com/feed/" limit="5"]',
|
|
|
|
|
1258 |
),
|
1259 |
// menu
|
1260 |
'menu' => array(
|
@@ -1273,7 +1322,9 @@ class Shortcodes_Ultimate_Data {
|
|
1273 |
'desc' => __( 'Extra CSS class', 'su' )
|
1274 |
)
|
1275 |
),
|
1276 |
-
'usage' => '[menu name="Main menu"]',
|
|
|
|
|
1277 |
),
|
1278 |
// subpages
|
1279 |
'subpages' => array(
|
@@ -1299,7 +1350,9 @@ class Shortcodes_Ultimate_Data {
|
|
1299 |
'desc' => __( 'Extra CSS class', 'su' )
|
1300 |
)
|
1301 |
),
|
1302 |
-
'usage' => '[subpages]<br/>[subpages depth="2" p="122"]',
|
|
|
|
|
1303 |
),
|
1304 |
// siblings
|
1305 |
'siblings' => array(
|
@@ -1319,7 +1372,9 @@ class Shortcodes_Ultimate_Data {
|
|
1319 |
'desc' => __( 'Extra CSS class', 'su' )
|
1320 |
)
|
1321 |
),
|
1322 |
-
'usage' => '[siblings]<br/>[siblings depth="2"]',
|
|
|
|
|
1323 |
),
|
1324 |
// document
|
1325 |
'document' => array(
|
@@ -1363,7 +1418,9 @@ class Shortcodes_Ultimate_Data {
|
|
1363 |
'desc' => __( 'Extra CSS class', 'su' )
|
1364 |
)
|
1365 |
),
|
1366 |
-
'usage' => '[document url="file.doc" width="600" height="400"]',
|
|
|
|
|
1367 |
),
|
1368 |
// gmap
|
1369 |
'gmap' => array(
|
@@ -1407,7 +1464,9 @@ class Shortcodes_Ultimate_Data {
|
|
1407 |
'desc' => __( 'Extra CSS class', 'su' )
|
1408 |
)
|
1409 |
),
|
1410 |
-
'usage' => '[gmap width="600" height="400" address="New York"]',
|
|
|
|
|
1411 |
),
|
1412 |
// slider
|
1413 |
'slider' => array(
|
@@ -1497,7 +1556,9 @@ class Shortcodes_Ultimate_Data {
|
|
1497 |
'desc' => __( 'Extra CSS class', 'su' )
|
1498 |
)
|
1499 |
),
|
1500 |
-
'usage' => '[slider gallery="1"]',
|
|
|
|
|
1501 |
),
|
1502 |
// carousel
|
1503 |
'carousel' => array(
|
@@ -1603,7 +1664,9 @@ class Shortcodes_Ultimate_Data {
|
|
1603 |
'desc' => __( 'Extra CSS class', 'su' )
|
1604 |
)
|
1605 |
),
|
1606 |
-
'usage' => '[carousel gallery="1"]',
|
|
|
|
|
1607 |
),
|
1608 |
// custom_gallery
|
1609 |
'custom_gallery' => array(
|
@@ -1654,7 +1717,9 @@ class Shortcodes_Ultimate_Data {
|
|
1654 |
'desc' => __( 'Extra CSS class', 'su' )
|
1655 |
)
|
1656 |
),
|
1657 |
-
'usage' => '[custom_gallery gallery="1"]',
|
|
|
|
|
1658 |
),
|
1659 |
// posts
|
1660 |
'posts' => array(
|
@@ -1786,7 +1851,8 @@ class Shortcodes_Ultimate_Data {
|
|
1786 |
)
|
1787 |
),
|
1788 |
'usage' => '[posts template="templates/posts.php"]',
|
1789 |
-
'desc' => __( 'Custom posts query with customizable template', 'su' )
|
|
|
1790 |
)
|
1791 |
) );
|
1792 |
// Return result
|
16 |
*/
|
17 |
public static function register() {
|
18 |
// Loop through shortcodes
|
19 |
+
foreach ( ( array ) self::shortcodes() as $id => $data ) {
|
20 |
+
unset( $func );
|
21 |
+
if ( isset( $data['function'] ) ) $func = $data['function'];
|
22 |
+
elseif ( method_exists( 'Shortcodes_Ultimate_Shortcodes', $id ) ) $func = array( 'Shortcodes_Ultimate_Shortcodes', $id );
|
23 |
+
elseif ( method_exists( 'Shortcodes_Ultimate_Shortcodes', 'su_' . $id ) ) $func = array( 'Shortcodes_Ultimate_Shortcodes', 'su_' . $id );
|
24 |
// Register shortcode
|
25 |
+
if ( isset( $func ) ) add_shortcode( su_cmpt() . $id, $func );
|
26 |
}
|
27 |
+
// Register [media] manually // 3.x
|
28 |
+
add_shortcode( su_cmpt() . 'media', array( 'Shortcodes_Ultimate_Shortcodes', 'media' ) );
|
29 |
}
|
30 |
|
31 |
/**
|
79 |
)
|
80 |
),
|
81 |
'usage' => '[heading] Content [/heading]<br/>[heading size="5"] Content [/heading]', 'content' => __( 'Heading text', 'su' ),
|
82 |
+
'desc' => __( 'Styled heading', 'su' ),
|
83 |
+
'icon' => 'icon-h-sign'
|
84 |
),
|
85 |
// tabs
|
86 |
'tabs' => array(
|
111 |
),
|
112 |
'usage' => '[tabs style="default"] [tab title="Tab name"] Tab content [/tab] [/tabs]',
|
113 |
'content' => __( "[%prefix_tab title=\"Title 1\"]Content 1[/%prefix_tab]\n[%prefix_tab title=\"Title 2\"]Content 2[/%prefix_tab]\n[%prefix_tab title=\"Title 3\"]Content 3[/%prefix_tab]", 'su' ),
|
114 |
+
'desc' => __( 'Tabs container', 'su' ),
|
115 |
+
'icon' => 'icon-list-alt'
|
116 |
),
|
117 |
// tab
|
118 |
'tab' => array(
|
139 |
),
|
140 |
'usage' => '[tabs] [tab title="Tab name"] Tab content [/tab] [/tabs]',
|
141 |
'content' => __( 'Tab content', 'su' ),
|
142 |
+
'desc' => __( 'Single tab', 'su' ),
|
143 |
+
'icon' => 'icon-list-alt'
|
144 |
),
|
145 |
// spoiler
|
146 |
'spoiler' => array(
|
175 |
'desc' => __( 'Extra CSS class', 'su' )
|
176 |
)
|
177 |
),
|
178 |
+
'usage' => '[spoiler title="Spoiler title"] Hidden text [/spoiler]',
|
179 |
+
'content' => __( 'Hidden content', 'su' ),
|
180 |
+
'desc' => __( 'Spoiler with hidden content', 'su' ),
|
181 |
+
'icon' => 'icon-list-ul'
|
182 |
),
|
183 |
// accordion
|
184 |
'accordion' => array(
|
194 |
),
|
195 |
'usage' => '[accordion]<br/>[spoiler open="yes"] content [/spoiler]<br/>[spoiler] content [/spoiler]<br/>[spoiler] content [/spoiler]<br/>[/accordion]',
|
196 |
'content' => __( "[%prefix_spoiler]Content[/%prefix_spoiler]\n[%prefix_spoiler]Content[/%prefix_spoiler]\n[%prefix_spoiler]Content[/%prefix_spoiler]", 'su' ),
|
197 |
+
'desc' => __( 'Accordion with spoilers', 'su' ),
|
198 |
+
'icon' => 'icon-list'
|
199 |
),
|
200 |
// divider
|
201 |
'divider' => array(
|
221 |
)
|
222 |
),
|
223 |
'usage' => '[divider top="yes" text="Go to top"]',
|
224 |
+
'desc' => __( 'Content divider with optional TOP link', 'su' ),
|
225 |
+
'icon' => 'icon-ellipsis-horizontal'
|
226 |
),
|
227 |
// spacer
|
228 |
'spacer' => array(
|
245 |
)
|
246 |
),
|
247 |
'usage' => '[spacer size="20"]',
|
248 |
+
'desc' => __( 'Empty space with adjustable height', 'su' ),
|
249 |
+
'icon' => 'icon-resize-vertical'
|
250 |
),
|
251 |
// highlight
|
252 |
'highlight' => array(
|
274 |
)
|
275 |
),
|
276 |
'usage' => '[highlight background="#DDFF99" color="#000000"] Content [/highlight]', 'content' => __( 'Highlighted text', 'su' ),
|
277 |
+
'desc' => __( 'Highlighted text', 'su' ),
|
278 |
+
'icon' => 'icon-pencil'
|
279 |
),
|
280 |
// label
|
281 |
'label' => array(
|
304 |
)
|
305 |
),
|
306 |
'usage' => '[label type="info"] Information [/label]', 'content' => __( 'Label', 'su' ),
|
307 |
+
'desc' => __( 'Styled label', 'su' ),
|
308 |
+
'icon' => 'icon-tag'
|
309 |
),
|
310 |
// quote
|
311 |
'quote' => array(
|
332 |
)
|
333 |
),
|
334 |
'usage' => '[quote style="default"] Content [/quote]', 'content' => __( 'Quote', 'su' ),
|
335 |
+
'desc' => __( 'Blockquote alternative', 'su' ),
|
336 |
+
'icon' => 'icon-quote-right'
|
337 |
),
|
338 |
// pullquote
|
339 |
'pullquote' => array(
|
357 |
)
|
358 |
),
|
359 |
'usage' => '[pullquote align="left"] Content [/pullquote]', 'content' => __( 'Pullquote', 'su' ),
|
360 |
+
'desc' => __( 'Pullquote', 'su' ),
|
361 |
+
'icon' => 'icon-quote-left'
|
362 |
),
|
363 |
// dropcap
|
364 |
'dropcap' => array(
|
389 |
)
|
390 |
),
|
391 |
'usage' => '[dropcap style="default"]D[/dropcap]ropcap', 'content' => __( 'D', 'su' ),
|
392 |
+
'desc' => __( 'Dropcap', 'su' ),
|
393 |
+
'icon' => 'icon-bold'
|
394 |
),
|
395 |
// frame
|
396 |
'frame' => array(
|
417 |
),
|
418 |
'usage' => '[frame align="center"]<img src="image.jpg">[/frame]',
|
419 |
'content' => '<img src="http://lorempixel.com/g/400/200/" />',
|
420 |
+
'desc' => __( 'Styled image frame', 'su' ),
|
421 |
+
'icon' => 'icon-picture'
|
422 |
),
|
423 |
// row
|
424 |
'row' => array(
|
434 |
),
|
435 |
'usage' => '[row]<br/>[column size="1/2"] 50% [/column]<br/>[column size="1/4"] 25% [/column]<br/>[column size="1/4"] 25% [/column]<br/>[/row]',
|
436 |
'content' => __( "[%prefix_column size=\"1/3\"]Content[/%prefix_column]\n[%prefix_column size=\"1/3\"]Content[/%prefix_column]\n[%prefix_column size=\"1/3\"]Content[/%prefix_column]", 'su' ),
|
437 |
+
'desc' => __( 'Row for flexible columns', 'su' ),
|
438 |
+
'icon' => 'icon-columns'
|
439 |
),
|
440 |
// column
|
441 |
'column' => array(
|
475 |
'desc' => __( 'Extra CSS class', 'su' )
|
476 |
)
|
477 |
),
|
478 |
+
'usage' => '[row]<br/>[column size="6"] 50% [/column]<br/>[column size="3"] 25% [/column]<br/>[column size="3"] 25% [/column]<br/>[/row]',
|
479 |
+
'content' => __( 'Column content', 'su' ),
|
480 |
+
'desc' => __( 'Flexible and responsive columns', 'su' ),
|
481 |
+
'icon' => 'icon-columns'
|
482 |
),
|
483 |
// list
|
484 |
'list' => array(
|
515 |
)
|
516 |
),
|
517 |
'usage' => '[list style="check"] <ul> <li> List item </li> </ul> [/list]',
|
518 |
+
'content' => __( "<ul>\n<li>List item</li>\n<li>List item</li>\n<li>List item</li>\n</ul>", 'su' ),
|
519 |
+
'desc' => __( 'Styled unordered list', 'su' ),
|
520 |
+
'icon' => 'icon-list-ol'
|
521 |
),
|
522 |
// button
|
523 |
'button' => array(
|
631 |
'desc' => __( 'Extra CSS class', 'su' )
|
632 |
)
|
633 |
),
|
634 |
+
'usage' => '[button url="#" background="#b00" size="3" style="default"] Button text [/button]',
|
635 |
+
'content' => __( 'Button text', 'su' ),
|
636 |
+
'desc' => __( 'Styled button', 'su' ),
|
637 |
+
'icon' => 'icon-heart'
|
638 |
),
|
639 |
// service
|
640 |
'service' => array(
|
667 |
'desc' => __( 'Extra CSS class', 'su' )
|
668 |
)
|
669 |
),
|
670 |
+
'usage' => '[service title="Service title" icon="service.png" size="32"] Service description [/service]',
|
671 |
+
'content' => __( 'Service description', 'su' ),
|
672 |
+
'desc' => __( 'Service box with title', 'su' ),
|
673 |
+
'icon' => 'icon-check'
|
674 |
),
|
675 |
// box
|
676 |
'box' => array(
|
724 |
),
|
725 |
'usage' => '[box title="Box title"] Content [/box]',
|
726 |
'content' => __( 'Box content', 'su' ),
|
727 |
+
'desc' => __( 'Colored box with caption', 'su' ),
|
728 |
+
'icon' => 'icon-list-alt'
|
729 |
),
|
730 |
// note
|
731 |
'note' => array(
|
759 |
)
|
760 |
),
|
761 |
'usage' => '[note background="#FFCC00"] Content [/note]', 'content' => __( 'Note text', 'su' ),
|
762 |
+
'desc' => __( 'Colored box', 'su' ),
|
763 |
+
'icon' => 'icon-list-alt'
|
764 |
),
|
765 |
// lightbox
|
766 |
'lightbox' => array(
|
792 |
),
|
793 |
'usage' => '[lightbox src="http://example.com/" type="iframe"] Open example.com [/lightbox]',
|
794 |
'content' => __( '[%prefix_button] Click Here to Watch the Video [/%prefix_button]', 'su' ),
|
795 |
+
'desc' => __( 'Lightbox window with custom content', 'su' ),
|
796 |
+
'icon' => 'icon-external-link'
|
797 |
),
|
798 |
// tooltip
|
799 |
'tooltip' => array(
|
895 |
),
|
896 |
'usage' => '[tooltip] Hover me [/lightbox]',
|
897 |
'content' => __( '[%prefix_button] Hover me to open tooltip [/%prefix_button]', 'su' ),
|
898 |
+
'desc' => __( 'Tooltip window with custom content', 'su' ),
|
899 |
+
'icon' => 'icon-comment-alt'
|
900 |
),
|
901 |
// private
|
902 |
'private' => array(
|
911 |
)
|
912 |
),
|
913 |
'usage' => '[private] Private content [/private]',
|
914 |
+
'content' => __( 'Private note text', 'su' ),
|
915 |
+
'desc' => __( 'Private note for post authors', 'su' ),
|
916 |
+
'icon' => 'icon-lock'
|
917 |
),
|
918 |
// youtube
|
919 |
'youtube' => array(
|
963 |
'desc' => __( 'Extra CSS class', 'su' )
|
964 |
)
|
965 |
),
|
966 |
+
'usage' => '[youtube url="http://www.youtube.com/watch?v=NbE8INOjTKM"]',
|
967 |
+
'desc' => __( 'YouTube video', 'su' ),
|
968 |
+
'icon' => 'icon-youtube-play'
|
969 |
),
|
970 |
// vimeo
|
971 |
'vimeo' => array(
|
1014 |
'desc' => __( 'Extra CSS class', 'su' )
|
1015 |
)
|
1016 |
),
|
1017 |
+
'usage' => '[vimeo url="http://vimeo.com/21294655"]',
|
1018 |
+
'desc' => __( 'Vimeo video', 'su' ),
|
1019 |
+
'icon' => 'icon-youtube-play'
|
1020 |
),
|
1021 |
// screenr
|
1022 |
'screenr' => array(
|
1058 |
'desc' => __( 'Extra CSS class', 'su' )
|
1059 |
)
|
1060 |
),
|
1061 |
+
'usage' => '[screenr url="http://www.screenr.com/OuWH"]',
|
1062 |
+
'desc' => __( 'Screenr video', 'su' ),
|
1063 |
+
'icon' => 'icon-youtube-play'
|
1064 |
),
|
1065 |
// audio
|
1066 |
'audio' => array(
|
1099 |
)
|
1100 |
),
|
1101 |
'usage' => '[audio url="http://example.com/audio.mp3"]',
|
1102 |
+
'desc' => __( 'Custom audio player', 'su' ),
|
1103 |
+
'icon' => 'icon-play-circle'
|
1104 |
),
|
1105 |
// video
|
1106 |
'video' => array(
|
1169 |
)
|
1170 |
),
|
1171 |
'usage' => '[video url="http://example.com/video.mp4"]',
|
1172 |
+
'desc' => __( 'Custom video player', 'su' ),
|
1173 |
+
'icon' => 'icon-play-circle'
|
1174 |
),
|
1175 |
// table
|
1176 |
'table' => array(
|
1192 |
),
|
1193 |
'usage' => '[table style="default"] <table> ... </table> [/table]<br/>[table style="default" url="http://example.com/file.csv"] [/table]',
|
1194 |
'content' => __( "<table>\n<tr>\n\t<td>Table</td>\n\t<td>Table</td>\n</tr>\n<tr>\n\t<td>Table</td>\n\t<td>Table</td>\n</tr>\n</table>", 'su' ),
|
1195 |
+
'desc' => __( 'Styled table from HTML or CSV file', 'su' ),
|
1196 |
+
'icon' => 'icon-table'
|
1197 |
),
|
1198 |
// permalink
|
1199 |
'permalink' => array(
|
1224 |
),
|
1225 |
'usage' => '[permalink id=52]<br/>[permalink id="52" target="blank"] Content [/permalink]',
|
1226 |
'content' => '',
|
1227 |
+
'desc' => __( 'Permalink to specified post/page', 'su' ),
|
1228 |
+
'icon' => 'icon-link'
|
1229 |
),
|
1230 |
// members
|
1231 |
'members' => array(
|
1258 |
),
|
1259 |
'usage' => '[members style="default"] Content for logged members [/members]',
|
1260 |
'content' => __( 'Content for logged members', 'su' ),
|
1261 |
+
'desc' => __( 'Content for logged in members only', 'su' ),
|
1262 |
+
'icon' => 'icon-lock'
|
1263 |
),
|
1264 |
// guests
|
1265 |
'guests' => array(
|
1273 |
'desc' => __( 'Extra CSS class', 'su' )
|
1274 |
)
|
1275 |
),
|
1276 |
+
'usage' => '[guests] Content for guests [/guests]',
|
1277 |
+
'content' => __( 'Content for guests', 'su' ),
|
1278 |
+
'desc' => __( 'Content for guests only', 'su' ),
|
1279 |
+
'icon' => 'icon-user'
|
1280 |
),
|
1281 |
// feed
|
1282 |
'feed' => array(
|
1301 |
'desc' => __( 'Extra CSS class', 'su' )
|
1302 |
)
|
1303 |
),
|
1304 |
+
'usage' => '[feed url="http://rss1.smashingmagazine.com/feed/" limit="5"]',
|
1305 |
+
'desc' => __( 'Feed grabber', 'su' ),
|
1306 |
+
'icon' => 'icon-rss'
|
1307 |
),
|
1308 |
// menu
|
1309 |
'menu' => array(
|
1322 |
'desc' => __( 'Extra CSS class', 'su' )
|
1323 |
)
|
1324 |
),
|
1325 |
+
'usage' => '[menu name="Main menu"]',
|
1326 |
+
'desc' => __( 'Custom menu by name', 'su' ),
|
1327 |
+
'icon' => 'icon-reorder'
|
1328 |
),
|
1329 |
// subpages
|
1330 |
'subpages' => array(
|
1350 |
'desc' => __( 'Extra CSS class', 'su' )
|
1351 |
)
|
1352 |
),
|
1353 |
+
'usage' => '[subpages]<br/>[subpages depth="2" p="122"]',
|
1354 |
+
'desc' => __( 'List of sub pages', 'su' ),
|
1355 |
+
'icon' => 'icon-reorder'
|
1356 |
),
|
1357 |
// siblings
|
1358 |
'siblings' => array(
|
1372 |
'desc' => __( 'Extra CSS class', 'su' )
|
1373 |
)
|
1374 |
),
|
1375 |
+
'usage' => '[siblings]<br/>[siblings depth="2"]',
|
1376 |
+
'desc' => __( 'List of cureent page siblings', 'su' ),
|
1377 |
+
'icon' => 'icon-reorder'
|
1378 |
),
|
1379 |
// document
|
1380 |
'document' => array(
|
1418 |
'desc' => __( 'Extra CSS class', 'su' )
|
1419 |
)
|
1420 |
),
|
1421 |
+
'usage' => '[document url="file.doc" width="600" height="400"]',
|
1422 |
+
'desc' => __( 'Document viewer by Google', 'su' ),
|
1423 |
+
'icon' => 'icon-file-text'
|
1424 |
),
|
1425 |
// gmap
|
1426 |
'gmap' => array(
|
1464 |
'desc' => __( 'Extra CSS class', 'su' )
|
1465 |
)
|
1466 |
),
|
1467 |
+
'usage' => '[gmap width="600" height="400" address="New York"]',
|
1468 |
+
'desc' => __( 'Maps by Google', 'su' ),
|
1469 |
+
'icon' => 'icon-globe'
|
1470 |
),
|
1471 |
// slider
|
1472 |
'slider' => array(
|
1556 |
'desc' => __( 'Extra CSS class', 'su' )
|
1557 |
)
|
1558 |
),
|
1559 |
+
'usage' => '[slider gallery="1"]',
|
1560 |
+
'desc' => __( 'Customizable image slider', 'su' ),
|
1561 |
+
'icon' => 'icon-picture'
|
1562 |
),
|
1563 |
// carousel
|
1564 |
'carousel' => array(
|
1664 |
'desc' => __( 'Extra CSS class', 'su' )
|
1665 |
)
|
1666 |
),
|
1667 |
+
'usage' => '[carousel gallery="1"]',
|
1668 |
+
'desc' => __( 'Customizable image carousel', 'su' ),
|
1669 |
+
'icon' => 'icon-picture'
|
1670 |
),
|
1671 |
// custom_gallery
|
1672 |
'custom_gallery' => array(
|
1717 |
'desc' => __( 'Extra CSS class', 'su' )
|
1718 |
)
|
1719 |
),
|
1720 |
+
'usage' => '[custom_gallery gallery="1"]',
|
1721 |
+
'desc' => __( 'Customizable image gallery', 'su' ),
|
1722 |
+
'icon' => 'icon-picture'
|
1723 |
),
|
1724 |
// posts
|
1725 |
'posts' => array(
|
1851 |
)
|
1852 |
),
|
1853 |
'usage' => '[posts template="templates/posts.php"]',
|
1854 |
+
'desc' => __( 'Custom posts query with customizable template', 'su' ),
|
1855 |
+
'icon' => 'icon-th-list'
|
1856 |
)
|
1857 |
) );
|
1858 |
// Return result
|
inc/core/class.generator.php
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
-
*
|
5 |
*/
|
6 |
class Shortcodes_Ultimate_Generator {
|
7 |
|
@@ -24,14 +23,6 @@ class Shortcodes_Ultimate_Generator {
|
|
24 |
|
25 |
/**
|
26 |
* Generator button
|
27 |
-
*
|
28 |
-
* @param string $target
|
29 |
-
* @param unknown
|
30 |
-
* @param string $class
|
31 |
-
* @param bool $icon
|
32 |
-
* @param bool $echo
|
33 |
-
*
|
34 |
-
* @return string
|
35 |
*/
|
36 |
public static function button( $args = array() ) {
|
37 |
// Check access
|
@@ -43,7 +34,7 @@ class Shortcodes_Ultimate_Generator {
|
|
43 |
'target' => 'content',
|
44 |
'text' => __( 'Insert shortcode', 'su' ),
|
45 |
'class' => 'button',
|
46 |
-
'icon' =>
|
47 |
'echo' => true,
|
48 |
'shortcode' => false
|
49 |
) );
|
@@ -55,7 +46,7 @@ class Shortcodes_Ultimate_Generator {
|
|
55 |
add_action( 'wp_footer', array( __CLASS__, 'popup' ) );
|
56 |
add_action( 'admin_footer', array( __CLASS__, 'popup' ) );
|
57 |
// Request assets
|
58 |
-
su_query_asset( 'css', array( 'farbtastic', 'qtip', 'magnific-popup', 'su-generator' ) );
|
59 |
su_query_asset( 'js', array( 'jquery', 'jquery-ui-widget', 'iframe-transport', 'fileupload', 'farbtastic', 'qtip', 'magnific-popup', 'su-generator' ) );
|
60 |
// Print/return result
|
61 |
if ( $args['echo'] ) echo $button;
|
@@ -63,7 +54,7 @@ class Shortcodes_Ultimate_Generator {
|
|
63 |
}
|
64 |
|
65 |
/**
|
66 |
-
*
|
67 |
*/
|
68 |
public static function reset() {
|
69 |
// Clear popup cache
|
@@ -77,6 +68,7 @@ class Shortcodes_Ultimate_Generator {
|
|
77 |
* Generator popup form
|
78 |
*/
|
79 |
public static function popup() {
|
|
|
80 |
// Get cache
|
81 |
$output = get_transient( 'su/generator/popup' );
|
82 |
if ( $output ) echo $output;
|
@@ -103,8 +95,8 @@ class Shortcodes_Ultimate_Generator {
|
|
103 |
<?php
|
104 |
// Choices loop
|
105 |
foreach ( (array) Shortcodes_Ultimate_Data::shortcodes() as $name => $shortcode ) {
|
106 |
-
$icon = ( isset( $shortcode['icon'] ) ) ? $shortcode['icon'] :
|
107 |
-
echo '<span data-shortcode="' . $name . '" title="' . esc_attr( $shortcode['desc'] ) . '" data-desc="' . esc_attr( $shortcode['desc'] ) . '" data-group="' . $shortcode['group'] . '"
|
108 |
}
|
109 |
?>
|
110 |
</div>
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
+
* Shortcode Generator
|
4 |
*/
|
5 |
class Shortcodes_Ultimate_Generator {
|
6 |
|
23 |
|
24 |
/**
|
25 |
* Generator button
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
*/
|
27 |
public static function button( $args = array() ) {
|
28 |
// Check access
|
34 |
'target' => 'content',
|
35 |
'text' => __( 'Insert shortcode', 'su' ),
|
36 |
'class' => 'button',
|
37 |
+
'icon' => plugins_url( 'assets/images/generator/icon.png', SU_PLUGIN_FILE ),
|
38 |
'echo' => true,
|
39 |
'shortcode' => false
|
40 |
) );
|
46 |
add_action( 'wp_footer', array( __CLASS__, 'popup' ) );
|
47 |
add_action( 'admin_footer', array( __CLASS__, 'popup' ) );
|
48 |
// Request assets
|
49 |
+
su_query_asset( 'css', array( 'farbtastic', 'qtip', 'magnific-popup', 'font-awesome', 'su-generator' ) );
|
50 |
su_query_asset( 'js', array( 'jquery', 'jquery-ui-widget', 'iframe-transport', 'fileupload', 'farbtastic', 'qtip', 'magnific-popup', 'su-generator' ) );
|
51 |
// Print/return result
|
52 |
if ( $args['echo'] ) echo $button;
|
54 |
}
|
55 |
|
56 |
/**
|
57 |
+
* Cache reset
|
58 |
*/
|
59 |
public static function reset() {
|
60 |
// Clear popup cache
|
68 |
* Generator popup form
|
69 |
*/
|
70 |
public static function popup() {
|
71 |
+
self::reset(); //////////////////////////////////////////////////////////////////////////////////////////
|
72 |
// Get cache
|
73 |
$output = get_transient( 'su/generator/popup' );
|
74 |
if ( $output ) echo $output;
|
95 |
<?php
|
96 |
// Choices loop
|
97 |
foreach ( (array) Shortcodes_Ultimate_Data::shortcodes() as $name => $shortcode ) {
|
98 |
+
$icon = ( isset( $shortcode['icon'] ) ) ? $shortcode['icon'] : '';
|
99 |
+
echo '<span data-shortcode="' . $name . '" title="' . esc_attr( $shortcode['desc'] ) . '" data-desc="' . esc_attr( $shortcode['desc'] ) . '" data-group="' . $shortcode['group'] . '">' . Shortcodes_Ultimate_Tools::icon( $icon ) . $shortcode['name'] . '</span>' . "\n";
|
100 |
}
|
101 |
?>
|
102 |
</div>
|
inc/core/class.shortcodes.php
ADDED
@@ -0,0 +1,1069 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Shortcodes_Ultimate_Shortcodes {
|
4 |
+
static $tabs = array();
|
5 |
+
static $tab_count = 0;
|
6 |
+
|
7 |
+
function __construct() {}
|
8 |
+
|
9 |
+
public static function heading( $atts = null, $content = null ) {
|
10 |
+
$atts = shortcode_atts( array(
|
11 |
+
'size' => 3,
|
12 |
+
'align' => 'center',
|
13 |
+
'class' => ''
|
14 |
+
), $atts );
|
15 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
16 |
+
$size = round( ( $atts['size'] + 7 ) * 1.3 );
|
17 |
+
return '<div class="su-heading su-heading-align-' . $atts['align'] . su_ecssc( $atts ) . '" style="font-size:' . $size . 'px"><div class="su-heading-inner">' . $content . '</div></div>';
|
18 |
+
}
|
19 |
+
|
20 |
+
public static function tabs( $atts = null, $content = null ) {
|
21 |
+
$atts = shortcode_atts( array(
|
22 |
+
'active' => 1,
|
23 |
+
'vertical' => 'no',
|
24 |
+
'style' => null, // 3.x
|
25 |
+
'class' => ''
|
26 |
+
), $atts );
|
27 |
+
if ( $atts['style'] == '3' ) $atts['vertical'] = 'yes';
|
28 |
+
self::$tabs = array();
|
29 |
+
self::$tab_count = 0;
|
30 |
+
do_shortcode( $content );
|
31 |
+
$return = '';
|
32 |
+
$tabs = $panes = array();
|
33 |
+
if ( is_array( self::$tabs ) ) {
|
34 |
+
if ( self::$tab_count < $atts['active'] ) $atts['active'] = self::$tab_count;
|
35 |
+
foreach ( self::$tabs as $tab ) {
|
36 |
+
$tabs[] = '<span class="' . su_ecssc( $tab ) . $tab['disabled'] . '">' . su_scattr( $tab['title'] ) . '</span>';
|
37 |
+
$panes[] = '<div class="su-tabs-pane' . su_ecssc( $tab ) . '">' . $tab['content'] . '</div>';
|
38 |
+
}
|
39 |
+
$vertical = ( $atts['vertical'] === 'yes' ) ? ' su-tabs-vertical' : '';
|
40 |
+
$return = '<div class="su-tabs' . $vertical . su_ecssc( $atts ) . '" data-active="' . (string) $atts['active'] . '"><div class="su-tabs-nav">' . implode( '', $tabs ) . '</div><div class="su-tabs-panes">' . implode( "\n", $panes ) . '</div><div style="clear:both;height:0"></div></div>';
|
41 |
+
}
|
42 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
43 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
44 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-other-shortcodes' );
|
45 |
+
return $return;
|
46 |
+
}
|
47 |
+
|
48 |
+
public static function tab( $atts = null, $content = null ) {
|
49 |
+
$atts = shortcode_atts( array(
|
50 |
+
'title' => __( 'Tab title', 'su' ),
|
51 |
+
'disabled' => 'no',
|
52 |
+
'class' => ''
|
53 |
+
), $atts );
|
54 |
+
$x = self::$tab_count;
|
55 |
+
self::$tabs[$x] = array(
|
56 |
+
'title' => $atts['title'],
|
57 |
+
'content' => do_shortcode( $content ),
|
58 |
+
'disabled' => ( $atts['disabled'] === 'yes' ) ? ' su-tabs-disabled' : '',
|
59 |
+
'class' => $atts['class']
|
60 |
+
);
|
61 |
+
self::$tab_count++;
|
62 |
+
}
|
63 |
+
|
64 |
+
public static function spoiler( $atts = null, $content = null ) {
|
65 |
+
$atts = shortcode_atts( array(
|
66 |
+
'title' => __( 'Spoiler title', 'su' ),
|
67 |
+
'open' => 'no',
|
68 |
+
'style' => 'default',
|
69 |
+
'class' => ''
|
70 |
+
), $atts );
|
71 |
+
$atts['style'] = str_replace( array( '1', '2' ), array( 'default', 'fancy' ), $atts['style'] );
|
72 |
+
$closed = ( $atts['open'] !== 'yes' ) ? ' su-spoiler-closed' : '';
|
73 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
74 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
75 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-other-shortcodes' );
|
76 |
+
return '<div class="su-spoiler su-spoiler-style-' . $atts['style'] . $closed . su_ecssc( $atts ) . '"><div class="su-spoiler-title"><span class="su-spoiler-icon"></span>' . su_scattr( $atts['title'] ) . '</div><div class="su-spoiler-content">' . su_do_shortcode( $content, 's' ) . '</div></div>';
|
77 |
+
}
|
78 |
+
|
79 |
+
public static function accordion( $atts = null, $content = null ) {
|
80 |
+
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
81 |
+
return '<div class="su-accordion' . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</div>';
|
82 |
+
}
|
83 |
+
|
84 |
+
public static function divider( $atts = null, $content = null ) {
|
85 |
+
$atts = shortcode_atts( array(
|
86 |
+
'top' => 'yes',
|
87 |
+
'text' => __( 'Go to top', 'su' ),
|
88 |
+
'class' => ''
|
89 |
+
), $atts );
|
90 |
+
$top = ( $atts['top'] === 'yes' ) ? '<a href="#">' . su_scattr( $atts['text'] ) . '</a>' : '';
|
91 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
92 |
+
return '<div class="su-divider' . su_ecssc( $atts ) . '">' . $top . '</div>';
|
93 |
+
}
|
94 |
+
|
95 |
+
public static function spacer( $atts = null, $content = null ) {
|
96 |
+
$atts = shortcode_atts( array(
|
97 |
+
'size' => 0,
|
98 |
+
'class' => ''
|
99 |
+
), $atts );
|
100 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
101 |
+
return '<div class="su-spacer' . su_ecssc( $atts ) . '" style="height:' . $atts['size'] . 'px"></div>';
|
102 |
+
}
|
103 |
+
|
104 |
+
public static function highlight( $atts = null, $content = null ) {
|
105 |
+
$atts = shortcode_atts( array(
|
106 |
+
'background' => '#ddff99',
|
107 |
+
'bg' => null, // 3.x
|
108 |
+
'color' => '#000000',
|
109 |
+
'class' => ''
|
110 |
+
), $atts );
|
111 |
+
if ( $atts['bg'] !== null ) $atts['background'] = $atts['bg'];
|
112 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
113 |
+
return '<span class="su-highlight' . su_ecssc( $atts ) . '" style="background:' . $atts['background'] . ';color:' . $atts['color'] . '"> ' . do_shortcode( $content ) . ' </span>';
|
114 |
+
}
|
115 |
+
|
116 |
+
public static function label( $atts = null, $content = null ) {
|
117 |
+
$atts = shortcode_atts( array(
|
118 |
+
'type' => 'default',
|
119 |
+
'style' => null, // 3.x
|
120 |
+
'class' => ''
|
121 |
+
), $atts );
|
122 |
+
if ( $atts['style'] !== null ) $atts['type'] = $atts['style'];
|
123 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
124 |
+
return '<span class="su-label su-label-type-' . $atts['type'] . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</span>';
|
125 |
+
}
|
126 |
+
|
127 |
+
public static function quote( $atts = null, $content = null ) {
|
128 |
+
$atts = shortcode_atts( array(
|
129 |
+
'cite' => false,
|
130 |
+
'url' => false,
|
131 |
+
'class' => ''
|
132 |
+
), $atts );
|
133 |
+
$cite_link = ( $atts['url'] && $atts['cite'] ) ? '<a href="' . $atts['url'] . '">' . $atts['cite'] . '</a>'
|
134 |
+
: $atts['cite'];
|
135 |
+
$cite = ( $atts['cite'] ) ? '<span class="su-quote-cite">— ' . $cite_link . '</span>' : '';
|
136 |
+
$cite_class = ( $atts['cite'] ) ? ' su-quote-has-cite' : '';
|
137 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
138 |
+
return '<div class="su-quote' . $cite_class . su_ecssc( $atts ) . '"><div class="su-quote-inner">' . do_shortcode( $content ) . su_scattr( $cite ) . '</div></div>';
|
139 |
+
}
|
140 |
+
|
141 |
+
public static function pullquote( $atts = null, $content = null ) {
|
142 |
+
$atts = shortcode_atts( array(
|
143 |
+
'align' => 'left',
|
144 |
+
'class' => ''
|
145 |
+
), $atts );
|
146 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
147 |
+
return '<div class="su-pullquote su-pullquote-align-' . $atts['align'] . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</div>';
|
148 |
+
}
|
149 |
+
|
150 |
+
public static function dropcap( $atts = null, $content = null ) {
|
151 |
+
$atts = shortcode_atts( array(
|
152 |
+
'style' => 'default',
|
153 |
+
'size' => 3,
|
154 |
+
'class' => ''
|
155 |
+
), $atts );
|
156 |
+
$atts['style'] = str_replace( array( '1', '2', '3' ), array( 'default', 'light', 'default' ), $atts['style'] ); // 3.x
|
157 |
+
// Calculate font-size
|
158 |
+
$em = $atts['size'] * 0.5 . 'em';
|
159 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
160 |
+
return '<span class="su-dropcap su-dropcap-style-' . $atts['style'] . su_ecssc( $atts ) . '" style="font-size:' . $em . '">' . do_shortcode( $content ) . '</span>';
|
161 |
+
}
|
162 |
+
|
163 |
+
public static function frame( $atts = null, $content = null ) {
|
164 |
+
$atts = shortcode_atts( array(
|
165 |
+
'style' => 'default',
|
166 |
+
'align' => 'left',
|
167 |
+
'class' => ''
|
168 |
+
), $atts );
|
169 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
170 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-other-shortcodes' );
|
171 |
+
return '<span class="su-frame su-frame-align-' . $atts['align'] . ' su-frame-style-' . $atts['style'] . su_ecssc( $atts ) . '"><span class="su-frame-inner">' . do_shortcode( $content ) . '</span></span>';
|
172 |
+
}
|
173 |
+
|
174 |
+
public static function row( $atts = null, $content = null ) {
|
175 |
+
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
176 |
+
return '<div class="su-row' . su_ecssc( $atts ) . '">' . su_do_shortcode( $content, 'r' ) . '</div>';
|
177 |
+
}
|
178 |
+
|
179 |
+
public static function column( $atts = null, $content = null ) {
|
180 |
+
$atts = shortcode_atts( array(
|
181 |
+
'size' => '1/2',
|
182 |
+
'center' => 'no',
|
183 |
+
'last' => null,
|
184 |
+
'class' => ''
|
185 |
+
), $atts );
|
186 |
+
if ( $atts['last'] !== null && $atts['last'] == '1' ) $atts['class'] .= ' su-column-last';
|
187 |
+
if ( $atts['center'] === 'yes' ) $atts['class'] .= ' su-column-centered';
|
188 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
189 |
+
return '<div class="su-column su-column-size-' . str_replace( '/', '-', $atts['size'] ) . su_ecssc( $atts ) . '"><div class="su-column-inner">' . su_do_shortcode( $content, 'c' ) . '</div></div>';
|
190 |
+
}
|
191 |
+
|
192 |
+
public static function su_list( $atts = null, $content = null ) {
|
193 |
+
$atts = shortcode_atts( array(
|
194 |
+
'style' => 'star',
|
195 |
+
'class' => ''
|
196 |
+
), $atts );
|
197 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
198 |
+
return '<div class="su-list su-list-style-' . $atts['style'] . su_ecssc( $atts ) . '">' . su_do_shortcode( $content, 'l' ) . '</div>';
|
199 |
+
}
|
200 |
+
|
201 |
+
public static function button( $atts = null, $content = null ) {
|
202 |
+
$atts = shortcode_atts( array(
|
203 |
+
'url' => get_option( 'home' ),
|
204 |
+
'link' => null, // 3.x
|
205 |
+
'target' => 'self',
|
206 |
+
'style' => 'default',
|
207 |
+
'background' => '#2D89EF',
|
208 |
+
'color' => '#FFFFFF',
|
209 |
+
'dark' => null, // 3.x
|
210 |
+
'size' => 3,
|
211 |
+
'wide' => 'no',
|
212 |
+
'center' => 'no',
|
213 |
+
'radius' => 'auto',
|
214 |
+
'icon' => false,
|
215 |
+
'ts_color' => 'dark',
|
216 |
+
'ts_pos' => 'none',
|
217 |
+
'desc' => '',
|
218 |
+
'class' => ''
|
219 |
+
), $atts );
|
220 |
+
|
221 |
+
if ( $atts['link'] !== null ) $atts['url'] = $atts['link'];
|
222 |
+
if ( $atts['dark'] !== null ) {
|
223 |
+
$atts['background'] = $atts['color'];
|
224 |
+
$atts['color'] = ( $atts['dark'] ) ? '#000' : '#fff';
|
225 |
+
}
|
226 |
+
if ( is_numeric( $atts['style'] ) ) $atts['style'] = str_replace( array( '1', '2', '3', '4', '5' ), array( 'default', 'glass', 'bubbles', 'noise', 'stroked' ), $atts['style'] ); // 3.x
|
227 |
+
// Prepare vars
|
228 |
+
$a_css = array();
|
229 |
+
$span_css = array();
|
230 |
+
$img_css = array();
|
231 |
+
$small_css = array();
|
232 |
+
$radius = '0px';
|
233 |
+
$before = $after = '';
|
234 |
+
// Text shadow values
|
235 |
+
$shadows = array(
|
236 |
+
'none' => '0 0',
|
237 |
+
'top' => '0 -1px',
|
238 |
+
'right' => '1px 0',
|
239 |
+
'bottom' => '0 1px',
|
240 |
+
'left' => '-1px 0',
|
241 |
+
'top-right' => '1px -1px',
|
242 |
+
'top-left' => '-1px -1px',
|
243 |
+
'bottom-right' => '1px 1px',
|
244 |
+
'bottom-left' => '-1px 1px'
|
245 |
+
);
|
246 |
+
// Common styles for button
|
247 |
+
$styles = array(
|
248 |
+
'size' => round( ( $atts['size'] + 7 ) * 1.3 ),
|
249 |
+
'ts_color' => ( $atts['ts_color'] === 'light' ) ? su_hex_shift( $atts['background'], 'lighter', 50 ) : su_hex_shift( $atts['background'], 'darker', 40 ),
|
250 |
+
'ts_pos' => $shadows[$atts['ts_pos']]
|
251 |
+
);
|
252 |
+
// Calculate border-radius
|
253 |
+
if ( $atts['radius'] == 'auto' ) $radius = round( $atts['size'] + 2 ) . 'px';
|
254 |
+
elseif ( $atts['radius'] == 'round' ) $radius = round( ( ( $atts['size'] * 2 ) + 2 ) * 2 + $styles['size'] ) . 'px';
|
255 |
+
elseif ( is_numeric( $atts['radius'] ) ) $radius = intval( $atts['radius'] ) . 'px';
|
256 |
+
// CSS rules for <a> tag
|
257 |
+
$a_rules = array(
|
258 |
+
'color' => $atts['color'],
|
259 |
+
'background-color' => $atts['background'],
|
260 |
+
'border-color' => su_hex_shift( $atts['background'], 'darker', 20 ),
|
261 |
+
'border-radius' => $radius,
|
262 |
+
'-moz-border-radius' => $radius,
|
263 |
+
'-webkit-border-radius' => $radius
|
264 |
+
);
|
265 |
+
// CSS rules for <span> tag
|
266 |
+
$span_rules = array(
|
267 |
+
'color' => $atts['color'],
|
268 |
+
'padding' => ( $atts['icon'] ) ? round( ( $atts['size'] ) / 2 + 4 ) . 'px ' . round( $atts['size'] * 2 + 10 ) . 'px' : '0px ' . round( $atts['size'] * 2 + 10 ) . 'px',
|
269 |
+
'font-size' => $styles['size'] . 'px',
|
270 |
+
'line-height' => ( $atts['icon'] ) ? round( $styles['size'] * 1.5 ) . 'px' : round( $styles['size'] * 2 ) . 'px',
|
271 |
+
'border-color' => su_hex_shift( $atts['background'], 'lighter', 30 ),
|
272 |
+
'border-radius' => $radius,
|
273 |
+
'-moz-border-radius' => $radius,
|
274 |
+
'-webkit-border-radius' => $radius,
|
275 |
+
'text-shadow' => $styles['ts_pos'] . ' 1px ' . $styles['ts_color'],
|
276 |
+
'-moz-text-shadow' => $styles['ts_pos'] . ' 1px ' . $styles['ts_color'],
|
277 |
+
'-webkit-text-shadow' => $styles['ts_pos'] . ' 1px ' . $styles['ts_color']
|
278 |
+
);
|
279 |
+
// CSS rules for <img> tag
|
280 |
+
$img_rules = array(
|
281 |
+
'width' => round( $styles['size'] * 1.5 ) . 'px',
|
282 |
+
'height' => round( $styles['size'] * 1.5 ) . 'px'
|
283 |
+
);
|
284 |
+
// CSS rules for <small> tag
|
285 |
+
$small_rules = array(
|
286 |
+
'padding-bottom' => round( ( $atts['size'] ) / 2 + 4 ) . 'px',
|
287 |
+
'color' => $atts['color']
|
288 |
+
);
|
289 |
+
// Create style attr value for <a> tag
|
290 |
+
foreach ( $a_rules as $a_rule => $a_value ) $a_css[] = $a_rule . ':' . $a_value;
|
291 |
+
// Create style attr value for <span> tag
|
292 |
+
foreach ( $span_rules as $span_rule => $span_value ) $span_css[] = $span_rule . ':' . $span_value;
|
293 |
+
// Create style attr value for <img> tag
|
294 |
+
foreach ( $img_rules as $img_rule => $img_value ) $img_css[] = $img_rule . ':' . $img_value;
|
295 |
+
// Create style attr value for <img> tag
|
296 |
+
foreach ( $small_rules as $small_rule => $small_value ) $small_css[] = $small_rule . ':' . $small_value;
|
297 |
+
// Prepare button classes
|
298 |
+
$classes = array( 'su-button', 'su-button-style-' . $atts['style'] );
|
299 |
+
// Additional classes
|
300 |
+
if ( $atts['class'] ) $classes[] = $atts['class'];
|
301 |
+
// Wide class
|
302 |
+
if ( $atts['wide'] === 'yes' ) $classes[] = 'su-button-wide';
|
303 |
+
// Prepare icon
|
304 |
+
$icon = ( $atts['icon'] ) ? '<img src="' . $atts['icon'] . '" alt="' . esc_attr( $content ) . '" style="' . implode( $img_css, ';' ) . '" />' : '';
|
305 |
+
// Prepare <small> with description
|
306 |
+
$desc = ( $atts['desc'] ) ? '<small style="' . implode( $small_css, ';' ) . '">' . su_scattr( $atts['desc'] ) . '</small>' : '';
|
307 |
+
// Wrap with div if button centered
|
308 |
+
if ( $atts['center'] === 'yes' ) {
|
309 |
+
$before .= '<div class="su-button-center">';
|
310 |
+
$after .= '</div>';
|
311 |
+
}
|
312 |
+
// Replace icon marker in content,
|
313 |
+
// add float-icon class to rearrange margins
|
314 |
+
if ( strpos( $content, '%icon%' ) !== false ) {
|
315 |
+
$content = str_replace( '%icon%', $icon, $content );
|
316 |
+
$classes[] = 'su-button-float-icon';
|
317 |
+
}
|
318 |
+
// Button text has no icon marker, append icon to begin of the text
|
319 |
+
else $content = $icon . ' ' . $content;
|
320 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
321 |
+
return $before . '<a href="' . $atts['url'] . '" class="' . implode( $classes, ' ' ) . '" style="' . implode( $a_css, ';' ) . '" target="_' . $atts['target'] . '"><span style="' . implode( $span_css, ';' ) . '">' . $content . $desc . '</span></a>' . $after;
|
322 |
+
}
|
323 |
+
|
324 |
+
public static function service( $atts = null, $content = null ) {
|
325 |
+
$atts = shortcode_atts( array(
|
326 |
+
'title' => __( 'Service title', 'su' ),
|
327 |
+
'icon' => plugins_url( 'assets/images/service.png', SU_PLUGIN_FILE ),
|
328 |
+
'size' => 32,
|
329 |
+
'class' => ''
|
330 |
+
), $atts );
|
331 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
332 |
+
return '<div class="su-service' . su_ecssc( $atts ) . '"><div class="su-service-title" style="padding:' . round( ( $atts['size'] - 16 ) / 2 ) . 'px 0 ' . round( ( $atts['size'] - 16 ) / 2 ) . 'px ' . ( $atts['size'] + 15 ) . 'px"><img src="' . su_scattr( $atts['icon'] ) . '" width="' . $atts['size'] . '" height="' . $atts['size'] . '" alt="' . $atts['title'] . '" /> ' . su_scattr( $atts['title'] ) . '</div><div class="su-service-content" style="padding:0 0 0 ' . ( $atts['size'] + 15 ) . 'px">' . do_shortcode( $content ) . '</div></div>';
|
333 |
+
}
|
334 |
+
|
335 |
+
public static function box( $atts = null, $content = null ) {
|
336 |
+
$atts = shortcode_atts( array(
|
337 |
+
'title' => __( 'This is box title', 'su' ),
|
338 |
+
'style' => 'default',
|
339 |
+
'box_color' => '#333333',
|
340 |
+
'title_color' => '#FFFFFF',
|
341 |
+
'color' => null, // 3.x
|
342 |
+
'radius' => '3',
|
343 |
+
'class' => ''
|
344 |
+
), $atts );
|
345 |
+
if ( $atts['color'] !== null ) $atts['box_color'] = $atts['color'];
|
346 |
+
// Prepare border-radius
|
347 |
+
$radius = ( $atts['radius'] != '0' ) ?
|
348 |
+
'border-radius:' . $atts['radius'] . 'px;-moz-border-radius:' . $atts['radius'] .
|
349 |
+
'px;-webkit-border-radius:' . $atts['radius'] . 'px;' : '';
|
350 |
+
$title_radius = ( $atts['radius'] != '0' ) ? $atts['radius'] - 1 : '';
|
351 |
+
$title_radius = ( $title_radius ) ?
|
352 |
+
'-webkit-border-top-left-radius:' . $title_radius . 'px;-webkit-border-top-right-radius:' . $title_radius .
|
353 |
+
'px;-moz-border-radius-topleft:' . $title_radius . 'px;-moz-border-radius-topright:' . $title_radius .
|
354 |
+
'px;border-top-left-radius:' . $title_radius . 'px;border-top-right-radius:' . $title_radius . 'px;' : '';
|
355 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
356 |
+
// Return result
|
357 |
+
return
|
358 |
+
'<div class="su-box su-box-style-' . $atts['style'] . su_ecssc( $atts ) . '" style="border-color:' .
|
359 |
+
su_hex_shift( $atts['box_color'], 'darker', 20 ) . ';' . $radius .
|
360 |
+
'"><div class="su-box-title" style="background-color:' . $atts['box_color'] . ';color:' .
|
361 |
+
$atts['title_color'] . ';' . $title_radius . '">' . su_scattr( $atts['title'] ) . '</div><div class="su-box-content">' .
|
362 |
+
su_do_shortcode( $content, 'b' ) . '</div></div>';
|
363 |
+
}
|
364 |
+
|
365 |
+
public static function note( $atts = null, $content = null ) {
|
366 |
+
$atts = shortcode_atts( array(
|
367 |
+
'note_color' => '#FFFF66',
|
368 |
+
'text_color' => '#333333',
|
369 |
+
'background' => null, // 3.x
|
370 |
+
'color' => null, // 3.x
|
371 |
+
'radius' => '3',
|
372 |
+
'class' => ''
|
373 |
+
), $atts );
|
374 |
+
if ( $atts['color'] !== null ) $atts['note_color'] = $atts['color'];
|
375 |
+
if ( $atts['background'] !== null ) $atts['note_color'] = $atts['background'];
|
376 |
+
// Prepare border-radius
|
377 |
+
$radius = ( $atts['radius'] != '0' ) ? 'border-radius:' . $atts['radius'] . 'px;-moz-border-radius:' . $atts['radius'] . 'px;-webkit-border-radius:' . $atts['radius'] . 'px;' : '';
|
378 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-box-shortcodes' );
|
379 |
+
return '<div class="su-note' . su_ecssc( $atts ) . '" style="border-color:' . su_hex_shift( $atts['note_color'], 'darker', 10 ) . ';' . $radius . '"><div class="su-note-inner" style="background-color:' . $atts['note_color'] . ';border-color:' . su_hex_shift( $atts['note_color'], 'lighter', 80 ) . ';color:' . $atts['text_color'] . ';' . $radius . '">' . su_do_shortcode( $content, 'n' ) . '</div></div>';
|
380 |
+
}
|
381 |
+
|
382 |
+
public static function lightbox( $atts = null, $content = null ) {
|
383 |
+
$atts = shortcode_atts( array(
|
384 |
+
'src' => 'http://www.youtube.com/watch?v=NbE8INOjTKM',
|
385 |
+
'type' => 'iframe',
|
386 |
+
'class' => ''
|
387 |
+
), $atts );
|
388 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'magnific-popup' );
|
389 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
390 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'magnific-popup' );
|
391 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-other-shortcodes' );
|
392 |
+
return '<span class="su-lightbox' . su_ecssc( $atts ) . '" data-mfp-src="' . su_scattr( $atts['src'] ) . '" data-mfp-type="' . $atts['type'] . '">' . do_shortcode( $content ) . '</span>';
|
393 |
+
}
|
394 |
+
|
395 |
+
public static function tooltip( $atts = null, $content = null ) {
|
396 |
+
$atts = shortcode_atts( array(
|
397 |
+
'style' => 'yellow',
|
398 |
+
'position' => 'north',
|
399 |
+
'shadow' => 'no',
|
400 |
+
'rounded' => 'no',
|
401 |
+
'size' => 'default',
|
402 |
+
'title' => '',
|
403 |
+
'content' => __( 'Tooltip text', 'su' ),
|
404 |
+
'behavior' => 'hover',
|
405 |
+
'close' => 'no',
|
406 |
+
'class' => ''
|
407 |
+
), $atts );
|
408 |
+
// Prepare style
|
409 |
+
$atts['style'] = ( in_array( $atts['style'], array( 'light', 'dark', 'green', 'red', 'blue', 'youtube', 'tipsy', 'bootstrap', 'jtools', 'tipped', 'cluetip' ) ) ) ? $atts['style'] : 'plain';
|
410 |
+
// Position
|
411 |
+
$atts['position'] = str_replace( array( 'top', 'right', 'bottom', 'left' ), array( 'north', 'east', 'south', 'west' ), $atts['position'] );
|
412 |
+
$position = array(
|
413 |
+
'my' => str_replace( array( 'north', 'east', 'south', 'west' ), array( 'bottom center', 'center left', 'top center', 'center right' ), $atts['position'] ),
|
414 |
+
'at' => str_replace( array( 'north', 'east', 'south', 'west' ), array( 'top center', 'center right', 'bottom center', 'center left' ), $atts['position'] )
|
415 |
+
);
|
416 |
+
// Prepare classes
|
417 |
+
$classes = array( 'su-qtip qtip-' . $atts['style'] );
|
418 |
+
$classes[] = 'su-qtip-size-' . $atts['size'];
|
419 |
+
if ( $atts['shadow'] === 'yes' ) $classes[] = 'qtip-shadow';
|
420 |
+
if ( $atts['rounded'] === 'yes' ) $classes[] = 'qtip-rounded';
|
421 |
+
// Query assets
|
422 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'qtip' );
|
423 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-other-shortcodes' );
|
424 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
425 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'qtip' );
|
426 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-other-shortcodes' );
|
427 |
+
return '<span class="su-tooltip' . su_ecssc( $atts ) . '" data-close="' . $atts['close'] . '" data-behavior="' . $atts['behavior'] . '" data-my="' . $position['my'] . '" data-at="' . $position['at'] . '" data-classes="' . implode( ' ', $classes ) . '" data-title="' . $atts['title'] . '" title="' . esc_attr( $atts['content'] ) . '">' . do_shortcode( $content ) . '</span>';
|
428 |
+
}
|
429 |
+
|
430 |
+
public static function su_private( $atts = null, $content = null ) {
|
431 |
+
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
432 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-other-shortcodes' );
|
433 |
+
return ( current_user_can( 'publish_posts' ) ) ? '<div class="su-private' . su_ecssc( $atts ) . '"><div class="su-private-shell">' . do_shortcode( $content ) . '</div></div>' : '';
|
434 |
+
}
|
435 |
+
|
436 |
+
public static function media( $atts = null, $content = null ) {
|
437 |
+
// Check YouTube video
|
438 |
+
if ( strpos( $atts['url'], 'youtu' ) !== false ) return su_youtube( $atts );
|
439 |
+
// Check Vimeo video
|
440 |
+
elseif ( strpos( $atts['url'], 'vimeo' ) !== false ) return su_vimeo( $atts );
|
441 |
+
// Image
|
442 |
+
else return '<img src="' . $atts['url'] . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" style="max-width:100%" />';
|
443 |
+
}
|
444 |
+
|
445 |
+
public static function youtube( $atts = null, $content = null ) {
|
446 |
+
// Prepare data
|
447 |
+
$return = array();
|
448 |
+
$atts = shortcode_atts( array(
|
449 |
+
'url' => 'http://www.youtube.com/watch?v=NbE8INOjTKM',
|
450 |
+
'width' => 600,
|
451 |
+
'height' => 400,
|
452 |
+
'autoplay' => 'no',
|
453 |
+
'responsive' => 'yes',
|
454 |
+
'class' => ''
|
455 |
+
), $atts );
|
456 |
+
$atts['url'] = su_scattr( $atts['url'] );
|
457 |
+
$id = ( preg_match( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $atts['url'], $match ) ) ? $match[1] : false;
|
458 |
+
// Check that url is specified
|
459 |
+
if ( !$id ) return '<p class="su-error">YouTube: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
460 |
+
// Prepare autoplay
|
461 |
+
$autoplay = ( $atts['autoplay'] === 'yes' ) ? '?autoplay=1' : '';
|
462 |
+
// Create player
|
463 |
+
$return[] = '<div class="su-youtube su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '">';
|
464 |
+
$return[] = '<iframe width="' . $atts['width'] . '" height="' . $atts['height'] . '" src="http://www.youtube.com/embed/' . $id . $autoplay . '" frameborder="0" allowfullscreen="true"></iframe>';
|
465 |
+
$return[] = '</div>';
|
466 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-media-shortcodes' );
|
467 |
+
// Return result
|
468 |
+
return implode( '', $return );
|
469 |
+
}
|
470 |
+
|
471 |
+
public static function vimeo( $atts = null, $content = null ) {
|
472 |
+
// Prepare data
|
473 |
+
$return = array();
|
474 |
+
$atts = shortcode_atts( array(
|
475 |
+
'url' => 'http://vimeo.com/21294655',
|
476 |
+
'width' => 600,
|
477 |
+
'height' => 400,
|
478 |
+
'autoplay' => 'no',
|
479 |
+
'responsive' => 'yes',
|
480 |
+
'class' => ''
|
481 |
+
), $atts );
|
482 |
+
$atts['url'] = su_scattr( $atts['url'] );
|
483 |
+
$id = ( preg_match( '~(?:<iframe [^>]*src=")?(?:https?:\/\/(?:[\w]+\.)*vimeo\.com(?:[\/\w]*\/videos?)?\/([0-9]+)[^\s]*)"?(?:[^>]*></iframe>)?(?:<p>.*</p>)?~ix', $atts['url'], $match ) ) ? $match[1] : false;
|
484 |
+
// Check that url is specified
|
485 |
+
if ( !$id ) return '<p class="su-error">Vimeo: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
486 |
+
// Prepare autoplay
|
487 |
+
$autoplay = ( $atts['autoplay'] === 'yes' ) ? '&autoplay=1' : '';
|
488 |
+
// Create player
|
489 |
+
$return[] = '<div class="su-vimeo su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '">';
|
490 |
+
$return[] = '<iframe width="' . $atts['width'] . '" height="' . $atts['height'] .
|
491 |
+
'" src="http://player.vimeo.com/video/' . $id . '?title=0&byline=0&portrait=0&color=ffffff' .
|
492 |
+
$autoplay . '" frameborder="0" allowfullscreen="true"></iframe>';
|
493 |
+
$return[] = '</div>';
|
494 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-media-shortcodes' );
|
495 |
+
// Return result
|
496 |
+
return implode( '', $return );
|
497 |
+
}
|
498 |
+
|
499 |
+
public static function screenr( $atts = null, $content = null ) {
|
500 |
+
// Prepare data
|
501 |
+
$return = array();
|
502 |
+
$atts = shortcode_atts( array(
|
503 |
+
'url' => 'http://www.screenr.com/OuWH',
|
504 |
+
'width' => 600,
|
505 |
+
'height' => 400,
|
506 |
+
'responsive' => 'yes',
|
507 |
+
'class' => ''
|
508 |
+
), $atts );
|
509 |
+
$atts['url'] = su_scattr( $atts['url'] );
|
510 |
+
$id = ( preg_match( '~(?:<iframe [^>]*src=")?(?:https?:\/\/(?:[\w]+\.)*screenr\.com(?:[\/\w]*\/videos?)?\/([a-zA-Z0-9]+)[^\s]*)"?(?:[^>]*></iframe>)?(?:<p>.*</p>)?~ix', $atts['url'], $match ) ) ? $match[1] : false;
|
511 |
+
// Check that url is specified
|
512 |
+
if ( !$id ) return '<p class="su-error">Screenr: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
513 |
+
// Create player
|
514 |
+
$return[] = '<div class="su-screenr su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '">';
|
515 |
+
$return[] = '<iframe width="' . $atts['width'] . '" height="' . $atts['height'] .
|
516 |
+
'" src="http://screenr.com/embed/' . $id . '" frameborder="0" allowfullscreen="true"></iframe>';
|
517 |
+
$return[] = '</div>';
|
518 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-media-shortcodes' );
|
519 |
+
// Return result
|
520 |
+
return implode( '', $return );
|
521 |
+
}
|
522 |
+
|
523 |
+
public static function audio( $atts = null, $content = null ) {
|
524 |
+
$atts = shortcode_atts( array(
|
525 |
+
'url' => 'http://www.jplayer.org/audio/mp3/TSP-01-Cro_magnon_man.mp3',
|
526 |
+
'width' => 'auto',
|
527 |
+
'title' => '',
|
528 |
+
'autoplay' => 'no',
|
529 |
+
'loop' => 'no',
|
530 |
+
'class' => ''
|
531 |
+
), $atts );
|
532 |
+
$atts['url'] = su_scattr( $atts['url'] );
|
533 |
+
// Generate unique ID
|
534 |
+
$id = uniqid( 'su_audio_player_' );
|
535 |
+
// Prepare width
|
536 |
+
$width = ( $atts['width'] !== 'auto' ) ? 'max-width:' . $atts['width'] : '';
|
537 |
+
// Check that url is specified
|
538 |
+
if ( !$atts['url'] ) return '<p class="su-error">Audio: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
539 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-players-shortcodes' );
|
540 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
541 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jplayer' );
|
542 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-players-shortcodes' );
|
543 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-players-shortcodes' );
|
544 |
+
// Create player
|
545 |
+
return '<div class="su-audio' . su_ecssc( $atts ) . '" data-id="' . $id . '" data-audio="' . $atts['url'] . '" data-swf="' . plugins_url( 'assets/other/Jplayer.swf', SU_PLUGIN_FILE ) . '" data-autoplay="' . $atts['autoplay'] . '" data-loop="' . $atts['loop'] . '" style="' . $width . '"><div id="' . $id . '" class="jp-jplayer"></div><div id="' . $id . '_container" class="jp-audio"><div class="jp-type-single"><div class="jp-gui jp-interface"><div class="jp-controls"><span class="jp-play"></span><span class="jp-pause"></span><span class="jp-stop"></span><span class="jp-mute"></span><span class="jp-unmute"></span><span class="jp-volume-max"></span></div><div class="jp-progress"><div class="jp-seek-bar"><div class="jp-play-bar"></div></div></div><div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div><div class="jp-current-time"></div><div class="jp-duration"></div></div><div class="jp-title">' . $atts['title'] . '</div></div></div></div>';
|
546 |
+
}
|
547 |
+
|
548 |
+
public static function video( $atts = null, $content = null ) {
|
549 |
+
$atts = shortcode_atts( array(
|
550 |
+
'url' => 'http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v',
|
551 |
+
'poster' => 'http://www.jplayer.org/video/poster/Big_Buck_Bunny_Trailer_480x270.png',
|
552 |
+
'title' => '',
|
553 |
+
'width' => 600,
|
554 |
+
'height' => 300,
|
555 |
+
'controls' => 'yes',
|
556 |
+
'autoplay' => 'no',
|
557 |
+
'loop' => 'no',
|
558 |
+
'class' => ''
|
559 |
+
), $atts );
|
560 |
+
$atts['url'] = su_scattr( $atts['url'] );
|
561 |
+
// Generate unique ID
|
562 |
+
$id = uniqid( 'su_video_player_' );
|
563 |
+
// Check that url is specified
|
564 |
+
if ( !$atts['url'] ) return '<p class="su-error">Video: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
565 |
+
// Prepare title
|
566 |
+
$title = ( $atts['title'] ) ? '<div class="jp-title">' . $atts['title'] . '</div>' : '';
|
567 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-players-shortcodes' );
|
568 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
569 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jplayer' );
|
570 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-players-shortcodes' );
|
571 |
+
// Create player
|
572 |
+
return '<div style="width:' . $atts['width'] . 'px"><div id="' . $id . '" class="su-video jp-video su-video-controls-' . $atts['controls'] . su_ecssc( $atts ) . '" data-id="' . $id . '" data-video="' . $atts['url'] . '" data-swf="' . plugins_url( 'assets/other/Jplayer.swf', SU_PLUGIN_FILE ) . '" data-autoplay="' . $atts['autoplay'] . '" data-loop="' . $atts['loop'] . '" data-poster="' . $atts['poster'] . '"><div id="' . $id . '_player" class="jp-jplayer" style="width:' . $atts['width'] . 'px;height:' . $atts['height'] . 'px"></div>' . $title . '<div class="jp-start jp-play"></div><div class="jp-gui"><div class="jp-interface"><div class="jp-progress"><div class="jp-seek-bar"><div class="jp-play-bar"></div></div></div><div class="jp-current-time"></div><div class="jp-duration"></div><div class="jp-controls-holder"><span class="jp-play"></span><span class="jp-pause"></span><span class="jp-mute"></span><span class="jp-unmute"></span><span class="jp-full-screen"></span><span class="jp-restore-screen"></span><div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div></div></div></div></div></div>';
|
573 |
+
}
|
574 |
+
|
575 |
+
public static function table( $atts = null, $content = null ) {
|
576 |
+
$atts = shortcode_atts( array(
|
577 |
+
'url' => false,
|
578 |
+
'class' => ''
|
579 |
+
), $atts );
|
580 |
+
$return = '<div class="su-table' . su_ecssc( $atts ) . '">';
|
581 |
+
$return .= ( $atts['url'] ) ? su_parse_csv( $atts['url'] ) : do_shortcode( $content );
|
582 |
+
$return .= '</div>';
|
583 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-content-shortcodes' );
|
584 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
585 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-other-shortcodes' );
|
586 |
+
return $return;
|
587 |
+
}
|
588 |
+
|
589 |
+
public static function permalink( $atts = null, $content = null ) {
|
590 |
+
$atts = shortcode_atts( array(
|
591 |
+
'id' => 1,
|
592 |
+
'p' => null, // 3.x
|
593 |
+
'target' => 'self',
|
594 |
+
'class' => ''
|
595 |
+
), $atts );
|
596 |
+
if ( $atts['p'] !== null ) $atts['id'] = $atts['p'];
|
597 |
+
$atts['id'] = su_scattr( $atts['id'] );
|
598 |
+
// Prepare link text
|
599 |
+
$text = ( $content ) ? $content : get_the_title( $atts['id'] );
|
600 |
+
return '<a href="' . get_permalink( $atts['id'] ) . '" class="' . su_ecssc( $atts ) . '" title="' . $text . '" target="_' . $atts['target'] . '">' . $text . '</a>';
|
601 |
+
}
|
602 |
+
|
603 |
+
public static function members( $atts = null, $content = null ) {
|
604 |
+
$atts = shortcode_atts( array(
|
605 |
+
'message' => __( 'This content is for registered users only. Please %login%.', 'su' ),
|
606 |
+
'color' => '#ffcc00',
|
607 |
+
'style' => null, // 3.x
|
608 |
+
'login_text' => __( 'login', 'su' ),
|
609 |
+
'login_url' => wp_login_url(),
|
610 |
+
'login' => null, // 3.x
|
611 |
+
'class' => ''
|
612 |
+
), $atts );
|
613 |
+
if ( $atts['style'] !== null ) $atts['color'] = str_replace( array( '0', '1', '2' ), array( '#fff', '#FFFF29', '#1F9AFF' ), $atts['style'] );
|
614 |
+
// Check feed
|
615 |
+
if ( is_feed() ) return;
|
616 |
+
// Check authorization
|
617 |
+
if ( !is_user_logged_in() ) {
|
618 |
+
if ( $atts['login'] !== null && $atts['login'] == '0' ) return; // 3.x
|
619 |
+
// Prepare login link
|
620 |
+
$login = '<a href="' . esc_attr( $atts['login_url'] ) . '">' . $atts['login_text'] . '</a>';
|
621 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-other-shortcodes' );
|
622 |
+
return '<div class="su-members' . su_ecssc( $atts ) . '" style="background-color:' . su_hex_shift( $atts['color'], 'lighter', 50 ) . ';border-color:' .su_hex_shift( $atts['color'], 'darker', 20 ) . ';color:' .su_hex_shift( $atts['color'], 'darker', 60 ) . '">' . str_replace( '%login%', $login, su_scattr( $atts['message'] ) ) . '</div>';
|
623 |
+
}
|
624 |
+
// Return original content
|
625 |
+
else return do_shortcode( $content );
|
626 |
+
}
|
627 |
+
|
628 |
+
public static function guests( $atts = null, $content = null ) {
|
629 |
+
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
630 |
+
$return = '';
|
631 |
+
if ( !is_user_logged_in() && !is_null( $content ) ) {
|
632 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-other-shortcodes' );
|
633 |
+
$return = '<div class="su-guests' . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</div>';
|
634 |
+
}
|
635 |
+
return $return;
|
636 |
+
}
|
637 |
+
|
638 |
+
public static function feed( $atts = null, $content = null ) {
|
639 |
+
$atts = shortcode_atts( array(
|
640 |
+
'url' => get_bloginfo_rss( 'rss2_url' ),
|
641 |
+
'limit' => 3,
|
642 |
+
'class' => ''
|
643 |
+
), $atts );
|
644 |
+
if ( !function_exists( 'wp_rss' ) ) include_once ABSPATH . WPINC . '/rss.php';
|
645 |
+
ob_start();
|
646 |
+
echo '<div class="su-feed' . su_ecssc( $atts ) . '">';
|
647 |
+
wp_rss( $atts['url'], $atts['limit'] );
|
648 |
+
echo '</div>';
|
649 |
+
$return = ob_get_contents();
|
650 |
+
ob_end_clean();
|
651 |
+
return $return;
|
652 |
+
}
|
653 |
+
|
654 |
+
public static function subpages( $atts = null, $content = null ) {
|
655 |
+
$atts = shortcode_atts( array(
|
656 |
+
'depth' => 1,
|
657 |
+
'p' => false,
|
658 |
+
'class' => ''
|
659 |
+
), $atts );
|
660 |
+
global $post;
|
661 |
+
$child_of = ( $atts['p'] ) ? $atts['p'] : get_the_ID();
|
662 |
+
$return = wp_list_pages( array(
|
663 |
+
'title_li' => '',
|
664 |
+
'echo' => 0,
|
665 |
+
'child_of' => $child_of,
|
666 |
+
'depth' => $atts['depth']
|
667 |
+
) );
|
668 |
+
return ( $return ) ? '<ul class="su-subpages' . su_ecssc( $atts ) . '">' . $return . '</ul>' : false;
|
669 |
+
}
|
670 |
+
|
671 |
+
public static function siblings( $atts = null, $content = null ) {
|
672 |
+
$atts = shortcode_atts( array( 'depth' => 1, 'class' => '' ), $atts );
|
673 |
+
global $post;
|
674 |
+
$return = wp_list_pages( array( 'title_li' => '',
|
675 |
+
'echo' => 0,
|
676 |
+
'child_of' => $post->post_parent,
|
677 |
+
'depth' => $atts['depth'],
|
678 |
+
'exclude' => $post->ID ) );
|
679 |
+
return ( $return ) ? '<ul class="su-siblings' . su_ecssc( $atts ) . '">' . $return . '</ul>' : false;
|
680 |
+
}
|
681 |
+
|
682 |
+
public static function menu( $atts = null, $content = null ) {
|
683 |
+
$atts = shortcode_atts( array( 'name' => false, 'class' => '' ), $atts );
|
684 |
+
$return = wp_nav_menu( array(
|
685 |
+
'echo' => false,
|
686 |
+
'menu' => $atts['name'],
|
687 |
+
'container' => false,
|
688 |
+
'fallback_cb' => array( __CLASS__, 'menu_fb' ),
|
689 |
+
'class' => $atts['class']
|
690 |
+
) );
|
691 |
+
return ( $atts['name'] ) ? $return : false;
|
692 |
+
}
|
693 |
+
|
694 |
+
public static function menu_fb() {
|
695 |
+
return __( 'This menu doesn\'t exists, or has no elements', 'su' );
|
696 |
+
}
|
697 |
+
|
698 |
+
public static function document( $atts = null, $content = null ) {
|
699 |
+
$atts = shortcode_atts( array(
|
700 |
+
'url' => '',
|
701 |
+
'file' => null, // 3.x
|
702 |
+
'width' => 600,
|
703 |
+
'height' => 400,
|
704 |
+
'responsive' => 'yes',
|
705 |
+
'class' => ''
|
706 |
+
), $atts );
|
707 |
+
if ( $atts['file'] !== null ) $atts['url'] = $atts['file'];
|
708 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-media-shortcodes' );
|
709 |
+
return '<div class="su-document su-responsive-media-' . $atts['responsive'] . '"><iframe src="http://docs.google.com/viewer?embedded=true&url=' . $atts['url'] . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" class="su-document' . su_ecssc( $atts ) . '"></iframe></div>';
|
710 |
+
}
|
711 |
+
|
712 |
+
public static function gmap( $atts = null, $content = null ) {
|
713 |
+
$atts = shortcode_atts( array(
|
714 |
+
'width' => 600,
|
715 |
+
'height' => 400,
|
716 |
+
'responsive' => 'yes',
|
717 |
+
'address' => 'New York',
|
718 |
+
'class' => ''
|
719 |
+
), $atts );
|
720 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-media-shortcodes' );
|
721 |
+
return '<div class="su-gmap su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '"><iframe width="' . $atts['width'] . '" height="' . $atts['height'] . '" src="http://maps.google.com/maps?q=' . urlencode( su_scattr( $atts['address'] ) ) . '&output=embed"></iframe></div>';
|
722 |
+
}
|
723 |
+
|
724 |
+
public static function slider( $atts = null, $content = null ) {
|
725 |
+
// Prepare vars
|
726 |
+
$shult = shortcodes_ultimate();
|
727 |
+
$return = '';
|
728 |
+
$atts = shortcode_atts( array(
|
729 |
+
'gallery' => 1,
|
730 |
+
'width' => 600,
|
731 |
+
'height' => 300,
|
732 |
+
'responsive' => 'yes',
|
733 |
+
'title' => 'yes',
|
734 |
+
'centered' => 'yes',
|
735 |
+
'arrows' => 'yes',
|
736 |
+
'pages' => 'yes',
|
737 |
+
'mousewheel' => 'yes',
|
738 |
+
'autoplay' => 3000,
|
739 |
+
'speed' => 600,
|
740 |
+
'target' => 'yes',
|
741 |
+
'class' => ''
|
742 |
+
), $atts );
|
743 |
+
// Prepare unique ID
|
744 |
+
$id = uniqid( 'su_slider_' );
|
745 |
+
// Links target
|
746 |
+
$target = ( $atts['target'] === 'yes' ) ? ' target="_blank"' : '';
|
747 |
+
// Centered class
|
748 |
+
$centered = ( $atts['centered'] === 'yes' ) ? ' su-slider-centered' : '';
|
749 |
+
// Wheel control
|
750 |
+
$mousewheel = ( $atts['mousewheel'] === 'yes' ) ? 'true' : 'false';
|
751 |
+
// Prepare gallery
|
752 |
+
$galleries = $shult->get_option( 'galleries' );
|
753 |
+
$gallery = ( is_numeric( $atts['gallery'] ) && $atts['gallery'] > 0 ) ? $galleries[$atts['gallery'] - 1] : 1;
|
754 |
+
// Prepare slides
|
755 |
+
$slides = ( count( ( array ) $gallery['items'] ) ) ? $gallery['items'] : array();
|
756 |
+
// Prepare width and height
|
757 |
+
$size = ( $atts['responsive'] === 'yes' ) ? 'width:100%' : 'width:' . intval( $atts['width'] ) . 'px;height:' . intval( $atts['height'] ) . 'px';
|
758 |
+
// Slides not found
|
759 |
+
if ( !count( $slides ) || !is_array( $slides ) ) $return = '<p class="su-error">Slider: ' . __( 'images not found', 'su' ) . '</p>';
|
760 |
+
// Slides are found
|
761 |
+
else {
|
762 |
+
// Open slider
|
763 |
+
$return .= '<div id="' . $id . '" class="su-slider' . $centered . ' su-slider-pages-' . $atts['pages'] . ' su-slider-responsive-' . $atts['responsive'] . su_ecssc( $atts ) . '" style="' . $size . '" data-autoplay="' . $atts['autoplay'] . '" data-speed="' . $atts['speed'] . '" data-mousewheel="' . $mousewheel . '"><div class="su-slider-slides">';
|
764 |
+
// Create slides
|
765 |
+
foreach ( (array) $slides as $slide ) {
|
766 |
+
// Crop the image
|
767 |
+
$image = su_image_resize( $slide['image'], $atts['width'], $atts['height'] );
|
768 |
+
// Prepare slide title
|
769 |
+
$title = ( $atts['title'] === 'yes' && $slide['title'] ) ? '<span class="su-slider-slide-title">' . stripslashes( $slide['title'] ) . '</span>' : '';
|
770 |
+
// Open slide
|
771 |
+
$return .= '<div class="su-slider-slide">';
|
772 |
+
// Slide content with link
|
773 |
+
if ( $slide['link'] ) $return .= '<a href="' . $slide['link'] . '"' . $target . '><img src="' . $image['url'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
774 |
+
// Slide content without link
|
775 |
+
else $return .= '<a><img src="' . $slide['image'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
776 |
+
// Close slide
|
777 |
+
$return .= '</div>';
|
778 |
+
}
|
779 |
+
// Close slides
|
780 |
+
$return .= '</div>';
|
781 |
+
// Open nav section
|
782 |
+
$return .= '<div class="su-slider-nav">';
|
783 |
+
// Append direction nav
|
784 |
+
if ( $atts['arrows'] === 'yes'
|
785 |
+
) $return .= '<div class="su-slider-direction"><span class="su-slider-prev"></span><span class="su-slider-next"></span></div>';
|
786 |
+
// Append pagination nav
|
787 |
+
$return .= '<div class="su-slider-pagination"></div>';
|
788 |
+
// Close nav section
|
789 |
+
$return .= '</div>';
|
790 |
+
// Close slider
|
791 |
+
$return .= '</div>';
|
792 |
+
}
|
793 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-galleries-shortcodes' );
|
794 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
795 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'swiper' );
|
796 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-galleries-shortcodes' );
|
797 |
+
return $return;
|
798 |
+
}
|
799 |
+
|
800 |
+
public static function carousel( $atts = null, $content = null ) {
|
801 |
+
// Prepare vars
|
802 |
+
$shult = shortcodes_ultimate();
|
803 |
+
$return = '';
|
804 |
+
$atts = shortcode_atts( array(
|
805 |
+
'gallery' => 1,
|
806 |
+
'width' => 600,
|
807 |
+
'height' => 100,
|
808 |
+
'responsive' => 'yes',
|
809 |
+
'items' => 3,
|
810 |
+
'scroll' => 1,
|
811 |
+
'title' => 'yes',
|
812 |
+
'centered' => 'yes',
|
813 |
+
'arrows' => 'yes',
|
814 |
+
'pages' => 'no',
|
815 |
+
'mousewheel' => 'yes',
|
816 |
+
'autoplay' => 3000,
|
817 |
+
'speed' => 600,
|
818 |
+
'target' => 'yes',
|
819 |
+
'class' => ''
|
820 |
+
), $atts );
|
821 |
+
// Prepare unique ID
|
822 |
+
$id = uniqid( 'su_carousel_' );
|
823 |
+
// Links target
|
824 |
+
$target = ( $atts['target'] === 'yes' ) ? ' target="_blank"' : '';
|
825 |
+
// Centered class
|
826 |
+
$centered = ( $atts['centered'] === 'yes' ) ? ' su-carousel-centered' : '';
|
827 |
+
// Wheel control
|
828 |
+
$mousewheel = ( $atts['mousewheel'] === 'yes' ) ? 'true' : 'false';
|
829 |
+
// Prepare gallery
|
830 |
+
$galleries = $shult->get_option( 'galleries' );
|
831 |
+
$gallery = ( is_numeric( $atts['gallery'] ) && $atts['gallery'] > 0 ) ? $galleries[$atts['gallery'] - 1] : 1;
|
832 |
+
// Prepare slides
|
833 |
+
$slides = ( count( ( array ) $gallery['items'] ) ) ? $gallery['items'] : array();
|
834 |
+
// Prepare width and height
|
835 |
+
$size = ( $atts['responsive'] === 'yes' ) ? 'width:100%' : 'width:' . intval( $atts['width'] ) . 'px;height:' . intval( $atts['height'] ) . 'px';
|
836 |
+
// Slides not found
|
837 |
+
if ( !count( $slides ) || !is_array( $slides ) ) $return = '<p class="su-error">Carousel: ' . __( 'images not found', 'su' ) . '</p>';
|
838 |
+
// Slides are found
|
839 |
+
else {
|
840 |
+
// Open slider
|
841 |
+
$return .= '<div id="' . $id . '" class="su-carousel' . $centered . ' su-carousel-pages-' . $atts['pages'] . ' su-carousel-responsive-' . $atts['responsive'] . su_ecssc( $atts ) . '" style="' . $size . '" data-autoplay="' . $atts['autoplay'] . '" data-speed="' . $atts['speed'] . '" data-mousewheel="' . $mousewheel . '" data-items="' . $atts['items'] . '" data-scroll="' . $atts['scroll'] . '"><div class="su-carousel-slides">';
|
842 |
+
// Create slides
|
843 |
+
foreach ( (array) $slides as $slide ) {
|
844 |
+
// Crop the image
|
845 |
+
$image = su_image_resize( $slide['image'], round( $atts['width'] / $atts['items'] ), $atts['height'] );
|
846 |
+
// Prepare slide title
|
847 |
+
$title = ( $atts['title'] === 'yes' && $slide['title'] ) ? '<span class="su-carousel-slide-title">' . stripslashes( $slide['title'] ) . '</span>' : '';
|
848 |
+
// Open slide
|
849 |
+
$return .= '<div class="su-carousel-slide">';
|
850 |
+
// Slide content with link
|
851 |
+
if ( $slide['link'] ) $return .= '<a href="' . $slide['link'] . '"' . $target . '><img src="' . $image['url'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
852 |
+
// Slide content without link
|
853 |
+
else $return .= '<a><img src="' . $slide['image'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
854 |
+
// Close slide
|
855 |
+
$return .= '</div>';
|
856 |
+
}
|
857 |
+
// Close slides
|
858 |
+
$return .= '</div>';
|
859 |
+
// Open nav section
|
860 |
+
$return .= '<div class="su-carousel-nav">';
|
861 |
+
// Append direction nav
|
862 |
+
if ( $atts['arrows'] === 'yes'
|
863 |
+
) $return .= '<div class="su-carousel-direction"><span class="su-carousel-prev"></span><span class="su-carousel-next"></span></div>';
|
864 |
+
// Append pagination nav
|
865 |
+
$return .= '<div class="su-carousel-pagination"></div>';
|
866 |
+
// Close nav section
|
867 |
+
$return .= '</div>';
|
868 |
+
// Close slider
|
869 |
+
$return .= '</div>';
|
870 |
+
}
|
871 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-galleries-shortcodes' );
|
872 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'jquery' );
|
873 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'swiper' );
|
874 |
+
Shortcodes_Ultimate_Assets::add( 'js', 'su-galleries-shortcodes' );
|
875 |
+
return $return;
|
876 |
+
}
|
877 |
+
|
878 |
+
public static function custom_gallery( $atts = null, $content = null ) {
|
879 |
+
// Prepare vars
|
880 |
+
$shult = shortcodes_ultimate();
|
881 |
+
$return = '';
|
882 |
+
$atts = shortcode_atts( array(
|
883 |
+
'gallery' => 1,
|
884 |
+
'width' => 90,
|
885 |
+
'height' => 90,
|
886 |
+
'title' => 'hover',
|
887 |
+
'target' => 'yes',
|
888 |
+
'class' => ''
|
889 |
+
), $atts );
|
890 |
+
// Links target
|
891 |
+
$target = ( $atts['target'] === 'yes' ) ? ' target="_blank"' : '';
|
892 |
+
// Prepare gallery
|
893 |
+
$galleries = $shult->get_option( 'galleries' );
|
894 |
+
$gallery = ( is_numeric( $atts['gallery'] ) && $atts['gallery'] > 0 ) ? $galleries[$atts['gallery'] - 1] : 1;
|
895 |
+
// Prepare slides
|
896 |
+
$slides = ( count( ( array ) $gallery['items'] ) ) ? $gallery['items'] : array();
|
897 |
+
// Slides not found
|
898 |
+
if ( !count( $slides ) || !is_array( $slides ) ) $return = '<p class="su-error">Custom gallery: ' . __( 'images not found', 'su' ) . '</p>';
|
899 |
+
// Slides are found
|
900 |
+
else {
|
901 |
+
// Open gallery
|
902 |
+
$return .= '<div class="su-custom-gallery su-custom-gallery-title-' . $atts['title'] . su_ecssc( $atts ) . '">';
|
903 |
+
// Create slides
|
904 |
+
foreach ( (array) $slides as $slide ) {
|
905 |
+
// Crop image
|
906 |
+
$image = su_image_resize( $slide['image'], $atts['width'], $atts['height'] );
|
907 |
+
// Prepare slide title
|
908 |
+
$title = ( $slide['title'] ) ? '<span class="su-custom-gallery-title">' . stripslashes( $slide['title'] ) . '</span>' : '';
|
909 |
+
// Open slide
|
910 |
+
$return .= '<div class="su-custom-gallery-slide">';
|
911 |
+
// Slide content with link
|
912 |
+
if ( $slide['link'] ) $return .= '<a href="' . $slide['link'] . '"' . $target . '><img src="' . $image['url'] . '" alt="' . esc_attr( $slide['title'] ) . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" />' . $title . '</a>';
|
913 |
+
// Slide content without link
|
914 |
+
else $return .= '<a><img src="' . $slide['image'] . '" alt="' . esc_attr( $slide['title'] ) . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" />' . $title . '</a>';
|
915 |
+
// Close slide
|
916 |
+
$return .= '</div>';
|
917 |
+
}
|
918 |
+
// Clear floats
|
919 |
+
$return .= '<div class="su-clear"></div>';
|
920 |
+
// Close gallery
|
921 |
+
$return .= '</div>';
|
922 |
+
}
|
923 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-galleries-shortcodes' );
|
924 |
+
return $return;
|
925 |
+
}
|
926 |
+
|
927 |
+
public static function posts( $atts = null, $content = null ) {
|
928 |
+
// Prepare error var
|
929 |
+
$error = null;
|
930 |
+
// Parse attributes
|
931 |
+
$atts = shortcode_atts( array(
|
932 |
+
'template' => 'templates/default-loop.php',
|
933 |
+
'id' => false,
|
934 |
+
'posts_per_page' => get_option( 'posts_per_page' ),
|
935 |
+
'post_type' => 'post',
|
936 |
+
'taxonomy' => 'category',
|
937 |
+
'tax_term' => false,
|
938 |
+
'tax_operator' => 'IN',
|
939 |
+
'author' => '',
|
940 |
+
'meta_key' => '',
|
941 |
+
'offset' => 0,
|
942 |
+
'order' => 'DESC',
|
943 |
+
'orderby' => 'date',
|
944 |
+
'post_parent' => false,
|
945 |
+
'post_status' => 'publish',
|
946 |
+
'ignore_sticky_posts' => 'no'
|
947 |
+
), $atts );
|
948 |
+
|
949 |
+
$original_atts = $atts;
|
950 |
+
|
951 |
+
$author = sanitize_text_field( $atts['author'] );
|
952 |
+
$id = $atts['id']; // Sanitized later as an array of integers
|
953 |
+
$ignore_sticky_posts = ( bool ) ( $atts['ignore_sticky_posts'] === 'yes' ) ? true : false;
|
954 |
+
$meta_key = sanitize_text_field( $atts['meta_key'] );
|
955 |
+
$offset = intval( $atts['offset'] );
|
956 |
+
$order = sanitize_key( $atts['order'] );
|
957 |
+
$orderby = sanitize_key( $atts['orderby'] );
|
958 |
+
$post_parent = $atts['post_parent'];
|
959 |
+
$post_status = $atts['post_status'];
|
960 |
+
$post_type = sanitize_text_field( $atts['post_type'] );
|
961 |
+
$posts_per_page = intval( $atts['posts_per_page'] );
|
962 |
+
$tag = sanitize_text_field( $atts['tag'] );
|
963 |
+
$tax_operator = $atts['tax_operator'];
|
964 |
+
$tax_term = sanitize_text_field( $atts['tax_term'] );
|
965 |
+
$taxonomy = sanitize_key( $atts['taxonomy'] );
|
966 |
+
// Set up initial query for post
|
967 |
+
$args = array(
|
968 |
+
'category_name' => '',
|
969 |
+
'order' => $order,
|
970 |
+
'orderby' => $orderby,
|
971 |
+
'post_type' => explode( ',', $post_type ),
|
972 |
+
'posts_per_page' => $posts_per_page,
|
973 |
+
'tag' => $tag
|
974 |
+
);
|
975 |
+
// Ignore Sticky Posts
|
976 |
+
if ( $ignore_sticky_posts ) $args['ignore_sticky_posts'] = true;
|
977 |
+
// Meta key (for ordering)
|
978 |
+
if ( !empty( $meta_key ) ) $args['meta_key'] = $meta_key;
|
979 |
+
// If Post IDs
|
980 |
+
if ( $id ) {
|
981 |
+
$posts_in = array_map( 'intval', explode( ',', $id ) );
|
982 |
+
$args['post__in'] = $posts_in;
|
983 |
+
}
|
984 |
+
// Post Author
|
985 |
+
if ( !empty( $author ) ) $args['author_name'] = $author;
|
986 |
+
// Offset
|
987 |
+
if ( !empty( $offset ) ) $args['offset'] = $offset;
|
988 |
+
// Post Status
|
989 |
+
$post_status = explode( ', ', $post_status );
|
990 |
+
$validated = array();
|
991 |
+
$available = array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash', 'any' );
|
992 |
+
foreach ( $post_status as $unvalidated ) {
|
993 |
+
if ( in_array( $unvalidated, $available ) ) $validated[] = $unvalidated;
|
994 |
+
}
|
995 |
+
if ( !empty( $validated ) ) $args['post_status'] = $validated;
|
996 |
+
// If taxonomy attributes, create a taxonomy query
|
997 |
+
if ( !empty( $taxonomy ) && !empty( $tax_term ) ) {
|
998 |
+
// Term string to array
|
999 |
+
$tax_term = explode( ',', $tax_term );
|
1000 |
+
// Validate operator
|
1001 |
+
if ( !in_array( $tax_operator, array( 'IN', 'NOT IN', 'AND' ) ) ) $tax_operator = 'IN';
|
1002 |
+
$tax_args = array( 'tax_query' => array( array( 'taxonomy' => $taxonomy,
|
1003 |
+
'field' => 'slug',
|
1004 |
+
'terms' => $tax_term,
|
1005 |
+
'operator' => $tax_operator ) ) );
|
1006 |
+
// Check for multiple taxonomy queries
|
1007 |
+
$count = 2;
|
1008 |
+
$more_tax_queries = false;
|
1009 |
+
while ( isset( $original_atts['taxonomy_' . $count] ) && !empty( $original_atts['taxonomy_' . $count] ) &&
|
1010 |
+
isset( $original_atts['tax_' . $count . '_term'] ) &&
|
1011 |
+
!empty( $original_atts['tax_' . $count . '_term'] ) ) {
|
1012 |
+
// Sanitize values
|
1013 |
+
$more_tax_queries = true;
|
1014 |
+
$taxonomy = sanitize_key( $original_atts['taxonomy_' . $count] );
|
1015 |
+
$terms = explode( ', ', sanitize_text_field( $original_atts['tax_' . $count . '_term'] ) );
|
1016 |
+
$tax_operator = isset( $original_atts['tax_' . $count . '_operator'] ) ? $original_atts[
|
1017 |
+
'tax_' . $count . '_operator'] : 'IN';
|
1018 |
+
$tax_operator = in_array( $tax_operator, array( 'IN', 'NOT IN', 'AND' ) ) ? $tax_operator : 'IN';
|
1019 |
+
$tax_args['tax_query'][] = array( 'taxonomy' => $taxonomy,
|
1020 |
+
'field' => 'slug',
|
1021 |
+
'terms' => $terms,
|
1022 |
+
'operator' => $tax_operator );
|
1023 |
+
$count++;
|
1024 |
+
}
|
1025 |
+
if ( $more_tax_queries ):
|
1026 |
+
$tax_relation = 'AND';
|
1027 |
+
if ( isset( $original_atts['tax_relation'] ) &&
|
1028 |
+
in_array( $original_atts['tax_relation'], array( 'AND', 'OR' ) )
|
1029 |
+
) $tax_relation = $original_atts['tax_relation'];
|
1030 |
+
$args['tax_query']['relation'] = $tax_relation;
|
1031 |
+
endif;
|
1032 |
+
$args = array_merge( $args, $tax_args );
|
1033 |
+
}
|
1034 |
+
|
1035 |
+
// If post parent attribute, set up parent
|
1036 |
+
if ( $post_parent ) {
|
1037 |
+
if ( 'current' == $post_parent ) {
|
1038 |
+
global $post;
|
1039 |
+
$post_parent = $post->ID;
|
1040 |
+
}
|
1041 |
+
$args['post_parent'] = intval( $post_parent );
|
1042 |
+
}
|
1043 |
+
// Save original posts
|
1044 |
+
global $posts;
|
1045 |
+
$original_posts = $posts;
|
1046 |
+
// Query posts
|
1047 |
+
$posts = new WP_Query( $args );
|
1048 |
+
// Buffer output
|
1049 |
+
ob_start();
|
1050 |
+
// Search for template in stylesheet directory
|
1051 |
+
if ( file_exists( STYLESHEETPATH . '/' . $atts['template'] ) ) load_template( STYLESHEETPATH . '/' . $atts['template'], false );
|
1052 |
+
// Search for template in theme directory
|
1053 |
+
elseif ( file_exists( TEMPLATEPATH . '/' . $atts['template'] ) ) load_template( TEMPLATEPATH . '/' . $atts['template'], false );
|
1054 |
+
// Search for template in plugin directory
|
1055 |
+
elseif ( path_join( dirname( SU_PLUGIN_FILE ), $atts['template'] ) ) load_template( path_join( dirname( SU_PLUGIN_FILE ), $atts['template'] ), false );
|
1056 |
+
// Template not found
|
1057 |
+
else echo '<p class="su-error">Posts: ' . __( 'template not found', 'su' ) . '</p>';
|
1058 |
+
$output = ob_get_contents();
|
1059 |
+
ob_end_clean();
|
1060 |
+
// Return original posts
|
1061 |
+
$posts = $original_posts;
|
1062 |
+
// Reset the query
|
1063 |
+
wp_reset_postdata();
|
1064 |
+
Shortcodes_Ultimate_Assets::add( 'css', 'su-other-shortcodes' );
|
1065 |
+
return $output;
|
1066 |
+
}
|
1067 |
+
}
|
1068 |
+
|
1069 |
+
new Shortcodes_Ultimate_Shortcodes;
|
inc/core/shortcodes.php
DELETED
@@ -1,1448 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/**
|
4 |
-
* Shortcode: heading
|
5 |
-
*
|
6 |
-
* @param array $atts Shortcode attributes
|
7 |
-
* @param string $content
|
8 |
-
*
|
9 |
-
* @return string Output html
|
10 |
-
*/
|
11 |
-
function su_heading_shortcode( $atts, $content = null ) {
|
12 |
-
$atts = shortcode_atts( array(
|
13 |
-
'size' => 3,
|
14 |
-
'align' => 'center',
|
15 |
-
'class' => ''
|
16 |
-
), $atts );
|
17 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
18 |
-
$size = round( ( $atts['size'] + 7 ) * 1.3 );
|
19 |
-
return '<div class="su-heading su-heading-align-' . $atts['align'] . su_ecssc( $atts ) . '" style="font-size:' . $size . 'px"><div class="su-heading-inner">' . $content . '</div></div>';
|
20 |
-
}
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Shortcode: tabs
|
24 |
-
*
|
25 |
-
* @param array $atts Shortcode attributes
|
26 |
-
* @param string $content
|
27 |
-
*
|
28 |
-
* @return string Output html
|
29 |
-
*/
|
30 |
-
function su_tabs_shortcode( $atts, $content ) {
|
31 |
-
$atts = shortcode_atts( array(
|
32 |
-
'active' => 1,
|
33 |
-
'vertical' => 'no',
|
34 |
-
'style' => null, // 3.x
|
35 |
-
'class' => ''
|
36 |
-
), $atts );
|
37 |
-
if ( $atts['style'] == '3' ) $atts['vertical'] = 'yes';
|
38 |
-
$GLOBALS['tab_count'] = 0;
|
39 |
-
do_shortcode( $content );
|
40 |
-
$return = '';
|
41 |
-
$tabs = $panes = array();
|
42 |
-
if ( is_array( $GLOBALS['tabs'] ) ) {
|
43 |
-
if ( $GLOBALS['tab_count'] < $atts['active'] ) $atts['active'] = $GLOBALS['tab_count'];
|
44 |
-
foreach ( $GLOBALS['tabs'] as $tab ) {
|
45 |
-
$tabs[] = '<span class="' . su_ecssc( $tab ) . $tab['disabled'] . '">' . su_scattr( $tab['title'] ) . '</span>';
|
46 |
-
$panes[] = '<div class="su-tabs-pane' . su_ecssc( $tab ) . '">' . $tab['content'] . '</div>';
|
47 |
-
}
|
48 |
-
$vertical = ( $atts['vertical'] === 'yes' ) ? ' su-tabs-vertical' : '';
|
49 |
-
$return = '<div class="su-tabs' . $vertical . su_ecssc( $atts ) . '" data-active="' . (string) $atts['active'] . '"><div class="su-tabs-nav">' . implode( '', $tabs ) . '</div><div class="su-tabs-panes">' . implode( "\n", $panes ) . '</div><div style="clear:both;height:0"></div></div>';
|
50 |
-
}
|
51 |
-
// Unset globals
|
52 |
-
unset( $GLOBALS['tabs'], $GLOBALS['tab_count'] );
|
53 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
54 |
-
su_query_asset( 'js', 'jquery' );
|
55 |
-
su_query_asset( 'js', 'su-other-shortcodes' );
|
56 |
-
return $return;
|
57 |
-
}
|
58 |
-
|
59 |
-
/**
|
60 |
-
* Shortcode: tab
|
61 |
-
*
|
62 |
-
* @param array $atts Shortcode attributes
|
63 |
-
* @param string $content
|
64 |
-
*
|
65 |
-
* @return string Output html
|
66 |
-
*/
|
67 |
-
function su_tab_shortcode( $atts, $content ) {
|
68 |
-
$atts = shortcode_atts( array(
|
69 |
-
'title' => __( 'Tab title', 'su' ),
|
70 |
-
'disabled' => 'no',
|
71 |
-
'class' => ''
|
72 |
-
), $atts );
|
73 |
-
$x = $GLOBALS['tab_count'];
|
74 |
-
$GLOBALS['tabs'][$x] = array(
|
75 |
-
'title' => $atts['title'],
|
76 |
-
'content' => do_shortcode( $content ),
|
77 |
-
'disabled' => ( $atts['disabled'] === 'yes' ) ? ' su-tabs-disabled' : '',
|
78 |
-
'class' => $atts['class']
|
79 |
-
);
|
80 |
-
$GLOBALS['tab_count']++;
|
81 |
-
}
|
82 |
-
|
83 |
-
/**
|
84 |
-
* Shortcode: spoiler
|
85 |
-
*
|
86 |
-
* @param array $atts Shortcode attributes
|
87 |
-
* @param string $content
|
88 |
-
*
|
89 |
-
* @return string Output html
|
90 |
-
*/
|
91 |
-
function su_spoiler_shortcode( $atts, $content = null ) {
|
92 |
-
$atts = shortcode_atts( array(
|
93 |
-
'title' => __( 'Spoiler title', 'su' ),
|
94 |
-
'open' => 'no',
|
95 |
-
'style' => 'default',
|
96 |
-
'class' => ''
|
97 |
-
), $atts );
|
98 |
-
$atts['style'] = str_replace( array( '1', '2' ), array( 'default', 'fancy' ), $atts['style'] );
|
99 |
-
$closed = ( $atts['open'] !== 'yes' ) ? ' su-spoiler-closed' : '';
|
100 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
101 |
-
su_query_asset( 'js', 'jquery' );
|
102 |
-
su_query_asset( 'js', 'su-other-shortcodes' );
|
103 |
-
return '<div class="su-spoiler su-spoiler-style-' . $atts['style'] . $closed . su_ecssc( $atts ) . '"><div class="su-spoiler-title"><span class="su-spoiler-icon"></span>' . su_scattr( $atts['title'] ) . '</div><div class="su-spoiler-content">' . su_do_shortcode( $content, 's' ) . '</div></div>';
|
104 |
-
}
|
105 |
-
|
106 |
-
/**
|
107 |
-
* Shortcode: accordion
|
108 |
-
*
|
109 |
-
* @param array $atts Shortcode attributes
|
110 |
-
* @param string $content
|
111 |
-
*
|
112 |
-
* @return string Output html
|
113 |
-
*/
|
114 |
-
function su_accordion_shortcode( $atts = null, $content = null ) {
|
115 |
-
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
116 |
-
return '<div class="su-accordion' . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</div>';
|
117 |
-
}
|
118 |
-
|
119 |
-
/**
|
120 |
-
* Shortcode: divider
|
121 |
-
*
|
122 |
-
* @param array $atts Shortcode attributes
|
123 |
-
* @param string $content
|
124 |
-
*
|
125 |
-
* @return string Output html
|
126 |
-
*/
|
127 |
-
function su_divider_shortcode( $atts, $content = null ) {
|
128 |
-
$atts = shortcode_atts( array(
|
129 |
-
'top' => 'yes',
|
130 |
-
'text' => __( 'Go to top', 'su' ),
|
131 |
-
'class' => ''
|
132 |
-
), $atts );
|
133 |
-
$top = ( $atts['top'] === 'yes' ) ? '<a href="#">' . su_scattr( $atts['text'] ) . '</a>' : '';
|
134 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
135 |
-
return '<div class="su-divider' . su_ecssc( $atts ) . '">' . $top . '</div>';
|
136 |
-
}
|
137 |
-
|
138 |
-
/**
|
139 |
-
* Shortcode: spacer
|
140 |
-
*
|
141 |
-
* @param array $atts Shortcode attributes
|
142 |
-
* @param string $content
|
143 |
-
*
|
144 |
-
* @return string Output html
|
145 |
-
*/
|
146 |
-
function su_spacer_shortcode( $atts, $content = null ) {
|
147 |
-
$atts = shortcode_atts( array(
|
148 |
-
'size' => 0,
|
149 |
-
'class' => ''
|
150 |
-
), $atts );
|
151 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
152 |
-
return '<div class="su-spacer' . su_ecssc( $atts ) . '" style="height:' . $atts['size'] . 'px"></div>';
|
153 |
-
}
|
154 |
-
|
155 |
-
/**
|
156 |
-
* Shortcode: highlight
|
157 |
-
*
|
158 |
-
* @param array $atts Shortcode attributes
|
159 |
-
* @param string $content
|
160 |
-
*
|
161 |
-
* @return string Output html
|
162 |
-
*/
|
163 |
-
function su_highlight_shortcode( $atts, $content = null ) {
|
164 |
-
$atts = shortcode_atts( array(
|
165 |
-
'background' => '#ddff99',
|
166 |
-
'bg' => null, // 3.x
|
167 |
-
'color' => '#000000',
|
168 |
-
'class' => ''
|
169 |
-
), $atts );
|
170 |
-
if ( $atts['bg'] !== null ) $atts['background'] = $atts['bg'];
|
171 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
172 |
-
return '<span class="su-highlight' . su_ecssc( $atts ) . '" style="background:' . $atts['background'] . ';color:' . $atts['color'] . '"> ' . do_shortcode( $content ) . ' </span>';
|
173 |
-
}
|
174 |
-
|
175 |
-
/**
|
176 |
-
* Shortcode: label
|
177 |
-
*
|
178 |
-
* @param array $atts Shortcode attributes
|
179 |
-
* @param string $content
|
180 |
-
*
|
181 |
-
* @return string Output html
|
182 |
-
*/
|
183 |
-
function su_label_shortcode( $atts, $content = null ) {
|
184 |
-
$atts = shortcode_atts( array(
|
185 |
-
'type' => 'default',
|
186 |
-
'style' => null, // 3.x
|
187 |
-
'class' => ''
|
188 |
-
), $atts );
|
189 |
-
if ( $atts['style'] !== null ) $atts['type'] = $atts['style'];
|
190 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
191 |
-
return '<span class="su-label su-label-type-' . $atts['type'] . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</span>';
|
192 |
-
}
|
193 |
-
|
194 |
-
/**
|
195 |
-
* Shortcode: quote
|
196 |
-
*
|
197 |
-
* @param array $atts Shortcode attributes
|
198 |
-
* @param string $content
|
199 |
-
*
|
200 |
-
* @return string Output html
|
201 |
-
*/
|
202 |
-
function su_quote_shortcode( $atts, $content = null ) {
|
203 |
-
$atts = shortcode_atts( array(
|
204 |
-
'cite' => false,
|
205 |
-
'url' => false,
|
206 |
-
'class' => ''
|
207 |
-
), $atts );
|
208 |
-
$cite_link = ( $atts['url'] && $atts['cite'] ) ? '<a href="' . $atts['url'] . '">' . $atts['cite'] . '</a>'
|
209 |
-
: $atts['cite'];
|
210 |
-
$cite = ( $atts['cite'] ) ? '<span class="su-quote-cite">— ' . $cite_link . '</span>' : '';
|
211 |
-
$cite_class = ( $atts['cite'] ) ? ' su-quote-has-cite' : '';
|
212 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
213 |
-
return '<div class="su-quote' . $cite_class . su_ecssc( $atts ) . '"><div class="su-quote-inner">' . do_shortcode( $content ) . su_scattr( $cite ) . '</div></div>';
|
214 |
-
}
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Shortcode: pullquote
|
218 |
-
*
|
219 |
-
* @param array $atts Shortcode attributes
|
220 |
-
* @param string $content
|
221 |
-
*
|
222 |
-
* @return string Output html
|
223 |
-
*/
|
224 |
-
function su_pullquote_shortcode( $atts, $content = null ) {
|
225 |
-
$atts = shortcode_atts( array(
|
226 |
-
'align' => 'left',
|
227 |
-
'class' => ''
|
228 |
-
), $atts );
|
229 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
230 |
-
return '<div class="su-pullquote su-pullquote-align-' . $atts['align'] . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</div>';
|
231 |
-
}
|
232 |
-
|
233 |
-
/**
|
234 |
-
* Shortcode: dropcap
|
235 |
-
*
|
236 |
-
* @param array $atts Shortcode attributes
|
237 |
-
* @param string $content
|
238 |
-
*
|
239 |
-
* @return string Output html
|
240 |
-
*/
|
241 |
-
function su_dropcap_shortcode( $atts, $content = null ) {
|
242 |
-
$atts = shortcode_atts( array(
|
243 |
-
'style' => 'default',
|
244 |
-
'size' => 3,
|
245 |
-
'class' => ''
|
246 |
-
), $atts );
|
247 |
-
$atts['style'] = str_replace( array( '1', '2', '3' ), array( 'default', 'light', 'default' ), $atts['style'] ); // 3.x
|
248 |
-
// Calculate font-size
|
249 |
-
$em = $atts['size'] * 0.5 . 'em';
|
250 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
251 |
-
return '<span class="su-dropcap su-dropcap-style-' . $atts['style'] . su_ecssc( $atts ) . '" style="font-size:' . $em . '">' . do_shortcode( $content ) . '</span>';
|
252 |
-
}
|
253 |
-
|
254 |
-
/**
|
255 |
-
* Shortcode: frame
|
256 |
-
*
|
257 |
-
* @param array $atts Shortcode attributes
|
258 |
-
* @param string $content
|
259 |
-
*
|
260 |
-
* @return string Output html
|
261 |
-
*/
|
262 |
-
function su_frame_shortcode( $atts, $content = null ) {
|
263 |
-
$atts = shortcode_atts( array(
|
264 |
-
'style' => 'default',
|
265 |
-
'align' => 'left',
|
266 |
-
'class' => ''
|
267 |
-
), $atts );
|
268 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
269 |
-
su_query_asset( 'js', 'su-other-shortcodes' );
|
270 |
-
return '<span class="su-frame su-frame-align-' . $atts['align'] . ' su-frame-style-' . $atts['style'] . su_ecssc( $atts ) . '"><span class="su-frame-inner">' . do_shortcode( $content ) . '</span></span>';
|
271 |
-
}
|
272 |
-
|
273 |
-
/**
|
274 |
-
* Shortcode: row
|
275 |
-
*
|
276 |
-
* @param array $atts Shortcode attributes
|
277 |
-
* @param string $content
|
278 |
-
*
|
279 |
-
* @return string Output html
|
280 |
-
*/
|
281 |
-
function su_row_shortcode( $atts = null, $content = null ) {
|
282 |
-
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
283 |
-
return '<div class="su-row' . su_ecssc( $atts ) . '">' . su_do_shortcode( $content, 'r' ) . '</div>';
|
284 |
-
}
|
285 |
-
|
286 |
-
/**
|
287 |
-
* Shortcode: column
|
288 |
-
*
|
289 |
-
* @param array $atts Shortcode attributes
|
290 |
-
* @param string $content
|
291 |
-
*
|
292 |
-
* @return string Output html
|
293 |
-
*/
|
294 |
-
function su_column_shortcode( $atts, $content = null ) {
|
295 |
-
$atts = shortcode_atts( array(
|
296 |
-
'size' => '1/2',
|
297 |
-
'center' => 'no',
|
298 |
-
'last' => null,
|
299 |
-
'class' => ''
|
300 |
-
), $atts );
|
301 |
-
if ( $atts['last'] !== null && $atts['last'] == '1' ) $atts['class'] .= ' su-column-last';
|
302 |
-
if ( $atts['center'] === 'yes' ) $atts['class'] .= ' su-column-centered';
|
303 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
304 |
-
return '<div class="su-column su-column-size-' . str_replace( '/', '-', $atts['size'] ) . su_ecssc( $atts ) . '"><div class="su-column-inner">' . su_do_shortcode( $content, 'c' ) . '</div></div>';
|
305 |
-
}
|
306 |
-
|
307 |
-
/**
|
308 |
-
* Shortcode: list
|
309 |
-
*
|
310 |
-
* @param array $atts Shortcode attributes
|
311 |
-
* @param string $content
|
312 |
-
*
|
313 |
-
* @return string Output html
|
314 |
-
*/
|
315 |
-
function su_list_shortcode( $atts, $content = null ) {
|
316 |
-
$atts = shortcode_atts( array(
|
317 |
-
'style' => 'star',
|
318 |
-
'class' => ''
|
319 |
-
), $atts );
|
320 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
321 |
-
return '<div class="su-list su-list-style-' . $atts['style'] . su_ecssc( $atts ) . '">' . su_do_shortcode( $content, 'l' ) . '</div>';
|
322 |
-
}
|
323 |
-
|
324 |
-
/**
|
325 |
-
* Shortcode: button
|
326 |
-
*
|
327 |
-
* @param array $atts Shortcode attributes
|
328 |
-
* @param string $content
|
329 |
-
*
|
330 |
-
* @return string Output html
|
331 |
-
*/
|
332 |
-
function su_button_shortcode( $atts, $content = null ) {
|
333 |
-
$atts = shortcode_atts( array(
|
334 |
-
'url' => get_option( 'home' ),
|
335 |
-
'link' => null, // 3.x
|
336 |
-
'target' => 'self',
|
337 |
-
'style' => 'default',
|
338 |
-
'background' => '#2D89EF',
|
339 |
-
'color' => '#FFFFFF',
|
340 |
-
'dark' => null, // 3.x
|
341 |
-
'size' => 3,
|
342 |
-
'wide' => 'no',
|
343 |
-
'center' => 'no',
|
344 |
-
'radius' => 'auto',
|
345 |
-
'icon' => false,
|
346 |
-
'ts_color' => 'dark',
|
347 |
-
'ts_pos' => 'none',
|
348 |
-
'desc' => '',
|
349 |
-
'class' => ''
|
350 |
-
), $atts );
|
351 |
-
|
352 |
-
if ( $atts['link'] !== null ) $atts['url'] = $atts['link'];
|
353 |
-
if ( $atts['dark'] !== null ) {
|
354 |
-
$atts['background'] = $atts['color'];
|
355 |
-
$atts['color'] = ( $atts['dark'] ) ? '#000' : '#fff';
|
356 |
-
}
|
357 |
-
if ( is_numeric( $atts['style'] ) ) $atts['style'] = str_replace( array( '1', '2', '3', '4', '5' ), array( 'default', 'glass', 'bubbles', 'noise', 'stroked' ), $atts['style'] ); // 3.x
|
358 |
-
|
359 |
-
// Prepare vars
|
360 |
-
$a_css = array();
|
361 |
-
$span_css = array();
|
362 |
-
$img_css = array();
|
363 |
-
$small_css = array();
|
364 |
-
$radius = '0px';
|
365 |
-
$before = $after = '';
|
366 |
-
|
367 |
-
// Text shadow values
|
368 |
-
$shadows = array(
|
369 |
-
'none' => '0 0',
|
370 |
-
'top' => '0 -1px',
|
371 |
-
'right' => '1px 0',
|
372 |
-
'bottom' => '0 1px',
|
373 |
-
'left' => '-1px 0',
|
374 |
-
'top-right' => '1px -1px',
|
375 |
-
'top-left' => '-1px -1px',
|
376 |
-
'bottom-right' => '1px 1px',
|
377 |
-
'bottom-left' => '-1px 1px'
|
378 |
-
);
|
379 |
-
|
380 |
-
// Common styles for button
|
381 |
-
$styles = array(
|
382 |
-
'size' => round( ( $atts['size'] + 7 ) * 1.3 ),
|
383 |
-
'ts_color' => ( $atts['ts_color'] === 'light' ) ? su_hex_shift( $atts['background'], 'lighter', 50 ) : su_hex_shift( $atts['background'], 'darker', 40 ),
|
384 |
-
'ts_pos' => $shadows[$atts['ts_pos']]
|
385 |
-
);
|
386 |
-
|
387 |
-
// Calculate border-radius
|
388 |
-
if ( $atts['radius'] == 'auto' ) $radius = round( $atts['size'] + 2 ) . 'px';
|
389 |
-
elseif ( $atts['radius'] == 'round' ) $radius = round( ( ( $atts['size'] * 2 ) + 2 ) * 2 + $styles['size'] ) . 'px';
|
390 |
-
elseif ( is_numeric( $atts['radius'] ) ) $radius = intval( $atts['radius'] ) . 'px';
|
391 |
-
|
392 |
-
// CSS rules for <a> tag
|
393 |
-
$a_rules = array(
|
394 |
-
'color' => $atts['color'],
|
395 |
-
'background-color' => $atts['background'],
|
396 |
-
'border-color' => su_hex_shift( $atts['background'], 'darker', 20 ),
|
397 |
-
'border-radius' => $radius,
|
398 |
-
'-moz-border-radius' => $radius,
|
399 |
-
'-webkit-border-radius' => $radius
|
400 |
-
);
|
401 |
-
|
402 |
-
// CSS rules for <span> tag
|
403 |
-
$span_rules = array(
|
404 |
-
'color' => $atts['color'],
|
405 |
-
'padding' => ( $atts['icon'] ) ? round( ( $atts['size'] ) / 2 + 4 ) . 'px ' . round( $atts['size'] * 2 + 10 ) . 'px' : '0px ' . round( $atts['size'] * 2 + 10 ) . 'px',
|
406 |
-
'font-size' => $styles['size'] . 'px',
|
407 |
-
'line-height' => ( $atts['icon'] ) ? round( $styles['size'] * 1.5 ) . 'px' : round( $styles['size'] * 2 ) . 'px',
|
408 |
-
'border-color' => su_hex_shift( $atts['background'], 'lighter', 30 ),
|
409 |
-
'border-radius' => $radius,
|
410 |
-
'-moz-border-radius' => $radius,
|
411 |
-
'-webkit-border-radius' => $radius,
|
412 |
-
'text-shadow' => $styles['ts_pos'] . ' 1px ' . $styles['ts_color'],
|
413 |
-
'-moz-text-shadow' => $styles['ts_pos'] . ' 1px ' . $styles['ts_color'],
|
414 |
-
'-webkit-text-shadow' => $styles['ts_pos'] . ' 1px ' . $styles['ts_color']
|
415 |
-
);
|
416 |
-
|
417 |
-
// CSS rules for <img> tag
|
418 |
-
$img_rules = array(
|
419 |
-
'width' => round( $styles['size'] * 1.5 ) . 'px',
|
420 |
-
'height' => round( $styles['size'] * 1.5 ) . 'px'
|
421 |
-
);
|
422 |
-
|
423 |
-
// CSS rules for <small> tag
|
424 |
-
$small_rules = array(
|
425 |
-
'padding-bottom' => round( ( $atts['size'] ) / 2 + 4 ) . 'px',
|
426 |
-
'color' => $atts['color']
|
427 |
-
);
|
428 |
-
|
429 |
-
// Create style attr value for <a> tag
|
430 |
-
foreach ( $a_rules as $a_rule => $a_value ) $a_css[] = $a_rule . ':' . $a_value;
|
431 |
-
// Create style attr value for <span> tag
|
432 |
-
foreach ( $span_rules as $span_rule => $span_value ) $span_css[] = $span_rule . ':' . $span_value;
|
433 |
-
// Create style attr value for <img> tag
|
434 |
-
foreach ( $img_rules as $img_rule => $img_value ) $img_css[] = $img_rule . ':' . $img_value;
|
435 |
-
// Create style attr value for <img> tag
|
436 |
-
foreach ( $small_rules as $small_rule => $small_value ) $small_css[] = $small_rule . ':' . $small_value;
|
437 |
-
|
438 |
-
// Prepare button classes
|
439 |
-
$classes = array( 'su-button', 'su-button-style-' . $atts['style'] );
|
440 |
-
// Additional classes
|
441 |
-
if ( $atts['class'] ) $classes[] = $atts['class'];
|
442 |
-
// Wide class
|
443 |
-
if ( $atts['wide'] === 'yes' ) $classes[] = 'su-button-wide';
|
444 |
-
|
445 |
-
// Prepare icon
|
446 |
-
$icon = ( $atts['icon'] ) ? '<img src="' . $atts['icon'] . '" alt="' . esc_attr( $content ) . '" style="' . implode( $img_css, ';' ) . '" />' : '';
|
447 |
-
// Prepare <small> with description
|
448 |
-
$desc = ( $atts['desc'] ) ? '<small style="' . implode( $small_css, ';' ) . '">' . su_scattr( $atts['desc'] ) . '</small>' : '';
|
449 |
-
// Wrap with div if button centered
|
450 |
-
if ( $atts['center'] === 'yes' ) {
|
451 |
-
$before .= '<div class="su-button-center">';
|
452 |
-
$after .= '</div>';
|
453 |
-
}
|
454 |
-
|
455 |
-
// Replace icon marker in content,
|
456 |
-
// add float-icon class to rearrange margins
|
457 |
-
if ( strpos( $content, '%icon%' ) !== false ) {
|
458 |
-
$content = str_replace( '%icon%', $icon, $content );
|
459 |
-
$classes[] = 'su-button-float-icon';
|
460 |
-
}
|
461 |
-
// Button text has no icon marker, append icon to begin of the text
|
462 |
-
else $content = $icon . ' ' . $content;
|
463 |
-
|
464 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
465 |
-
return $before . '<a href="' . $atts['url'] . '" class="' . implode( $classes, ' ' ) . '" style="' . implode( $a_css, ';' ) . '" target="_' . $atts['target'] . '"><span style="' . implode( $span_css, ';' ) . '">' . $content . $desc . '</span></a>' . $after;
|
466 |
-
}
|
467 |
-
|
468 |
-
/**
|
469 |
-
* Shortcode: service
|
470 |
-
*
|
471 |
-
* @param array $atts Shortcode attributes
|
472 |
-
* @param string $content
|
473 |
-
*
|
474 |
-
* @return string Output html
|
475 |
-
*/
|
476 |
-
function su_service_shortcode( $atts, $content = null ) {
|
477 |
-
$atts = shortcode_atts( array(
|
478 |
-
'title' => __( 'Service title', 'su' ),
|
479 |
-
'icon' => plugins_url( 'assets/images/service.png', SU_PLUGIN_FILE ),
|
480 |
-
'size' => 32,
|
481 |
-
'class' => ''
|
482 |
-
), $atts );
|
483 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
484 |
-
return '<div class="su-service' . su_ecssc( $atts ) . '"><div class="su-service-title" style="padding:' . round( ( $atts['size'] - 16 ) / 2 ) . 'px 0 ' . round( ( $atts['size'] - 16 ) / 2 ) . 'px ' . ( $atts['size'] + 15 ) . 'px"><img src="' . su_scattr( $atts['icon'] ) . '" width="' . $atts['size'] . '" height="' . $atts['size'] . '" alt="' . $atts['title'] . '" /> ' . su_scattr( $atts['title'] ) . '</div><div class="su-service-content" style="padding:0 0 0 ' . ( $atts['size'] + 15 ) . 'px">' . do_shortcode( $content ) . '</div></div>';
|
485 |
-
}
|
486 |
-
|
487 |
-
/**
|
488 |
-
* Shortcode: box
|
489 |
-
*
|
490 |
-
* @param array $atts Shortcode attributes
|
491 |
-
* @param string $content
|
492 |
-
*
|
493 |
-
* @return string Output html
|
494 |
-
*/
|
495 |
-
function su_box_shortcode( $atts, $content = null ) {
|
496 |
-
$atts = shortcode_atts( array(
|
497 |
-
'title' => __( 'This is box title', 'su' ),
|
498 |
-
'style' => 'default',
|
499 |
-
'box_color' => '#333333',
|
500 |
-
'title_color' => '#FFFFFF',
|
501 |
-
'color' => null, // 3.x
|
502 |
-
'radius' => '3',
|
503 |
-
'class' => ''
|
504 |
-
), $atts );
|
505 |
-
if ( $atts['color'] !== null ) $atts['box_color'] = $atts['color'];
|
506 |
-
// Prepare border-radius
|
507 |
-
$radius = ( $atts['radius'] != '0' ) ?
|
508 |
-
'border-radius:' . $atts['radius'] . 'px;-moz-border-radius:' . $atts['radius'] .
|
509 |
-
'px;-webkit-border-radius:' . $atts['radius'] . 'px;' : '';
|
510 |
-
$title_radius = ( $atts['radius'] != '0' ) ? $atts['radius'] - 1 : '';
|
511 |
-
$title_radius = ( $title_radius ) ?
|
512 |
-
'-webkit-border-top-left-radius:' . $title_radius . 'px;-webkit-border-top-right-radius:' . $title_radius .
|
513 |
-
'px;-moz-border-radius-topleft:' . $title_radius . 'px;-moz-border-radius-topright:' . $title_radius .
|
514 |
-
'px;border-top-left-radius:' . $title_radius . 'px;border-top-right-radius:' . $title_radius . 'px;' : '';
|
515 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
516 |
-
// Return result
|
517 |
-
return
|
518 |
-
'<div class="su-box su-box-style-' . $atts['style'] . su_ecssc( $atts ) . '" style="border-color:' .
|
519 |
-
su_hex_shift( $atts['box_color'], 'darker', 20 ) . ';' . $radius .
|
520 |
-
'"><div class="su-box-title" style="background-color:' . $atts['box_color'] . ';color:' .
|
521 |
-
$atts['title_color'] . ';' . $title_radius . '">' . su_scattr( $atts['title'] ) . '</div><div class="su-box-content">' .
|
522 |
-
su_do_shortcode( $content, 'b' ) . '</div></div>';
|
523 |
-
}
|
524 |
-
|
525 |
-
/**
|
526 |
-
* Shortcode: note
|
527 |
-
*
|
528 |
-
* @param array $atts Shortcode attributes
|
529 |
-
* @param string $content
|
530 |
-
*
|
531 |
-
* @return string Output html
|
532 |
-
*/
|
533 |
-
function su_note_shortcode( $atts, $content = null ) {
|
534 |
-
$atts = shortcode_atts( array(
|
535 |
-
'note_color' => '#FFFF66',
|
536 |
-
'text_color' => '#333333',
|
537 |
-
'background' => null, // 3.x
|
538 |
-
'color' => null, // 3.x
|
539 |
-
'radius' => '3',
|
540 |
-
'class' => ''
|
541 |
-
), $atts );
|
542 |
-
if ( $atts['color'] !== null ) $atts['note_color'] = $atts['color'];
|
543 |
-
if ( $atts['background'] !== null ) $atts['note_color'] = $atts['background'];
|
544 |
-
// Prepare border-radius
|
545 |
-
$radius = ( $atts['radius'] != '0' ) ? 'border-radius:' . $atts['radius'] . 'px;-moz-border-radius:' . $atts['radius'] . 'px;-webkit-border-radius:' . $atts['radius'] . 'px;' : '';
|
546 |
-
su_query_asset( 'css', 'su-box-shortcodes' );
|
547 |
-
return '<div class="su-note' . su_ecssc( $atts ) . '" style="border-color:' . su_hex_shift( $atts['note_color'], 'darker', 10 ) . ';' . $radius . '"><div class="su-note-inner" style="background-color:' . $atts['note_color'] . ';border-color:' . su_hex_shift( $atts['note_color'], 'lighter', 80 ) . ';color:' . $atts['text_color'] . ';' . $radius . '">' . su_do_shortcode( $content, 'n' ) . '</div></div>';
|
548 |
-
}
|
549 |
-
|
550 |
-
/**
|
551 |
-
* Shortcode: lightbox
|
552 |
-
*
|
553 |
-
* @param array $atts Shortcode attributes
|
554 |
-
* @param string $content
|
555 |
-
*
|
556 |
-
* @return string Output html
|
557 |
-
*/
|
558 |
-
function su_lightbox_shortcode( $atts, $content = null ) {
|
559 |
-
$atts = shortcode_atts( array(
|
560 |
-
'src' => 'http://www.youtube.com/watch?v=NbE8INOjTKM',
|
561 |
-
'type' => 'iframe',
|
562 |
-
'class' => ''
|
563 |
-
), $atts );
|
564 |
-
su_query_asset( 'css', 'magnific-popup' );
|
565 |
-
su_query_asset( 'js', 'jquery' );
|
566 |
-
su_query_asset( 'js', 'magnific-popup' );
|
567 |
-
su_query_asset( 'js', 'su-other-shortcodes' );
|
568 |
-
return '<span class="su-lightbox' . su_ecssc( $atts ) . '" data-mfp-src="' . su_scattr( $atts['src'] ) . '" data-mfp-type="' . $atts['type'] . '">' . do_shortcode( $content ) . '</span>';
|
569 |
-
}
|
570 |
-
|
571 |
-
/**
|
572 |
-
* Shortcode: tooltip
|
573 |
-
*
|
574 |
-
* @param array $atts Shortcode attributes
|
575 |
-
* @param string $content
|
576 |
-
*
|
577 |
-
* @return string Output html
|
578 |
-
*/
|
579 |
-
function su_tooltip_shortcode( $atts, $content = null ) {
|
580 |
-
$atts = shortcode_atts( array(
|
581 |
-
'style' => 'yellow',
|
582 |
-
'position' => 'north',
|
583 |
-
'shadow' => 'no',
|
584 |
-
'rounded' => 'no',
|
585 |
-
'size' => 'default',
|
586 |
-
'title' => '',
|
587 |
-
'content' => __( 'Tooltip text', 'su' ),
|
588 |
-
'behavior' => 'hover',
|
589 |
-
'close' => 'no',
|
590 |
-
'class' => ''
|
591 |
-
), $atts );
|
592 |
-
// Prepare style
|
593 |
-
$atts['style'] = ( in_array( $atts['style'], array( 'light', 'dark', 'green', 'red', 'blue', 'youtube', 'tipsy', 'bootstrap', 'jtools', 'tipped', 'cluetip' ) ) ) ? $atts['style'] : 'plain';
|
594 |
-
// Position
|
595 |
-
$atts['position'] = str_replace( array( 'top', 'right', 'bottom', 'left' ), array( 'north', 'east', 'south', 'west' ), $atts['position'] );
|
596 |
-
$position = array(
|
597 |
-
'my' => str_replace( array( 'north', 'east', 'south', 'west' ), array( 'bottom center', 'center left', 'top center', 'center right' ), $atts['position'] ),
|
598 |
-
'at' => str_replace( array( 'north', 'east', 'south', 'west' ), array( 'top center', 'center right', 'bottom center', 'center left' ), $atts['position'] )
|
599 |
-
);
|
600 |
-
// Prepare classes
|
601 |
-
$classes = array( 'su-qtip qtip-' . $atts['style'] );
|
602 |
-
$classes[] = 'su-qtip-size-' . $atts['size'];
|
603 |
-
if ( $atts['shadow'] === 'yes' ) $classes[] = 'qtip-shadow';
|
604 |
-
if ( $atts['rounded'] === 'yes' ) $classes[] = 'qtip-rounded';
|
605 |
-
// Query assets
|
606 |
-
su_query_asset( 'css', 'qtip' );
|
607 |
-
su_query_asset( 'css', 'su-other-shortcodes' );
|
608 |
-
su_query_asset( 'js', 'jquery' );
|
609 |
-
su_query_asset( 'js', 'qtip' );
|
610 |
-
su_query_asset( 'js', 'su-other-shortcodes' );
|
611 |
-
return '<span class="su-tooltip' . su_ecssc( $atts ) . '" data-close="' . $atts['close'] . '" data-behavior="' . $atts['behavior'] . '" data-my="' . $position['my'] . '" data-at="' . $position['at'] . '" data-classes="' . implode( ' ', $classes ) . '" data-title="' . $atts['title'] . '" title="' . esc_attr( $atts['content'] ) . '">' . do_shortcode( $content ) . '</span>';
|
612 |
-
}
|
613 |
-
|
614 |
-
function su_ttc_shortcode( $atts = null, $content = null ) {
|
615 |
-
return '<span class="su-tooltip-content">' . do_shortcode( $content ) . '</span>';
|
616 |
-
}
|
617 |
-
|
618 |
-
add_shortcode( 'ttc', 'su_ttc_shortcode' );
|
619 |
-
add_shortcode( 'tooltip_content', 'su_ttc_shortcode' );
|
620 |
-
|
621 |
-
/**
|
622 |
-
* Shortcode: private
|
623 |
-
*
|
624 |
-
* @param array $atts Shortcode attributes
|
625 |
-
* @param string $content
|
626 |
-
*
|
627 |
-
* @return string Output html
|
628 |
-
*/
|
629 |
-
function su_private_shortcode( $atts = null, $content = null ) {
|
630 |
-
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
631 |
-
su_query_asset( 'css', 'su-other-shortcodes' );
|
632 |
-
return ( current_user_can( 'publish_posts' ) ) ? '<div class="su-private' . su_ecssc( $atts ) . '"><div class="su-private-shell">' . do_shortcode( $content ) . '</div></div>' : '';
|
633 |
-
}
|
634 |
-
|
635 |
-
/**
|
636 |
-
* Shortcode: media
|
637 |
-
*
|
638 |
-
* This is shortcode from version 3.x and it not visible in generator
|
639 |
-
*
|
640 |
-
* @param array $atts Shortcode attributes
|
641 |
-
* @param string $content
|
642 |
-
*
|
643 |
-
* @return string Output html
|
644 |
-
*/
|
645 |
-
function su_media_shortcode( $atts, $content = null ) {
|
646 |
-
// Check YouTube video
|
647 |
-
if ( strpos( $atts['url'], 'youtu' ) !== false ) return su_youtube_shortcode( $atts );
|
648 |
-
// Check Vimeo video
|
649 |
-
elseif ( strpos( $atts['url'], 'vimeo' ) !== false ) return su_vimeo_shortcode( $atts );
|
650 |
-
// Image
|
651 |
-
else return '<img src="' . $atts['url'] . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" style="max-width:100%" />';
|
652 |
-
}
|
653 |
-
|
654 |
-
/**
|
655 |
-
* Shortcode: youtube
|
656 |
-
*
|
657 |
-
* @param array $atts Shortcode attributes
|
658 |
-
* @param string $content
|
659 |
-
*
|
660 |
-
* @return string Output html
|
661 |
-
*/
|
662 |
-
function su_youtube_shortcode( $atts, $content = null ) {
|
663 |
-
// Prepare data
|
664 |
-
$return = array();
|
665 |
-
$atts = shortcode_atts( array(
|
666 |
-
'url' => 'http://www.youtube.com/watch?v=NbE8INOjTKM',
|
667 |
-
'width' => 600,
|
668 |
-
'height' => 400,
|
669 |
-
'autoplay' => 'no',
|
670 |
-
'responsive' => 'yes',
|
671 |
-
'class' => ''
|
672 |
-
), $atts );
|
673 |
-
$atts['url'] = su_scattr( $atts['url'] );
|
674 |
-
$id = ( preg_match( '%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $atts['url'], $match ) ) ? $match[1] : false;
|
675 |
-
// Check that url is specified
|
676 |
-
if ( !$id ) return '<p class="su-error">YouTube: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
677 |
-
// Prepare autoplay
|
678 |
-
$autoplay = ( $atts['autoplay'] === 'yes' ) ? '?autoplay=1' : '';
|
679 |
-
// Create player
|
680 |
-
$return[] = '<div class="su-youtube su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '">';
|
681 |
-
$return[] = '<iframe width="' . $atts['width'] . '" height="' . $atts['height'] . '" src="http://www.youtube.com/embed/' . $id . $autoplay . '" frameborder="0" allowfullscreen="true"></iframe>';
|
682 |
-
$return[] = '</div>';
|
683 |
-
su_query_asset( 'css', 'su-media-shortcodes' );
|
684 |
-
// Return result
|
685 |
-
return implode( '', $return );
|
686 |
-
}
|
687 |
-
|
688 |
-
/**
|
689 |
-
* Shortcode: vimeo
|
690 |
-
*
|
691 |
-
* @param array $atts Shortcode attributes
|
692 |
-
* @param string $content
|
693 |
-
*
|
694 |
-
* @return string Output html
|
695 |
-
*/
|
696 |
-
function su_vimeo_shortcode( $atts, $content = null ) {
|
697 |
-
// Prepare data
|
698 |
-
$return = array();
|
699 |
-
$atts = shortcode_atts( array(
|
700 |
-
'url' => 'http://vimeo.com/21294655',
|
701 |
-
'width' => 600,
|
702 |
-
'height' => 400,
|
703 |
-
'autoplay' => 'no',
|
704 |
-
'responsive' => 'yes',
|
705 |
-
'class' => ''
|
706 |
-
), $atts );
|
707 |
-
$atts['url'] = su_scattr( $atts['url'] );
|
708 |
-
$id = ( preg_match( '~(?:<iframe [^>]*src=")?(?:https?:\/\/(?:[\w]+\.)*vimeo\.com(?:[\/\w]*\/videos?)?\/([0-9]+)[^\s]*)"?(?:[^>]*></iframe>)?(?:<p>.*</p>)?~ix', $atts['url'], $match ) ) ? $match[1] : false;
|
709 |
-
// Check that url is specified
|
710 |
-
if ( !$id ) return '<p class="su-error">Vimeo: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
711 |
-
// Prepare autoplay
|
712 |
-
$autoplay = ( $atts['autoplay'] === 'yes' ) ? '&autoplay=1' : '';
|
713 |
-
// Create player
|
714 |
-
$return[] = '<div class="su-vimeo su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '">';
|
715 |
-
$return[] = '<iframe width="' . $atts['width'] . '" height="' . $atts['height'] .
|
716 |
-
'" src="http://player.vimeo.com/video/' . $id . '?title=0&byline=0&portrait=0&color=ffffff' .
|
717 |
-
$autoplay . '" frameborder="0" allowfullscreen="true"></iframe>';
|
718 |
-
$return[] = '</div>';
|
719 |
-
su_query_asset( 'css', 'su-media-shortcodes' );
|
720 |
-
// Return result
|
721 |
-
return implode( '', $return );
|
722 |
-
}
|
723 |
-
|
724 |
-
/**
|
725 |
-
* Shortcode: screenr
|
726 |
-
*
|
727 |
-
* @param array $atts Shortcode attributes
|
728 |
-
* @param string $content
|
729 |
-
*
|
730 |
-
* @return string Output html
|
731 |
-
*/
|
732 |
-
function su_screenr_shortcode( $atts, $content = null ) {
|
733 |
-
// Prepare data
|
734 |
-
$return = array();
|
735 |
-
$atts = shortcode_atts( array(
|
736 |
-
'url' => 'http://www.screenr.com/OuWH',
|
737 |
-
'width' => 600,
|
738 |
-
'height' => 400,
|
739 |
-
'responsive' => 'yes',
|
740 |
-
'class' => ''
|
741 |
-
), $atts );
|
742 |
-
$atts['url'] = su_scattr( $atts['url'] );
|
743 |
-
$id = ( preg_match( '~(?:<iframe [^>]*src=")?(?:https?:\/\/(?:[\w]+\.)*screenr\.com(?:[\/\w]*\/videos?)?\/([a-zA-Z0-9]+)[^\s]*)"?(?:[^>]*></iframe>)?(?:<p>.*</p>)?~ix', $atts['url'], $match ) ) ? $match[1] : false;
|
744 |
-
// Check that url is specified
|
745 |
-
if ( !$id ) return '<p class="su-error">Screenr: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
746 |
-
// Create player
|
747 |
-
$return[] = '<div class="su-screenr su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '">';
|
748 |
-
$return[] = '<iframe width="' . $atts['width'] . '" height="' . $atts['height'] .
|
749 |
-
'" src="http://screenr.com/embed/' . $id . '" frameborder="0" allowfullscreen="true"></iframe>';
|
750 |
-
$return[] = '</div>';
|
751 |
-
su_query_asset( 'css', 'su-media-shortcodes' );
|
752 |
-
// Return result
|
753 |
-
return implode( '', $return );
|
754 |
-
}
|
755 |
-
|
756 |
-
/**
|
757 |
-
* Shortcode: audio
|
758 |
-
*
|
759 |
-
* @param array $atts Shortcode attributes
|
760 |
-
* @param string $content
|
761 |
-
*
|
762 |
-
* @return string Output html
|
763 |
-
*/
|
764 |
-
function su_audio_shortcode( $atts, $content = null ) {
|
765 |
-
$atts = shortcode_atts( array(
|
766 |
-
'url' => 'http://www.jplayer.org/audio/mp3/TSP-01-Cro_magnon_man.mp3',
|
767 |
-
'width' => 'auto',
|
768 |
-
'title' => '',
|
769 |
-
'autoplay' => 'no',
|
770 |
-
'loop' => 'no',
|
771 |
-
'class' => ''
|
772 |
-
), $atts );
|
773 |
-
$atts['url'] = su_scattr( $atts['url'] );
|
774 |
-
// Generate unique ID
|
775 |
-
$id = uniqid( 'su_audio_player_' );
|
776 |
-
// Prepare width
|
777 |
-
$width = ( $atts['width'] !== 'auto' ) ? 'max-width:' . $atts['width'] : '';
|
778 |
-
// Check that url is specified
|
779 |
-
if ( !$atts['url'] ) return '<p class="su-error">Audio: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
780 |
-
su_query_asset( 'css', 'su-players-shortcodes' );
|
781 |
-
su_query_asset( 'js', 'jquery' );
|
782 |
-
su_query_asset( 'js', 'jplayer' );
|
783 |
-
su_query_asset( 'js', 'su-players-shortcodes' );
|
784 |
-
su_query_asset( 'js', 'su-players-shortcodes' );
|
785 |
-
// Create player
|
786 |
-
return '<div class="su-audio' . su_ecssc( $atts ) . '" data-id="' . $id . '" data-audio="' . $atts['url'] . '" data-swf="' . plugins_url( 'assets/other/Jplayer.swf', SU_PLUGIN_FILE ) . '" data-autoplay="' . $atts['autoplay'] . '" data-loop="' . $atts['loop'] . '" style="' . $width . '"><div id="' . $id . '" class="jp-jplayer"></div><div id="' . $id . '_container" class="jp-audio"><div class="jp-type-single"><div class="jp-gui jp-interface"><div class="jp-controls"><span class="jp-play"></span><span class="jp-pause"></span><span class="jp-stop"></span><span class="jp-mute"></span><span class="jp-unmute"></span><span class="jp-volume-max"></span></div><div class="jp-progress"><div class="jp-seek-bar"><div class="jp-play-bar"></div></div></div><div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div><div class="jp-current-time"></div><div class="jp-duration"></div></div><div class="jp-title">' . $atts['title'] . '</div></div></div></div>';
|
787 |
-
}
|
788 |
-
|
789 |
-
/**
|
790 |
-
* Shortcode: video
|
791 |
-
*
|
792 |
-
* @param array $atts Shortcode attributes
|
793 |
-
* @param string $content
|
794 |
-
*
|
795 |
-
* @return string Output html
|
796 |
-
*/
|
797 |
-
function su_video_shortcode( $atts, $content = null ) {
|
798 |
-
$atts = shortcode_atts( array(
|
799 |
-
'url' => 'http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer.m4v',
|
800 |
-
'poster' => 'http://www.jplayer.org/video/poster/Big_Buck_Bunny_Trailer_480x270.png',
|
801 |
-
'title' => '',
|
802 |
-
'width' => 600,
|
803 |
-
'height' => 300,
|
804 |
-
'controls' => 'yes',
|
805 |
-
'autoplay' => 'no',
|
806 |
-
'loop' => 'no',
|
807 |
-
'class' => ''
|
808 |
-
), $atts );
|
809 |
-
$atts['url'] = su_scattr( $atts['url'] );
|
810 |
-
// Generate unique ID
|
811 |
-
$id = uniqid( 'su_video_player_' );
|
812 |
-
// Check that url is specified
|
813 |
-
if ( !$atts['url'] ) return '<p class="su-error">Video: ' . __( 'please specify correct url', 'su' ) . '</p>';
|
814 |
-
// Prepare title
|
815 |
-
$title = ( $atts['title'] ) ? '<div class="jp-title">' . $atts['title'] . '</div>' : '';
|
816 |
-
su_query_asset( 'css', 'su-players-shortcodes' );
|
817 |
-
su_query_asset( 'js', 'jquery' );
|
818 |
-
su_query_asset( 'js', 'jplayer' );
|
819 |
-
su_query_asset( 'js', 'su-players-shortcodes' );
|
820 |
-
// Create player
|
821 |
-
return '<div style="width:' . $atts['width'] . 'px"><div id="' . $id . '" class="su-video jp-video su-video-controls-' . $atts['controls'] . su_ecssc( $atts ) . '" data-id="' . $id . '" data-video="' . $atts['url'] . '" data-swf="' . plugins_url( 'assets/other/Jplayer.swf', SU_PLUGIN_FILE ) . '" data-autoplay="' . $atts['autoplay'] . '" data-loop="' . $atts['loop'] . '" data-poster="' . $atts['poster'] . '"><div id="' . $id . '_player" class="jp-jplayer" style="width:' . $atts['width'] . 'px;height:' . $atts['height'] . 'px"></div>' . $title . '<div class="jp-start jp-play"></div><div class="jp-gui"><div class="jp-interface"><div class="jp-progress"><div class="jp-seek-bar"><div class="jp-play-bar"></div></div></div><div class="jp-current-time"></div><div class="jp-duration"></div><div class="jp-controls-holder"><span class="jp-play"></span><span class="jp-pause"></span><span class="jp-mute"></span><span class="jp-unmute"></span><span class="jp-full-screen"></span><span class="jp-restore-screen"></span><div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div></div></div></div></div></div>';
|
822 |
-
}
|
823 |
-
|
824 |
-
/**
|
825 |
-
* Shortcode: table
|
826 |
-
*
|
827 |
-
* @param array $atts Shortcode attributes
|
828 |
-
* @param string $content
|
829 |
-
*
|
830 |
-
* @return string Output html
|
831 |
-
*/
|
832 |
-
function su_table_shortcode( $atts, $content = null ) {
|
833 |
-
$atts = shortcode_atts( array(
|
834 |
-
'url' => false,
|
835 |
-
'class' => ''
|
836 |
-
), $atts );
|
837 |
-
$return = '<div class="su-table' . su_ecssc( $atts ) . '">';
|
838 |
-
$return .= ( $atts['url'] ) ? su_parse_csv( $atts['url'] ) : do_shortcode( $content );
|
839 |
-
$return .= '</div>';
|
840 |
-
su_query_asset( 'css', 'su-content-shortcodes' );
|
841 |
-
su_query_asset( 'js', 'jquery' );
|
842 |
-
su_query_asset( 'js', 'su-other-shortcodes' );
|
843 |
-
return $return;
|
844 |
-
}
|
845 |
-
|
846 |
-
/**
|
847 |
-
* Shortcode: permalink
|
848 |
-
*
|
849 |
-
* @param unknown $atts
|
850 |
-
* @param string $content
|
851 |
-
*
|
852 |
-
* @return string Output html
|
853 |
-
*/
|
854 |
-
function su_permalink_shortcode( $atts, $content = null ) {
|
855 |
-
$atts = shortcode_atts( array(
|
856 |
-
'id' => 1,
|
857 |
-
'p' => null, // 3.x
|
858 |
-
'target' => 'self',
|
859 |
-
'class' => ''
|
860 |
-
), $atts );
|
861 |
-
if ( $atts['p'] !== null ) $atts['id'] = $atts['p'];
|
862 |
-
$atts['id'] = su_scattr( $atts['id'] );
|
863 |
-
// Prepare link text
|
864 |
-
$text = ( $content ) ? $content : get_the_title( $atts['id'] );
|
865 |
-
return '<a href="' . get_permalink( $atts['id'] ) . '" class="' . su_ecssc( $atts ) . '" title="' . $text . '" target="_' . $atts['target'] . '">' . $text . '</a>';
|
866 |
-
}
|
867 |
-
|
868 |
-
/**
|
869 |
-
* Shortcode: members
|
870 |
-
*
|
871 |
-
* @param array $atts Shortcode attributes
|
872 |
-
* @param string $content
|
873 |
-
*
|
874 |
-
* @return string Output html
|
875 |
-
*/
|
876 |
-
function su_members_shortcode( $atts, $content = null ) {
|
877 |
-
$atts = shortcode_atts( array(
|
878 |
-
'message' => __( 'This content is for registered users only. Please %login%.', 'su' ),
|
879 |
-
'color' => '#ffcc00',
|
880 |
-
'style' => null, // 3.x
|
881 |
-
'login_text' => __( 'login', 'su' ),
|
882 |
-
'login_url' => wp_login_url(),
|
883 |
-
'login' => null, // 3.x
|
884 |
-
'class' => ''
|
885 |
-
), $atts );
|
886 |
-
if ( $atts['style'] !== null ) $atts['color'] = str_replace( array( '0', '1', '2' ), array( '#fff', '#FFFF29', '#1F9AFF' ), $atts['style'] );
|
887 |
-
// Check feed
|
888 |
-
if ( is_feed() ) return;
|
889 |
-
// Check authorization
|
890 |
-
if ( !is_user_logged_in() ) {
|
891 |
-
if ( $atts['login'] !== null && $atts['login'] == '0' ) return; // 3.x
|
892 |
-
// Prepare login link
|
893 |
-
$login = '<a href="' . esc_attr( $atts['login_url'] ) . '">' . $atts['login_text'] . '</a>';
|
894 |
-
su_query_asset( 'css', 'su-other-shortcodes' );
|
895 |
-
return '<div class="su-members' . su_ecssc( $atts ) . '" style="background-color:' . su_hex_shift( $atts['color'], 'lighter', 50 ) . ';border-color:' .su_hex_shift( $atts['color'], 'darker', 20 ) . ';color:' .su_hex_shift( $atts['color'], 'darker', 60 ) . '">' . str_replace( '%login%', $login, su_scattr( $atts['message'] ) ) . '</div>';
|
896 |
-
}
|
897 |
-
// Return original content
|
898 |
-
else return do_shortcode( $content );
|
899 |
-
}
|
900 |
-
|
901 |
-
/**
|
902 |
-
* Shortcode: guests
|
903 |
-
*
|
904 |
-
* @param null $atts
|
905 |
-
* @param string $content
|
906 |
-
*
|
907 |
-
* @return string Output html
|
908 |
-
*/
|
909 |
-
function su_guests_shortcode( $atts = null, $content = null ) {
|
910 |
-
$atts = shortcode_atts( array( 'class' => '' ), $atts );
|
911 |
-
$return = '';
|
912 |
-
if ( !is_user_logged_in() && !is_null( $content ) ) {
|
913 |
-
su_query_asset( 'css', 'su-other-shortcodes' );
|
914 |
-
$return = '<div class="su-guests' . su_ecssc( $atts ) . '">' . do_shortcode( $content ) . '</div>';
|
915 |
-
}
|
916 |
-
return $return;
|
917 |
-
}
|
918 |
-
|
919 |
-
/**
|
920 |
-
* Shortcode: feed
|
921 |
-
*
|
922 |
-
* @param array $atts Shortcode attributes
|
923 |
-
* @param string $content
|
924 |
-
*
|
925 |
-
* @return string Output html
|
926 |
-
*/
|
927 |
-
function su_feed_shortcode( $atts, $content = null ) {
|
928 |
-
$atts = shortcode_atts( array(
|
929 |
-
'url' => get_bloginfo_rss( 'rss2_url' ),
|
930 |
-
'limit' => 3,
|
931 |
-
'class' => ''
|
932 |
-
), $atts );
|
933 |
-
if ( !function_exists( 'wp_rss' ) ) include_once ABSPATH . WPINC . '/rss.php';
|
934 |
-
ob_start();
|
935 |
-
echo '<div class="su-feed' . su_ecssc( $atts ) . '">';
|
936 |
-
wp_rss( $atts['url'], $atts['limit'] );
|
937 |
-
echo '</div>';
|
938 |
-
$return = ob_get_contents();
|
939 |
-
ob_end_clean();
|
940 |
-
return $return;
|
941 |
-
}
|
942 |
-
|
943 |
-
/**
|
944 |
-
* Shortcode: subpages
|
945 |
-
*
|
946 |
-
* @param unknown $atts
|
947 |
-
* @param string $content
|
948 |
-
*
|
949 |
-
* @return string Output html
|
950 |
-
*/
|
951 |
-
function su_subpages_shortcode( $atts, $content = null ) {
|
952 |
-
$atts = shortcode_atts( array(
|
953 |
-
'depth' => 1,
|
954 |
-
'p' => false,
|
955 |
-
'class' => ''
|
956 |
-
), $atts );
|
957 |
-
global $post;
|
958 |
-
$child_of = ( $atts['p'] ) ? $atts['p'] : get_the_ID();
|
959 |
-
$return = wp_list_pages( array(
|
960 |
-
'title_li' => '',
|
961 |
-
'echo' => 0,
|
962 |
-
'child_of' => $child_of,
|
963 |
-
'depth' => $atts['depth']
|
964 |
-
) );
|
965 |
-
return ( $return ) ? '<ul class="su-subpages' . su_ecssc( $atts ) . '">' . $return . '</ul>' : false;
|
966 |
-
}
|
967 |
-
|
968 |
-
/**
|
969 |
-
* Shortcode: siblings pages
|
970 |
-
*
|
971 |
-
* @param unknown $atts
|
972 |
-
* @param string $content
|
973 |
-
*
|
974 |
-
* @return string Output html
|
975 |
-
*/
|
976 |
-
function su_siblings_shortcode( $atts, $content = null ) {
|
977 |
-
$atts = shortcode_atts( array( 'depth' => 1, 'class' => '' ), $atts );
|
978 |
-
global $post;
|
979 |
-
$return = wp_list_pages( array( 'title_li' => '',
|
980 |
-
'echo' => 0,
|
981 |
-
'child_of' => $post->post_parent,
|
982 |
-
'depth' => $atts['depth'],
|
983 |
-
'exclude' => $post->ID ) );
|
984 |
-
return ( $return ) ? '<ul class="su-siblings' . su_ecssc( $atts ) . '">' . $return . '</ul>' : false;
|
985 |
-
}
|
986 |
-
|
987 |
-
/**
|
988 |
-
* Shortcode: menu
|
989 |
-
*
|
990 |
-
* @param unknown $atts
|
991 |
-
* @param string $content
|
992 |
-
*
|
993 |
-
* @return string Output html
|
994 |
-
*/
|
995 |
-
function su_menu_shortcode( $atts, $content = null ) {
|
996 |
-
$atts = shortcode_atts( array( 'name' => false, 'class' => '' ), $atts );
|
997 |
-
$return = wp_nav_menu( array( 'echo' => false,
|
998 |
-
'menu' => $atts['name'],
|
999 |
-
'container' => false,
|
1000 |
-
'fallback_cb' => 'su_menu_shortcode_fb_cb',
|
1001 |
-
'class' => $atts['class'] ) );
|
1002 |
-
return ( $atts['name'] ) ? $return : false;
|
1003 |
-
}
|
1004 |
-
|
1005 |
-
/**
|
1006 |
-
* Fallback callback function for menu shortcode
|
1007 |
-
*
|
1008 |
-
* @return string Text message
|
1009 |
-
*/
|
1010 |
-
function su_menu_shortcode_fb_cb() {
|
1011 |
-
return __( 'This menu doesn\'t exists, or has no elements', 'su' );
|
1012 |
-
}
|
1013 |
-
|
1014 |
-
/**
|
1015 |
-
* Shortcode: document
|
1016 |
-
*
|
1017 |
-
* @param array $atts Shortcode attributes
|
1018 |
-
* @param string $content
|
1019 |
-
*
|
1020 |
-
* @return string Output html
|
1021 |
-
*/
|
1022 |
-
function su_document_shortcode( $atts, $content = null ) {
|
1023 |
-
$atts = shortcode_atts( array(
|
1024 |
-
'url' => '',
|
1025 |
-
'file' => null, // 3.x
|
1026 |
-
'width' => 600,
|
1027 |
-
'height' => 400,
|
1028 |
-
'responsive' => 'yes',
|
1029 |
-
'class' => ''
|
1030 |
-
), $atts );
|
1031 |
-
if ( $atts['file'] !== null ) $atts['url'] = $atts['file'];
|
1032 |
-
su_query_asset( 'css', 'su-media-shortcodes' );
|
1033 |
-
return '<div class="su-document su-responsive-media-' . $atts['responsive'] . '"><iframe src="http://docs.google.com/viewer?embedded=true&url=' . $atts['url'] . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" class="su-document' . su_ecssc( $atts ) . '"></iframe></div>';
|
1034 |
-
}
|
1035 |
-
|
1036 |
-
/**
|
1037 |
-
* Shortcode: gmap
|
1038 |
-
*
|
1039 |
-
* @param array $atts Shortcode attributes
|
1040 |
-
* @param string $content
|
1041 |
-
*
|
1042 |
-
* @return string Output html
|
1043 |
-
*/
|
1044 |
-
function su_gmap_shortcode( $atts, $content = null ) {
|
1045 |
-
$atts = shortcode_atts( array(
|
1046 |
-
'width' => 600,
|
1047 |
-
'height' => 400,
|
1048 |
-
'responsive' => 'yes',
|
1049 |
-
'address' => 'New York',
|
1050 |
-
'class' => ''
|
1051 |
-
), $atts );
|
1052 |
-
su_query_asset( 'css', 'su-media-shortcodes' );
|
1053 |
-
return '<div class="su-gmap su-responsive-media-' . $atts['responsive'] . su_ecssc( $atts ) . '"><iframe width="' . $atts['width'] . '" height="' . $atts['height'] . '" src="http://maps.google.com/maps?q=' . urlencode( su_scattr( $atts['address'] ) ) . '&output=embed"></iframe></div>';
|
1054 |
-
}
|
1055 |
-
|
1056 |
-
/**
|
1057 |
-
* Shortcode: slider
|
1058 |
-
*
|
1059 |
-
* @param array $atts Shortcode attributes
|
1060 |
-
* @param string $content
|
1061 |
-
*
|
1062 |
-
* @return string Output html
|
1063 |
-
*/
|
1064 |
-
function su_slider_shortcode( $atts, $content = null ) {
|
1065 |
-
// Prepare vars
|
1066 |
-
$shult = shortcodes_ultimate();
|
1067 |
-
$return = '';
|
1068 |
-
$atts = shortcode_atts( array(
|
1069 |
-
'gallery' => 1,
|
1070 |
-
'width' => 600,
|
1071 |
-
'height' => 300,
|
1072 |
-
'responsive' => 'yes',
|
1073 |
-
'title' => 'yes',
|
1074 |
-
'centered' => 'yes',
|
1075 |
-
'arrows' => 'yes',
|
1076 |
-
'pages' => 'yes',
|
1077 |
-
'mousewheel' => 'yes',
|
1078 |
-
'autoplay' => 3000,
|
1079 |
-
'speed' => 600,
|
1080 |
-
'target' => 'yes',
|
1081 |
-
'class' => ''
|
1082 |
-
), $atts );
|
1083 |
-
// Prepare unique ID
|
1084 |
-
$id = uniqid( 'su_slider_' );
|
1085 |
-
// Links target
|
1086 |
-
$target = ( $atts['target'] === 'yes' ) ? ' target="_blank"' : '';
|
1087 |
-
// Centered class
|
1088 |
-
$centered = ( $atts['centered'] === 'yes' ) ? ' su-slider-centered' : '';
|
1089 |
-
// Wheel control
|
1090 |
-
$mousewheel = ( $atts['mousewheel'] === 'yes' ) ? 'true' : 'false';
|
1091 |
-
// Prepare gallery
|
1092 |
-
$galleries = $shult->get_option( 'galleries' );
|
1093 |
-
$gallery = ( is_numeric( $atts['gallery'] ) && $atts['gallery'] > 0 ) ? $galleries[$atts['gallery'] - 1] : 1;
|
1094 |
-
// Prepare slides
|
1095 |
-
$slides = ( count( ( array ) $gallery['items'] ) ) ? $gallery['items'] : array();
|
1096 |
-
// Prepare width and height
|
1097 |
-
$size = ( $atts['responsive'] === 'yes' ) ? 'width:100%' : 'width:' . intval( $atts['width'] ) . 'px;height:' . intval( $atts['height'] ) . 'px';
|
1098 |
-
// Slides not found
|
1099 |
-
if ( !count( $slides ) || !is_array( $slides ) ) $return = '<p class="su-error">Slider: ' . __( 'images not found', 'su' ) . '</p>';
|
1100 |
-
// Slides are found
|
1101 |
-
else {
|
1102 |
-
// Open slider
|
1103 |
-
$return .= '<div id="' . $id . '" class="su-slider' . $centered . ' su-slider-pages-' . $atts['pages'] . ' su-slider-responsive-' . $atts['responsive'] . su_ecssc( $atts ) . '" style="' . $size . '" data-autoplay="' . $atts['autoplay'] . '" data-speed="' . $atts['speed'] . '" data-mousewheel="' . $mousewheel . '"><div class="su-slider-slides">';
|
1104 |
-
// Create slides
|
1105 |
-
foreach ( (array) $slides as $slide ) {
|
1106 |
-
// Crop the image
|
1107 |
-
$image = su_image_resize( $slide['image'], $atts['width'], $atts['height'] );
|
1108 |
-
// Prepare slide title
|
1109 |
-
$title = ( $atts['title'] === 'yes' && $slide['title'] ) ? '<span class="su-slider-slide-title">' . stripslashes( $slide['title'] ) . '</span>' : '';
|
1110 |
-
// Open slide
|
1111 |
-
$return .= '<div class="su-slider-slide">';
|
1112 |
-
// Slide content with link
|
1113 |
-
if ( $slide['link'] ) $return .= '<a href="' . $slide['link'] . '"' . $target . '><img src="' . $image['url'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
1114 |
-
// Slide content without link
|
1115 |
-
else $return .= '<a><img src="' . $slide['image'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
1116 |
-
// Close slide
|
1117 |
-
$return .= '</div>';
|
1118 |
-
}
|
1119 |
-
// Close slides
|
1120 |
-
$return .= '</div>';
|
1121 |
-
// Open nav section
|
1122 |
-
$return .= '<div class="su-slider-nav">';
|
1123 |
-
// Append direction nav
|
1124 |
-
if ( $atts['arrows'] === 'yes'
|
1125 |
-
) $return .= '<div class="su-slider-direction"><span class="su-slider-prev"></span><span class="su-slider-next"></span></div>';
|
1126 |
-
// Append pagination nav
|
1127 |
-
$return .= '<div class="su-slider-pagination"></div>';
|
1128 |
-
// Close nav section
|
1129 |
-
$return .= '</div>';
|
1130 |
-
// Close slider
|
1131 |
-
$return .= '</div>';
|
1132 |
-
}
|
1133 |
-
su_query_asset( 'css', 'su-galleries-shortcodes' );
|
1134 |
-
su_query_asset( 'js', 'jquery' );
|
1135 |
-
su_query_asset( 'js', 'swiper' );
|
1136 |
-
su_query_asset( 'js', 'su-galleries-shortcodes' );
|
1137 |
-
return $return;
|
1138 |
-
}
|
1139 |
-
|
1140 |
-
/**
|
1141 |
-
* Shortcode: carousel
|
1142 |
-
*
|
1143 |
-
* @param array $atts Shortcode attributes
|
1144 |
-
* @param string $content
|
1145 |
-
*
|
1146 |
-
* @return string Output html
|
1147 |
-
*/
|
1148 |
-
function su_carousel_shortcode( $atts, $content = null ) {
|
1149 |
-
// Prepare vars
|
1150 |
-
$shult = shortcodes_ultimate();
|
1151 |
-
$return = '';
|
1152 |
-
$atts = shortcode_atts( array(
|
1153 |
-
'gallery' => 1,
|
1154 |
-
'width' => 600,
|
1155 |
-
'height' => 100,
|
1156 |
-
'responsive' => 'yes',
|
1157 |
-
'items' => 3,
|
1158 |
-
'scroll' => 1,
|
1159 |
-
'title' => 'yes',
|
1160 |
-
'centered' => 'yes',
|
1161 |
-
'arrows' => 'yes',
|
1162 |
-
'pages' => 'no',
|
1163 |
-
'mousewheel' => 'yes',
|
1164 |
-
'autoplay' => 3000,
|
1165 |
-
'speed' => 600,
|
1166 |
-
'target' => 'yes',
|
1167 |
-
'class' => ''
|
1168 |
-
), $atts );
|
1169 |
-
// Prepare unique ID
|
1170 |
-
$id = uniqid( 'su_carousel_' );
|
1171 |
-
// Links target
|
1172 |
-
$target = ( $atts['target'] === 'yes' ) ? ' target="_blank"' : '';
|
1173 |
-
// Centered class
|
1174 |
-
$centered = ( $atts['centered'] === 'yes' ) ? ' su-carousel-centered' : '';
|
1175 |
-
// Wheel control
|
1176 |
-
$mousewheel = ( $atts['mousewheel'] === 'yes' ) ? 'true' : 'false';
|
1177 |
-
// Prepare gallery
|
1178 |
-
$galleries = $shult->get_option( 'galleries' );
|
1179 |
-
$gallery = ( is_numeric( $atts['gallery'] ) && $atts['gallery'] > 0 ) ? $galleries[$atts['gallery'] - 1] : 1;
|
1180 |
-
// Prepare slides
|
1181 |
-
$slides = ( count( ( array ) $gallery['items'] ) ) ? $gallery['items'] : array();
|
1182 |
-
// Prepare width and height
|
1183 |
-
$size = ( $atts['responsive'] === 'yes' ) ? 'width:100%' : 'width:' . intval( $atts['width'] ) . 'px;height:' . intval( $atts['height'] ) . 'px';
|
1184 |
-
// Slides not found
|
1185 |
-
if ( !count( $slides ) || !is_array( $slides ) ) $return = '<p class="su-error">Carousel: ' . __( 'images not found', 'su' ) . '</p>';
|
1186 |
-
// Slides are found
|
1187 |
-
else {
|
1188 |
-
// Open slider
|
1189 |
-
$return .= '<div id="' . $id . '" class="su-carousel' . $centered . ' su-carousel-pages-' . $atts['pages'] . ' su-carousel-responsive-' . $atts['responsive'] . su_ecssc( $atts ) . '" style="' . $size . '" data-autoplay="' . $atts['autoplay'] . '" data-speed="' . $atts['speed'] . '" data-mousewheel="' . $mousewheel . '" data-items="' . $atts['items'] . '" data-scroll="' . $atts['scroll'] . '"><div class="su-carousel-slides">';
|
1190 |
-
// Create slides
|
1191 |
-
foreach ( (array) $slides as $slide ) {
|
1192 |
-
// Crop the image
|
1193 |
-
$image = su_image_resize( $slide['image'], round( $atts['width'] / $atts['items'] ), $atts['height'] );
|
1194 |
-
// Prepare slide title
|
1195 |
-
$title = ( $atts['title'] === 'yes' && $slide['title'] ) ? '<span class="su-carousel-slide-title">' . stripslashes( $slide['title'] ) . '</span>' : '';
|
1196 |
-
// Open slide
|
1197 |
-
$return .= '<div class="su-carousel-slide">';
|
1198 |
-
// Slide content with link
|
1199 |
-
if ( $slide['link'] ) $return .= '<a href="' . $slide['link'] . '"' . $target . '><img src="' . $image['url'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
1200 |
-
// Slide content without link
|
1201 |
-
else $return .= '<a><img src="' . $slide['image'] . '" alt="' . esc_attr( $slide['title'] ) . '" />' . $title . '</a>';
|
1202 |
-
// Close slide
|
1203 |
-
$return .= '</div>';
|
1204 |
-
}
|
1205 |
-
// Close slides
|
1206 |
-
$return .= '</div>';
|
1207 |
-
// Open nav section
|
1208 |
-
$return .= '<div class="su-carousel-nav">';
|
1209 |
-
// Append direction nav
|
1210 |
-
if ( $atts['arrows'] === 'yes'
|
1211 |
-
) $return .= '<div class="su-carousel-direction"><span class="su-carousel-prev"></span><span class="su-carousel-next"></span></div>';
|
1212 |
-
// Append pagination nav
|
1213 |
-
$return .= '<div class="su-carousel-pagination"></div>';
|
1214 |
-
// Close nav section
|
1215 |
-
$return .= '</div>';
|
1216 |
-
// Close slider
|
1217 |
-
$return .= '</div>';
|
1218 |
-
}
|
1219 |
-
su_query_asset( 'css', 'su-galleries-shortcodes' );
|
1220 |
-
su_query_asset( 'js', 'jquery' );
|
1221 |
-
su_query_asset( 'js', 'swiper' );
|
1222 |
-
su_query_asset( 'js', 'su-galleries-shortcodes' );
|
1223 |
-
return $return;
|
1224 |
-
}
|
1225 |
-
|
1226 |
-
/**
|
1227 |
-
* Shortcode: custom_gallery
|
1228 |
-
*
|
1229 |
-
* @param array $atts Shortcode attributes
|
1230 |
-
* @param string $content
|
1231 |
-
*
|
1232 |
-
* @return string Output html
|
1233 |
-
*/
|
1234 |
-
function su_custom_gallery_shortcode( $atts, $content = null ) {
|
1235 |
-
// Prepare vars
|
1236 |
-
$shult = shortcodes_ultimate();
|
1237 |
-
$return = '';
|
1238 |
-
$atts = shortcode_atts( array(
|
1239 |
-
'gallery' => 1,
|
1240 |
-
'width' => 90,
|
1241 |
-
'height' => 90,
|
1242 |
-
'title' => 'hover',
|
1243 |
-
'target' => 'yes',
|
1244 |
-
'class' => ''
|
1245 |
-
), $atts );
|
1246 |
-
// Links target
|
1247 |
-
$target = ( $atts['target'] === 'yes' ) ? ' target="_blank"' : '';
|
1248 |
-
// Prepare gallery
|
1249 |
-
$galleries = $shult->get_option( 'galleries' );
|
1250 |
-
$gallery = ( is_numeric( $atts['gallery'] ) && $atts['gallery'] > 0 ) ? $galleries[$atts['gallery'] - 1] : 1;
|
1251 |
-
// Prepare slides
|
1252 |
-
$slides = ( count( ( array ) $gallery['items'] ) ) ? $gallery['items'] : array();
|
1253 |
-
// Slides not found
|
1254 |
-
if ( !count( $slides ) || !is_array( $slides ) ) $return = '<p class="su-error">Custom gallery: ' . __( 'images not found', 'su' ) . '</p>';
|
1255 |
-
// Slides are found
|
1256 |
-
else {
|
1257 |
-
// Open gallery
|
1258 |
-
$return .= '<div class="su-custom-gallery su-custom-gallery-title-' . $atts['title'] . su_ecssc( $atts ) . '">';
|
1259 |
-
// Create slides
|
1260 |
-
foreach ( (array) $slides as $slide ) {
|
1261 |
-
// Crop image
|
1262 |
-
$image = su_image_resize( $slide['image'], $atts['width'], $atts['height'] );
|
1263 |
-
// Prepare slide title
|
1264 |
-
$title = ( $slide['title'] ) ? '<span class="su-custom-gallery-title">' . stripslashes( $slide['title'] ) . '</span>' : '';
|
1265 |
-
// Open slide
|
1266 |
-
$return .= '<div class="su-custom-gallery-slide">';
|
1267 |
-
// Slide content with link
|
1268 |
-
if ( $slide['link'] ) $return .= '<a href="' . $slide['link'] . '"' . $target . '><img src="' . $image['url'] . '" alt="' . esc_attr( $slide['title'] ) . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" />' . $title . '</a>';
|
1269 |
-
// Slide content without link
|
1270 |
-
else $return .= '<a><img src="' . $slide['image'] . '" alt="' . esc_attr( $slide['title'] ) . '" width="' . $atts['width'] . '" height="' . $atts['height'] . '" />' . $title . '</a>';
|
1271 |
-
// Close slide
|
1272 |
-
$return .= '</div>';
|
1273 |
-
}
|
1274 |
-
// Clear floats
|
1275 |
-
$return .= '<div class="su-clear"></div>';
|
1276 |
-
// Close gallery
|
1277 |
-
$return .= '</div>';
|
1278 |
-
}
|
1279 |
-
su_query_asset( 'css', 'su-galleries-shortcodes' );
|
1280 |
-
return $return;
|
1281 |
-
}
|
1282 |
-
|
1283 |
-
/**
|
1284 |
-
* Shortcode: posts
|
1285 |
-
*
|
1286 |
-
* Based on plugin by Bill Erickson <http://www.billerickson.net/shortcode-to-display-posts/>
|
1287 |
-
*
|
1288 |
-
* @param array $atts Shortcode attributes
|
1289 |
-
* @param string $content
|
1290 |
-
*
|
1291 |
-
* @return string Output html
|
1292 |
-
*/
|
1293 |
-
function su_posts_shortcode( $atts, $content = null ) {
|
1294 |
-
// Prepare error var
|
1295 |
-
$error = null;
|
1296 |
-
// Parse attributes
|
1297 |
-
$atts = shortcode_atts( array(
|
1298 |
-
'template' => 'templates/default-loop.php',
|
1299 |
-
'id' => false,
|
1300 |
-
'posts_per_page' => get_option( 'posts_per_page' ),
|
1301 |
-
'post_type' => 'post',
|
1302 |
-
'taxonomy' => 'category',
|
1303 |
-
'tax_term' => false,
|
1304 |
-
'tax_operator' => 'IN',
|
1305 |
-
'author' => '',
|
1306 |
-
'meta_key' => '',
|
1307 |
-
'offset' => 0,
|
1308 |
-
'order' => 'DESC',
|
1309 |
-
'orderby' => 'date',
|
1310 |
-
'post_parent' => false,
|
1311 |
-
'post_status' => 'publish',
|
1312 |
-
'ignore_sticky_posts' => 'no'
|
1313 |
-
), $atts );
|
1314 |
-
|
1315 |
-
$original_atts = $atts;
|
1316 |
-
|
1317 |
-
$author = sanitize_text_field( $atts['author'] );
|
1318 |
-
$id = $atts['id']; // Sanitized later as an array of integers
|
1319 |
-
$ignore_sticky_posts = ( bool ) ( $atts['ignore_sticky_posts'] === 'yes' ) ? true : false;
|
1320 |
-
$meta_key = sanitize_text_field( $atts['meta_key'] );
|
1321 |
-
$offset = intval( $atts['offset'] );
|
1322 |
-
$order = sanitize_key( $atts['order'] );
|
1323 |
-
$orderby = sanitize_key( $atts['orderby'] );
|
1324 |
-
$post_parent = $atts['post_parent'];
|
1325 |
-
$post_status = $atts['post_status'];
|
1326 |
-
$post_type = sanitize_text_field( $atts['post_type'] );
|
1327 |
-
$posts_per_page = intval( $atts['posts_per_page'] );
|
1328 |
-
$tag = sanitize_text_field( $atts['tag'] );
|
1329 |
-
$tax_operator = $atts['tax_operator'];
|
1330 |
-
$tax_term = sanitize_text_field( $atts['tax_term'] );
|
1331 |
-
$taxonomy = sanitize_key( $atts['taxonomy'] );
|
1332 |
-
|
1333 |
-
// Set up initial query for post
|
1334 |
-
$args = array( 'category_name' => '',
|
1335 |
-
'order' => $order,
|
1336 |
-
'orderby' => $orderby,
|
1337 |
-
'post_type' => explode( ',', $post_type ),
|
1338 |
-
'posts_per_page' => $posts_per_page,
|
1339 |
-
'tag' => $tag, );
|
1340 |
-
|
1341 |
-
// Ignore Sticky Posts
|
1342 |
-
if ( $ignore_sticky_posts ) $args['ignore_sticky_posts'] = true;
|
1343 |
-
|
1344 |
-
// Meta key (for ordering)
|
1345 |
-
if ( !empty( $meta_key ) ) $args['meta_key'] = $meta_key;
|
1346 |
-
|
1347 |
-
// If Post IDs
|
1348 |
-
if ( $id ) {
|
1349 |
-
$posts_in = array_map( 'intval', explode( ',', $id ) );
|
1350 |
-
$args['post__in'] = $posts_in;
|
1351 |
-
}
|
1352 |
-
|
1353 |
-
// Post Author
|
1354 |
-
if ( !empty( $author ) ) $args['author_name'] = $author;
|
1355 |
-
|
1356 |
-
// Offset
|
1357 |
-
if ( !empty( $offset ) ) $args['offset'] = $offset;
|
1358 |
-
|
1359 |
-
// Post Status
|
1360 |
-
$post_status = explode( ', ', $post_status );
|
1361 |
-
$validated = array();
|
1362 |
-
$available = array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash', 'any' );
|
1363 |
-
foreach ( $post_status as $unvalidated ) {
|
1364 |
-
if ( in_array( $unvalidated, $available ) ) $validated[] = $unvalidated;
|
1365 |
-
}
|
1366 |
-
if ( !empty( $validated ) ) $args['post_status'] = $validated;
|
1367 |
-
|
1368 |
-
// If taxonomy attributes, create a taxonomy query
|
1369 |
-
if ( !empty( $taxonomy ) && !empty( $tax_term ) ) {
|
1370 |
-
|
1371 |
-
// Term string to array
|
1372 |
-
$tax_term = explode( ',', $tax_term );
|
1373 |
-
|
1374 |
-
// Validate operator
|
1375 |
-
if ( !in_array( $tax_operator, array( 'IN', 'NOT IN', 'AND' ) ) ) $tax_operator = 'IN';
|
1376 |
-
|
1377 |
-
$tax_args = array( 'tax_query' => array( array( 'taxonomy' => $taxonomy,
|
1378 |
-
'field' => 'slug',
|
1379 |
-
'terms' => $tax_term,
|
1380 |
-
'operator' => $tax_operator ) ) );
|
1381 |
-
|
1382 |
-
// Check for multiple taxonomy queries
|
1383 |
-
$count = 2;
|
1384 |
-
$more_tax_queries = false;
|
1385 |
-
while ( isset( $original_atts['taxonomy_' . $count] ) && !empty( $original_atts['taxonomy_' . $count] ) &&
|
1386 |
-
isset( $original_atts['tax_' . $count . '_term'] ) &&
|
1387 |
-
!empty( $original_atts['tax_' . $count . '_term'] ) ) {
|
1388 |
-
|
1389 |
-
// Sanitize values
|
1390 |
-
$more_tax_queries = true;
|
1391 |
-
$taxonomy = sanitize_key( $original_atts['taxonomy_' . $count] );
|
1392 |
-
$terms = explode( ', ', sanitize_text_field( $original_atts['tax_' . $count . '_term'] ) );
|
1393 |
-
$tax_operator = isset( $original_atts['tax_' . $count . '_operator'] ) ? $original_atts[
|
1394 |
-
'tax_' . $count . '_operator'] : 'IN';
|
1395 |
-
$tax_operator = in_array( $tax_operator, array( 'IN', 'NOT IN', 'AND' ) ) ? $tax_operator : 'IN';
|
1396 |
-
|
1397 |
-
$tax_args['tax_query'][] = array( 'taxonomy' => $taxonomy,
|
1398 |
-
'field' => 'slug',
|
1399 |
-
'terms' => $terms,
|
1400 |
-
'operator' => $tax_operator );
|
1401 |
-
|
1402 |
-
$count++;
|
1403 |
-
}
|
1404 |
-
|
1405 |
-
if ( $more_tax_queries ):
|
1406 |
-
$tax_relation = 'AND';
|
1407 |
-
if ( isset( $original_atts['tax_relation'] ) &&
|
1408 |
-
in_array( $original_atts['tax_relation'], array( 'AND', 'OR' ) )
|
1409 |
-
) $tax_relation = $original_atts['tax_relation'];
|
1410 |
-
$args['tax_query']['relation'] = $tax_relation;
|
1411 |
-
endif;
|
1412 |
-
|
1413 |
-
$args = array_merge( $args, $tax_args );
|
1414 |
-
}
|
1415 |
-
|
1416 |
-
// If post parent attribute, set up parent
|
1417 |
-
if ( $post_parent ) {
|
1418 |
-
if ( 'current' == $post_parent ) {
|
1419 |
-
global $post;
|
1420 |
-
$post_parent = $post->ID;
|
1421 |
-
}
|
1422 |
-
$args['post_parent'] = intval( $post_parent );
|
1423 |
-
}
|
1424 |
-
|
1425 |
-
// Save original posts
|
1426 |
-
global $posts;
|
1427 |
-
$original_posts = $posts;
|
1428 |
-
// Query posts
|
1429 |
-
$posts = new WP_Query( $args );
|
1430 |
-
// Buffer output
|
1431 |
-
ob_start();
|
1432 |
-
// Search for template in stylesheet directory
|
1433 |
-
if ( file_exists( STYLESHEETPATH . '/' . $atts['template'] ) ) load_template( STYLESHEETPATH . '/' . $atts['template'], false );
|
1434 |
-
// Search for template in theme directory
|
1435 |
-
elseif ( file_exists( TEMPLATEPATH . '/' . $atts['template'] ) ) load_template( TEMPLATEPATH . '/' . $atts['template'], false );
|
1436 |
-
// Search for template in plugin directory
|
1437 |
-
elseif ( path_join( dirname( SU_PLUGIN_FILE ), $atts['template'] ) ) load_template( path_join( dirname( SU_PLUGIN_FILE ), $atts['template'] ), false );
|
1438 |
-
// Template not found
|
1439 |
-
else echo '<p class="su-error">Posts: ' . __( 'template not found', 'su' ) . '</p>';
|
1440 |
-
$output = ob_get_contents();
|
1441 |
-
ob_end_clean();
|
1442 |
-
// Return original posts
|
1443 |
-
$posts = $original_posts;
|
1444 |
-
// Reset the query
|
1445 |
-
wp_reset_postdata();
|
1446 |
-
su_query_asset( 'css', 'su-other-shortcodes' );
|
1447 |
-
return $output;
|
1448 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inc/core/tools.php
CHANGED
@@ -226,6 +226,13 @@ function su_compatibility_mode_prefix() {
|
|
226 |
else return '';
|
227 |
}
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
/**
|
230 |
* Tweet relative time (like: 5 seconds ago)
|
231 |
*/
|
@@ -719,6 +726,10 @@ class Shortcodes_Ultimate_Tools {
|
|
719 |
public static function decode_shortcode( $value ) {
|
720 |
return do_shortcode( str_replace( array( '{', '}' ), array( '[', ']' ), $value ) );
|
721 |
}
|
|
|
|
|
|
|
|
|
722 |
}
|
723 |
|
724 |
/**
|
@@ -726,4 +737,4 @@ class Shortcodes_Ultimate_Tools {
|
|
726 |
*/
|
727 |
function su_scattr( $value ) {
|
728 |
return Shortcodes_Ultimate_Tools::decode_shortcode( $value );
|
729 |
-
}
|
226 |
else return '';
|
227 |
}
|
228 |
|
229 |
+
/**
|
230 |
+
* Shortcut for su_compatibility_mode_prefix()
|
231 |
+
*/
|
232 |
+
function su_cmpt() {
|
233 |
+
return su_compatibility_mode_prefix();
|
234 |
+
}
|
235 |
+
|
236 |
/**
|
237 |
* Tweet relative time (like: 5 seconds ago)
|
238 |
*/
|
726 |
public static function decode_shortcode( $value ) {
|
727 |
return do_shortcode( str_replace( array( '{', '}' ), array( '[', ']' ), $value ) );
|
728 |
}
|
729 |
+
|
730 |
+
public static function icon( $src = 'icon-file' ) {
|
731 |
+
return ( strpos( $src, '/' ) !== false ) ? '<img src="' . $src . '" alt="" />' : '<i class="' . $src . '"></i>';
|
732 |
+
}
|
733 |
}
|
734 |
|
735 |
/**
|
737 |
*/
|
738 |
function su_scattr( $value ) {
|
739 |
return Shortcodes_Ultimate_Tools::decode_shortcode( $value );
|
740 |
+
}
|
inc/vendor/class.sunrise-framework.php
CHANGED
@@ -154,7 +154,8 @@ if ( !class_exists( 'Sunrise_Plugin_Framework_2_1' ) ) {
|
|
154 |
// Get options from database
|
155 |
$options = get_option( $this->option );
|
156 |
// Check option is specified
|
157 |
-
$value = (
|
|
|
158 |
// Return result
|
159 |
return ( is_array( $value ) ) ? array_filter( $value, 'esc_attr' ) : esc_attr( stripslashes( $value ) );
|
160 |
}
|
154 |
// Get options from database
|
155 |
$options = get_option( $this->option );
|
156 |
// Check option is specified
|
157 |
+
$value = ( isset( $option ) && $option && isset( $options[$option] ) ) ? $options[$option] : null;
|
158 |
+
if ( $option === false ) $value = $options;
|
159 |
// Return result
|
160 |
return ( is_array( $value ) ) ? array_filter( $value, 'esc_attr' ) : esc_attr( stripslashes( $value ) );
|
161 |
}
|
readme.txt
CHANGED
@@ -95,54 +95,40 @@ Upgrade normally via your Wordpress admin -> Plugins panel.
|
|
95 |
|
96 |
== Changelog ==
|
97 |
|
98 |
-
= 4.
|
|
|
|
|
99 |
* Removed warning at settings page - [forum topic](http://wordpress.org/support/topic/warning-on-settings-page)
|
100 |
* Removed another warning (undefined index) - [forum topic](http://wordpress.org/support/topic/undefined-index-with-wp_debug-true)
|
101 |
* Changed syntax for shortcodes inside of attributes - [documentation](http://gndev.info/kb/how-to-use-another-shortcodes-inside-of-attributes/)
|
102 |
* Small performance improvemets
|
103 |
* Aded font-awesome.css. Will be completely included in closest versions
|
104 |
-
|
105 |
-
= 4.1.8 =
|
106 |
* Added default taxonomy value for [posts]
|
107 |
* Added default post_type value for [posts]
|
108 |
* Added ability to use shortcodes inside of attributes
|
109 |
* Translated into Japanese
|
110 |
-
|
111 |
-
= 4.1.7 =
|
112 |
* Fixed [button wide=yes]
|
113 |
* Fixed media query for [column]
|
114 |
* Added new attr [column center=yes]
|
115 |
* Improved js code for spoilers and tabs
|
116 |
* Improved js code for generator
|
117 |
-
|
118 |
-
= 4.1.6 =
|
119 |
* Added pot file
|
120 |
* Fixed [button] css code
|
121 |
* Updated [accordion], [spoiler] and [tabs] js code
|
122 |
* Fixed [tooltip]
|
123 |
* Updated Greek translation
|
124 |
-
|
125 |
-
= 4.1.5 =
|
126 |
* Fixed [lightbox]
|
127 |
* Disabled wp_footer check
|
128 |
-
|
129 |
-
= 4.1.4 =
|
130 |
* Fixed wp_footer notice, again
|
131 |
-
|
132 |
-
= 4.1.3 =
|
133 |
* Small fix for tooltips
|
134 |
* Fixed wp_footer notice
|
135 |
* Greek translation
|
136 |
-
|
137 |
-
= 4.1.2 =
|
138 |
* Added compatibility mode prefix for spoilers inside of accordion
|
139 |
* Updated qTip plugin
|
140 |
* Added shortcode [tooltip]
|
141 |
* Added new attribute. [tab disabled="yes"]. Now, any tab can be disabled. [Forum topic](http://wordpress.org/support/topic/tabs-how-to-disable-one-of-the-tabs)
|
142 |
* Added [accordion] scrolling. [Forum topic](http://wordpress.org/support/topic/accordion-usability-issue)
|
143 |
* Added wp_footer check. User will be noticed if current theme doen't includes wp_footer
|
144 |
-
|
145 |
-
= 4.1.1 =
|
146 |
* Updated caching mechanism. Cache will be reseted when you add or remove terms
|
147 |
* Updated galleries mechanism. Removed some conflicts
|
148 |
* Fixed spoiler background for style=fancy
|
95 |
|
96 |
== Changelog ==
|
97 |
|
98 |
+
= 4.2 =
|
99 |
+
* Font Awesome icons (in Generator)
|
100 |
+
* Fixed warning in footer - [forum topic](http://wordpress.org/support/topic/bug-showing-in-online-site-after-updating-the-plugin)
|
101 |
* Removed warning at settings page - [forum topic](http://wordpress.org/support/topic/warning-on-settings-page)
|
102 |
* Removed another warning (undefined index) - [forum topic](http://wordpress.org/support/topic/undefined-index-with-wp_debug-true)
|
103 |
* Changed syntax for shortcodes inside of attributes - [documentation](http://gndev.info/kb/how-to-use-another-shortcodes-inside-of-attributes/)
|
104 |
* Small performance improvemets
|
105 |
* Aded font-awesome.css. Will be completely included in closest versions
|
|
|
|
|
106 |
* Added default taxonomy value for [posts]
|
107 |
* Added default post_type value for [posts]
|
108 |
* Added ability to use shortcodes inside of attributes
|
109 |
* Translated into Japanese
|
|
|
|
|
110 |
* Fixed [button wide=yes]
|
111 |
* Fixed media query for [column]
|
112 |
* Added new attr [column center=yes]
|
113 |
* Improved js code for spoilers and tabs
|
114 |
* Improved js code for generator
|
|
|
|
|
115 |
* Added pot file
|
116 |
* Fixed [button] css code
|
117 |
* Updated [accordion], [spoiler] and [tabs] js code
|
118 |
* Fixed [tooltip]
|
119 |
* Updated Greek translation
|
|
|
|
|
120 |
* Fixed [lightbox]
|
121 |
* Disabled wp_footer check
|
|
|
|
|
122 |
* Fixed wp_footer notice, again
|
|
|
|
|
123 |
* Small fix for tooltips
|
124 |
* Fixed wp_footer notice
|
125 |
* Greek translation
|
|
|
|
|
126 |
* Added compatibility mode prefix for spoilers inside of accordion
|
127 |
* Updated qTip plugin
|
128 |
* Added shortcode [tooltip]
|
129 |
* Added new attribute. [tab disabled="yes"]. Now, any tab can be disabled. [Forum topic](http://wordpress.org/support/topic/tabs-how-to-disable-one-of-the-tabs)
|
130 |
* Added [accordion] scrolling. [Forum topic](http://wordpress.org/support/topic/accordion-usability-issue)
|
131 |
* Added wp_footer check. User will be noticed if current theme doen't includes wp_footer
|
|
|
|
|
132 |
* Updated caching mechanism. Cache will be reseted when you add or remove terms
|
133 |
* Updated galleries mechanism. Removed some conflicts
|
134 |
* Fixed spoiler background for style=fancy
|
shortcodes-ultimate.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Shortcodes Ultimate
|
4 |
Plugin URI: http://gndev.info/shortcodes-ultimate/
|
5 |
-
Version: 4.
|
6 |
Author: Vladimir Anokhin
|
7 |
Author URI: http://gndev.info/
|
8 |
Description: Supercharge your WordPress theme with mega pack of shortcodes
|
@@ -23,7 +23,7 @@ require_once 'inc/core/class.shortcodes-ultimate.php';
|
|
23 |
require_once 'inc/core/class.assets.php';
|
24 |
require_once 'inc/core/class.data.php';
|
25 |
require_once 'inc/core/tools.php';
|
26 |
-
require_once 'inc/core/shortcodes.php';
|
27 |
require_once 'inc/core/class.generator.php';
|
28 |
require_once 'inc/core/class.widget.php';
|
29 |
require_once 'inc/core/class.vote.php';
|
2 |
/*
|
3 |
Plugin Name: Shortcodes Ultimate
|
4 |
Plugin URI: http://gndev.info/shortcodes-ultimate/
|
5 |
+
Version: 4.2.0
|
6 |
Author: Vladimir Anokhin
|
7 |
Author URI: http://gndev.info/
|
8 |
Description: Supercharge your WordPress theme with mega pack of shortcodes
|
23 |
require_once 'inc/core/class.assets.php';
|
24 |
require_once 'inc/core/class.data.php';
|
25 |
require_once 'inc/core/tools.php';
|
26 |
+
require_once 'inc/core/class.shortcodes.php';
|
27 |
require_once 'inc/core/class.generator.php';
|
28 |
require_once 'inc/core/class.widget.php';
|
29 |
require_once 'inc/core/class.vote.php';
|