Version Description
- 2020/01/13 =
- Update: Improve SEO for Ajax pagination: relace the format
/pages/
(as it caused some issues) by_page=
; make each component pages accessible individually. - Update: Add link to title in the Collapsible list
- Update: Show original post title in Collapsible list without stripping HTML tags as previous versions
- New: Add option to show original full content without attempt to balance HTML tags
- Some minor updates and fixes
Download this release
Release Info
Developer | PT Guy |
Plugin | Content Views – Post Grid & List for WordPress |
Version | 2.3.0 |
Comparing to | |
See all releases |
Code changes from version 2.2.0 to 2.3.0
- README.txt +9 -2
- admin/assets/css/admin.css +6 -0
- admin/assets/js/admin.js +635 -652
- admin/content-views-admin.php +1 -1
- admin/views/view.php +721 -709
- content-views.php +2 -2
- includes/compatibility.php +58 -62
- includes/defines.php +0 -2
- includes/formatting.php +67 -67
- includes/functions.php +1537 -1474
- includes/hooks.php +297 -309
- includes/html-viewtype.php +2 -2
- includes/html.php +879 -870
- includes/settings.php +971 -931
- includes/values.php +447 -446
- public/assets/css/cv.css +5 -5
- public/assets/css/cv.im.css +5 -5
- public/assets/js/cv.js +17 -17
- public/templates/collapsible/html/main.php +42 -36
README.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: pt-guy
|
|
3 |
Donate link: https://www.contentviewspro.com/?utm_source=wordpress&utm_medium=plugin&utm_campaign=donate
|
4 |
Tags: post grid, grid plugin, grid, latest post, display post, post, page, category, responsive, list, thumbnail
|
5 |
Requires at least: 3.3
|
6 |
-
Tested up to: 5.2
|
7 |
-
Stable tag: 2.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -159,6 +159,13 @@ If you are using "Your latest posts" as home page, you should paste this code `<
|
|
159 |
|
160 |
== Changelog ==
|
161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
= 2.2.0 - 2019/05/31 =
|
163 |
* Enhancement: upgrade bootstrap framework to latest secure version 3.4.1
|
164 |
|
3 |
Donate link: https://www.contentviewspro.com/?utm_source=wordpress&utm_medium=plugin&utm_campaign=donate
|
4 |
Tags: post grid, grid plugin, grid, latest post, display post, post, page, category, responsive, list, thumbnail
|
5 |
Requires at least: 3.3
|
6 |
+
Tested up to: 5.3.2
|
7 |
+
Stable tag: 2.3.0
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
159 |
|
160 |
== Changelog ==
|
161 |
|
162 |
+
= 2.3.0 - 2020/01/13 =
|
163 |
+
* Update: Improve SEO for Ajax pagination: relace the format `/pages/` (as it caused some issues) by `_page=`; make each component pages accessible individually.
|
164 |
+
* Update: Add link to title in the Collapsible list
|
165 |
+
* Update: Show original post title in Collapsible list without stripping HTML tags as previous versions
|
166 |
+
* New: Add option to show original full content without attempt to balance HTML tags
|
167 |
+
* Some minor updates and fixes
|
168 |
+
|
169 |
= 2.2.0 - 2019/05/31 =
|
170 |
* Enhancement: upgrade bootstrap framework to latest secure version 3.4.1
|
171 |
|
admin/assets/css/admin.css
CHANGED
@@ -22,6 +22,7 @@
|
|
22 |
height: 34px;
|
23 |
}
|
24 |
body {background-color: #fff}
|
|
|
25 |
|
26 |
/* Fix Bootstrap box-sizing "border-box" problem */
|
27 |
.pt-wrap *,
|
@@ -307,6 +308,11 @@ html {
|
|
307 |
background: #fff;
|
308 |
}
|
309 |
|
|
|
|
|
|
|
|
|
|
|
310 |
.pt-cv-excerpt-setting > label {
|
311 |
display: none !important;
|
312 |
}
|
22 |
height: 34px;
|
23 |
}
|
24 |
body {background-color: #fff}
|
25 |
+
.pt-params .select2-input {line-height: 20px;} /* WP 5.3 */
|
26 |
|
27 |
/* Fix Bootstrap box-sizing "border-box" problem */
|
28 |
.pt-wrap *,
|
308 |
background: #fff;
|
309 |
}
|
310 |
|
311 |
+
.pt-cv-content-setting > .pt-params,
|
312 |
+
.pt-cv-content-setting + .pt-cv-excerpt-setting > .pt-params {
|
313 |
+
border-bottom: none !important;
|
314 |
+
}
|
315 |
+
|
316 |
.pt-cv-excerpt-setting > label {
|
317 |
display: none !important;
|
318 |
}
|
admin/assets/js/admin.js
CHANGED
@@ -1,653 +1,636 @@
|
|
1 |
-
/**
|
2 |
-
* Main script file for WP admin
|
3 |
-
*
|
4 |
-
* @package PT_Content_Views_Admin
|
5 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
6 |
-
* @license GPL-2.0+
|
7 |
-
* @link http://www.contentviewspro.com/
|
8 |
-
* @copyright 2014 PT Guy
|
9 |
-
*/
|
10 |
-
|
11 |
-
( function ( $ ) {
|
12 |
-
"use strict";
|
13 |
-
|
14 |
-
$.PT_CV_Admin = $.PT_CV_Admin || { };
|
15 |
-
PT_CV_ADMIN = PT_CV_ADMIN || { };
|
16 |
-
ajaxurl = ajaxurl || { };
|
17 |
-
var _prefix = PT_CV_ADMIN._prefix;
|
18 |
-
|
19 |
-
$.PT_CV_Admin = function ( options ) {
|
20 |
-
this.options = $.extend( {
|
21 |
-
onload: 1,
|
22 |
-
scroll_time: 500,
|
23 |
-
can_preview: 1
|
24 |
-
}, options );
|
25 |
-
|
26 |
-
this.init();
|
27 |
-
};
|
28 |
-
|
29 |
-
$.PT_CV_Admin.prototype = {
|
30 |
-
init: function () {
|
31 |
-
this.custom();
|
32 |
-
|
33 |
-
// Validate number
|
34 |
-
this.validate_number();
|
35 |
-
// Select2
|
36 |
-
$( 'select.' + _prefix + 'select2' ).select2();
|
37 |
-
|
38 |
-
},
|
39 |
-
custom: function () {
|
40 |
-
var $self = this;
|
41 |
-
|
42 |
-
this.preview();
|
43 |
-
this._preview_btn_toggle();
|
44 |
-
this._content_type();
|
45 |
-
this._toggle_taxonomy_relation();
|
46 |
-
this._thumbnail_settings();
|
47 |
-
|
48 |
-
// Toggle panel
|
49 |
-
this._toggle_panel( '.' + _prefix + 'group .panel-heading' );
|
50 |
-
// 'Advance Settings'
|
51 |
-
this.toggle_group( '.' + _prefix + 'advanced-settings-item' );
|
52 |
-
// 'Terms' (in "Taxonomy Settings")
|
53 |
-
this.toggle_group( '.' + _prefix + 'taxonomy-item' );
|
54 |
-
// 'Content type'
|
55 |
-
this.toggle_group( '[name="' + _prefix + 'content-type' + '"]', false );
|
56 |
-
// 'View type settings'
|
57 |
-
this.toggle_group( '[name="' + _prefix + 'view-type' + '"]', false );
|
58 |
-
// Toggle dependencies
|
59 |
-
this.dependence_do_all();
|
60 |
-
|
61 |
-
// Prevent click on links
|
62 |
-
$( '#' + _prefix + 'preview-box' ).on( 'click', 'a', function ( e ) {
|
63 |
-
e.preventDefault();
|
64 |
-
} );
|
65 |
-
$( '.pt-accordion-a' ).click( function ( e ) {
|
66 |
-
e.preventDefault();
|
67 |
-
} );
|
68 |
-
|
69 |
-
// Show alert when leave page without saving View
|
70 |
-
var checked = 0;
|
71 |
-
$( '#' + _prefix + 'form-view input[type="submit"]' + ',' + 'a[href*="action=duplicate"]' ).click( function () {
|
72 |
-
checked = 1;
|
73 |
-
} );
|
74 |
-
window.onbeforeunload = function ( event ) {
|
75 |
-
if ( !$self.options.onload && !checked ) {
|
76 |
-
var message = 'The changes you made will be lost if you navigate away from this page.';
|
77 |
-
if ( typeof event === 'undefined' ) {
|
78 |
-
event = window.event;
|
79 |
-
}
|
80 |
-
if ( event ) {
|
81 |
-
event.returnValue = message;
|
82 |
-
}
|
83 |
-
return message;
|
84 |
-
}
|
85 |
-
};
|
86 |
-
|
87 |
-
// Handle Pagination actions
|
88 |
-
$( 'body' ).bind( _prefix + 'admin-preview', function () {
|
89 |
-
new $.PT_CV_Public();
|
90 |
-
} );
|
91 |
-
},
|
92 |
-
/**
|
93 |
-
* Toggle panel when click Show/Hide icon on Heading
|
94 |
-
*
|
95 |
-
* @param {type} $selector
|
96 |
-
* @returns {undefined}
|
97 |
-
*/
|
98 |
-
_toggle_panel: function ( $selector ) {
|
99 |
-
$( 'body' ).on( 'click', $selector, function ( e ) {
|
100 |
-
var $heading = $( this );
|
101 |
-
var $span = $heading.find( 'span.clickable' );
|
102 |
-
var time = 100;
|
103 |
-
|
104 |
-
if ( !$span.hasClass( 'panel-collapsed' ) ) {
|
105 |
-
$heading.next( '.panel-body' ).slideUp( time );
|
106 |
-
$span.addClass( 'panel-collapsed' );
|
107 |
-
$span.find( 'i' ).removeClass( 'glyphicon-minus' ).addClass( 'glyphicon-plus' );
|
108 |
-
} else {
|
109 |
-
$heading.next( '.panel-body' ).slideDown( time );
|
110 |
-
$span.removeClass( 'panel-collapsed' );
|
111 |
-
$span.find( 'i' ).removeClass( 'glyphicon-plus' ).addClass( 'glyphicon-minus' );
|
112 |
-
}
|
113 |
-
} );
|
114 |
-
},
|
115 |
-
/**
|
116 |
-
* Toggle Taxonomy Relation setting on page load & on change
|
117 |
-
*
|
118 |
-
* @returns void
|
119 |
-
*/
|
120 |
-
_toggle_taxonomy_relation: function () {
|
121 |
-
var $self = this;
|
122 |
-
$self._do_toggle_taxonomy_relation();
|
123 |
-
$( '.' + _prefix + 'taxonomy-item' ).change( function () {
|
124 |
-
$self._do_toggle_taxonomy_relation();
|
125 |
-
} );
|
126 |
-
},
|
127 |
-
/**
|
128 |
-
* Toggle Taxonomy Relation setting by number of selected taxonomies
|
129 |
-
*
|
130 |
-
* @returns {undefined}
|
131 |
-
*/
|
132 |
-
_do_toggle_taxonomy_relation: function () {
|
133 |
-
var $taxonomy_relation = $( '.' + _prefix + 'taxonomy-relation' ).parent().parent( '.form-group' );
|
134 |
-
var $wrap_taxonomies = $( '#' + _prefix + 'group-taxonomy' );
|
135 |
-
|
136 |
-
// If there is no taxonomies
|
137 |
-
var is_multi = false;
|
138 |
-
if ( $wrap_taxonomies.find( '.' + _prefix + 'taxonomies .checkbox' ).filter( function () {
|
139 |
-
return !$( this ).hasClass( 'hidden' ) && $( this ).find( 'input:checked' ).length;
|
140 |
-
} ).length > 1 ) {
|
141 |
-
$taxonomy_relation.removeClass( 'hidden' );
|
142 |
-
is_multi = true;
|
143 |
-
} else {
|
144 |
-
$taxonomy_relation.addClass( 'hidden' );
|
145 |
-
}
|
146 |
-
|
147 |
-
$( '.pt-wrap' ).trigger( _prefix + 'multiple-taxonomies', [ is_multi ] );
|
148 |
-
},
|
149 |
-
/**
|
150 |
-
* Get field value, depends on field type & its parent is show/hide
|
151 |
-
*
|
152 |
-
* @param {type} el : string to selector
|
153 |
-
* @returns {undefined}
|
154 |
-
*/
|
155 |
-
_get_field_val: function ( el ) {
|
156 |
-
var $this = $( el );
|
157 |
-
var value = $( el ).val();
|
158 |
-
|
159 |
-
if ( $this.is( ':checkbox' ) || $this.is( ':radio' ) ) {
|
160 |
-
value = $( el + ':checked' ).val();
|
161 |
-
}
|
162 |
-
|
163 |
-
return value;
|
164 |
-
},
|
165 |
-
/**
|
166 |
-
* Do toggle all dependency groups
|
167 |
-
*
|
168 |
-
* @returns {undefined}
|
169 |
-
*/
|
170 |
-
dependence_do_all: function () {
|
171 |
-
var $self = this;
|
172 |
-
var $toggle_data_js = $.parseJSON( $self.options._toggle_data );
|
173 |
-
|
174 |
-
$.each( $toggle_data_js, function ( idx, obj ) {
|
175 |
-
// Obj_sub: an object contains (dependence_id, operator, expect_val)
|
176 |
-
$.each( obj, function ( key, obj_sub ) {
|
177 |
-
// Get name of depended element (which other elements depend on it)
|
178 |
-
var el_name = _prefix + key;
|
179 |
-
|
180 |
-
var el = "[name='" + el_name + "']";
|
181 |
-
|
182 |
-
// Run on page load
|
183 |
-
$self._dependence_group( $self._get_field_val( el ), obj_sub );
|
184 |
-
|
185 |
-
// Run on change
|
186 |
-
$( el ).change( function () {
|
187 |
-
$self._dependence_group( $self._get_field_val( el ), obj_sub );
|
188 |
-
} );
|
189 |
-
} );
|
190 |
-
} );
|
191 |
-
|
192 |
-
$( '.pt-wrap' ).trigger( 'finish-do-dependence' );
|
193 |
-
},
|
194 |
-
/**
|
195 |
-
* Toggle each dependency group
|
196 |
-
* @param {type} this_val : current value of depended element (which other elements depend on it)
|
197 |
-
* @param {type} obj_sub : an object contains (dependence_id, expect_val, operator)
|
198 |
-
* @returns {undefined}
|
199 |
-
*/
|
200 |
-
_dependence_group: function ( this_val, obj_sub ) {
|
201 |
-
var $self = this;
|
202 |
-
$.each( obj_sub, function ( key, data ) {
|
203 |
-
$self._dependence_element( data[0], this_val, data[2], data[1] );
|
204 |
-
} );
|
205 |
-
},
|
206 |
-
/**
|
207 |
-
* Toggle each dependency element
|
208 |
-
*
|
209 |
-
* @param {type} dependence_id : id of group A which depends on an element B
|
210 |
-
* @param {type} this_val : current value of B
|
211 |
-
* @param {type} operator : operator to comparing A's value & B's value : =, >, < ...
|
212 |
-
* @param {type} expect_val : expect value of B to show A group
|
213 |
-
* @returns {undefined}
|
214 |
-
*/
|
215 |
-
_dependence_element: function ( dependence_id, this_val, operator, expect_val ) {
|
216 |
-
var dependence_el = $( "#" + dependence_id );
|
217 |
-
var pass = 0;
|
218 |
-
switch ( operator ) {
|
219 |
-
case "=":
|
220 |
-
{
|
221 |
-
if ( typeof expect_val === 'string' )
|
222 |
-
expect_val = [ expect_val ];
|
223 |
-
pass = ( $.inArray( this_val, expect_val ) >= 0 );
|
224 |
-
}
|
225 |
-
break;
|
226 |
-
case "!=":
|
227 |
-
{
|
228 |
-
if ( typeof expect_val === 'string' )
|
229 |
-
expect_val = [ expect_val ];
|
230 |
-
pass = ( $.inArray( this_val, expect_val ) < 0 );
|
231 |
-
}
|
232 |
-
break;
|
233 |
-
default :
|
234 |
-
if ( typeof expect_val !== 'object' )
|
235 |
-
pass = eval( "this_val " + operator + " expect_val" );
|
236 |
-
break;
|
237 |
-
|
238 |
-
}
|
239 |
-
var action = '';
|
240 |
-
var result = 0;
|
241 |
-
if ( pass ) {
|
242 |
-
dependence_el.removeClass( 'hidden' );
|
243 |
-
|
244 |
-
action = 'remove';
|
245 |
-
result = !dependence_el.hasClass( 'hidden' );
|
246 |
-
} else {
|
247 |
-
dependence_el.addClass( 'hidden' );
|
248 |
-
|
249 |
-
action = 'add';
|
250 |
-
result = dependence_el.hasClass( 'hidden' );
|
251 |
-
}
|
252 |
-
|
253 |
-
// Log if something is wrong
|
254 |
-
if ( !result )
|
255 |
-
console.log( dependence_id, this_val, operator, expect_val, action );
|
256 |
-
},
|
257 |
-
/**
|
258 |
-
* Toggle a group inside Panel group when check/uncheck a checkbox inside checboxes list
|
259 |
-
*
|
260 |
-
* @param {type} selector
|
261 |
-
* @param {type} toggle
|
262 |
-
* @returns {undefined}
|
263 |
-
*/
|
264 |
-
toggle_group: function ( selector, toggle ) {
|
265 |
-
var $self = this;
|
266 |
-
// Run on page load
|
267 |
-
$( selector ).each( function () {
|
268 |
-
$self._toggle_each_group( $( this ), toggle );
|
269 |
-
} );
|
270 |
-
// Run on change
|
271 |
-
$( selector ).each( function () {
|
272 |
-
$( this ).change( function () {
|
273 |
-
var this_ = $( this );
|
274 |
-
setTimeout( function () {
|
275 |
-
$self._toggle_each_group( this_, toggle );
|
276 |
-
}, 200 );
|
277 |
-
} );
|
278 |
-
} );
|
279 |
-
},
|
280 |
-
/**
|
281 |
-
* Toggle group depends on selector value
|
282 |
-
*
|
283 |
-
* @param {type} $this
|
284 |
-
* @param {type} toggle
|
285 |
-
* @returns {undefined}
|
286 |
-
*/
|
287 |
-
_toggle_each_group: function ( $this, toggle ) {
|
288 |
-
var $self = this;
|
289 |
-
if ( $this.is( 'select' ) || ( ( $this.is( ':checkbox' ) || $this.is( ':radio' ) ) && $this.is( ':checked' ) ) ) {
|
290 |
-
// Get id of element A which needs to toggle
|
291 |
-
var toggle_id = '#' + PT_CV_ADMIN._group_prefix + $this.val();
|
292 |
-
|
293 |
-
// Get siblings groups of A
|
294 |
-
var other_groups = $( toggle_id ).parent().children( '.' + _prefix + 'group' ).not( toggle_id );
|
295 |
-
|
296 |
-
if ( $( toggle_id ).hasClass( _prefix + 'only-one' ) ) {
|
297 |
-
// Hide other group in a same Panel group
|
298 |
-
other_groups.addClass( 'hidden' );
|
299 |
-
} else {
|
300 |
-
}
|
301 |
-
|
302 |
-
// Show group
|
303 |
-
$( toggle_id ).removeClass( 'hidden' );
|
304 |
-
|
305 |
-
// Show the content
|
306 |
-
$( toggle_id ).find( '.panel-body' ).show();
|
307 |
-
|
308 |
-
// Scroll to
|
309 |
-
if ( toggle !== false && !$self.options.onload && $( toggle_id ).offset() ) {
|
310 |
-
$( 'html, body' ).animate( {
|
311 |
-
scrollTop: $( toggle_id ).offset().top - 40
|
312 |
-
}, $self.options.scroll_time );
|
313 |
-
}
|
314 |
-
|
315 |
-
// Highlight color
|
316 |
-
var activate_group = _prefix + 'group-activate';
|
317 |
-
$( toggle_id ).addClass( activate_group );
|
318 |
-
|
319 |
-
// Remove highlight color
|
320 |
-
setTimeout( function () {
|
321 |
-
$( toggle_id ).removeClass( activate_group );
|
322 |
-
}, 2000 );
|
323 |
-
|
324 |
-
} else {
|
325 |
-
$( '#' + PT_CV_ADMIN._group_prefix + $this.val() ).addClass( 'hidden' );
|
326 |
-
}
|
327 |
-
|
328 |
-
$( '.pt-wrap' ).trigger( 'finish-toggle-group' );
|
329 |
-
},
|
330 |
-
/**
|
331 |
-
* Custom function for 'Content Type'
|
332 |
-
*
|
333 |
-
* @returns {undefined}
|
334 |
-
*/
|
335 |
-
_content_type: function () {
|
336 |
-
var $self = this;
|
337 |
-
var $wrap_taxonomies = $( '#' + _prefix + 'group-taxonomy' );
|
338 |
-
var $taxonomy_other_settings = $( '.' + _prefix + 'taxonomy-extra' );
|
339 |
-
var $taxonomies = $( '.' + _prefix + 'taxonomy-item' );
|
340 |
-
|
341 |
-
var $no_taxonomy = $( '<div/>', {
|
342 |
-
'id': _prefix + 'no-taxonomy',
|
343 |
-
'class': _prefix + 'text',
|
344 |
-
'text': PT_CV_ADMIN.text.no_taxonomy
|
345 |
-
} ).appendTo( $( '.' + _prefix + 'taxonomies' ) );
|
346 |
-
|
347 |
-
var fn_taxonomy_hide = function ( taxonomies ) {
|
348 |
-
// Hide all taxonomy checkboxes
|
349 |
-
taxonomies.each( function () {
|
350 |
-
$( this ).parents( '.checkbox' ).addClass( 'hidden' );
|
351 |
-
} );
|
352 |
-
|
353 |
-
$no_taxonomy.addClass( 'hidden' );
|
354 |
-
|
355 |
-
// Hide all sections of taxonomies
|
356 |
-
$( '.panel-group.terms' ).find( '.' + _prefix + 'group' ).addClass( 'hidden' );
|
357 |
-
};
|
358 |
-
|
359 |
-
// Run on page load
|
360 |
-
fn_taxonomy_hide( $taxonomies );
|
361 |
-
|
362 |
-
// For content type
|
363 |
-
var content_type = '[name="' + _prefix + 'content-type' + '"]';
|
364 |
-
var fn_content_type = function ( is_change ) {
|
365 |
-
var this_val;
|
366 |
-
if ( $( content_type ).is( 'input:radio' ) ) {
|
367 |
-
this_val = $( content_type + ':checked' ).val();
|
368 |
-
} else {
|
369 |
-
this_val = $( content_type ).val();
|
370 |
-
}
|
371 |
-
|
372 |
-
if ( typeof this_val === 'undefined' ) {
|
373 |
-
return;
|
374 |
-
}
|
375 |
-
|
376 |
-
if ( is_change ) {
|
377 |
-
// Uncheck all checkbox of taxonomies
|
378 |
-
$taxonomies.attr( 'checked', false );
|
379 |
-
|
380 |
-
// Toggle Taxonomy Relation setting
|
381 |
-
$self._do_toggle_taxonomy_relation();
|
382 |
-
}
|
383 |
-
|
384 |
-
// Show taxonomies of selected post type
|
385 |
-
if ( this_val !== '' ) {
|
386 |
-
fn_taxonomy_hide( $taxonomies );
|
387 |
-
|
388 |
-
$taxonomies.filter( function () {
|
389 |
-
var val = $( this ).val();
|
390 |
-
var $taxonomies_of_this = PT_CV_ADMIN.data.post_types_vs_taxonomies[this_val] || '';
|
391 |
-
return $.inArray( val, $taxonomies_of_this ) >= 0;
|
392 |
-
} ).parents( '.checkbox' ).removeClass( 'hidden' );
|
393 |
-
}
|
394 |
-
|
395 |
-
// Show message "there is no taxonomy"
|
396 |
-
if ( $wrap_taxonomies.find( '.' + _prefix + 'taxonomies .checkbox' ).filter( function () {
|
397 |
-
return !$( this ).hasClass( 'hidden' );
|
398 |
-
} ).length === 0 ) {
|
399 |
-
$no_taxonomy.removeClass( 'hidden' );
|
400 |
-
$taxonomy_other_settings.addClass( 'hidden' );
|
401 |
-
}
|
402 |
-
|
403 |
-
// Trigger custom actions
|
404 |
-
$( '.pt-wrap' ).trigger( 'content-type-change', [ this_val ] );
|
405 |
-
};
|
406 |
-
|
407 |
-
// Run on page load
|
408 |
-
fn_content_type();
|
409 |
-
|
410 |
-
// Run on change
|
411 |
-
$( content_type ).change( function () {
|
412 |
-
fn_content_type( 1 );
|
413 |
-
} );
|
414 |
-
},
|
415 |
-
/**
|
416 |
-
* Preview handle
|
417 |
-
*
|
418 |
-
* @returns {undefined}
|
419 |
-
*/
|
420 |
-
preview: function () {
|
421 |
-
var $self = this;
|
422 |
-
var offset_top;
|
423 |
-
|
424 |
-
$( '#' + _prefix + 'show-preview' ).click( function ( e ) {
|
425 |
-
e.stopPropagation();
|
426 |
-
e.preventDefault();
|
427 |
-
|
428 |
-
$( 'body' ).trigger( _prefix + 'admin-preview-start' );
|
429 |
-
|
430 |
-
var $this_btn = $( this );
|
431 |
-
|
432 |
-
// Get Preview box
|
433 |
-
var $preview = $( '#' + _prefix + 'preview-box' );
|
434 |
-
|
435 |
-
// Show/hide Preview box
|
436 |
-
if ( $self.options.can_preview ) {
|
437 |
-
$preview.addClass( 'in' );
|
438 |
-
} else {
|
439 |
-
$preview.removeClass( 'in' );
|
440 |
-
}
|
441 |
-
|
442 |
-
/**
|
443 |
-
* Animation
|
444 |
-
*/
|
445 |
-
// Scroll to preview box if want to show it
|
446 |
-
if ( $self.options.can_preview ) {
|
447 |
-
// Get current offset top to go back later
|
448 |
-
offset_top = $( document ).scrollTop();
|
449 |
-
|
450 |
-
// Scroll to preview box
|
451 |
-
$( 'html, body' ).animate( {
|
452 |
-
scrollTop: $preview.offset().top - 100
|
453 |
-
}, $self.options.scroll_time );
|
454 |
-
|
455 |
-
/// Send request
|
456 |
-
$preview.css( 'opacity', '0.2' );
|
457 |
-
// Show loading icon
|
458 |
-
$preview.next().removeClass( 'hidden' );
|
459 |
-
|
460 |
-
// Get settings data
|
461 |
-
var data = $( '#' + _prefix + 'form-view' ).serialize();
|
462 |
-
// Call handle function
|
463 |
-
$self._preview_request( $preview, data, $this_btn );
|
464 |
-
} else {
|
465 |
-
// Scroll to previous position
|
466 |
-
$( 'html, body' ).animate( {
|
467 |
-
scrollTop: offset_top
|
468 |
-
}, $self.options.scroll_time );
|
469 |
-
|
470 |
-
// Toggle text of this button
|
471 |
-
$this_btn.html( PT_CV_ADMIN.btn.preview.show );
|
472 |
-
|
473 |
-
// Enable preview
|
474 |
-
setTimeout( function () {
|
475 |
-
$self.options.can_preview = 1;
|
476 |
-
}, $self.options.scroll_time );
|
477 |
-
}
|
478 |
-
} );
|
479 |
-
},
|
480 |
-
/**
|
481 |
-
* Send preview Ajax request
|
482 |
-
*
|
483 |
-
* @param {object} preview_box The jqurey object
|
484 |
-
* @param {string} _data
|
485 |
-
* @param {object} $this_btn The Show/Hide preview button
|
486 |
-
* @returns void
|
487 |
-
*/
|
488 |
-
_preview_request: function ( preview_box, _data, $this_btn ) {
|
489 |
-
var $self = this;
|
490 |
-
var data = {
|
491 |
-
action: 'preview_request',
|
492 |
-
data: _data,
|
493 |
-
ajax_nonce: PT_CV_ADMIN._nonce
|
494 |
-
};
|
495 |
-
|
496 |
-
// Sent POST request
|
497 |
-
$.ajax( {
|
498 |
-
type: "POST",
|
499 |
-
url: ajaxurl,
|
500 |
-
data: data
|
501 |
-
} ).done( function ( response ) {
|
502 |
-
var reload = false;
|
503 |
-
if ( response == -1 || response == 0 ) {
|
504 |
-
reload = true;
|
505 |
-
response = "Your session has expired. This page will be reloaded.";
|
506 |
-
}
|
507 |
-
|
508 |
-
preview_box.css( 'opacity', '1' );
|
509 |
-
|
510 |
-
// Hide loading icon
|
511 |
-
preview_box.next().addClass( 'hidden' );
|
512 |
-
|
513 |
-
// Update content of Preview box
|
514 |
-
preview_box.html( response );
|
515 |
-
|
516 |
-
if ( reload ) {
|
517 |
-
location.reload();
|
518 |
-
}
|
519 |
-
|
520 |
-
$self._filter_response( preview_box );
|
521 |
-
|
522 |
-
// Toggle text of this button
|
523 |
-
$this_btn.html( PT_CV_ADMIN.btn.preview.hide );
|
524 |
-
|
525 |
-
// Disable preview
|
526 |
-
$self.options.can_preview = 0;
|
527 |
-
|
528 |
-
// Trigger action, to recall function such as pagination, pinterest render layout...
|
529 |
-
$( 'body' ).trigger( _prefix + 'admin-preview' );
|
530 |
-
} );
|
531 |
-
},
|
532 |
-
_filter_response: function ( preview_box ) {
|
533 |
-
var fn_alert_visible_sc = function () {
|
534 |
-
$( '.' + _prefix + 'content', preview_box ).each( function () {
|
535 |
-
var tclass = _prefix + 'caution';
|
536 |
-
$( '.' + tclass ).remove();
|
537 |
-
|
538 |
-
var content = $( this ).html();
|
539 |
-
var regex = /\[[^\]]+\]/;
|
540 |
-
if ( regex.test( content ) ) {
|
541 |
-
$( '<div />', { html: PT_CV_ADMIN.text.visible_shortcode, class: tclass } ).insertBefore( preview_box );
|
542 |
-
return false;
|
543 |
-
}
|
544 |
-
} );
|
545 |
-
};
|
546 |
-
fn_alert_visible_sc();
|
547 |
-
|
548 |
-
$( 'body' ).trigger( _prefix + 'preview-response', [ preview_box ] );
|
549 |
-
},
|
550 |
-
/**
|
551 |
-
* Toggle 'Thumbnail settings'
|
552 |
-
*
|
553 |
-
* @returns {undefined}
|
554 |
-
*/
|
555 |
-
_thumbnail_settings: function () {
|
556 |
-
|
557 |
-
var
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
var
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
$
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
$( 'body' ).bind( _prefix + 'preview-btn-toggle', function () {
|
637 |
-
_fn();
|
638 |
-
} );
|
639 |
-
},
|
640 |
-
/**
|
641 |
-
* Validate number: prevent negative value
|
642 |
-
* @returns {undefined}
|
643 |
-
*/
|
644 |
-
validate_number: function () {
|
645 |
-
$( 'input[type="number"]' ).on( 'keypress', function ( event ) {
|
646 |
-
var min = $( this ).prop( 'min' );
|
647 |
-
if ( min == 0 && !( event.charCode >= 48 && event.charCode <= 57 ) )
|
648 |
-
event.preventDefault();
|
649 |
-
} );
|
650 |
-
}
|
651 |
-
};
|
652 |
-
|
653 |
}( jQuery ) );
|
1 |
+
/**
|
2 |
+
* Main script file for WP admin
|
3 |
+
*
|
4 |
+
* @package PT_Content_Views_Admin
|
5 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
6 |
+
* @license GPL-2.0+
|
7 |
+
* @link http://www.contentviewspro.com/
|
8 |
+
* @copyright 2014 PT Guy
|
9 |
+
*/
|
10 |
+
|
11 |
+
( function ( $ ) {
|
12 |
+
"use strict";
|
13 |
+
|
14 |
+
$.PT_CV_Admin = $.PT_CV_Admin || { };
|
15 |
+
PT_CV_ADMIN = PT_CV_ADMIN || { };
|
16 |
+
ajaxurl = ajaxurl || { };
|
17 |
+
var _prefix = PT_CV_ADMIN._prefix;
|
18 |
+
|
19 |
+
$.PT_CV_Admin = function ( options ) {
|
20 |
+
this.options = $.extend( {
|
21 |
+
onload: 1,
|
22 |
+
scroll_time: 500,
|
23 |
+
can_preview: 1
|
24 |
+
}, options );
|
25 |
+
|
26 |
+
this.init();
|
27 |
+
};
|
28 |
+
|
29 |
+
$.PT_CV_Admin.prototype = {
|
30 |
+
init: function () {
|
31 |
+
this.custom();
|
32 |
+
|
33 |
+
// Validate number
|
34 |
+
this.validate_number();
|
35 |
+
// Select2
|
36 |
+
$( 'select.' + _prefix + 'select2' ).select2();
|
37 |
+
|
38 |
+
},
|
39 |
+
custom: function () {
|
40 |
+
var $self = this;
|
41 |
+
|
42 |
+
this.preview();
|
43 |
+
this._preview_btn_toggle();
|
44 |
+
this._content_type();
|
45 |
+
this._toggle_taxonomy_relation();
|
46 |
+
this._thumbnail_settings();
|
47 |
+
|
48 |
+
// Toggle panel
|
49 |
+
this._toggle_panel( '.' + _prefix + 'group .panel-heading' );
|
50 |
+
// 'Advance Settings'
|
51 |
+
this.toggle_group( '.' + _prefix + 'advanced-settings-item' );
|
52 |
+
// 'Terms' (in "Taxonomy Settings")
|
53 |
+
this.toggle_group( '.' + _prefix + 'taxonomy-item' );
|
54 |
+
// 'Content type'
|
55 |
+
this.toggle_group( '[name="' + _prefix + 'content-type' + '"]', false );
|
56 |
+
// 'View type settings'
|
57 |
+
this.toggle_group( '[name="' + _prefix + 'view-type' + '"]', false );
|
58 |
+
// Toggle dependencies
|
59 |
+
this.dependence_do_all();
|
60 |
+
|
61 |
+
// Prevent click on links
|
62 |
+
$( '#' + _prefix + 'preview-box' ).on( 'click', 'a', function ( e ) {
|
63 |
+
e.preventDefault();
|
64 |
+
} );
|
65 |
+
$( '.pt-accordion-a' ).click( function ( e ) {
|
66 |
+
e.preventDefault();
|
67 |
+
} );
|
68 |
+
|
69 |
+
// Show alert when leave page without saving View
|
70 |
+
var checked = 0;
|
71 |
+
$( '#' + _prefix + 'form-view input[type="submit"]' + ',' + 'a[href*="action=duplicate"]' ).click( function () {
|
72 |
+
checked = 1;
|
73 |
+
} );
|
74 |
+
window.onbeforeunload = function ( event ) {
|
75 |
+
if ( !$self.options.onload && !checked ) {
|
76 |
+
var message = 'The changes you made will be lost if you navigate away from this page.';
|
77 |
+
if ( typeof event === 'undefined' ) {
|
78 |
+
event = window.event;
|
79 |
+
}
|
80 |
+
if ( event ) {
|
81 |
+
event.returnValue = message;
|
82 |
+
}
|
83 |
+
return message;
|
84 |
+
}
|
85 |
+
};
|
86 |
+
|
87 |
+
// Handle Pagination actions
|
88 |
+
$( 'body' ).bind( _prefix + 'admin-preview', function () {
|
89 |
+
new $.PT_CV_Public();
|
90 |
+
} );
|
91 |
+
},
|
92 |
+
/**
|
93 |
+
* Toggle panel when click Show/Hide icon on Heading
|
94 |
+
*
|
95 |
+
* @param {type} $selector
|
96 |
+
* @returns {undefined}
|
97 |
+
*/
|
98 |
+
_toggle_panel: function ( $selector ) {
|
99 |
+
$( 'body' ).on( 'click', $selector, function ( e ) {
|
100 |
+
var $heading = $( this );
|
101 |
+
var $span = $heading.find( 'span.clickable' );
|
102 |
+
var time = 100;
|
103 |
+
|
104 |
+
if ( !$span.hasClass( 'panel-collapsed' ) ) {
|
105 |
+
$heading.next( '.panel-body' ).slideUp( time );
|
106 |
+
$span.addClass( 'panel-collapsed' );
|
107 |
+
$span.find( 'i' ).removeClass( 'glyphicon-minus' ).addClass( 'glyphicon-plus' );
|
108 |
+
} else {
|
109 |
+
$heading.next( '.panel-body' ).slideDown( time );
|
110 |
+
$span.removeClass( 'panel-collapsed' );
|
111 |
+
$span.find( 'i' ).removeClass( 'glyphicon-plus' ).addClass( 'glyphicon-minus' );
|
112 |
+
}
|
113 |
+
} );
|
114 |
+
},
|
115 |
+
/**
|
116 |
+
* Toggle Taxonomy Relation setting on page load & on change
|
117 |
+
*
|
118 |
+
* @returns void
|
119 |
+
*/
|
120 |
+
_toggle_taxonomy_relation: function () {
|
121 |
+
var $self = this;
|
122 |
+
$self._do_toggle_taxonomy_relation();
|
123 |
+
$( '.' + _prefix + 'taxonomy-item' ).change( function () {
|
124 |
+
$self._do_toggle_taxonomy_relation();
|
125 |
+
} );
|
126 |
+
},
|
127 |
+
/**
|
128 |
+
* Toggle Taxonomy Relation setting by number of selected taxonomies
|
129 |
+
*
|
130 |
+
* @returns {undefined}
|
131 |
+
*/
|
132 |
+
_do_toggle_taxonomy_relation: function () {
|
133 |
+
var $taxonomy_relation = $( '.' + _prefix + 'taxonomy-relation' ).parent().parent( '.form-group' );
|
134 |
+
var $wrap_taxonomies = $( '#' + _prefix + 'group-taxonomy' );
|
135 |
+
|
136 |
+
// If there is no taxonomies
|
137 |
+
var is_multi = false;
|
138 |
+
if ( $wrap_taxonomies.find( '.' + _prefix + 'taxonomies .checkbox' ).filter( function () {
|
139 |
+
return !$( this ).hasClass( 'hidden' ) && $( this ).find( 'input:checked' ).length;
|
140 |
+
} ).length > 1 ) {
|
141 |
+
$taxonomy_relation.removeClass( 'hidden' );
|
142 |
+
is_multi = true;
|
143 |
+
} else {
|
144 |
+
$taxonomy_relation.addClass( 'hidden' );
|
145 |
+
}
|
146 |
+
|
147 |
+
$( '.pt-wrap' ).trigger( _prefix + 'multiple-taxonomies', [ is_multi ] );
|
148 |
+
},
|
149 |
+
/**
|
150 |
+
* Get field value, depends on field type & its parent is show/hide
|
151 |
+
*
|
152 |
+
* @param {type} el : string to selector
|
153 |
+
* @returns {undefined}
|
154 |
+
*/
|
155 |
+
_get_field_val: function ( el ) {
|
156 |
+
var $this = $( el );
|
157 |
+
var value = $( el ).val();
|
158 |
+
|
159 |
+
if ( $this.is( ':checkbox' ) || $this.is( ':radio' ) ) {
|
160 |
+
value = $( el + ':checked' ).val();
|
161 |
+
}
|
162 |
+
|
163 |
+
return value;
|
164 |
+
},
|
165 |
+
/**
|
166 |
+
* Do toggle all dependency groups
|
167 |
+
*
|
168 |
+
* @returns {undefined}
|
169 |
+
*/
|
170 |
+
dependence_do_all: function () {
|
171 |
+
var $self = this;
|
172 |
+
var $toggle_data_js = $.parseJSON( $self.options._toggle_data );
|
173 |
+
|
174 |
+
$.each( $toggle_data_js, function ( idx, obj ) {
|
175 |
+
// Obj_sub: an object contains (dependence_id, operator, expect_val)
|
176 |
+
$.each( obj, function ( key, obj_sub ) {
|
177 |
+
// Get name of depended element (which other elements depend on it)
|
178 |
+
var el_name = _prefix + key;
|
179 |
+
|
180 |
+
var el = "[name='" + el_name + "']";
|
181 |
+
|
182 |
+
// Run on page load
|
183 |
+
$self._dependence_group( $self._get_field_val( el ), obj_sub );
|
184 |
+
|
185 |
+
// Run on change
|
186 |
+
$( el ).change( function () {
|
187 |
+
$self._dependence_group( $self._get_field_val( el ), obj_sub );
|
188 |
+
} );
|
189 |
+
} );
|
190 |
+
} );
|
191 |
+
|
192 |
+
$( '.pt-wrap' ).trigger( 'finish-do-dependence' );
|
193 |
+
},
|
194 |
+
/**
|
195 |
+
* Toggle each dependency group
|
196 |
+
* @param {type} this_val : current value of depended element (which other elements depend on it)
|
197 |
+
* @param {type} obj_sub : an object contains (dependence_id, expect_val, operator)
|
198 |
+
* @returns {undefined}
|
199 |
+
*/
|
200 |
+
_dependence_group: function ( this_val, obj_sub ) {
|
201 |
+
var $self = this;
|
202 |
+
$.each( obj_sub, function ( key, data ) {
|
203 |
+
$self._dependence_element( data[0], this_val, data[2], data[1] );
|
204 |
+
} );
|
205 |
+
},
|
206 |
+
/**
|
207 |
+
* Toggle each dependency element
|
208 |
+
*
|
209 |
+
* @param {type} dependence_id : id of group A which depends on an element B
|
210 |
+
* @param {type} this_val : current value of B
|
211 |
+
* @param {type} operator : operator to comparing A's value & B's value : =, >, < ...
|
212 |
+
* @param {type} expect_val : expect value of B to show A group
|
213 |
+
* @returns {undefined}
|
214 |
+
*/
|
215 |
+
_dependence_element: function ( dependence_id, this_val, operator, expect_val ) {
|
216 |
+
var dependence_el = $( "#" + dependence_id );
|
217 |
+
var pass = 0;
|
218 |
+
switch ( operator ) {
|
219 |
+
case "=":
|
220 |
+
{
|
221 |
+
if ( typeof expect_val === 'string' )
|
222 |
+
expect_val = [ expect_val ];
|
223 |
+
pass = ( $.inArray( this_val, expect_val ) >= 0 );
|
224 |
+
}
|
225 |
+
break;
|
226 |
+
case "!=":
|
227 |
+
{
|
228 |
+
if ( typeof expect_val === 'string' )
|
229 |
+
expect_val = [ expect_val ];
|
230 |
+
pass = ( $.inArray( this_val, expect_val ) < 0 );
|
231 |
+
}
|
232 |
+
break;
|
233 |
+
default :
|
234 |
+
if ( typeof expect_val !== 'object' )
|
235 |
+
pass = eval( "this_val " + operator + " expect_val" );
|
236 |
+
break;
|
237 |
+
|
238 |
+
}
|
239 |
+
var action = '';
|
240 |
+
var result = 0;
|
241 |
+
if ( pass ) {
|
242 |
+
dependence_el.removeClass( 'hidden' );
|
243 |
+
|
244 |
+
action = 'remove';
|
245 |
+
result = !dependence_el.hasClass( 'hidden' );
|
246 |
+
} else {
|
247 |
+
dependence_el.addClass( 'hidden' );
|
248 |
+
|
249 |
+
action = 'add';
|
250 |
+
result = dependence_el.hasClass( 'hidden' );
|
251 |
+
}
|
252 |
+
|
253 |
+
// Log if something is wrong
|
254 |
+
if ( !result )
|
255 |
+
console.log( dependence_id, this_val, operator, expect_val, action );
|
256 |
+
},
|
257 |
+
/**
|
258 |
+
* Toggle a group inside Panel group when check/uncheck a checkbox inside checboxes list
|
259 |
+
*
|
260 |
+
* @param {type} selector
|
261 |
+
* @param {type} toggle
|
262 |
+
* @returns {undefined}
|
263 |
+
*/
|
264 |
+
toggle_group: function ( selector, toggle ) {
|
265 |
+
var $self = this;
|
266 |
+
// Run on page load
|
267 |
+
$( selector ).each( function () {
|
268 |
+
$self._toggle_each_group( $( this ), toggle );
|
269 |
+
} );
|
270 |
+
// Run on change
|
271 |
+
$( selector ).each( function () {
|
272 |
+
$( this ).change( function () {
|
273 |
+
var this_ = $( this );
|
274 |
+
setTimeout( function () {
|
275 |
+
$self._toggle_each_group( this_, toggle );
|
276 |
+
}, 200 );
|
277 |
+
} );
|
278 |
+
} );
|
279 |
+
},
|
280 |
+
/**
|
281 |
+
* Toggle group depends on selector value
|
282 |
+
*
|
283 |
+
* @param {type} $this
|
284 |
+
* @param {type} toggle
|
285 |
+
* @returns {undefined}
|
286 |
+
*/
|
287 |
+
_toggle_each_group: function ( $this, toggle ) {
|
288 |
+
var $self = this;
|
289 |
+
if ( $this.is( 'select' ) || ( ( $this.is( ':checkbox' ) || $this.is( ':radio' ) ) && $this.is( ':checked' ) ) ) {
|
290 |
+
// Get id of element A which needs to toggle
|
291 |
+
var toggle_id = '#' + PT_CV_ADMIN._group_prefix + $this.val();
|
292 |
+
|
293 |
+
// Get siblings groups of A
|
294 |
+
var other_groups = $( toggle_id ).parent().children( '.' + _prefix + 'group' ).not( toggle_id );
|
295 |
+
|
296 |
+
if ( $( toggle_id ).hasClass( _prefix + 'only-one' ) ) {
|
297 |
+
// Hide other group in a same Panel group
|
298 |
+
other_groups.addClass( 'hidden' );
|
299 |
+
} else {
|
300 |
+
}
|
301 |
+
|
302 |
+
// Show group
|
303 |
+
$( toggle_id ).removeClass( 'hidden' );
|
304 |
+
|
305 |
+
// Show the content
|
306 |
+
$( toggle_id ).find( '.panel-body' ).show();
|
307 |
+
|
308 |
+
// Scroll to
|
309 |
+
if ( toggle !== false && !$self.options.onload && $( toggle_id ).offset() ) {
|
310 |
+
$( 'html, body' ).animate( {
|
311 |
+
scrollTop: $( toggle_id ).offset().top - 40
|
312 |
+
}, $self.options.scroll_time );
|
313 |
+
}
|
314 |
+
|
315 |
+
// Highlight color
|
316 |
+
var activate_group = _prefix + 'group-activate';
|
317 |
+
$( toggle_id ).addClass( activate_group );
|
318 |
+
|
319 |
+
// Remove highlight color
|
320 |
+
setTimeout( function () {
|
321 |
+
$( toggle_id ).removeClass( activate_group );
|
322 |
+
}, 2000 );
|
323 |
+
|
324 |
+
} else {
|
325 |
+
$( '#' + PT_CV_ADMIN._group_prefix + $this.val() ).addClass( 'hidden' );
|
326 |
+
}
|
327 |
+
|
328 |
+
$( '.pt-wrap' ).trigger( 'finish-toggle-group' );
|
329 |
+
},
|
330 |
+
/**
|
331 |
+
* Custom function for 'Content Type'
|
332 |
+
*
|
333 |
+
* @returns {undefined}
|
334 |
+
*/
|
335 |
+
_content_type: function () {
|
336 |
+
var $self = this;
|
337 |
+
var $wrap_taxonomies = $( '#' + _prefix + 'group-taxonomy' );
|
338 |
+
var $taxonomy_other_settings = $( '.' + _prefix + 'taxonomy-extra' );
|
339 |
+
var $taxonomies = $( '.' + _prefix + 'taxonomy-item' );
|
340 |
+
|
341 |
+
var $no_taxonomy = $( '<div/>', {
|
342 |
+
'id': _prefix + 'no-taxonomy',
|
343 |
+
'class': _prefix + 'text',
|
344 |
+
'text': PT_CV_ADMIN.text.no_taxonomy
|
345 |
+
} ).appendTo( $( '.' + _prefix + 'taxonomies' ) );
|
346 |
+
|
347 |
+
var fn_taxonomy_hide = function ( taxonomies ) {
|
348 |
+
// Hide all taxonomy checkboxes
|
349 |
+
taxonomies.each( function () {
|
350 |
+
$( this ).parents( '.checkbox' ).addClass( 'hidden' );
|
351 |
+
} );
|
352 |
+
|
353 |
+
$no_taxonomy.addClass( 'hidden' );
|
354 |
+
|
355 |
+
// Hide all sections of taxonomies
|
356 |
+
$( '.panel-group.terms' ).find( '.' + _prefix + 'group' ).addClass( 'hidden' );
|
357 |
+
};
|
358 |
+
|
359 |
+
// Run on page load
|
360 |
+
fn_taxonomy_hide( $taxonomies );
|
361 |
+
|
362 |
+
// For content type
|
363 |
+
var content_type = '[name="' + _prefix + 'content-type' + '"]';
|
364 |
+
var fn_content_type = function ( is_change ) {
|
365 |
+
var this_val;
|
366 |
+
if ( $( content_type ).is( 'input:radio' ) ) {
|
367 |
+
this_val = $( content_type + ':checked' ).val();
|
368 |
+
} else {
|
369 |
+
this_val = $( content_type ).val();
|
370 |
+
}
|
371 |
+
|
372 |
+
if ( typeof this_val === 'undefined' ) {
|
373 |
+
return;
|
374 |
+
}
|
375 |
+
|
376 |
+
if ( is_change ) {
|
377 |
+
// Uncheck all checkbox of taxonomies
|
378 |
+
$taxonomies.attr( 'checked', false );
|
379 |
+
|
380 |
+
// Toggle Taxonomy Relation setting
|
381 |
+
$self._do_toggle_taxonomy_relation();
|
382 |
+
}
|
383 |
+
|
384 |
+
// Show taxonomies of selected post type
|
385 |
+
if ( this_val !== '' ) {
|
386 |
+
fn_taxonomy_hide( $taxonomies );
|
387 |
+
|
388 |
+
$taxonomies.filter( function () {
|
389 |
+
var val = $( this ).val();
|
390 |
+
var $taxonomies_of_this = PT_CV_ADMIN.data.post_types_vs_taxonomies[this_val] || '';
|
391 |
+
return $.inArray( val, $taxonomies_of_this ) >= 0;
|
392 |
+
} ).parents( '.checkbox' ).removeClass( 'hidden' );
|
393 |
+
}
|
394 |
+
|
395 |
+
// Show message "there is no taxonomy"
|
396 |
+
if ( $wrap_taxonomies.find( '.' + _prefix + 'taxonomies .checkbox' ).filter( function () {
|
397 |
+
return !$( this ).hasClass( 'hidden' );
|
398 |
+
} ).length === 0 ) {
|
399 |
+
$no_taxonomy.removeClass( 'hidden' );
|
400 |
+
$taxonomy_other_settings.addClass( 'hidden' );
|
401 |
+
}
|
402 |
+
|
403 |
+
// Trigger custom actions
|
404 |
+
$( '.pt-wrap' ).trigger( 'content-type-change', [ this_val ] );
|
405 |
+
};
|
406 |
+
|
407 |
+
// Run on page load
|
408 |
+
fn_content_type();
|
409 |
+
|
410 |
+
// Run on change
|
411 |
+
$( content_type ).change( function () {
|
412 |
+
fn_content_type( 1 );
|
413 |
+
} );
|
414 |
+
},
|
415 |
+
/**
|
416 |
+
* Preview handle
|
417 |
+
*
|
418 |
+
* @returns {undefined}
|
419 |
+
*/
|
420 |
+
preview: function () {
|
421 |
+
var $self = this;
|
422 |
+
var offset_top;
|
423 |
+
|
424 |
+
$( '#' + _prefix + 'show-preview' ).click( function ( e ) {
|
425 |
+
e.stopPropagation();
|
426 |
+
e.preventDefault();
|
427 |
+
|
428 |
+
$( 'body' ).trigger( _prefix + 'admin-preview-start' );
|
429 |
+
|
430 |
+
var $this_btn = $( this );
|
431 |
+
|
432 |
+
// Get Preview box
|
433 |
+
var $preview = $( '#' + _prefix + 'preview-box' );
|
434 |
+
|
435 |
+
// Show/hide Preview box
|
436 |
+
if ( $self.options.can_preview ) {
|
437 |
+
$preview.addClass( 'in' );
|
438 |
+
} else {
|
439 |
+
$preview.removeClass( 'in' );
|
440 |
+
}
|
441 |
+
|
442 |
+
/**
|
443 |
+
* Animation
|
444 |
+
*/
|
445 |
+
// Scroll to preview box if want to show it
|
446 |
+
if ( $self.options.can_preview ) {
|
447 |
+
// Get current offset top to go back later
|
448 |
+
offset_top = $( document ).scrollTop();
|
449 |
+
|
450 |
+
// Scroll to preview box
|
451 |
+
$( 'html, body' ).animate( {
|
452 |
+
scrollTop: $preview.offset().top - 100
|
453 |
+
}, $self.options.scroll_time );
|
454 |
+
|
455 |
+
/// Send request
|
456 |
+
$preview.css( 'opacity', '0.2' );
|
457 |
+
// Show loading icon
|
458 |
+
$preview.next().removeClass( 'hidden' );
|
459 |
+
|
460 |
+
// Get settings data
|
461 |
+
var data = $( '#' + _prefix + 'form-view' ).serialize();
|
462 |
+
// Call handle function
|
463 |
+
$self._preview_request( $preview, data, $this_btn );
|
464 |
+
} else {
|
465 |
+
// Scroll to previous position
|
466 |
+
$( 'html, body' ).animate( {
|
467 |
+
scrollTop: offset_top
|
468 |
+
}, $self.options.scroll_time );
|
469 |
+
|
470 |
+
// Toggle text of this button
|
471 |
+
$this_btn.html( PT_CV_ADMIN.btn.preview.show );
|
472 |
+
|
473 |
+
// Enable preview
|
474 |
+
setTimeout( function () {
|
475 |
+
$self.options.can_preview = 1;
|
476 |
+
}, $self.options.scroll_time );
|
477 |
+
}
|
478 |
+
} );
|
479 |
+
},
|
480 |
+
/**
|
481 |
+
* Send preview Ajax request
|
482 |
+
*
|
483 |
+
* @param {object} preview_box The jqurey object
|
484 |
+
* @param {string} _data
|
485 |
+
* @param {object} $this_btn The Show/Hide preview button
|
486 |
+
* @returns void
|
487 |
+
*/
|
488 |
+
_preview_request: function ( preview_box, _data, $this_btn ) {
|
489 |
+
var $self = this;
|
490 |
+
var data = {
|
491 |
+
action: 'preview_request',
|
492 |
+
data: _data,
|
493 |
+
ajax_nonce: PT_CV_ADMIN._nonce
|
494 |
+
};
|
495 |
+
|
496 |
+
// Sent POST request
|
497 |
+
$.ajax( {
|
498 |
+
type: "POST",
|
499 |
+
url: ajaxurl,
|
500 |
+
data: data
|
501 |
+
} ).done( function ( response ) {
|
502 |
+
var reload = false;
|
503 |
+
if ( response == -1 || response == 0 ) {
|
504 |
+
reload = true;
|
505 |
+
response = "Your session has expired. This page will be reloaded.";
|
506 |
+
}
|
507 |
+
|
508 |
+
preview_box.css( 'opacity', '1' );
|
509 |
+
|
510 |
+
// Hide loading icon
|
511 |
+
preview_box.next().addClass( 'hidden' );
|
512 |
+
|
513 |
+
// Update content of Preview box
|
514 |
+
preview_box.html( response );
|
515 |
+
|
516 |
+
if ( reload ) {
|
517 |
+
location.reload();
|
518 |
+
}
|
519 |
+
|
520 |
+
$self._filter_response( preview_box );
|
521 |
+
|
522 |
+
// Toggle text of this button
|
523 |
+
$this_btn.html( PT_CV_ADMIN.btn.preview.hide );
|
524 |
+
|
525 |
+
// Disable preview
|
526 |
+
$self.options.can_preview = 0;
|
527 |
+
|
528 |
+
// Trigger action, to recall function such as pagination, pinterest render layout...
|
529 |
+
$( 'body' ).trigger( _prefix + 'admin-preview' );
|
530 |
+
} );
|
531 |
+
},
|
532 |
+
_filter_response: function ( preview_box ) {
|
533 |
+
var fn_alert_visible_sc = function () {
|
534 |
+
$( '.' + _prefix + 'content', preview_box ).each( function () {
|
535 |
+
var tclass = _prefix + 'caution';
|
536 |
+
$( '.' + tclass ).remove();
|
537 |
+
|
538 |
+
var content = $( this ).html();
|
539 |
+
var regex = /\[[^\]]+\]/;
|
540 |
+
if ( regex.test( content ) ) {
|
541 |
+
$( '<div />', { html: PT_CV_ADMIN.text.visible_shortcode, class: tclass } ).insertBefore( preview_box );
|
542 |
+
return false;
|
543 |
+
}
|
544 |
+
} );
|
545 |
+
};
|
546 |
+
fn_alert_visible_sc();
|
547 |
+
|
548 |
+
$( 'body' ).trigger( _prefix + 'preview-response', [ preview_box ] );
|
549 |
+
},
|
550 |
+
/**
|
551 |
+
* Toggle 'Thumbnail settings'
|
552 |
+
*
|
553 |
+
* @returns {undefined}
|
554 |
+
*/
|
555 |
+
_thumbnail_settings: function () {
|
556 |
+
|
557 |
+
var layout_format = '[name="' + _prefix + 'layout-format' + '"]';
|
558 |
+
|
559 |
+
/**
|
560 |
+
* Toggle 'Layout format' when change 'View type'
|
561 |
+
*
|
562 |
+
* @param {type} this_val
|
563 |
+
* @param {type} layout_format
|
564 |
+
* @returns {undefined}
|
565 |
+
*/
|
566 |
+
var view_type = '[name="' + _prefix + 'view-type' + '"]';
|
567 |
+
var fn_layout_format = function ( layout_format ) {
|
568 |
+
var this_val;
|
569 |
+
if ( $( view_type ).is( 'input:radio' ) ) {
|
570 |
+
this_val = $( view_type + ':checked' ).val();
|
571 |
+
} else {
|
572 |
+
this_val = $( view_type ).val();
|
573 |
+
}
|
574 |
+
|
575 |
+
var expect_val = [ 'scrollable' ];
|
576 |
+
|
577 |
+
// Add more layouts
|
578 |
+
$( '.pt-wrap' ).trigger( 'toggle-layout-format', [ expect_val ] );
|
579 |
+
|
580 |
+
if ( $.inArray( this_val, expect_val ) >= 0 ) {
|
581 |
+
$( layout_format + '[value="1-col"]' ).trigger( 'click' );
|
582 |
+
$( layout_format + '[value="2-col"]' ).attr( 'disabled', true );
|
583 |
+
} else {
|
584 |
+
$( layout_format + '[value="2-col"]' ).attr( 'disabled', false );
|
585 |
+
}
|
586 |
+
};
|
587 |
+
|
588 |
+
// Run on page load
|
589 |
+
fn_layout_format( layout_format );
|
590 |
+
|
591 |
+
// Run on change
|
592 |
+
$( view_type ).change( function () {
|
593 |
+
fn_layout_format( layout_format );
|
594 |
+
} );
|
595 |
+
},
|
596 |
+
/**
|
597 |
+
* Toggle text of Preview button
|
598 |
+
* @returns {undefined}
|
599 |
+
*/
|
600 |
+
_preview_btn_toggle: function () {
|
601 |
+
var $self = this;
|
602 |
+
|
603 |
+
var _fn = function ( is_trigger ) {
|
604 |
+
if ( !is_trigger ) {
|
605 |
+
$self.options.onload = 0;
|
606 |
+
}
|
607 |
+
|
608 |
+
// Toggle text of this button
|
609 |
+
$( '#' + _prefix + 'show-preview' ).html( PT_CV_ADMIN.btn.preview.update );
|
610 |
+
|
611 |
+
// Enable preview
|
612 |
+
$self.options.can_preview = 1;
|
613 |
+
};
|
614 |
+
// Bind on change input after page load
|
615 |
+
$( '.pt-wrap .tab-content' ).on( 'change', 'input, select, textarea', function ( evt, is_trigger ) {
|
616 |
+
_fn( is_trigger );
|
617 |
+
} );
|
618 |
+
|
619 |
+
$( 'body' ).bind( _prefix + 'preview-btn-toggle', function () {
|
620 |
+
_fn();
|
621 |
+
} );
|
622 |
+
},
|
623 |
+
/**
|
624 |
+
* Validate number: prevent negative value
|
625 |
+
* @returns {undefined}
|
626 |
+
*/
|
627 |
+
validate_number: function () {
|
628 |
+
$( 'input[type="number"]' ).on( 'keypress', function ( event ) {
|
629 |
+
var min = $( this ).prop( 'min' );
|
630 |
+
if ( min == 0 && !( event.charCode >= 48 && event.charCode <= 57 ) )
|
631 |
+
event.preventDefault();
|
632 |
+
} );
|
633 |
+
}
|
634 |
+
};
|
635 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
636 |
}( jQuery ) );
|
admin/content-views-admin.php
CHANGED
@@ -354,7 +354,7 @@ class PT_Content_Views_Admin {
|
|
354 |
// Get View id
|
355 |
$view_id = get_post_meta( $post_id, PT_CV_META_ID, true );
|
356 |
|
357 |
-
printf( '<input style="width: 200px; background: #ADFFAD;" type="text" value="[pt_view id="%s"]" onclick="this.select()" readonly="">', $view_id );
|
358 |
}
|
359 |
}
|
360 |
|
354 |
// Get View id
|
355 |
$view_id = get_post_meta( $post_id, PT_CV_META_ID, true );
|
356 |
|
357 |
+
printf( '<input style="width: 200px; background: #ADFFAD;" type="text" value="[pt_view id="%s"]" onclick="this.select()" readonly="">', cv_sanitize_vid( $view_id ) );
|
358 |
}
|
359 |
}
|
360 |
|
admin/views/view.php
CHANGED
@@ -1,709 +1,721 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Add / Edit Content Views
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views_Admin
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
// Check if using Wordpress version 3.7 or higher
|
16 |
-
$version_gt_37 = PT_CV_Functions::wp_version_compare( '3.7' );
|
17 |
-
|
18 |
-
$settings = array();
|
19 |
-
$id = 0;
|
20 |
-
$post_id = apply_filters( PT_CV_PREFIX_ . 'view_post_id', 0 );
|
21 |
-
|
22 |
-
// Check if this is edit View page
|
23 |
-
if ( !empty( $_GET[ 'id' ] ) ) {
|
24 |
-
$id = cv_sanitize_vid( $_GET[ 'id' ] );
|
25 |
-
|
26 |
-
if ( $id ) {
|
27 |
-
global $pt_cv_admin_settings;
|
28 |
-
$pt_cv_admin_settings = $settings = PT_CV_Functions::view_get_settings( $id, $post_id );
|
29 |
-
}
|
30 |
-
}
|
31 |
-
|
32 |
-
// Submit handle
|
33 |
-
PT_CV_Functions::view_submit();
|
34 |
-
?>
|
35 |
-
|
36 |
-
<div class="wrap form-horizontal pt-wrap">
|
37 |
-
<?php do_action( PT_CV_PREFIX_ . 'admin_view_header' ); ?>
|
38 |
-
|
39 |
-
<h2><?php echo esc_html( $id ? __( 'Edit View', 'content-views-query-and-display-post-page' ) : get_admin_page_title() ); ?></h2>
|
40 |
-
|
41 |
-
<?php
|
42 |
-
if ( $id ) {
|
43 |
-
?>
|
44 |
-
<div>
|
45 |
-
<div class="view-code">For page content, text widget... <input class="form-control" style="width: 190px;background-color: #ADFFAD;margin-right: 50px;" type="text" value="[pt_view id="<?php echo $id ?>"]" onclick="this.select()" readonly=""></div>
|
46 |
-
<div class="view-code">For theme file <input class="form-control" style="width: 370px;" type="text" value='<?php echo do_shortcode("[pt_view id=<?php echo $id ?>]"); ?>' onclick="this.select()" readonly=""></div>
|
47 |
-
<?php echo apply_filters( PT_CV_PREFIX_ . 'view_actions', '<a class="btn btn-info pull-right" target="_blank" href="https://www.contentviewspro.com/pricing/?utm_source=client&utm_medium=view_header&utm_campaign=gopro">get Pro version</a>', $id ) ?>
|
48 |
-
</div>
|
49 |
-
<div class="clear"></div>
|
50 |
-
<?php
|
51 |
-
}
|
52 |
-
?>
|
53 |
-
|
54 |
-
<div class="preview-wrapper">
|
55 |
-
<?php
|
56 |
-
// Preview
|
57 |
-
$options = array(
|
58 |
-
array(
|
59 |
-
'label' => array(
|
60 |
-
'text' => __( 'Preview' ),
|
61 |
-
),
|
62 |
-
'params' => array(
|
63 |
-
array(
|
64 |
-
'type' => 'html',
|
65 |
-
'name' => 'preview',
|
66 |
-
'content' => PT_CV_Html::html_preview_box(),
|
67 |
-
'desc' => sprintf( __( 'To see live output, please click %s button', 'content-views-query-and-display-post-page' ), sprintf( '<code>%s</code>', __( 'Show Preview', 'content-views-query-and-display-post-page' ) ) ),
|
68 |
-
),
|
69 |
-
),
|
70 |
-
),
|
71 |
-
);
|
72 |
-
echo PT_Options_Framework::do_settings( $options, $settings );
|
73 |
-
?>
|
74 |
-
</div>
|
75 |
-
|
76 |
-
<!-- Show Preview -->
|
77 |
-
<a class="btn btn-success" id="<?php echo esc_attr( PT_CV_PREFIX ); ?>show-preview"><?php _e( 'Show Preview', 'content-views-query-and-display-post-page' ); ?></a>
|
78 |
-
|
79 |
-
<br>
|
80 |
-
|
81 |
-
<!-- Settings form -->
|
82 |
-
<form action="" method="POST" id="<?php echo esc_attr( PT_CV_PREFIX . 'form-view' ); ?>">
|
83 |
-
|
84 |
-
<?php
|
85 |
-
// Add nonce field
|
86 |
-
wp_nonce_field( PT_CV_PREFIX_ . 'view_submit', PT_CV_PREFIX_ . 'form_nonce' );
|
87 |
-
|
88 |
-
$view_object = $post_id ? get_post( $post_id ) : null;
|
89 |
-
?>
|
90 |
-
<!-- add hidden field -->
|
91 |
-
<input type="hidden" name="<?php echo esc_attr( PT_CV_PREFIX . 'post-id' ); ?>" value="<?php echo esc_attr( $post_id ); ?>" />
|
92 |
-
<input type="hidden" name="<?php echo esc_attr( PT_CV_PREFIX . 'view-id' ); ?>" value="<?php echo esc_attr( $id ); ?>" />
|
93 |
-
<input type="hidden" name="<?php echo esc_attr( PT_CV_PREFIX . 'version' ); ?>" value="<?php echo esc_attr( apply_filters( PT_CV_PREFIX_ . 'view_version', 'free-' . PT_CV_VERSION ) ); ?>" />
|
94 |
-
|
95 |
-
<?php
|
96 |
-
// View title
|
97 |
-
$options = array(
|
98 |
-
array(
|
99 |
-
'label' => array(
|
100 |
-
'text' => __( 'Title' ),
|
101 |
-
),
|
102 |
-
'params' => array(
|
103 |
-
array(
|
104 |
-
'type' => 'text',
|
105 |
-
'name' => 'view-title',
|
106 |
-
'std' => isset( $view_object->post_title ) ? $view_object->post_title : '',
|
107 |
-
'desc' => __( 'Enter a name to identify your views easily', 'content-views-query-and-display-post-page' ),
|
108 |
-
),
|
109 |
-
),
|
110 |
-
),
|
111 |
-
);
|
112 |
-
echo PT_Options_Framework::do_settings( $options, $settings );
|
113 |
-
?>
|
114 |
-
<br>
|
115 |
-
|
116 |
-
<!-- Save -->
|
117 |
-
<div class="btn-cvp-action">
|
118 |
-
<input type="submit" class="btn btn-primary pull-right <?php echo esc_attr( PT_CV_PREFIX ); ?>save-view" value="<?php _e( 'Save' ); ?>">
|
119 |
-
<?php do_action( PT_CV_PREFIX_ . 'admin_more_buttons' ); ?>
|
120 |
-
</div>
|
121 |
-
|
122 |
-
<!-- Nav tabs -->
|
123 |
-
<ul class="nav nav-tabs">
|
124 |
-
<li class="active">
|
125 |
-
<a href="#<?php echo esc_attr( PT_CV_PREFIX ); ?>filter-settings" data-toggle="tab"><span class="glyphicon glyphicon-search"></span><?php _e( 'Filter Settings', 'content-views-query-and-display-post-page' ); ?>
|
126 |
-
</a>
|
127 |
-
</li>
|
128 |
-
<li>
|
129 |
-
<a href="#<?php echo esc_attr( PT_CV_PREFIX ); ?>display-settings" data-toggle="tab"><span class="glyphicon glyphicon-th-large"></span><?php _e( 'Display Settings', 'content-views-query-and-display-post-page' ); ?>
|
130 |
-
</a>
|
131 |
-
</li>
|
132 |
-
<?php do_action( PT_CV_PREFIX_ . 'setting_tabs_header', $settings ); ?>
|
133 |
-
</ul>
|
134 |
-
|
135 |
-
<!-- Tab panes -->
|
136 |
-
<div class="tab-content">
|
137 |
-
<!-- Filter Settings -->
|
138 |
-
<div class="tab-pane active" id="<?php echo esc_attr( PT_CV_PREFIX ); ?>filter-settings">
|
139 |
-
<?php
|
140 |
-
$options = array(
|
141 |
-
// Content type
|
142 |
-
array(
|
143 |
-
'label' => array(
|
144 |
-
'text' => __( 'Content type', 'content-views-query-and-display-post-page' ),
|
145 |
-
),
|
146 |
-
'params' => array(
|
147 |
-
apply_filters( PT_CV_PREFIX_ . 'contenttype_setting', array(
|
148 |
-
'type' => 'radio',
|
149 |
-
'name' => 'content-type',
|
150 |
-
'options' => PT_CV_Values::post_types(),
|
151 |
-
'std' => 'post',
|
152 |
-
) ),
|
153 |
-
),
|
154 |
-
),
|
155 |
-
// Upgrade to Pro: Custom post type
|
156 |
-
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Filter custom post type (product, event...)', 'content-views-query-and-display-post-page' ) ) : '',
|
157 |
-
apply_filters( PT_CV_PREFIX_ . 'custom_filters', array() ),
|
158 |
-
// Common Filters
|
159 |
-
array(
|
160 |
-
'label' => array(
|
161 |
-
'text' => __( 'Common', 'content-views-query-and-display-post-page' ),
|
162 |
-
),
|
163 |
-
'extra_setting' => array(
|
164 |
-
'params' => array(
|
165 |
-
'wrap-class' => PT_CV_Html::html_group_class(),
|
166 |
-
),
|
167 |
-
),
|
168 |
-
'params' => array(
|
169 |
-
array(
|
170 |
-
'type' => 'group',
|
171 |
-
'params' => array(
|
172 |
-
apply_filters( PT_CV_PREFIX_ . 'sticky_posts_setting', array() ),
|
173 |
-
// Includes
|
174 |
-
array(
|
175 |
-
'label' => array(
|
176 |
-
'text' => __( 'Include only', 'content-views-query-and-display-post-page' ),
|
177 |
-
),
|
178 |
-
'params' => array(
|
179 |
-
array(
|
180 |
-
'type' => 'text',
|
181 |
-
'name' => 'post__in',
|
182 |
-
'std' => '',
|
183 |
-
'desc' => apply_filters( PT_CV_PREFIX_ . 'setting_post_in', __( 'List of post IDs to show (comma-separated values, for example: 1,2,3)', 'content-views-query-and-display-post-page' ) ),
|
184 |
-
),
|
185 |
-
),
|
186 |
-
),
|
187 |
-
apply_filters( PT_CV_PREFIX_ . 'include_extra_settings', array() ),
|
188 |
-
// Excludes
|
189 |
-
array(
|
190 |
-
'label' => array(
|
191 |
-
'text' => __( 'Exclude', 'content-views-query-and-display-post-page' ),
|
192 |
-
),
|
193 |
-
'params' => array(
|
194 |
-
array(
|
195 |
-
'type' => 'text',
|
196 |
-
'name' => 'post__not_in',
|
197 |
-
'std' => '',
|
198 |
-
'desc' => apply_filters( PT_CV_PREFIX_ . 'setting_post_not_in', __( 'List of post IDs to exclude (comma-separated values, for example: 1,2,3)', 'content-views-query-and-display-post-page' ) ),
|
199 |
-
),
|
200 |
-
),
|
201 |
-
'dependence' => array( 'post__in', '' ),
|
202 |
-
),
|
203 |
-
apply_filters( PT_CV_PREFIX_ . 'exclude_extra_settings', array() ),
|
204 |
-
// Parent page
|
205 |
-
array(
|
206 |
-
'label' => array(
|
207 |
-
'text' => __( 'Parent page', 'content-views-query-and-display-post-page' ),
|
208 |
-
),
|
209 |
-
'params' => array(
|
210 |
-
array(
|
211 |
-
'type' => 'number',
|
212 |
-
'name' => 'post_parent',
|
213 |
-
'std' => '',
|
214 |
-
'desc' => apply_filters( PT_CV_PREFIX_ . 'setting_parent_page', __( 'Enter ID of parent page to show its children', 'content-views-query-and-display-post-page' ) ),
|
215 |
-
),
|
216 |
-
),
|
217 |
-
'dependence' => array( 'content-type', apply_filters( PT_CV_PREFIX_ . 'hierarchical_post_type', array( 'page' ) ) ),
|
218 |
-
),
|
219 |
-
apply_filters( PT_CV_PREFIX_ . 'post_parent_settings', array() ),
|
220 |
-
// Limit
|
221 |
-
array(
|
222 |
-
'label' => array(
|
223 |
-
'text' => __( 'Limit', 'content-views-query-and-display-post-page' ),
|
224 |
-
),
|
225 |
-
'params' => array(
|
226 |
-
array(
|
227 |
-
'type' => 'number',
|
228 |
-
'name' => 'limit',
|
229 |
-
'std' => '10',
|
230 |
-
'min' => '1',
|
231 |
-
'desc' => __( 'Total number of posts to show. Leave empty to show all found posts', 'content-views-query-and-display-post-page' ),
|
232 |
-
),
|
233 |
-
),
|
234 |
-
),
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
),
|
250 |
-
),
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
),
|
288 |
-
),
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
'
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
'
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
array(
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
'
|
407 |
-
'
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
'
|
500 |
-
'
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
'params'
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
'
|
537 |
-
'
|
538 |
-
'
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
'
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
),
|
600 |
-
'
|
601 |
-
|
602 |
-
'
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
'
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
),
|
648 |
-
),
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
),
|
654 |
-
),
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
),
|
661 |
-
'
|
662 |
-
|
663 |
-
'
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
),
|
678 |
-
'
|
679 |
-
|
680 |
-
'
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Add / Edit Content Views
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views_Admin
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
// Check if using Wordpress version 3.7 or higher
|
16 |
+
$version_gt_37 = PT_CV_Functions::wp_version_compare( '3.7' );
|
17 |
+
|
18 |
+
$settings = array();
|
19 |
+
$id = 0;
|
20 |
+
$post_id = apply_filters( PT_CV_PREFIX_ . 'view_post_id', 0 );
|
21 |
+
|
22 |
+
// Check if this is edit View page
|
23 |
+
if ( !empty( $_GET[ 'id' ] ) ) {
|
24 |
+
$id = cv_sanitize_vid( $_GET[ 'id' ] );
|
25 |
+
|
26 |
+
if ( $id ) {
|
27 |
+
global $pt_cv_admin_settings;
|
28 |
+
$pt_cv_admin_settings = $settings = PT_CV_Functions::view_get_settings( $id, $post_id );
|
29 |
+
}
|
30 |
+
}
|
31 |
+
|
32 |
+
// Submit handle
|
33 |
+
PT_CV_Functions::view_submit();
|
34 |
+
?>
|
35 |
+
|
36 |
+
<div class="wrap form-horizontal pt-wrap">
|
37 |
+
<?php do_action( PT_CV_PREFIX_ . 'admin_view_header' ); ?>
|
38 |
+
|
39 |
+
<h2><?php echo esc_html( $id ? __( 'Edit View', 'content-views-query-and-display-post-page' ) : get_admin_page_title() ); ?></h2>
|
40 |
+
|
41 |
+
<?php
|
42 |
+
if ( $id ) {
|
43 |
+
?>
|
44 |
+
<div>
|
45 |
+
<div class="view-code">For page content, text widget... <input class="form-control" style="width: 190px;background-color: #ADFFAD;margin-right: 50px;" type="text" value="[pt_view id="<?php echo $id ?>"]" onclick="this.select()" readonly=""></div>
|
46 |
+
<div class="view-code">For theme file <input class="form-control" style="width: 370px;" type="text" value='<?php echo do_shortcode("[pt_view id=<?php echo $id ?>]"); ?>' onclick="this.select()" readonly=""></div>
|
47 |
+
<?php echo apply_filters( PT_CV_PREFIX_ . 'view_actions', '<a class="btn btn-info pull-right" target="_blank" href="https://www.contentviewspro.com/pricing/?utm_source=client&utm_medium=view_header&utm_campaign=gopro">get Pro version</a>', $id ) ?>
|
48 |
+
</div>
|
49 |
+
<div class="clear"></div>
|
50 |
+
<?php
|
51 |
+
}
|
52 |
+
?>
|
53 |
+
|
54 |
+
<div class="preview-wrapper">
|
55 |
+
<?php
|
56 |
+
// Preview
|
57 |
+
$options = array(
|
58 |
+
array(
|
59 |
+
'label' => array(
|
60 |
+
'text' => __( 'Preview' ),
|
61 |
+
),
|
62 |
+
'params' => array(
|
63 |
+
array(
|
64 |
+
'type' => 'html',
|
65 |
+
'name' => 'preview',
|
66 |
+
'content' => PT_CV_Html::html_preview_box(),
|
67 |
+
'desc' => sprintf( __( 'To see live output, please click %s button', 'content-views-query-and-display-post-page' ), sprintf( '<code>%s</code>', __( 'Show Preview', 'content-views-query-and-display-post-page' ) ) ),
|
68 |
+
),
|
69 |
+
),
|
70 |
+
),
|
71 |
+
);
|
72 |
+
echo PT_Options_Framework::do_settings( $options, $settings );
|
73 |
+
?>
|
74 |
+
</div>
|
75 |
+
|
76 |
+
<!-- Show Preview -->
|
77 |
+
<a class="btn btn-success" id="<?php echo esc_attr( PT_CV_PREFIX ); ?>show-preview"><?php _e( 'Show Preview', 'content-views-query-and-display-post-page' ); ?></a>
|
78 |
+
|
79 |
+
<br>
|
80 |
+
|
81 |
+
<!-- Settings form -->
|
82 |
+
<form action="" method="POST" id="<?php echo esc_attr( PT_CV_PREFIX . 'form-view' ); ?>">
|
83 |
+
|
84 |
+
<?php
|
85 |
+
// Add nonce field
|
86 |
+
wp_nonce_field( PT_CV_PREFIX_ . 'view_submit', PT_CV_PREFIX_ . 'form_nonce' );
|
87 |
+
|
88 |
+
$view_object = $post_id ? get_post( $post_id ) : null;
|
89 |
+
?>
|
90 |
+
<!-- add hidden field -->
|
91 |
+
<input type="hidden" name="<?php echo esc_attr( PT_CV_PREFIX . 'post-id' ); ?>" value="<?php echo esc_attr( $post_id ); ?>" />
|
92 |
+
<input type="hidden" name="<?php echo esc_attr( PT_CV_PREFIX . 'view-id' ); ?>" value="<?php echo esc_attr( $id ); ?>" />
|
93 |
+
<input type="hidden" name="<?php echo esc_attr( PT_CV_PREFIX . 'version' ); ?>" value="<?php echo esc_attr( apply_filters( PT_CV_PREFIX_ . 'view_version', 'free-' . PT_CV_VERSION ) ); ?>" />
|
94 |
+
|
95 |
+
<?php
|
96 |
+
// View title
|
97 |
+
$options = array(
|
98 |
+
array(
|
99 |
+
'label' => array(
|
100 |
+
'text' => __( 'Title' ),
|
101 |
+
),
|
102 |
+
'params' => array(
|
103 |
+
array(
|
104 |
+
'type' => 'text',
|
105 |
+
'name' => 'view-title',
|
106 |
+
'std' => isset( $view_object->post_title ) ? $view_object->post_title : '',
|
107 |
+
'desc' => __( 'Enter a name to identify your views easily', 'content-views-query-and-display-post-page' ),
|
108 |
+
),
|
109 |
+
),
|
110 |
+
),
|
111 |
+
);
|
112 |
+
echo PT_Options_Framework::do_settings( $options, $settings );
|
113 |
+
?>
|
114 |
+
<br>
|
115 |
+
|
116 |
+
<!-- Save -->
|
117 |
+
<div class="btn-cvp-action">
|
118 |
+
<input type="submit" class="btn btn-primary pull-right <?php echo esc_attr( PT_CV_PREFIX ); ?>save-view" value="<?php _e( 'Save' ); ?>">
|
119 |
+
<?php do_action( PT_CV_PREFIX_ . 'admin_more_buttons' ); ?>
|
120 |
+
</div>
|
121 |
+
|
122 |
+
<!-- Nav tabs -->
|
123 |
+
<ul class="nav nav-tabs">
|
124 |
+
<li class="active">
|
125 |
+
<a href="#<?php echo esc_attr( PT_CV_PREFIX ); ?>filter-settings" data-toggle="tab"><span class="glyphicon glyphicon-search"></span><?php _e( 'Filter Settings', 'content-views-query-and-display-post-page' ); ?>
|
126 |
+
</a>
|
127 |
+
</li>
|
128 |
+
<li>
|
129 |
+
<a href="#<?php echo esc_attr( PT_CV_PREFIX ); ?>display-settings" data-toggle="tab"><span class="glyphicon glyphicon-th-large"></span><?php _e( 'Display Settings', 'content-views-query-and-display-post-page' ); ?>
|
130 |
+
</a>
|
131 |
+
</li>
|
132 |
+
<?php do_action( PT_CV_PREFIX_ . 'setting_tabs_header', $settings ); ?>
|
133 |
+
</ul>
|
134 |
+
|
135 |
+
<!-- Tab panes -->
|
136 |
+
<div class="tab-content">
|
137 |
+
<!-- Filter Settings -->
|
138 |
+
<div class="tab-pane active" id="<?php echo esc_attr( PT_CV_PREFIX ); ?>filter-settings">
|
139 |
+
<?php
|
140 |
+
$options = array(
|
141 |
+
// Content type
|
142 |
+
array(
|
143 |
+
'label' => array(
|
144 |
+
'text' => __( 'Content type', 'content-views-query-and-display-post-page' ),
|
145 |
+
),
|
146 |
+
'params' => array(
|
147 |
+
apply_filters( PT_CV_PREFIX_ . 'contenttype_setting', array(
|
148 |
+
'type' => 'radio',
|
149 |
+
'name' => 'content-type',
|
150 |
+
'options' => PT_CV_Values::post_types(),
|
151 |
+
'std' => 'post',
|
152 |
+
) ),
|
153 |
+
),
|
154 |
+
),
|
155 |
+
// Upgrade to Pro: Custom post type
|
156 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Filter custom post type (product, event...)', 'content-views-query-and-display-post-page' ) ) : '',
|
157 |
+
apply_filters( PT_CV_PREFIX_ . 'custom_filters', array() ),
|
158 |
+
// Common Filters
|
159 |
+
array(
|
160 |
+
'label' => array(
|
161 |
+
'text' => __( 'Common', 'content-views-query-and-display-post-page' ),
|
162 |
+
),
|
163 |
+
'extra_setting' => array(
|
164 |
+
'params' => array(
|
165 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
166 |
+
),
|
167 |
+
),
|
168 |
+
'params' => array(
|
169 |
+
array(
|
170 |
+
'type' => 'group',
|
171 |
+
'params' => array(
|
172 |
+
apply_filters( PT_CV_PREFIX_ . 'sticky_posts_setting', array() ),
|
173 |
+
// Includes
|
174 |
+
array(
|
175 |
+
'label' => array(
|
176 |
+
'text' => __( 'Include only', 'content-views-query-and-display-post-page' ),
|
177 |
+
),
|
178 |
+
'params' => array(
|
179 |
+
array(
|
180 |
+
'type' => 'text',
|
181 |
+
'name' => 'post__in',
|
182 |
+
'std' => '',
|
183 |
+
'desc' => apply_filters( PT_CV_PREFIX_ . 'setting_post_in', __( 'List of post IDs to show (comma-separated values, for example: 1,2,3)', 'content-views-query-and-display-post-page' ) ),
|
184 |
+
),
|
185 |
+
),
|
186 |
+
),
|
187 |
+
apply_filters( PT_CV_PREFIX_ . 'include_extra_settings', array() ),
|
188 |
+
// Excludes
|
189 |
+
array(
|
190 |
+
'label' => array(
|
191 |
+
'text' => __( 'Exclude', 'content-views-query-and-display-post-page' ),
|
192 |
+
),
|
193 |
+
'params' => array(
|
194 |
+
array(
|
195 |
+
'type' => 'text',
|
196 |
+
'name' => 'post__not_in',
|
197 |
+
'std' => '',
|
198 |
+
'desc' => apply_filters( PT_CV_PREFIX_ . 'setting_post_not_in', __( 'List of post IDs to exclude (comma-separated values, for example: 1,2,3)', 'content-views-query-and-display-post-page' ) ),
|
199 |
+
),
|
200 |
+
),
|
201 |
+
'dependence' => array( 'post__in', '' ),
|
202 |
+
),
|
203 |
+
apply_filters( PT_CV_PREFIX_ . 'exclude_extra_settings', array() ),
|
204 |
+
// Parent page
|
205 |
+
array(
|
206 |
+
'label' => array(
|
207 |
+
'text' => __( 'Parent page', 'content-views-query-and-display-post-page' ),
|
208 |
+
),
|
209 |
+
'params' => array(
|
210 |
+
array(
|
211 |
+
'type' => 'number',
|
212 |
+
'name' => 'post_parent',
|
213 |
+
'std' => '',
|
214 |
+
'desc' => apply_filters( PT_CV_PREFIX_ . 'setting_parent_page', __( 'Enter ID of parent page to show its children', 'content-views-query-and-display-post-page' ) ),
|
215 |
+
),
|
216 |
+
),
|
217 |
+
'dependence' => array( 'content-type', apply_filters( PT_CV_PREFIX_ . 'hierarchical_post_type', array( 'page' ) ) ),
|
218 |
+
),
|
219 |
+
apply_filters( PT_CV_PREFIX_ . 'post_parent_settings', array() ),
|
220 |
+
// Limit
|
221 |
+
array(
|
222 |
+
'label' => array(
|
223 |
+
'text' => __( 'Limit', 'content-views-query-and-display-post-page' ),
|
224 |
+
),
|
225 |
+
'params' => array(
|
226 |
+
array(
|
227 |
+
'type' => 'number',
|
228 |
+
'name' => 'limit',
|
229 |
+
'std' => '10',
|
230 |
+
'min' => '1',
|
231 |
+
'desc' => __( 'Total number of posts to show. Leave empty to show all found posts', 'content-views-query-and-display-post-page' ),
|
232 |
+
),
|
233 |
+
),
|
234 |
+
),
|
235 |
+
array(
|
236 |
+
'label' => array(
|
237 |
+
'text' => '',
|
238 |
+
),
|
239 |
+
'params' => array(
|
240 |
+
array(
|
241 |
+
'type' => 'html',
|
242 |
+
'content' => sprintf( '<p class="alert-warning" style="margin-top:-10px;padding:0;">%s</p>', __( 'Leaving it empty might cause performance issues. You should enable pagination (on the next tab) in this case.', 'content-views-query-and-display-post-page' ) ),
|
243 |
+
),
|
244 |
+
),
|
245 |
+
'dependence' => array( 'limit', '' ),
|
246 |
+
),
|
247 |
+
apply_filters( PT_CV_PREFIX_ . 'after_limit_option', '' ),
|
248 |
+
),
|
249 |
+
),
|
250 |
+
),
|
251 |
+
), // End Common Filters
|
252 |
+
// Advanced Filters
|
253 |
+
array(
|
254 |
+
'label' => array(
|
255 |
+
'text' => __( 'Advance', 'content-views-query-and-display-post-page' ),
|
256 |
+
),
|
257 |
+
'extra_setting' => array(
|
258 |
+
'params' => array(
|
259 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
260 |
+
'wrap-id' => PT_CV_Html::html_group_id( 'advanced-params' ),
|
261 |
+
),
|
262 |
+
),
|
263 |
+
'params' => array(
|
264 |
+
array(
|
265 |
+
'type' => 'group',
|
266 |
+
'params' => array(
|
267 |
+
array(
|
268 |
+
'label' => array(
|
269 |
+
'text' => '',
|
270 |
+
),
|
271 |
+
'extra_setting' => array(
|
272 |
+
'params' => array(
|
273 |
+
'width' => 12,
|
274 |
+
),
|
275 |
+
),
|
276 |
+
'params' => array(
|
277 |
+
array(
|
278 |
+
'type' => 'checkbox',
|
279 |
+
'name' => 'advanced-settings[]',
|
280 |
+
'options' => PT_CV_Values::advanced_settings(),
|
281 |
+
'std' => '',
|
282 |
+
'class' => 'advanced-settings-item',
|
283 |
+
),
|
284 |
+
),
|
285 |
+
),
|
286 |
+
),
|
287 |
+
),
|
288 |
+
),
|
289 |
+
), // End Advanced Filters
|
290 |
+
// Settings of Advanced Filters options
|
291 |
+
array(
|
292 |
+
'label' => array(
|
293 |
+
'text' => '',
|
294 |
+
),
|
295 |
+
'extra_setting' => array(
|
296 |
+
'params' => array(
|
297 |
+
'wrap-class' => PT_CV_Html::html_panel_group_class(),
|
298 |
+
'wrap-id' => PT_CV_Html::html_panel_group_id( PT_CV_Functions::string_random() ),
|
299 |
+
),
|
300 |
+
),
|
301 |
+
'params' => array(
|
302 |
+
array(
|
303 |
+
'type' => 'panel_group',
|
304 |
+
'params' => apply_filters( PT_CV_PREFIX_ . 'advanced_settings_panel', array(
|
305 |
+
// Taxonomies Settings
|
306 |
+
'taxonomy' => array(
|
307 |
+
'parent_label' => sprintf( __( 'Filter by %s', 'content-views-query-and-display-post-page' ), __( 'Taxonomy', 'content-views-query-and-display-post-page' ) ),
|
308 |
+
// Taxonomies list
|
309 |
+
array(
|
310 |
+
'label' => array(
|
311 |
+
'text' => __( 'Select taxonomy', 'content-views-query-and-display-post-page' ),
|
312 |
+
),
|
313 |
+
'extra_setting' => array(
|
314 |
+
'params' => array(
|
315 |
+
'wrap-class' => PT_CV_PREFIX . 'taxonomies',
|
316 |
+
),
|
317 |
+
),
|
318 |
+
'params' => array(
|
319 |
+
array(
|
320 |
+
'type' => 'checkbox',
|
321 |
+
'name' => 'taxonomy[]',
|
322 |
+
'options' => PT_CV_Values::taxonomy_list(),
|
323 |
+
'std' => '',
|
324 |
+
'class' => 'taxonomy-item',
|
325 |
+
),
|
326 |
+
),
|
327 |
+
),
|
328 |
+
// Upgrade to Pro: Custom taxonomy
|
329 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Filter by custom taxonomy', 'content-views-query-and-display-post-page' ) ) : '',
|
330 |
+
// Terms list
|
331 |
+
array(
|
332 |
+
'label' => array(
|
333 |
+
'text' => '',
|
334 |
+
),
|
335 |
+
'extra_setting' => array(
|
336 |
+
'params' => array(
|
337 |
+
'wrap-class' => PT_CV_Html::html_panel_group_class() . ' terms',
|
338 |
+
'wrap-id' => PT_CV_Html::html_panel_group_id( PT_CV_Functions::string_random() ),
|
339 |
+
),
|
340 |
+
),
|
341 |
+
'params' => array(
|
342 |
+
array(
|
343 |
+
'type' => 'panel_group',
|
344 |
+
'settings' => array(
|
345 |
+
'nice_name' => PT_CV_Values::taxonomy_list(),
|
346 |
+
),
|
347 |
+
'params' => PT_CV_Settings::terms_of_taxonomies(),
|
348 |
+
),
|
349 |
+
),
|
350 |
+
),
|
351 |
+
// Relation of taxonomies
|
352 |
+
array(
|
353 |
+
'label' => array(
|
354 |
+
'text' => __( 'Relation', 'content-views-query-and-display-post-page' ),
|
355 |
+
),
|
356 |
+
'params' => array(
|
357 |
+
array(
|
358 |
+
'type' => 'select',
|
359 |
+
'name' => 'taxonomy-relation',
|
360 |
+
'options' => PT_CV_Values::taxonomy_relation(),
|
361 |
+
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::taxonomy_relation() ),
|
362 |
+
'class' => 'taxonomy-relation',
|
363 |
+
'desc' => __( 'The logical relationship between above taxonomies', 'content-views-query-and-display-post-page' ),
|
364 |
+
),
|
365 |
+
),
|
366 |
+
),
|
367 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'In this lite version, it is not possible to replace posts layout in category/tag page with the layout of this View.<br>In the Pro version, it is possible', 'content-views-query-and-display-post-page' ), 12, null, true ) : '',
|
368 |
+
apply_filters( PT_CV_PREFIX_ . 'taxonomies_custom_settings', array() ),
|
369 |
+
), // End Taxonomies Settings
|
370 |
+
// Sort by Settings
|
371 |
+
'order' => array(
|
372 |
+
'parent_label' => __( 'Sort by', 'content-views-query-and-display-post-page' ),
|
373 |
+
array(
|
374 |
+
'label' => array(
|
375 |
+
'text' => __( 'Sort by', 'content-views-query-and-display-post-page' ),
|
376 |
+
),
|
377 |
+
'extra_setting' => array(
|
378 |
+
'params' => array(
|
379 |
+
'width' => 12,
|
380 |
+
),
|
381 |
+
),
|
382 |
+
'params' => array(
|
383 |
+
array(
|
384 |
+
'type' => 'panel_group',
|
385 |
+
'settings' => array(
|
386 |
+
'show_all' => 1,
|
387 |
+
),
|
388 |
+
'params' => PT_CV_Settings::orderby(),
|
389 |
+
),
|
390 |
+
),
|
391 |
+
),
|
392 |
+
), // End Order by Settings
|
393 |
+
// Author Settings
|
394 |
+
'author' => apply_filters( PT_CV_PREFIX_ . 'author_settings', array(
|
395 |
+
'parent_label' => sprintf( __( 'Filter by %s', 'content-views-query-and-display-post-page' ), __( 'Author' ) ),
|
396 |
+
array(
|
397 |
+
'label' => array(
|
398 |
+
'text' => __( 'By author', 'content-views-query-and-display-post-page' ),
|
399 |
+
),
|
400 |
+
'params' => array(
|
401 |
+
array(
|
402 |
+
'type' => 'select',
|
403 |
+
'name' => 'author__in[]',
|
404 |
+
'options' => PT_CV_Values::user_list(),
|
405 |
+
'std' => '',
|
406 |
+
'class' => 'select2',
|
407 |
+
'multiple' => $version_gt_37 ? '1' : '0',
|
408 |
+
),
|
409 |
+
),
|
410 |
+
),
|
411 |
+
$version_gt_37 ?
|
412 |
+
array(
|
413 |
+
'label' => array(
|
414 |
+
'text' => __( 'Not by author', 'content-views-query-and-display-post-page' ),
|
415 |
+
),
|
416 |
+
'params' => array(
|
417 |
+
array(
|
418 |
+
'type' => 'select',
|
419 |
+
'name' => 'author__not_in[]',
|
420 |
+
'options' => PT_CV_Values::user_list(),
|
421 |
+
'std' => '',
|
422 |
+
'class' => 'select2',
|
423 |
+
'multiple' => $version_gt_37 ? '1' : '0',
|
424 |
+
),
|
425 |
+
),
|
426 |
+
) : array(),
|
427 |
+
) ), // End Author Settings
|
428 |
+
// Status Settings
|
429 |
+
'status' => array(
|
430 |
+
'parent_label' => sprintf( __( 'Filter by %s', 'content-views-query-and-display-post-page' ), __( 'Status' ) ),
|
431 |
+
array(
|
432 |
+
'label' => array(
|
433 |
+
'text' => '',
|
434 |
+
),
|
435 |
+
'extra_setting' => array(
|
436 |
+
'params' => array(
|
437 |
+
'width' => 12,
|
438 |
+
),
|
439 |
+
),
|
440 |
+
'params' => array(
|
441 |
+
array(
|
442 |
+
'type' => 'select',
|
443 |
+
'name' => 'post_status',
|
444 |
+
'options' => PT_CV_Values::post_statuses(),
|
445 |
+
'std' => 'publish',
|
446 |
+
'class' => 'select2',
|
447 |
+
'multiple' => '1',
|
448 |
+
'desc' => __( 'Select post status', 'content-views-query-and-display-post-page' ),
|
449 |
+
),
|
450 |
+
),
|
451 |
+
),
|
452 |
+
), // End Status Settings
|
453 |
+
// Keyword Settings
|
454 |
+
'search' => array(
|
455 |
+
'parent_label' => sprintf( __( 'Filter by %s', 'content-views-query-and-display-post-page' ), __( 'Keyword' ) ),
|
456 |
+
apply_filters( PT_CV_PREFIX_ . 'search_settings', array(
|
457 |
+
'label' => array(
|
458 |
+
'text' => '',
|
459 |
+
),
|
460 |
+
'extra_setting' => array(
|
461 |
+
'params' => array(
|
462 |
+
'width' => 12,
|
463 |
+
),
|
464 |
+
),
|
465 |
+
'params' => array(
|
466 |
+
array(
|
467 |
+
'type' => 'text',
|
468 |
+
'name' => 's',
|
469 |
+
'std' => '',
|
470 |
+
'desc' => __( 'Enter keyword to searching for posts', 'content-views-query-and-display-post-page' ) . apply_filters( PT_CV_PREFIX_ . 'searchby_keyword_desc', '' ) . '.<br>' . __( 'It will search keyword in title, excerpt, content of posts', 'content-views-query-and-display-post-page' ),
|
471 |
+
),
|
472 |
+
),
|
473 |
+
) ),
|
474 |
+
), // End Keyword Settings
|
475 |
+
)
|
476 |
+
),
|
477 |
+
),
|
478 |
+
),
|
479 |
+
),
|
480 |
+
);
|
481 |
+
echo PT_Options_Framework::do_settings( $options, $settings );
|
482 |
+
?>
|
483 |
+
</div>
|
484 |
+
<!-- end Filter Settings -->
|
485 |
+
|
486 |
+
<!-- Display Settings -->
|
487 |
+
<div class="tab-pane" id="<?php echo esc_attr( PT_CV_PREFIX ); ?>display-settings">
|
488 |
+
<?php
|
489 |
+
$options = array(
|
490 |
+
// View Type
|
491 |
+
array(
|
492 |
+
'label' => array(
|
493 |
+
'text' => __( 'Layout', 'content-views-query-and-display-post-page' ),
|
494 |
+
),
|
495 |
+
'params' => array(
|
496 |
+
apply_filters( PT_CV_PREFIX_ . 'viewtype_setting', array(
|
497 |
+
'type' => 'radio',
|
498 |
+
'name' => 'view-type',
|
499 |
+
'options' => PT_CV_Values::view_type(),
|
500 |
+
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::view_type() ),
|
501 |
+
) ),
|
502 |
+
),
|
503 |
+
),
|
504 |
+
// View settings
|
505 |
+
array(
|
506 |
+
'label' => array(
|
507 |
+
'text' => '',
|
508 |
+
),
|
509 |
+
'params' => array(
|
510 |
+
array(
|
511 |
+
'type' => 'panel_group',
|
512 |
+
'settings' => array(
|
513 |
+
'no_panel' => 1,
|
514 |
+
'show_only_one' => 1,
|
515 |
+
),
|
516 |
+
'params' => PT_CV_Values::view_type_settings(),
|
517 |
+
),
|
518 |
+
),
|
519 |
+
),
|
520 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'More amazing layouts (Pinterest, Timeline...)', 'content-views-query-and-display-post-page' ), 10, 'margin-bottom:10px' ) : '',
|
521 |
+
apply_filters( PT_CV_PREFIX_ . 'more_responsive_settings', array(
|
522 |
+
'label' => array(
|
523 |
+
'text' => __( 'Responsive', 'content-views-query-and-display-post-page' ),
|
524 |
+
),
|
525 |
+
'params' => array(
|
526 |
+
array(
|
527 |
+
'type' => 'group',
|
528 |
+
'params' => array(
|
529 |
+
array(
|
530 |
+
'label' => array(
|
531 |
+
'text' => sprintf( '%s (%s)', __( 'Items per row', 'content-views-query-and-display-post-page' ), __( 'Tablet', 'content-views-query-and-display-post-page' ) ),
|
532 |
+
),
|
533 |
+
'params' => array(
|
534 |
+
array(
|
535 |
+
'type' => 'number',
|
536 |
+
'name' => 'resp-tablet-number-columns',
|
537 |
+
'std' => '2',
|
538 |
+
'append_text' => '1 → 4',
|
539 |
+
),
|
540 |
+
),
|
541 |
+
),
|
542 |
+
array(
|
543 |
+
'label' => array(
|
544 |
+
'text' => sprintf( '%s (%s)', __( 'Items per row', 'content-views-query-and-display-post-page' ), __( 'Mobile', 'content-views-query-and-display-post-page' ) ),
|
545 |
+
),
|
546 |
+
'params' => array(
|
547 |
+
array(
|
548 |
+
'type' => 'number',
|
549 |
+
'name' => 'resp-number-columns',
|
550 |
+
'std' => '1',
|
551 |
+
'append_text' => '1 → 4',
|
552 |
+
),
|
553 |
+
),
|
554 |
+
),
|
555 |
+
),
|
556 |
+
),
|
557 |
+
),
|
558 |
+
'dependence' => array( 'view-type', !get_option( 'pt_cv_version_pro' ) ? array( 'grid' ) : array( 'grid', 'scrollable', 'pinterest', 'glossary' ) ),
|
559 |
+
) ),
|
560 |
+
array(
|
561 |
+
'label' => array(
|
562 |
+
'text' => __( 'Format', 'content-views-query-and-display-post-page' ),
|
563 |
+
),
|
564 |
+
'extra_setting' => array(
|
565 |
+
'params' => array(
|
566 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
567 |
+
),
|
568 |
+
),
|
569 |
+
'params' => array(
|
570 |
+
array(
|
571 |
+
'type' => 'group',
|
572 |
+
'params' => apply_filters( PT_CV_PREFIX_ . 'format_settings', array(
|
573 |
+
array(
|
574 |
+
'label' => array(
|
575 |
+
'text' => '',
|
576 |
+
),
|
577 |
+
'extra_setting' => array(
|
578 |
+
'params' => array(
|
579 |
+
'width' => 12,
|
580 |
+
),
|
581 |
+
),
|
582 |
+
'params' => array(
|
583 |
+
array(
|
584 |
+
'type' => 'radio',
|
585 |
+
'name' => 'layout-format',
|
586 |
+
'options' => PT_CV_Values::layout_format(),
|
587 |
+
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::layout_format() ),
|
588 |
+
),
|
589 |
+
),
|
590 |
+
),
|
591 |
+
array(
|
592 |
+
'label' => array(
|
593 |
+
'text' => '',
|
594 |
+
),
|
595 |
+
'extra_setting' => array(
|
596 |
+
'params' => array(
|
597 |
+
'width' => 12,
|
598 |
+
),
|
599 |
+
),
|
600 |
+
'params' => array(
|
601 |
+
array(
|
602 |
+
'type' => 'html',
|
603 |
+
'content' => sprintf( '<p class="text-muted" style="margin-top: -8px">%s.</p>', __( 'It requires enough horizontal space. You might reduce <code>Items Per Row</code> above if available, or select smaller thumbnail size below', 'content-views-query-and-display-post-page' ) ),
|
604 |
+
),
|
605 |
+
),
|
606 |
+
'dependence' => array( 'layout-format', '2-col' ),
|
607 |
+
),
|
608 |
+
array(
|
609 |
+
'label' => array(
|
610 |
+
'text' => '',
|
611 |
+
),
|
612 |
+
'extra_setting' => array(
|
613 |
+
'params' => array(
|
614 |
+
'width' => 12,
|
615 |
+
),
|
616 |
+
),
|
617 |
+
'params' => array(
|
618 |
+
array(
|
619 |
+
'type' => 'checkbox',
|
620 |
+
'name' => 'lf-nowrap',
|
621 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Do not wrap text around image', 'content-views-query-and-display-post-page' ) ),
|
622 |
+
'std' => '',
|
623 |
+
),
|
624 |
+
),
|
625 |
+
'dependence' => array( 'layout-format', '2-col' ),
|
626 |
+
),
|
627 |
+
array(
|
628 |
+
'label' => array(
|
629 |
+
'text' => '',
|
630 |
+
),
|
631 |
+
'extra_setting' => array(
|
632 |
+
'params' => array(
|
633 |
+
'width' => 12,
|
634 |
+
),
|
635 |
+
),
|
636 |
+
'params' => array(
|
637 |
+
array(
|
638 |
+
'type' => 'checkbox',
|
639 |
+
'name' => 'lf-mobile-disable',
|
640 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Disable this format on small screens (less than 481 pixels)', 'content-views-query-and-display-post-page' ) ),
|
641 |
+
'std' => '',
|
642 |
+
),
|
643 |
+
),
|
644 |
+
'dependence' => array( 'layout-format', '2-col' ),
|
645 |
+
),
|
646 |
+
) ),
|
647 |
+
),
|
648 |
+
),
|
649 |
+
),
|
650 |
+
// Fields settings
|
651 |
+
array(
|
652 |
+
'label' => array(
|
653 |
+
'text' => __( 'Fields settings', 'content-views-query-and-display-post-page' ),
|
654 |
+
),
|
655 |
+
'extra_setting' => array(
|
656 |
+
'params' => array(
|
657 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
658 |
+
'wrap-id' => PT_CV_Html::html_group_id( 'field-settings' ),
|
659 |
+
),
|
660 |
+
),
|
661 |
+
'params' => array(
|
662 |
+
array(
|
663 |
+
'type' => 'group',
|
664 |
+
'params' => PT_CV_Settings::field_settings(),
|
665 |
+
),
|
666 |
+
),
|
667 |
+
),
|
668 |
+
// Pagination settings
|
669 |
+
array(
|
670 |
+
'label' => array(
|
671 |
+
'text' => __( 'Pagination', 'content-views-query-and-display-post-page' ),
|
672 |
+
),
|
673 |
+
'extra_setting' => array(
|
674 |
+
'params' => array(
|
675 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
676 |
+
),
|
677 |
+
),
|
678 |
+
'params' => array(
|
679 |
+
array(
|
680 |
+
'type' => 'group',
|
681 |
+
'params' => PT_CV_Settings::settings_pagination(),
|
682 |
+
),
|
683 |
+
),
|
684 |
+
),
|
685 |
+
// Other settings
|
686 |
+
array(
|
687 |
+
'label' => array(
|
688 |
+
'text' => __( 'Others', 'content-views-query-and-display-post-page' ),
|
689 |
+
),
|
690 |
+
'extra_setting' => array(
|
691 |
+
'params' => array(
|
692 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
693 |
+
),
|
694 |
+
),
|
695 |
+
'params' => array(
|
696 |
+
array(
|
697 |
+
'type' => 'group',
|
698 |
+
'params' => PT_CV_Settings::settings_other(),
|
699 |
+
),
|
700 |
+
),
|
701 |
+
),
|
702 |
+
);
|
703 |
+
|
704 |
+
$options = apply_filters( PT_CV_PREFIX_ . 'display_settings', $options );
|
705 |
+
echo PT_Options_Framework::do_settings( $options, $settings );
|
706 |
+
?>
|
707 |
+
</div>
|
708 |
+
<!-- end Display Settings -->
|
709 |
+
|
710 |
+
<?php
|
711 |
+
do_action( PT_CV_PREFIX_ . 'setting_tabs_content', $settings );
|
712 |
+
?>
|
713 |
+
|
714 |
+
</div>
|
715 |
+
|
716 |
+
<div class="clearfix"></div>
|
717 |
+
<hr>
|
718 |
+
<!-- Save -->
|
719 |
+
<input type="submit" class="btn btn-primary pull-right <?php echo esc_attr( PT_CV_PREFIX ); ?>save-view" value="<?php _e( 'Save' ); ?>">
|
720 |
+
</form>
|
721 |
+
</div>
|
content-views.php
CHANGED
@@ -10,7 +10,7 @@
|
|
10 |
* Plugin Name: Content Views
|
11 |
* Plugin URI: http://wordpress.org/plugins/content-views-query-and-display-post-page/
|
12 |
* Description: Query and display <strong>posts, pages</strong> in awesome layouts (<strong>grid, scrollable list, collapsible list</strong>) easier than ever, without coding!
|
13 |
-
* Version: 2.
|
14 |
* Author: Content Views
|
15 |
* Author URI: http://profiles.wordpress.org/pt-guy
|
16 |
* Text Domain: content-views-query-and-display-post-page
|
@@ -25,7 +25,7 @@ if ( !defined( 'ABSPATH' ) ) {
|
|
25 |
}
|
26 |
|
27 |
// Define Constant
|
28 |
-
define( 'PT_CV_VERSION', '2.
|
29 |
define( 'PT_CV_FILE', __FILE__ );
|
30 |
define( 'PT_CV_PATH', plugin_dir_path( __FILE__ ) );
|
31 |
include_once( PT_CV_PATH . 'includes/defines.php' );
|
10 |
* Plugin Name: Content Views
|
11 |
* Plugin URI: http://wordpress.org/plugins/content-views-query-and-display-post-page/
|
12 |
* Description: Query and display <strong>posts, pages</strong> in awesome layouts (<strong>grid, scrollable list, collapsible list</strong>) easier than ever, without coding!
|
13 |
+
* Version: 2.3.0
|
14 |
* Author: Content Views
|
15 |
* Author URI: http://profiles.wordpress.org/pt-guy
|
16 |
* Text Domain: content-views-query-and-display-post-page
|
25 |
}
|
26 |
|
27 |
// Define Constant
|
28 |
+
define( 'PT_CV_VERSION', '2.3.0' );
|
29 |
define( 'PT_CV_FILE', __FILE__ );
|
30 |
define( 'PT_CV_PATH', plugin_dir_path( __FILE__ ) );
|
31 |
include_once( PT_CV_PATH . 'includes/defines.php' );
|
includes/compatibility.php
CHANGED
@@ -258,6 +258,16 @@ if ( function_exists( 'opRemoveStyles' ) ) {
|
|
258 |
|
259 |
add_action( PT_CV_PREFIX_ . 'before_query', 'cv_comp_action_before_query' );
|
260 |
function cv_comp_action_before_query() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
261 |
/* Fix: Posts don't appear in View output, when excludes categories by "Ultimate category excluder" plugin
|
262 |
* @since 1.9.9
|
263 |
*/
|
@@ -271,6 +281,12 @@ function cv_comp_action_before_query() {
|
|
271 |
if ( function_exists( 'rc_modify_query_get_posts_by_date' ) ) {
|
272 |
remove_action( 'pre_get_posts', 'rc_modify_query_get_posts_by_date' );
|
273 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
}
|
275 |
|
276 |
/**
|
@@ -347,76 +363,37 @@ function cv_comp_plugin_saoe() {
|
|
347 |
/** Compatible with Timeline layout which uses old param
|
348 |
* @since 2.0
|
349 |
*/
|
350 |
-
add_action( PT_CV_PREFIX_ . 'view_process_start', '
|
351 |
-
function
|
352 |
-
$pagenum =
|
353 |
if ( !empty( $pagenum ) ) {
|
354 |
$_GET[ 'vpage' ] = $pagenum;
|
355 |
}
|
356 |
}
|
357 |
|
358 |
-
/**
|
359 |
-
|
360 |
-
|
|
|
|
|
361 |
*/
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
369 |
}
|
370 |
}
|
371 |
-
|
372 |
-
if ( !$paged ) {
|
373 |
-
$paged = get_query_var( PT_CV_PAGE_VAR );
|
374 |
-
}
|
375 |
-
// Static front page
|
376 |
-
if ( !$paged ) {
|
377 |
-
$paged = get_query_var( 'page' );
|
378 |
-
}
|
379 |
-
|
380 |
-
return $paged;
|
381 |
-
}
|
382 |
-
|
383 |
-
function cv_comp_pagination_remove_old_param( $link ) {
|
384 |
-
$link = remove_query_arg( array( 'vpage', '_page', 'page' ), $link );
|
385 |
-
|
386 |
-
// Visit /?pagevar=N, pagination links wrong
|
387 |
-
global $wp_rewrite;
|
388 |
-
if ( $wp_rewrite->using_permalinks() ) {
|
389 |
-
$link = remove_query_arg( PT_CV_PAGE_VAR, $link );
|
390 |
-
}
|
391 |
-
|
392 |
-
return $link;
|
393 |
-
}
|
394 |
-
|
395 |
-
// Make pagination endpoint works with "custom taxonomy"
|
396 |
-
add_filter( 'register_taxonomy_args', 'cv_add_mask_to_custom_taxonomy', 10, 3 );
|
397 |
-
function cv_add_mask_to_custom_taxonomy( $args, $name, $object_type ) {
|
398 |
-
$args = array_merge( array(
|
399 |
-
'rewrite' => true,
|
400 |
-
), $args );
|
401 |
-
|
402 |
-
if ( false !== $args[ 'rewrite' ] && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) {
|
403 |
-
$args[ 'rewrite' ] = wp_parse_args( $args[ 'rewrite' ], array(
|
404 |
-
'ep_mask' => EP_ALL,
|
405 |
-
) );
|
406 |
-
}
|
407 |
-
|
408 |
-
return $args;
|
409 |
-
}
|
410 |
-
|
411 |
-
// Register pagination endpoint
|
412 |
-
add_action( 'init', 'cv_pretty_nonajax_pagination', 999999 );
|
413 |
-
function cv_pretty_nonajax_pagination() {
|
414 |
-
add_rewrite_endpoint( PT_CV_PAGE_VAR, EP_ALL );
|
415 |
-
|
416 |
-
if ( false === get_option( 'cv_pretty_pagination_url_212' ) ) {
|
417 |
-
flush_rewrite_rules( false );
|
418 |
-
add_option( 'cv_pretty_pagination_url_212', 1 );
|
419 |
-
}
|
420 |
}
|
421 |
|
422 |
/** Prevent (no title) issue caused by other plugins */
|
@@ -425,3 +402,22 @@ function cv_comp_prevent_no_title() {
|
|
425 |
// title-remover plugin
|
426 |
remove_filter( 'the_title', 'wptr_supress_title', 10, 2 );
|
427 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
258 |
|
259 |
add_action( PT_CV_PREFIX_ . 'before_query', 'cv_comp_action_before_query' );
|
260 |
function cv_comp_action_before_query() {
|
261 |
+
/** Fix problem with Paid Membership Pro plugin
|
262 |
+
* It resets (instead of append) "post__not_in" parameter of WP query which makes:
|
263 |
+
* - exclude function doesn't work
|
264 |
+
* - output in Preview panel is different from output in front-end
|
265 |
+
* @since 1.7.3
|
266 |
+
*/
|
267 |
+
if ( function_exists( 'pmpro_search_filter' ) ) {
|
268 |
+
remove_filter( 'pre_get_posts', 'pmpro_search_filter' );
|
269 |
+
}
|
270 |
+
|
271 |
/* Fix: Posts don't appear in View output, when excludes categories by "Ultimate category excluder" plugin
|
272 |
* @since 1.9.9
|
273 |
*/
|
281 |
if ( function_exists( 'rc_modify_query_get_posts_by_date' ) ) {
|
282 |
remove_action( 'pre_get_posts', 'rc_modify_query_get_posts_by_date' );
|
283 |
}
|
284 |
+
|
285 |
+
/* Theme GeoPress360 shows only post and its post type on all pages
|
286 |
+
* @since 2.3.0
|
287 |
+
*/
|
288 |
+
remove_filter( 'pre_get_posts', 'aplotis_custom_posts_in_archive' );
|
289 |
+
remove_filter( 'pre_get_posts', 'aplotis_panoramas_in_home_loop' );
|
290 |
}
|
291 |
|
292 |
/**
|
363 |
/** Compatible with Timeline layout which uses old param
|
364 |
* @since 2.0
|
365 |
*/
|
366 |
+
add_action( PT_CV_PREFIX_ . 'view_process_start', 'cv_comp_pro_timeline_pagination' );
|
367 |
+
function cv_comp_pro_timeline_pagination() {
|
368 |
+
$pagenum = PT_CV_Functions::get_pagination_number();
|
369 |
if ( !empty( $pagenum ) ) {
|
370 |
$_GET[ 'vpage' ] = $pagenum;
|
371 |
}
|
372 |
}
|
373 |
|
374 |
+
/** Redirect to new url if using old pagination link
|
375 |
+
/pages/N
|
376 |
+
?pages=N
|
377 |
+
&pages=N
|
378 |
+
* @since 2.3.0
|
379 |
*/
|
380 |
+
add_action( 'template_redirect', 'cv_comp_pagination_redirect' );
|
381 |
+
function cv_comp_pagination_redirect() {
|
382 |
+
$matches = array();
|
383 |
+
$pattern = '@([/?&]pages[/=])([0-9]+)@i';
|
384 |
+
$request = html_entity_decode( get_pagenum_link() );
|
385 |
+
preg_match( $pattern, $request, $matches );
|
386 |
+
|
387 |
+
if ( !empty( $matches[ 2 ] ) ) {
|
388 |
+
$new_url_raw = PT_CV_Functions::get_pagination_url( $matches[ 2 ] );
|
389 |
+
$new_url = preg_replace( $pattern, '', html_entity_decode( $new_url_raw ) );
|
390 |
+
if ( !headers_sent() && wp_http_validate_url( $new_url ) ) {
|
391 |
+
wp_safe_redirect( $new_url, 301 );
|
392 |
+
exit();
|
393 |
+
} else {
|
394 |
+
return $new_url;
|
395 |
}
|
396 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
397 |
}
|
398 |
|
399 |
/** Prevent (no title) issue caused by other plugins */
|
402 |
// title-remover plugin
|
403 |
remove_filter( 'the_title', 'wptr_supress_title', 10, 2 );
|
404 |
}
|
405 |
+
|
406 |
+
/** Prevent output of Easy Footnotes plugin from showing in View (which shows Full Content of post)
|
407 |
+
* @since 2.3.0
|
408 |
+
*/
|
409 |
+
add_action( 'pt_cv_view_process_start', 'cvp_comp_plugin_easyfootnotes' );
|
410 |
+
function cvp_comp_plugin_easyfootnotes() {
|
411 |
+
global $easyFootnotes;
|
412 |
+
if ( isset( $easyFootnotes ) ) {
|
413 |
+
$is_start = current_filter() === 'pt_cv_view_process_start';
|
414 |
+
$func = $is_start ? 'remove_filter' : 'add_filter';
|
415 |
+
|
416 |
+
$func( 'the_content', array( $easyFootnotes, 'easy_footnote_after_content' ), 20 );
|
417 |
+
$func( 'the_content', array( $easyFootnotes, 'easy_footnote_reset' ), 999 );
|
418 |
+
|
419 |
+
if ( $is_start ) {
|
420 |
+
add_action( 'pt_cv_view_process_end', 'cvp_comp_plugin_easyfootnotes' );
|
421 |
+
}
|
422 |
+
}
|
423 |
+
}
|
includes/defines.php
CHANGED
@@ -42,8 +42,6 @@ define( 'PT_CV_VIEW_TYPE_OUTPUT', PT_CV_PATH . 'public/templates/' );
|
|
42 |
// Enable/Disable debug mode
|
43 |
define( 'PT_CV_DEBUG', false );
|
44 |
|
45 |
-
// Name of parameter for non-ajax pagination
|
46 |
-
define( 'PT_CV_PAGE_VAR', 'pages' );
|
47 |
/**
|
48 |
* Check if CV layout was damaged by theme/another plugin's style
|
49 |
* @since 1.8.7
|
42 |
// Enable/Disable debug mode
|
43 |
define( 'PT_CV_DEBUG', false );
|
44 |
|
|
|
|
|
45 |
/**
|
46 |
* Check if CV layout was damaged by theme/another plugin's style
|
47 |
* @since 1.8.7
|
includes/formatting.php
CHANGED
@@ -1,67 +1,67 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Formatting HTML
|
4 |
-
*
|
5 |
-
* @subpackage Includes
|
6 |
-
* @license GPL-2.0+
|
7 |
-
* @copyright CVPro <http://www.contentviewspro.com/>
|
8 |
-
* @since 1.9.1
|
9 |
-
*/
|
10 |
-
// Exit if accessed directly
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
/**
|
15 |
-
* Sanitize View ID
|
16 |
-
*
|
17 |
-
* @since 1.9.1
|
18 |
-
* @param string $view_id
|
19 |
-
* @return string
|
20 |
-
*/
|
21 |
-
function cv_sanitize_vid( $view_id ) {
|
22 |
-
return preg_replace( '/[\W]/', '', $view_id );
|
23 |
-
}
|
24 |
-
|
25 |
-
/**
|
26 |
-
* Sanitize HTML data attribute=value
|
27 |
-
*
|
28 |
-
* @since 1.9.1
|
29 |
-
* @param string $data
|
30 |
-
* @return string
|
31 |
-
*/
|
32 |
-
function cv_sanitize_html_data( $data ) {
|
33 |
-
return strip_tags( $data );
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* Sanitize content of HTML tag
|
38 |
-
*
|
39 |
-
* @since 1.9.1
|
40 |
-
* @param string $string
|
41 |
-
* @return string
|
42 |
-
*/
|
43 |
-
function cv_sanitize_tag_content( $string, $remove_breaks = false ) {
|
44 |
-
$string = preg_replace( '@<(script)[^>]*?>.*?</\\1>@si', '', $string );
|
45 |
-
|
46 |
-
if ( $remove_breaks )
|
47 |
-
$string = preg_replace( '/[\r\n\t ]+/', ' ', $string );
|
48 |
-
|
49 |
-
return trim( $string );
|
50 |
-
}
|
51 |
-
|
52 |
-
/**
|
53 |
-
* For WordPress 4.8.3 and after
|
54 |
-
*/
|
55 |
-
if ( !function_exists( 'cv_esc_sql' ) ) {
|
56 |
-
function cv_esc_sql( $data ) {
|
57 |
-
$result = esc_sql( $data );
|
58 |
-
|
59 |
-
global $wpdb;
|
60 |
-
if ( method_exists( $wpdb, 'remove_placeholder_escape' ) ) {
|
61 |
-
return $wpdb->remove_placeholder_escape( $result );
|
62 |
-
} else {
|
63 |
-
return $result;
|
64 |
-
}
|
65 |
-
}
|
66 |
-
|
67 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Formatting HTML
|
4 |
+
*
|
5 |
+
* @subpackage Includes
|
6 |
+
* @license GPL-2.0+
|
7 |
+
* @copyright CVPro <http://www.contentviewspro.com/>
|
8 |
+
* @since 1.9.1
|
9 |
+
*/
|
10 |
+
// Exit if accessed directly
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
/**
|
15 |
+
* Sanitize View ID
|
16 |
+
*
|
17 |
+
* @since 1.9.1
|
18 |
+
* @param string $view_id
|
19 |
+
* @return string
|
20 |
+
*/
|
21 |
+
function cv_sanitize_vid( $view_id ) {
|
22 |
+
return preg_replace( '/[\W]/', '', $view_id );
|
23 |
+
}
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Sanitize HTML data attribute=value
|
27 |
+
*
|
28 |
+
* @since 1.9.1
|
29 |
+
* @param string $data
|
30 |
+
* @return string
|
31 |
+
*/
|
32 |
+
function cv_sanitize_html_data( $data ) {
|
33 |
+
return strip_tags( $data );
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Sanitize content of HTML tag
|
38 |
+
*
|
39 |
+
* @since 1.9.1
|
40 |
+
* @param string $string
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
function cv_sanitize_tag_content( $string, $remove_breaks = false ) {
|
44 |
+
$string = preg_replace( '@<(script)[^>]*?>.*?</\\1>@si', '', $string );
|
45 |
+
|
46 |
+
if ( $remove_breaks )
|
47 |
+
$string = preg_replace( '/[\r\n\t ]+/', ' ', $string );
|
48 |
+
|
49 |
+
return trim( $string );
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* For WordPress 4.8.3 and after
|
54 |
+
*/
|
55 |
+
if ( !function_exists( 'cv_esc_sql' ) ) {
|
56 |
+
function cv_esc_sql( $data ) {
|
57 |
+
$result = esc_sql( $data );
|
58 |
+
|
59 |
+
global $wpdb;
|
60 |
+
if ( method_exists( $wpdb, 'remove_placeholder_escape' ) ) {
|
61 |
+
return $wpdb->remove_placeholder_escape( $result );
|
62 |
+
} else {
|
63 |
+
return $result;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
includes/functions.php
CHANGED
@@ -1,1475 +1,1538 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Contain main functions to work with plugin, post, custom fields...
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
if ( !function_exists( 'get_plugin_data' ) ) {
|
16 |
-
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
17 |
-
}
|
18 |
-
if ( !class_exists( 'PT_CV_Functions' ) ) {
|
19 |
-
|
20 |
-
/**
|
21 |
-
* @name PT_CV_Functions
|
22 |
-
* @todo Utility functions
|
23 |
-
*/
|
24 |
-
class PT_CV_Functions {
|
25 |
-
|
26 |
-
static $prev_random_string = '';
|
27 |
-
|
28 |
-
/**
|
29 |
-
* Compare current Wordpress version with a version
|
30 |
-
*
|
31 |
-
* @global string $wp_version
|
32 |
-
*
|
33 |
-
* @param string $version_to_compare
|
34 |
-
* @param string $operator
|
35 |
-
*
|
36 |
-
* @return boolean
|
37 |
-
*/
|
38 |
-
static function wp_version_compare( $version_to_compare, $operator = '>=' ) {
|
39 |
-
if ( empty( $version_to_compare ) ) {
|
40 |
-
return true;
|
41 |
-
}
|
42 |
-
|
43 |
-
global $wp_version;
|
44 |
-
|
45 |
-
// Check if using Wordpress version 3.7 or higher
|
46 |
-
return version_compare( $wp_version, $version_to_compare, $operator );
|
47 |
-
}
|
48 |
-
|
49 |
-
/**
|
50 |
-
* Get current language of site
|
51 |
-
*/
|
52 |
-
static function get_language() {
|
53 |
-
$language = '';
|
54 |
-
|
55 |
-
// WPML
|
56 |
-
global $sitepress;
|
57 |
-
if ( $sitepress && method_exists( $sitepress, 'get_current_language' ) ) {
|
58 |
-
$language = $sitepress->get_current_language();
|
59 |
-
}
|
60 |
-
|
61 |
-
/**
|
62 |
-
* qTranslate-X (and qTranslate, mqTranslate)
|
63 |
-
* @since 1.5.3
|
64 |
-
*/
|
65 |
-
global $q_config;
|
66 |
-
if ( $q_config && !empty( $q_config[ 'language' ] ) ) {
|
67 |
-
$language = $q_config[ 'language' ];
|
68 |
-
}
|
69 |
-
|
70 |
-
return $language;
|
71 |
-
}
|
72 |
-
|
73 |
-
/**
|
74 |
-
* Switch language
|
75 |
-
*
|
76 |
-
* @global type $sitepress
|
77 |
-
* @param string $language Current language
|
78 |
-
*/
|
79 |
-
static function switch_language( $language ) {
|
80 |
-
if ( !$language )
|
81 |
-
return;
|
82 |
-
|
83 |
-
// WPML
|
84 |
-
global $sitepress;
|
85 |
-
if ( $sitepress && $language ) {
|
86 |
-
$sitepress->switch_lang( $language, true );
|
87 |
-
}
|
88 |
-
|
89 |
-
/**
|
90 |
-
* qTranslate-X (and qTranslate, mqTranslate)
|
91 |
-
* @since 1.5.3
|
92 |
-
*/
|
93 |
-
global $q_config;
|
94 |
-
if ( $q_config ) {
|
95 |
-
$q_config[ 'language' ] = $language;
|
96 |
-
}
|
97 |
-
}
|
98 |
-
|
99 |
-
/**
|
100 |
-
* Get plugin info
|
101 |
-
*
|
102 |
-
* @param string $file Absolute path to the plugin file
|
103 |
-
* @param string $data Field of plugin data want to get
|
104 |
-
*
|
105 |
-
* @return array | null
|
106 |
-
*/
|
107 |
-
static function plugin_info( $file, $data = '' ) {
|
108 |
-
$plugin_data = get_plugin_data( $file );
|
109 |
-
|
110 |
-
return isset( $plugin_data[ $data ] ) ? $plugin_data[ $data ] : NULL;
|
111 |
-
}
|
112 |
-
|
113 |
-
/**
|
114 |
-
* Add sub menu page
|
115 |
-
*
|
116 |
-
* @param string $parent_slug Slug of parent menu
|
117 |
-
* @param string $page_title Title of page
|
118 |
-
* @param string $menu_title Title of menu
|
119 |
-
* @param string $user_role Required role to see this menu
|
120 |
-
* @param string $sub_page Slug of sub menu
|
121 |
-
* @param string $class Class name which contains function to output content of page created by this menu
|
122 |
-
*/
|
123 |
-
static function menu_add_sub( $parent_slug, $page_title, $menu_title, $user_role, $sub_page, $class ) {
|
124 |
-
return add_submenu_page(
|
125 |
-
$parent_slug, $page_title, $menu_title, $user_role, $parent_slug . '-' . $sub_page, array( $class, 'display_sub_page_' . $sub_page )
|
126 |
-
);
|
127 |
-
}
|
128 |
-
|
129 |
-
/**
|
130 |
-
* Get current post type in Admin
|
131 |
-
*
|
132 |
-
* @global type $post
|
133 |
-
* @global type $typenow
|
134 |
-
* @global type $current_screen
|
135 |
-
* @return type
|
136 |
-
*/
|
137 |
-
static function admin_current_post_type() {
|
138 |
-
global $post, $typenow, $current_screen;
|
139 |
-
|
140 |
-
//we have a post so we can just get the post type from that
|
141 |
-
if ( $post && $post->post_type ) {
|
142 |
-
return $post->post_type;
|
143 |
-
} //check the global $typenow - set in admin.php
|
144 |
-
elseif ( $typenow ) {
|
145 |
-
return $typenow;
|
146 |
-
} //check the global $current_screen object - set in sceen.php
|
147 |
-
elseif ( $current_screen && isset( $current_screen->post_type ) ) {
|
148 |
-
return $current_screen->post_type;
|
149 |
-
}
|
150 |
-
}
|
151 |
-
|
152 |
-
/**
|
153 |
-
* Include content of file
|
154 |
-
*
|
155 |
-
* @param string $file_path Absolute path of file
|
156 |
-
*
|
157 |
-
* @return NULL | string Content of file
|
158 |
-
*/
|
159 |
-
static function file_include_content( $file_path ) {
|
160 |
-
$content = NULL;
|
161 |
-
|
162 |
-
if ( file_exists( $file_path ) ) {
|
163 |
-
ob_start();
|
164 |
-
include_once $file_path;
|
165 |
-
$content = ob_get_clean();
|
166 |
-
}
|
167 |
-
|
168 |
-
return $content;
|
169 |
-
}
|
170 |
-
|
171 |
-
/**
|
172 |
-
* Get value of option Content Views Settings page
|
173 |
-
* @param string $option_name
|
174 |
-
* @param mixed $default
|
175 |
-
* @return mixed
|
176 |
-
*/
|
177 |
-
static function get_option_value( $option_name, $default = '' ) {
|
178 |
-
$options = get_option( PT_CV_OPTION_NAME );
|
179 |
-
return isset( $options[ $option_name ] ) ? $options[ $option_name ] : $default;
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Generate random string
|
184 |
-
*
|
185 |
-
* @param bool $prev_return Return previous generated string
|
186 |
-
*
|
187 |
-
* @return string
|
188 |
-
*/
|
189 |
-
static function string_random( $prev_return = false ) {
|
190 |
-
if ( $prev_return ) {
|
191 |
-
return PT_CV_Functions::$prev_random_string;
|
192 |
-
}
|
193 |
-
// Don't use uniqid(), it will cause bug when multiple elements have same ID
|
194 |
-
$str = '0123456789abcdefghijklmnopqrstuvwxyz';
|
195 |
-
$rand = substr( md5( mt_rand() ), 0, 7 ) . substr( str_shuffle( $str ), 0, 3 );
|
196 |
-
|
197 |
-
PT_CV_Functions::$prev_random_string = $rand;
|
198 |
-
|
199 |
-
return PT_CV_Functions::$prev_random_string;
|
200 |
-
}
|
201 |
-
|
202 |
-
/**
|
203 |
-
* Create array from string, use explode function
|
204 |
-
*
|
205 |
-
* @param string $string String to explode
|
206 |
-
* @param string $delimiter Delimiter to explode string
|
207 |
-
*
|
208 |
-
* @return array
|
209 |
-
*/
|
210 |
-
static function string_to_array( $string, $delimiter = ',' ) {
|
211 |
-
return is_array( $string ) ? $string : (array) explode( $delimiter, (string) str_replace( ' ', '', $string ) );
|
212 |
-
}
|
213 |
-
|
214 |
-
/**
|
215 |
-
* Slug to nice String
|
216 |
-
*
|
217 |
-
* @param string $slug Slug string
|
218 |
-
*
|
219 |
-
* @return string
|
220 |
-
*/
|
221 |
-
static function string_slug_to_text( $slug ) {
|
222 |
-
$slug = preg_replace( '/[_\-]+/', ' ', $slug );
|
223 |
-
|
224 |
-
return ucwords( $slug );
|
225 |
-
}
|
226 |
-
|
227 |
-
/**
|
228 |
-
* Trims text to a certain number of words.
|
229 |
-
* @since 1.4.3
|
230 |
-
* @param string $text
|
231 |
-
* @param int $num_words
|
232 |
-
* @return string
|
233 |
-
*/
|
234 |
-
static function cv_trim_words( $text, $num_words = 500 ) {
|
235 |
-
$text = apply_filters( PT_CV_PREFIX_ . 'before_generate_excerpt', $text );
|
236 |
-
|
237 |
-
if ( apply_filters( PT_CV_PREFIX_ . 'excerpt_strip_shortcode', true ) ) {
|
238 |
-
$text = self::cv_strip_shortcodes( $text );
|
239 |
-
} else {
|
240 |
-
$text = do_shortcode( $text );
|
241 |
-
}
|
242 |
-
|
243 |
-
// Prevent embedded URLs from showing
|
244 |
-
global $wp_embed;
|
245 |
-
if ( method_exists( $wp_embed, 'autoembed' ) ) {
|
246 |
-
$text = $wp_embed->autoembed( $text );
|
247 |
-
}
|
248 |
-
|
249 |
-
$result = self::cv_strip_tags( $text );
|
250 |
-
return self::trim_words( $result, $num_words );
|
251 |
-
}
|
252 |
-
|
253 |
-
/**
|
254 |
-
* Strip shortcodes in CV way, to replace WP strip_shortcodes()
|
255 |
-
* @after 1.8.3
|
256 |
-
* @param string $text
|
257 |
-
*/
|
258 |
-
static function cv_strip_shortcodes( $text, $strip_all = true ) {
|
259 |
-
if ( apply_filters( PT_CV_PREFIX_ . 'excerpt_strip_all_shortcodes', false ) ) {
|
260 |
-
return strip_shortcodes( $text );
|
261 |
-
}
|
262 |
-
|
263 |
-
global $shortcode_tags, $cv_shortcode_tags_backup;
|
264 |
-
if ( !isset( $cv_shortcode_tags_backup ) ) {
|
265 |
-
$tagnames = array_keys( $shortcode_tags );
|
266 |
-
$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
|
267 |
-
} else {
|
268 |
-
$tagregexp = $cv_shortcode_tags_backup;
|
269 |
-
}
|
270 |
-
|
271 |
-
if ( $strip_all ) {
|
272 |
-
// Strip some shortcodes
|
273 |
-
$temp_shortcode_tags = $shortcode_tags;
|
274 |
-
$shortcode_tags = apply_filters( PT_CV_PREFIX_ . 'shortcode_to_strip', array( 'caption' => '', 'embed' => '' ) );
|
275 |
-
$text = strip_shortcodes( $text );
|
276 |
-
$shortcode_tags = $temp_shortcode_tags;
|
277 |
-
}
|
278 |
-
|
279 |
-
// Keep other shortcodes' content
|
280 |
-
return preg_replace( '/'
|
281 |
-
. '\[' // Opening bracket
|
282 |
-
. '(\/?)'
|
283 |
-
. "($tagregexp)" // All shortcode tags
|
284 |
-
. '[^\]]*' // Shortcode parameters
|
285 |
-
. '\]' // Closing bracket
|
286 |
-
. '/', '', $text );
|
287 |
-
}
|
288 |
-
|
289 |
-
/**
|
290 |
-
* Trim words in CV way
|
291 |
-
* @return string
|
292 |
-
*/
|
293 |
-
static function trim_words( $text, $num_words ) {
|
294 |
-
$more = '';
|
295 |
-
$text = apply_filters( PT_CV_PREFIX_ . 'before_trim_words', $text );
|
296 |
-
|
297 |
-
/*
|
298 |
-
* translators: If your word count is based on single characters (e.g. East Asian characters),
|
299 |
-
* enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
|
300 |
-
* Do not translate into your own language.
|
301 |
-
*/
|
302 |
-
/**
|
303 |
-
* Do not use "[\r\n\t ]|\xC2\xA0| " as regex pattern, it can stop PHP process
|
304 |
-
* @since 1.9.5
|
305 |
-
*/
|
306 |
-
$text = str_replace( array( '\xC2\xA0', ' ' ), ' ', $text );
|
307 |
-
if ( strpos( _x( 'words', 'Word count type. Do not translate!' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
|
308 |
-
$text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
|
309 |
-
preg_match_all( '/./u', $text, $words_array );
|
310 |
-
$words_array = array_slice( $words_array[ 0 ], 0, $num_words + 1 );
|
311 |
-
$sep = '';
|
312 |
-
} else {
|
313 |
-
$words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
|
314 |
-
$sep = ' ';
|
315 |
-
}
|
316 |
-
|
317 |
-
if ( count( $words_array ) > $num_words ) {
|
318 |
-
array_pop( $words_array );
|
319 |
-
$text = implode( $sep, $words_array );
|
320 |
-
$text = $text . $more;
|
321 |
-
} else {
|
322 |
-
$text = implode( $sep, $words_array );
|
323 |
-
}
|
324 |
-
|
325 |
-
return apply_filters( PT_CV_PREFIX_ . 'after_trim_words', $text );
|
326 |
-
}
|
327 |
-
|
328 |
-
/**
|
329 |
-
* Custom strip tags, allow some tags
|
330 |
-
*
|
331 |
-
* @since 1.4.6
|
332 |
-
* @param string $string
|
333 |
-
* @return string
|
334 |
-
*/
|
335 |
-
static function cv_strip_tags( $string ) {
|
336 |
-
// Changes double line-breaks in the text into HTML paragraphs (<p>, <br>)
|
337 |
-
if ( apply_filters( PT_CV_PREFIX_ . 'wpautop', 0 ) ) {
|
338 |
-
$string = wpautop( $string );
|
339 |
-
}
|
340 |
-
|
341 |
-
// Remove entire tag content
|
342 |
-
$tags_to_rm = apply_filters( PT_CV_PREFIX_ . 'tag_to_remove', array( 'script', 'style' ) );
|
343 |
-
$string = preg_replace( array( '@<(' . implode( '|', $tags_to_rm ) . ')[^>]
|
344 |
-
|
345 |
-
// Strip HTML tags
|
346 |
-
if ( apply_filters( PT_CV_PREFIX_ . 'strip_tags', 1 ) ) {
|
347 |
-
$allowed_tags = '';
|
348 |
-
if ( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'field-excerpt-allow_html' ) ) {
|
349 |
-
$allowable_tags = (array) apply_filters( PT_CV_PREFIX_ . 'allowable_tags', array( '<a>', '<br>', '<strong>', '<em>', '<strike>', '<i>', '<ul>', '<ol>', '<li>' ) );
|
350 |
-
$allowed_tags = implode( '', $allowable_tags );
|
351 |
-
}
|
352 |
-
|
353 |
-
$string = strip_tags( $string, $allowed_tags );
|
354 |
-
}
|
355 |
-
|
356 |
-
return trim( $string );
|
357 |
-
}
|
358 |
-
|
359 |
-
/**
|
360 |
-
* Handle slug of non-latin languages
|
361 |
-
* used in CVP < 4.1
|
362 |
-
*
|
363 |
-
* @param string $slug
|
364 |
-
* @param boolean $sanitize
|
365 |
-
* @return string
|
366 |
-
*/
|
367 |
-
static function term_slug_sanitize( $slug, $sanitize = false ) {
|
368 |
-
if ( $sanitize && preg_match( '/%[0-9a-f][0-9a-f]/', $slug ) ) {
|
369 |
-
$slug = str_replace( '%', '@', $slug );
|
370 |
-
}
|
371 |
-
|
372 |
-
return $slug;
|
373 |
-
}
|
374 |
-
|
375 |
-
/**
|
376 |
-
* Get thumbnail dimensions
|
377 |
-
*
|
378 |
-
* @param array $fargs The settings of thumbnail
|
379 |
-
*
|
380 |
-
* @return array
|
381 |
-
*/
|
382 |
-
static function field_thumbnail_dimensions( $fargs ) {
|
383 |
-
$size = $fargs[ 'size' ];
|
384 |
-
|
385 |
-
return (array) explode( '×', str_replace( ' ', '', $size ) );
|
386 |
-
}
|
387 |
-
|
388 |
-
/**
|
389 |
-
* Get value of a setting from global settings array
|
390 |
-
*
|
391 |
-
* @param string $field The full name of setting to get value
|
392 |
-
* @param array $array_to_get Array to get values of wanted setting
|
393 |
-
* @param mixed|null $assign The value to assign if setting is not found
|
394 |
-
*/
|
395 |
-
static function setting_value( $field, $array_to_get = NULL, $assign = NULL ) {
|
396 |
-
if ( empty( $array_to_get ) ) {
|
397 |
-
$array_to_get = PT_CV_Functions::get_global_variable( 'view_settings' );
|
398 |
-
}
|
399 |
-
|
400 |
-
return isset( $array_to_get[ $field ] ) ? $array_to_get[ $field ] : $assign;
|
401 |
-
}
|
402 |
-
|
403 |
-
/**
|
404 |
-
* Get values of settings from global settings array
|
405 |
-
*
|
406 |
-
* @param array $fields Array of setting fields to get value
|
407 |
-
* @param array $array_to_save Array to save values of wanted setting fields
|
408 |
-
* @param array $array_to_get Array to get values of wanted setting fields
|
409 |
-
* @param string $prefix Prefix string to looking for fields in $array_to_get
|
410 |
-
*/
|
411 |
-
static function settings_values( $fields, &$array_to_save, $array_to_get, $prefix ) {
|
412 |
-
foreach ( $fields as $tsetting ) {
|
413 |
-
$array_to_save[ $tsetting ] = PT_CV_Functions::setting_value( $prefix . $tsetting, $array_to_get );
|
414 |
-
}
|
415 |
-
}
|
416 |
-
|
417 |
-
/**
|
418 |
-
* Get names of options for a setting group (setting name started by a prefix)
|
419 |
-
*
|
420 |
-
* @param string $prefix The prefix in name of settings
|
421 |
-
* @param array $options The options array (contain full paramaters of settings)
|
422 |
-
*/
|
423 |
-
static function settings_keys( $prefix, $options ) {
|
424 |
-
$result = array();
|
425 |
-
foreach ( $options as $option ) {
|
426 |
-
if ( isset( $option[ 'params' ] ) ) {
|
427 |
-
foreach ( $option[ 'params' ] as $params ) {
|
428 |
-
// If name of setting match with prefix string, got it name
|
429 |
-
if ( isset( $params[ 'name' ] ) && substr( $params[ 'name' ], 0, strlen( $prefix ) ) === $prefix ) {
|
430 |
-
$result[] = substr( $params[ 'name' ], strlen( $prefix ) );
|
431 |
-
}
|
432 |
-
}
|
433 |
-
}
|
434 |
-
}
|
435 |
-
|
436 |
-
return $result;
|
437 |
-
}
|
438 |
-
|
439 |
-
/**
|
440 |
-
* Get value of some setting options by prefix
|
441 |
-
*
|
442 |
-
* @param string $prefix The prefix in name of setting options
|
443 |
-
* @param bool $backend Get settings from Backend form
|
444 |
-
*/
|
445 |
-
static function settings_values_by_prefix( $prefix, $backend = FALSE ) {
|
446 |
-
$view_settings = PT_CV_Functions::get_global_variable( 'view_settings' );
|
447 |
-
|
448 |
-
if ( !$view_settings && $backend ) {
|
449 |
-
global $pt_cv_admin_settings;
|
450 |
-
$view_settings = $pt_cv_admin_settings;
|
451 |
-
}
|
452 |
-
|
453 |
-
$result = array();
|
454 |
-
$strlen = strlen( $prefix );
|
455 |
-
foreach ( (array) $view_settings as $name => $value ) {
|
456 |
-
// If name of setting match with prefix string, got it
|
457 |
-
if ( strpos( $name, $prefix ) === 0 ) {
|
458 |
-
$result[ substr( $name, $strlen ) ] = $value;
|
459 |
-
}
|
460 |
-
}
|
461 |
-
|
462 |
-
return $result;
|
463 |
-
}
|
464 |
-
|
465 |
-
/**
|
466 |
-
* Get terms list of a post
|
467 |
-
*
|
468 |
-
* @param object $post The post object
|
469 |
-
*
|
470 |
-
* @return string
|
471 |
-
*/
|
472 |
-
static function post_terms( $post ) {
|
473 |
-
global $pt_cv_glb;
|
474 |
-
|
475 |
-
$links = array();
|
476 |
-
$taxonomy_terms = array();
|
477 |
-
$post_terms = array();
|
478 |
-
$taxonomies = get_taxonomies( array( 'public' => true ), 'names' );
|
479 |
-
$taxonomies_to_show = apply_filters( PT_CV_PREFIX_ . 'taxonomies_to_show', $taxonomies );
|
480 |
-
$post_id = is_object( $post ) ? $post->ID : $post;
|
481 |
-
$terms = wp_get_object_terms( $post_id, $taxonomies );
|
482 |
-
|
483 |
-
foreach ( $terms as $term ) {
|
484 |
-
$term_html = '';
|
485 |
-
$term_slug = $term->slug;
|
486 |
-
$include_this = apply_filters( PT_CV_PREFIX_ . 'terms_include_this', true, $term ) && in_array( $term->taxonomy, $taxonomies_to_show );
|
487 |
-
if ( $include_this ) {
|
488 |
-
$href = esc_url( get_term_link( $term, $term->taxonomy ) );
|
489 |
-
$term_name = esc_attr( $term->name );
|
490 |
-
$class = esc_attr( PT_CV_PREFIX . 'tax-' . $term_slug );
|
491 |
-
$term_html = apply_filters( PT_CV_PREFIX_ . 'post_term_html', "<a href='$href' title='$term_name' class='$class'>{$term->name}</a>", $term );
|
492 |
-
$links[] = $term_html;
|
493 |
-
}
|
494 |
-
|
495 |
-
$term_info = apply_filters( PT_CV_PREFIX_ . 'post_term', array( 'key' => $term_slug, 'value' => $term->name ), $term );
|
496 |
-
$post_terms[ $term_info[ 'key' ] ] = $term_info[ 'value' ];
|
497 |
-
|
498 |
-
// Add this term to terms list of an item
|
499 |
-
if ( !isset( $taxonomy_terms[ $term->taxonomy ] ) ) {
|
500 |
-
$taxonomy_terms[ $term->taxonomy ] = array();
|
501 |
-
}
|
502 |
-
$taxonomy_terms[ $term->taxonomy ][] = $term_html;
|
503 |
-
}
|
504 |
-
|
505 |
-
if ( $post_terms ) {
|
506 |
-
if ( !isset( $pt_cv_glb[ 'item_terms' ] ) ) {
|
507 |
-
$pt_cv_glb[ 'item_terms' ] = array();
|
508 |
-
}
|
509 |
-
|
510 |
-
$pt_cv_glb[ 'item_terms' ][ $post_id ] = $post_terms;
|
511 |
-
}
|
512 |
-
|
513 |
-
return apply_filters( PT_CV_PREFIX_ . 'post_terms_output', implode( ', ', $links ), $links, $taxonomy_terms );
|
514 |
-
}
|
515 |
-
|
516 |
-
/**
|
517 |
-
* Insert/Update post
|
518 |
-
*
|
519 |
-
* @param string $arr Array of post data
|
520 |
-
*/
|
521 |
-
static function post_insert( $arr ) {
|
522 |
-
if ( !isset( $arr[ 'ID' ] ) ) {
|
523 |
-
return;
|
524 |
-
}
|
525 |
-
// Create post object
|
526 |
-
$my_post = array(
|
527 |
-
'ID' => (int) $arr[ 'ID' ],
|
528 |
-
'post_type' => PT_CV_POST_TYPE,
|
529 |
-
'post_content' => '',
|
530 |
-
'post_title' => !empty( $arr[ 'title' ] ) ? $arr[ 'title' ] : __( '(no title)', 'content-views-query-and-display-post-page' ),
|
531 |
-
'post_status' => 'publish',
|
532 |
-
);
|
533 |
-
|
534 |
-
// Insert the post into the database
|
535 |
-
return wp_insert_post( $my_post );
|
536 |
-
}
|
537 |
-
|
538 |
-
/**
|
539 |
-
* Get View id in post table, from "id" meta key value
|
540 |
-
*
|
541 |
-
* @param string $meta_id ID of custom field
|
542 |
-
*
|
543 |
-
* @return int Return Post ID of this view
|
544 |
-
*/
|
545 |
-
static function post_id_from_meta_id( $meta_id ) {
|
546 |
-
|
547 |
-
$post_id = 0;
|
548 |
-
if ( !$meta_id ) {
|
549 |
-
return $post_id;
|
550 |
-
}
|
551 |
-
|
552 |
-
// Query view which has view id = $meta_id
|
553 |
-
$pt_query = new WP_Query(
|
554 |
-
array(
|
555 |
-
'suppress_filters' => true,
|
556 |
-
'post_type' => PT_CV_POST_TYPE,
|
557 |
-
'post_status' => 'publish',
|
558 |
-
'meta_key' => PT_CV_META_ID,
|
559 |
-
'meta_value' => cv_esc_sql( $meta_id ),
|
560 |
-
'cv_get_view' => true,
|
561 |
-
)
|
562 |
-
);
|
563 |
-
|
564 |
-
if ( $pt_query->have_posts() ) :
|
565 |
-
while ( $pt_query->have_posts() ):
|
566 |
-
$pt_query->the_post();
|
567 |
-
$post_id = get_the_ID();
|
568 |
-
endwhile;
|
569 |
-
endif;
|
570 |
-
|
571 |
-
self::reset_query();
|
572 |
-
|
573 |
-
return $post_id;
|
574 |
-
}
|
575 |
-
|
576 |
-
/**
|
577 |
-
* Get first key of array
|
578 |
-
*
|
579 |
-
* @param array $args Array data
|
580 |
-
*
|
581 |
-
* @return string
|
582 |
-
*/
|
583 |
-
static function array_get_first_key( $args ) {
|
584 |
-
return current( array_keys( (array) $args ) );
|
585 |
-
}
|
586 |
-
|
587 |
-
/**
|
588 |
-
*
|
589 |
-
*
|
590 |
-
* @param string $
|
591 |
-
*
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
if (
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
$
|
653 |
-
|
654 |
-
$
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
$pt_cv_glb[ $pt_cv_id ][ '
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
$
|
667 |
-
$dargs =
|
668 |
-
$
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
$
|
681 |
-
$pt_cv_glb[ $pt_cv_id ][ '
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
//
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
$
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
$
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
$
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
);
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
)
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
932 |
-
|
933 |
-
|
934 |
-
|
935 |
-
|
936 |
-
|
937 |
-
|
938 |
-
|
939 |
-
|
940 |
-
|
941 |
-
|
942 |
-
|
943 |
-
|
944 |
-
|
945 |
-
|
946 |
-
|
947 |
-
|
948 |
-
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
958 |
-
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
971 |
-
|
972 |
-
|
973 |
-
|
974 |
-
|
975 |
-
|
976 |
-
|
977 |
-
|
978 |
-
|
979 |
-
|
980 |
-
|
981 |
-
|
982 |
-
|
983 |
-
|
984 |
-
|
985 |
-
|
986 |
-
|
987 |
-
|
988 |
-
|
989 |
-
|
990 |
-
|
991 |
-
|
992 |
-
|
993 |
-
|
994 |
-
|
995 |
-
|
996 |
-
|
997 |
-
|
998 |
-
|
999 |
-
|
1000 |
-
$
|
1001 |
-
|
1002 |
-
|
1003 |
-
|
1004 |
-
|
1005 |
-
|
1006 |
-
|
1007 |
-
|
1008 |
-
$
|
1009 |
-
|
1010 |
-
|
1011 |
-
|
1012 |
-
|
1013 |
-
|
1014 |
-
$
|
1015 |
-
|
1016 |
-
|
1017 |
-
|
1018 |
-
|
1019 |
-
|
1020 |
-
|
1021 |
-
|
1022 |
-
|
1023 |
-
|
1024 |
-
|
1025 |
-
|
1026 |
-
|
1027 |
-
|
1028 |
-
|
1029 |
-
|
1030 |
-
|
1031 |
-
|
1032 |
-
|
1033 |
-
|
1034 |
-
|
1035 |
-
|
1036 |
-
|
1037 |
-
|
1038 |
-
|
1039 |
-
|
1040 |
-
|
1041 |
-
|
1042 |
-
|
1043 |
-
|
1044 |
-
|
1045 |
-
|
1046 |
-
|
1047 |
-
|
1048 |
-
|
1049 |
-
|
1050 |
-
|
1051 |
-
|
1052 |
-
|
1053 |
-
|
1054 |
-
$
|
1055 |
-
|
1056 |
-
|
1057 |
-
|
1058 |
-
|
1059 |
-
|
1060 |
-
|
1061 |
-
|
1062 |
-
|
1063 |
-
|
1064 |
-
|
1065 |
-
|
1066 |
-
|
1067 |
-
|
1068 |
-
|
1069 |
-
|
1070 |
-
|
1071 |
-
|
1072 |
-
|
1073 |
-
|
1074 |
-
|
1075 |
-
|
1076 |
-
|
1077 |
-
|
1078 |
-
|
1079 |
-
|
1080 |
-
|
1081 |
-
|
1082 |
-
|
1083 |
-
|
1084 |
-
|
1085 |
-
|
1086 |
-
|
1087 |
-
|
1088 |
-
|
1089 |
-
|
1090 |
-
|
1091 |
-
|
1092 |
-
|
1093 |
-
|
1094 |
-
|
1095 |
-
|
1096 |
-
|
1097 |
-
|
1098 |
-
|
1099 |
-
|
1100 |
-
|
1101 |
-
|
1102 |
-
|
1103 |
-
|
1104 |
-
|
1105 |
-
|
1106 |
-
|
1107 |
-
|
1108 |
-
|
1109 |
-
|
1110 |
-
|
1111 |
-
|
1112 |
-
|
1113 |
-
|
1114 |
-
|
1115 |
-
|
1116 |
-
|
1117 |
-
|
1118 |
-
|
1119 |
-
|
1120 |
-
|
1121 |
-
|
1122 |
-
|
1123 |
-
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
1130 |
-
|
1131 |
-
|
1132 |
-
|
1133 |
-
|
1134 |
-
|
1135 |
-
|
1136 |
-
|
1137 |
-
|
1138 |
-
|
1139 |
-
|
1140 |
-
|
1141 |
-
|
1142 |
-
|
1143 |
-
|
1144 |
-
$
|
1145 |
-
|
1146 |
-
|
1147 |
-
|
1148 |
-
|
1149 |
-
|
1150 |
-
|
1151 |
-
$
|
1152 |
-
|
1153 |
-
|
1154 |
-
|
1155 |
-
|
1156 |
-
|
1157 |
-
|
1158 |
-
|
1159 |
-
|
1160 |
-
|
1161 |
-
|
1162 |
-
|
1163 |
-
|
1164 |
-
|
1165 |
-
|
1166 |
-
|
1167 |
-
|
1168 |
-
|
1169 |
-
|
1170 |
-
|
1171 |
-
|
1172 |
-
|
1173 |
-
|
1174 |
-
|
1175 |
-
|
1176 |
-
|
1177 |
-
|
1178 |
-
|
1179 |
-
|
1180 |
-
|
1181 |
-
|
1182 |
-
|
1183 |
-
|
1184 |
-
|
1185 |
-
|
1186 |
-
|
1187 |
-
$edit_link
|
1188 |
-
|
1189 |
-
|
1190 |
-
|
1191 |
-
|
1192 |
-
|
1193 |
-
|
1194 |
-
|
1195 |
-
|
1196 |
-
|
1197 |
-
|
1198 |
-
|
1199 |
-
|
1200 |
-
|
1201 |
-
|
1202 |
-
|
1203 |
-
|
1204 |
-
|
1205 |
-
|
1206 |
-
|
1207 |
-
|
1208 |
-
|
1209 |
-
|
1210 |
-
|
1211 |
-
|
1212 |
-
|
1213 |
-
|
1214 |
-
|
1215 |
-
|
1216 |
-
|
1217 |
-
|
1218 |
-
|
1219 |
-
|
1220 |
-
|
1221 |
-
|
1222 |
-
|
1223 |
-
|
1224 |
-
|
1225 |
-
|
1226 |
-
|
1227 |
-
|
1228 |
-
|
1229 |
-
|
1230 |
-
|
1231 |
-
|
1232 |
-
|
1233 |
-
|
1234 |
-
|
1235 |
-
|
1236 |
-
|
1237 |
-
|
1238 |
-
$
|
1239 |
-
|
1240 |
-
|
1241 |
-
|
1242 |
-
|
1243 |
-
|
1244 |
-
|
1245 |
-
|
1246 |
-
|
1247 |
-
|
1248 |
-
|
1249 |
-
|
1250 |
-
|
1251 |
-
|
1252 |
-
|
1253 |
-
|
1254 |
-
|
1255 |
-
|
1256 |
-
|
1257 |
-
|
1258 |
-
|
1259 |
-
|
1260 |
-
|
1261 |
-
|
1262 |
-
|
1263 |
-
|
1264 |
-
|
1265 |
-
|
1266 |
-
|
1267 |
-
|
1268 |
-
|
1269 |
-
|
1270 |
-
|
1271 |
-
|
1272 |
-
|
1273 |
-
|
1274 |
-
|
1275 |
-
|
1276 |
-
|
1277 |
-
|
1278 |
-
|
1279 |
-
$
|
1280 |
-
|
1281 |
-
|
1282 |
-
|
1283 |
-
|
1284 |
-
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
|
1289 |
-
)
|
1290 |
-
|
1291 |
-
|
1292 |
-
|
1293 |
-
|
1294 |
-
|
1295 |
-
|
1296 |
-
|
1297 |
-
|
1298 |
-
|
1299 |
-
|
1300 |
-
|
1301 |
-
|
1302 |
-
|
1303 |
-
|
1304 |
-
|
1305 |
-
|
1306 |
-
|
1307 |
-
|
1308 |
-
|
1309 |
-
|
1310 |
-
|
1311 |
-
|
1312 |
-
|
1313 |
-
|
1314 |
-
|
1315 |
-
|
1316 |
-
|
1317 |
-
|
1318 |
-
|
1319 |
-
|
1320 |
-
|
1321 |
-
|
1322 |
-
|
1323 |
-
|
1324 |
-
|
1325 |
-
|
1326 |
-
|
1327 |
-
|
1328 |
-
|
1329 |
-
|
1330 |
-
|
1331 |
-
|
1332 |
-
|
1333 |
-
|
1334 |
-
|
1335 |
-
|
1336 |
-
|
1337 |
-
|
1338 |
-
|
1339 |
-
|
1340 |
-
|
1341 |
-
|
1342 |
-
|
1343 |
-
|
1344 |
-
|
1345 |
-
}
|
1346 |
-
|
1347 |
-
|
1348 |
-
|
1349 |
-
|
1350 |
-
|
1351 |
-
|
1352 |
-
|
1353 |
-
|
1354 |
-
|
1355 |
-
|
1356 |
-
|
1357 |
-
|
1358 |
-
|
1359 |
-
|
1360 |
-
|
1361 |
-
|
1362 |
-
|
1363 |
-
|
1364 |
-
|
1365 |
-
|
1366 |
-
|
1367 |
-
|
1368 |
-
|
1369 |
-
|
1370 |
-
|
1371 |
-
|
1372 |
-
|
1373 |
-
|
1374 |
-
|
1375 |
-
|
1376 |
-
|
1377 |
-
|
1378 |
-
|
1379 |
-
|
1380 |
-
|
1381 |
-
|
1382 |
-
|
1383 |
-
|
1384 |
-
|
1385 |
-
|
1386 |
-
|
1387 |
-
|
1388 |
-
|
1389 |
-
|
1390 |
-
|
1391 |
-
|
1392 |
-
|
1393 |
-
*
|
1394 |
-
|
1395 |
-
|
1396 |
-
|
1397 |
-
|
1398 |
-
|
1399 |
-
|
1400 |
-
|
1401 |
-
|
1402 |
-
|
1403 |
-
|
1404 |
-
|
1405 |
-
|
1406 |
-
|
1407 |
-
|
1408 |
-
|
1409 |
-
|
1410 |
-
|
1411 |
-
|
1412 |
-
|
1413 |
-
|
1414 |
-
|
1415 |
-
|
1416 |
-
|
1417 |
-
|
1418 |
-
|
1419 |
-
|
1420 |
-
|
1421 |
-
|
1422 |
-
|
1423 |
-
|
1424 |
-
|
1425 |
-
static function
|
1426 |
-
|
1427 |
-
|
1428 |
-
|
1429 |
-
|
1430 |
-
|
1431 |
-
|
1432 |
-
|
1433 |
-
|
1434 |
-
|
1435 |
-
|
1436 |
-
|
1437 |
-
|
1438 |
-
|
1439 |
-
|
1440 |
-
|
1441 |
-
|
1442 |
-
|
1443 |
-
|
1444 |
-
|
1445 |
-
|
1446 |
-
|
1447 |
-
|
1448 |
-
|
1449 |
-
|
1450 |
-
|
1451 |
-
|
1452 |
-
|
1453 |
-
|
1454 |
-
|
1455 |
-
|
1456 |
-
*
|
1457 |
-
*
|
1458 |
-
* @
|
1459 |
-
|
1460 |
-
|
1461 |
-
|
1462 |
-
|
1463 |
-
|
1464 |
-
|
1465 |
-
|
1466 |
-
|
1467 |
-
|
1468 |
-
|
1469 |
-
|
1470 |
-
|
1471 |
-
|
1472 |
-
|
1473 |
-
|
1474 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1475 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Contain main functions to work with plugin, post, custom fields...
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
if ( !function_exists( 'get_plugin_data' ) ) {
|
16 |
+
require_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
17 |
+
}
|
18 |
+
if ( !class_exists( 'PT_CV_Functions' ) ) {
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @name PT_CV_Functions
|
22 |
+
* @todo Utility functions
|
23 |
+
*/
|
24 |
+
class PT_CV_Functions {
|
25 |
+
|
26 |
+
static $prev_random_string = '';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Compare current Wordpress version with a version
|
30 |
+
*
|
31 |
+
* @global string $wp_version
|
32 |
+
*
|
33 |
+
* @param string $version_to_compare
|
34 |
+
* @param string $operator
|
35 |
+
*
|
36 |
+
* @return boolean
|
37 |
+
*/
|
38 |
+
static function wp_version_compare( $version_to_compare, $operator = '>=' ) {
|
39 |
+
if ( empty( $version_to_compare ) ) {
|
40 |
+
return true;
|
41 |
+
}
|
42 |
+
|
43 |
+
global $wp_version;
|
44 |
+
|
45 |
+
// Check if using Wordpress version 3.7 or higher
|
46 |
+
return version_compare( $wp_version, $version_to_compare, $operator );
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Get current language of site
|
51 |
+
*/
|
52 |
+
static function get_language() {
|
53 |
+
$language = '';
|
54 |
+
|
55 |
+
// WPML
|
56 |
+
global $sitepress;
|
57 |
+
if ( $sitepress && method_exists( $sitepress, 'get_current_language' ) ) {
|
58 |
+
$language = $sitepress->get_current_language();
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* qTranslate-X (and qTranslate, mqTranslate)
|
63 |
+
* @since 1.5.3
|
64 |
+
*/
|
65 |
+
global $q_config;
|
66 |
+
if ( $q_config && !empty( $q_config[ 'language' ] ) ) {
|
67 |
+
$language = $q_config[ 'language' ];
|
68 |
+
}
|
69 |
+
|
70 |
+
return $language;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* Switch language
|
75 |
+
*
|
76 |
+
* @global type $sitepress
|
77 |
+
* @param string $language Current language
|
78 |
+
*/
|
79 |
+
static function switch_language( $language ) {
|
80 |
+
if ( !$language )
|
81 |
+
return;
|
82 |
+
|
83 |
+
// WPML
|
84 |
+
global $sitepress;
|
85 |
+
if ( $sitepress && $language ) {
|
86 |
+
$sitepress->switch_lang( $language, true );
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* qTranslate-X (and qTranslate, mqTranslate)
|
91 |
+
* @since 1.5.3
|
92 |
+
*/
|
93 |
+
global $q_config;
|
94 |
+
if ( $q_config ) {
|
95 |
+
$q_config[ 'language' ] = $language;
|
96 |
+
}
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Get plugin info
|
101 |
+
*
|
102 |
+
* @param string $file Absolute path to the plugin file
|
103 |
+
* @param string $data Field of plugin data want to get
|
104 |
+
*
|
105 |
+
* @return array | null
|
106 |
+
*/
|
107 |
+
static function plugin_info( $file, $data = '' ) {
|
108 |
+
$plugin_data = get_plugin_data( $file );
|
109 |
+
|
110 |
+
return isset( $plugin_data[ $data ] ) ? $plugin_data[ $data ] : NULL;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Add sub menu page
|
115 |
+
*
|
116 |
+
* @param string $parent_slug Slug of parent menu
|
117 |
+
* @param string $page_title Title of page
|
118 |
+
* @param string $menu_title Title of menu
|
119 |
+
* @param string $user_role Required role to see this menu
|
120 |
+
* @param string $sub_page Slug of sub menu
|
121 |
+
* @param string $class Class name which contains function to output content of page created by this menu
|
122 |
+
*/
|
123 |
+
static function menu_add_sub( $parent_slug, $page_title, $menu_title, $user_role, $sub_page, $class ) {
|
124 |
+
return add_submenu_page(
|
125 |
+
$parent_slug, $page_title, $menu_title, $user_role, $parent_slug . '-' . $sub_page, array( $class, 'display_sub_page_' . $sub_page )
|
126 |
+
);
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Get current post type in Admin
|
131 |
+
*
|
132 |
+
* @global type $post
|
133 |
+
* @global type $typenow
|
134 |
+
* @global type $current_screen
|
135 |
+
* @return type
|
136 |
+
*/
|
137 |
+
static function admin_current_post_type() {
|
138 |
+
global $post, $typenow, $current_screen;
|
139 |
+
|
140 |
+
//we have a post so we can just get the post type from that
|
141 |
+
if ( $post && $post->post_type ) {
|
142 |
+
return $post->post_type;
|
143 |
+
} //check the global $typenow - set in admin.php
|
144 |
+
elseif ( $typenow ) {
|
145 |
+
return $typenow;
|
146 |
+
} //check the global $current_screen object - set in sceen.php
|
147 |
+
elseif ( $current_screen && isset( $current_screen->post_type ) ) {
|
148 |
+
return $current_screen->post_type;
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
/**
|
153 |
+
* Include content of file
|
154 |
+
*
|
155 |
+
* @param string $file_path Absolute path of file
|
156 |
+
*
|
157 |
+
* @return NULL | string Content of file
|
158 |
+
*/
|
159 |
+
static function file_include_content( $file_path ) {
|
160 |
+
$content = NULL;
|
161 |
+
|
162 |
+
if ( file_exists( $file_path ) ) {
|
163 |
+
ob_start();
|
164 |
+
include_once $file_path;
|
165 |
+
$content = ob_get_clean();
|
166 |
+
}
|
167 |
+
|
168 |
+
return $content;
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Get value of option Content Views Settings page
|
173 |
+
* @param string $option_name
|
174 |
+
* @param mixed $default
|
175 |
+
* @return mixed
|
176 |
+
*/
|
177 |
+
static function get_option_value( $option_name, $default = '' ) {
|
178 |
+
$options = get_option( PT_CV_OPTION_NAME );
|
179 |
+
return isset( $options[ $option_name ] ) ? $options[ $option_name ] : $default;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Generate random string
|
184 |
+
*
|
185 |
+
* @param bool $prev_return Return previous generated string
|
186 |
+
*
|
187 |
+
* @return string
|
188 |
+
*/
|
189 |
+
static function string_random( $prev_return = false ) {
|
190 |
+
if ( $prev_return ) {
|
191 |
+
return PT_CV_Functions::$prev_random_string;
|
192 |
+
}
|
193 |
+
// Don't use uniqid(), it will cause bug when multiple elements have same ID
|
194 |
+
$str = '0123456789abcdefghijklmnopqrstuvwxyz';
|
195 |
+
$rand = substr( md5( mt_rand() ), 0, 7 ) . substr( str_shuffle( $str ), 0, 3 );
|
196 |
+
|
197 |
+
PT_CV_Functions::$prev_random_string = $rand;
|
198 |
+
|
199 |
+
return PT_CV_Functions::$prev_random_string;
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Create array from string, use explode function
|
204 |
+
*
|
205 |
+
* @param string $string String to explode
|
206 |
+
* @param string $delimiter Delimiter to explode string
|
207 |
+
*
|
208 |
+
* @return array
|
209 |
+
*/
|
210 |
+
static function string_to_array( $string, $delimiter = ',' ) {
|
211 |
+
return is_array( $string ) ? $string : (array) explode( $delimiter, (string) str_replace( ' ', '', $string ) );
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Slug to nice String
|
216 |
+
*
|
217 |
+
* @param string $slug Slug string
|
218 |
+
*
|
219 |
+
* @return string
|
220 |
+
*/
|
221 |
+
static function string_slug_to_text( $slug ) {
|
222 |
+
$slug = preg_replace( '/[_\-]+/', ' ', $slug );
|
223 |
+
|
224 |
+
return ucwords( $slug );
|
225 |
+
}
|
226 |
+
|
227 |
+
/**
|
228 |
+
* Trims text to a certain number of words.
|
229 |
+
* @since 1.4.3
|
230 |
+
* @param string $text
|
231 |
+
* @param int $num_words
|
232 |
+
* @return string
|
233 |
+
*/
|
234 |
+
static function cv_trim_words( $text, $num_words = 500 ) {
|
235 |
+
$text = apply_filters( PT_CV_PREFIX_ . 'before_generate_excerpt', $text );
|
236 |
+
|
237 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'excerpt_strip_shortcode', true ) ) {
|
238 |
+
$text = self::cv_strip_shortcodes( $text );
|
239 |
+
} else {
|
240 |
+
$text = do_shortcode( $text );
|
241 |
+
}
|
242 |
+
|
243 |
+
// Prevent embedded URLs from showing
|
244 |
+
global $wp_embed;
|
245 |
+
if ( method_exists( $wp_embed, 'autoembed' ) ) {
|
246 |
+
$text = $wp_embed->autoembed( $text );
|
247 |
+
}
|
248 |
+
|
249 |
+
$result = self::cv_strip_tags( $text );
|
250 |
+
return self::trim_words( $result, $num_words );
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Strip shortcodes in CV way, to replace WP strip_shortcodes()
|
255 |
+
* @after 1.8.3
|
256 |
+
* @param string $text
|
257 |
+
*/
|
258 |
+
static function cv_strip_shortcodes( $text, $strip_all = true ) {
|
259 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'excerpt_strip_all_shortcodes', false ) ) {
|
260 |
+
return strip_shortcodes( $text );
|
261 |
+
}
|
262 |
+
|
263 |
+
global $shortcode_tags, $cv_shortcode_tags_backup;
|
264 |
+
if ( !isset( $cv_shortcode_tags_backup ) ) {
|
265 |
+
$tagnames = array_keys( $shortcode_tags );
|
266 |
+
$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
|
267 |
+
} else {
|
268 |
+
$tagregexp = $cv_shortcode_tags_backup;
|
269 |
+
}
|
270 |
+
|
271 |
+
if ( $strip_all ) {
|
272 |
+
// Strip some shortcodes
|
273 |
+
$temp_shortcode_tags = $shortcode_tags;
|
274 |
+
$shortcode_tags = apply_filters( PT_CV_PREFIX_ . 'shortcode_to_strip', array( 'caption' => '', 'embed' => '' ) );
|
275 |
+
$text = strip_shortcodes( $text );
|
276 |
+
$shortcode_tags = $temp_shortcode_tags;
|
277 |
+
}
|
278 |
+
|
279 |
+
// Keep other shortcodes' content
|
280 |
+
return preg_replace( '/'
|
281 |
+
. '\[' // Opening bracket
|
282 |
+
. '(\/?)'
|
283 |
+
. "($tagregexp)" // All shortcode tags
|
284 |
+
. '[^\]]*' // Shortcode parameters
|
285 |
+
. '\]' // Closing bracket
|
286 |
+
. '/', '', $text );
|
287 |
+
}
|
288 |
+
|
289 |
+
/**
|
290 |
+
* Trim words in CV way
|
291 |
+
* @return string
|
292 |
+
*/
|
293 |
+
static function trim_words( $text, $num_words ) {
|
294 |
+
$more = '';
|
295 |
+
$text = apply_filters( PT_CV_PREFIX_ . 'before_trim_words', $text );
|
296 |
+
|
297 |
+
/*
|
298 |
+
* translators: If your word count is based on single characters (e.g. East Asian characters),
|
299 |
+
* enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'.
|
300 |
+
* Do not translate into your own language.
|
301 |
+
*/
|
302 |
+
/**
|
303 |
+
* Do not use "[\r\n\t ]|\xC2\xA0| " as regex pattern, it can stop PHP process
|
304 |
+
* @since 1.9.5
|
305 |
+
*/
|
306 |
+
$text = str_replace( array( '\xC2\xA0', ' ' ), ' ', $text );
|
307 |
+
if ( strpos( _x( 'words', 'Word count type. Do not translate!' ), 'characters' ) === 0 && preg_match( '/^utf\-?8$/i', get_option( 'blog_charset' ) ) ) {
|
308 |
+
$text = trim( preg_replace( "/[\n\r\t ]+/", ' ', $text ), ' ' );
|
309 |
+
preg_match_all( '/./u', $text, $words_array );
|
310 |
+
$words_array = array_slice( $words_array[ 0 ], 0, $num_words + 1 );
|
311 |
+
$sep = '';
|
312 |
+
} else {
|
313 |
+
$words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
|
314 |
+
$sep = ' ';
|
315 |
+
}
|
316 |
+
|
317 |
+
if ( count( $words_array ) > $num_words ) {
|
318 |
+
array_pop( $words_array );
|
319 |
+
$text = implode( $sep, $words_array );
|
320 |
+
$text = $text . $more;
|
321 |
+
} else {
|
322 |
+
$text = implode( $sep, $words_array );
|
323 |
+
}
|
324 |
+
|
325 |
+
return apply_filters( PT_CV_PREFIX_ . 'after_trim_words', $text );
|
326 |
+
}
|
327 |
+
|
328 |
+
/**
|
329 |
+
* Custom strip tags, allow some tags
|
330 |
+
*
|
331 |
+
* @since 1.4.6
|
332 |
+
* @param string $string
|
333 |
+
* @return string
|
334 |
+
*/
|
335 |
+
static function cv_strip_tags( $string ) {
|
336 |
+
// Changes double line-breaks in the text into HTML paragraphs (<p>, <br>)
|
337 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'wpautop', 0 ) ) {
|
338 |
+
$string = wpautop( $string );
|
339 |
+
}
|
340 |
+
|
341 |
+
// Remove entire tag content
|
342 |
+
$tags_to_rm = apply_filters( PT_CV_PREFIX_ . 'tag_to_remove', array( 'script', 'style' ) );
|
343 |
+
$string = preg_replace( array( '@<(' . implode( '|', $tags_to_rm ) . ')[^>]*(?>.*?</\\1>|/?>)@si' ), '', $string );
|
344 |
+
|
345 |
+
// Strip HTML tags
|
346 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'strip_tags', 1 ) ) {
|
347 |
+
$allowed_tags = '';
|
348 |
+
if ( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'field-excerpt-allow_html' ) ) {
|
349 |
+
$allowable_tags = (array) apply_filters( PT_CV_PREFIX_ . 'allowable_tags', array( '<a>', '<br>', '<strong>', '<em>', '<strike>', '<i>', '<ul>', '<ol>', '<li>' ) );
|
350 |
+
$allowed_tags = implode( '', $allowable_tags );
|
351 |
+
}
|
352 |
+
|
353 |
+
$string = strip_tags( $string, $allowed_tags );
|
354 |
+
}
|
355 |
+
|
356 |
+
return trim( $string );
|
357 |
+
}
|
358 |
+
|
359 |
+
/**
|
360 |
+
* Handle slug of non-latin languages
|
361 |
+
* used in CVP < 4.1
|
362 |
+
*
|
363 |
+
* @param string $slug
|
364 |
+
* @param boolean $sanitize
|
365 |
+
* @return string
|
366 |
+
*/
|
367 |
+
static function term_slug_sanitize( $slug, $sanitize = false ) {
|
368 |
+
if ( $sanitize && preg_match( '/%[0-9a-f][0-9a-f]/', $slug ) ) {
|
369 |
+
$slug = str_replace( '%', '@', $slug );
|
370 |
+
}
|
371 |
+
|
372 |
+
return $slug;
|
373 |
+
}
|
374 |
+
|
375 |
+
/**
|
376 |
+
* Get thumbnail dimensions
|
377 |
+
*
|
378 |
+
* @param array $fargs The settings of thumbnail
|
379 |
+
*
|
380 |
+
* @return array
|
381 |
+
*/
|
382 |
+
static function field_thumbnail_dimensions( $fargs ) {
|
383 |
+
$size = $fargs[ 'size' ];
|
384 |
+
|
385 |
+
return (array) explode( '×', str_replace( ' ', '', $size ) );
|
386 |
+
}
|
387 |
+
|
388 |
+
/**
|
389 |
+
* Get value of a setting from global settings array
|
390 |
+
*
|
391 |
+
* @param string $field The full name of setting to get value
|
392 |
+
* @param array $array_to_get Array to get values of wanted setting
|
393 |
+
* @param mixed|null $assign The value to assign if setting is not found
|
394 |
+
*/
|
395 |
+
static function setting_value( $field, $array_to_get = NULL, $assign = NULL ) {
|
396 |
+
if ( empty( $array_to_get ) ) {
|
397 |
+
$array_to_get = PT_CV_Functions::get_global_variable( 'view_settings' );
|
398 |
+
}
|
399 |
+
|
400 |
+
return isset( $array_to_get[ $field ] ) ? $array_to_get[ $field ] : $assign;
|
401 |
+
}
|
402 |
+
|
403 |
+
/**
|
404 |
+
* Get values of settings from global settings array
|
405 |
+
*
|
406 |
+
* @param array $fields Array of setting fields to get value
|
407 |
+
* @param array $array_to_save Array to save values of wanted setting fields
|
408 |
+
* @param array $array_to_get Array to get values of wanted setting fields
|
409 |
+
* @param string $prefix Prefix string to looking for fields in $array_to_get
|
410 |
+
*/
|
411 |
+
static function settings_values( $fields, &$array_to_save, $array_to_get, $prefix ) {
|
412 |
+
foreach ( $fields as $tsetting ) {
|
413 |
+
$array_to_save[ $tsetting ] = PT_CV_Functions::setting_value( $prefix . $tsetting, $array_to_get );
|
414 |
+
}
|
415 |
+
}
|
416 |
+
|
417 |
+
/**
|
418 |
+
* Get names of options for a setting group (setting name started by a prefix)
|
419 |
+
*
|
420 |
+
* @param string $prefix The prefix in name of settings
|
421 |
+
* @param array $options The options array (contain full paramaters of settings)
|
422 |
+
*/
|
423 |
+
static function settings_keys( $prefix, $options ) {
|
424 |
+
$result = array();
|
425 |
+
foreach ( $options as $option ) {
|
426 |
+
if ( isset( $option[ 'params' ] ) ) {
|
427 |
+
foreach ( $option[ 'params' ] as $params ) {
|
428 |
+
// If name of setting match with prefix string, got it name
|
429 |
+
if ( isset( $params[ 'name' ] ) && substr( $params[ 'name' ], 0, strlen( $prefix ) ) === $prefix ) {
|
430 |
+
$result[] = substr( $params[ 'name' ], strlen( $prefix ) );
|
431 |
+
}
|
432 |
+
}
|
433 |
+
}
|
434 |
+
}
|
435 |
+
|
436 |
+
return $result;
|
437 |
+
}
|
438 |
+
|
439 |
+
/**
|
440 |
+
* Get value of some setting options by prefix
|
441 |
+
*
|
442 |
+
* @param string $prefix The prefix in name of setting options
|
443 |
+
* @param bool $backend Get settings from Backend form
|
444 |
+
*/
|
445 |
+
static function settings_values_by_prefix( $prefix, $backend = FALSE ) {
|
446 |
+
$view_settings = PT_CV_Functions::get_global_variable( 'view_settings' );
|
447 |
+
|
448 |
+
if ( !$view_settings && $backend ) {
|
449 |
+
global $pt_cv_admin_settings;
|
450 |
+
$view_settings = $pt_cv_admin_settings;
|
451 |
+
}
|
452 |
+
|
453 |
+
$result = array();
|
454 |
+
$strlen = strlen( $prefix );
|
455 |
+
foreach ( (array) $view_settings as $name => $value ) {
|
456 |
+
// If name of setting match with prefix string, got it
|
457 |
+
if ( strpos( $name, $prefix ) === 0 ) {
|
458 |
+
$result[ substr( $name, $strlen ) ] = $value;
|
459 |
+
}
|
460 |
+
}
|
461 |
+
|
462 |
+
return $result;
|
463 |
+
}
|
464 |
+
|
465 |
+
/**
|
466 |
+
* Get terms list of a post
|
467 |
+
*
|
468 |
+
* @param object $post The post object
|
469 |
+
*
|
470 |
+
* @return string
|
471 |
+
*/
|
472 |
+
static function post_terms( $post ) {
|
473 |
+
global $pt_cv_glb;
|
474 |
+
|
475 |
+
$links = array();
|
476 |
+
$taxonomy_terms = array();
|
477 |
+
$post_terms = array();
|
478 |
+
$taxonomies = get_taxonomies( array( 'public' => true ), 'names' );
|
479 |
+
$taxonomies_to_show = apply_filters( PT_CV_PREFIX_ . 'taxonomies_to_show', $taxonomies );
|
480 |
+
$post_id = is_object( $post ) ? $post->ID : $post;
|
481 |
+
$terms = wp_get_object_terms( $post_id, $taxonomies );
|
482 |
+
|
483 |
+
foreach ( $terms as $term ) {
|
484 |
+
$term_html = '';
|
485 |
+
$term_slug = $term->slug;
|
486 |
+
$include_this = apply_filters( PT_CV_PREFIX_ . 'terms_include_this', true, $term ) && in_array( $term->taxonomy, $taxonomies_to_show );
|
487 |
+
if ( $include_this ) {
|
488 |
+
$href = esc_url( get_term_link( $term, $term->taxonomy ) );
|
489 |
+
$term_name = esc_attr( $term->name );
|
490 |
+
$class = esc_attr( PT_CV_PREFIX . 'tax-' . $term_slug );
|
491 |
+
$term_html = apply_filters( PT_CV_PREFIX_ . 'post_term_html', "<a href='$href' title='$term_name' class='$class'>{$term->name}</a>", $term );
|
492 |
+
$links[] = $term_html;
|
493 |
+
}
|
494 |
+
|
495 |
+
$term_info = apply_filters( PT_CV_PREFIX_ . 'post_term', array( 'key' => $term_slug, 'value' => $term->name ), $term );
|
496 |
+
$post_terms[ $term_info[ 'key' ] ] = $term_info[ 'value' ];
|
497 |
+
|
498 |
+
// Add this term to terms list of an item
|
499 |
+
if ( !isset( $taxonomy_terms[ $term->taxonomy ] ) ) {
|
500 |
+
$taxonomy_terms[ $term->taxonomy ] = array();
|
501 |
+
}
|
502 |
+
$taxonomy_terms[ $term->taxonomy ][] = $term_html;
|
503 |
+
}
|
504 |
+
|
505 |
+
if ( $post_terms ) {
|
506 |
+
if ( !isset( $pt_cv_glb[ 'item_terms' ] ) ) {
|
507 |
+
$pt_cv_glb[ 'item_terms' ] = array();
|
508 |
+
}
|
509 |
+
|
510 |
+
$pt_cv_glb[ 'item_terms' ][ $post_id ] = $post_terms;
|
511 |
+
}
|
512 |
+
|
513 |
+
return apply_filters( PT_CV_PREFIX_ . 'post_terms_output', implode( ', ', $links ), $links, $taxonomy_terms );
|
514 |
+
}
|
515 |
+
|
516 |
+
/**
|
517 |
+
* Insert/Update post
|
518 |
+
*
|
519 |
+
* @param string $arr Array of post data
|
520 |
+
*/
|
521 |
+
static function post_insert( $arr ) {
|
522 |
+
if ( !isset( $arr[ 'ID' ] ) ) {
|
523 |
+
return;
|
524 |
+
}
|
525 |
+
// Create post object
|
526 |
+
$my_post = array(
|
527 |
+
'ID' => (int) $arr[ 'ID' ],
|
528 |
+
'post_type' => PT_CV_POST_TYPE,
|
529 |
+
'post_content' => '',
|
530 |
+
'post_title' => !empty( $arr[ 'title' ] ) ? $arr[ 'title' ] : __( '(no title)', 'content-views-query-and-display-post-page' ),
|
531 |
+
'post_status' => 'publish',
|
532 |
+
);
|
533 |
+
|
534 |
+
// Insert the post into the database
|
535 |
+
return wp_insert_post( $my_post );
|
536 |
+
}
|
537 |
+
|
538 |
+
/**
|
539 |
+
* Get View id in post table, from "id" meta key value
|
540 |
+
*
|
541 |
+
* @param string $meta_id ID of custom field
|
542 |
+
*
|
543 |
+
* @return int Return Post ID of this view
|
544 |
+
*/
|
545 |
+
static function post_id_from_meta_id( $meta_id ) {
|
546 |
+
|
547 |
+
$post_id = 0;
|
548 |
+
if ( !$meta_id ) {
|
549 |
+
return $post_id;
|
550 |
+
}
|
551 |
+
|
552 |
+
// Query view which has view id = $meta_id
|
553 |
+
$pt_query = new WP_Query(
|
554 |
+
array(
|
555 |
+
'suppress_filters' => true,
|
556 |
+
'post_type' => PT_CV_POST_TYPE,
|
557 |
+
'post_status' => 'publish',
|
558 |
+
'meta_key' => PT_CV_META_ID,
|
559 |
+
'meta_value' => cv_esc_sql( $meta_id ),
|
560 |
+
'cv_get_view' => true,
|
561 |
+
)
|
562 |
+
);
|
563 |
+
|
564 |
+
if ( $pt_query->have_posts() ) :
|
565 |
+
while ( $pt_query->have_posts() ):
|
566 |
+
$pt_query->the_post();
|
567 |
+
$post_id = get_the_ID();
|
568 |
+
endwhile;
|
569 |
+
endif;
|
570 |
+
|
571 |
+
self::reset_query();
|
572 |
+
|
573 |
+
return $post_id;
|
574 |
+
}
|
575 |
+
|
576 |
+
/**
|
577 |
+
* Get first key of array
|
578 |
+
*
|
579 |
+
* @param array $args Array data
|
580 |
+
*
|
581 |
+
* @return string
|
582 |
+
*/
|
583 |
+
static function array_get_first_key( $args ) {
|
584 |
+
return current( array_keys( (array) $args ) );
|
585 |
+
}
|
586 |
+
|
587 |
+
/**
|
588 |
+
* Get view settings from view ID
|
589 |
+
*
|
590 |
+
* @param string $meta_id ID of custom field
|
591 |
+
*
|
592 |
+
* @return array
|
593 |
+
*/
|
594 |
+
static function view_get_settings( $meta_id, &$post_id = null ) {
|
595 |
+
if ( !$meta_id ) {
|
596 |
+
return;
|
597 |
+
}
|
598 |
+
|
599 |
+
do_action( PT_CV_PREFIX_ . 'get_view_settings' );
|
600 |
+
|
601 |
+
$view_settings = array();
|
602 |
+
|
603 |
+
$post_id = PT_CV_Functions::post_id_from_meta_id( $meta_id );
|
604 |
+
if ( $post_id ) {
|
605 |
+
$view_settings = get_post_meta( $post_id, PT_CV_META_SETTINGS, true );
|
606 |
+
}
|
607 |
+
|
608 |
+
return apply_filters( PT_CV_PREFIX_ . 'view_settings', $view_settings );
|
609 |
+
}
|
610 |
+
|
611 |
+
/**
|
612 |
+
* Process view settings, return View output
|
613 |
+
*
|
614 |
+
* @param string $view_id View id
|
615 |
+
* @param array $settings Settings array
|
616 |
+
* @param array $pargs Pagination settings
|
617 |
+
* @param array $sc_params Shortcode parameters
|
618 |
+
*
|
619 |
+
* @return string View output
|
620 |
+
*/
|
621 |
+
static function view_process_settings( $view_id, $settings, $pargs = array(), $sc_params = NULL ) {
|
622 |
+
if ( !defined( 'PT_CV_DOING_PREVIEW' ) && empty( $settings[ PT_CV_PREFIX . 'view-type' ] ) ) {
|
623 |
+
return sprintf( __( 'Error: View %s may not exist', 'content-views-query-and-display-post-page' ), "<strong>$view_id</strong>" );
|
624 |
+
}
|
625 |
+
|
626 |
+
do_action( PT_CV_PREFIX_ . 'view_process_start' );
|
627 |
+
|
628 |
+
global $pt_cv_glb, $pt_cv_id;
|
629 |
+
|
630 |
+
if ( !isset( $pt_cv_glb ) ) {
|
631 |
+
$pt_cv_glb = array();
|
632 |
+
}
|
633 |
+
|
634 |
+
$pt_cv_id = $view_id;
|
635 |
+
$pt_cv_glb[ $pt_cv_id ] = array();
|
636 |
+
|
637 |
+
$view_settings = array_map( 'cv_esc_sql', $settings );
|
638 |
+
$pt_cv_glb[ $pt_cv_id ][ 'view_settings' ] = $view_settings;
|
639 |
+
|
640 |
+
$content_type = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'content-type', $view_settings );
|
641 |
+
$view_type = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'view-type', $view_settings );
|
642 |
+
$view_type = apply_filters( PT_CV_PREFIX_ . 'view_layout', $view_type, $view_id, $view_settings, $sc_params );
|
643 |
+
$current_page = self::get_current_page( $pargs );
|
644 |
+
|
645 |
+
$pt_cv_glb[ $pt_cv_id ][ 'content_type' ] = $content_type;
|
646 |
+
$pt_cv_glb[ $pt_cv_id ][ 'view_type' ] = $view_type;
|
647 |
+
$pt_cv_glb[ $pt_cv_id ][ 'current_page' ] = $current_page;
|
648 |
+
|
649 |
+
# Important: store current View ID, prevent it from being modified when process posts which contains View shortcode
|
650 |
+
$cv_live_id = $view_id;
|
651 |
+
|
652 |
+
$rebuild = isset( $view_settings[ PT_CV_PREFIX . 'rebuild' ] ) ? $view_settings[ PT_CV_PREFIX . 'rebuild' ] : false;
|
653 |
+
$dargs = PT_CV_Functions::view_display_settings( $view_type, $dargs );
|
654 |
+
$args = $rebuild ? $rebuild : PT_CV_Functions::view_filter_settings( $content_type, $view_settings );
|
655 |
+
|
656 |
+
if ( $sc_params ) {
|
657 |
+
$view_settings[ PT_CV_PREFIX . 'shortcode_atts' ] = $sc_params;
|
658 |
+
} elseif ( isset( $view_settings[ PT_CV_PREFIX . 'shortcode_atts' ] ) ) {
|
659 |
+
$sc_params = $view_settings[ PT_CV_PREFIX . 'shortcode_atts' ];
|
660 |
+
}
|
661 |
+
$pt_cv_glb[ $pt_cv_id ][ 'shortcode_params' ] = $sc_params;
|
662 |
+
|
663 |
+
PT_CV_Functions::view_get_pagination_settings( $dargs, $args, $pargs );
|
664 |
+
|
665 |
+
$dargs = apply_filters( PT_CV_PREFIX_ . 'all_display_settings', $dargs );
|
666 |
+
$args = apply_filters( PT_CV_PREFIX_ . 'query_parameters', $args );
|
667 |
+
$pt_cv_glb[ $pt_cv_id ][ 'dargs' ] = $dargs;
|
668 |
+
$pt_cv_glb[ $pt_cv_id ][ 'args' ] = $args;
|
669 |
+
do_action( PT_CV_PREFIX_ . 'add_global_variables' );
|
670 |
+
|
671 |
+
// Validate settings, if some required parameters are missing, show error and exit
|
672 |
+
$error = !$rebuild ? apply_filters( PT_CV_PREFIX_ . 'validate_settings', array(), $args ) : false;
|
673 |
+
if ( $error ) {
|
674 |
+
return ( implode( '</p><p>', $error ) );
|
675 |
+
}
|
676 |
+
|
677 |
+
$content_items = $pt_query = $empty_result = null;
|
678 |
+
|
679 |
+
// What kind of content to display
|
680 |
+
$pt_cv_glb[ $pt_cv_id ][ 'display_what' ] = apply_filters( PT_CV_PREFIX_ . 'display_what', 'post' );
|
681 |
+
if ( $pt_cv_glb[ $pt_cv_id ][ 'display_what' ] === 'post' ) {
|
682 |
+
extract( self::get_posts_list( $args, $view_type ) );
|
683 |
+
} else {
|
684 |
+
$content_items = apply_filters( PT_CV_PREFIX_ . 'view_content', array() );
|
685 |
+
}
|
686 |
+
|
687 |
+
$pt_cv_id = $cv_live_id;
|
688 |
+
|
689 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'hide_empty_result', false ) && $empty_result ) {
|
690 |
+
$html = '';
|
691 |
+
} else {
|
692 |
+
// Wrap items
|
693 |
+
$html = PT_CV_Html::content_items_wrap( $content_items, $current_page, $args[ 'posts_per_page' ], $pt_cv_id );
|
694 |
+
|
695 |
+
// Show pagination
|
696 |
+
if ( $pt_query && apply_filters( PT_CV_PREFIX_ . 'show_pagination', PT_CV_Functions::nonajax_or_firstpage( $dargs, $current_page ) ) ) {
|
697 |
+
// Total post founds
|
698 |
+
$found_posts = (int) apply_filters( PT_CV_PREFIX_ . 'found_posts', $pt_query->found_posts );
|
699 |
+
|
700 |
+
// Total number of items
|
701 |
+
$total_items = ( $args[ 'limit' ] > 0 && $found_posts > $args[ 'limit' ] ) ? $args[ 'limit' ] : $found_posts;
|
702 |
+
$total_items = apply_filters( PT_CV_PREFIX_ . 'total_posts', $total_items );
|
703 |
+
|
704 |
+
// Total number of pages
|
705 |
+
$items_per_page = (int) PT_CV_Functions::setting_value( PT_CV_PREFIX . 'pagination-items-per-page', $view_settings );
|
706 |
+
$max_num_pages = ceil( $total_items / $items_per_page );
|
707 |
+
$max_num_pages = (int) $max_num_pages;
|
708 |
+
|
709 |
+
$pt_cv_glb[ $pt_cv_id ][ 'pagination_info' ] = compact( "total_items", "max_num_pages", "current_page" );
|
710 |
+
|
711 |
+
// Output pagination
|
712 |
+
if ( $max_num_pages > 1 ) {
|
713 |
+
if ( $dargs[ 'pagination-settings' ][ 'type' ] === 'ajax' ) {
|
714 |
+
cv_comp_pagination_settings( 'set', $view_settings );
|
715 |
+
}
|
716 |
+
|
717 |
+
$html .= "\n" . PT_CV_Html::pagination_output( $max_num_pages, $current_page, $pt_cv_id );
|
718 |
+
} else {
|
719 |
+
if ( $max_num_pages == 1 && defined( 'PT_CV_DOING_PREVIEW' ) ) {
|
720 |
+
$reason = sprintf( '%s %s', ($total_items == $found_posts) ? __( 'the number of results', 'content-views-query-and-display-post-page' ) : __( 'the <b>Limit</b> value', 'content-views-query-and-display-post-page' ), __( 'is less than or equal to (≤) the <b>Items per page</b> value', 'content-views-query-and-display-post-page' ) );
|
721 |
+
$html .= "\n" . sprintf( '<p class="alert alert-warning" style="padding: 10px 5px">%s %s.</p>', __( '[Preview only] Pagination is disabled when there is only 1 page, because of', 'content-views-query-and-display-post-page' ), $reason );
|
722 |
+
}
|
723 |
+
}
|
724 |
+
}
|
725 |
+
}
|
726 |
+
|
727 |
+
do_action( PT_CV_PREFIX_ . 'view_process_end' );
|
728 |
+
|
729 |
+
return apply_filters( PT_CV_PREFIX_ . 'view_html', $html );
|
730 |
+
}
|
731 |
+
|
732 |
+
/**
|
733 |
+
* Query posts
|
734 |
+
*
|
735 |
+
* @global mixed $post
|
736 |
+
* @param array $args
|
737 |
+
* @param string $view_type
|
738 |
+
* @return array
|
739 |
+
*/
|
740 |
+
static function get_posts_list( $args, $view_type ) {
|
741 |
+
$empty_result = false;
|
742 |
+
$content_items = array();
|
743 |
+
$args = apply_filters( PT_CV_PREFIX_ . 'query_params', $args );
|
744 |
+
|
745 |
+
// The Query
|
746 |
+
do_action( PT_CV_PREFIX_ . 'before_query' );
|
747 |
+
$pt_query = new WP_Query( $args );
|
748 |
+
do_action( PT_CV_PREFIX_ . 'after_query', $pt_query->request );
|
749 |
+
|
750 |
+
//DEBUG_QUERY
|
751 |
+
//print_r( $pt_query->request );
|
752 |
+
// The Loop
|
753 |
+
if ( $pt_query->have_posts() ) {
|
754 |
+
do_action( PT_CV_PREFIX_ . 'before_process_item' );
|
755 |
+
|
756 |
+
$all_posts = array();
|
757 |
+
$post_idx = 0;
|
758 |
+
while ( $pt_query->have_posts() ) {
|
759 |
+
$pt_query->the_post();
|
760 |
+
global $post;
|
761 |
+
|
762 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'show_this_post', $post ) ) {
|
763 |
+
$content_items[ $post->ID ] = PT_CV_Html::view_type_output( $view_type, $post, $post_idx++ );
|
764 |
+
$all_posts[ $post->ID ] = $post;
|
765 |
+
}
|
766 |
+
}
|
767 |
+
$GLOBALS[ 'cv_posts' ] = $all_posts;
|
768 |
+
|
769 |
+
do_action( PT_CV_PREFIX_ . 'after_process_item' );
|
770 |
+
} else {
|
771 |
+
$_class = apply_filters( PT_CV_PREFIX_ . 'content_no_post_found_class', 'alert alert-warning ' . PT_CV_PREFIX . 'no-post' );
|
772 |
+
$_text = PT_CV_Html::no_post_found();
|
773 |
+
$content_items[] = sprintf( '<div class="%s">%s</div>', esc_attr( $_class ), $_text );
|
774 |
+
$empty_result = true;
|
775 |
+
PT_CV_Functions::set_global_variable( 'no_post_found', $empty_result );
|
776 |
+
}
|
777 |
+
|
778 |
+
self::reset_query();
|
779 |
+
|
780 |
+
return array( 'content_items' => apply_filters( PT_CV_PREFIX_ . 'content_items', $content_items, $view_type ), 'pt_query' => $pt_query, 'empty_result' => $empty_result );
|
781 |
+
}
|
782 |
+
|
783 |
+
/**
|
784 |
+
* Get query parameters of View
|
785 |
+
*
|
786 |
+
* @param string $content_type The current content type
|
787 |
+
* @param array $view_settings The settings of View
|
788 |
+
*
|
789 |
+
* @return array
|
790 |
+
*/
|
791 |
+
static function view_filter_settings( $content_type, $view_settings ) {
|
792 |
+
/**
|
793 |
+
* Get Query parameters
|
794 |
+
* Set default values
|
795 |
+
*/
|
796 |
+
$args = array(
|
797 |
+
'post_type' => apply_filters( PT_CV_PREFIX_ . 'post_type', $content_type ),
|
798 |
+
'post_status' => apply_filters( PT_CV_PREFIX_ . 'post_status', array( 'publish' ) ),
|
799 |
+
'post__not_in' => array(),
|
800 |
+
);
|
801 |
+
|
802 |
+
// Ignore sticky posts
|
803 |
+
$args[ 'ignore_sticky_posts' ] = apply_filters( PT_CV_PREFIX_ . 'ignore_sticky_posts', 1 );
|
804 |
+
|
805 |
+
$post_in = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'post__in', $view_settings );
|
806 |
+
$post_in = array_filter( PT_CV_Functions::string_to_array( $post_in ) );
|
807 |
+
if ( $post_in ) {
|
808 |
+
$args[ 'post__in' ] = array_map( 'intval', $post_in );
|
809 |
+
}
|
810 |
+
|
811 |
+
$post_not_in = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'post__not_in', $view_settings );
|
812 |
+
$post_not_in = array_filter( PT_CV_Functions::string_to_array( $post_not_in ) );
|
813 |
+
if ( $post_not_in ) {
|
814 |
+
$args[ 'post__not_in' ] = array_map( 'intval', $post_not_in );
|
815 |
+
}
|
816 |
+
$args[ 'post__not_in' ] = apply_filters( PT_CV_PREFIX_ . 'post__not_in', $args[ 'post__not_in' ], $view_settings );
|
817 |
+
|
818 |
+
// Parent page
|
819 |
+
if ( in_array( $content_type, apply_filters( PT_CV_PREFIX_ . 'hierarchical_post_type', array( 'page' ) ) ) ) {
|
820 |
+
$post_parent = apply_filters( PT_CV_PREFIX_ . 'post_parent_id', PT_CV_Functions::setting_value( PT_CV_PREFIX . 'post_parent', $view_settings ) );
|
821 |
+
if ( !empty( $post_parent ) ) {
|
822 |
+
$args[ 'post_parent' ] = (int) $post_parent;
|
823 |
+
}
|
824 |
+
}
|
825 |
+
|
826 |
+
$args[ 'suppress_filters' ] = true;
|
827 |
+
|
828 |
+
PT_CV_Functions::view_get_advanced_settings( $args, $content_type );
|
829 |
+
|
830 |
+
return $args;
|
831 |
+
}
|
832 |
+
|
833 |
+
/**
|
834 |
+
* Get display parameters of View
|
835 |
+
*
|
836 |
+
* @param string $view_type The view type of View
|
837 |
+
*
|
838 |
+
* @return array
|
839 |
+
*/
|
840 |
+
static function view_display_settings( $view_type, &$dargs = null ) {
|
841 |
+
$dargs = array();
|
842 |
+
|
843 |
+
$dargs[ 'view-type' ] = $view_type;
|
844 |
+
|
845 |
+
// Field settings of a item
|
846 |
+
PT_CV_Functions::view_get_display_settings( $dargs );
|
847 |
+
|
848 |
+
// Other settings
|
849 |
+
PT_CV_Functions::view_get_other_settings( $dargs );
|
850 |
+
|
851 |
+
// View type settings
|
852 |
+
$dargs[ 'view-type-settings' ] = PT_CV_Functions::settings_values_by_prefix( PT_CV_PREFIX . $view_type . '-' );
|
853 |
+
|
854 |
+
PT_CV_Functions::set_global_variable( 'dargs', $dargs );
|
855 |
+
|
856 |
+
return $dargs;
|
857 |
+
}
|
858 |
+
|
859 |
+
/**
|
860 |
+
* Get Advance settings
|
861 |
+
*
|
862 |
+
* @param array $args The parameters array
|
863 |
+
* @param string $content_type The content type
|
864 |
+
*/
|
865 |
+
static function view_get_advanced_settings( &$args, $content_type ) {
|
866 |
+
$view_settings = PT_CV_Functions::get_global_variable( 'view_settings' );
|
867 |
+
$advanced_settings = (array) PT_CV_Functions::setting_value( PT_CV_PREFIX . 'advanced-settings', $view_settings );
|
868 |
+
|
869 |
+
if ( $advanced_settings ) {
|
870 |
+
foreach ( $advanced_settings as $setting ) {
|
871 |
+
switch ( $setting ) {
|
872 |
+
|
873 |
+
case 'author':
|
874 |
+
$wp37 = PT_CV_Functions::wp_version_compare( '3.7' );
|
875 |
+
$author_in = array_filter( PT_CV_Functions::string_to_array( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'author__in', $view_settings ) ) );
|
876 |
+
$author_not_in = array_filter( PT_CV_Functions::string_to_array( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'author__not_in', $view_settings ) ) );
|
877 |
+
|
878 |
+
if ( $author_in ) {
|
879 |
+
$args = array_merge(
|
880 |
+
$args, $wp37 ? array( 'author__in' => array_map( 'intval', $author_in ) ) : array( 'author' => intval( $author_in[ 0 ] ) )
|
881 |
+
);
|
882 |
+
}
|
883 |
+
|
884 |
+
if ( $author_not_in && $wp37 ) {
|
885 |
+
$args = array_merge(
|
886 |
+
$args, array( 'author__not_in' => array_map( 'intval', $author_not_in ) )
|
887 |
+
);
|
888 |
+
}
|
889 |
+
|
890 |
+
break;
|
891 |
+
|
892 |
+
case 'status':
|
893 |
+
$status = PT_CV_Functions::string_to_array( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'post_status', $view_settings, 'publish' ) );
|
894 |
+
$args = array_merge(
|
895 |
+
$args, array(
|
896 |
+
'post_status' => apply_filters( PT_CV_PREFIX_ . 'post_status', $status ),
|
897 |
+
)
|
898 |
+
);
|
899 |
+
break;
|
900 |
+
|
901 |
+
case 'search':
|
902 |
+
if ( $search_val = PT_CV_Functions::setting_value( PT_CV_PREFIX . 's', $view_settings ) ) {
|
903 |
+
$args = array_merge(
|
904 |
+
$args, array(
|
905 |
+
's' => $search_val,
|
906 |
+
)
|
907 |
+
);
|
908 |
+
}
|
909 |
+
break;
|
910 |
+
|
911 |
+
case 'taxonomy':
|
912 |
+
$taxonomies = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'taxonomy', $view_settings );
|
913 |
+
if ( !$taxonomies ) {
|
914 |
+
break;
|
915 |
+
}
|
916 |
+
|
917 |
+
$tax_settings = array();
|
918 |
+
foreach ( $taxonomies as $taxonomy ) {
|
919 |
+
$terms = (array) PT_CV_Functions::setting_value( PT_CV_PREFIX . $taxonomy . '-terms', $view_settings );
|
920 |
+
$terms = apply_filters( PT_CV_PREFIX_ . 'selected_terms', $terms, $taxonomy );
|
921 |
+
if ( $terms ) {
|
922 |
+
$operator = PT_CV_Functions::setting_value( PT_CV_PREFIX . $taxonomy . '-operator', $view_settings, 'IN' );
|
923 |
+
if ( $operator === 'AND' && count( $terms ) == 1 ) {
|
924 |
+
$operator = 'IN';
|
925 |
+
}
|
926 |
+
|
927 |
+
$tax_settings[] = array(
|
928 |
+
'taxonomy' => $taxonomy,
|
929 |
+
'field' => 'slug',
|
930 |
+
'terms' => $terms,
|
931 |
+
'operator' => $operator,
|
932 |
+
/**
|
933 |
+
* @since 1.7.2
|
934 |
+
* Bug: "No post found" when one of selected terms is hierarchical & operator is AND
|
935 |
+
*/
|
936 |
+
'include_children' => apply_filters( PT_CV_PREFIX_ . 'include_children', $operator == 'AND' ? false : true )
|
937 |
+
);
|
938 |
+
}
|
939 |
+
}
|
940 |
+
|
941 |
+
if ( count( $tax_settings ) > 1 ) {
|
942 |
+
$tax_settings[ 'relation' ] = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'taxonomy-relation', $view_settings, 'AND' );
|
943 |
+
}
|
944 |
+
|
945 |
+
$args = array_merge( $args, array( 'tax_query' => apply_filters( PT_CV_PREFIX_ . 'taxonomy_setting', $tax_settings ) ) );
|
946 |
+
break;
|
947 |
+
|
948 |
+
case 'order':
|
949 |
+
$orderby = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'orderby', $view_settings );
|
950 |
+
$order = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'order', $view_settings );
|
951 |
+
$order_settings = apply_filters( PT_CV_PREFIX_ . 'order_setting', array(
|
952 |
+
'orderby' => $orderby,
|
953 |
+
'order' => $orderby ? $order : '',
|
954 |
+
) );
|
955 |
+
$args = array_merge( $args, $order_settings );
|
956 |
+
break;
|
957 |
+
}
|
958 |
+
}
|
959 |
+
}
|
960 |
+
}
|
961 |
+
|
962 |
+
/**
|
963 |
+
* Get Fields settings
|
964 |
+
*
|
965 |
+
* @param array $dargs The settings array of Fields
|
966 |
+
*/
|
967 |
+
static function view_get_display_settings( &$dargs ) {
|
968 |
+
$view_settings = PT_CV_Functions::get_global_variable( 'view_settings' );
|
969 |
+
$view_type = $dargs[ 'view-type' ];
|
970 |
+
|
971 |
+
$dargs[ 'layout-format' ] = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'layout-format', $view_settings );
|
972 |
+
$dargs[ 'number-columns' ] = apply_filters( PT_CV_PREFIX_ . 'item_per_row', PT_CV_Functions::setting_value( PT_CV_PREFIX . $view_type . '-' . 'number-columns', $view_settings, 1 ) );
|
973 |
+
$dargs[ 'number-rows' ] = PT_CV_Functions::setting_value( PT_CV_PREFIX . $view_type . '-' . 'number-rows', $view_settings, 1 );
|
974 |
+
|
975 |
+
$cfields_settings = PT_CV_Functions::settings_values_by_prefix( PT_CV_PREFIX . 'show-field-' );
|
976 |
+
$cfields = (array) array_keys( (array) $cfields_settings );
|
977 |
+
foreach ( $cfields as $field ) {
|
978 |
+
if ( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'show-field-' . $field, $view_settings ) ) {
|
979 |
+
$dargs[ 'fields' ][] = $field;
|
980 |
+
|
981 |
+
switch ( $field ) {
|
982 |
+
case 'title':
|
983 |
+
$prefix = PT_CV_PREFIX . 'field-title-';
|
984 |
+
$field_setting = PT_CV_Functions::settings_values_by_prefix( $prefix );
|
985 |
+
|
986 |
+
$dargs[ 'field-settings' ][ $field ] = apply_filters( PT_CV_PREFIX_ . 'field_title_setting_values', $field_setting, $prefix );
|
987 |
+
|
988 |
+
break;
|
989 |
+
|
990 |
+
case 'thumbnail':
|
991 |
+
$prefix = PT_CV_PREFIX . 'field-thumbnail-';
|
992 |
+
$field_setting = PT_CV_Functions::settings_values_by_prefix( $prefix );
|
993 |
+
|
994 |
+
$dargs[ 'field-settings' ][ $field ] = apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_setting_values', $field_setting, $prefix );
|
995 |
+
|
996 |
+
break;
|
997 |
+
|
998 |
+
case 'meta-fields':
|
999 |
+
$prefix = PT_CV_PREFIX . 'meta-fields-';
|
1000 |
+
$field_setting = PT_CV_Functions::settings_values_by_prefix( $prefix );
|
1001 |
+
|
1002 |
+
$dargs[ 'field-settings' ][ $field ] = apply_filters( PT_CV_PREFIX_ . 'field_meta_fields_setting_values', $field_setting, $prefix );
|
1003 |
+
|
1004 |
+
break;
|
1005 |
+
|
1006 |
+
case 'content':
|
1007 |
+
$prefix = PT_CV_PREFIX . 'field-content-';
|
1008 |
+
$field_setting = PT_CV_Functions::settings_values_by_prefix( $prefix );
|
1009 |
+
|
1010 |
+
if ( $field_setting[ 'show' ] == 'excerpt' ) {
|
1011 |
+
$field_setting = array_merge( $field_setting, PT_CV_Functions::settings_values_by_prefix( PT_CV_PREFIX . 'field-excerpt-' ) );
|
1012 |
+
}
|
1013 |
+
|
1014 |
+
$dargs[ 'field-settings' ][ $field ] = apply_filters( PT_CV_PREFIX_ . 'field_content_setting_values', $field_setting, $prefix );
|
1015 |
+
|
1016 |
+
break;
|
1017 |
+
}
|
1018 |
+
}
|
1019 |
+
}
|
1020 |
+
}
|
1021 |
+
|
1022 |
+
/**
|
1023 |
+
* Get Pagination settings
|
1024 |
+
*
|
1025 |
+
* @param array $dargs The settings array of Fields
|
1026 |
+
* @param array $args The parameters array
|
1027 |
+
* @param array $pargs The pagination settings array
|
1028 |
+
*/
|
1029 |
+
static function view_get_pagination_settings( &$dargs, &$args, $pargs ) {
|
1030 |
+
$view_settings = PT_CV_Functions::get_global_variable( 'view_settings' );
|
1031 |
+
$limit = trim( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'limit', $view_settings ) );
|
1032 |
+
$limit = ( empty( $limit ) || $limit === '-1' ) ? 10000000 : $limit;
|
1033 |
+
$limit = (int) apply_filters( PT_CV_PREFIX_ . 'settings_args_limit', $limit );
|
1034 |
+
$args[ 'limit' ] = $args[ 'posts_per_page' ] = $limit;
|
1035 |
+
$offset = 0;
|
1036 |
+
|
1037 |
+
$pagination = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'enable-pagination', $view_settings );
|
1038 |
+
if ( $pagination ) {
|
1039 |
+
$prefix = PT_CV_PREFIX . 'pagination-';
|
1040 |
+
$field_setting = PT_CV_Functions::settings_values_by_prefix( $prefix );
|
1041 |
+
$dargs[ 'pagination-settings' ] = apply_filters( PT_CV_PREFIX_ . 'pagination_settings', $field_setting, $prefix );
|
1042 |
+
if ( !isset( $dargs[ 'pagination-settings' ][ 'type' ] ) ) {
|
1043 |
+
$dargs[ 'pagination-settings' ][ 'type' ] = 'ajax';
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
if ( $dargs[ 'pagination-settings' ][ 'type' ] === 'normal' ) {
|
1047 |
+
$dargs[ 'pagination-settings' ][ 'style' ] = '';
|
1048 |
+
}
|
1049 |
+
|
1050 |
+
$ppp = $og_ppp = isset( $dargs[ 'pagination-settings' ][ 'items-per-page' ] ) ? (int) $dargs[ 'pagination-settings' ][ 'items-per-page' ] : $limit;
|
1051 |
+
if ( $ppp > $limit ) {
|
1052 |
+
$ppp = $limit;
|
1053 |
+
}
|
1054 |
+
$args[ 'posts_per_page' ] = $ppp;
|
1055 |
+
|
1056 |
+
$paged = (int) self::get_current_page( $pargs );
|
1057 |
+
|
1058 |
+
// Prevent out of range pages show beyond posts
|
1059 |
+
if ( $og_ppp && $paged > ceil( $limit / $og_ppp ) ) {
|
1060 |
+
$paged = ceil( $limit / $og_ppp );
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
$offset = $ppp * ( $paged - 1 );
|
1064 |
+
if ( intval( $args[ 'posts_per_page' ] ) > $limit - $offset ) {
|
1065 |
+
$args[ 'posts_per_page' ] = $limit - $offset;
|
1066 |
+
}
|
1067 |
+
}
|
1068 |
+
|
1069 |
+
$args[ 'offset' ] = apply_filters( PT_CV_PREFIX_ . 'settings_args_offset', $offset );
|
1070 |
+
$args[ 'by_contentviews' ] = true;
|
1071 |
+
}
|
1072 |
+
|
1073 |
+
/**
|
1074 |
+
* Get Other settings
|
1075 |
+
*
|
1076 |
+
* @param array $dargs The settings array of Fields
|
1077 |
+
*/
|
1078 |
+
static function view_get_other_settings( &$dargs ) {
|
1079 |
+
$prefix = PT_CV_PREFIX . 'other-';
|
1080 |
+
$field_setting = PT_CV_Functions::settings_values_by_prefix( $prefix );
|
1081 |
+
$dargs[ 'other-settings' ] = apply_filters( PT_CV_PREFIX_ . 'other_settings', $field_setting );
|
1082 |
+
}
|
1083 |
+
|
1084 |
+
/**
|
1085 |
+
* Process data when submit form add/edit view
|
1086 |
+
*
|
1087 |
+
* @return void
|
1088 |
+
*/
|
1089 |
+
static function view_submit() {
|
1090 |
+
if ( empty( $_POST ) ) {
|
1091 |
+
return;
|
1092 |
+
}
|
1093 |
+
|
1094 |
+
if ( !isset( $_POST[ PT_CV_PREFIX_ . 'form_nonce' ] ) || !wp_verify_nonce( $_POST[ PT_CV_PREFIX_ . 'form_nonce' ], PT_CV_PREFIX_ . 'view_submit' ) ) {
|
1095 |
+
return;
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
// Insert View
|
1099 |
+
$title = cv_esc_sql( $_POST[ PT_CV_PREFIX . 'view-title' ] );
|
1100 |
+
$cur_pid = cv_esc_sql( $_POST[ PT_CV_PREFIX . 'post-id' ] );
|
1101 |
+
if ( !$cur_pid ) {
|
1102 |
+
$post_id = PT_CV_Functions::post_insert( array( 'ID' => 0, 'title' => $title ) );
|
1103 |
+
} else {
|
1104 |
+
$post_id = absint( $cur_pid );
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
// Add/Update View data
|
1108 |
+
$view_id = empty( $_POST[ PT_CV_PREFIX . 'view-id' ] ) ? PT_CV_Functions::string_random() : cv_sanitize_vid( $_POST[ PT_CV_PREFIX . 'view-id' ] );
|
1109 |
+
update_post_meta( $post_id, PT_CV_META_ID, $view_id );
|
1110 |
+
update_post_meta( $post_id, PT_CV_META_SETTINGS, apply_filters( PT_CV_PREFIX_ . 'pre_save_view_data', $_POST ) );
|
1111 |
+
|
1112 |
+
// Update View title
|
1113 |
+
if ( strpos( $title, '[ID:' ) === false ) {
|
1114 |
+
PT_CV_Functions::post_insert( array( 'ID' => $post_id, 'title' => sprintf( '%s [ID: %s]', $title, $view_id ) ) );
|
1115 |
+
}
|
1116 |
+
|
1117 |
+
$edit_link = PT_CV_Functions::view_link( $view_id );
|
1118 |
+
?>
|
1119 |
+
<script type="text/javascript">
|
1120 |
+
window.location = '<?php echo str_replace( '&', '&', esc_url( $edit_link ) ); ?>';
|
1121 |
+
</script>
|
1122 |
+
<?php
|
1123 |
+
exit;
|
1124 |
+
}
|
1125 |
+
|
1126 |
+
/**
|
1127 |
+
* Add shortcode
|
1128 |
+
*
|
1129 |
+
* @param array $atts Array of setting parameters for shortcode
|
1130 |
+
* @param string $content Content of shortcode
|
1131 |
+
*/
|
1132 |
+
static function view_output( $atts ) {
|
1133 |
+
$atts = shortcode_atts( apply_filters( PT_CV_PREFIX_ . 'shortcode_params', array( 'id' => 0 ) ), $atts );
|
1134 |
+
$id = cv_sanitize_vid( $atts[ 'id' ] );
|
1135 |
+
if ( $id && !self::duplicated_process( $id, $atts ) ) {
|
1136 |
+
# Backup the global post, ensure this happens only one time per page
|
1137 |
+
if ( !isset( $GLOBALS[ 'cv_gpost_bak' ] ) && isset( $GLOBALS[ 'post' ] ) ) {
|
1138 |
+
$GLOBALS[ 'cv_gpost_bak' ] = $GLOBALS[ 'post' ];
|
1139 |
+
}
|
1140 |
+
|
1141 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'view_shortcode_output', null, $atts );
|
1142 |
+
if ( empty( $result ) ) {
|
1143 |
+
$settings = PT_CV_Functions::view_get_settings( $id );
|
1144 |
+
$view_html = PT_CV_Functions::view_process_settings( $id, $settings, null, $atts );
|
1145 |
+
$result = PT_CV_Functions::view_final_output( $view_html );
|
1146 |
+
do_action( PT_CV_PREFIX_ . 'flushed_output', $result );
|
1147 |
+
}
|
1148 |
+
|
1149 |
+
# Restore the global post
|
1150 |
+
if ( isset( $GLOBALS[ 'cv_gpost_bak' ] ) ) {
|
1151 |
+
$GLOBALS[ 'post' ] = $GLOBALS[ 'cv_gpost_bak' ];
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
return $result;
|
1155 |
+
}
|
1156 |
+
}
|
1157 |
+
|
1158 |
+
/**
|
1159 |
+
* Final output of View: HTML & Assets
|
1160 |
+
*
|
1161 |
+
* @param string $html
|
1162 |
+
*/
|
1163 |
+
static function view_final_output( $html ) {
|
1164 |
+
ob_start();
|
1165 |
+
PT_CV_Html::assets_of_view_types();
|
1166 |
+
$view_assets = ob_get_clean();
|
1167 |
+
|
1168 |
+
$class = apply_filters( PT_CV_PREFIX_ . 'wrapper_class', PT_CV_PREFIX . 'wrapper' );
|
1169 |
+
return sprintf( '<div class="%s">%s</div>', $class, $html ) . $view_assets;
|
1170 |
+
}
|
1171 |
+
|
1172 |
+
/**
|
1173 |
+
* Generate link to View page: Add view/ Edit view
|
1174 |
+
*
|
1175 |
+
* @param string $view_id The view id
|
1176 |
+
* @param array $action Custom parameters
|
1177 |
+
*
|
1178 |
+
* @return string
|
1179 |
+
*/
|
1180 |
+
public static function view_link( $view_id, $action = array() ) {
|
1181 |
+
$edit_link = admin_url( 'admin.php?page=' . PT_CV_DOMAIN . '-add' );
|
1182 |
+
if ( !empty( $view_id ) ) {
|
1183 |
+
$query_args = apply_filters( PT_CV_PREFIX_ . 'view_link_args', array( 'id' => $view_id ) + $action );
|
1184 |
+
$edit_link = add_query_arg( $query_args, $edit_link );
|
1185 |
+
}
|
1186 |
+
|
1187 |
+
return $edit_link;
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
/**
|
1191 |
+
* Callback function for ajax Preview action 'preview_request'
|
1192 |
+
*/
|
1193 |
+
static function ajax_callback_preview_request() {
|
1194 |
+
// Validate request
|
1195 |
+
check_ajax_referer( PT_CV_PREFIX_ . 'ajax_nonce', 'ajax_nonce' );
|
1196 |
+
|
1197 |
+
if ( !empty( $_POST[ 'data' ] ) ) {
|
1198 |
+
define( 'PT_CV_DOING_PREVIEW', true );
|
1199 |
+
do_action( PT_CV_PREFIX_ . 'preview_header' );
|
1200 |
+
|
1201 |
+
$settings = array();
|
1202 |
+
parse_str( $_POST[ 'data' ], $settings );
|
1203 |
+
|
1204 |
+
$view_id = cv_sanitize_vid( PT_CV_Functions::url_extract_param( 'id' ) );
|
1205 |
+
if ( empty( $view_id ) ) {
|
1206 |
+
$view_id = PT_CV_Functions::string_random();
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
// Show output
|
1210 |
+
echo PT_CV_Functions::view_process_settings( $view_id, $settings );
|
1211 |
+
|
1212 |
+
do_action( PT_CV_PREFIX_ . 'preview_footer' );
|
1213 |
+
}
|
1214 |
+
|
1215 |
+
// Must exit
|
1216 |
+
die;
|
1217 |
+
}
|
1218 |
+
|
1219 |
+
/**
|
1220 |
+
* Callback function for ajax Pagination action 'pagination_request'
|
1221 |
+
*/
|
1222 |
+
static function ajax_callback_pagination_request() {
|
1223 |
+
// Validate request
|
1224 |
+
#check_ajax_referer( PT_CV_PREFIX_ . 'ajax_nonce', 'ajax_nonce' ); //disabled since 1.7.9 due to output -1 when use cache plugin, or nonce expired
|
1225 |
+
|
1226 |
+
if ( !isset( $_POST[ 'sid' ] ) )
|
1227 |
+
return 'Empty View ID';
|
1228 |
+
|
1229 |
+
define( 'PT_CV_DOING_PAGINATION', true );
|
1230 |
+
|
1231 |
+
$view_id = cv_sanitize_vid( $_POST[ 'sid' ] );
|
1232 |
+
$settings = cv_comp_pagination_settings( 'get', NULL );
|
1233 |
+
if ( !$settings ) {
|
1234 |
+
$settings = PT_CV_Functions::view_get_settings( $view_id );
|
1235 |
+
}
|
1236 |
+
|
1237 |
+
// Switch language
|
1238 |
+
$language = empty( $_POST[ 'lang' ] ) ? '' : cv_esc_sql( $_POST[ 'lang' ] );
|
1239 |
+
self::switch_language( $language );
|
1240 |
+
|
1241 |
+
// Show output
|
1242 |
+
echo PT_CV_Functions::view_process_settings( $view_id, $settings, array( 'page' => absint( $_POST[ 'page' ] ) ) );
|
1243 |
+
|
1244 |
+
// Must exit
|
1245 |
+
die;
|
1246 |
+
}
|
1247 |
+
|
1248 |
+
/**
|
1249 |
+
* Pagination output
|
1250 |
+
*
|
1251 |
+
* @param int $total_pages Total pages
|
1252 |
+
* @param int $current_page Current page number
|
1253 |
+
*/
|
1254 |
+
static function pagination_links( $total_pages, $current_page = 1 ) {
|
1255 |
+
if ( $total_pages == 1 )
|
1256 |
+
return '';
|
1257 |
+
|
1258 |
+
$links = PT_CV_Functions::get_pagination_links( $current_page, $total_pages, 'array' );
|
1259 |
+
|
1260 |
+
// Generate the links
|
1261 |
+
$html = '';
|
1262 |
+
foreach ( $links as $link ) {
|
1263 |
+
$class = strpos( $link, 'current' ) !== false ? 'class="active"' : '';
|
1264 |
+
$link = preg_replace( '/<span[^>]*>/', '<a href="#">', $link );
|
1265 |
+
$link = str_replace( '</span>', '</a>', $link );
|
1266 |
+
$link = str_replace( array( 'page-numbers', 'prev', 'next' ), '', $link );
|
1267 |
+
$html .= "<li $class>" . $link . "</li>\n\t";
|
1268 |
+
}
|
1269 |
+
|
1270 |
+
return $html;
|
1271 |
+
}
|
1272 |
+
|
1273 |
+
/** Remove pagination parameters from URL
|
1274 |
+
* @param string $link
|
1275 |
+
* @return string
|
1276 |
+
*/
|
1277 |
+
static function remove_pagination_params( $link ) {
|
1278 |
+
$params = apply_filters( PT_CV_PREFIX_ . 'pagination_params_removed', array( 'vpage', 'page' ) );
|
1279 |
+
return remove_query_arg( $params, $link );
|
1280 |
+
}
|
1281 |
+
|
1282 |
+
/** Get general page number from an URL
|
1283 |
+
* @return int
|
1284 |
+
*/
|
1285 |
+
static function get_pagination_number() {
|
1286 |
+
$paged = null;
|
1287 |
+
|
1288 |
+
// Get old params
|
1289 |
+
foreach ( array( 'vpage', '_page' ) as $op ) {
|
1290 |
+
if ( !empty( $_GET[ $op ] ) ) {
|
1291 |
+
$paged = absint( $_GET[ $op ] );
|
1292 |
+
}
|
1293 |
+
}
|
1294 |
+
|
1295 |
+
// Get WP parameter
|
1296 |
+
if ( !$paged ) {
|
1297 |
+
if ( get_query_var( 'paged' ) ) {
|
1298 |
+
$paged = get_query_var( 'paged' );
|
1299 |
+
} elseif ( get_query_var( 'page' ) ) {
|
1300 |
+
$paged = get_query_var( 'page' );
|
1301 |
+
}
|
1302 |
+
}
|
1303 |
+
|
1304 |
+
return $paged;
|
1305 |
+
}
|
1306 |
+
|
1307 |
+
/** Get current page number of a View
|
1308 |
+
*
|
1309 |
+
* @param array $pargs Pagination settings of the View
|
1310 |
+
* @return int
|
1311 |
+
*/
|
1312 |
+
static function get_current_page( $pargs ) {
|
1313 |
+
$paged = 1;
|
1314 |
+
|
1315 |
+
if ( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'enable-pagination' ) ) {
|
1316 |
+
if ( !empty( $pargs[ 'page' ] ) ) {
|
1317 |
+
$paged = absint( $pargs[ 'page' ] );
|
1318 |
+
}
|
1319 |
+
$pagenum = self::get_pagination_number();
|
1320 |
+
if ( !empty( $pagenum ) ) {
|
1321 |
+
$paged = absint( $pagenum );
|
1322 |
+
}
|
1323 |
+
}
|
1324 |
+
|
1325 |
+
return apply_filters( PT_CV_PREFIX_ . 'set_current_page', $paged );
|
1326 |
+
}
|
1327 |
+
|
1328 |
+
/**
|
1329 |
+
* Check if using pagination: Non-ajax or First page (of Ajax pagination)
|
1330 |
+
*
|
1331 |
+
* @param array $dargs
|
1332 |
+
* @param int $current_page
|
1333 |
+
* @return bool
|
1334 |
+
*/
|
1335 |
+
static function nonajax_or_firstpage( $dargs, $current_page ) {
|
1336 |
+
if ( !PT_CV_Functions::setting_value( PT_CV_PREFIX . 'enable-pagination' ) ) {
|
1337 |
+
return false;
|
1338 |
+
}
|
1339 |
+
|
1340 |
+
if ( $dargs[ 'pagination-settings' ][ 'type' ] === 'normal' ) {
|
1341 |
+
return true;
|
1342 |
+
} else if ( !(defined( 'DOING_AJAX' ) && DOING_AJAX && !empty( $_POST[ 'action' ] ) && $_POST[ 'action' ] == 'pagination_request') ) {
|
1343 |
+
// Not requested by Ajax => show pagination
|
1344 |
+
return true;
|
1345 |
+
} else {
|
1346 |
+
return false;
|
1347 |
+
}
|
1348 |
+
}
|
1349 |
+
|
1350 |
+
/** Get list of pagination links
|
1351 |
+
* @since 2.3.0
|
1352 |
+
*
|
1353 |
+
* @param int $current_page
|
1354 |
+
* @param int $total_pages
|
1355 |
+
* @param string $type
|
1356 |
+
* @return string/array
|
1357 |
+
*/
|
1358 |
+
static function get_pagination_links( $current_page = 1, $total_pages = 2, $type = 'array' ) {
|
1359 |
+
// Custom filters
|
1360 |
+
$pages_to_show = apply_filters( PT_CV_PREFIX_ . 'pages_to_show', 4 );
|
1361 |
+
$labels = apply_filters( PT_CV_PREFIX_ . 'pagination_label', array(
|
1362 |
+
'prev' => '‹',
|
1363 |
+
'next' => '›',
|
1364 |
+
) );
|
1365 |
+
|
1366 |
+
// Call WP functions
|
1367 |
+
global $wp_filter;
|
1368 |
+
$filters_bak = $wp_filter;
|
1369 |
+
|
1370 |
+
remove_all_filters( 'paginate_links' );
|
1371 |
+
remove_all_filters( 'get_pagenum_link' );
|
1372 |
+
add_filter( 'paginate_links', array( __CLASS__, 'remove_pagination_params' ) );
|
1373 |
+
|
1374 |
+
$params = array(
|
1375 |
+
'format' => apply_filters( PT_CV_PREFIX_ . 'pagination_link_format', '?_page=%#%' ),
|
1376 |
+
'current' => $current_page,
|
1377 |
+
'total' => $total_pages,
|
1378 |
+
'type' => $type,
|
1379 |
+
'prev_text' => $labels[ 'prev' ],
|
1380 |
+
'next_text' => $labels[ 'next' ],
|
1381 |
+
'mid_size' => $pages_to_show ? absint( $pages_to_show ) / 2 : 2,
|
1382 |
+
);
|
1383 |
+
|
1384 |
+
$links = paginate_links( $params );
|
1385 |
+
|
1386 |
+
$wp_filter = $filters_bak;
|
1387 |
+
|
1388 |
+
return $links;
|
1389 |
+
}
|
1390 |
+
|
1391 |
+
/** Get the link for a page number
|
1392 |
+
* @param int $page_num The page number
|
1393 |
+
* @since 2.3.0
|
1394 |
+
*/
|
1395 |
+
static function get_pagination_url( $page_num = 0 ) {
|
1396 |
+
$links = self::get_pagination_links( 2, 3, 'list' );
|
1397 |
+
|
1398 |
+
$matches = array();
|
1399 |
+
preg_match_all( '/href=["\']([^"\']+)["\']/', $links, $matches );
|
1400 |
+
|
1401 |
+
if ( !isset( $matches[ 1 ] ) ) {
|
1402 |
+
return null;
|
1403 |
+
} else {
|
1404 |
+
$pattern = '@([/?&](page|paged|_page)[/=])([0-9]+)@i';
|
1405 |
+
$page1 = html_entity_decode( $matches[ 1 ][ 0 ] );
|
1406 |
+
$pagen = html_entity_decode( $matches[ 1 ][ 3 ] );
|
1407 |
+
|
1408 |
+
if ( !empty( $page_num ) ) {
|
1409 |
+
return esc_url_raw( preg_replace( $pattern, '${1}' . absint( $page_num ), $pagen ) );
|
1410 |
+
} else {
|
1411 |
+
return array(
|
1412 |
+
'page_1' => esc_url_raw( $page1 ),
|
1413 |
+
'page_n' => esc_url_raw( preg_replace( $pattern, '${1}' . '_CVNUMBER_', $pagen ) ),
|
1414 |
+
);
|
1415 |
+
}
|
1416 |
+
}
|
1417 |
+
}
|
1418 |
+
|
1419 |
+
/**
|
1420 |
+
* Extract param's value from URL
|
1421 |
+
*
|
1422 |
+
* @param string $pname Name of parameter
|
1423 |
+
* @return string
|
1424 |
+
*/
|
1425 |
+
static function url_extract_param( $pname, $default = null ) {
|
1426 |
+
$query = array();
|
1427 |
+
$url = $_SERVER[ 'REQUEST_URI' ];
|
1428 |
+
if ( strpos( $url, 'admin-ajax.php' ) !== false ) {
|
1429 |
+
$url = $_SERVER[ 'HTTP_REFERER' ];
|
1430 |
+
}
|
1431 |
+
|
1432 |
+
$parts = parse_url( $url );
|
1433 |
+
if ( isset( $parts[ 'query' ] ) ) {
|
1434 |
+
parse_str( $parts[ 'query' ], $query );
|
1435 |
+
|
1436 |
+
return !empty( $query[ $pname ] ) ? $query[ $pname ] : $default;
|
1437 |
+
}
|
1438 |
+
|
1439 |
+
return $default;
|
1440 |
+
}
|
1441 |
+
|
1442 |
+
/**
|
1443 |
+
* Set global variable
|
1444 |
+
*
|
1445 |
+
* @global array $pt_cv_glb
|
1446 |
+
* @global string $pt_cv_id
|
1447 |
+
* @param type $variable
|
1448 |
+
* @param type $value
|
1449 |
+
*/
|
1450 |
+
static function set_global_variable( $variable, $value ) {
|
1451 |
+
global $pt_cv_glb, $pt_cv_id;
|
1452 |
+
$pt_cv_glb[ $pt_cv_id ][ $variable ] = $value;
|
1453 |
+
}
|
1454 |
+
|
1455 |
+
/**
|
1456 |
+
* Get global variable
|
1457 |
+
*
|
1458 |
+
* @global array $pt_cv_glb
|
1459 |
+
* @global string $pt_cv_id
|
1460 |
+
* @param string $variable
|
1461 |
+
* @return mixed
|
1462 |
+
*/
|
1463 |
+
static function get_global_variable( $variable, $unset = false ) {
|
1464 |
+
global $pt_cv_glb, $pt_cv_id;
|
1465 |
+
if ( !$pt_cv_glb || !$pt_cv_id )
|
1466 |
+
return null;
|
1467 |
+
|
1468 |
+
$value = isset( $pt_cv_glb[ $pt_cv_id ][ $variable ] ) ? $pt_cv_glb[ $pt_cv_id ][ $variable ] : null;
|
1469 |
+
|
1470 |
+
// Unset after get
|
1471 |
+
if ( $unset && $value ) {
|
1472 |
+
unset( $pt_cv_glb[ $pt_cv_id ][ $variable ] );
|
1473 |
+
}
|
1474 |
+
|
1475 |
+
return $value;
|
1476 |
+
}
|
1477 |
+
|
1478 |
+
/**
|
1479 |
+
* Output debug message (if debug is enable) / nice message (otherwise)
|
1480 |
+
* @param string $log Raw log for debugging
|
1481 |
+
* @param string $message Nice message for user
|
1482 |
+
*/
|
1483 |
+
static function debug_output( $log, $message = '' ) {
|
1484 |
+
return defined( 'PT_CV_DEBUG' ) ? ( PT_CV_DEBUG ? $log : $message ) : $message;
|
1485 |
+
}
|
1486 |
+
|
1487 |
+
// Reset WP query
|
1488 |
+
static function reset_query() {
|
1489 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'reset_query', true ) ) {
|
1490 |
+
wp_reset_postdata();
|
1491 |
+
}
|
1492 |
+
}
|
1493 |
+
|
1494 |
+
/**
|
1495 |
+
* Check duplicated View
|
1496 |
+
* @return bool
|
1497 |
+
*/
|
1498 |
+
static function duplicated_process( $view_id, $sc_params ) {
|
1499 |
+
$duplicated = false;
|
1500 |
+
|
1501 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'check_duplicate', 0, $view_id, $sc_params ) ) {
|
1502 |
+
global $pt_cv_views;
|
1503 |
+
|
1504 |
+
$vid = $view_id . '-' . md5( serialize( $sc_params ) );
|
1505 |
+
if ( !empty( $pt_cv_views[ $vid ] ) ) {
|
1506 |
+
$duplicated = true;
|
1507 |
+
} else {
|
1508 |
+
$pt_cv_views[ $vid ] = 1;
|
1509 |
+
}
|
1510 |
+
}
|
1511 |
+
|
1512 |
+
return $duplicated;
|
1513 |
+
}
|
1514 |
+
|
1515 |
+
/**
|
1516 |
+
* Disable View shortcode in posts of current View
|
1517 |
+
* @since 1.7.6
|
1518 |
+
*
|
1519 |
+
* @global array $shortcode_tags
|
1520 |
+
* @global array $shortcode_tags_backup
|
1521 |
+
* @param string $action
|
1522 |
+
*/
|
1523 |
+
static function disable_view_shortcode( $action = 'disable' ) {
|
1524 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'disable_child_shortcode', true ) ) {
|
1525 |
+
global $shortcode_tags, $shortcode_tags_backup;
|
1526 |
+
|
1527 |
+
if ( $action == 'disable' ) {
|
1528 |
+
$shortcode_tags_backup = $shortcode_tags;
|
1529 |
+
$shortcode_tags[ 'pt_view' ] = '__return_false';
|
1530 |
+
} else {
|
1531 |
+
$shortcode_tags = $shortcode_tags_backup;
|
1532 |
+
}
|
1533 |
+
}
|
1534 |
+
}
|
1535 |
+
|
1536 |
+
}
|
1537 |
+
|
1538 |
}
|
includes/hooks.php
CHANGED
@@ -1,309 +1,297 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Custom filters/actions
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
if ( !class_exists( 'PT_CV_Hooks' ) ) {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @name PT_CV_Hooks
|
19 |
-
*/
|
20 |
-
class PT_CV_Hooks {
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Add custom filters/actions
|
24 |
-
*/
|
25 |
-
static function init() {
|
26 |
-
add_filter( PT_CV_PREFIX_ . 'validate_settings', array( __CLASS__, 'filter_validate_settings' ), 10, 2 );
|
27 |
-
add_filter( PT_CV_PREFIX_ . 'field_content_excerpt', array( __CLASS__, 'filter_field_content_excerpt' ), 9, 3 );
|
28 |
-
add_filter( PT_CV_PREFIX_ . 'item_col_class', array( __CLASS__, 'filter_item_col_class' ), 20, 2 );
|
29 |
-
add_filter( PT_CV_PREFIX_ . 'fields_html', array( __CLASS__, 'filter_fields_html' ), 20, 2 );
|
30 |
-
|
31 |
-
if ( apply_filters( PT_CV_PREFIX_ . 'prevent_broken_excerpt', true ) ) {
|
32 |
-
add_filter( PT_CV_PREFIX_ . 'before_trim_words', array( __CLASS__, 'filter_before_trim_words' ) );
|
33 |
-
add_filter( PT_CV_PREFIX_ . 'after_trim_words', array( __CLASS__, 'filter_after_trim_words' ) );
|
34 |
-
}
|
35 |
-
|
36 |
-
/**
|
37 |
-
* @since 1.7.5
|
38 |
-
* able to disable responsive image of WordPress 4.4
|
39 |
-
*/
|
40 |
-
add_filter( 'wp_get_attachment_image_attributes', array( __CLASS__, 'filter_disable_wp_responsive_image' ), 1000, 3 );
|
41 |
-
|
42 |
-
// Do action
|
43 |
-
add_action( PT_CV_PREFIX_ . '
|
44 |
-
add_action( PT_CV_PREFIX_ . '
|
45 |
-
add_action( PT_CV_PREFIX_ . '
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
*
|
51 |
-
*
|
52 |
-
* @param
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
$
|
57 |
-
|
58 |
-
|
59 |
-
'
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
'
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
*
|
110 |
-
*
|
111 |
-
* @param type $
|
112 |
-
* @param type $
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
*
|
118 |
-
*
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
*
|
131 |
-
*
|
132 |
-
*
|
133 |
-
* @param
|
134 |
-
*
|
135 |
-
*
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
$
|
141 |
-
|
142 |
-
|
143 |
-
$
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
*
|
160 |
-
*
|
161 |
-
* @
|
162 |
-
* @param
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
$
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
$
|
177 |
-
|
178 |
-
|
179 |
-
$
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
$
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
*
|
207 |
-
*
|
208 |
-
*
|
209 |
-
* @global type $
|
210 |
-
* @
|
211 |
-
* @
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
$
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
*
|
236 |
-
*
|
237 |
-
*
|
238 |
-
* @
|
239 |
-
* @
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
$
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
$tagnames = array_keys( $shortcode_tags );
|
299 |
-
$cv_shortcode_tags_backup = join( '|', array_map( 'preg_quote', $tagnames ) );
|
300 |
-
set_transient( $trans_key, $cv_shortcode_tags_backup, DAY_IN_SECONDS );
|
301 |
-
} else {
|
302 |
-
$cv_shortcode_tags_backup = get_transient( $trans_key );
|
303 |
-
}
|
304 |
-
}
|
305 |
-
}
|
306 |
-
|
307 |
-
}
|
308 |
-
|
309 |
-
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Custom filters/actions
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
if ( !class_exists( 'PT_CV_Hooks' ) ) {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @name PT_CV_Hooks
|
19 |
+
*/
|
20 |
+
class PT_CV_Hooks {
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Add custom filters/actions
|
24 |
+
*/
|
25 |
+
static function init() {
|
26 |
+
add_filter( PT_CV_PREFIX_ . 'validate_settings', array( __CLASS__, 'filter_validate_settings' ), 10, 2 );
|
27 |
+
add_filter( PT_CV_PREFIX_ . 'field_content_excerpt', array( __CLASS__, 'filter_field_content_excerpt' ), 9, 3 );
|
28 |
+
add_filter( PT_CV_PREFIX_ . 'item_col_class', array( __CLASS__, 'filter_item_col_class' ), 20, 2 );
|
29 |
+
add_filter( PT_CV_PREFIX_ . 'fields_html', array( __CLASS__, 'filter_fields_html' ), 20, 2 );
|
30 |
+
|
31 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'prevent_broken_excerpt', true ) ) {
|
32 |
+
add_filter( PT_CV_PREFIX_ . 'before_trim_words', array( __CLASS__, 'filter_before_trim_words' ) );
|
33 |
+
add_filter( PT_CV_PREFIX_ . 'after_trim_words', array( __CLASS__, 'filter_after_trim_words' ) );
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @since 1.7.5
|
38 |
+
* able to disable responsive image of WordPress 4.4
|
39 |
+
*/
|
40 |
+
add_filter( 'wp_get_attachment_image_attributes', array( __CLASS__, 'filter_disable_wp_responsive_image' ), 1000, 3 );
|
41 |
+
|
42 |
+
// Do action
|
43 |
+
add_action( PT_CV_PREFIX_ . 'before_process_item', array( __CLASS__, 'action_before_process_item' ) );
|
44 |
+
add_action( PT_CV_PREFIX_ . 'after_process_item', array( __CLASS__, 'action_after_process_item' ) );
|
45 |
+
add_action( PT_CV_PREFIX_ . 'before_content', array( __CLASS__, 'action_before_content' ) );
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Validate settings filter
|
50 |
+
*
|
51 |
+
* @param string $errors The error message
|
52 |
+
* @param array $args The Query parameters array
|
53 |
+
*/
|
54 |
+
public static function filter_validate_settings( $errors, $args ) {
|
55 |
+
$dargs = PT_CV_Functions::get_global_variable( 'dargs' );
|
56 |
+
$messages = array(
|
57 |
+
'field' => array(
|
58 |
+
'select' => __( 'Please select an option in', 'content-views-query-and-display-post-page' ) . ' : ',
|
59 |
+
'text' => __( 'Please set value in', 'content-views-query-and-display-post-page' ) . ' : ',
|
60 |
+
),
|
61 |
+
'tab' => array(
|
62 |
+
'filter' => __( 'Filter Settings', 'content-views-query-and-display-post-page' ),
|
63 |
+
'display' => __( 'Display Settings', 'content-views-query-and-display-post-page' ),
|
64 |
+
),
|
65 |
+
);
|
66 |
+
|
67 |
+
// Post type
|
68 |
+
if ( empty( $args[ 'post_type' ] ) ) {
|
69 |
+
$errors[] = $messages[ 'field' ][ 'select' ] . $messages[ 'tab' ][ 'filter' ] . ' > ' . __( 'Content type', 'content-views-query-and-display-post-page' );
|
70 |
+
}
|
71 |
+
|
72 |
+
// View type
|
73 |
+
if ( empty( $dargs[ 'view-type' ] ) ) {
|
74 |
+
$errors[] = $messages[ 'field' ][ 'select' ] . $messages[ 'tab' ][ 'display' ] . ' > ' . __( 'Layout', 'content-views-query-and-display-post-page' );
|
75 |
+
}
|
76 |
+
|
77 |
+
// Layout format
|
78 |
+
if ( empty( $dargs[ 'layout-format' ] ) ) {
|
79 |
+
$errors[] = $messages[ 'field' ][ 'select' ] . $messages[ 'tab' ][ 'display' ] . ' > ' . __( 'Format', 'content-views-query-and-display-post-page' );
|
80 |
+
}
|
81 |
+
|
82 |
+
// Field settings
|
83 |
+
if ( !isset( $dargs[ 'fields' ] ) ) {
|
84 |
+
$errors[] = $messages[ 'field' ][ 'select' ] . $messages[ 'tab' ][ 'display' ] . ' > ' . __( 'Fields settings', 'content-views-query-and-display-post-page' );
|
85 |
+
}
|
86 |
+
|
87 |
+
// Item per page
|
88 |
+
if ( isset( $dargs[ 'pagination-settings' ] ) ) {
|
89 |
+
if ( empty( $dargs[ 'pagination-settings' ][ 'items-per-page' ] ) ) {
|
90 |
+
$errors[] = $messages[ 'field' ][ 'text' ] . $messages[ 'tab' ][ 'display' ] . ' > ' . __( 'Pagination', 'content-views-query-and-display-post-page' ) . ' > ' . __( 'Items per page', 'content-views-query-and-display-post-page' );
|
91 |
+
}
|
92 |
+
}
|
93 |
+
|
94 |
+
if ( !empty( $dargs[ 'view-type' ] ) ) {
|
95 |
+
switch ( $dargs[ 'view-type' ] ) {
|
96 |
+
case 'grid':
|
97 |
+
if ( empty( $dargs[ 'number-columns' ] ) ) {
|
98 |
+
$errors[] = $messages[ 'field' ][ 'text' ] . $messages[ 'tab' ][ 'display' ] . ' > ' . __( 'Layout', 'content-views-query-and-display-post-page' ) . ' > ' . __( 'Items per row', 'content-views-query-and-display-post-page' );
|
99 |
+
}
|
100 |
+
break;
|
101 |
+
}
|
102 |
+
}
|
103 |
+
|
104 |
+
return array_filter( $errors );
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* Filter content before generating excerpt
|
109 |
+
*
|
110 |
+
* @param type $args
|
111 |
+
* @param type $fargs
|
112 |
+
* @param type $post
|
113 |
+
*/
|
114 |
+
public static function filter_field_content_excerpt( $args, $fargs, $post ) {
|
115 |
+
/**
|
116 |
+
* Get content of current language
|
117 |
+
* qTranslate-X (and qTranslate, mqTranslate)
|
118 |
+
* @since 1.7.8
|
119 |
+
*/
|
120 |
+
if ( function_exists( 'qtranxf_use' ) ) {
|
121 |
+
global $q_config;
|
122 |
+
$args = qtranxf_use( $q_config[ 'language' ], $args );
|
123 |
+
}
|
124 |
+
|
125 |
+
return $args;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Filter span with
|
130 |
+
* @since 1.8.5
|
131 |
+
*
|
132 |
+
* @param array $args
|
133 |
+
* @param int $span_width
|
134 |
+
*
|
135 |
+
* @return array
|
136 |
+
*/
|
137 |
+
public static function filter_item_col_class( $args, $span_width ) {
|
138 |
+
if ( PT_CV_Functions::get_global_variable( 'view_type' ) === 'grid' ) {
|
139 |
+
$tablet_col = (int) PT_CV_Functions::setting_value( PT_CV_PREFIX . 'resp-tablet-number-columns' );
|
140 |
+
$mobile_col = (int) PT_CV_Functions::setting_value( PT_CV_PREFIX . 'resp-number-columns' );
|
141 |
+
|
142 |
+
$sm_class = 'col-sm-' . (int) ( 12 / ($tablet_col ? $tablet_col : 2) );
|
143 |
+
$xs_class = 'col-xs-' . (int) ( 12 / ($mobile_col ? $mobile_col : 1) );
|
144 |
+
|
145 |
+
if ( !in_array( $sm_class, $args ) ) {
|
146 |
+
$args[] = $sm_class;
|
147 |
+
}
|
148 |
+
|
149 |
+
if ( !in_array( $xs_class, $args ) ) {
|
150 |
+
$args[] = $xs_class;
|
151 |
+
}
|
152 |
+
}
|
153 |
+
|
154 |
+
return $args;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Do not wrap text around image when show thumbnail on left/right of text
|
159 |
+
*
|
160 |
+
* @since 1.9.9
|
161 |
+
* @param array $args
|
162 |
+
* @param object $post
|
163 |
+
*/
|
164 |
+
public static function filter_fields_html( $args, $post ) {
|
165 |
+
$format = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'layout-format' );
|
166 |
+
$nowrap = PT_CV_Functions::setting_value( PT_CV_PREFIX . 'lf-nowrap' );
|
167 |
+
|
168 |
+
if ( !empty( $args[ 'thumbnail' ] ) && $format === '2-col' && $nowrap ) {
|
169 |
+
$exclude_fields = apply_filters( PT_CV_PREFIX_ . '2col_nowrap_fields', array( 'thumbnail' ) );
|
170 |
+
|
171 |
+
if ( PT_CV_Functions::get_global_variable( 'view_type' ) === 'collapsible' ) {
|
172 |
+
$exclude_fields[] = 'title';
|
173 |
+
}
|
174 |
+
|
175 |
+
$others = array();
|
176 |
+
foreach ( $args as $field => $value ) {
|
177 |
+
if ( !in_array( $field, $exclude_fields ) ) {
|
178 |
+
$others[ $field ] = $value;
|
179 |
+
unset( $args[ $field ] );
|
180 |
+
}
|
181 |
+
}
|
182 |
+
|
183 |
+
if ( $others ) {
|
184 |
+
$args[ 'others-wrap' ] = '<div class="' . PT_CV_PREFIX . 'colwrap">' . implode( '', $others ) . '</div>';
|
185 |
+
}
|
186 |
+
}
|
187 |
+
|
188 |
+
return $args;
|
189 |
+
}
|
190 |
+
|
191 |
+
public static function filter_before_trim_words( $content ) {
|
192 |
+
if ( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'field-excerpt-allow_html' ) ) {
|
193 |
+
global $cv_replaced_tags, $cv_replaced_idx;
|
194 |
+
# reset for each post
|
195 |
+
$cv_replaced_tags = array();
|
196 |
+
$cv_replaced_idx = 0;
|
197 |
+
|
198 |
+
$content = preg_replace_callback( '/<(\/?)[^>]+>/', array( __CLASS__, '_callback_before_trim_words' ), $content );
|
199 |
+
}
|
200 |
+
|
201 |
+
return $content;
|
202 |
+
}
|
203 |
+
|
204 |
+
/**
|
205 |
+
* Temporary replace HTML tag content by a simple code which doesn't impact trimming word function
|
206 |
+
* @since 1.9.4
|
207 |
+
*
|
208 |
+
* @global type $cv_replaced_tags
|
209 |
+
* @global type $cv_replaced_idx
|
210 |
+
* @param type $matches
|
211 |
+
* @return string
|
212 |
+
*/
|
213 |
+
public static function _callback_before_trim_words( $matches ) {
|
214 |
+
global $cv_replaced_tags, $cv_replaced_idx;
|
215 |
+
|
216 |
+
$return = $matches;
|
217 |
+
if ( !empty( $matches[ 0 ] ) ) {
|
218 |
+
$cv_replaced_tags[ ++$cv_replaced_idx ] = $matches[ 0 ];
|
219 |
+
$return = "@$cv_replaced_idx@";
|
220 |
+
}
|
221 |
+
|
222 |
+
return $return;
|
223 |
+
}
|
224 |
+
|
225 |
+
public static function filter_after_trim_words( $content ) {
|
226 |
+
if ( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'field-excerpt-allow_html' ) ) {
|
227 |
+
$content = preg_replace_callback( '/@(\d+)@/', array( __CLASS__, '_callback_after_trim_words' ), $content );
|
228 |
+
}
|
229 |
+
|
230 |
+
return $content;
|
231 |
+
}
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Revert HTML tag content
|
235 |
+
* @since 1.9.4
|
236 |
+
*
|
237 |
+
* @global type $cv_replaced_tags
|
238 |
+
* @param type $matches
|
239 |
+
* @return \type
|
240 |
+
*/
|
241 |
+
public static function _callback_after_trim_words( $matches ) {
|
242 |
+
global $cv_replaced_tags;
|
243 |
+
|
244 |
+
$return = $matches;
|
245 |
+
if ( !empty( $matches[ 1 ] ) && isset( $cv_replaced_tags[ (int) $matches[ 1 ] ] ) ) {
|
246 |
+
$return = $cv_replaced_tags[ (int) $matches[ 1 ] ];
|
247 |
+
}
|
248 |
+
|
249 |
+
return $return;
|
250 |
+
}
|
251 |
+
|
252 |
+
// Disable WP 4.4 responsive image
|
253 |
+
public static function filter_disable_wp_responsive_image( $args, $attachment = null, $size = null ) {
|
254 |
+
if ( PT_CV_Html::is_responsive_image_disabled() ) {
|
255 |
+
if ( isset( $args[ 'sizes' ] ) )
|
256 |
+
unset( $args[ 'sizes' ] );
|
257 |
+
if ( isset( $args[ 'srcset' ] ) )
|
258 |
+
unset( $args[ 'srcset' ] );
|
259 |
+
}
|
260 |
+
|
261 |
+
return $args;
|
262 |
+
}
|
263 |
+
|
264 |
+
public static function action_before_process_item() {
|
265 |
+
// Disable View Shortcode in child page
|
266 |
+
PT_CV_Functions::disable_view_shortcode();
|
267 |
+
}
|
268 |
+
|
269 |
+
public static function action_after_process_item() {
|
270 |
+
// Enable View Shortcode again
|
271 |
+
PT_CV_Functions::disable_view_shortcode( 'recovery' );
|
272 |
+
}
|
273 |
+
|
274 |
+
/**
|
275 |
+
* Issue: shortcode is visible in pagination, preview
|
276 |
+
* Solution: Backup shortcode tag in live page, to use for preview, pagination request
|
277 |
+
*
|
278 |
+
* @since 1.9.3
|
279 |
+
*/
|
280 |
+
public static function action_before_content() {
|
281 |
+
global $shortcode_tags, $cv_shortcode_tags_backup;
|
282 |
+
|
283 |
+
if ( !$cv_shortcode_tags_backup ) {
|
284 |
+
$trans_key = 'cv_shortcode_tags_193';
|
285 |
+
if ( !defined( 'PT_CV_DOING_PAGINATION' ) && !defined( 'PT_CV_DOING_PREVIEW' ) ) {
|
286 |
+
$tagnames = array_keys( $shortcode_tags );
|
287 |
+
$cv_shortcode_tags_backup = join( '|', array_map( 'preg_quote', $tagnames ) );
|
288 |
+
set_transient( $trans_key, $cv_shortcode_tags_backup, DAY_IN_SECONDS );
|
289 |
+
} else {
|
290 |
+
$cv_shortcode_tags_backup = get_transient( $trans_key );
|
291 |
+
}
|
292 |
+
}
|
293 |
+
}
|
294 |
+
|
295 |
+
}
|
296 |
+
|
297 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/html-viewtype.php
CHANGED
@@ -278,10 +278,10 @@ if ( !class_exists( 'PT_CV_Html_ViewType' ) ) {
|
|
278 |
$output = '';
|
279 |
if ( $count_slides > 1 ) {
|
280 |
$output = sprintf(
|
281 |
-
'<a class="left carousel-control"
|
282 |
<span class="glyphicon glyphicon-chevron-left"></span>
|
283 |
</a>
|
284 |
-
<a class="right carousel-control"
|
285 |
<span class="glyphicon glyphicon-chevron-right"></span>
|
286 |
</a>', esc_attr( $wrapper_id )
|
287 |
);
|
278 |
$output = '';
|
279 |
if ( $count_slides > 1 ) {
|
280 |
$output = sprintf(
|
281 |
+
'<a class="left carousel-control" data-target="#%1$s" data-cvslide="prev">
|
282 |
<span class="glyphicon glyphicon-chevron-left"></span>
|
283 |
</a>
|
284 |
+
<a class="right carousel-control" data-target="#%1$s" data-cvslide="next">
|
285 |
<span class="glyphicon glyphicon-chevron-right"></span>
|
286 |
</a>', esc_attr( $wrapper_id )
|
287 |
);
|
includes/html.php
CHANGED
@@ -1,871 +1,880 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* HTML output, class, id generating
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
if ( !class_exists( 'PT_CV_Html' ) ) {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @name PT_CV_Html
|
19 |
-
* @todo related HTML functions: Define HTML layout, Set class name...
|
20 |
-
*/
|
21 |
-
class PT_CV_Html {
|
22 |
-
|
23 |
-
// Store directory of selected view_types
|
24 |
-
static $view_type_dir = array();
|
25 |
-
// Store all selected styles
|
26 |
-
static $style = array();
|
27 |
-
|
28 |
-
/**
|
29 |
-
* return class for Panel (Group of) group of params
|
30 |
-
*
|
31 |
-
* @return string
|
32 |
-
*/
|
33 |
-
static function html_panel_group_class() {
|
34 |
-
return 'panel-group';
|
35 |
-
}
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Return ID for Panel (Group of) group of params
|
39 |
-
*
|
40 |
-
* @param string $id Unique id of element
|
41 |
-
*
|
42 |
-
* @return string
|
43 |
-
*/
|
44 |
-
static function html_panel_group_id( $id ) {
|
45 |
-
return 'panel-group-' . $id;
|
46 |
-
}
|
47 |
-
|
48 |
-
/**
|
49 |
-
* Return class for group of params
|
50 |
-
*
|
51 |
-
* @return string
|
52 |
-
*/
|
53 |
-
static function html_group_class() {
|
54 |
-
return PT_CV_PREFIX . 'group';
|
55 |
-
}
|
56 |
-
|
57 |
-
/**
|
58 |
-
* Return ID for group of params
|
59 |
-
*
|
60 |
-
* @param string $id Unique id of element
|
61 |
-
*
|
62 |
-
* @return string
|
63 |
-
*/
|
64 |
-
static function html_group_id( $id ) {
|
65 |
-
return self::html_group_class() . '-' . $id;
|
66 |
-
}
|
67 |
-
|
68 |
-
/**
|
69 |
-
* Collapse HTML
|
70 |
-
*
|
71 |
-
* @param string $parent_id Id of parent element
|
72 |
-
* @param string $id Unique id of element
|
73 |
-
* @param string $heading Heading text
|
74 |
-
* @param string $content Content
|
75 |
-
* @param bool $show Show/hide the content
|
76 |
-
*/
|
77 |
-
static function html_collapse_one( $parent_id, $id, $heading, $content = '', $show = true ) {
|
78 |
-
$class = $show ? 'in' : '';
|
79 |
-
ob_start();
|
80 |
-
?>
|
81 |
-
<div class="panel panel-primary pt-accordion">
|
82 |
-
<div class="panel-heading">
|
83 |
-
<h4 class="panel-title">
|
84 |
-
<a class="pt-accordion-a" data-parent="#<?php echo esc_attr( $parent_id ); ?>"
|
85 |
-
<?php echo $heading; ?>
|
86 |
-
</a>
|
87 |
-
</h4>
|
88 |
-
<span class="pull-right clickable"><i class="glyphicon glyphicon-minus"></i></span>
|
89 |
-
</div>
|
90 |
-
<div id="<?php echo esc_attr( $id ); ?>" class="panel-body <?php echo esc_attr( $class ); ?>">
|
91 |
-
<div class="panel-body">
|
92 |
-
<?php echo $content; ?>
|
93 |
-
</div>
|
94 |
-
</div>
|
95 |
-
</div>
|
96 |
-
<?php
|
97 |
-
return ob_get_clean();
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* HTML content of Preview box
|
102 |
-
*/
|
103 |
-
static function html_preview_box() {
|
104 |
-
ob_start();
|
105 |
-
?>
|
106 |
-
<div class="panel panel-default collapse <?php echo PT_CV_PREFIX; ?>wrapper" id="<?php echo PT_CV_PREFIX; ?>preview-box"></div>
|
107 |
-
<div class="text-center hidden" style="position: absolute; left: 50%; top: 160px;">
|
108 |
-
<?php echo self::html_loading_img(); ?>
|
109 |
-
</div>
|
110 |
-
<?php
|
111 |
-
return ob_get_clean();
|
112 |
-
}
|
113 |
-
|
114 |
-
/**
|
115 |
-
* Show loading image
|
116 |
-
*
|
117 |
-
* @param type $dimension
|
118 |
-
*
|
119 |
-
* @return type
|
120 |
-
*/
|
121 |
-
static function html_loading_img( $dimension = 15, $class = '' ) {
|
122 |
-
$img = sprintf( '<img width="%1$s" height="%1$s" class="%2$s" alt="%3$s" src="%4$s" /><div class="clear %5$s"></div>', esc_attr( $dimension ), esc_attr( $class ), __( 'Loading...', 'content-views-query-and-display-post-page' ), self::loading_img_src(), PT_CV_PREFIX . 'clear-pagination' );
|
123 |
-
return apply_filters( PT_CV_PREFIX_ . 'loading_image', $img );
|
124 |
-
}
|
125 |
-
|
126 |
-
static function loading_img_src() {
|
127 |
-
return apply_filters( PT_CV_PREFIX_ . 'loading_image_url', 'data:image/gif;base64,R0lGODlhDwAPALMPAMrKygwMDJOTkz09PZWVla+vr3p6euTk5M7OzuXl5TMzMwAAAJmZmWZmZszMzP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAADwAPAAAEQvDJaZaZOIcV8iQK8VRX4iTYoAwZ4iCYoAjZ4RxejhVNoT+mRGP4cyF4Pp0N98sBGIBMEMOotl6YZ3S61Bmbkm4mAgAh+QQFCgAPACwAAAAADQANAAAENPDJSRSZeA418itN8QiK8BiLITVsFiyBBIoYqnoewAD4xPw9iY4XLGYSjkQR4UAUD45DLwIAIfkEBQoADwAsAAAAAA8ACQAABC/wyVlamTi3nSdgwFNdhEJgTJoNyoB9ISYoQmdjiZPcj7EYCAeCF1gEDo4Dz2eIAAAh+QQFCgAPACwCAAAADQANAAAEM/DJBxiYeLKdX3IJZT1FU0iIg2RNKx3OkZVnZ98ToRD4MyiDnkAh6BkNC0MvsAj0kMpHBAAh+QQFCgAPACwGAAAACQAPAAAEMDC59KpFDll73HkAA2wVY5KgiK5b0RRoI6MuzG6EQqCDMlSGheEhUAgqgUUAFRySIgAh+QQFCgAPACwCAAIADQANAAAEM/DJKZNLND/kkKaHc3xk+QAMYDKsiaqmZCxGVjSFFCxB1vwy2oOgIDxuucxAMTAJFAJNBAAh+QQFCgAPACwAAAYADwAJAAAEMNAs86q1yaWwwv2Ig0jUZx3OYa4XoRAfwADXoAwfo1+CIjyFRuEho60aSNYlOPxEAAAh+QQFCgAPACwAAAIADQANAAAENPA9s4y8+IUVcqaWJ4qEQozSoAzoIyhCK2NFU2SJk0hNnyEOhKR2AzAAj4Pj4GE4W0bkJQIAOw==' );
|
128 |
-
}
|
129 |
-
|
130 |
-
/**
|
131 |
-
* Html output for button
|
132 |
-
*
|
133 |
-
* @param string $style Bootstrap type of button
|
134 |
-
* @param string $text Text of button
|
135 |
-
* @param string $class Class of button
|
136 |
-
* @param string $size Size of button
|
137 |
-
*
|
138 |
-
* @return string
|
139 |
-
*/
|
140 |
-
static function html_button( $style, $text = 'Button', $class = '', $size = '' ) {
|
141 |
-
return sprintf( '<button type="button" class="btn btn-%s %s %s">%s</button>', $style, $class, $size, $text );
|
142 |
-
}
|
143 |
-
|
144 |
-
/**
|
145 |
-
* Html output for a link, but style as button
|
146 |
-
*
|
147 |
-
* @deprecated since version 2.0
|
148 |
-
* @param string $link Value for href attribute of link
|
149 |
-
* @param string $style Bootstrap type of button
|
150 |
-
* @param string $text Text of button
|
151 |
-
* @param string $class Class of button
|
152 |
-
* @param string $size Size of button
|
153 |
-
*
|
154 |
-
* @return string
|
155 |
-
*/
|
156 |
-
static function link_button( $link, $style, $text = 'Button', $class = '', $size = '' ) {
|
157 |
-
return sprintf( '<a href="%s" class="btn btn-%s %s %s">%s</a>', $link, $style, $class, $size, $text );
|
158 |
-
}
|
159 |
-
|
160 |
-
/**
|
161 |
-
* Get Output HTML of a View type
|
162 |
-
*
|
163 |
-
* @param string $view_type The view type (grid, collapse...)
|
164 |
-
* @param object $post The post object
|
165 |
-
* @param string $style The style of view type (main, style2...)
|
166 |
-
*/
|
167 |
-
static function view_type_output( $view_type, $post, $post_idx = 0, $style = 'main' ) {
|
168 |
-
$dargs = PT_CV_Functions::get_global_variable( 'dargs' );
|
169 |
-
$content = NULL;
|
170 |
-
|
171 |
-
if ( empty( $view_type ) ) {
|
172 |
-
return $content;
|
173 |
-
}
|
174 |
-
|
175 |
-
//
|
176 |
-
$
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
$
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
*
|
230 |
-
*
|
231 |
-
*
|
232 |
-
* @
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
$
|
243 |
-
$
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
*
|
267 |
-
*
|
268 |
-
* @param
|
269 |
-
*
|
270 |
-
* @
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
$
|
282 |
-
$
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
$
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
$
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
*
|
342 |
-
*
|
343 |
-
*
|
344 |
-
* @
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
);
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
$
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
$
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
$
|
580 |
-
$
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
$
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
$
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
break;
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
$
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
$
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
'
|
739 |
-
'
|
740 |
-
'
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
'
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
'
|
752 |
-
'
|
753 |
-
'
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
'
|
759 |
-
'
|
760 |
-
'
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
871 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* HTML output, class, id generating
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
if ( !class_exists( 'PT_CV_Html' ) ) {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @name PT_CV_Html
|
19 |
+
* @todo related HTML functions: Define HTML layout, Set class name...
|
20 |
+
*/
|
21 |
+
class PT_CV_Html {
|
22 |
+
|
23 |
+
// Store directory of selected view_types
|
24 |
+
static $view_type_dir = array();
|
25 |
+
// Store all selected styles
|
26 |
+
static $style = array();
|
27 |
+
|
28 |
+
/**
|
29 |
+
* return class for Panel (Group of) group of params
|
30 |
+
*
|
31 |
+
* @return string
|
32 |
+
*/
|
33 |
+
static function html_panel_group_class() {
|
34 |
+
return 'panel-group';
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Return ID for Panel (Group of) group of params
|
39 |
+
*
|
40 |
+
* @param string $id Unique id of element
|
41 |
+
*
|
42 |
+
* @return string
|
43 |
+
*/
|
44 |
+
static function html_panel_group_id( $id ) {
|
45 |
+
return 'panel-group-' . $id;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Return class for group of params
|
50 |
+
*
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
static function html_group_class() {
|
54 |
+
return PT_CV_PREFIX . 'group';
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Return ID for group of params
|
59 |
+
*
|
60 |
+
* @param string $id Unique id of element
|
61 |
+
*
|
62 |
+
* @return string
|
63 |
+
*/
|
64 |
+
static function html_group_id( $id ) {
|
65 |
+
return self::html_group_class() . '-' . $id;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Collapse HTML
|
70 |
+
*
|
71 |
+
* @param string $parent_id Id of parent element
|
72 |
+
* @param string $id Unique id of element
|
73 |
+
* @param string $heading Heading text
|
74 |
+
* @param string $content Content
|
75 |
+
* @param bool $show Show/hide the content
|
76 |
+
*/
|
77 |
+
static function html_collapse_one( $parent_id, $id, $heading, $content = '', $show = true ) {
|
78 |
+
$class = $show ? 'in' : '';
|
79 |
+
ob_start();
|
80 |
+
?>
|
81 |
+
<div class="panel panel-primary pt-accordion">
|
82 |
+
<div class="panel-heading">
|
83 |
+
<h4 class="panel-title">
|
84 |
+
<a class="pt-accordion-a" data-parent="#<?php echo esc_attr( $parent_id ); ?>" data-target="#<?php echo esc_attr( $id ); ?>">
|
85 |
+
<?php echo $heading; ?>
|
86 |
+
</a>
|
87 |
+
</h4>
|
88 |
+
<span class="pull-right clickable"><i class="glyphicon glyphicon-minus"></i></span>
|
89 |
+
</div>
|
90 |
+
<div id="<?php echo esc_attr( $id ); ?>" class="panel-body <?php echo esc_attr( $class ); ?>">
|
91 |
+
<div class="panel-body">
|
92 |
+
<?php echo $content; ?>
|
93 |
+
</div>
|
94 |
+
</div>
|
95 |
+
</div>
|
96 |
+
<?php
|
97 |
+
return ob_get_clean();
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* HTML content of Preview box
|
102 |
+
*/
|
103 |
+
static function html_preview_box() {
|
104 |
+
ob_start();
|
105 |
+
?>
|
106 |
+
<div class="panel panel-default collapse <?php echo PT_CV_PREFIX; ?>wrapper" id="<?php echo PT_CV_PREFIX; ?>preview-box"></div>
|
107 |
+
<div class="text-center hidden" style="position: absolute; left: 50%; top: 160px;">
|
108 |
+
<?php echo self::html_loading_img(); ?>
|
109 |
+
</div>
|
110 |
+
<?php
|
111 |
+
return ob_get_clean();
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Show loading image
|
116 |
+
*
|
117 |
+
* @param type $dimension
|
118 |
+
*
|
119 |
+
* @return type
|
120 |
+
*/
|
121 |
+
static function html_loading_img( $dimension = 15, $class = '' ) {
|
122 |
+
$img = sprintf( '<img width="%1$s" height="%1$s" class="%2$s" alt="%3$s" src="%4$s" /><div class="clear %5$s"></div>', esc_attr( $dimension ), esc_attr( $class ), __( 'Loading...', 'content-views-query-and-display-post-page' ), self::loading_img_src(), PT_CV_PREFIX . 'clear-pagination' );
|
123 |
+
return apply_filters( PT_CV_PREFIX_ . 'loading_image', $img );
|
124 |
+
}
|
125 |
+
|
126 |
+
static function loading_img_src() {
|
127 |
+
return apply_filters( PT_CV_PREFIX_ . 'loading_image_url', 'data:image/gif;base64,R0lGODlhDwAPALMPAMrKygwMDJOTkz09PZWVla+vr3p6euTk5M7OzuXl5TMzMwAAAJmZmWZmZszMzP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAPACwAAAAADwAPAAAEQvDJaZaZOIcV8iQK8VRX4iTYoAwZ4iCYoAjZ4RxejhVNoT+mRGP4cyF4Pp0N98sBGIBMEMOotl6YZ3S61Bmbkm4mAgAh+QQFCgAPACwAAAAADQANAAAENPDJSRSZeA418itN8QiK8BiLITVsFiyBBIoYqnoewAD4xPw9iY4XLGYSjkQR4UAUD45DLwIAIfkEBQoADwAsAAAAAA8ACQAABC/wyVlamTi3nSdgwFNdhEJgTJoNyoB9ISYoQmdjiZPcj7EYCAeCF1gEDo4Dz2eIAAAh+QQFCgAPACwCAAAADQANAAAEM/DJBxiYeLKdX3IJZT1FU0iIg2RNKx3OkZVnZ98ToRD4MyiDnkAh6BkNC0MvsAj0kMpHBAAh+QQFCgAPACwGAAAACQAPAAAEMDC59KpFDll73HkAA2wVY5KgiK5b0RRoI6MuzG6EQqCDMlSGheEhUAgqgUUAFRySIgAh+QQFCgAPACwCAAIADQANAAAEM/DJKZNLND/kkKaHc3xk+QAMYDKsiaqmZCxGVjSFFCxB1vwy2oOgIDxuucxAMTAJFAJNBAAh+QQFCgAPACwAAAYADwAJAAAEMNAs86q1yaWwwv2Ig0jUZx3OYa4XoRAfwADXoAwfo1+CIjyFRuEho60aSNYlOPxEAAAh+QQFCgAPACwAAAIADQANAAAENPA9s4y8+IUVcqaWJ4qEQozSoAzoIyhCK2NFU2SJk0hNnyEOhKR2AzAAj4Pj4GE4W0bkJQIAOw==' );
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Html output for button
|
132 |
+
*
|
133 |
+
* @param string $style Bootstrap type of button
|
134 |
+
* @param string $text Text of button
|
135 |
+
* @param string $class Class of button
|
136 |
+
* @param string $size Size of button
|
137 |
+
*
|
138 |
+
* @return string
|
139 |
+
*/
|
140 |
+
static function html_button( $style, $text = 'Button', $class = '', $size = '' ) {
|
141 |
+
return sprintf( '<button type="button" class="btn btn-%s %s %s">%s</button>', $style, $class, $size, $text );
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* Html output for a link, but style as button
|
146 |
+
*
|
147 |
+
* @deprecated since version 2.0
|
148 |
+
* @param string $link Value for href attribute of link
|
149 |
+
* @param string $style Bootstrap type of button
|
150 |
+
* @param string $text Text of button
|
151 |
+
* @param string $class Class of button
|
152 |
+
* @param string $size Size of button
|
153 |
+
*
|
154 |
+
* @return string
|
155 |
+
*/
|
156 |
+
static function link_button( $link, $style, $text = 'Button', $class = '', $size = '' ) {
|
157 |
+
return sprintf( '<a href="%s" class="btn btn-%s %s %s">%s</a>', $link, $style, $class, $size, $text );
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* Get Output HTML of a View type
|
162 |
+
*
|
163 |
+
* @param string $view_type The view type (grid, collapse...)
|
164 |
+
* @param object $post The post object
|
165 |
+
* @param string $style The style of view type (main, style2...)
|
166 |
+
*/
|
167 |
+
static function view_type_output( $view_type, $post, $post_idx = 0, $style = 'main' ) {
|
168 |
+
$dargs = PT_CV_Functions::get_global_variable( 'dargs' );
|
169 |
+
$content = NULL;
|
170 |
+
|
171 |
+
if ( empty( $view_type ) ) {
|
172 |
+
return $content;
|
173 |
+
}
|
174 |
+
|
175 |
+
// Sanitize view_type
|
176 |
+
$view_type = in_array( $view_type, array_keys( PT_CV_Values::view_type() ) ) ? $view_type : 'grid';
|
177 |
+
|
178 |
+
// Get view type directory
|
179 |
+
$view_type_dir = apply_filters( PT_CV_PREFIX_ . 'view_type_dir', PT_CV_VIEW_TYPE_OUTPUT, $view_type ) . $view_type;
|
180 |
+
// Compatible code for other Pro versions
|
181 |
+
$view_type_dir = apply_filters( PT_CV_PREFIX_ . 'view_type_dir_special', $view_type_dir, $view_type );
|
182 |
+
if ( strpos( $view_type_dir, $view_type . $view_type ) !== false ) {
|
183 |
+
$view_type_dir = str_replace( $view_type . $view_type, $view_type, $view_type_dir );
|
184 |
+
}
|
185 |
+
|
186 |
+
// Get asset directory
|
187 |
+
$view_type_assets_dir = apply_filters( PT_CV_PREFIX_ . 'view_type_asset', $view_type_dir, $view_type );
|
188 |
+
|
189 |
+
if ( is_dir( $view_type_dir ) ) {
|
190 |
+
// Store view type & asset information
|
191 |
+
self::$view_type_dir[] = $view_type_assets_dir;
|
192 |
+
self::$style[] = $style;
|
193 |
+
|
194 |
+
// Generate HTML output of all content fields
|
195 |
+
$fields_html = array();
|
196 |
+
$other_dargs = apply_filters( PT_CV_PREFIX_ . 'dargs_others', $dargs, $post_idx );
|
197 |
+
foreach ( (array) $other_dargs[ 'fields' ] as $field_name ) {
|
198 |
+
// Get settings of fields
|
199 |
+
$fargs = isset( $other_dargs[ 'field-settings' ] ) ? $other_dargs[ 'field-settings' ] : array();
|
200 |
+
|
201 |
+
$fargs[ 'layout-format' ] = $other_dargs[ 'layout-format' ];
|
202 |
+
|
203 |
+
// Get HTML output of field
|
204 |
+
$item_html = self::field_item_html( $field_name, $post, $fargs );
|
205 |
+
if ( $item_html ) {
|
206 |
+
$fields_html[ $field_name ] = $item_html;
|
207 |
+
}
|
208 |
+
}
|
209 |
+
|
210 |
+
$fields_html = apply_filters( PT_CV_PREFIX_ . 'fields_html', $fields_html, $post );
|
211 |
+
$content = apply_filters( PT_CV_PREFIX_ . 'view_type_custom_output', $content, $fields_html, $post );
|
212 |
+
if ( !$content ) {
|
213 |
+
// Get HTML content of view type, with specific style
|
214 |
+
$file_path = apply_filters( PT_CV_PREFIX_ . 'view_type_file', $view_type_dir . '/' . 'html' . '/' . $style . '.' . 'php' );
|
215 |
+
|
216 |
+
if ( file_exists( $file_path ) ) {
|
217 |
+
ob_start();
|
218 |
+
// Include, not include_once
|
219 |
+
include $file_path;
|
220 |
+
$content = ob_get_clean();
|
221 |
+
}
|
222 |
+
}
|
223 |
+
}
|
224 |
+
|
225 |
+
return $content;
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Wrap content of a item
|
230 |
+
*
|
231 |
+
* @param array $html_item The HTML output of a item
|
232 |
+
* @param string $class The extra wrapper class of a item, such as col span
|
233 |
+
* @param array $post_id The post ID
|
234 |
+
*
|
235 |
+
* @return string Full HTML output of a item
|
236 |
+
*/
|
237 |
+
static function content_item_wrap( $html_item, $class = '', $post_id = 0 ) {
|
238 |
+
if ( empty( $html_item ) ) {
|
239 |
+
return '';
|
240 |
+
}
|
241 |
+
|
242 |
+
$classes = array( $class );
|
243 |
+
$classes[] = PT_CV_PREFIX . 'content-item';
|
244 |
+
$classes[] = PT_CV_PREFIX . PT_CV_Functions::setting_value( PT_CV_PREFIX . 'layout-format' );
|
245 |
+
$item_class = apply_filters( PT_CV_PREFIX_ . 'content_item_class', $classes, $post_id );
|
246 |
+
$item_filter = apply_filters( PT_CV_PREFIX_ . 'content_item_filter_value', '', $post_id );
|
247 |
+
|
248 |
+
ob_start();
|
249 |
+
do_action( PT_CV_PREFIX_ . 'item_extra_html', $post_id );
|
250 |
+
$html_item .= ob_get_clean();
|
251 |
+
|
252 |
+
$result = sprintf( '<div class="%s" %s>%s</div>', esc_attr( implode( ' ', $item_class ) ), cv_sanitize_html_data( $item_filter ), $html_item );
|
253 |
+
return apply_filters( PT_CV_PREFIX_ . 'item_final_html', $result, $post_id );
|
254 |
+
}
|
255 |
+
|
256 |
+
static function no_post_found() {
|
257 |
+
return apply_filters( PT_CV_PREFIX_ . 'content_no_post_found_text', __( 'No posts found.' ) );
|
258 |
+
}
|
259 |
+
|
260 |
+
static function grid_item_wrap( $content_item ) {
|
261 |
+
$class = PT_CV_PREFIX . 'ifield';
|
262 |
+
return "<div class='$class'>$content_item</div>";
|
263 |
+
}
|
264 |
+
|
265 |
+
/**
|
266 |
+
* Wrap content of all items
|
267 |
+
*
|
268 |
+
* @param array $content_items The array of Raw HTML output (is not wrapped) of each item
|
269 |
+
* @param int $current_page The current page
|
270 |
+
* @param int $post_per_page The number of posts per page
|
271 |
+
* @param int $id ID of View
|
272 |
+
*
|
273 |
+
* @return string Full HTML output for Content View
|
274 |
+
*/
|
275 |
+
static function content_items_wrap( $content_items, $current_page, $post_per_page, $id ) {
|
276 |
+
if ( empty( $content_items ) ) {
|
277 |
+
return PT_CV_Functions::debug_output( 'empty content_items', self::no_post_found() );
|
278 |
+
}
|
279 |
+
|
280 |
+
PT_CV_Functions::set_global_variable( 'content_items', $content_items );
|
281 |
+
$dargs = PT_CV_Functions::get_global_variable( 'dargs' );
|
282 |
+
$content = array();
|
283 |
+
$non_paging = !defined( 'PT_CV_DOING_PAGINATION' );
|
284 |
+
$before_output = $non_paging ? apply_filters( PT_CV_PREFIX_ . 'before_output_html', '' ) : '';
|
285 |
+
$view_type = $dargs[ 'view-type' ];
|
286 |
+
|
287 |
+
switch ( $view_type ) {
|
288 |
+
case 'grid':
|
289 |
+
$content_items = array_map( array( __CLASS__, 'grid_item_wrap' ), $content_items );
|
290 |
+
PT_CV_Html_ViewType::grid_wrapper( $content_items, $content );
|
291 |
+
|
292 |
+
break;
|
293 |
+
|
294 |
+
case 'collapsible':
|
295 |
+
PT_CV_Html_ViewType::collapsible_wrapper( $content_items, $content );
|
296 |
+
|
297 |
+
break;
|
298 |
+
|
299 |
+
case 'scrollable':
|
300 |
+
PT_CV_Html_ViewType::scrollable_wrapper( $content_items, $content );
|
301 |
+
|
302 |
+
break;
|
303 |
+
|
304 |
+
default :
|
305 |
+
foreach ( $content_items as $post_id => $content_item ) {
|
306 |
+
$content[] = PT_CV_Html::content_item_wrap( $content_item, '', $post_id );
|
307 |
+
}
|
308 |
+
|
309 |
+
$content = apply_filters( PT_CV_PREFIX_ . 'content_items_wrap', $content, $content_items, $current_page, $post_per_page );
|
310 |
+
|
311 |
+
break;
|
312 |
+
}
|
313 |
+
|
314 |
+
$content_list = implode( "\n", $content );
|
315 |
+
|
316 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'wrap_in_page', true ) ) {
|
317 |
+
$cols = sprintf( 'data-cvc="%s"', (int) $dargs[ 'number-columns' ] );
|
318 |
+
$page_attr = apply_filters( PT_CV_PREFIX_ . 'page_attr', $cols, $view_type, $content_items );
|
319 |
+
$html = sprintf( '<div data-id="%s" class="%s" %s>%s</div>', esc_attr( PT_CV_PREFIX . 'page' . '-' . $current_page ), esc_attr( apply_filters( PT_CV_PREFIX_ . 'page_class', PT_CV_PREFIX . 'page' ) ), cv_sanitize_html_data( $page_attr ), $content_list );
|
320 |
+
} else {
|
321 |
+
$html = $content_list;
|
322 |
+
}
|
323 |
+
|
324 |
+
// Wrap in View
|
325 |
+
if ( $non_paging ) {
|
326 |
+
$use_grid = PT_CV_Functions::get_global_variable( 'use_grid', true );
|
327 |
+
$view_class = apply_filters( PT_CV_PREFIX_ . 'view_class', array( PT_CV_PREFIX . 'view', PT_CV_PREFIX . $view_type, $use_grid ? PT_CV_PREFIX . 'colsys' : '', PT_CV_Functions::setting_value( PT_CV_PREFIX . 'lf-mobile-disable' ) ? PT_CV_PREFIX . 'nolf' : '' ) );
|
328 |
+
$view_id = PT_CV_PREFIX . 'view-' . $id;
|
329 |
+
$output = sprintf( '<div class="%s" id="%s">%s</div>', esc_attr( implode( ' ', array_filter( $view_class ) ) ), $view_id, $html );
|
330 |
+
|
331 |
+
// Keep this action for CVP < 3.5
|
332 |
+
do_action( PT_CV_PREFIX_ . 'store_view_data', $view_id );
|
333 |
+
} else {
|
334 |
+
$output = $html;
|
335 |
+
}
|
336 |
+
|
337 |
+
return apply_filters( PT_CV_PREFIX_ . 'view_all_output', $before_output . $output, $before_output, $output );
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* HTML output of a field (thumbnail, title, content, meta fields...)
|
342 |
+
*
|
343 |
+
* @param string $field_name The field name
|
344 |
+
* @param object $post The post object
|
345 |
+
* @param array $fargs The array of Field settings
|
346 |
+
*
|
347 |
+
* @return string
|
348 |
+
*/
|
349 |
+
static function field_item_html( $field_name, $post, $fargs ) {
|
350 |
+
if ( empty( $field_name ) ) {
|
351 |
+
return '';
|
352 |
+
}
|
353 |
+
|
354 |
+
$html = '';
|
355 |
+
|
356 |
+
switch ( $field_name ) {
|
357 |
+
|
358 |
+
case 'thumbnail':
|
359 |
+
if ( !empty( $fargs[ 'thumbnail' ] ) ) {
|
360 |
+
$html = self::_field_thumbnail( $post, $fargs );
|
361 |
+
}
|
362 |
+
|
363 |
+
break;
|
364 |
+
|
365 |
+
case 'title':
|
366 |
+
$html = self::_field_title( $post, $fargs );
|
367 |
+
|
368 |
+
break;
|
369 |
+
|
370 |
+
case 'content':
|
371 |
+
if ( !empty( $fargs[ 'content' ] ) ) {
|
372 |
+
$html = self::_field_content( $post, $fargs );
|
373 |
+
}
|
374 |
+
|
375 |
+
break;
|
376 |
+
|
377 |
+
case 'meta-fields':
|
378 |
+
if ( !empty( $fargs[ 'meta-fields' ] ) ) {
|
379 |
+
$html = self::_field_meta( $post, $fargs[ 'meta-fields' ] );
|
380 |
+
}
|
381 |
+
|
382 |
+
break;
|
383 |
+
|
384 |
+
default :
|
385 |
+
$html = apply_filters( PT_CV_PREFIX_ . 'field_item_html', $html, $field_name, $post );
|
386 |
+
break;
|
387 |
+
}
|
388 |
+
|
389 |
+
return apply_filters( PT_CV_PREFIX_ . 'item_' . $field_name, $html, $post );
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Get Title
|
394 |
+
*
|
395 |
+
* @return string
|
396 |
+
*/
|
397 |
+
static function _field_title( $post, $fargs ) {
|
398 |
+
$title_class = apply_filters( PT_CV_PREFIX_ . 'field_title_class', PT_CV_PREFIX . 'title' );
|
399 |
+
$tag = !empty( $fargs[ 'title' ][ 'tag' ] ) ? $fargs[ 'title' ][ 'tag' ] : 'h4';
|
400 |
+
$title = get_the_title( $post );
|
401 |
+
if ( empty( $title ) ) {
|
402 |
+
$title = __( '(no title)', 'content-views-query-and-display-post-page' );
|
403 |
+
}
|
404 |
+
|
405 |
+
$title = apply_filters( PT_CV_PREFIX_ . 'field_title_result', $title, $fargs, $post );
|
406 |
+
$html = sprintf(
|
407 |
+
'<%1$s class="%2$s">%3$s</%1$s>', tag_escape( $tag ), esc_attr( $title_class ), self::_field_href( $post, $title )
|
408 |
+
);
|
409 |
+
|
410 |
+
return apply_filters( PT_CV_PREFIX_ . 'field_title_final', $html, $post );
|
411 |
+
}
|
412 |
+
|
413 |
+
/**
|
414 |
+
* Get content
|
415 |
+
*
|
416 |
+
* @return string
|
417 |
+
*/
|
418 |
+
static function _field_content( $post, $fargs ) {
|
419 |
+
setup_postdata( $post );
|
420 |
+
|
421 |
+
do_action( PT_CV_PREFIX_ . 'before_content' );
|
422 |
+
|
423 |
+
$content_class = apply_filters( PT_CV_PREFIX_ . 'field_content_class', PT_CV_PREFIX . 'content' );
|
424 |
+
$tag = apply_filters( PT_CV_PREFIX_ . 'field_content_tag', 'div' );
|
425 |
+
$content = '';
|
426 |
+
$balance_tags = true;
|
427 |
+
|
428 |
+
switch ( $fargs[ 'content' ][ 'show' ] ) {
|
429 |
+
case 'excerpt':
|
430 |
+
$length = (int) $fargs[ 'content' ][ 'length' ];
|
431 |
+
$readmore_btn = '';
|
432 |
+
$show_dots = apply_filters( PT_CV_PREFIX_ . 'field_excerpt_dots', 1, $fargs );
|
433 |
+
$tail = $show_dots ? ' ...' : '';
|
434 |
+
|
435 |
+
// Read more button
|
436 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'field_content_readmore_enable', 1, $fargs[ 'content' ] ) ) {
|
437 |
+
$readmore_text = self::get_readmore_text( $fargs[ 'content' ] );
|
438 |
+
$btn_class = PT_CV_PREFIX . 'readmore ' . apply_filters( PT_CV_PREFIX_ . 'field_content_readmore_class', 'btn btn-success', $fargs );
|
439 |
+
$readmore_btn = self::_field_href( $post, $readmore_text, $btn_class );
|
440 |
+
$tail .= apply_filters( PT_CV_PREFIX_ . 'field_content_readmore_seperated', '<br/>', $fargs );
|
441 |
+
}
|
442 |
+
|
443 |
+
// Get excerpt
|
444 |
+
if ( $length > 0 ) {
|
445 |
+
$GLOBALS[ 'cv_excerpt_type' ] = 'content';
|
446 |
+
|
447 |
+
$full_excerpt = apply_filters( PT_CV_PREFIX_ . 'field_content_excerpt', get_the_content( '' ), $fargs, $post );
|
448 |
+
|
449 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'trim_excerpt', $GLOBALS[ 'cv_excerpt_type' ] == 'content' ) ) {
|
450 |
+
$excerpt = PT_CV_Functions::cv_trim_words( $full_excerpt, $length );
|
451 |
+
} else {
|
452 |
+
$excerpt = $full_excerpt;
|
453 |
+
}
|
454 |
+
|
455 |
+
// Append readmore button
|
456 |
+
$content = apply_filters( PT_CV_PREFIX_ . 'excerpt_html', ($show_dots ? rtrim( $excerpt, '.' ) : $excerpt) . $tail, $post ) . $readmore_btn;
|
457 |
+
} else {
|
458 |
+
// Display only readmore button if length <= 0
|
459 |
+
$content = $readmore_btn;
|
460 |
+
}
|
461 |
+
|
462 |
+
break;
|
463 |
+
|
464 |
+
case 'full':
|
465 |
+
ob_start();
|
466 |
+
the_content();
|
467 |
+
$content = ob_get_clean();
|
468 |
+
$content = apply_filters( PT_CV_PREFIX_ . 'field_content_full', $content, $fargs, $post );
|
469 |
+
|
470 |
+
if ( !empty( $fargs[ 'content' ][ 'skip-balance-tag' ] ) ) {
|
471 |
+
$balance_tags = false;
|
472 |
+
}
|
473 |
+
|
474 |
+
break;
|
475 |
+
}
|
476 |
+
|
477 |
+
$content = apply_filters( PT_CV_PREFIX_ . 'field_content_final', $content, $post );
|
478 |
+
$html = rtrim( $content, '.' ) ? sprintf( '<%1$s class="%2$s">%3$s</%1$s>', tag_escape( $tag ), esc_attr( $content_class ), $balance_tags ? force_balance_tags( $content ) : $content ) : '';
|
479 |
+
|
480 |
+
return $html;
|
481 |
+
}
|
482 |
+
|
483 |
+
/**
|
484 |
+
* Output link to item
|
485 |
+
*/
|
486 |
+
static function _field_href( $post, $content, $defined_class = '' ) {
|
487 |
+
$dargs = PT_CV_Functions::get_global_variable( 'dargs' );
|
488 |
+
$oargs = isset( $dargs[ 'other-settings' ] ) ? $dargs[ 'other-settings' ] : array();
|
489 |
+
|
490 |
+
$open_in = isset( $oargs[ 'open-in' ] ) ? $oargs[ 'open-in' ] : '_blank';
|
491 |
+
$href = apply_filters( PT_CV_PREFIX_ . 'field_href', get_permalink( $post->ID ), $post );
|
492 |
+
$href_class = apply_filters( PT_CV_PREFIX_ . 'field_href_class', array( $open_in, $defined_class ), $oargs );
|
493 |
+
$custom_attr = apply_filters( PT_CV_PREFIX_ . 'field_href_attrs', array(), $open_in, $oargs );
|
494 |
+
$html = sprintf( '<a href="%s" class="%s" target="%s" %s>%s</a>', esc_url( $href ), esc_attr( implode( ' ', array_filter( $href_class ) ) ), esc_attr( $open_in ), cv_sanitize_html_data( implode( ' ', $custom_attr ) ), $content );
|
495 |
+
|
496 |
+
return apply_filters( PT_CV_PREFIX_ . 'link_html', $html, array( $post, $content, $defined_class ) );
|
497 |
+
}
|
498 |
+
|
499 |
+
/**
|
500 |
+
* HTML output of thumbnail field
|
501 |
+
*
|
502 |
+
* @param object $post The post object
|
503 |
+
* @param array $_fargs The settings of this field
|
504 |
+
*
|
505 |
+
* @return string
|
506 |
+
*/
|
507 |
+
static function _field_thumbnail( $post, $_fargs ) {
|
508 |
+
$layout_format = $_fargs[ 'layout-format' ];
|
509 |
+
|
510 |
+
// Get thumbnail settings
|
511 |
+
$fargs = $_fargs[ 'thumbnail' ];
|
512 |
+
|
513 |
+
// Thumbnail class
|
514 |
+
$thumbnail_position = 'default';
|
515 |
+
$thumbnail_class = array();
|
516 |
+
$thumbnail_class[] = PT_CV_PREFIX . 'thumbnail';
|
517 |
+
$thumbnail_class[] = isset( $fargs[ 'style' ] ) ? $fargs[ 'style' ] : '';
|
518 |
+
if ( $layout_format === '2-col' ) {
|
519 |
+
$thumbnail_position = isset( $fargs[ 'position' ] ) ? $fargs[ 'position' ] : 'left';
|
520 |
+
$thumbnail_class[] = 'pull-' . $thumbnail_position;
|
521 |
+
}
|
522 |
+
$gargs = array(
|
523 |
+
'class' => apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_class', implode( ' ', array_filter( $thumbnail_class ) ) ),
|
524 |
+
);
|
525 |
+
|
526 |
+
/**
|
527 |
+
* @since 1.7.5
|
528 |
+
* able to disable responsive image of WordPress 4.4
|
529 |
+
*/
|
530 |
+
if ( PT_CV_Html::is_responsive_image_disabled() ) {
|
531 |
+
$gargs[ 'srcset' ] = 1;
|
532 |
+
}
|
533 |
+
|
534 |
+
// Get thumbnail dimensions
|
535 |
+
$dimensions = (array) apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_dimension_output', PT_CV_Functions::field_thumbnail_dimensions( $fargs ), $fargs );
|
536 |
+
|
537 |
+
// Check if has thumbnail ( has_post_thumbnail doesn't works )
|
538 |
+
$thumbnail_id = get_post_thumbnail_id( $post->ID );
|
539 |
+
$html = '';
|
540 |
+
if ( !empty( $thumbnail_id ) ) {
|
541 |
+
$thumbnail_size = count( $dimensions ) > 1 ? $dimensions : $dimensions[ 0 ];
|
542 |
+
$html = wp_get_attachment_image( (int) $thumbnail_id, $thumbnail_size, false, $gargs );
|
543 |
+
$html = apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_image', $html, $post, $dimensions, $fargs );
|
544 |
+
}
|
545 |
+
|
546 |
+
// If no thumbnail
|
547 |
+
if ( empty( $html ) || apply_filters( PT_CV_PREFIX_ . 'force_replace_thumbnail', 0 ) ) {
|
548 |
+
$html = apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_not_found', $html, $post, $dimensions, $gargs );
|
549 |
+
}
|
550 |
+
|
551 |
+
// Maybe add custom wrap for image
|
552 |
+
$html = apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_image_html', $html );
|
553 |
+
|
554 |
+
return apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_nolink', false ) ? $html :
|
555 |
+
self::_field_href( $post, $html, implode( ' ', array( PT_CV_PREFIX . 'href-thumbnail', PT_CV_PREFIX . 'thumb-' . $thumbnail_position ) ) );
|
556 |
+
}
|
557 |
+
|
558 |
+
/**
|
559 |
+
* HTML output of meta fields group
|
560 |
+
*
|
561 |
+
* @param object $post The post object
|
562 |
+
* @param array $fargs The settings of this field
|
563 |
+
*
|
564 |
+
* @return string
|
565 |
+
*/
|
566 |
+
static function _field_meta( $post, $fargs ) {
|
567 |
+
$html = array();
|
568 |
+
|
569 |
+
setup_postdata( $post );
|
570 |
+
|
571 |
+
foreach ( $fargs as $meta => $val ) {
|
572 |
+
if ( !$val ) {
|
573 |
+
continue;
|
574 |
+
}
|
575 |
+
|
576 |
+
switch ( $meta ) {
|
577 |
+
case 'date':
|
578 |
+
$date_class = apply_filters( PT_CV_PREFIX_ . 'field_meta_class', 'entry-date', 'date' );
|
579 |
+
$prefix_text = apply_filters( PT_CV_PREFIX_ . 'field_meta_prefix_text', '', 'date' );
|
580 |
+
$date_format = apply_filters( PT_CV_PREFIX_ . 'field_meta_date_format', get_option( 'date_format' ) );
|
581 |
+
$date = apply_filters( PT_CV_PREFIX_ . 'field_meta_date_final', mysql2date( $date_format, $post->post_date ), get_the_time( 'U' ) );
|
582 |
+
|
583 |
+
$html[ 'date' ] = sprintf( '<span class="%s">%s <time datetime="%s">%s</time></span>', esc_attr( $date_class ), $prefix_text, esc_attr( get_the_date( 'c' ) ), esc_html( $date ) );
|
584 |
+
break;
|
585 |
+
|
586 |
+
case 'taxonomy':
|
587 |
+
$term_class = apply_filters( PT_CV_PREFIX_ . 'field_meta_class', 'terms', 'terms' );
|
588 |
+
$prefix_text = apply_filters( PT_CV_PREFIX_ . 'field_meta_prefix_text', '', 'terms' );
|
589 |
+
|
590 |
+
$terms = PT_CV_Functions::post_terms( $post );
|
591 |
+
if ( !empty( $terms ) ) {
|
592 |
+
$term_html = sprintf( '<span class="%s">%s %s</span>', esc_attr( $term_class ), $prefix_text, $terms );
|
593 |
+
$html[ 'taxonomy' ] = apply_filters( PT_CV_PREFIX_ . 'field_term_html', $term_html, $terms );
|
594 |
+
}
|
595 |
+
break;
|
596 |
+
|
597 |
+
case 'comment':
|
598 |
+
if ( !post_password_required() && ( comments_open() || get_comments_number() ) ) :
|
599 |
+
$comment_class = apply_filters( PT_CV_PREFIX_ . 'field_meta_class', 'comments-link', 'comment' );
|
600 |
+
$prefix_text = apply_filters( PT_CV_PREFIX_ . 'field_meta_prefix_text', '', 'comment' );
|
601 |
+
|
602 |
+
ob_start();
|
603 |
+
comments_popup_link();
|
604 |
+
$comment_content = ob_get_clean();
|
605 |
+
$comment_content = apply_filters( PT_CV_PREFIX_ . 'comments_count', $comment_content );
|
606 |
+
$comment_html = sprintf( '<span class="%s">%s %s</span>', esc_attr( $comment_class ), $prefix_text, $comment_content );
|
607 |
+
$html[ 'comment' ] = apply_filters( PT_CV_PREFIX_ . 'field_comment_html', $comment_html, $post );
|
608 |
+
endif;
|
609 |
+
break;
|
610 |
+
|
611 |
+
case 'author':
|
612 |
+
$author_class = apply_filters( PT_CV_PREFIX_ . 'field_meta_class', 'author', 'author' );
|
613 |
+
$prefix_text = apply_filters( PT_CV_PREFIX_ . 'field_meta_prefix_text', '', 'author' );
|
614 |
+
|
615 |
+
$author_html = sprintf( '<span class="%s">%s <a href="%s" rel="author">%s</a></span>', esc_attr( $author_class ), $prefix_text, esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), get_the_author() );
|
616 |
+
$html[ 'author' ] = apply_filters( PT_CV_PREFIX_ . 'field_meta_author_html', $author_html, $post );
|
617 |
+
break;
|
618 |
+
|
619 |
+
default:
|
620 |
+
break;
|
621 |
+
}
|
622 |
+
}
|
623 |
+
|
624 |
+
// Merge fields, or let them as seperate items in array
|
625 |
+
$merge_fields = apply_filters( PT_CV_PREFIX_ . 'field_meta_merge_fields', true );
|
626 |
+
|
627 |
+
if ( $merge_fields ) {
|
628 |
+
$result = PT_CV_Html::_field_meta_wrap( $html );
|
629 |
+
} else {
|
630 |
+
$result = $html;
|
631 |
+
}
|
632 |
+
|
633 |
+
return $result;
|
634 |
+
}
|
635 |
+
|
636 |
+
/**
|
637 |
+
* Wrap meta fields in a wrapper
|
638 |
+
*
|
639 |
+
* @param array $meta_html Array of meta fields to wrapping
|
640 |
+
* @param string $seperator Seperator string when join meta fields
|
641 |
+
*
|
642 |
+
* @return string
|
643 |
+
*/
|
644 |
+
static function _field_meta_wrap( $meta_html, $seperator = NULL ) {
|
645 |
+
if ( !$meta_html ) {
|
646 |
+
return '';
|
647 |
+
}
|
648 |
+
|
649 |
+
$seperator = isset( $seperator ) ? $seperator : apply_filters( PT_CV_PREFIX_ . 'field_meta_seperator', ' / ' );
|
650 |
+
$class = apply_filters( PT_CV_PREFIX_ . 'field_meta_fields_class', PT_CV_PREFIX . 'meta-fields' );
|
651 |
+
$tag = apply_filters( PT_CV_PREFIX_ . 'field_meta_fields_tag', 'div' );
|
652 |
+
$wrapper = sprintf( '<%1$s class="%2$s">%3$s</%1$s>', tag_escape( $tag ), esc_attr( $class ), '%s' );
|
653 |
+
$meta_html = implode( $seperator, (array) apply_filters( PT_CV_PREFIX_ . 'meta_field_html', $meta_html ) );
|
654 |
+
$html = !empty( $meta_html ) ? sprintf( $wrapper, $meta_html ) : '';
|
655 |
+
|
656 |
+
return $html;
|
657 |
+
}
|
658 |
+
|
659 |
+
/**
|
660 |
+
* Output pagination
|
661 |
+
*
|
662 |
+
* @param type $max_num_pages The total of pages
|
663 |
+
* @param type $current_page The current pages
|
664 |
+
* @param string $sid View ID
|
665 |
+
*
|
666 |
+
* @return type
|
667 |
+
*/
|
668 |
+
static function pagination_output( $max_num_pages, $current_page, $sid ) {
|
669 |
+
if ( !$max_num_pages ) {
|
670 |
+
return '';
|
671 |
+
}
|
672 |
+
|
673 |
+
global $cv_unique_id;
|
674 |
+
$dargs = PT_CV_Functions::get_global_variable( 'dargs' );
|
675 |
+
$pagination_btn = '';
|
676 |
+
$type = isset( $dargs[ 'pagination-settings' ][ 'type' ] ) ? $dargs[ 'pagination-settings' ][ 'type' ] : 'ajax';
|
677 |
+
$style = isset( $dargs[ 'pagination-settings' ][ 'style' ] ) ? $dargs[ 'pagination-settings' ][ 'style' ] : 'regular';
|
678 |
+
|
679 |
+
if ( $type == 'normal' || $style == 'regular' ) {
|
680 |
+
$ul_class = implode( ' ', array( PT_CV_PREFIX . 'pagination', PT_CV_PREFIX . $type, 'pagination' ) );
|
681 |
+
$pagination_btn = sprintf( '<ul class="%s" data-totalpages="%s" data-currentpage="%s" data-sid="%s" data-unid="%s">%s</ul>', $ul_class, esc_attr( $max_num_pages ), esc_attr( $current_page ), esc_attr( $sid ), esc_attr( $cv_unique_id ), PT_CV_Functions::pagination_links( $max_num_pages, $current_page ) );
|
682 |
+
} else {
|
683 |
+
$pagination_btn = apply_filters( PT_CV_PREFIX_ . 'btn_more_html', $pagination_btn, $max_num_pages, $sid );
|
684 |
+
}
|
685 |
+
$pagination_btn .= self::html_loading_img( 15, PT_CV_PREFIX . 'spinner' );
|
686 |
+
|
687 |
+
$class = esc_attr( implode( ' ', array( apply_filters( PT_CV_PREFIX_ . 'pagination_class', '' ), PT_CV_PREFIX . 'pagination-wrapper' ) ) );
|
688 |
+
$output = sprintf( '<div class="%s">%s</div>', $class, $pagination_btn );
|
689 |
+
|
690 |
+
return apply_filters( PT_CV_PREFIX_ . 'pagination_output', $output );
|
691 |
+
}
|
692 |
+
|
693 |
+
static function assets_of_view_types() {
|
694 |
+
global $pt_cv_glb, $pt_cv_id;
|
695 |
+
|
696 |
+
// If already processed | have no View on this page -> return
|
697 |
+
if ( !empty( $pt_cv_glb[ $pt_cv_id ][ 'applied_assets' ] ) || !$pt_cv_id ) {
|
698 |
+
return;
|
699 |
+
}
|
700 |
+
// Mark as processed
|
701 |
+
$pt_cv_glb[ $pt_cv_id ][ 'applied_assets' ] = 1;
|
702 |
+
|
703 |
+
// Link to external files
|
704 |
+
$assets_files = apply_filters( PT_CV_PREFIX_ . 'assets_files', array() );
|
705 |
+
|
706 |
+
if ( is_admin() ) {
|
707 |
+
// Include assets file in Preview
|
708 |
+
foreach ( $assets_files as $type => $srcs ) {
|
709 |
+
foreach ( $srcs as $src ) {
|
710 |
+
PT_CV_Asset::include_inline( 'preview', $src, $type );
|
711 |
+
}
|
712 |
+
}
|
713 |
+
} else {
|
714 |
+
// Enqueue merged asset contents
|
715 |
+
foreach ( $assets_files as $type => $srcs ) {
|
716 |
+
foreach ( $srcs as $src ) {
|
717 |
+
$type = ( $type == 'js' ) ? 'script' : 'style';
|
718 |
+
$function = "wp_enqueue_{$type}";
|
719 |
+
|
720 |
+
if ( function_exists( $function ) ) {
|
721 |
+
$function( PT_CV_PREFIX . $type, $src );
|
722 |
+
}
|
723 |
+
}
|
724 |
+
}
|
725 |
+
}
|
726 |
+
|
727 |
+
// Output custom inline style for Views
|
728 |
+
if ( apply_filters( PT_CV_PREFIX_ . 'output_view_style', 1 ) ) {
|
729 |
+
do_action( PT_CV_PREFIX_ . 'print_view_style' );
|
730 |
+
}
|
731 |
+
}
|
732 |
+
|
733 |
+
/**
|
734 |
+
* Scripts for Preview & WP frontend
|
735 |
+
*/
|
736 |
+
static function frontend_scripts() {
|
737 |
+
PT_CV_Asset::enqueue(
|
738 |
+
'content-views', 'script', array(
|
739 |
+
'src' => plugins_url( 'public/assets/js/cv.js', PT_CV_FILE ),
|
740 |
+
'deps' => array( 'jquery' ),
|
741 |
+
)
|
742 |
+
);
|
743 |
+
|
744 |
+
PT_CV_Asset::localize_script(
|
745 |
+
'content-views', PT_CV_PREFIX_UPPER . 'PUBLIC', array(
|
746 |
+
'_prefix' => PT_CV_PREFIX,
|
747 |
+
'page_to_show' => apply_filters( PT_CV_PREFIX_ . 'pages_to_show', 5 ),
|
748 |
+
'_nonce' => wp_create_nonce( PT_CV_PREFIX_ . 'ajax_nonce' ),
|
749 |
+
'is_admin' => is_admin(),
|
750 |
+
'is_mobile' => apply_filters( PT_CV_PREFIX_ . 'is_mobile', wp_is_mobile() ),
|
751 |
+
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
752 |
+
'lang' => PT_CV_Functions::get_language(), #Get current language of site
|
753 |
+
'loading_image_src' => PT_CV_Html::loading_img_src(),
|
754 |
+
) + apply_filters( PT_CV_PREFIX_ . 'public_localize_script_extra', array() )
|
755 |
+
);
|
756 |
+
|
757 |
+
PT_CV_Asset::localize_script(
|
758 |
+
array( 'content-views', 'bootstrap-admin' ), PT_CV_PREFIX_UPPER . 'PAGINATION', apply_filters( PT_CV_PREFIX_ . 'pagination_text', array(
|
759 |
+
'links' => PT_CV_Functions::get_pagination_url(),
|
760 |
+
'first' => '«',
|
761 |
+
'prev' => '‹',
|
762 |
+
'next' => '›',
|
763 |
+
'last' => '»',
|
764 |
+
'goto_first' => __( 'Go to first page', 'content-views-query-and-display-post-page' ),
|
765 |
+
'goto_prev' => __( 'Go to previous page', 'content-views-query-and-display-post-page' ),
|
766 |
+
'goto_next' => __( 'Go to next page', 'content-views-query-and-display-post-page' ),
|
767 |
+
'goto_last' => __( 'Go to last page', 'content-views-query-and-display-post-page' ),
|
768 |
+
'current_page' => __( 'Current page is', 'content-views-query-and-display-post-page' ),
|
769 |
+
'goto_page' => __( 'Go to page', 'content-views-query-and-display-post-page' ),
|
770 |
+
) )
|
771 |
+
);
|
772 |
+
|
773 |
+
// Load Pro scripts
|
774 |
+
do_action( PT_CV_PREFIX_ . 'frontend_scripts' );
|
775 |
+
}
|
776 |
+
|
777 |
+
/**
|
778 |
+
* Styles for Preview & WP frontend
|
779 |
+
*
|
780 |
+
* @global bool $is_IE
|
781 |
+
*/
|
782 |
+
static function frontend_styles() {
|
783 |
+
PT_CV_Asset::enqueue(
|
784 |
+
'public', 'style', array(
|
785 |
+
'src' => plugins_url( 'public/assets/css/' . (!cv_is_damaged_style() ? 'cv.css' : 'cv.im.css'), PT_CV_FILE ),
|
786 |
+
)
|
787 |
+
);
|
788 |
+
|
789 |
+
// Fix bootstrap error in IE
|
790 |
+
global $is_IE;
|
791 |
+
if ( $is_IE ) {
|
792 |
+
PT_CV_Asset::enqueue(
|
793 |
+
'html5shiv', 'script', array(
|
794 |
+
'src' => plugins_url( 'assets/ie-fix/html5shiv.min.js', PT_CV_FILE ),
|
795 |
+
'ver' => '3.7.0',
|
796 |
+
)
|
797 |
+
);
|
798 |
+
PT_CV_Asset::enqueue(
|
799 |
+
'respond', 'script', array(
|
800 |
+
'src' => plugins_url( 'assets/ie-fix/respond.js', PT_CV_FILE ),
|
801 |
+
'ver' => '1.4.2',
|
802 |
+
)
|
803 |
+
);
|
804 |
+
}
|
805 |
+
|
806 |
+
// Load Pro styles
|
807 |
+
do_action( PT_CV_PREFIX_ . 'frontend_styles' );
|
808 |
+
}
|
809 |
+
|
810 |
+
/**
|
811 |
+
* Print inline js code
|
812 |
+
*
|
813 |
+
* @param string $js The js code
|
814 |
+
*
|
815 |
+
* @return string
|
816 |
+
*/
|
817 |
+
static function inline_script( $js, $wrap = true, $prefix = 'inline' ) {
|
818 |
+
// Generate random id for script tag
|
819 |
+
$random_id = PT_CV_Functions::string_random();
|
820 |
+
|
821 |
+
ob_start();
|
822 |
+
?>
|
823 |
+
<script type="text/javascript" id="<?php echo esc_attr( PT_CV_PREFIX . $prefix . '-script-' . $random_id ); ?>">
|
824 |
+
<?php
|
825 |
+
$newline = "\n";
|
826 |
+
$format = $wrap ? "(function($){\$(function(){ {$newline}%s{$newline} });}(jQuery));" : '%s';
|
827 |
+
printf( $format, $js );
|
828 |
+
?>
|
829 |
+
</script>
|
830 |
+
<?php
|
831 |
+
return ob_get_clean();
|
832 |
+
}
|
833 |
+
|
834 |
+
/**
|
835 |
+
* Print inline css code
|
836 |
+
*
|
837 |
+
* @param string $css The css code
|
838 |
+
*
|
839 |
+
* @return string
|
840 |
+
*/
|
841 |
+
static function inline_style( $css, $prefix = 'inline' ) {
|
842 |
+
// Generate random id for style tag
|
843 |
+
$random_id = PT_CV_Functions::string_random();
|
844 |
+
|
845 |
+
ob_start();
|
846 |
+
?>
|
847 |
+
<style type="text/css" id="<?php echo esc_attr( PT_CV_PREFIX . $prefix . '-style-' . $random_id ); ?>"><?php echo '' . $css; ?></style>
|
848 |
+
<?php
|
849 |
+
return ob_get_clean();
|
850 |
+
}
|
851 |
+
|
852 |
+
static function is_responsive_image_disabled() {
|
853 |
+
return apply_filters( PT_CV_PREFIX_ . 'disable_responsive_image', PT_CV_Functions::setting_value( PT_CV_PREFIX . 'field-thumbnail-nowprpi' ) );
|
854 |
+
}
|
855 |
+
|
856 |
+
/**
|
857 |
+
* Return Readmore text, able to get translation from CV, WP
|
858 |
+
*
|
859 |
+
* @since 1.9.1
|
860 |
+
* @param array $args
|
861 |
+
* @return string
|
862 |
+
*/
|
863 |
+
static function get_readmore_text( $args ) {
|
864 |
+
$result = '';
|
865 |
+
if ( !empty( $args[ 'readmore-text' ] ) ) {
|
866 |
+
$result = stripslashes( cv_sanitize_tag_content( $args[ 'readmore-text' ] ) );
|
867 |
+
// CV translation
|
868 |
+
if ( $result === 'Read More' ) {
|
869 |
+
$result = __( 'Read More', 'content-views-query-and-display-post-page' );
|
870 |
+
}
|
871 |
+
} else {
|
872 |
+
// WP translation
|
873 |
+
$result = ucwords( rtrim( __( 'Read more...' ), '.' ) );
|
874 |
+
}
|
875 |
+
return $result;
|
876 |
+
}
|
877 |
+
|
878 |
+
}
|
879 |
+
|
880 |
}
|
includes/settings.php
CHANGED
@@ -1,932 +1,972 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Define settings for options
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
if ( !class_exists( 'PT_CV_Settings' ) ) {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @name PT_CV_Settings
|
19 |
-
* @todo Define settings for options
|
20 |
-
*/
|
21 |
-
class PT_CV_Settings {
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Get collection : Taxonomies => Terms
|
25 |
-
*
|
26 |
-
* @param string $taxonomies Array of taxonomies
|
27 |
-
* @param array $args Array of query parameters
|
28 |
-
*/
|
29 |
-
static function terms_of_taxonomies( $taxonomies = array(), $args = array() ) {
|
30 |
-
$terms_of_taxonomies = $result = array();
|
31 |
-
// Get taxonomies
|
32 |
-
$taxonomies = PT_CV_Values::taxonomy_list();
|
33 |
-
// Get slug list of taxonomies
|
34 |
-
$taxonomies_slug = array_keys( $taxonomies );
|
35 |
-
|
36 |
-
foreach ( $taxonomies_slug as $taxonomy_slug ) {
|
37 |
-
PT_CV_Values::term_of_taxonomy( $taxonomy_slug, $terms_of_taxonomies, $args );
|
38 |
-
}
|
39 |
-
|
40 |
-
foreach ( $terms_of_taxonomies as $taxonomy_slug => $terms ) {
|
41 |
-
|
42 |
-
$result[ $taxonomy_slug ] = apply_filters( PT_CV_PREFIX_ . 'taxonomy_settings', array(
|
43 |
-
// Select term to filter
|
44 |
-
array(
|
45 |
-
'label' => array(
|
46 |
-
'text' => __( 'Select terms', 'content-views-query-and-display-post-page' ),
|
47 |
-
),
|
48 |
-
'params' => array(
|
49 |
-
array(
|
50 |
-
'type' => 'select',
|
51 |
-
'name' => $taxonomy_slug . '-terms[]',
|
52 |
-
'options' => $terms,
|
53 |
-
'std' => '',
|
54 |
-
'class' => apply_filters( PT_CV_PREFIX_ . 'select_term_class', 'select2' ),
|
55 |
-
'multiple' => '1',
|
56 |
-
),
|
57 |
-
),
|
58 |
-
),
|
59 |
-
//Operator
|
60 |
-
array(
|
61 |
-
'label' => array(
|
62 |
-
'text' => __( 'Operator', 'content-views-query-and-display-post-page' ),
|
63 |
-
),
|
64 |
-
'params' => array(
|
65 |
-
array(
|
66 |
-
'type' => 'select',
|
67 |
-
'name' => $taxonomy_slug . '-operator',
|
68 |
-
'options' => PT_CV_Values::taxonomy_operators(),
|
69 |
-
'std' => 'IN',
|
70 |
-
),
|
71 |
-
),
|
72 |
-
'dependence' => array( 'taxonomy-term-info', 'as_output', '!=' ),
|
73 |
-
),
|
74 |
-
), $taxonomy_slug );
|
75 |
-
}
|
76 |
-
|
77 |
-
return $result;
|
78 |
-
}
|
79 |
-
|
80 |
-
/**
|
81 |
-
* Order by options
|
82 |
-
*
|
83 |
-
* @return array
|
84 |
-
*/
|
85 |
-
static function orderby() {
|
86 |
-
$result = array();
|
87 |
-
|
88 |
-
$result[ 'common' ] = array(
|
89 |
-
// Order By
|
90 |
-
array(
|
91 |
-
'label' => array(
|
92 |
-
'text' => __( 'Sort by', 'content-views-query-and-display-post-page' ),
|
93 |
-
),
|
94 |
-
'params' => array(
|
95 |
-
array(
|
96 |
-
'type' => 'select',
|
97 |
-
'name' => 'orderby',
|
98 |
-
'options' => PT_CV_Values::post_regular_orderby(),
|
99 |
-
'std' => '',
|
100 |
-
),
|
101 |
-
),
|
102 |
-
),
|
103 |
-
// Upgrade to Pro: More sort by options
|
104 |
-
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Sort by drag & drop, custom field, slug, random order, menu order', 'content-views-query-and-display-post-page' ) ) : '',
|
105 |
-
// Order
|
106 |
-
apply_filters( PT_CV_PREFIX_ . 'orders', array(
|
107 |
-
'label' => array(
|
108 |
-
'text' => __( 'Order' ),
|
109 |
-
),
|
110 |
-
'params' => array(
|
111 |
-
array(
|
112 |
-
'type' => 'radio',
|
113 |
-
'name' => 'order',
|
114 |
-
'options' => PT_CV_Values::orders(),
|
115 |
-
'std' => 'asc',
|
116 |
-
),
|
117 |
-
),
|
118 |
-
) ),
|
119 |
-
);
|
120 |
-
|
121 |
-
$result = apply_filters( PT_CV_PREFIX_ . 'orderby', $result );
|
122 |
-
|
123 |
-
return $result;
|
124 |
-
}
|
125 |
-
|
126 |
-
/**
|
127 |
-
* Pagination settings
|
128 |
-
*
|
129 |
-
* @return array
|
130 |
-
*/
|
131 |
-
static function settings_pagination() {
|
132 |
-
|
133 |
-
$prefix = 'pagination-';
|
134 |
-
|
135 |
-
$result = array(
|
136 |
-
// Pagination
|
137 |
-
array(
|
138 |
-
'label' => array(
|
139 |
-
'text' => '',
|
140 |
-
),
|
141 |
-
'extra_setting' => array(
|
142 |
-
'params' => array(
|
143 |
-
'width' => 12,
|
144 |
-
),
|
145 |
-
),
|
146 |
-
'params' => array(
|
147 |
-
array(
|
148 |
-
'type' => 'checkbox',
|
149 |
-
'name' => 'enable-pagination',
|
150 |
-
'options' => PT_CV_Values::yes_no( 'yes', __( 'Enable' ) ),
|
151 |
-
'std' => '',
|
152 |
-
),
|
153 |
-
),
|
154 |
-
),
|
155 |
-
// Items per page
|
156 |
-
array(
|
157 |
-
'label' => array(
|
158 |
-
'text' => __( 'Items per page', 'content-views-query-and-display-post-page' ),
|
159 |
-
),
|
160 |
-
'extra_setting' => array(
|
161 |
-
'params' => array(
|
162 |
-
'wrap-class' => PT_CV_PREFIX . 'w200',
|
163 |
-
),
|
164 |
-
),
|
165 |
-
'params' => array(
|
166 |
-
array(
|
167 |
-
'type' => 'number',
|
168 |
-
'name' => $prefix . 'items-per-page',
|
169 |
-
'std' => '5',
|
170 |
-
'placeholder' => 'for example: 5',
|
171 |
-
'desc' => sprintf( __( 'If value of the %s setting is not empty, this value should be smaller than that', 'content-views-query-and-display-post-page' ), sprintf( '<code>%s</code>', __( 'Limit', 'content-views-query-and-display-post-page' ) ) ),
|
172 |
-
),
|
173 |
-
),
|
174 |
-
'dependence' => array( 'enable-pagination', 'yes' ),
|
175 |
-
),
|
176 |
-
// Pagination Type
|
177 |
-
array(
|
178 |
-
'label' => array(
|
179 |
-
'text' => __( 'Type' ),
|
180 |
-
),
|
181 |
-
'params' => array(
|
182 |
-
array(
|
183 |
-
'type' => 'radio',
|
184 |
-
'name' => $prefix . 'type',
|
185 |
-
'options' => PT_CV_Values::pagination_types(),
|
186 |
-
'std' => 'ajax',
|
187 |
-
),
|
188 |
-
),
|
189 |
-
'dependence' => array( 'enable-pagination', 'yes' ),
|
190 |
-
),
|
191 |
-
// Pagination Style
|
192 |
-
array(
|
193 |
-
'label' => array(
|
194 |
-
'text' => '',
|
195 |
-
),
|
196 |
-
'extra_setting' => array(
|
197 |
-
'params' => array(
|
198 |
-
'width' => 12,
|
199 |
-
),
|
200 |
-
),
|
201 |
-
'params' => array(
|
202 |
-
array(
|
203 |
-
'type' => 'group',
|
204 |
-
'params' => array(
|
205 |
-
array(
|
206 |
-
'label' => array(
|
207 |
-
'text' => __( 'Style', 'content-views-query-and-display-post-page' ),
|
208 |
-
),
|
209 |
-
'params' => array(
|
210 |
-
array(
|
211 |
-
'type' => 'radio',
|
212 |
-
'name' => $prefix . 'style',
|
213 |
-
'options' => PT_CV_Values::pagination_styles(),
|
214 |
-
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::pagination_styles() ),
|
215 |
-
),
|
216 |
-
),
|
217 |
-
'dependence' => array( $prefix . 'type', 'normal', '!=' ),
|
218 |
-
),
|
219 |
-
),
|
220 |
-
),
|
221 |
-
),
|
222 |
-
'dependence' => array( 'enable-pagination', 'yes' ),
|
223 |
-
),
|
224 |
-
);
|
225 |
-
|
226 |
-
$result = apply_filters( PT_CV_PREFIX_ . 'settings_pagination', $result, $prefix );
|
227 |
-
|
228 |
-
return $result;
|
229 |
-
}
|
230 |
-
|
231 |
-
/**
|
232 |
-
* Other settings for All View Type
|
233 |
-
*/
|
234 |
-
static function settings_other() {
|
235 |
-
|
236 |
-
$prefix = 'other-';
|
237 |
-
|
238 |
-
$result = array(
|
239 |
-
// Open an item in
|
240 |
-
array(
|
241 |
-
'label' => array(
|
242 |
-
'text' => __( 'Open item in', 'content-views-query-and-display-post-page' ),
|
243 |
-
),
|
244 |
-
'params' => array(
|
245 |
-
array(
|
246 |
-
'type' => 'radio',
|
247 |
-
'name' => $prefix . 'open-in',
|
248 |
-
'options' => PT_CV_Values::open_in(),
|
249 |
-
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::open_in() ),
|
250 |
-
'desc' => __( 'How to open item when click on Title, Thumbnail, Read-more button', 'content-views-query-and-display-post-page' ),
|
251 |
-
),
|
252 |
-
),
|
253 |
-
),
|
254 |
-
);
|
255 |
-
|
256 |
-
$result = apply_filters( PT_CV_PREFIX_ . 'settings_other', $result, $prefix );
|
257 |
-
|
258 |
-
return $result;
|
259 |
-
}
|
260 |
-
|
261 |
-
/**
|
262 |
-
* Fields settings
|
263 |
-
*/
|
264 |
-
static function field_settings() {
|
265 |
-
|
266 |
-
$prefix = 'field-';
|
267 |
-
$prefix2 = 'show-' . $prefix;
|
268 |
-
|
269 |
-
$result = array(
|
270 |
-
// Fields display
|
271 |
-
array(
|
272 |
-
'label' => array(
|
273 |
-
'text' => '',
|
274 |
-
),
|
275 |
-
'extra_setting' => array(
|
276 |
-
'params' => array(
|
277 |
-
'wrap-class' => PT_CV_Html::html_group_class(),
|
278 |
-
'width' => 12,
|
279 |
-
),
|
280 |
-
),
|
281 |
-
'params' => array(
|
282 |
-
array(
|
283 |
-
'type' => 'group',
|
284 |
-
'params' => PT_CV_Settings::field_display_settings(),
|
285 |
-
),
|
286 |
-
),
|
287 |
-
),
|
288 |
-
// Upgrade to Pro: Drag & Drop
|
289 |
-
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Show Custom Fields, show Title above Thumbnail...', 'content-views-query-and-display-post-page' ), 12, 'margin-top: -15px; margin-bottom: 5px; width: 100%;' ) : '',
|
290 |
-
// Title settings
|
291 |
-
get_option( 'pt_cv_version_pro' ) ? apply_filters( PT_CV_PREFIX_ . 'settings_title_display', array(), $prefix, $prefix2 ) :
|
292 |
-
array(
|
293 |
-
'label' => array(
|
294 |
-
'text' => __( 'Title' ),
|
295 |
-
),
|
296 |
-
'extra_setting' => array(
|
297 |
-
'params' => array(
|
298 |
-
'group-class' => PT_CV_PREFIX . 'field-setting',
|
299 |
-
'wrap-class' => PT_CV_Html::html_group_class() . ' ' . PT_CV_PREFIX . 'title-setting',
|
300 |
-
),
|
301 |
-
),
|
302 |
-
'params' => array(
|
303 |
-
array(
|
304 |
-
'type' => 'group',
|
305 |
-
'params' => array(
|
306 |
-
PT_CV_Settings::title_heading_tag( $prefix )
|
307 |
-
),
|
308 |
-
),
|
309 |
-
),
|
310 |
-
'dependence' => array( $prefix2 . 'title', 'yes' ),
|
311 |
-
)
|
312 |
-
,
|
313 |
-
// Thumbnail settings
|
314 |
-
array(
|
315 |
-
'label' => array(
|
316 |
-
'text' => __( 'Thumbnail' ),
|
317 |
-
),
|
318 |
-
'extra_setting' => array(
|
319 |
-
'params' => array(
|
320 |
-
'group-class' => PT_CV_PREFIX . 'field-setting',
|
321 |
-
'wrap-class' => PT_CV_Html::html_group_class() . ' ' . PT_CV_PREFIX . 'thumbnail-setting' . ' ' . PT_CV_PREFIX . 'w50',
|
322 |
-
),
|
323 |
-
),
|
324 |
-
'params' => array(
|
325 |
-
array(
|
326 |
-
'type' => 'group',
|
327 |
-
'params' => PT_CV_Settings::field_thumbnail_settings( $prefix ),
|
328 |
-
),
|
329 |
-
),
|
330 |
-
'dependence' => array( $prefix2 . 'thumbnail', 'yes' ),
|
331 |
-
),
|
332 |
-
// Content settings
|
333 |
-
array(
|
334 |
-
'label' => array(
|
335 |
-
'text' => __( 'Content' ),
|
336 |
-
),
|
337 |
-
'extra_setting' => array(
|
338 |
-
'params' => array(
|
339 |
-
'group-class' => PT_CV_PREFIX . 'field-setting' . ' ' . PT_CV_PREFIX . 'content-setting',
|
340 |
-
),
|
341 |
-
),
|
342 |
-
'params' => array(
|
343 |
-
array(
|
344 |
-
'type' => 'radio',
|
345 |
-
'name' => $prefix . 'content-show',
|
346 |
-
'options' => array(
|
347 |
-
'full' => __( 'Show Full Content', 'content-views-query-and-display-post-page' ),
|
348 |
-
'excerpt' => __( 'Show Excerpt', 'content-views-query-and-display-post-page' ),
|
349 |
-
),
|
350 |
-
'std' => 'excerpt',
|
351 |
-
),
|
352 |
-
),
|
353 |
-
'dependence' => array( $prefix2 . 'content', 'yes' ),
|
354 |
-
),
|
355 |
-
//
|
356 |
-
array(
|
357 |
-
'label' => array(
|
358 |
-
'text' => '',
|
359 |
-
),
|
360 |
-
'extra_setting' => array(
|
361 |
-
'params' => array(
|
362 |
-
'width' => 12,
|
363 |
-
'group-class' => PT_CV_PREFIX . 'field-setting' . ' ' . PT_CV_PREFIX . 'excerpt-setting',
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
'
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
'
|
383 |
-
'
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
),
|
429 |
-
),
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
'
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
//
|
555 |
-
array(
|
556 |
-
'label' => array(
|
557 |
-
'text' => '',
|
558 |
-
),
|
559 |
-
'extra_setting' => array(
|
560 |
-
'params' => array(
|
561 |
-
'
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
'
|
568 |
-
'
|
569 |
-
'
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
'
|
588 |
-
'
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
'
|
607 |
-
'
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
),
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
'
|
726 |
-
'
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
'
|
745 |
-
'
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
'
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
'
|
778 |
-
),
|
779 |
-
),
|
780 |
-
'
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
$
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
|
898 |
-
|
899 |
-
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
|
909 |
-
|
910 |
-
|
911 |
-
|
912 |
-
|
913 |
-
|
914 |
-
|
915 |
-
|
916 |
-
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
921 |
-
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
|
927 |
-
|
928 |
-
|
929 |
-
|
930 |
-
|
931 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
932 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Define settings for options
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
if ( !class_exists( 'PT_CV_Settings' ) ) {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @name PT_CV_Settings
|
19 |
+
* @todo Define settings for options
|
20 |
+
*/
|
21 |
+
class PT_CV_Settings {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Get collection : Taxonomies => Terms
|
25 |
+
*
|
26 |
+
* @param string $taxonomies Array of taxonomies
|
27 |
+
* @param array $args Array of query parameters
|
28 |
+
*/
|
29 |
+
static function terms_of_taxonomies( $taxonomies = array(), $args = array() ) {
|
30 |
+
$terms_of_taxonomies = $result = array();
|
31 |
+
// Get taxonomies
|
32 |
+
$taxonomies = PT_CV_Values::taxonomy_list();
|
33 |
+
// Get slug list of taxonomies
|
34 |
+
$taxonomies_slug = array_keys( $taxonomies );
|
35 |
+
|
36 |
+
foreach ( $taxonomies_slug as $taxonomy_slug ) {
|
37 |
+
PT_CV_Values::term_of_taxonomy( $taxonomy_slug, $terms_of_taxonomies, $args );
|
38 |
+
}
|
39 |
+
|
40 |
+
foreach ( $terms_of_taxonomies as $taxonomy_slug => $terms ) {
|
41 |
+
|
42 |
+
$result[ $taxonomy_slug ] = apply_filters( PT_CV_PREFIX_ . 'taxonomy_settings', array(
|
43 |
+
// Select term to filter
|
44 |
+
array(
|
45 |
+
'label' => array(
|
46 |
+
'text' => __( 'Select terms', 'content-views-query-and-display-post-page' ),
|
47 |
+
),
|
48 |
+
'params' => array(
|
49 |
+
array(
|
50 |
+
'type' => 'select',
|
51 |
+
'name' => $taxonomy_slug . '-terms[]',
|
52 |
+
'options' => $terms,
|
53 |
+
'std' => '',
|
54 |
+
'class' => apply_filters( PT_CV_PREFIX_ . 'select_term_class', 'select2' ),
|
55 |
+
'multiple' => '1',
|
56 |
+
),
|
57 |
+
),
|
58 |
+
),
|
59 |
+
//Operator
|
60 |
+
array(
|
61 |
+
'label' => array(
|
62 |
+
'text' => __( 'Operator', 'content-views-query-and-display-post-page' ),
|
63 |
+
),
|
64 |
+
'params' => array(
|
65 |
+
array(
|
66 |
+
'type' => 'select',
|
67 |
+
'name' => $taxonomy_slug . '-operator',
|
68 |
+
'options' => PT_CV_Values::taxonomy_operators(),
|
69 |
+
'std' => 'IN',
|
70 |
+
),
|
71 |
+
),
|
72 |
+
'dependence' => array( 'taxonomy-term-info', 'as_output', '!=' ),
|
73 |
+
),
|
74 |
+
), $taxonomy_slug );
|
75 |
+
}
|
76 |
+
|
77 |
+
return $result;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Order by options
|
82 |
+
*
|
83 |
+
* @return array
|
84 |
+
*/
|
85 |
+
static function orderby() {
|
86 |
+
$result = array();
|
87 |
+
|
88 |
+
$result[ 'common' ] = array(
|
89 |
+
// Order By
|
90 |
+
array(
|
91 |
+
'label' => array(
|
92 |
+
'text' => __( 'Sort by', 'content-views-query-and-display-post-page' ),
|
93 |
+
),
|
94 |
+
'params' => array(
|
95 |
+
array(
|
96 |
+
'type' => 'select',
|
97 |
+
'name' => 'orderby',
|
98 |
+
'options' => PT_CV_Values::post_regular_orderby(),
|
99 |
+
'std' => '',
|
100 |
+
),
|
101 |
+
),
|
102 |
+
),
|
103 |
+
// Upgrade to Pro: More sort by options
|
104 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Sort by drag & drop, custom field, slug, random order, menu order', 'content-views-query-and-display-post-page' ) ) : '',
|
105 |
+
// Order
|
106 |
+
apply_filters( PT_CV_PREFIX_ . 'orders', array(
|
107 |
+
'label' => array(
|
108 |
+
'text' => __( 'Order' ),
|
109 |
+
),
|
110 |
+
'params' => array(
|
111 |
+
array(
|
112 |
+
'type' => 'radio',
|
113 |
+
'name' => 'order',
|
114 |
+
'options' => PT_CV_Values::orders(),
|
115 |
+
'std' => 'asc',
|
116 |
+
),
|
117 |
+
),
|
118 |
+
) ),
|
119 |
+
);
|
120 |
+
|
121 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'orderby', $result );
|
122 |
+
|
123 |
+
return $result;
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* Pagination settings
|
128 |
+
*
|
129 |
+
* @return array
|
130 |
+
*/
|
131 |
+
static function settings_pagination() {
|
132 |
+
|
133 |
+
$prefix = 'pagination-';
|
134 |
+
|
135 |
+
$result = array(
|
136 |
+
// Pagination
|
137 |
+
array(
|
138 |
+
'label' => array(
|
139 |
+
'text' => '',
|
140 |
+
),
|
141 |
+
'extra_setting' => array(
|
142 |
+
'params' => array(
|
143 |
+
'width' => 12,
|
144 |
+
),
|
145 |
+
),
|
146 |
+
'params' => array(
|
147 |
+
array(
|
148 |
+
'type' => 'checkbox',
|
149 |
+
'name' => 'enable-pagination',
|
150 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Enable' ) ),
|
151 |
+
'std' => '',
|
152 |
+
),
|
153 |
+
),
|
154 |
+
),
|
155 |
+
// Items per page
|
156 |
+
array(
|
157 |
+
'label' => array(
|
158 |
+
'text' => __( 'Items per page', 'content-views-query-and-display-post-page' ),
|
159 |
+
),
|
160 |
+
'extra_setting' => array(
|
161 |
+
'params' => array(
|
162 |
+
'wrap-class' => PT_CV_PREFIX . 'w200',
|
163 |
+
),
|
164 |
+
),
|
165 |
+
'params' => array(
|
166 |
+
array(
|
167 |
+
'type' => 'number',
|
168 |
+
'name' => $prefix . 'items-per-page',
|
169 |
+
'std' => '5',
|
170 |
+
'placeholder' => 'for example: 5',
|
171 |
+
'desc' => sprintf( __( 'If value of the %s setting is not empty, this value should be smaller than that', 'content-views-query-and-display-post-page' ), sprintf( '<code>%s</code>', __( 'Limit', 'content-views-query-and-display-post-page' ) ) ),
|
172 |
+
),
|
173 |
+
),
|
174 |
+
'dependence' => array( 'enable-pagination', 'yes' ),
|
175 |
+
),
|
176 |
+
// Pagination Type
|
177 |
+
array(
|
178 |
+
'label' => array(
|
179 |
+
'text' => __( 'Type' ),
|
180 |
+
),
|
181 |
+
'params' => array(
|
182 |
+
array(
|
183 |
+
'type' => 'radio',
|
184 |
+
'name' => $prefix . 'type',
|
185 |
+
'options' => PT_CV_Values::pagination_types(),
|
186 |
+
'std' => 'ajax',
|
187 |
+
),
|
188 |
+
),
|
189 |
+
'dependence' => array( 'enable-pagination', 'yes' ),
|
190 |
+
),
|
191 |
+
// Pagination Style
|
192 |
+
array(
|
193 |
+
'label' => array(
|
194 |
+
'text' => '',
|
195 |
+
),
|
196 |
+
'extra_setting' => array(
|
197 |
+
'params' => array(
|
198 |
+
'width' => 12,
|
199 |
+
),
|
200 |
+
),
|
201 |
+
'params' => array(
|
202 |
+
array(
|
203 |
+
'type' => 'group',
|
204 |
+
'params' => array(
|
205 |
+
array(
|
206 |
+
'label' => array(
|
207 |
+
'text' => __( 'Style', 'content-views-query-and-display-post-page' ),
|
208 |
+
),
|
209 |
+
'params' => array(
|
210 |
+
array(
|
211 |
+
'type' => 'radio',
|
212 |
+
'name' => $prefix . 'style',
|
213 |
+
'options' => PT_CV_Values::pagination_styles(),
|
214 |
+
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::pagination_styles() ),
|
215 |
+
),
|
216 |
+
),
|
217 |
+
'dependence' => array( $prefix . 'type', 'normal', '!=' ),
|
218 |
+
),
|
219 |
+
),
|
220 |
+
),
|
221 |
+
),
|
222 |
+
'dependence' => array( 'enable-pagination', 'yes' ),
|
223 |
+
),
|
224 |
+
);
|
225 |
+
|
226 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'settings_pagination', $result, $prefix );
|
227 |
+
|
228 |
+
return $result;
|
229 |
+
}
|
230 |
+
|
231 |
+
/**
|
232 |
+
* Other settings for All View Type
|
233 |
+
*/
|
234 |
+
static function settings_other() {
|
235 |
+
|
236 |
+
$prefix = 'other-';
|
237 |
+
|
238 |
+
$result = array(
|
239 |
+
// Open an item in
|
240 |
+
array(
|
241 |
+
'label' => array(
|
242 |
+
'text' => __( 'Open item in', 'content-views-query-and-display-post-page' ),
|
243 |
+
),
|
244 |
+
'params' => array(
|
245 |
+
array(
|
246 |
+
'type' => 'radio',
|
247 |
+
'name' => $prefix . 'open-in',
|
248 |
+
'options' => PT_CV_Values::open_in(),
|
249 |
+
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::open_in() ),
|
250 |
+
'desc' => __( 'How to open item when click on Title, Thumbnail, Read-more button', 'content-views-query-and-display-post-page' ),
|
251 |
+
),
|
252 |
+
),
|
253 |
+
),
|
254 |
+
);
|
255 |
+
|
256 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'settings_other', $result, $prefix );
|
257 |
+
|
258 |
+
return $result;
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Fields settings
|
263 |
+
*/
|
264 |
+
static function field_settings() {
|
265 |
+
|
266 |
+
$prefix = 'field-';
|
267 |
+
$prefix2 = 'show-' . $prefix;
|
268 |
+
|
269 |
+
$result = array(
|
270 |
+
// Fields display
|
271 |
+
array(
|
272 |
+
'label' => array(
|
273 |
+
'text' => '',
|
274 |
+
),
|
275 |
+
'extra_setting' => array(
|
276 |
+
'params' => array(
|
277 |
+
'wrap-class' => PT_CV_Html::html_group_class(),
|
278 |
+
'width' => 12,
|
279 |
+
),
|
280 |
+
),
|
281 |
+
'params' => array(
|
282 |
+
array(
|
283 |
+
'type' => 'group',
|
284 |
+
'params' => PT_CV_Settings::field_display_settings(),
|
285 |
+
),
|
286 |
+
),
|
287 |
+
),
|
288 |
+
// Upgrade to Pro: Drag & Drop
|
289 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Show Custom Fields, show Title above Thumbnail...', 'content-views-query-and-display-post-page' ), 12, 'margin-top: -15px; margin-bottom: 5px; width: 100%;' ) : '',
|
290 |
+
// Title settings
|
291 |
+
get_option( 'pt_cv_version_pro' ) ? apply_filters( PT_CV_PREFIX_ . 'settings_title_display', array(), $prefix, $prefix2 ) :
|
292 |
+
array(
|
293 |
+
'label' => array(
|
294 |
+
'text' => __( 'Title' ),
|
295 |
+
),
|
296 |
+
'extra_setting' => array(
|
297 |
+
'params' => array(
|
298 |
+
'group-class' => PT_CV_PREFIX . 'field-setting',
|
299 |
+
'wrap-class' => PT_CV_Html::html_group_class() . ' ' . PT_CV_PREFIX . 'title-setting',
|
300 |
+
),
|
301 |
+
),
|
302 |
+
'params' => array(
|
303 |
+
array(
|
304 |
+
'type' => 'group',
|
305 |
+
'params' => array(
|
306 |
+
PT_CV_Settings::title_heading_tag( $prefix )
|
307 |
+
),
|
308 |
+
),
|
309 |
+
),
|
310 |
+
'dependence' => array( $prefix2 . 'title', 'yes' ),
|
311 |
+
)
|
312 |
+
,
|
313 |
+
// Thumbnail settings
|
314 |
+
array(
|
315 |
+
'label' => array(
|
316 |
+
'text' => __( 'Thumbnail' ),
|
317 |
+
),
|
318 |
+
'extra_setting' => array(
|
319 |
+
'params' => array(
|
320 |
+
'group-class' => PT_CV_PREFIX . 'field-setting',
|
321 |
+
'wrap-class' => PT_CV_Html::html_group_class() . ' ' . PT_CV_PREFIX . 'thumbnail-setting' . ' ' . PT_CV_PREFIX . 'w50',
|
322 |
+
),
|
323 |
+
),
|
324 |
+
'params' => array(
|
325 |
+
array(
|
326 |
+
'type' => 'group',
|
327 |
+
'params' => PT_CV_Settings::field_thumbnail_settings( $prefix ),
|
328 |
+
),
|
329 |
+
),
|
330 |
+
'dependence' => array( $prefix2 . 'thumbnail', 'yes' ),
|
331 |
+
),
|
332 |
+
// Content settings
|
333 |
+
array(
|
334 |
+
'label' => array(
|
335 |
+
'text' => __( 'Content' ),
|
336 |
+
),
|
337 |
+
'extra_setting' => array(
|
338 |
+
'params' => array(
|
339 |
+
'group-class' => PT_CV_PREFIX . 'field-setting' . ' ' . PT_CV_PREFIX . 'content-setting',
|
340 |
+
),
|
341 |
+
),
|
342 |
+
'params' => array(
|
343 |
+
array(
|
344 |
+
'type' => 'radio',
|
345 |
+
'name' => $prefix . 'content-show',
|
346 |
+
'options' => array(
|
347 |
+
'full' => __( 'Show Full Content', 'content-views-query-and-display-post-page' ),
|
348 |
+
'excerpt' => __( 'Show Excerpt', 'content-views-query-and-display-post-page' ),
|
349 |
+
),
|
350 |
+
'std' => 'excerpt',
|
351 |
+
),
|
352 |
+
),
|
353 |
+
'dependence' => array( $prefix2 . 'content', 'yes' ),
|
354 |
+
),
|
355 |
+
// Full content (use same group class to use existing js + css)
|
356 |
+
array(
|
357 |
+
'label' => array(
|
358 |
+
'text' => '',
|
359 |
+
),
|
360 |
+
'extra_setting' => array(
|
361 |
+
'params' => array(
|
362 |
+
'width' => 12,
|
363 |
+
'group-class' => PT_CV_PREFIX . 'field-setting' . ' ' . PT_CV_PREFIX . 'excerpt-setting',
|
364 |
+
),
|
365 |
+
),
|
366 |
+
'params' => array(
|
367 |
+
array(
|
368 |
+
'type' => 'group',
|
369 |
+
'params' => array(
|
370 |
+
array(
|
371 |
+
'label' => array(
|
372 |
+
'text' => '',
|
373 |
+
),
|
374 |
+
'extra_setting' => array(
|
375 |
+
'params' => array(
|
376 |
+
'width' => 12,
|
377 |
+
),
|
378 |
+
),
|
379 |
+
'params' => array(
|
380 |
+
array(
|
381 |
+
'type' => 'checkbox',
|
382 |
+
'name' => $prefix . 'content-skip-balance-tag',
|
383 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Do not attempt to balance HTML tags in content', 'content-views-query-and-display-post-page' ) ),
|
384 |
+
'std' => '',
|
385 |
+
'desc' => __( 'Balancing tag prevents unmatched elements. But it does not work for all cases.<br> Check this option to show original content', 'content-views-query-and-display-post-page' ),
|
386 |
+
),
|
387 |
+
),
|
388 |
+
'dependence' => array( $prefix . 'content-show', 'full' ),
|
389 |
+
),
|
390 |
+
),
|
391 |
+
),
|
392 |
+
),
|
393 |
+
'dependence' => array( $prefix2 . 'content', 'yes' ),
|
394 |
+
),
|
395 |
+
// Excerpt settings
|
396 |
+
array(
|
397 |
+
'label' => array(
|
398 |
+
'text' => '',
|
399 |
+
),
|
400 |
+
'extra_setting' => array(
|
401 |
+
'params' => array(
|
402 |
+
'width' => 12,
|
403 |
+
'group-class' => PT_CV_PREFIX . 'field-setting' . ' ' . PT_CV_PREFIX . 'excerpt-setting',
|
404 |
+
'wrap-id' => PT_CV_Html::html_group_id( 'excerpt-settings' ),
|
405 |
+
),
|
406 |
+
),
|
407 |
+
'params' => array(
|
408 |
+
array(
|
409 |
+
'type' => 'group',
|
410 |
+
'params' => array(
|
411 |
+
array(
|
412 |
+
'label' => array(
|
413 |
+
'text' => '',
|
414 |
+
),
|
415 |
+
'extra_setting' => array(
|
416 |
+
'params' => array(
|
417 |
+
'width' => 12,
|
418 |
+
),
|
419 |
+
),
|
420 |
+
'params' => array(
|
421 |
+
array(
|
422 |
+
'type' => 'group',
|
423 |
+
'params' => apply_filters(
|
424 |
+
PT_CV_PREFIX_ . 'excerpt_settings', array(
|
425 |
+
// Excerpt length
|
426 |
+
array(
|
427 |
+
'label' => array(
|
428 |
+
'text' => __( 'Excerpt settings', 'content-views-query-and-display-post-page' ),
|
429 |
+
),
|
430 |
+
'params' => array(
|
431 |
+
array(
|
432 |
+
'type' => 'number',
|
433 |
+
'name' => $prefix . 'excerpt-length',
|
434 |
+
'std' => '20',
|
435 |
+
'placeholder' => 'for example: 20',
|
436 |
+
'append_text' => 'words',
|
437 |
+
'desc' => __( 'Generate excerpt by selecting the first X words of post content', 'content-views-query-and-display-post-page' ),
|
438 |
+
),
|
439 |
+
),
|
440 |
+
),
|
441 |
+
// Upgrade to Pro: Manual excerpt
|
442 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( __( 'Use manual excerpt (in the Excerpt field under the post edit box)', 'content-views-query-and-display-post-page' ) ) : '',
|
443 |
+
// Allow HTML tags
|
444 |
+
array(
|
445 |
+
'label' => array(
|
446 |
+
'text' => '',
|
447 |
+
),
|
448 |
+
'params' => array(
|
449 |
+
array(
|
450 |
+
'type' => 'checkbox',
|
451 |
+
'name' => $prefix . 'excerpt-allow_html',
|
452 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Allow HTML tags (a, br, strong, em, strike, i, ul, ol, li) in excerpt', 'content-views-query-and-display-post-page' ) ),
|
453 |
+
'std' => '',
|
454 |
+
),
|
455 |
+
),
|
456 |
+
),
|
457 |
+
// Read more text
|
458 |
+
!get_option( 'pt_cv_version_pro' ) ? array(
|
459 |
+
'label' => array(
|
460 |
+
'text' => __( 'Read More text', 'content-views-query-and-display-post-page' ),
|
461 |
+
),
|
462 |
+
'params' => array(
|
463 |
+
array(
|
464 |
+
'type' => 'text',
|
465 |
+
'name' => $prefix . 'excerpt-readmore-text',
|
466 |
+
'std' => ucwords( rtrim( __( 'Read more...' ), '.' ) ),
|
467 |
+
'desc' => '<span class="alert-warning">' . sprintf( __( 'To change color of this button, <a href="%s" target="_blank"> please check this document </a>', 'content-views-query-and-display-post-page' ), 'http://docs.contentviewspro.com/change-color-read-more-button/?utm_source=client&utm_medium=read-more-color&utm_campaign=gopro' ) . '</span>',
|
468 |
+
),
|
469 |
+
),
|
470 |
+
) : '',
|
471 |
+
), $prefix . 'excerpt-'
|
472 |
+
),
|
473 |
+
),
|
474 |
+
),
|
475 |
+
'dependence' => array( $prefix . 'content-show', 'excerpt' ),
|
476 |
+
),
|
477 |
+
),
|
478 |
+
),
|
479 |
+
),
|
480 |
+
'dependence' => array( $prefix2 . 'content', 'yes' ),
|
481 |
+
),
|
482 |
+
// Meta fields settings
|
483 |
+
array(
|
484 |
+
'label' => array(
|
485 |
+
'text' => __( 'Meta fields', 'content-views-query-and-display-post-page' ),
|
486 |
+
),
|
487 |
+
'extra_setting' => array(
|
488 |
+
'params' => array(
|
489 |
+
'group-class' => PT_CV_PREFIX . 'field-setting' . ' ' . PT_CV_PREFIX . 'metafield-setting',
|
490 |
+
'wrap-class' => PT_CV_Html::html_group_class() . ' ' . PT_CV_PREFIX . 'meta-fields-settings',
|
491 |
+
),
|
492 |
+
),
|
493 |
+
'params' => array(
|
494 |
+
array(
|
495 |
+
'type' => 'group',
|
496 |
+
'params' => PT_CV_Settings::field_meta_fields( 'meta-fields-' ),
|
497 |
+
'desc' => apply_filters( PT_CV_PREFIX_ . 'settings_sort_text', '' ),
|
498 |
+
),
|
499 |
+
),
|
500 |
+
'dependence' => array( $prefix2 . 'meta-fields', 'yes' ),
|
501 |
+
),
|
502 |
+
// Taxonomies settings
|
503 |
+
apply_filters( PT_CV_PREFIX_ . 'settings_taxonomies_display', array(), 'meta-fields-' ),
|
504 |
+
);
|
505 |
+
|
506 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'field_settings', $result, $prefix2 );
|
507 |
+
|
508 |
+
return $result;
|
509 |
+
}
|
510 |
+
|
511 |
+
/**
|
512 |
+
* Fields display
|
513 |
+
*
|
514 |
+
* @return array
|
515 |
+
*/
|
516 |
+
static function field_display_settings() {
|
517 |
+
|
518 |
+
$field_display_settings = array(
|
519 |
+
array(
|
520 |
+
'label' => array(
|
521 |
+
'text' => '',
|
522 |
+
),
|
523 |
+
'extra_setting' => array(
|
524 |
+
'params' => array(
|
525 |
+
'width' => 12,
|
526 |
+
'wrap-class' => PT_CV_PREFIX . 'field-display',
|
527 |
+
),
|
528 |
+
),
|
529 |
+
'params' => array(
|
530 |
+
array(
|
531 |
+
'type' => 'group',
|
532 |
+
'params' => PT_CV_Settings::field_display(),
|
533 |
+
'desc' => apply_filters( PT_CV_PREFIX_ . 'settings_sort_text', '' ),
|
534 |
+
),
|
535 |
+
),
|
536 |
+
),
|
537 |
+
);
|
538 |
+
|
539 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'field_display_settings', $field_display_settings );
|
540 |
+
|
541 |
+
return $result;
|
542 |
+
}
|
543 |
+
|
544 |
+
/**
|
545 |
+
* Options to check/uncheck to display fields
|
546 |
+
*
|
547 |
+
* @return array
|
548 |
+
*/
|
549 |
+
static function field_display() {
|
550 |
+
|
551 |
+
$prefix = 'show-field-';
|
552 |
+
|
553 |
+
$result = array(
|
554 |
+
// Thumbnail position
|
555 |
+
array(
|
556 |
+
'label' => array(
|
557 |
+
'text' => __( 'Thumbnail position', 'content-views-query-and-display-post-page' ),
|
558 |
+
),
|
559 |
+
'extra_setting' => array(
|
560 |
+
'params' => array(
|
561 |
+
'group-class' => PT_CV_PREFIX . 'thumb-position',
|
562 |
+
'wrap-class' => PT_CV_PREFIX . 'w200',
|
563 |
+
),
|
564 |
+
),
|
565 |
+
'params' => array(
|
566 |
+
array(
|
567 |
+
'type' => 'select',
|
568 |
+
'name' => 'field-' . 'thumbnail-position',
|
569 |
+
'options' => PT_CV_Values::thumbnail_position(),
|
570 |
+
'std' => PT_CV_Functions::array_get_first_key( PT_CV_Values::thumbnail_position() ),
|
571 |
+
),
|
572 |
+
),
|
573 |
+
'dependence' => array( 'layout-format', '2-col' ),
|
574 |
+
),
|
575 |
+
// Show Thumbnail
|
576 |
+
array(
|
577 |
+
'label' => array(
|
578 |
+
'text' => '',
|
579 |
+
),
|
580 |
+
'extra_setting' => array(
|
581 |
+
'params' => array(
|
582 |
+
'width' => 12,
|
583 |
+
),
|
584 |
+
),
|
585 |
+
'params' => array(
|
586 |
+
array(
|
587 |
+
'type' => 'checkbox',
|
588 |
+
'name' => $prefix . 'thumbnail',
|
589 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Show Thumbnail', 'content-views-query-and-display-post-page' ) ),
|
590 |
+
'std' => 'yes',
|
591 |
+
),
|
592 |
+
),
|
593 |
+
),
|
594 |
+
// Show Title
|
595 |
+
array(
|
596 |
+
'label' => array(
|
597 |
+
'text' => '',
|
598 |
+
),
|
599 |
+
'extra_setting' => array(
|
600 |
+
'params' => array(
|
601 |
+
'width' => 12,
|
602 |
+
),
|
603 |
+
),
|
604 |
+
'params' => array(
|
605 |
+
array(
|
606 |
+
'type' => 'checkbox',
|
607 |
+
'name' => $prefix . 'title',
|
608 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Show Title', 'content-views-query-and-display-post-page' ) ),
|
609 |
+
'std' => 'yes',
|
610 |
+
),
|
611 |
+
),
|
612 |
+
),
|
613 |
+
// Show Content
|
614 |
+
array(
|
615 |
+
'label' => array(
|
616 |
+
'text' => '',
|
617 |
+
),
|
618 |
+
'extra_setting' => array(
|
619 |
+
'params' => array(
|
620 |
+
'width' => 12,
|
621 |
+
),
|
622 |
+
),
|
623 |
+
'params' => array(
|
624 |
+
array(
|
625 |
+
'type' => 'checkbox',
|
626 |
+
'name' => $prefix . 'content',
|
627 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Show Content', 'content-views-query-and-display-post-page' ) ),
|
628 |
+
'std' => 'yes',
|
629 |
+
),
|
630 |
+
),
|
631 |
+
),
|
632 |
+
// Show Meta fields
|
633 |
+
array(
|
634 |
+
'label' => array(
|
635 |
+
'text' => '',
|
636 |
+
),
|
637 |
+
'extra_setting' => array(
|
638 |
+
'params' => array(
|
639 |
+
'width' => 12,
|
640 |
+
),
|
641 |
+
),
|
642 |
+
'params' => array(
|
643 |
+
array(
|
644 |
+
'type' => 'checkbox',
|
645 |
+
'name' => $prefix . 'meta-fields',
|
646 |
+
'options' => PT_CV_Values::yes_no( 'yes', sprintf( '%s (%s, %s, %s, %s)', __( 'Show Meta Fields', 'content-views-query-and-display-post-page' ), __( 'Taxonomy', 'content-views-query-and-display-post-page' ), __( 'Author' ), __( 'Date' ), __( 'Comment' ) ) ),
|
647 |
+
'std' => '',
|
648 |
+
),
|
649 |
+
),
|
650 |
+
),
|
651 |
+
);
|
652 |
+
|
653 |
+
// Add/remove params
|
654 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'field_display', $result, $prefix );
|
655 |
+
|
656 |
+
// Sort array of params by saved order
|
657 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'settings_sort', $result, PT_CV_PREFIX . $prefix );
|
658 |
+
|
659 |
+
return $result;
|
660 |
+
}
|
661 |
+
|
662 |
+
/**
|
663 |
+
* Setting options for Field = Thumbnail
|
664 |
+
*/
|
665 |
+
static function field_thumbnail_settings( $prefix ) {
|
666 |
+
|
667 |
+
$result = array(
|
668 |
+
// Size
|
669 |
+
array(
|
670 |
+
'label' => array(
|
671 |
+
'text' => __( 'Size' ),
|
672 |
+
),
|
673 |
+
'params' => array(
|
674 |
+
array(
|
675 |
+
'type' => 'select',
|
676 |
+
'name' => $prefix . 'thumbnail-size',
|
677 |
+
'options' => PT_CV_Values::field_thumbnail_sizes(),
|
678 |
+
'std' => 'medium',
|
679 |
+
),
|
680 |
+
),
|
681 |
+
),
|
682 |
+
// Disable WP 4.4 responsive image
|
683 |
+
!PT_CV_Functions::wp_version_compare( '4.4' ) ? '' :
|
684 |
+
'disable-wp44-resimg' => array(
|
685 |
+
'label' => array(
|
686 |
+
'text' => '',
|
687 |
+
),
|
688 |
+
'params' => array(
|
689 |
+
array(
|
690 |
+
'type' => 'checkbox',
|
691 |
+
'name' => $prefix . 'thumbnail-nowprpi',
|
692 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Disable responsive image of WordPress', 'content-views-query-and-display-post-page' ) ),
|
693 |
+
'std' => '',
|
694 |
+
'desc' => __( 'If thumbnail looks blurry, check this option, and select a bigger size option above', 'content-views-query-and-display-post-page' ),
|
695 |
+
),
|
696 |
+
),
|
697 |
+
),
|
698 |
+
// Upgrade to Pro: Show image/video in content as thumbnail
|
699 |
+
!get_option( 'pt_cv_version_pro' ) ? PT_CV_Settings::get_cvpro( sprintf( __( 'In this lite version, thumbnail is only shown if the post has %s.<br>In the Pro version, you can show the first image in post as thumbnail, without having to set a featured image', 'content-views-query-and-display-post-page' ), sprintf( '<a target="_blank" href="https://codex.wordpress.org/Post_Thumbnails">%s</a>', __( 'Featured Image' ) ) ), 12, null, true ) : '',
|
700 |
+
);
|
701 |
+
|
702 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_settings', $result, $prefix );
|
703 |
+
|
704 |
+
return $result;
|
705 |
+
}
|
706 |
+
|
707 |
+
/**
|
708 |
+
* Show settings of other fields
|
709 |
+
*/
|
710 |
+
static function field_meta_fields( $prefix ) {
|
711 |
+
|
712 |
+
$result = array(
|
713 |
+
// Date
|
714 |
+
array(
|
715 |
+
'label' => array(
|
716 |
+
'text' => '',
|
717 |
+
),
|
718 |
+
'extra_setting' => array(
|
719 |
+
'params' => array(
|
720 |
+
'width' => 12,
|
721 |
+
),
|
722 |
+
),
|
723 |
+
'params' => array(
|
724 |
+
array(
|
725 |
+
'type' => 'checkbox',
|
726 |
+
'name' => $prefix . 'date',
|
727 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Show Date', 'content-views-query-and-display-post-page' ) ),
|
728 |
+
'std' => 'yes',
|
729 |
+
),
|
730 |
+
),
|
731 |
+
),
|
732 |
+
// Author
|
733 |
+
array(
|
734 |
+
'label' => array(
|
735 |
+
'text' => '',
|
736 |
+
),
|
737 |
+
'extra_setting' => array(
|
738 |
+
'params' => array(
|
739 |
+
'width' => 12,
|
740 |
+
),
|
741 |
+
),
|
742 |
+
'params' => array(
|
743 |
+
array(
|
744 |
+
'type' => 'checkbox',
|
745 |
+
'name' => $prefix . 'author',
|
746 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Show Author', 'content-views-query-and-display-post-page' ) ),
|
747 |
+
'std' => '',
|
748 |
+
),
|
749 |
+
),
|
750 |
+
),
|
751 |
+
// Taxonomy
|
752 |
+
array(
|
753 |
+
'label' => array(
|
754 |
+
'text' => '',
|
755 |
+
),
|
756 |
+
'extra_setting' => array(
|
757 |
+
'params' => array(
|
758 |
+
'width' => 12,
|
759 |
+
),
|
760 |
+
),
|
761 |
+
'params' => array(
|
762 |
+
array(
|
763 |
+
'type' => 'checkbox',
|
764 |
+
'name' => $prefix . 'taxonomy',
|
765 |
+
'options' => PT_CV_Values::yes_no( 'yes', sprintf( __( 'Show Taxonomies (%s, %s...)', 'content-views-query-and-display-post-page' ), __( 'Categories' ), __( 'Tags' ) ) ),
|
766 |
+
'std' => 'yes',
|
767 |
+
),
|
768 |
+
),
|
769 |
+
),
|
770 |
+
// Comment
|
771 |
+
array(
|
772 |
+
'label' => array(
|
773 |
+
'text' => '',
|
774 |
+
),
|
775 |
+
'extra_setting' => array(
|
776 |
+
'params' => array(
|
777 |
+
'width' => 12,
|
778 |
+
),
|
779 |
+
),
|
780 |
+
'params' => array(
|
781 |
+
array(
|
782 |
+
'type' => 'checkbox',
|
783 |
+
'name' => $prefix . 'comment',
|
784 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Show Comment Count', 'content-views-query-and-display-post-page' ) ),
|
785 |
+
'std' => '',
|
786 |
+
),
|
787 |
+
),
|
788 |
+
),
|
789 |
+
);
|
790 |
+
|
791 |
+
// Sort array of params by saved order
|
792 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'settings_sort', $result, PT_CV_PREFIX . $prefix );
|
793 |
+
|
794 |
+
return $result;
|
795 |
+
}
|
796 |
+
|
797 |
+
/**
|
798 |
+
* Settings of View Type = Grid
|
799 |
+
*
|
800 |
+
* @return array
|
801 |
+
*/
|
802 |
+
static function view_type_settings_grid() {
|
803 |
+
|
804 |
+
$prefix = 'grid-';
|
805 |
+
|
806 |
+
$result = array(
|
807 |
+
// Number of columns
|
808 |
+
array(
|
809 |
+
'label' => array(
|
810 |
+
'text' => __( 'Items per row', 'content-views-query-and-display-post-page' ),
|
811 |
+
),
|
812 |
+
'params' => array(
|
813 |
+
array(
|
814 |
+
'type' => 'number',
|
815 |
+
'name' => $prefix . 'number-columns',
|
816 |
+
'std' => '2',
|
817 |
+
'append_text' => '1 → 12',
|
818 |
+
),
|
819 |
+
),
|
820 |
+
'dependence' => array( 'view-type', 'grid' ),
|
821 |
+
),
|
822 |
+
);
|
823 |
+
|
824 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'view_type_settings_grid', $result );
|
825 |
+
|
826 |
+
return $result;
|
827 |
+
}
|
828 |
+
|
829 |
+
/**
|
830 |
+
* Settings of View Type = Collapsible
|
831 |
+
*
|
832 |
+
* @return array
|
833 |
+
*/
|
834 |
+
static function view_type_settings_collapsible() {
|
835 |
+
$prefix = 'collapsible-';
|
836 |
+
$result = array(
|
837 |
+
array(
|
838 |
+
'label' => array(
|
839 |
+
'text' => '',
|
840 |
+
),
|
841 |
+
'extra_setting' => array(
|
842 |
+
'params' => array(
|
843 |
+
'width' => 12,
|
844 |
+
),
|
845 |
+
),
|
846 |
+
'params' => array(
|
847 |
+
array(
|
848 |
+
'type' => 'checkbox',
|
849 |
+
'name' => $prefix . 'open-first-item',
|
850 |
+
'options' => PT_CV_Values::yes_no( 'yes', __( 'Open the first item by default', 'content-views-query-and-display-post-page' ) ),
|
851 |
+
'std' => 'yes',
|
852 |
+
),
|
853 |
+
),
|
854 |
+
),
|
855 |
+
);
|
856 |
+
|
857 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'view_type_settings_collapsible_184', $result );
|
858 |
+
|
859 |
+
return $result;
|
860 |
+
}
|
861 |
+
|
862 |
+
/**
|
863 |
+
* Settings of View Type = Scrollable
|
864 |
+
*
|
865 |
+
* @return array
|
866 |
+
*/
|
867 |
+
static function view_type_settings_scrollable() {
|
868 |
+
|
869 |
+
$prefix = 'scrollable-';
|
870 |
+
|
871 |
+
$result = array(
|
872 |
+
PT_CV_Settings::setting_no_option(),
|
873 |
+
);
|
874 |
+
|
875 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'view_type_settings_scrollable', $result );
|
876 |
+
|
877 |
+
return $result;
|
878 |
+
}
|
879 |
+
|
880 |
+
/**
|
881 |
+
* Setting with no option
|
882 |
+
*
|
883 |
+
* @return array
|
884 |
+
*/
|
885 |
+
static function setting_no_option( $only_text = false ) {
|
886 |
+
$msg = !get_option( 'pt_cv_version_pro' ) ? '' : __( 'There is no option', 'content-views-query-and-display-post-page' );
|
887 |
+
$class = PT_CV_PREFIX . 'text cv-noop-profe';
|
888 |
+
$text = "<div class='$class' style='color:#999'>$msg</div>";
|
889 |
+
|
890 |
+
return $only_text ? $text : array(
|
891 |
+
'label' => array(
|
892 |
+
'text' => '',
|
893 |
+
),
|
894 |
+
'extra_setting' => array(
|
895 |
+
'params' => array(
|
896 |
+
'width' => 12,
|
897 |
+
),
|
898 |
+
),
|
899 |
+
'params' => array(
|
900 |
+
array(
|
901 |
+
'type' => 'html',
|
902 |
+
'content' => $text,
|
903 |
+
),
|
904 |
+
),
|
905 |
+
);
|
906 |
+
}
|
907 |
+
|
908 |
+
/**
|
909 |
+
* Show Get CVPro
|
910 |
+
*
|
911 |
+
* @param string $text
|
912 |
+
* @param int $width
|
913 |
+
* @param string $style
|
914 |
+
* @param bool $notice
|
915 |
+
* @return string
|
916 |
+
*/
|
917 |
+
static function get_cvpro( $text, $width = 10, $style = '', $notice = false ) {
|
918 |
+
$url = sprintf( ' » <a href="%s" target="_blank">%s</a>', esc_url( 'https://www.contentviewspro.com/pricing/?utm_source=client&utm_medium=view_fields&utm_campaign=gopro' ), __( 'get Pro version', 'content-views-query-and-display-post-page' ) );
|
919 |
+
|
920 |
+
return array(
|
921 |
+
'label' => array(
|
922 |
+
'text' => '',
|
923 |
+
),
|
924 |
+
'extra_setting' => array(
|
925 |
+
'params' => array(
|
926 |
+
'width' => $width,
|
927 |
+
),
|
928 |
+
),
|
929 |
+
'params' => array(
|
930 |
+
array(
|
931 |
+
'type' => 'html',
|
932 |
+
'content' => $notice ?
|
933 |
+
sprintf( '<div class="alert alert-warning cvgopro"><strong>%s:</strong> %s</div>', __( 'Notice', 'content-views-query-and-display-post-page' ), $text . $url . '.' ) :
|
934 |
+
sprintf( '<p class="text-muted cvgopro" style="%s">→ %s</p>', $style, $text . $url ),
|
935 |
+
),
|
936 |
+
),
|
937 |
+
);
|
938 |
+
}
|
939 |
+
|
940 |
+
/**
|
941 |
+
* Adjust title heading tag
|
942 |
+
*
|
943 |
+
* @since 1.9.7
|
944 |
+
* @param string $prefix
|
945 |
+
* @return array
|
946 |
+
*/
|
947 |
+
static function title_heading_tag( $prefix ) {
|
948 |
+
$tags = apply_filters( PT_CV_PREFIX_ . 'filter_title_tag', array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'div' ) );
|
949 |
+
|
950 |
+
return array(
|
951 |
+
'label' => array(
|
952 |
+
'text' => __( 'HTML tag', 'content-views-query-and-display-post-page' ),
|
953 |
+
),
|
954 |
+
'extra_setting' => array(
|
955 |
+
'params' => array(
|
956 |
+
'wrap-class' => PT_CV_PREFIX . 'w200',
|
957 |
+
),
|
958 |
+
),
|
959 |
+
'params' => array(
|
960 |
+
array(
|
961 |
+
'type' => 'select',
|
962 |
+
'options' => array_combine( $tags, $tags ),
|
963 |
+
'name' => $prefix . 'title-tag',
|
964 |
+
'std' => apply_filters( PT_CV_PREFIX_ . 'field_title_tag', 'h4' ),
|
965 |
+
),
|
966 |
+
),
|
967 |
+
);
|
968 |
+
}
|
969 |
+
|
970 |
+
}
|
971 |
+
|
972 |
}
|
includes/values.php
CHANGED
@@ -1,447 +1,448 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Define values for input, select...
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
if ( !class_exists( 'PT_CV_Values' ) ) {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @name PT_CV_Values
|
19 |
-
* @todo Define values for input, select...
|
20 |
-
*/
|
21 |
-
class PT_CV_Values {
|
22 |
-
|
23 |
-
/**
|
24 |
-
* Get Post Types
|
25 |
-
*
|
26 |
-
* @param array $args Array of query parameters
|
27 |
-
* @param string $excludes_ Array of slug of post types want to exclude from result
|
28 |
-
*
|
29 |
-
* @return array
|
30 |
-
*/
|
31 |
-
static function post_types( $args = array(), $excludes_ = array() ) {
|
32 |
-
$excludes = array_merge( array( 'attachment' ), $excludes_ );
|
33 |
-
$result = array();
|
34 |
-
$args = array_merge( array( 'public' => true, '_builtin' => true ), $args );
|
35 |
-
$args = apply_filters( PT_CV_PREFIX_ . 'post_types', $args );
|
36 |
-
$post_types = get_post_types( $args, 'objects' );
|
37 |
-
|
38 |
-
foreach ( $post_types as $post_type ) {
|
39 |
-
if ( in_array( $post_type->name, $excludes ) ) {
|
40 |
-
continue;
|
41 |
-
}
|
42 |
-
$result[ $post_type->name ] = $post_type->labels->singular_name;
|
43 |
-
}
|
44 |
-
|
45 |
-
$result = apply_filters( PT_CV_PREFIX_ . 'post_types_list', $result );
|
46 |
-
|
47 |
-
return $result;
|
48 |
-
}
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Get list of post types and related taxonomies
|
52 |
-
*
|
53 |
-
* @return array
|
54 |
-
*/
|
55 |
-
static function post_types_vs_taxonomies() {
|
56 |
-
// Get post types
|
57 |
-
$args = apply_filters( PT_CV_PREFIX_ . 'post_types', array( 'public' => true, 'show_ui' => true, '_builtin' => true ) );
|
58 |
-
$post_types = get_post_types( $args );
|
59 |
-
|
60 |
-
// Get taxonomies of post types
|
61 |
-
$result = array();
|
62 |
-
|
63 |
-
foreach ( $post_types as $post_type ) {
|
64 |
-
$taxonomy_names = get_object_taxonomies( $post_type );
|
65 |
-
$result[ $post_type ] = $taxonomy_names;
|
66 |
-
}
|
67 |
-
|
68 |
-
return apply_filters( PT_CV_PREFIX_ . 'post_types_taxonomies', $result );
|
69 |
-
}
|
70 |
-
|
71 |
-
/**
|
72 |
-
* Get list of taxonomies
|
73 |
-
*
|
74 |
-
* @param array $args Array of query parameters
|
75 |
-
*
|
76 |
-
* @return array
|
77 |
-
*/
|
78 |
-
static function taxonomy_list( $args = array() ) {
|
79 |
-
$result = array();
|
80 |
-
$args = array_merge( array( 'public' => true, 'show_ui' => true, '_builtin' => true ), $args );
|
81 |
-
$args = apply_filters( PT_CV_PREFIX_ . 'taxonomy_query_args', $args );
|
82 |
-
$taxonomies = get_taxonomies( $args, 'objects' );
|
83 |
-
|
84 |
-
foreach ( $taxonomies as $taxonomy ) {
|
85 |
-
$result[ $taxonomy->name ] = $taxonomy->labels->singular_name;
|
86 |
-
}
|
87 |
-
|
88 |
-
return apply_filters( PT_CV_PREFIX_ . 'tax_list', $result );
|
89 |
-
}
|
90 |
-
|
91 |
-
/**
|
92 |
-
* The logical relationship between taxonomies
|
93 |
-
*
|
94 |
-
* @return array
|
95 |
-
*/
|
96 |
-
static function taxonomy_relation() {
|
97 |
-
return array(
|
98 |
-
'AND' => __( 'AND', 'content-views-query-and-display-post-page' ),
|
99 |
-
'OR' => __( 'OR', 'content-views-query-and-display-post-page' ),
|
100 |
-
);
|
101 |
-
}
|
102 |
-
|
103 |
-
/**
|
104 |
-
* Operator to join. Possible values are 'IN'(default), 'NOT IN', 'AND'.
|
105 |
-
* @return type
|
106 |
-
*/
|
107 |
-
static function taxonomy_operators() {
|
108 |
-
return array(
|
109 |
-
'IN' => __( 'IN - show posts which match ANY selected terms', 'content-views-query-and-display-post-page' ),
|
110 |
-
'NOT IN' => __( 'NOT IN - show posts which DO NOT match ANY selected terms', 'content-views-query-and-display-post-page' ),
|
111 |
-
'AND' => __( 'AND - show posts which match ALL selected terms', 'content-views-query-and-display-post-page' ),
|
112 |
-
);
|
113 |
-
}
|
114 |
-
|
115 |
-
/**
|
116 |
-
* Get taxonomy information
|
117 |
-
*
|
118 |
-
* @param string $taxonomy The name of the taxonomy
|
119 |
-
* @param string $info Field of metadata want to retrieve
|
120 |
-
*
|
121 |
-
* @return string | array
|
122 |
-
*/
|
123 |
-
static function taxonomy_info( $taxonomy, $info ) {
|
124 |
-
$data = get_taxonomy( $taxonomy );
|
125 |
-
|
126 |
-
if ( isset( $data->$info ) ) {
|
127 |
-
$result = $data->$info;
|
128 |
-
} else {
|
129 |
-
if ( isset( $data->labels->$info ) ) {
|
130 |
-
$result = $data->labels->$info;
|
131 |
-
}
|
132 |
-
}
|
133 |
-
|
134 |
-
return isset( $result ) ? $result : NULL;
|
135 |
-
}
|
136 |
-
|
137 |
-
/**
|
138 |
-
* Get terms of one/many taxonomies
|
139 |
-
*
|
140 |
-
* @param string $taxonomy The name of the taxonomy
|
141 |
-
* @param string $terms_of_taxonomies Array of terms of taxonomies
|
142 |
-
* @param array $args Array of query parameters
|
143 |
-
*/
|
144 |
-
static function term_of_taxonomy( $taxonomy, &$terms_of_taxonomies, $args = array(), $data = 'name' ) {
|
145 |
-
$args = array_merge( array( 'hide_empty' => false ), $args );
|
146 |
-
$terms = get_terms( array( $taxonomy ), $args );
|
147 |
-
|
148 |
-
$term_slug_name = array();
|
149 |
-
foreach ( $terms as $term ) {
|
150 |
-
$term_slug_name[ $term->slug ] = ($data === 'name') ? $term->name : $term;
|
151 |
-
}
|
152 |
-
|
153 |
-
// Sort values of param by saved order
|
154 |
-
$term_slug_name = apply_filters( PT_CV_PREFIX_ . 'settings_sort_single', $term_slug_name, $taxonomy . '-' . 'terms' );
|
155 |
-
|
156 |
-
$terms_of_taxonomies[ $taxonomy ] = array_filter( $term_slug_name ); /* prevent term with empty name */
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Yes no options
|
161 |
-
*
|
162 |
-
* @return array
|
163 |
-
*/
|
164 |
-
static function yes_no( $key = '', $value = '' ) {
|
165 |
-
$result = array(
|
166 |
-
'yes' => __( 'Yes', 'content-views-query-and-display-post-page' ),
|
167 |
-
'no' => __( 'No', 'content-views-query-and-display-post-page' ),
|
168 |
-
);
|
169 |
-
if ( !empty( $key ) ) {
|
170 |
-
return array( $key => empty( $value ) ? $result[ $key ] : $value );
|
171 |
-
}
|
172 |
-
|
173 |
-
return $result;
|
174 |
-
}
|
175 |
-
|
176 |
-
/**
|
177 |
-
* Paging types
|
178 |
-
*
|
179 |
-
* @return array
|
180 |
-
*/
|
181 |
-
static function pagination_types() {
|
182 |
-
$result = array(
|
183 |
-
'ajax' => __( 'Ajax', 'content-views-query-and-display-post-page' ),
|
184 |
-
'normal' => __( 'Normal', 'content-views-query-and-display-post-page' ),
|
185 |
-
);
|
186 |
-
|
187 |
-
$result = apply_filters( PT_CV_PREFIX_ . 'pagination_types', $result );
|
188 |
-
|
189 |
-
return $result;
|
190 |
-
}
|
191 |
-
|
192 |
-
/**
|
193 |
-
* Paging styles
|
194 |
-
*
|
195 |
-
* @return array
|
196 |
-
*/
|
197 |
-
static function pagination_styles() {
|
198 |
-
$result = array(
|
199 |
-
'regular' => __( 'Numbered pagination', 'content-views-query-and-display-post-page' ),
|
200 |
-
);
|
201 |
-
|
202 |
-
$result = apply_filters( PT_CV_PREFIX_ . 'pagination_styles', $result );
|
203 |
-
|
204 |
-
return $result;
|
205 |
-
}
|
206 |
-
|
207 |
-
/**
|
208 |
-
* Order options
|
209 |
-
*
|
210 |
-
* @return array
|
211 |
-
*/
|
212 |
-
static function orders() {
|
213 |
-
return array(
|
214 |
-
'asc' => __( 'Ascending' ),
|
215 |
-
'desc' => __( 'Descending' ),
|
216 |
-
);
|
217 |
-
}
|
218 |
-
|
219 |
-
/**
|
220 |
-
* List post status
|
221 |
-
*/
|
222 |
-
static function post_statuses() {
|
223 |
-
$result = array();
|
224 |
-
$statuses = get_post_stati( null, 'objects' );
|
225 |
-
foreach ( $statuses as $status => $object ) {
|
226 |
-
$result[ $status ] = ucfirst( $object->label );
|
227 |
-
}
|
228 |
-
|
229 |
-
return $result;
|
230 |
-
}
|
231 |
-
|
232 |
-
/**
|
233 |
-
* Advanced filters options
|
234 |
-
*
|
235 |
-
* @return array
|
236 |
-
*/
|
237 |
-
static function advanced_settings() {
|
238 |
-
return apply_filters(
|
239 |
-
PT_CV_PREFIX_ . 'advanced_settings', array(
|
240 |
-
'taxonomy' => __( 'Taxonomy', 'content-views-query-and-display-post-page' ) . sprintf( ' (%s, %s...)', __( 'Categories' ), __( 'Tags' ) ),
|
241 |
-
'status' => __( 'Status' ),
|
242 |
-
'order' => __( 'Sort by', 'content-views-query-and-display-post-page' ),
|
243 |
-
'search' => __( 'Keyword' ),
|
244 |
-
'author' => __( 'Author' ),
|
245 |
-
)
|
246 |
-
);
|
247 |
-
}
|
248 |
-
|
249 |
-
/**
|
250 |
-
* Show WP author dropdown list
|
251 |
-
*
|
252 |
-
* @return array
|
253 |
-
*/
|
254 |
-
static function user_list() {
|
255 |
-
global $cv_admin_users_list;
|
256 |
-
|
257 |
-
if ( !empty( $cv_admin_users_list ) ) {
|
258 |
-
$result = $cv_admin_users_list;
|
259 |
-
} else {
|
260 |
-
$result = array();
|
261 |
-
$show = 'display_name';
|
262 |
-
|
263 |
-
$args = array(
|
264 |
-
'fields' => array( 'ID', $show, 'user_login' ),
|
265 |
-
'orderby' => 'display_name',
|
266 |
-
'order' => 'ASC',
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
$
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
'
|
290 |
-
'
|
291 |
-
'
|
292 |
-
'
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
*
|
303 |
-
*
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
'
|
310 |
-
'
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
*
|
321 |
-
*
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
*
|
344 |
-
*
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
'
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
'
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
$this_size
|
386 |
-
$this_size[] = get_option( $size_name . '
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
$this_size
|
395 |
-
$this_size[ '
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
*
|
431 |
-
*
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
'
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
|
|
447 |
}
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Define values for input, select...
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
if ( !class_exists( 'PT_CV_Values' ) ) {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* @name PT_CV_Values
|
19 |
+
* @todo Define values for input, select...
|
20 |
+
*/
|
21 |
+
class PT_CV_Values {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Get Post Types
|
25 |
+
*
|
26 |
+
* @param array $args Array of query parameters
|
27 |
+
* @param string $excludes_ Array of slug of post types want to exclude from result
|
28 |
+
*
|
29 |
+
* @return array
|
30 |
+
*/
|
31 |
+
static function post_types( $args = array(), $excludes_ = array() ) {
|
32 |
+
$excludes = array_merge( array( 'attachment' ), $excludes_ );
|
33 |
+
$result = array();
|
34 |
+
$args = array_merge( array( 'public' => true, '_builtin' => true ), $args );
|
35 |
+
$args = apply_filters( PT_CV_PREFIX_ . 'post_types', $args );
|
36 |
+
$post_types = get_post_types( $args, 'objects' );
|
37 |
+
|
38 |
+
foreach ( $post_types as $post_type ) {
|
39 |
+
if ( in_array( $post_type->name, $excludes ) ) {
|
40 |
+
continue;
|
41 |
+
}
|
42 |
+
$result[ $post_type->name ] = $post_type->labels->singular_name;
|
43 |
+
}
|
44 |
+
|
45 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'post_types_list', $result );
|
46 |
+
|
47 |
+
return $result;
|
48 |
+
}
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Get list of post types and related taxonomies
|
52 |
+
*
|
53 |
+
* @return array
|
54 |
+
*/
|
55 |
+
static function post_types_vs_taxonomies() {
|
56 |
+
// Get post types
|
57 |
+
$args = apply_filters( PT_CV_PREFIX_ . 'post_types', array( 'public' => true, 'show_ui' => true, '_builtin' => true ) );
|
58 |
+
$post_types = get_post_types( $args );
|
59 |
+
|
60 |
+
// Get taxonomies of post types
|
61 |
+
$result = array();
|
62 |
+
|
63 |
+
foreach ( $post_types as $post_type ) {
|
64 |
+
$taxonomy_names = get_object_taxonomies( $post_type );
|
65 |
+
$result[ $post_type ] = $taxonomy_names;
|
66 |
+
}
|
67 |
+
|
68 |
+
return apply_filters( PT_CV_PREFIX_ . 'post_types_taxonomies', $result );
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Get list of taxonomies
|
73 |
+
*
|
74 |
+
* @param array $args Array of query parameters
|
75 |
+
*
|
76 |
+
* @return array
|
77 |
+
*/
|
78 |
+
static function taxonomy_list( $args = array() ) {
|
79 |
+
$result = array();
|
80 |
+
$args = array_merge( array( 'public' => true, 'show_ui' => true, '_builtin' => true ), $args );
|
81 |
+
$args = apply_filters( PT_CV_PREFIX_ . 'taxonomy_query_args', $args );
|
82 |
+
$taxonomies = get_taxonomies( $args, 'objects' );
|
83 |
+
|
84 |
+
foreach ( $taxonomies as $taxonomy ) {
|
85 |
+
$result[ $taxonomy->name ] = !empty( $taxonomy->label ) ? $taxonomy->label : $taxonomy->labels->singular_name;
|
86 |
+
}
|
87 |
+
|
88 |
+
return apply_filters( PT_CV_PREFIX_ . 'tax_list', $result );
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* The logical relationship between taxonomies
|
93 |
+
*
|
94 |
+
* @return array
|
95 |
+
*/
|
96 |
+
static function taxonomy_relation() {
|
97 |
+
return array(
|
98 |
+
'AND' => __( 'AND', 'content-views-query-and-display-post-page' ),
|
99 |
+
'OR' => __( 'OR', 'content-views-query-and-display-post-page' ),
|
100 |
+
);
|
101 |
+
}
|
102 |
+
|
103 |
+
/**
|
104 |
+
* Operator to join. Possible values are 'IN'(default), 'NOT IN', 'AND'.
|
105 |
+
* @return type
|
106 |
+
*/
|
107 |
+
static function taxonomy_operators() {
|
108 |
+
return array(
|
109 |
+
'IN' => __( 'IN - show posts which match ANY selected terms', 'content-views-query-and-display-post-page' ),
|
110 |
+
'NOT IN' => __( 'NOT IN - show posts which DO NOT match ANY selected terms', 'content-views-query-and-display-post-page' ),
|
111 |
+
'AND' => __( 'AND - show posts which match ALL selected terms', 'content-views-query-and-display-post-page' ),
|
112 |
+
);
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Get taxonomy information
|
117 |
+
*
|
118 |
+
* @param string $taxonomy The name of the taxonomy
|
119 |
+
* @param string $info Field of metadata want to retrieve
|
120 |
+
*
|
121 |
+
* @return string | array
|
122 |
+
*/
|
123 |
+
static function taxonomy_info( $taxonomy, $info ) {
|
124 |
+
$data = get_taxonomy( $taxonomy );
|
125 |
+
|
126 |
+
if ( isset( $data->$info ) ) {
|
127 |
+
$result = $data->$info;
|
128 |
+
} else {
|
129 |
+
if ( isset( $data->labels->$info ) ) {
|
130 |
+
$result = $data->labels->$info;
|
131 |
+
}
|
132 |
+
}
|
133 |
+
|
134 |
+
return isset( $result ) ? $result : NULL;
|
135 |
+
}
|
136 |
+
|
137 |
+
/**
|
138 |
+
* Get terms of one/many taxonomies
|
139 |
+
*
|
140 |
+
* @param string $taxonomy The name of the taxonomy
|
141 |
+
* @param string $terms_of_taxonomies Array of terms of taxonomies
|
142 |
+
* @param array $args Array of query parameters
|
143 |
+
*/
|
144 |
+
static function term_of_taxonomy( $taxonomy, &$terms_of_taxonomies, $args = array(), $data = 'name' ) {
|
145 |
+
$args = array_merge( array( 'hide_empty' => false ), $args );
|
146 |
+
$terms = get_terms( array( $taxonomy ), $args );
|
147 |
+
|
148 |
+
$term_slug_name = array();
|
149 |
+
foreach ( $terms as $term ) {
|
150 |
+
$term_slug_name[ $term->slug ] = ($data === 'name') ? $term->name : $term;
|
151 |
+
}
|
152 |
+
|
153 |
+
// Sort values of param by saved order
|
154 |
+
$term_slug_name = apply_filters( PT_CV_PREFIX_ . 'settings_sort_single', $term_slug_name, $taxonomy . '-' . 'terms' );
|
155 |
+
|
156 |
+
$terms_of_taxonomies[ $taxonomy ] = array_filter( $term_slug_name ); /* prevent term with empty name */
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Yes no options
|
161 |
+
*
|
162 |
+
* @return array
|
163 |
+
*/
|
164 |
+
static function yes_no( $key = '', $value = '' ) {
|
165 |
+
$result = array(
|
166 |
+
'yes' => __( 'Yes', 'content-views-query-and-display-post-page' ),
|
167 |
+
'no' => __( 'No', 'content-views-query-and-display-post-page' ),
|
168 |
+
);
|
169 |
+
if ( !empty( $key ) ) {
|
170 |
+
return array( $key => empty( $value ) ? $result[ $key ] : $value );
|
171 |
+
}
|
172 |
+
|
173 |
+
return $result;
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Paging types
|
178 |
+
*
|
179 |
+
* @return array
|
180 |
+
*/
|
181 |
+
static function pagination_types() {
|
182 |
+
$result = array(
|
183 |
+
'ajax' => __( 'Ajax', 'content-views-query-and-display-post-page' ),
|
184 |
+
'normal' => __( 'Normal', 'content-views-query-and-display-post-page' ),
|
185 |
+
);
|
186 |
+
|
187 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'pagination_types', $result );
|
188 |
+
|
189 |
+
return $result;
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Paging styles
|
194 |
+
*
|
195 |
+
* @return array
|
196 |
+
*/
|
197 |
+
static function pagination_styles() {
|
198 |
+
$result = array(
|
199 |
+
'regular' => __( 'Numbered pagination', 'content-views-query-and-display-post-page' ),
|
200 |
+
);
|
201 |
+
|
202 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'pagination_styles', $result );
|
203 |
+
|
204 |
+
return $result;
|
205 |
+
}
|
206 |
+
|
207 |
+
/**
|
208 |
+
* Order options
|
209 |
+
*
|
210 |
+
* @return array
|
211 |
+
*/
|
212 |
+
static function orders() {
|
213 |
+
return array(
|
214 |
+
'asc' => __( 'Ascending' ),
|
215 |
+
'desc' => __( 'Descending' ),
|
216 |
+
);
|
217 |
+
}
|
218 |
+
|
219 |
+
/**
|
220 |
+
* List post status
|
221 |
+
*/
|
222 |
+
static function post_statuses() {
|
223 |
+
$result = array();
|
224 |
+
$statuses = get_post_stati( null, 'objects' );
|
225 |
+
foreach ( $statuses as $status => $object ) {
|
226 |
+
$result[ $status ] = ucfirst( $object->label );
|
227 |
+
}
|
228 |
+
|
229 |
+
return $result;
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* Advanced filters options
|
234 |
+
*
|
235 |
+
* @return array
|
236 |
+
*/
|
237 |
+
static function advanced_settings() {
|
238 |
+
return apply_filters(
|
239 |
+
PT_CV_PREFIX_ . 'advanced_settings', array(
|
240 |
+
'taxonomy' => __( 'Taxonomy', 'content-views-query-and-display-post-page' ) . sprintf( ' (%s, %s...)', __( 'Categories' ), __( 'Tags' ) ),
|
241 |
+
'status' => __( 'Status' ),
|
242 |
+
'order' => __( 'Sort by', 'content-views-query-and-display-post-page' ),
|
243 |
+
'search' => __( 'Keyword' ),
|
244 |
+
'author' => __( 'Author' ),
|
245 |
+
)
|
246 |
+
);
|
247 |
+
}
|
248 |
+
|
249 |
+
/**
|
250 |
+
* Show WP author dropdown list
|
251 |
+
*
|
252 |
+
* @return array
|
253 |
+
*/
|
254 |
+
static function user_list() {
|
255 |
+
global $cv_admin_users_list;
|
256 |
+
|
257 |
+
if ( !empty( $cv_admin_users_list ) ) {
|
258 |
+
$result = $cv_admin_users_list;
|
259 |
+
} else {
|
260 |
+
$result = array();
|
261 |
+
$show = 'display_name';
|
262 |
+
|
263 |
+
$args = array(
|
264 |
+
'fields' => array( 'ID', $show, 'user_login' ),
|
265 |
+
'orderby' => 'display_name',
|
266 |
+
'order' => 'ASC',
|
267 |
+
'number' => 1000,
|
268 |
+
);
|
269 |
+
|
270 |
+
$users = get_users( apply_filters( PT_CV_PREFIX_ . 'user_list', $args ) );
|
271 |
+
foreach ( (array) $users as $user ) {
|
272 |
+
$user->ID = (int) $user->ID;
|
273 |
+
$display = !empty( $user->$show ) ? $user->$show : '(' . $user->user_login . ')';
|
274 |
+
|
275 |
+
$result[ $user->ID ] = esc_html( $display );
|
276 |
+
}
|
277 |
+
|
278 |
+
$cv_admin_users_list = $result;
|
279 |
+
}
|
280 |
+
|
281 |
+
return $result;
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Get available filters for Order by Content item
|
286 |
+
*/
|
287 |
+
static function post_regular_orderby() {
|
288 |
+
$regular_orderby = array(
|
289 |
+
'' => sprintf( '- %s -', __( 'Select' ) ),
|
290 |
+
'ID' => __( 'ID', 'content-views-query-and-display-post-page' ),
|
291 |
+
'title' => __( 'Title' ),
|
292 |
+
'date' => __( 'Published date', 'content-views-query-and-display-post-page' ),
|
293 |
+
'modified' => __( 'Modified date', 'content-views-query-and-display-post-page' ),
|
294 |
+
);
|
295 |
+
|
296 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'regular_orderby', $regular_orderby );
|
297 |
+
|
298 |
+
return $result;
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* View type options
|
303 |
+
*
|
304 |
+
* @return array
|
305 |
+
*/
|
306 |
+
static function view_type() {
|
307 |
+
|
308 |
+
$view_type = array(
|
309 |
+
'grid' => __( 'Grid', 'content-views-query-and-display-post-page' ),
|
310 |
+
'collapsible' => __( 'Collapsible List', 'content-views-query-and-display-post-page' ),
|
311 |
+
'scrollable' => __( 'Scrollable List', 'content-views-query-and-display-post-page' ),
|
312 |
+
);
|
313 |
+
|
314 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'view_type', $view_type );
|
315 |
+
|
316 |
+
return $result;
|
317 |
+
}
|
318 |
+
|
319 |
+
/**
|
320 |
+
* Settings of All View Types
|
321 |
+
*
|
322 |
+
* @return array
|
323 |
+
*/
|
324 |
+
static function view_type_settings() {
|
325 |
+
|
326 |
+
$view_type_settings = array();
|
327 |
+
|
328 |
+
// Settings of Grid type
|
329 |
+
$view_type_settings[ 'grid' ] = PT_CV_Settings::view_type_settings_grid();
|
330 |
+
|
331 |
+
// Settings of Collapsible type
|
332 |
+
$view_type_settings[ 'collapsible' ] = PT_CV_Settings::view_type_settings_collapsible();
|
333 |
+
|
334 |
+
// Settings of Scrollable type
|
335 |
+
$view_type_settings[ 'scrollable' ] = PT_CV_Settings::view_type_settings_scrollable();
|
336 |
+
|
337 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'view_type_settings', $view_type_settings );
|
338 |
+
|
339 |
+
return $result;
|
340 |
+
}
|
341 |
+
|
342 |
+
/**
|
343 |
+
* Layout format options
|
344 |
+
*
|
345 |
+
* @return array
|
346 |
+
*/
|
347 |
+
static function layout_format() {
|
348 |
+
|
349 |
+
$result = array(
|
350 |
+
'1-col' => __( 'Show thumbnail & text vertically', 'content-views-query-and-display-post-page' ),
|
351 |
+
'2-col' => __( 'Show thumbnail on the left/right of text', 'content-views-query-and-display-post-page' ),
|
352 |
+
);
|
353 |
+
|
354 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'layout_format', $result );
|
355 |
+
|
356 |
+
return $result;
|
357 |
+
}
|
358 |
+
|
359 |
+
/**
|
360 |
+
* Open in options
|
361 |
+
*/
|
362 |
+
static function open_in() {
|
363 |
+
|
364 |
+
$open_in = array(
|
365 |
+
'_self' => __( 'Current tab', 'content-views-query-and-display-post-page' ),
|
366 |
+
'_blank' => __( 'New tab', 'content-views-query-and-display-post-page' ),
|
367 |
+
);
|
368 |
+
|
369 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'open_in', $open_in );
|
370 |
+
|
371 |
+
return $result;
|
372 |
+
}
|
373 |
+
|
374 |
+
/**
|
375 |
+
* Get all thumbnail sizes
|
376 |
+
*/
|
377 |
+
static function field_thumbnail_sizes( $_size_name = '' ) {
|
378 |
+
// All available thumbnail sizes
|
379 |
+
global $_wp_additional_image_sizes;
|
380 |
+
|
381 |
+
$result = $sizes_to_sort = $dimensions_to_sort = array();
|
382 |
+
|
383 |
+
foreach ( get_intermediate_image_sizes() as $size_name ) {
|
384 |
+
if ( in_array( $size_name, array( 'thumbnail', 'medium', 'large' ) ) ) {
|
385 |
+
$this_size = array();
|
386 |
+
$this_size[] = get_option( $size_name . '_size_w' );
|
387 |
+
$this_size[] = get_option( $size_name . '_size_h' );
|
388 |
+
|
389 |
+
// Add official sizes to result
|
390 |
+
$result[ $size_name ] = ucfirst( $size_name ) . ' (' . implode( ' × ', $this_size ) . ')';
|
391 |
+
} else {
|
392 |
+
if ( isset( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[ $size_name ] ) ) {
|
393 |
+
|
394 |
+
$this_size = array();
|
395 |
+
$this_size[ 'width' ] = $_wp_additional_image_sizes[ $size_name ][ 'width' ];
|
396 |
+
$this_size[ 'height' ] = $_wp_additional_image_sizes[ $size_name ][ 'height' ];
|
397 |
+
|
398 |
+
// Calculate sizes value for sorting
|
399 |
+
$sizes_value = intval( $this_size[ 'width' ] ) * intval( $this_size[ 'height' ] ) + rand( 1, 10 );
|
400 |
+
|
401 |
+
$dimensions_to_sort[ $sizes_value ] = $size_name;
|
402 |
+
} else {
|
403 |
+
$this_size = array( 0, 0 );
|
404 |
+
}
|
405 |
+
|
406 |
+
$sizes_to_sort[ $size_name ] = ucfirst( preg_replace( '/[\-_]/', ' ', $size_name ) ) . ' (' . implode( ' × ', $this_size ) . ')';
|
407 |
+
}
|
408 |
+
|
409 |
+
if ( !empty( $_size_name ) && $_size_name == $size_name ) {
|
410 |
+
return $this_size;
|
411 |
+
}
|
412 |
+
}
|
413 |
+
// Add full sizes
|
414 |
+
$result[ 'full' ] = __( 'Full Size' );
|
415 |
+
|
416 |
+
// Sort custom sizes by index (width * height)
|
417 |
+
krsort( $dimensions_to_sort );
|
418 |
+
|
419 |
+
// Get array element in ASC sorted order
|
420 |
+
foreach ( array_reverse( $dimensions_to_sort ) as $size_name ) {
|
421 |
+
$result[ $size_name ] = $sizes_to_sort[ $size_name ];
|
422 |
+
}
|
423 |
+
|
424 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'field_thumbnail_sizes', $result );
|
425 |
+
|
426 |
+
return $result;
|
427 |
+
}
|
428 |
+
|
429 |
+
/**
|
430 |
+
* Thumbnail Position
|
431 |
+
*
|
432 |
+
* @return array
|
433 |
+
*/
|
434 |
+
static function thumbnail_position() {
|
435 |
+
|
436 |
+
$thumbnail_position = array(
|
437 |
+
'left' => __( 'Left' ),
|
438 |
+
'right' => __( 'Right' ),
|
439 |
+
);
|
440 |
+
|
441 |
+
$result = apply_filters( PT_CV_PREFIX_ . 'thumbnail_position', $thumbnail_position );
|
442 |
+
|
443 |
+
return $result;
|
444 |
+
}
|
445 |
+
|
446 |
+
}
|
447 |
+
|
448 |
}
|
public/assets/css/cv.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
/*!
|
2 |
-
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
3 |
-
* Copyright 2011-2015 Twitter, Inc.
|
4 |
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
-
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.pt-cv-wrapper article,.pt-cv-wrapper aside,.pt-cv-wrapper details,.pt-cv-wrapper figcaption,.pt-cv-wrapper footer,.pt-cv-wrapper header,.pt-cv-wrapper hgroup,.pt-cv-wrapper main,.pt-cv-wrapper menu,.pt-cv-wrapper nav,.pt-cv-wrapper section,.pt-cv-wrapper summary{display:block}.pt-cv-wrapper audio,.pt-cv-wrapper canvas,.pt-cv-wrapper progress,.pt-cv-wrapper video{display:inline-block;vertical-align:baseline}.pt-cv-wrapper audio:not([controls]){display:none;height:0}.pt-cv-wrapper [hidden],.pt-cv-wrapper template{display:none}.pt-cv-wrapper a{background-color:transparent}.pt-cv-wrapper a:active,.pt-cv-wrapper a:hover{outline:0}.pt-cv-wrapper abbr[title]{border-bottom:1px dotted}.pt-cv-wrapper b,.pt-cv-wrapper strong{font-weight:700}.pt-cv-wrapper dfn{font-style:italic}.pt-cv-wrapper h1{margin:.67em 0}.pt-cv-wrapper mark{background:#ff0;color:#000}.pt-cv-wrapper small{font-size:80%}.pt-cv-wrapper sub,.pt-cv-wrapper sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.pt-cv-wrapper sup{top:-.5em}.pt-cv-wrapper sub{bottom:-.25em}.pt-cv-wrapper img{border:0}.pt-cv-wrapper svg:not(:root){overflow:hidden}.pt-cv-wrapper hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}.pt-cv-wrapper pre{overflow:auto}.pt-cv-wrapper code,.pt-cv-wrapper kbd,.pt-cv-wrapper pre,.pt-cv-wrapper samp{font-family:monospace,monospace;font-size:1em}.pt-cv-wrapper button,.pt-cv-wrapper input,.pt-cv-wrapper optgroup,.pt-cv-wrapper select,.pt-cv-wrapper textarea{color:inherit;font:inherit;margin:0}.pt-cv-wrapper button{overflow:visible}.pt-cv-wrapper button,.pt-cv-wrapper select{text-transform:none}.pt-cv-wrapper button,.pt-cv-wrapper html input[type=button],.pt-cv-wrapper input[type=reset],.pt-cv-wrapper input[type=submit]{-webkit-appearance:button;cursor:pointer}.pt-cv-wrapper button[disabled],.pt-cv-wrapper html input[disabled]{cursor:default}.pt-cv-wrapper button::-moz-focus-inner,.pt-cv-wrapper input::-moz-focus-inner{border:0;padding:0}.pt-cv-wrapper input{line-height:normal}.pt-cv-wrapper input[type=checkbox],.pt-cv-wrapper input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.pt-cv-wrapper input[type=number]::-webkit-inner-spin-button,.pt-cv-wrapper input[type=number]::-webkit-outer-spin-button{height:auto}.pt-cv-wrapper input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.pt-cv-wrapper input[type=search]::-webkit-search-cancel-button,.pt-cv-wrapper input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.pt-cv-wrapper fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}.pt-cv-wrapper legend{border:0;padding:0}.pt-cv-wrapper textarea{overflow:auto}.pt-cv-wrapper optgroup{font-weight:700}.pt-cv-wrapper table{border-collapse:collapse;border-spacing:0}.pt-cv-wrapper td,.pt-cv-wrapper th{padding:0}@media print{.pt-cv-wrapper *,.pt-cv-wrapper :after,.pt-cv-wrapper :before{background:0 0!important;color:#000!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}.pt-cv-wrapper a,.pt-cv-wrapper a:visited{text-decoration:underline}.pt-cv-wrapper a[href]:after{content:" (" attr(href) ")"}.pt-cv-wrapper abbr[title]:after{content:" (" attr(title) ")"}.pt-cv-wrapper a[href^="javascript:"]:after,.pt-cv-wrapper a[href^="#"]:after{content:""}.pt-cv-wrapper blockquote,.pt-cv-wrapper pre{border:1px solid #999;page-break-inside:avoid}.pt-cv-wrapper thead{display:table-header-group}.pt-cv-wrapper img,.pt-cv-wrapper tr{page-break-inside:avoid}.pt-cv-wrapper img{max-width:100%!important}.pt-cv-wrapper h2,.pt-cv-wrapper h3,.pt-cv-wrapper p{orphans:3;widows:3}.pt-cv-wrapper h2,.pt-cv-wrapper h3{page-break-after:avoid}.pt-cv-wrapper .navbar{display:none}.pt-cv-wrapper .btn>.caret,.pt-cv-wrapper .dropup>.btn>.caret{border-top-color:#000!important}.pt-cv-wrapper .label{border:1px solid #000}.pt-cv-wrapper .table{border-collapse:collapse!important}.pt-cv-wrapper .table td,.pt-cv-wrapper .table th{background-color:#fff!important}.pt-cv-wrapper .table-bordered td,.pt-cv-wrapper .table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.pt-cv-wrapper .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pt-cv-wrapper .glyphicon-asterisk:before{content:"\2a"}.pt-cv-wrapper .glyphicon-plus:before{content:"\2b"}.pt-cv-wrapper .glyphicon-eur:before,.pt-cv-wrapper .glyphicon-euro:before{content:"\20ac"}.pt-cv-wrapper .glyphicon-minus:before{content:"\2212"}.pt-cv-wrapper .glyphicon-cloud:before{content:"\2601"}.pt-cv-wrapper .glyphicon-envelope:before{content:"\2709"}.pt-cv-wrapper .glyphicon-pencil:before{content:"\270f"}.pt-cv-wrapper .glyphicon-glass:before{content:"\e001"}.pt-cv-wrapper .glyphicon-music:before{content:"\e002"}.pt-cv-wrapper .glyphicon-search:before{content:"\e003"}.pt-cv-wrapper .glyphicon-heart:before{content:"\e005"}.pt-cv-wrapper .glyphicon-star:before{content:"\e006"}.pt-cv-wrapper .glyphicon-star-empty:before{content:"\e007"}.pt-cv-wrapper .glyphicon-user:before{content:"\e008"}.pt-cv-wrapper .glyphicon-film:before{content:"\e009"}.pt-cv-wrapper .glyphicon-th-large:before{content:"\e010"}.pt-cv-wrapper .glyphicon-th:before{content:"\e011"}.pt-cv-wrapper .glyphicon-th-list:before{content:"\e012"}.pt-cv-wrapper .glyphicon-ok:before{content:"\e013"}.pt-cv-wrapper .glyphicon-remove:before{content:"\e014"}.pt-cv-wrapper .glyphicon-zoom-in:before{content:"\e015"}.pt-cv-wrapper .glyphicon-zoom-out:before{content:"\e016"}.pt-cv-wrapper .glyphicon-off:before{content:"\e017"}.pt-cv-wrapper .glyphicon-signal:before{content:"\e018"}.pt-cv-wrapper .glyphicon-cog:before{content:"\e019"}.pt-cv-wrapper .glyphicon-trash:before{content:"\e020"}.pt-cv-wrapper .glyphicon-home:before{content:"\e021"}.pt-cv-wrapper .glyphicon-file:before{content:"\e022"}.pt-cv-wrapper .glyphicon-time:before{content:"\e023"}.pt-cv-wrapper .glyphicon-road:before{content:"\e024"}.pt-cv-wrapper .glyphicon-download-alt:before{content:"\e025"}.pt-cv-wrapper .glyphicon-download:before{content:"\e026"}.pt-cv-wrapper .glyphicon-upload:before{content:"\e027"}.pt-cv-wrapper .glyphicon-inbox:before{content:"\e028"}.pt-cv-wrapper .glyphicon-play-circle:before{content:"\e029"}.pt-cv-wrapper .glyphicon-repeat:before{content:"\e030"}.pt-cv-wrapper .glyphicon-refresh:before{content:"\e031"}.pt-cv-wrapper .glyphicon-list-alt:before{content:"\e032"}.pt-cv-wrapper .glyphicon-lock:before{content:"\e033"}.pt-cv-wrapper .glyphicon-flag:before{content:"\e034"}.pt-cv-wrapper .glyphicon-headphones:before{content:"\e035"}.pt-cv-wrapper .glyphicon-volume-off:before{content:"\e036"}.pt-cv-wrapper .glyphicon-volume-down:before{content:"\e037"}.pt-cv-wrapper .glyphicon-volume-up:before{content:"\e038"}.pt-cv-wrapper .glyphicon-qrcode:before{content:"\e039"}.pt-cv-wrapper .glyphicon-barcode:before{content:"\e040"}.pt-cv-wrapper .glyphicon-tag:before{content:"\e041"}.pt-cv-wrapper .glyphicon-tags:before{content:"\e042"}.pt-cv-wrapper .glyphicon-book:before{content:"\e043"}.pt-cv-wrapper .glyphicon-bookmark:before{content:"\e044"}.pt-cv-wrapper .glyphicon-print:before{content:"\e045"}.pt-cv-wrapper .glyphicon-camera:before{content:"\e046"}.pt-cv-wrapper .glyphicon-font:before{content:"\e047"}.pt-cv-wrapper .glyphicon-bold:before{content:"\e048"}.pt-cv-wrapper .glyphicon-italic:before{content:"\e049"}.pt-cv-wrapper .glyphicon-text-height:before{content:"\e050"}.pt-cv-wrapper .glyphicon-text-width:before{content:"\e051"}.pt-cv-wrapper .glyphicon-align-left:before{content:"\e052"}.pt-cv-wrapper .glyphicon-align-center:before{content:"\e053"}.pt-cv-wrapper .glyphicon-align-right:before{content:"\e054"}.pt-cv-wrapper .glyphicon-align-justify:before{content:"\e055"}.pt-cv-wrapper .glyphicon-list:before{content:"\e056"}.pt-cv-wrapper .glyphicon-indent-left:before{content:"\e057"}.pt-cv-wrapper .glyphicon-indent-right:before{content:"\e058"}.pt-cv-wrapper .glyphicon-facetime-video:before{content:"\e059"}.pt-cv-wrapper .glyphicon-picture:before{content:"\e060"}.pt-cv-wrapper .glyphicon-map-marker:before{content:"\e062"}.pt-cv-wrapper .glyphicon-adjust:before{content:"\e063"}.pt-cv-wrapper .glyphicon-tint:before{content:"\e064"}.pt-cv-wrapper .glyphicon-edit:before{content:"\e065"}.pt-cv-wrapper .glyphicon-share:before{content:"\e066"}.pt-cv-wrapper .glyphicon-check:before{content:"\e067"}.pt-cv-wrapper .glyphicon-move:before{content:"\e068"}.pt-cv-wrapper .glyphicon-step-backward:before{content:"\e069"}.pt-cv-wrapper .glyphicon-fast-backward:before{content:"\e070"}.pt-cv-wrapper .glyphicon-backward:before{content:"\e071"}.pt-cv-wrapper .glyphicon-play:before{content:"\e072"}.pt-cv-wrapper .glyphicon-pause:before{content:"\e073"}.pt-cv-wrapper .glyphicon-stop:before{content:"\e074"}.pt-cv-wrapper .glyphicon-forward:before{content:"\e075"}.pt-cv-wrapper .glyphicon-fast-forward:before{content:"\e076"}.pt-cv-wrapper .glyphicon-step-forward:before{content:"\e077"}.pt-cv-wrapper .glyphicon-eject:before{content:"\e078"}.pt-cv-wrapper .glyphicon-chevron-left:before{content:"\e079"}.pt-cv-wrapper .glyphicon-chevron-right:before{content:"\e080"}.pt-cv-wrapper .glyphicon-plus-sign:before{content:"\e081"}.pt-cv-wrapper .glyphicon-minus-sign:before{content:"\e082"}.pt-cv-wrapper .glyphicon-remove-sign:before{content:"\e083"}.pt-cv-wrapper .glyphicon-ok-sign:before{content:"\e084"}.pt-cv-wrapper .glyphicon-question-sign:before{content:"\e085"}.pt-cv-wrapper .glyphicon-info-sign:before{content:"\e086"}.pt-cv-wrapper .glyphicon-screenshot:before{content:"\e087"}.pt-cv-wrapper .glyphicon-remove-circle:before{content:"\e088"}.pt-cv-wrapper .glyphicon-ok-circle:before{content:"\e089"}.pt-cv-wrapper .glyphicon-ban-circle:before{content:"\e090"}.pt-cv-wrapper .glyphicon-arrow-left:before{content:"\e091"}.pt-cv-wrapper .glyphicon-arrow-right:before{content:"\e092"}.pt-cv-wrapper .glyphicon-arrow-up:before{content:"\e093"}.pt-cv-wrapper .glyphicon-arrow-down:before{content:"\e094"}.pt-cv-wrapper .glyphicon-share-alt:before{content:"\e095"}.pt-cv-wrapper .glyphicon-resize-full:before{content:"\e096"}.pt-cv-wrapper .glyphicon-resize-small:before{content:"\e097"}.pt-cv-wrapper .glyphicon-exclamation-sign:before{content:"\e101"}.pt-cv-wrapper .glyphicon-gift:before{content:"\e102"}.pt-cv-wrapper .glyphicon-leaf:before{content:"\e103"}.pt-cv-wrapper .glyphicon-fire:before{content:"\e104"}.pt-cv-wrapper .glyphicon-eye-open:before{content:"\e105"}.pt-cv-wrapper .glyphicon-eye-close:before{content:"\e106"}.pt-cv-wrapper .glyphicon-warning-sign:before{content:"\e107"}.pt-cv-wrapper .glyphicon-plane:before{content:"\e108"}.pt-cv-wrapper .glyphicon-calendar:before{content:"\e109"}.pt-cv-wrapper .glyphicon-random:before{content:"\e110"}.pt-cv-wrapper .glyphicon-comment:before{content:"\e111"}.pt-cv-wrapper .glyphicon-magnet:before{content:"\e112"}.pt-cv-wrapper .glyphicon-chevron-up:before{content:"\e113"}.pt-cv-wrapper .glyphicon-chevron-down:before{content:"\e114"}.pt-cv-wrapper .glyphicon-retweet:before{content:"\e115"}.pt-cv-wrapper .glyphicon-shopping-cart:before{content:"\e116"}.pt-cv-wrapper .glyphicon-folder-close:before{content:"\e117"}.pt-cv-wrapper .glyphicon-folder-open:before{content:"\e118"}.pt-cv-wrapper .glyphicon-resize-vertical:before{content:"\e119"}.pt-cv-wrapper .glyphicon-resize-horizontal:before{content:"\e120"}.pt-cv-wrapper .glyphicon-hdd:before{content:"\e121"}.pt-cv-wrapper .glyphicon-bullhorn:before{content:"\e122"}.pt-cv-wrapper .glyphicon-bell:before{content:"\e123"}.pt-cv-wrapper .glyphicon-certificate:before{content:"\e124"}.pt-cv-wrapper .glyphicon-thumbs-up:before{content:"\e125"}.pt-cv-wrapper .glyphicon-thumbs-down:before{content:"\e126"}.pt-cv-wrapper .glyphicon-hand-right:before{content:"\e127"}.pt-cv-wrapper .glyphicon-hand-left:before{content:"\e128"}.pt-cv-wrapper .glyphicon-hand-up:before{content:"\e129"}.pt-cv-wrapper .glyphicon-hand-down:before{content:"\e130"}.pt-cv-wrapper .glyphicon-circle-arrow-right:before{content:"\e131"}.pt-cv-wrapper .glyphicon-circle-arrow-left:before{content:"\e132"}.pt-cv-wrapper .glyphicon-circle-arrow-up:before{content:"\e133"}.pt-cv-wrapper .glyphicon-circle-arrow-down:before{content:"\e134"}.pt-cv-wrapper .glyphicon-globe:before{content:"\e135"}.pt-cv-wrapper .glyphicon-wrench:before{content:"\e136"}.pt-cv-wrapper .glyphicon-tasks:before{content:"\e137"}.pt-cv-wrapper .glyphicon-filter:before{content:"\e138"}.pt-cv-wrapper .glyphicon-briefcase:before{content:"\e139"}.pt-cv-wrapper .glyphicon-fullscreen:before{content:"\e140"}.pt-cv-wrapper .glyphicon-dashboard:before{content:"\e141"}.pt-cv-wrapper .glyphicon-paperclip:before{content:"\e142"}.pt-cv-wrapper .glyphicon-heart-empty:before{content:"\e143"}.pt-cv-wrapper .glyphicon-link:before{content:"\e144"}.pt-cv-wrapper .glyphicon-phone:before{content:"\e145"}.pt-cv-wrapper .glyphicon-pushpin:before{content:"\e146"}.pt-cv-wrapper .glyphicon-usd:before{content:"\e148"}.pt-cv-wrapper .glyphicon-gbp:before{content:"\e149"}.pt-cv-wrapper .glyphicon-sort:before{content:"\e150"}.pt-cv-wrapper .glyphicon-sort-by-alphabet:before{content:"\e151"}.pt-cv-wrapper .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.pt-cv-wrapper .glyphicon-sort-by-order:before{content:"\e153"}.pt-cv-wrapper .glyphicon-sort-by-order-alt:before{content:"\e154"}.pt-cv-wrapper .glyphicon-sort-by-attributes:before{content:"\e155"}.pt-cv-wrapper .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.pt-cv-wrapper .glyphicon-unchecked:before{content:"\e157"}.pt-cv-wrapper .glyphicon-expand:before{content:"\e158"}.pt-cv-wrapper .glyphicon-collapse-down:before{content:"\e159"}.pt-cv-wrapper .glyphicon-collapse-up:before{content:"\e160"}.pt-cv-wrapper .glyphicon-log-in:before{content:"\e161"}.pt-cv-wrapper .glyphicon-flash:before{content:"\e162"}.pt-cv-wrapper .glyphicon-log-out:before{content:"\e163"}.pt-cv-wrapper .glyphicon-new-window:before{content:"\e164"}.pt-cv-wrapper .glyphicon-record:before{content:"\e165"}.pt-cv-wrapper .glyphicon-save:before{content:"\e166"}.pt-cv-wrapper .glyphicon-open:before{content:"\e167"}.pt-cv-wrapper .glyphicon-saved:before{content:"\e168"}.pt-cv-wrapper .glyphicon-import:before{content:"\e169"}.pt-cv-wrapper .glyphicon-export:before{content:"\e170"}.pt-cv-wrapper .glyphicon-send:before{content:"\e171"}.pt-cv-wrapper .glyphicon-floppy-disk:before{content:"\e172"}.pt-cv-wrapper .glyphicon-floppy-saved:before{content:"\e173"}.pt-cv-wrapper .glyphicon-floppy-remove:before{content:"\e174"}.pt-cv-wrapper .glyphicon-floppy-save:before{content:"\e175"}.pt-cv-wrapper .glyphicon-floppy-open:before{content:"\e176"}.pt-cv-wrapper .glyphicon-credit-card:before{content:"\e177"}.pt-cv-wrapper .glyphicon-transfer:before{content:"\e178"}.pt-cv-wrapper .glyphicon-cutlery:before{content:"\e179"}.pt-cv-wrapper .glyphicon-header:before{content:"\e180"}.pt-cv-wrapper .glyphicon-compressed:before{content:"\e181"}.pt-cv-wrapper .glyphicon-earphone:before{content:"\e182"}.pt-cv-wrapper .glyphicon-phone-alt:before{content:"\e183"}.pt-cv-wrapper .glyphicon-tower:before{content:"\e184"}.pt-cv-wrapper .glyphicon-stats:before{content:"\e185"}.pt-cv-wrapper .glyphicon-sd-video:before{content:"\e186"}.pt-cv-wrapper .glyphicon-hd-video:before{content:"\e187"}.pt-cv-wrapper .glyphicon-subtitles:before{content:"\e188"}.pt-cv-wrapper .glyphicon-sound-stereo:before{content:"\e189"}.pt-cv-wrapper .glyphicon-sound-dolby:before{content:"\e190"}.pt-cv-wrapper .glyphicon-sound-5-1:before{content:"\e191"}.pt-cv-wrapper .glyphicon-sound-6-1:before{content:"\e192"}.pt-cv-wrapper .glyphicon-sound-7-1:before{content:"\e193"}.pt-cv-wrapper .glyphicon-copyright-mark:before{content:"\e194"}.pt-cv-wrapper .glyphicon-registration-mark:before{content:"\e195"}.pt-cv-wrapper .glyphicon-cloud-download:before{content:"\e197"}.pt-cv-wrapper .glyphicon-cloud-upload:before{content:"\e198"}.pt-cv-wrapper .glyphicon-tree-conifer:before{content:"\e199"}.pt-cv-wrapper .glyphicon-tree-deciduous:before{content:"\e200"}.pt-cv-wrapper .glyphicon-cd:before{content:"\e201"}.pt-cv-wrapper .glyphicon-save-file:before{content:"\e202"}.pt-cv-wrapper .glyphicon-open-file:before{content:"\e203"}.pt-cv-wrapper .glyphicon-level-up:before{content:"\e204"}.pt-cv-wrapper .glyphicon-copy:before{content:"\e205"}.pt-cv-wrapper .glyphicon-paste:before{content:"\e206"}.pt-cv-wrapper .glyphicon-alert:before{content:"\e209"}.pt-cv-wrapper .glyphicon-equalizer:before{content:"\e210"}.pt-cv-wrapper .glyphicon-king:before{content:"\e211"}.pt-cv-wrapper .glyphicon-queen:before{content:"\e212"}.pt-cv-wrapper .glyphicon-pawn:before{content:"\e213"}.pt-cv-wrapper .glyphicon-bishop:before{content:"\e214"}.pt-cv-wrapper .glyphicon-knight:before{content:"\e215"}.pt-cv-wrapper .glyphicon-baby-formula:before{content:"\e216"}.pt-cv-wrapper .glyphicon-tent:before{content:"\26fa"}.pt-cv-wrapper .glyphicon-blackboard:before{content:"\e218"}.pt-cv-wrapper .glyphicon-bed:before{content:"\e219"}.pt-cv-wrapper .glyphicon-apple:before{content:"\f8ff"}.pt-cv-wrapper .glyphicon-erase:before{content:"\e221"}.pt-cv-wrapper .glyphicon-hourglass:before{content:"\231b"}.pt-cv-wrapper .glyphicon-lamp:before{content:"\e223"}.pt-cv-wrapper .glyphicon-duplicate:before{content:"\e224"}.pt-cv-wrapper .glyphicon-piggy-bank:before{content:"\e225"}.pt-cv-wrapper .glyphicon-scissors:before{content:"\e226"}.pt-cv-wrapper .glyphicon-bitcoin:before,.pt-cv-wrapper .glyphicon-btc:before,.pt-cv-wrapper .glyphicon-xbt:before{content:"\e227"}.pt-cv-wrapper .glyphicon-jpy:before,.pt-cv-wrapper .glyphicon-yen:before{content:"\00a5"}.pt-cv-wrapper .glyphicon-rub:before,.pt-cv-wrapper .glyphicon-ruble:before{content:"\20bd"}.pt-cv-wrapper .glyphicon-scale:before{content:"\e230"}.pt-cv-wrapper .glyphicon-ice-lolly:before{content:"\e231"}.pt-cv-wrapper .glyphicon-ice-lolly-tasted:before{content:"\e232"}.pt-cv-wrapper .glyphicon-education:before{content:"\e233"}.pt-cv-wrapper .glyphicon-option-horizontal:before{content:"\e234"}.pt-cv-wrapper .glyphicon-option-vertical:before{content:"\e235"}.pt-cv-wrapper .glyphicon-menu-hamburger:before{content:"\e236"}.pt-cv-wrapper .glyphicon-modal-window:before{content:"\e237"}.pt-cv-wrapper .glyphicon-oil:before{content:"\e238"}.pt-cv-wrapper .glyphicon-grain:before{content:"\e239"}.pt-cv-wrapper .glyphicon-sunglasses:before{content:"\e240"}.pt-cv-wrapper .glyphicon-text-size:before{content:"\e241"}.pt-cv-wrapper .glyphicon-text-color:before{content:"\e242"}.pt-cv-wrapper .glyphicon-text-background:before{content:"\e243"}.pt-cv-wrapper .glyphicon-object-align-top:before{content:"\e244"}.pt-cv-wrapper .glyphicon-object-align-bottom:before{content:"\e245"}.pt-cv-wrapper .glyphicon-object-align-horizontal:before{content:"\e246"}.pt-cv-wrapper .glyphicon-object-align-left:before{content:"\e247"}.pt-cv-wrapper .glyphicon-object-align-vertical:before{content:"\e248"}.pt-cv-wrapper .glyphicon-object-align-right:before{content:"\e249"}.pt-cv-wrapper .glyphicon-triangle-right:before{content:"\e250"}.pt-cv-wrapper .glyphicon-triangle-left:before{content:"\e251"}.pt-cv-wrapper .glyphicon-triangle-bottom:before{content:"\e252"}.pt-cv-wrapper .glyphicon-triangle-top:before{content:"\e253"}.pt-cv-wrapper .glyphicon-console:before{content:"\e254"}.pt-cv-wrapper .glyphicon-superscript:before{content:"\e255"}.pt-cv-wrapper .glyphicon-subscript:before{content:"\e256"}.pt-cv-wrapper .glyphicon-menu-left:before{content:"\e257"}.pt-cv-wrapper .glyphicon-menu-right:before{content:"\e258"}.pt-cv-wrapper .glyphicon-menu-down:before{content:"\e259"}.pt-cv-wrapper .glyphicon-menu-up:before{content:"\e260"}.pt-cv-wrapper img{vertical-align:middle}.pt-cv-wrapper .carousel-inner>.item>a>img,.pt-cv-wrapper .carousel-inner>.item>img,.pt-cv-wrapper .img-responsive,.pt-cv-wrapper .thumbnail a>img,.pt-cv-wrapper .thumbnail>img{display:block;max-width:100%;height:auto}.pt-cv-wrapper .img-rounded{border-radius:6px}.pt-cv-wrapper .img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.pt-cv-wrapper .img-circle{border-radius:50%}.pt-cv-wrapper hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.pt-cv-wrapper .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pt-cv-wrapper .sr-only-focusable:active,.pt-cv-wrapper .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pt-cv-wrapper [role=button]{cursor:pointer}.pt-cv-wrapper .container,.pt-cv-wrapper .container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media(min-width:768px){.pt-cv-wrapper .container{width:750px}}@media(min-width:992px){.pt-cv-wrapper .container{width:970px}}@media(min-width:1200px){.pt-cv-wrapper .container{width:1170px}}.pt-cv-wrapper .row{margin-left:-15px;margin-right:-15px}.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-lg-12,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-lg-9,.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-md-12,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-md-9,.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-sm-12,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-sm-9,.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-xs-12,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-xs-12,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-xs-9{float:left}.pt-cv-wrapper .col-xs-12{width:100%}.pt-cv-wrapper .col-xs-11{width:91.66666667%}.pt-cv-wrapper .col-xs-10{width:83.33333333%}.pt-cv-wrapper .col-xs-9{width:75%}.pt-cv-wrapper .col-xs-8{width:66.66666667%}.pt-cv-wrapper .col-xs-7{width:58.33333333%}.pt-cv-wrapper .col-xs-6{width:50%}.pt-cv-wrapper .col-xs-5{width:41.66666667%}.pt-cv-wrapper .col-xs-4{width:33.33333333%}.pt-cv-wrapper .col-xs-3{width:25%}.pt-cv-wrapper .col-xs-2{width:16.66666667%}.pt-cv-wrapper .col-xs-1{width:8.33333333%}.pt-cv-wrapper .col-xs-pull-12{right:100%}.pt-cv-wrapper .col-xs-pull-11{right:91.66666667%}.pt-cv-wrapper .col-xs-pull-10{right:83.33333333%}.pt-cv-wrapper .col-xs-pull-9{right:75%}.pt-cv-wrapper .col-xs-pull-8{right:66.66666667%}.pt-cv-wrapper .col-xs-pull-7{right:58.33333333%}.pt-cv-wrapper .col-xs-pull-6{right:50%}.pt-cv-wrapper .col-xs-pull-5{right:41.66666667%}.pt-cv-wrapper .col-xs-pull-4{right:33.33333333%}.pt-cv-wrapper .col-xs-pull-3{right:25%}.pt-cv-wrapper .col-xs-pull-2{right:16.66666667%}.pt-cv-wrapper .col-xs-pull-1{right:8.33333333%}.pt-cv-wrapper .col-xs-pull-0{right:auto}.pt-cv-wrapper .col-xs-push-12{left:100%}.pt-cv-wrapper .col-xs-push-11{left:91.66666667%}.pt-cv-wrapper .col-xs-push-10{left:83.33333333%}.pt-cv-wrapper .col-xs-push-9{left:75%}.pt-cv-wrapper .col-xs-push-8{left:66.66666667%}.pt-cv-wrapper .col-xs-push-7{left:58.33333333%}.pt-cv-wrapper .col-xs-push-6{left:50%}.pt-cv-wrapper .col-xs-push-5{left:41.66666667%}.pt-cv-wrapper .col-xs-push-4{left:33.33333333%}.pt-cv-wrapper .col-xs-push-3{left:25%}.pt-cv-wrapper .col-xs-push-2{left:16.66666667%}.pt-cv-wrapper .col-xs-push-1{left:8.33333333%}.pt-cv-wrapper .col-xs-push-0{left:auto}.pt-cv-wrapper .col-xs-offset-12{margin-left:100%}.pt-cv-wrapper .col-xs-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-xs-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-xs-offset-9{margin-left:75%}.pt-cv-wrapper .col-xs-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-xs-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-xs-offset-6{margin-left:50%}.pt-cv-wrapper .col-xs-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-xs-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-xs-offset-3{margin-left:25%}.pt-cv-wrapper .col-xs-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-xs-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-xs-offset-0{margin-left:0}@media(min-width:768px){.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-sm-12,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-sm-9{float:left}.pt-cv-wrapper .col-sm-12{width:100%}.pt-cv-wrapper .col-sm-11{width:91.66666667%}.pt-cv-wrapper .col-sm-10{width:83.33333333%}.pt-cv-wrapper .col-sm-9{width:75%}.pt-cv-wrapper .col-sm-8{width:66.66666667%}.pt-cv-wrapper .col-sm-7{width:58.33333333%}.pt-cv-wrapper .col-sm-6{width:50%}.pt-cv-wrapper .col-sm-5{width:41.66666667%}.pt-cv-wrapper .col-sm-4{width:33.33333333%}.pt-cv-wrapper .col-sm-3{width:25%}.pt-cv-wrapper .col-sm-2{width:16.66666667%}.pt-cv-wrapper .col-sm-1{width:8.33333333%}.pt-cv-wrapper .col-sm-pull-12{right:100%}.pt-cv-wrapper .col-sm-pull-11{right:91.66666667%}.pt-cv-wrapper .col-sm-pull-10{right:83.33333333%}.pt-cv-wrapper .col-sm-pull-9{right:75%}.pt-cv-wrapper .col-sm-pull-8{right:66.66666667%}.pt-cv-wrapper .col-sm-pull-7{right:58.33333333%}.pt-cv-wrapper .col-sm-pull-6{right:50%}.pt-cv-wrapper .col-sm-pull-5{right:41.66666667%}.pt-cv-wrapper .col-sm-pull-4{right:33.33333333%}.pt-cv-wrapper .col-sm-pull-3{right:25%}.pt-cv-wrapper .col-sm-pull-2{right:16.66666667%}.pt-cv-wrapper .col-sm-pull-1{right:8.33333333%}.pt-cv-wrapper .col-sm-pull-0{right:auto}.pt-cv-wrapper .col-sm-push-12{left:100%}.pt-cv-wrapper .col-sm-push-11{left:91.66666667%}.pt-cv-wrapper .col-sm-push-10{left:83.33333333%}.pt-cv-wrapper .col-sm-push-9{left:75%}.pt-cv-wrapper .col-sm-push-8{left:66.66666667%}.pt-cv-wrapper .col-sm-push-7{left:58.33333333%}.pt-cv-wrapper .col-sm-push-6{left:50%}.pt-cv-wrapper .col-sm-push-5{left:41.66666667%}.pt-cv-wrapper .col-sm-push-4{left:33.33333333%}.pt-cv-wrapper .col-sm-push-3{left:25%}.pt-cv-wrapper .col-sm-push-2{left:16.66666667%}.pt-cv-wrapper .col-sm-push-1{left:8.33333333%}.pt-cv-wrapper .col-sm-push-0{left:auto}.pt-cv-wrapper .col-sm-offset-12{margin-left:100%}.pt-cv-wrapper .col-sm-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-sm-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-sm-offset-9{margin-left:75%}.pt-cv-wrapper .col-sm-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-sm-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-sm-offset-6{margin-left:50%}.pt-cv-wrapper .col-sm-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-sm-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-sm-offset-3{margin-left:25%}.pt-cv-wrapper .col-sm-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-sm-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-sm-offset-0{margin-left:0}}@media(min-width:992px){.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-md-12,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-md-9{float:left}.pt-cv-wrapper .col-md-12{width:100%}.pt-cv-wrapper .col-md-11{width:91.66666667%}.pt-cv-wrapper .col-md-10{width:83.33333333%}.pt-cv-wrapper .col-md-9{width:75%}.pt-cv-wrapper .col-md-8{width:66.66666667%}.pt-cv-wrapper .col-md-7{width:58.33333333%}.pt-cv-wrapper .col-md-6{width:50%}.pt-cv-wrapper .col-md-5{width:41.66666667%}.pt-cv-wrapper .col-md-4{width:33.33333333%}.pt-cv-wrapper .col-md-3{width:25%}.pt-cv-wrapper .col-md-2{width:16.66666667%}.pt-cv-wrapper .col-md-1{width:8.33333333%}.pt-cv-wrapper .col-md-pull-12{right:100%}.pt-cv-wrapper .col-md-pull-11{right:91.66666667%}.pt-cv-wrapper .col-md-pull-10{right:83.33333333%}.pt-cv-wrapper .col-md-pull-9{right:75%}.pt-cv-wrapper .col-md-pull-8{right:66.66666667%}.pt-cv-wrapper .col-md-pull-7{right:58.33333333%}.pt-cv-wrapper .col-md-pull-6{right:50%}.pt-cv-wrapper .col-md-pull-5{right:41.66666667%}.pt-cv-wrapper .col-md-pull-4{right:33.33333333%}.pt-cv-wrapper .col-md-pull-3{right:25%}.pt-cv-wrapper .col-md-pull-2{right:16.66666667%}.pt-cv-wrapper .col-md-pull-1{right:8.33333333%}.pt-cv-wrapper .col-md-pull-0{right:auto}.pt-cv-wrapper .col-md-push-12{left:100%}.pt-cv-wrapper .col-md-push-11{left:91.66666667%}.pt-cv-wrapper .col-md-push-10{left:83.33333333%}.pt-cv-wrapper .col-md-push-9{left:75%}.pt-cv-wrapper .col-md-push-8{left:66.66666667%}.pt-cv-wrapper .col-md-push-7{left:58.33333333%}.pt-cv-wrapper .col-md-push-6{left:50%}.pt-cv-wrapper .col-md-push-5{left:41.66666667%}.pt-cv-wrapper .col-md-push-4{left:33.33333333%}.pt-cv-wrapper .col-md-push-3{left:25%}.pt-cv-wrapper .col-md-push-2{left:16.66666667%}.pt-cv-wrapper .col-md-push-1{left:8.33333333%}.pt-cv-wrapper .col-md-push-0{left:auto}.pt-cv-wrapper .col-md-offset-12{margin-left:100%}.pt-cv-wrapper .col-md-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-md-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-md-offset-9{margin-left:75%}.pt-cv-wrapper .col-md-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-md-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-md-offset-6{margin-left:50%}.pt-cv-wrapper .col-md-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-md-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-md-offset-3{margin-left:25%}.pt-cv-wrapper .col-md-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-md-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-md-offset-0{margin-left:0}}@media(min-width:1200px){.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-lg-12,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-lg-9{float:left}.pt-cv-wrapper .col-lg-12{width:100%}.pt-cv-wrapper .col-lg-11{width:91.66666667%}.pt-cv-wrapper .col-lg-10{width:83.33333333%}.pt-cv-wrapper .col-lg-9{width:75%}.pt-cv-wrapper .col-lg-8{width:66.66666667%}.pt-cv-wrapper .col-lg-7{width:58.33333333%}.pt-cv-wrapper .col-lg-6{width:50%}.pt-cv-wrapper .col-lg-5{width:41.66666667%}.pt-cv-wrapper .col-lg-4{width:33.33333333%}.pt-cv-wrapper .col-lg-3{width:25%}.pt-cv-wrapper .col-lg-2{width:16.66666667%}.pt-cv-wrapper .col-lg-1{width:8.33333333%}.pt-cv-wrapper .col-lg-pull-12{right:100%}.pt-cv-wrapper .col-lg-pull-11{right:91.66666667%}.pt-cv-wrapper .col-lg-pull-10{right:83.33333333%}.pt-cv-wrapper .col-lg-pull-9{right:75%}.pt-cv-wrapper .col-lg-pull-8{right:66.66666667%}.pt-cv-wrapper .col-lg-pull-7{right:58.33333333%}.pt-cv-wrapper .col-lg-pull-6{right:50%}.pt-cv-wrapper .col-lg-pull-5{right:41.66666667%}.pt-cv-wrapper .col-lg-pull-4{right:33.33333333%}.pt-cv-wrapper .col-lg-pull-3{right:25%}.pt-cv-wrapper .col-lg-pull-2{right:16.66666667%}.pt-cv-wrapper .col-lg-pull-1{right:8.33333333%}.pt-cv-wrapper .col-lg-pull-0{right:auto}.pt-cv-wrapper .col-lg-push-12{left:100%}.pt-cv-wrapper .col-lg-push-11{left:91.66666667%}.pt-cv-wrapper .col-lg-push-10{left:83.33333333%}.pt-cv-wrapper .col-lg-push-9{left:75%}.pt-cv-wrapper .col-lg-push-8{left:66.66666667%}.pt-cv-wrapper .col-lg-push-7{left:58.33333333%}.pt-cv-wrapper .col-lg-push-6{left:50%}.pt-cv-wrapper .col-lg-push-5{left:41.66666667%}.pt-cv-wrapper .col-lg-push-4{left:33.33333333%}.pt-cv-wrapper .col-lg-push-3{left:25%}.pt-cv-wrapper .col-lg-push-2{left:16.66666667%}.pt-cv-wrapper .col-lg-push-1{left:8.33333333%}.pt-cv-wrapper .col-lg-push-0{left:auto}.pt-cv-wrapper .col-lg-offset-12{margin-left:100%}.pt-cv-wrapper .col-lg-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-lg-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-lg-offset-9{margin-left:75%}.pt-cv-wrapper .col-lg-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-lg-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-lg-offset-6{margin-left:50%}.pt-cv-wrapper .col-lg-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-lg-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-lg-offset-3{margin-left:25%}.pt-cv-wrapper .col-lg-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-lg-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-lg-offset-0{margin-left:0}}.pt-cv-wrapper .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pt-cv-wrapper .btn.active.focus,.pt-cv-wrapper .btn.active:focus,.pt-cv-wrapper .btn.focus,.pt-cv-wrapper .btn:active.focus,.pt-cv-wrapper .btn:active:focus,.pt-cv-wrapper .btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.pt-cv-wrapper .btn.focus,.pt-cv-wrapper .btn:focus,.pt-cv-wrapper .btn:hover{color:#333;text-decoration:none}.pt-cv-wrapper .btn.active,.pt-cv-wrapper .btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.pt-cv-wrapper .btn.disabled,.pt-cv-wrapper .btn[disabled],.pt-cv-wrapper fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.pt-cv-wrapper a.btn.disabled,.pt-cv-wrapper fieldset[disabled] a.btn{pointer-events:none}.pt-cv-wrapper .btn-default{color:#333;background-color:#fff;border-color:#ccc}.pt-cv-wrapper .btn-default.focus,.pt-cv-wrapper .btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .btn-default:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.pt-cv-wrapper .btn-default.active.focus,.pt-cv-wrapper .btn-default.active:focus,.pt-cv-wrapper .btn-default.active:hover,.pt-cv-wrapper .btn-default:active.focus,.pt-cv-wrapper .btn-default:active:focus,.pt-cv-wrapper .btn-default:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-default.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{background-image:none}.pt-cv-wrapper .btn-default.disabled,.pt-cv-wrapper .btn-default.disabled.active,.pt-cv-wrapper .btn-default.disabled.focus,.pt-cv-wrapper .btn-default.disabled:active,.pt-cv-wrapper .btn-default.disabled:focus,.pt-cv-wrapper .btn-default.disabled:hover,.pt-cv-wrapper .btn-default[disabled],.pt-cv-wrapper .btn-default[disabled].active,.pt-cv-wrapper .btn-default[disabled].focus,.pt-cv-wrapper .btn-default[disabled]:active,.pt-cv-wrapper .btn-default[disabled]:focus,.pt-cv-wrapper .btn-default[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-default,.pt-cv-wrapper fieldset[disabled] .btn-default.active,.pt-cv-wrapper fieldset[disabled] .btn-default.focus,.pt-cv-wrapper fieldset[disabled] .btn-default:active,.pt-cv-wrapper fieldset[disabled] .btn-default:focus,.pt-cv-wrapper fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.pt-cv-wrapper .btn-default .badge{color:#fff;background-color:#333}.pt-cv-wrapper .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.pt-cv-wrapper .btn-primary.focus,.pt-cv-wrapper .btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .btn-primary:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.pt-cv-wrapper .btn-primary.active.focus,.pt-cv-wrapper .btn-primary.active:focus,.pt-cv-wrapper .btn-primary.active:hover,.pt-cv-wrapper .btn-primary:active.focus,.pt-cv-wrapper .btn-primary:active:focus,.pt-cv-wrapper .btn-primary:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{background-image:none}.pt-cv-wrapper .btn-primary.disabled,.pt-cv-wrapper .btn-primary.disabled.active,.pt-cv-wrapper .btn-primary.disabled.focus,.pt-cv-wrapper .btn-primary.disabled:active,.pt-cv-wrapper .btn-primary.disabled:focus,.pt-cv-wrapper .btn-primary.disabled:hover,.pt-cv-wrapper .btn-primary[disabled],.pt-cv-wrapper .btn-primary[disabled].active,.pt-cv-wrapper .btn-primary[disabled].focus,.pt-cv-wrapper .btn-primary[disabled]:active,.pt-cv-wrapper .btn-primary[disabled]:focus,.pt-cv-wrapper .btn-primary[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-primary,.pt-cv-wrapper fieldset[disabled] .btn-primary.active,.pt-cv-wrapper fieldset[disabled] .btn-primary.focus,.pt-cv-wrapper fieldset[disabled] .btn-primary:active,.pt-cv-wrapper fieldset[disabled] .btn-primary:focus,.pt-cv-wrapper fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.pt-cv-wrapper .btn-primary .badge{color:#337ab7;background-color:#fff}.pt-cv-wrapper .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.pt-cv-wrapper .btn-success.focus,.pt-cv-wrapper .btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .btn-success:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.pt-cv-wrapper .btn-success.active.focus,.pt-cv-wrapper .btn-success.active:focus,.pt-cv-wrapper .btn-success.active:hover,.pt-cv-wrapper .btn-success:active.focus,.pt-cv-wrapper .btn-success:active:focus,.pt-cv-wrapper .btn-success:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-success.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{background-image:none}.pt-cv-wrapper .btn-success.disabled,.pt-cv-wrapper .btn-success.disabled.active,.pt-cv-wrapper .btn-success.disabled.focus,.pt-cv-wrapper .btn-success.disabled:active,.pt-cv-wrapper .btn-success.disabled:focus,.pt-cv-wrapper .btn-success.disabled:hover,.pt-cv-wrapper .btn-success[disabled],.pt-cv-wrapper .btn-success[disabled].active,.pt-cv-wrapper .btn-success[disabled].focus,.pt-cv-wrapper .btn-success[disabled]:active,.pt-cv-wrapper .btn-success[disabled]:focus,.pt-cv-wrapper .btn-success[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-success,.pt-cv-wrapper fieldset[disabled] .btn-success.active,.pt-cv-wrapper fieldset[disabled] .btn-success.focus,.pt-cv-wrapper fieldset[disabled] .btn-success:active,.pt-cv-wrapper fieldset[disabled] .btn-success:focus,.pt-cv-wrapper fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.pt-cv-wrapper .btn-success .badge{color:#5cb85c;background-color:#fff}.pt-cv-wrapper .btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.pt-cv-wrapper .btn-info.focus,.pt-cv-wrapper .btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .btn-info:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.pt-cv-wrapper .btn-info.active.focus,.pt-cv-wrapper .btn-info.active:focus,.pt-cv-wrapper .btn-info.active:hover,.pt-cv-wrapper .btn-info:active.focus,.pt-cv-wrapper .btn-info:active:focus,.pt-cv-wrapper .btn-info:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-info.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{background-image:none}.pt-cv-wrapper .btn-info.disabled,.pt-cv-wrapper .btn-info.disabled.active,.pt-cv-wrapper .btn-info.disabled.focus,.pt-cv-wrapper .btn-info.disabled:active,.pt-cv-wrapper .btn-info.disabled:focus,.pt-cv-wrapper .btn-info.disabled:hover,.pt-cv-wrapper .btn-info[disabled],.pt-cv-wrapper .btn-info[disabled].active,.pt-cv-wrapper .btn-info[disabled].focus,.pt-cv-wrapper .btn-info[disabled]:active,.pt-cv-wrapper .btn-info[disabled]:focus,.pt-cv-wrapper .btn-info[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-info,.pt-cv-wrapper fieldset[disabled] .btn-info.active,.pt-cv-wrapper fieldset[disabled] .btn-info.focus,.pt-cv-wrapper fieldset[disabled] .btn-info:active,.pt-cv-wrapper fieldset[disabled] .btn-info:focus,.pt-cv-wrapper fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.pt-cv-wrapper .btn-info .badge{color:#5bc0de;background-color:#fff}.pt-cv-wrapper .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.pt-cv-wrapper .btn-warning.focus,.pt-cv-wrapper .btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .btn-warning:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.pt-cv-wrapper .btn-warning.active.focus,.pt-cv-wrapper .btn-warning.active:focus,.pt-cv-wrapper .btn-warning.active:hover,.pt-cv-wrapper .btn-warning:active.focus,.pt-cv-wrapper .btn-warning:active:focus,.pt-cv-wrapper .btn-warning:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{background-image:none}.pt-cv-wrapper .btn-warning.disabled,.pt-cv-wrapper .btn-warning.disabled.active,.pt-cv-wrapper .btn-warning.disabled.focus,.pt-cv-wrapper .btn-warning.disabled:active,.pt-cv-wrapper .btn-warning.disabled:focus,.pt-cv-wrapper .btn-warning.disabled:hover,.pt-cv-wrapper .btn-warning[disabled],.pt-cv-wrapper .btn-warning[disabled].active,.pt-cv-wrapper .btn-warning[disabled].focus,.pt-cv-wrapper .btn-warning[disabled]:active,.pt-cv-wrapper .btn-warning[disabled]:focus,.pt-cv-wrapper .btn-warning[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-warning,.pt-cv-wrapper fieldset[disabled] .btn-warning.active,.pt-cv-wrapper fieldset[disabled] .btn-warning.focus,.pt-cv-wrapper fieldset[disabled] .btn-warning:active,.pt-cv-wrapper fieldset[disabled] .btn-warning:focus,.pt-cv-wrapper fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.pt-cv-wrapper .btn-warning .badge{color:#f0ad4e;background-color:#fff}.pt-cv-wrapper .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.pt-cv-wrapper .btn-danger.focus,.pt-cv-wrapper .btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .btn-danger:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.pt-cv-wrapper .btn-danger.active.focus,.pt-cv-wrapper .btn-danger.active:focus,.pt-cv-wrapper .btn-danger.active:hover,.pt-cv-wrapper .btn-danger:active.focus,.pt-cv-wrapper .btn-danger:active:focus,.pt-cv-wrapper .btn-danger:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{background-image:none}.pt-cv-wrapper .btn-danger.disabled,.pt-cv-wrapper .btn-danger.disabled.active,.pt-cv-wrapper .btn-danger.disabled.focus,.pt-cv-wrapper .btn-danger.disabled:active,.pt-cv-wrapper .btn-danger.disabled:focus,.pt-cv-wrapper .btn-danger.disabled:hover,.pt-cv-wrapper .btn-danger[disabled],.pt-cv-wrapper .btn-danger[disabled].active,.pt-cv-wrapper .btn-danger[disabled].focus,.pt-cv-wrapper .btn-danger[disabled]:active,.pt-cv-wrapper .btn-danger[disabled]:focus,.pt-cv-wrapper .btn-danger[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-danger,.pt-cv-wrapper fieldset[disabled] .btn-danger.active,.pt-cv-wrapper fieldset[disabled] .btn-danger.focus,.pt-cv-wrapper fieldset[disabled] .btn-danger:active,.pt-cv-wrapper fieldset[disabled] .btn-danger:focus,.pt-cv-wrapper fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.pt-cv-wrapper .btn-danger .badge{color:#d9534f;background-color:#fff}.pt-cv-wrapper .btn-link{color:#337ab7;font-weight:400;border-radius:0}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link.active,.pt-cv-wrapper .btn-link:active,.pt-cv-wrapper .btn-link[disabled],.pt-cv-wrapper fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link:active,.pt-cv-wrapper .btn-link:focus,.pt-cv-wrapper .btn-link:hover{border-color:transparent}.pt-cv-wrapper .btn-link:focus,.pt-cv-wrapper .btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.pt-cv-wrapper .btn-link[disabled]:focus,.pt-cv-wrapper .btn-link[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-link:focus,.pt-cv-wrapper fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.pt-cv-wrapper .btn-group-lg>.btn,.pt-cv-wrapper .btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.pt-cv-wrapper .btn-group-sm>.btn,.pt-cv-wrapper .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.pt-cv-wrapper .btn-group-xs>.btn,.pt-cv-wrapper .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.pt-cv-wrapper .btn-block{display:block;width:100%}.pt-cv-wrapper .btn-block+.btn-block{margin-top:5px}.pt-cv-wrapper input[type=button].btn-block,.pt-cv-wrapper input[type=reset].btn-block,.pt-cv-wrapper input[type=submit].btn-block{width:100%}.pt-cv-wrapper .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.pt-cv-wrapper .fade.in{opacity:1}.pt-cv-wrapper .collapse{display:none}.pt-cv-wrapper .collapse.in{display:block}.pt-cv-wrapper tr.collapse.in{display:table-row}.pt-cv-wrapper tbody.collapse.in{display:table-row-group}.pt-cv-wrapper .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.pt-cv-wrapper .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.pt-cv-wrapper .dropdown,.pt-cv-wrapper .dropup{position:relative}.pt-cv-wrapper .dropdown-toggle:focus{outline:0}.pt-cv-wrapper .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);-webkit-background-clip:padding-box;background-clip:padding-box}.pt-cv-wrapper .dropdown-menu.pull-right{right:0;left:auto}.pt-cv-wrapper .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pt-cv-wrapper .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.pt-cv-wrapper .dropdown-menu>li>a:focus,.pt-cv-wrapper .dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.pt-cv-wrapper .dropdown-menu>.active>a,.pt-cv-wrapper .dropdown-menu>.active>a:focus,.pt-cv-wrapper .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.pt-cv-wrapper .dropdown-menu>.disabled>a,.pt-cv-wrapper .dropdown-menu>.disabled>a:focus,.pt-cv-wrapper .dropdown-menu>.disabled>a:hover{color:#777}.pt-cv-wrapper .dropdown-menu>.disabled>a:focus,.pt-cv-wrapper .dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.pt-cv-wrapper .open>.dropdown-menu{display:block}.pt-cv-wrapper .open>a{outline:0}.pt-cv-wrapper .dropdown-menu-right{left:auto;right:0}.pt-cv-wrapper .dropdown-menu-left{left:0;right:auto}.pt-cv-wrapper .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.pt-cv-wrapper .dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pt-cv-wrapper .pull-right>.dropdown-menu{right:0;left:auto}.pt-cv-wrapper .dropup .caret,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;content:""}.pt-cv-wrapper .dropup .dropdown-menu,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media(min-width:768px){.pt-cv-wrapper .navbar-right .dropdown-menu{left:auto;right:0}.pt-cv-wrapper .navbar-right .dropdown-menu-left{left:0;right:auto}}.pt-cv-wrapper .btn-group,.pt-cv-wrapper .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.pt-cv-wrapper .btn-group-vertical>.btn,.pt-cv-wrapper .btn-group>.btn{position:relative;float:left}.pt-cv-wrapper .btn-group-vertical>.btn.active,.pt-cv-wrapper .btn-group-vertical>.btn:active,.pt-cv-wrapper .btn-group-vertical>.btn:focus,.pt-cv-wrapper .btn-group-vertical>.btn:hover,.pt-cv-wrapper .btn-group>.btn.active,.pt-cv-wrapper .btn-group>.btn:active,.pt-cv-wrapper .btn-group>.btn:focus,.pt-cv-wrapper .btn-group>.btn:hover{z-index:2}.pt-cv-wrapper .btn-group .btn+.btn,.pt-cv-wrapper .btn-group .btn+.btn-group,.pt-cv-wrapper .btn-group .btn-group+.btn,.pt-cv-wrapper .btn-group .btn-group+.btn-group{margin-left:-1px}.pt-cv-wrapper .btn-toolbar{margin-left:-5px}.pt-cv-wrapper .btn-toolbar .btn,.pt-cv-wrapper .btn-toolbar .btn-group,.pt-cv-wrapper .btn-toolbar .input-group{float:left}.pt-cv-wrapper .btn-toolbar>.btn,.pt-cv-wrapper .btn-toolbar>.btn-group,.pt-cv-wrapper .btn-toolbar>.input-group{margin-left:5px}.pt-cv-wrapper .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.pt-cv-wrapper .btn-group>.btn:first-child{margin-left:0}.pt-cv-wrapper .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.pt-cv-wrapper .btn-group>.btn:last-child:not(:first-child),.pt-cv-wrapper .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group>.btn-group{float:left}.pt-cv-wrapper .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.pt-cv-wrapper .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group .dropdown-toggle:active,.pt-cv-wrapper .btn-group.open .dropdown-toggle{outline:0}.pt-cv-wrapper .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.pt-cv-wrapper .btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.pt-cv-wrapper .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.pt-cv-wrapper .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.pt-cv-wrapper .btn .caret{margin-left:0}.pt-cv-wrapper .btn-lg .caret{border-width:5px 5px 0}.pt-cv-wrapper .dropup .btn-lg .caret{border-width:0 5px 5px}.pt-cv-wrapper .btn-group-vertical>.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{float:none}.pt-cv-wrapper .btn-group-vertical>.btn+.btn,.pt-cv-wrapper .btn-group-vertical>.btn+.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.pt-cv-wrapper .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.pt-cv-wrapper .btn-group-justified>.btn,.pt-cv-wrapper .btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.pt-cv-wrapper .btn-group-justified>.btn-group .btn{width:100%}.pt-cv-wrapper .btn-group-justified>.btn-group .dropdown-menu{left:auto}.pt-cv-wrapper [data-toggle=buttons]>.btn input[type=checkbox],.pt-cv-wrapper [data-toggle=buttons]>.btn input[type=radio],.pt-cv-wrapper [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],.pt-cv-wrapper [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.pt-cv-wrapper .nav{margin-bottom:0;padding-left:0;list-style:none}.pt-cv-wrapper .nav>li{position:relative;display:block}.pt-cv-wrapper .nav>li>a{position:relative;display:block;padding:10px 15px}.pt-cv-wrapper .nav>li>a:focus,.pt-cv-wrapper .nav>li>a:hover{text-decoration:none;background-color:#eee}.pt-cv-wrapper .nav>li.disabled>a{color:#777}.pt-cv-wrapper .nav>li.disabled>a:focus,.pt-cv-wrapper .nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.pt-cv-wrapper .nav .open>a,.pt-cv-wrapper .nav .open>a:focus,.pt-cv-wrapper .nav .open>a:hover{background-color:#eee;border-color:#337ab7}.pt-cv-wrapper .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pt-cv-wrapper .nav>li>a>img{max-width:none}.pt-cv-wrapper .nav-tabs{border-bottom:1px solid #ddd}.pt-cv-wrapper .nav-tabs>li{float:left;margin-bottom:-1px}.pt-cv-wrapper .nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.pt-cv-wrapper .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.pt-cv-wrapper .nav-tabs>li.active>a,.pt-cv-wrapper .nav-tabs>li.active>a:focus,.pt-cv-wrapper .nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.pt-cv-wrapper .nav-tabs.nav-justified{width:100%;border-bottom:0}.pt-cv-wrapper .nav-tabs.nav-justified>li{float:none}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.pt-cv-wrapper .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li{display:table-cell;width:1%}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-bottom:0}}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.pt-cv-wrapper .nav-pills>li{float:left}.pt-cv-wrapper .nav-pills>li>a{border-radius:4px}.pt-cv-wrapper .nav-pills>li+li{margin-left:2px}.pt-cv-wrapper .nav-pills>li.active>a,.pt-cv-wrapper .nav-pills>li.active>a:focus,.pt-cv-wrapper .nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.pt-cv-wrapper .nav-stacked>li{float:none}.pt-cv-wrapper .nav-stacked>li+li{margin-top:2px;margin-left:0}.pt-cv-wrapper .nav-justified{width:100%}.pt-cv-wrapper .nav-justified>li{float:none}.pt-cv-wrapper .nav-justified>li>a{text-align:center;margin-bottom:5px}.pt-cv-wrapper .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.pt-cv-wrapper .nav-justified>li{display:table-cell;width:1%}.pt-cv-wrapper .nav-justified>li>a{margin-bottom:0}}.pt-cv-wrapper .nav-tabs-justified{border-bottom:0}.pt-cv-wrapper .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media(min-width:768px){.pt-cv-wrapper .nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.pt-cv-wrapper .tab-content>.tab-pane{display:none}.pt-cv-wrapper .tab-content>.active{display:block}.pt-cv-wrapper .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.pt-cv-wrapper .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pt-cv-wrapper .pagination>li{display:inline}.pt-cv-wrapper .pagination>li>a,.pt-cv-wrapper .pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pt-cv-wrapper .pagination>li:first-child>a,.pt-cv-wrapper .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pt-cv-wrapper .pagination>li:last-child>a,.pt-cv-wrapper .pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pt-cv-wrapper .pagination>li>a:focus,.pt-cv-wrapper .pagination>li>a:hover,.pt-cv-wrapper .pagination>li>span:focus,.pt-cv-wrapper .pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pt-cv-wrapper .pagination>.active>a,.pt-cv-wrapper .pagination>.active>a:focus,.pt-cv-wrapper .pagination>.active>a:hover,.pt-cv-wrapper .pagination>.active>span,.pt-cv-wrapper .pagination>.active>span:focus,.pt-cv-wrapper .pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pt-cv-wrapper .pagination>.disabled>a,.pt-cv-wrapper .pagination>.disabled>a:focus,.pt-cv-wrapper .pagination>.disabled>a:hover,.pt-cv-wrapper .pagination>.disabled>span,.pt-cv-wrapper .pagination>.disabled>span:focus,.pt-cv-wrapper .pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pt-cv-wrapper .pagination-lg>li>a,.pt-cv-wrapper .pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pt-cv-wrapper .pagination-lg>li:first-child>a,.pt-cv-wrapper .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pt-cv-wrapper .pagination-lg>li:last-child>a,.pt-cv-wrapper .pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pt-cv-wrapper .pagination-sm>li>a,.pt-cv-wrapper .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pt-cv-wrapper .pagination-sm>li:first-child>a,.pt-cv-wrapper .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pt-cv-wrapper .pagination-sm>li:last-child>a,.pt-cv-wrapper .pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pt-cv-wrapper .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.pt-cv-wrapper .thumbnail a>img,.pt-cv-wrapper .thumbnail>img{margin-left:auto;margin-right:auto}.pt-cv-wrapper a.thumbnail.active,.pt-cv-wrapper a.thumbnail:focus,.pt-cv-wrapper a.thumbnail:hover{border-color:#337ab7}.pt-cv-wrapper .thumbnail .caption{padding:9px;color:#333}.pt-cv-wrapper .pt-cv-carousel{position:relative}.pt-cv-wrapper .carousel-inner{position:relative;overflow:hidden;width:100%}.pt-cv-wrapper .carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.pt-cv-wrapper .carousel-inner>.item>a>img,.pt-cv-wrapper .carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.pt-cv-wrapper .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.pt-cv-wrapper .carousel-inner>.item.active.right,.pt-cv-wrapper .carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.pt-cv-wrapper .carousel-inner>.item.active.left,.pt-cv-wrapper .carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.pt-cv-wrapper .carousel-inner>.item.active,.pt-cv-wrapper .carousel-inner>.item.next.left,.pt-cv-wrapper .carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.pt-cv-wrapper .carousel-inner>.active,.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{display:block}.pt-cv-wrapper .carousel-inner>.active{left:0}.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{position:absolute;top:0;width:100%}.pt-cv-wrapper .carousel-inner>.next{left:100%}.pt-cv-wrapper .carousel-inner>.prev{left:-100%}.pt-cv-wrapper .carousel-inner>.next.left,.pt-cv-wrapper .carousel-inner>.prev.right{left:0}.pt-cv-wrapper .carousel-inner>.active.left{left:-100%}.pt-cv-wrapper .carousel-inner>.active.right{left:100%}.pt-cv-wrapper .carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.pt-cv-wrapper .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.pt-cv-wrapper .carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.pt-cv-wrapper .carousel-control:focus,.pt-cv-wrapper .carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .icon-prev{left:50%;margin-left:-10px}.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next{right:50%;margin-right:-10px}.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.pt-cv-wrapper .carousel-control .icon-prev:before{content:'\2039'}.pt-cv-wrapper .carousel-control .icon-next:before{content:'\203a'}.pt-cv-wrapper .pt-cv-carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.pt-cv-wrapper .pt-cv-carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:transparent}.pt-cv-wrapper .pt-cv-carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.pt-cv-wrapper .pt-cv-carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.pt-cv-wrapper .pt-cv-carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .icon-prev{margin-left:-15px}.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next{margin-right:-15px}.pt-cv-wrapper .pt-cv-carousel-caption{left:20%;right:20%;padding-bottom:30px}.pt-cv-wrapper .pt-cv-carousel-indicators{bottom:20px}}.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .btn-group-vertical>.btn-group:before,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .btn-toolbar:before,.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .clearfix:before,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .container-fluid:before,.pt-cv-wrapper .container:after,.pt-cv-wrapper .container:before,.pt-cv-wrapper .nav:after,.pt-cv-wrapper .nav:before,.pt-cv-wrapper .row:after,.pt-cv-wrapper .row:before{content:" ";display:table}.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .container:after,.pt-cv-wrapper .nav:after,.pt-cv-wrapper .row:after{clear:both}.pt-cv-wrapper .center-block{display:block;margin-left:auto;margin-right:auto}.pt-cv-wrapper .pull-right{float:right!important}.pt-cv-wrapper .pull-left{float:left!important}.pt-cv-wrapper .hide{display:none!important}.pt-cv-wrapper .show{display:block!important}.pt-cv-wrapper .invisible{visibility:hidden}.pt-cv-wrapper .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.pt-cv-wrapper .hidden{display:none!important}.pt-cv-wrapper .affix{position:fixed}.pt-cv-wrapper .text-left{text-align:left}.pt-cv-wrapper .text-right{text-align:right}.pt-cv-wrapper .text-center{text-align:center}.pt-cv-wrapper .text-justify{text-align:justify}.pt-cv-wrapper .text-nowrap{white-space:nowrap}.pt-cv-wrapper .text-lowercase{text-transform:lowercase}.pt-cv-wrapper .text-uppercase{text-transform:uppercase}.pt-cv-wrapper .text-capitalize{text-transform:capitalize}.pt-cv-wrapper .text-muted{color:#777}.pt-cv-wrapper .text-primary{color:#428bca}.pt-cv-wrapper .h1,.pt-cv-wrapper .h2,.pt-cv-wrapper .h3,.pt-cv-wrapper .h4,.pt-cv-wrapper .h5,.pt-cv-wrapper .h6,.pt-cv-wrapper h1,.pt-cv-wrapper h2,.pt-cv-wrapper h3,.pt-cv-wrapper h4,.pt-cv-wrapper h5,.pt-cv-wrapper h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.pt-cv-view *,.pt-cv-view :after,.pt-cv-view :before{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.pt-cv-view{position:relative;clear:both}.pt-cv-view:after{clear:both;content:'';display:block}.pt-cv-page{position:relative}.pt-cv-gls-group{clear:left}.pt-cv-view strong,.pt-cv-view strong *{font-weight:600!important}.pt-cv-colsys{margin-left:-15px;margin-right:-15px}@media (min-width:992px){.pt-cv-colsys [data-cvc="11"] .col-md-1:nth-child(11n+1),.pt-cv-colsys [data-cvc="12"] .col-md-1:nth-child(12n+1),.pt-cv-colsys [data-cvc="2"] .col-md-6:nth-child(2n+1),.pt-cv-colsys [data-cvc="3"] .col-md-4:nth-child(3n+1),.pt-cv-colsys [data-cvc="4"] .col-md-3:nth-child(4n+1),.pt-cv-colsys [data-cvc="5"] .col-md-2:nth-child(5n+1),.pt-cv-colsys [data-cvc="6"] .col-md-2:nth-child(6n+1),.pt-cv-colsys [data-cvc="7"] .col-md-1:nth-child(7n+1),.pt-cv-colsys [data-cvc="8"] .col-md-1:nth-child(8n+1),.pt-cv-colsys [data-cvc="9"] .col-md-1:nth-child(9n+1),.pt-cv-colsys [data-cvc="10"] .col-md-1:nth-child(10n+1){clear:left!important}}@media (min-width:768px) and (max-width:991px){.pt-cv-colsys .col-sm-2:nth-child(5n+1),.pt-cv-colsys .col-sm-2:nth-child(6n+1),.pt-cv-colsys .col-sm-3:nth-child(4n+1),.pt-cv-colsys .col-sm-4:nth-child(3n+1),.pt-cv-colsys .col-sm-6:nth-child(2n+1){clear:left!important}}@media (max-width:767px){.pt-cv-colsys .col-xs-2:nth-child(5n+1),.pt-cv-colsys .col-xs-2:nth-child(6n+1),.pt-cv-colsys .col-xs-3:nth-child(4n+1),.pt-cv-colsys .col-xs-4:nth-child(3n+1),.pt-cv-colsys .col-xs-6:nth-child(2n+1){clear:left!important}}@media (min-width:992px){.pt-cv-colsys [data-cvc="5"] .pt-cv-content-item{width:20%}.pt-cv-colsys [data-cvc="7"] .pt-cv-content-item{width:14.28571428%}.pt-cv-colsys [data-cvc="8"] .pt-cv-content-item{width:12.5%}.pt-cv-colsys [data-cvc="9"] .pt-cv-content-item{width:11.11111111%}.pt-cv-colsys [data-cvc="10"] .pt-cv-content-item{width:10%}.pt-cv-colsys [data-cvc="11"] .pt-cv-content-item{width:9.09090909%}}.pt-cv-colsys .pt-cv-content-item{flex:none;max-width:initial}.pt-cv-view a,.pt-cv-wrapper .btn{text-decoration:none!important;outline:0!important;font-style:normal}.pt-cv-view a{pointer-events:auto}.pt-cv-readmore{color:#fff;margin:10px 0;max-width:100%}.pt-cv-content-item{padding-bottom:15px;position:relative;overflow:hidden}.pt-cv-ifield>*,.pt-cv-view .pt-cv-content-item>*{margin-bottom:10px}.pt-cv-collapsible .pt-cv-content-item>*{margin-bottom:0!important}.pt-cv-title{margin-top:0!important}h4.pt-cv-title{font-size:18px}.pt-cv-view .pt-cv-title{margin-bottom:10px}.pt-cv-title a{font-weight:600}.pt-cv-thumbnail{height:auto;max-width:100%!important;margin-top:0!important;margin-bottom:10px!important;min-width:inherit!important}.pt-cv-thumbnail.pull-left{margin-right:15px!important}.pt-cv-thumbnail.pull-right{margin-left:15px}.pt-cv-no-image{min-width:80px;min-height:80px}.pt-cv-content,.pt-cv-content *{font-weight:400}.pt-cv-meta-fields{font-size:13px;margin-top:0}.pt-cv-meta-fields a{color:#41b7d8}.pt-cv-pagination-wrapper{margin:20px 0}.pt-cv-view+.pagination{float:left;margin:0 auto!important}.pt-cv-view+.pagination>li{background:0 0!important}.pt-cv-view+.pagination>li>a{cursor:pointer}.pt-cv-spinner{width:15px!important;height:15px!important;margin-top:-25px;display:inline-block;opacity:0;filter:alpha(opacity=0);color:#0470ec;-webkit-transition:opacity .25s,width .25s;-moz-transition:opacity .25s,width .25s;-o-transition:opacity .25s,width .25s;transition:opacity .25s,width .25s}.pt-cv-spinner.active{opacity:1;filter:alpha(opacity=100)}.pt-cv-clear-pagination{margin-bottom:50px}.pt-cv-pagination-wrapper{clear:both;position:relative}.pt-cv-pagination-wrapper .pt-cv-pagination.pagination{-webkit-box-shadow:none!important;box-shadow:none!important;border:0;padding:0;margin:initial;min-height:initial;width:auto;display:inline-block}.pt-cv-pagination li{display:inline!important;background-image:none!important}.pt-cv-pagination li:after,.pt-cv-pagination li:before{content:none!important}.pt-cv-pagination a{cursor:pointer}.pt-cv-pagination li.active a{border-color:rgba(66,139,202,.2)!important}.pt-cv-pagination li a[href="#"]{pointer-events:none}.pt-cv-collapsible .panel{display:block}.pt-cv-collapsible .panel-heading{padding:0}.pt-cv-collapsible .panel-heading a{display:block;padding:10px 15px}.pt-cv-collapsible .panel-body{padding:10px}.pt-cv-view .collapse{display:none;visibility:hidden}.pt-cv-view .collapse.in{display:block;visibility:visible;overflow:auto}.pt-cv-collapsible .panel-heading br{display:none}.pt-cv-scrollable{margin-left:0;margin-right:0}.pt-cv-scrollable .pt-cv-carousel-caption{text-align:left;bottom:15px;padding:10px}.pt-cv-scrollable .pt-cv-carousel-caption *{text-shadow:none}.pt-cv-scrollable .pt-cv-title{padding-bottom:0}.pt-cv-scrollable .pt-cv-carousel-caption{margin-bottom:10px!important}.pt-cv-scrollable .pt-cv-thumbnail{width:100%}.pt-cv-carousel-caption:empty{display:none}.pt-cv-scrollable .pt-cv-carousel .item{height:auto;margin:auto;min-height:0;max-height:none;line-height:normal}.pt-cv-scrollable .pt-cv-cap-w-img{background:rgba(0,0,0,.6);text-shadow:0 1px 1px #000;left:15px;right:15px}.pt-cv-cap-w-img *{color:#fff}.pt-cv-cap-w-img .pt-cv-title a{color:#fff!important}.pt-cv-scrollable .pt-cv-cap-wo-img{position:relative!important;bottom:0!important;left:0;right:0}.pt-cv-cap-wo-img *{color:#000}.pt-cv-cap-wo-img .pt-cv-readmore{color:#fff}.pt-cv-view .carousel-control{background-image:none!important;height:30px;width:40px;bottom:0;top:auto;color:#00A100}.pt-cv-view .pt-cv-carousel-indicators{bottom:0;margin-bottom:4px}.pt-cv-view .pt-cv-carousel-indicators li{background:#cecece;border:1px solid #cecece;margin:0}.pt-cv-view .pt-cv-carousel-indicators li.active{background:#428bca;border:1px solid #428bca}.pt-cv-2-col .pt-cv-title{clear:none!important}@media (min-width:480px){.pt-cv-2-col .pt-cv-colwrap{display:table;word-break:break-word}}@media (max-width:479px){.pt-cv-2-col .pt-cv-colwrap{clear:both}}.pt-cv-view .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.pt-cv-view .panel-default{border-color:#ddd;padding-bottom:0}.pt-cv-view .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.pt-cv-pagination:after,.pt-cv-pagination:before{content:none!important}.pt-cv-wrapper [class*=pt-cv-] a{box-shadow:none}.pt-cv-view p:empty{display:none}.pt-cv-view .pt-cv-ifield{margin-bottom:0!important}@media (max-width:480px){.pt-cv-nolf .pt-cv-2-col .pt-cv-thumbnail{float:none!important;margin:0}}@media print{.pt-cv-view a[href]:after{content:none!important}.pt-cv-view .collapse{display:block!important;height:auto!important;visibility:visible!important}}
|
1 |
+
/*!
|
2 |
+
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
3 |
+
* Copyright 2011-2015 Twitter, Inc.
|
4 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
+
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.pt-cv-wrapper article,.pt-cv-wrapper aside,.pt-cv-wrapper details,.pt-cv-wrapper figcaption,.pt-cv-wrapper footer,.pt-cv-wrapper header,.pt-cv-wrapper hgroup,.pt-cv-wrapper main,.pt-cv-wrapper menu,.pt-cv-wrapper nav,.pt-cv-wrapper section,.pt-cv-wrapper summary{display:block}.pt-cv-wrapper audio,.pt-cv-wrapper canvas,.pt-cv-wrapper progress,.pt-cv-wrapper video{display:inline-block;vertical-align:baseline}.pt-cv-wrapper audio:not([controls]){display:none;height:0}.pt-cv-wrapper [hidden],.pt-cv-wrapper template{display:none}.pt-cv-wrapper a{background-color:transparent}.pt-cv-wrapper a:active,.pt-cv-wrapper a:hover{outline:0}.pt-cv-wrapper abbr[title]{border-bottom:1px dotted}.pt-cv-wrapper b,.pt-cv-wrapper strong{font-weight:700}.pt-cv-wrapper dfn{font-style:italic}.pt-cv-wrapper h1{margin:.67em 0}.pt-cv-wrapper mark{background:#ff0;color:#000}.pt-cv-wrapper small{font-size:80%}.pt-cv-wrapper sub,.pt-cv-wrapper sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.pt-cv-wrapper sup{top:-.5em}.pt-cv-wrapper sub{bottom:-.25em}.pt-cv-wrapper img{border:0}.pt-cv-wrapper svg:not(:root){overflow:hidden}.pt-cv-wrapper hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}.pt-cv-wrapper pre{overflow:auto}.pt-cv-wrapper code,.pt-cv-wrapper kbd,.pt-cv-wrapper pre,.pt-cv-wrapper samp{font-family:monospace,monospace;font-size:1em}.pt-cv-wrapper button,.pt-cv-wrapper input,.pt-cv-wrapper optgroup,.pt-cv-wrapper select,.pt-cv-wrapper textarea{color:inherit;font:inherit;margin:0}.pt-cv-wrapper button{overflow:visible}.pt-cv-wrapper button,.pt-cv-wrapper select{text-transform:none}.pt-cv-wrapper button,.pt-cv-wrapper html input[type=button],.pt-cv-wrapper input[type=reset],.pt-cv-wrapper input[type=submit]{-webkit-appearance:button;cursor:pointer}.pt-cv-wrapper button[disabled],.pt-cv-wrapper html input[disabled]{cursor:default}.pt-cv-wrapper button::-moz-focus-inner,.pt-cv-wrapper input::-moz-focus-inner{border:0;padding:0}.pt-cv-wrapper input{line-height:normal}.pt-cv-wrapper input[type=checkbox],.pt-cv-wrapper input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}.pt-cv-wrapper input[type=number]::-webkit-inner-spin-button,.pt-cv-wrapper input[type=number]::-webkit-outer-spin-button{height:auto}.pt-cv-wrapper input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.pt-cv-wrapper input[type=search]::-webkit-search-cancel-button,.pt-cv-wrapper input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.pt-cv-wrapper fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}.pt-cv-wrapper legend{border:0;padding:0}.pt-cv-wrapper textarea{overflow:auto}.pt-cv-wrapper optgroup{font-weight:700}.pt-cv-wrapper table{border-collapse:collapse;border-spacing:0}.pt-cv-wrapper td,.pt-cv-wrapper th{padding:0}@media print{.pt-cv-wrapper *,.pt-cv-wrapper :after,.pt-cv-wrapper :before{background:0 0!important;color:#000!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}.pt-cv-wrapper a,.pt-cv-wrapper a:visited{text-decoration:underline}.pt-cv-wrapper a[href]:after{content:" (" attr(href) ")"}.pt-cv-wrapper abbr[title]:after{content:" (" attr(title) ")"}.pt-cv-wrapper a[href^="javascript:"]:after,.pt-cv-wrapper a[href^="#"]:after{content:""}.pt-cv-wrapper blockquote,.pt-cv-wrapper pre{border:1px solid #999;page-break-inside:avoid}.pt-cv-wrapper thead{display:table-header-group}.pt-cv-wrapper img,.pt-cv-wrapper tr{page-break-inside:avoid}.pt-cv-wrapper img{max-width:100%!important}.pt-cv-wrapper h2,.pt-cv-wrapper h3,.pt-cv-wrapper p{orphans:3;widows:3}.pt-cv-wrapper h2,.pt-cv-wrapper h3{page-break-after:avoid}.pt-cv-wrapper .navbar{display:none}.pt-cv-wrapper .btn>.caret,.pt-cv-wrapper .dropup>.btn>.caret{border-top-color:#000!important}.pt-cv-wrapper .label{border:1px solid #000}.pt-cv-wrapper .table{border-collapse:collapse!important}.pt-cv-wrapper .table td,.pt-cv-wrapper .table th{background-color:#fff!important}.pt-cv-wrapper .table-bordered td,.pt-cv-wrapper .table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.pt-cv-wrapper .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.pt-cv-wrapper .glyphicon-asterisk:before{content:"\2a"}.pt-cv-wrapper .glyphicon-plus:before{content:"\2b"}.pt-cv-wrapper .glyphicon-eur:before,.pt-cv-wrapper .glyphicon-euro:before{content:"\20ac"}.pt-cv-wrapper .glyphicon-minus:before{content:"\2212"}.pt-cv-wrapper .glyphicon-cloud:before{content:"\2601"}.pt-cv-wrapper .glyphicon-envelope:before{content:"\2709"}.pt-cv-wrapper .glyphicon-pencil:before{content:"\270f"}.pt-cv-wrapper .glyphicon-glass:before{content:"\e001"}.pt-cv-wrapper .glyphicon-music:before{content:"\e002"}.pt-cv-wrapper .glyphicon-search:before{content:"\e003"}.pt-cv-wrapper .glyphicon-heart:before{content:"\e005"}.pt-cv-wrapper .glyphicon-star:before{content:"\e006"}.pt-cv-wrapper .glyphicon-star-empty:before{content:"\e007"}.pt-cv-wrapper .glyphicon-user:before{content:"\e008"}.pt-cv-wrapper .glyphicon-film:before{content:"\e009"}.pt-cv-wrapper .glyphicon-th-large:before{content:"\e010"}.pt-cv-wrapper .glyphicon-th:before{content:"\e011"}.pt-cv-wrapper .glyphicon-th-list:before{content:"\e012"}.pt-cv-wrapper .glyphicon-ok:before{content:"\e013"}.pt-cv-wrapper .glyphicon-remove:before{content:"\e014"}.pt-cv-wrapper .glyphicon-zoom-in:before{content:"\e015"}.pt-cv-wrapper .glyphicon-zoom-out:before{content:"\e016"}.pt-cv-wrapper .glyphicon-off:before{content:"\e017"}.pt-cv-wrapper .glyphicon-signal:before{content:"\e018"}.pt-cv-wrapper .glyphicon-cog:before{content:"\e019"}.pt-cv-wrapper .glyphicon-trash:before{content:"\e020"}.pt-cv-wrapper .glyphicon-home:before{content:"\e021"}.pt-cv-wrapper .glyphicon-file:before{content:"\e022"}.pt-cv-wrapper .glyphicon-time:before{content:"\e023"}.pt-cv-wrapper .glyphicon-road:before{content:"\e024"}.pt-cv-wrapper .glyphicon-download-alt:before{content:"\e025"}.pt-cv-wrapper .glyphicon-download:before{content:"\e026"}.pt-cv-wrapper .glyphicon-upload:before{content:"\e027"}.pt-cv-wrapper .glyphicon-inbox:before{content:"\e028"}.pt-cv-wrapper .glyphicon-play-circle:before{content:"\e029"}.pt-cv-wrapper .glyphicon-repeat:before{content:"\e030"}.pt-cv-wrapper .glyphicon-refresh:before{content:"\e031"}.pt-cv-wrapper .glyphicon-list-alt:before{content:"\e032"}.pt-cv-wrapper .glyphicon-lock:before{content:"\e033"}.pt-cv-wrapper .glyphicon-flag:before{content:"\e034"}.pt-cv-wrapper .glyphicon-headphones:before{content:"\e035"}.pt-cv-wrapper .glyphicon-volume-off:before{content:"\e036"}.pt-cv-wrapper .glyphicon-volume-down:before{content:"\e037"}.pt-cv-wrapper .glyphicon-volume-up:before{content:"\e038"}.pt-cv-wrapper .glyphicon-qrcode:before{content:"\e039"}.pt-cv-wrapper .glyphicon-barcode:before{content:"\e040"}.pt-cv-wrapper .glyphicon-tag:before{content:"\e041"}.pt-cv-wrapper .glyphicon-tags:before{content:"\e042"}.pt-cv-wrapper .glyphicon-book:before{content:"\e043"}.pt-cv-wrapper .glyphicon-bookmark:before{content:"\e044"}.pt-cv-wrapper .glyphicon-print:before{content:"\e045"}.pt-cv-wrapper .glyphicon-camera:before{content:"\e046"}.pt-cv-wrapper .glyphicon-font:before{content:"\e047"}.pt-cv-wrapper .glyphicon-bold:before{content:"\e048"}.pt-cv-wrapper .glyphicon-italic:before{content:"\e049"}.pt-cv-wrapper .glyphicon-text-height:before{content:"\e050"}.pt-cv-wrapper .glyphicon-text-width:before{content:"\e051"}.pt-cv-wrapper .glyphicon-align-left:before{content:"\e052"}.pt-cv-wrapper .glyphicon-align-center:before{content:"\e053"}.pt-cv-wrapper .glyphicon-align-right:before{content:"\e054"}.pt-cv-wrapper .glyphicon-align-justify:before{content:"\e055"}.pt-cv-wrapper .glyphicon-list:before{content:"\e056"}.pt-cv-wrapper .glyphicon-indent-left:before{content:"\e057"}.pt-cv-wrapper .glyphicon-indent-right:before{content:"\e058"}.pt-cv-wrapper .glyphicon-facetime-video:before{content:"\e059"}.pt-cv-wrapper .glyphicon-picture:before{content:"\e060"}.pt-cv-wrapper .glyphicon-map-marker:before{content:"\e062"}.pt-cv-wrapper .glyphicon-adjust:before{content:"\e063"}.pt-cv-wrapper .glyphicon-tint:before{content:"\e064"}.pt-cv-wrapper .glyphicon-edit:before{content:"\e065"}.pt-cv-wrapper .glyphicon-share:before{content:"\e066"}.pt-cv-wrapper .glyphicon-check:before{content:"\e067"}.pt-cv-wrapper .glyphicon-move:before{content:"\e068"}.pt-cv-wrapper .glyphicon-step-backward:before{content:"\e069"}.pt-cv-wrapper .glyphicon-fast-backward:before{content:"\e070"}.pt-cv-wrapper .glyphicon-backward:before{content:"\e071"}.pt-cv-wrapper .glyphicon-play:before{content:"\e072"}.pt-cv-wrapper .glyphicon-pause:before{content:"\e073"}.pt-cv-wrapper .glyphicon-stop:before{content:"\e074"}.pt-cv-wrapper .glyphicon-forward:before{content:"\e075"}.pt-cv-wrapper .glyphicon-fast-forward:before{content:"\e076"}.pt-cv-wrapper .glyphicon-step-forward:before{content:"\e077"}.pt-cv-wrapper .glyphicon-eject:before{content:"\e078"}.pt-cv-wrapper .glyphicon-chevron-left:before{content:"\e079"}.pt-cv-wrapper .glyphicon-chevron-right:before{content:"\e080"}.pt-cv-wrapper .glyphicon-plus-sign:before{content:"\e081"}.pt-cv-wrapper .glyphicon-minus-sign:before{content:"\e082"}.pt-cv-wrapper .glyphicon-remove-sign:before{content:"\e083"}.pt-cv-wrapper .glyphicon-ok-sign:before{content:"\e084"}.pt-cv-wrapper .glyphicon-question-sign:before{content:"\e085"}.pt-cv-wrapper .glyphicon-info-sign:before{content:"\e086"}.pt-cv-wrapper .glyphicon-screenshot:before{content:"\e087"}.pt-cv-wrapper .glyphicon-remove-circle:before{content:"\e088"}.pt-cv-wrapper .glyphicon-ok-circle:before{content:"\e089"}.pt-cv-wrapper .glyphicon-ban-circle:before{content:"\e090"}.pt-cv-wrapper .glyphicon-arrow-left:before{content:"\e091"}.pt-cv-wrapper .glyphicon-arrow-right:before{content:"\e092"}.pt-cv-wrapper .glyphicon-arrow-up:before{content:"\e093"}.pt-cv-wrapper .glyphicon-arrow-down:before{content:"\e094"}.pt-cv-wrapper .glyphicon-share-alt:before{content:"\e095"}.pt-cv-wrapper .glyphicon-resize-full:before{content:"\e096"}.pt-cv-wrapper .glyphicon-resize-small:before{content:"\e097"}.pt-cv-wrapper .glyphicon-exclamation-sign:before{content:"\e101"}.pt-cv-wrapper .glyphicon-gift:before{content:"\e102"}.pt-cv-wrapper .glyphicon-leaf:before{content:"\e103"}.pt-cv-wrapper .glyphicon-fire:before{content:"\e104"}.pt-cv-wrapper .glyphicon-eye-open:before{content:"\e105"}.pt-cv-wrapper .glyphicon-eye-close:before{content:"\e106"}.pt-cv-wrapper .glyphicon-warning-sign:before{content:"\e107"}.pt-cv-wrapper .glyphicon-plane:before{content:"\e108"}.pt-cv-wrapper .glyphicon-calendar:before{content:"\e109"}.pt-cv-wrapper .glyphicon-random:before{content:"\e110"}.pt-cv-wrapper .glyphicon-comment:before{content:"\e111"}.pt-cv-wrapper .glyphicon-magnet:before{content:"\e112"}.pt-cv-wrapper .glyphicon-chevron-up:before{content:"\e113"}.pt-cv-wrapper .glyphicon-chevron-down:before{content:"\e114"}.pt-cv-wrapper .glyphicon-retweet:before{content:"\e115"}.pt-cv-wrapper .glyphicon-shopping-cart:before{content:"\e116"}.pt-cv-wrapper .glyphicon-folder-close:before{content:"\e117"}.pt-cv-wrapper .glyphicon-folder-open:before{content:"\e118"}.pt-cv-wrapper .glyphicon-resize-vertical:before{content:"\e119"}.pt-cv-wrapper .glyphicon-resize-horizontal:before{content:"\e120"}.pt-cv-wrapper .glyphicon-hdd:before{content:"\e121"}.pt-cv-wrapper .glyphicon-bullhorn:before{content:"\e122"}.pt-cv-wrapper .glyphicon-bell:before{content:"\e123"}.pt-cv-wrapper .glyphicon-certificate:before{content:"\e124"}.pt-cv-wrapper .glyphicon-thumbs-up:before{content:"\e125"}.pt-cv-wrapper .glyphicon-thumbs-down:before{content:"\e126"}.pt-cv-wrapper .glyphicon-hand-right:before{content:"\e127"}.pt-cv-wrapper .glyphicon-hand-left:before{content:"\e128"}.pt-cv-wrapper .glyphicon-hand-up:before{content:"\e129"}.pt-cv-wrapper .glyphicon-hand-down:before{content:"\e130"}.pt-cv-wrapper .glyphicon-circle-arrow-right:before{content:"\e131"}.pt-cv-wrapper .glyphicon-circle-arrow-left:before{content:"\e132"}.pt-cv-wrapper .glyphicon-circle-arrow-up:before{content:"\e133"}.pt-cv-wrapper .glyphicon-circle-arrow-down:before{content:"\e134"}.pt-cv-wrapper .glyphicon-globe:before{content:"\e135"}.pt-cv-wrapper .glyphicon-wrench:before{content:"\e136"}.pt-cv-wrapper .glyphicon-tasks:before{content:"\e137"}.pt-cv-wrapper .glyphicon-filter:before{content:"\e138"}.pt-cv-wrapper .glyphicon-briefcase:before{content:"\e139"}.pt-cv-wrapper .glyphicon-fullscreen:before{content:"\e140"}.pt-cv-wrapper .glyphicon-dashboard:before{content:"\e141"}.pt-cv-wrapper .glyphicon-paperclip:before{content:"\e142"}.pt-cv-wrapper .glyphicon-heart-empty:before{content:"\e143"}.pt-cv-wrapper .glyphicon-link:before{content:"\e144"}.pt-cv-wrapper .glyphicon-phone:before{content:"\e145"}.pt-cv-wrapper .glyphicon-pushpin:before{content:"\e146"}.pt-cv-wrapper .glyphicon-usd:before{content:"\e148"}.pt-cv-wrapper .glyphicon-gbp:before{content:"\e149"}.pt-cv-wrapper .glyphicon-sort:before{content:"\e150"}.pt-cv-wrapper .glyphicon-sort-by-alphabet:before{content:"\e151"}.pt-cv-wrapper .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.pt-cv-wrapper .glyphicon-sort-by-order:before{content:"\e153"}.pt-cv-wrapper .glyphicon-sort-by-order-alt:before{content:"\e154"}.pt-cv-wrapper .glyphicon-sort-by-attributes:before{content:"\e155"}.pt-cv-wrapper .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.pt-cv-wrapper .glyphicon-unchecked:before{content:"\e157"}.pt-cv-wrapper .glyphicon-expand:before{content:"\e158"}.pt-cv-wrapper .glyphicon-collapse-down:before{content:"\e159"}.pt-cv-wrapper .glyphicon-collapse-up:before{content:"\e160"}.pt-cv-wrapper .glyphicon-log-in:before{content:"\e161"}.pt-cv-wrapper .glyphicon-flash:before{content:"\e162"}.pt-cv-wrapper .glyphicon-log-out:before{content:"\e163"}.pt-cv-wrapper .glyphicon-new-window:before{content:"\e164"}.pt-cv-wrapper .glyphicon-record:before{content:"\e165"}.pt-cv-wrapper .glyphicon-save:before{content:"\e166"}.pt-cv-wrapper .glyphicon-open:before{content:"\e167"}.pt-cv-wrapper .glyphicon-saved:before{content:"\e168"}.pt-cv-wrapper .glyphicon-import:before{content:"\e169"}.pt-cv-wrapper .glyphicon-export:before{content:"\e170"}.pt-cv-wrapper .glyphicon-send:before{content:"\e171"}.pt-cv-wrapper .glyphicon-floppy-disk:before{content:"\e172"}.pt-cv-wrapper .glyphicon-floppy-saved:before{content:"\e173"}.pt-cv-wrapper .glyphicon-floppy-remove:before{content:"\e174"}.pt-cv-wrapper .glyphicon-floppy-save:before{content:"\e175"}.pt-cv-wrapper .glyphicon-floppy-open:before{content:"\e176"}.pt-cv-wrapper .glyphicon-credit-card:before{content:"\e177"}.pt-cv-wrapper .glyphicon-transfer:before{content:"\e178"}.pt-cv-wrapper .glyphicon-cutlery:before{content:"\e179"}.pt-cv-wrapper .glyphicon-header:before{content:"\e180"}.pt-cv-wrapper .glyphicon-compressed:before{content:"\e181"}.pt-cv-wrapper .glyphicon-earphone:before{content:"\e182"}.pt-cv-wrapper .glyphicon-phone-alt:before{content:"\e183"}.pt-cv-wrapper .glyphicon-tower:before{content:"\e184"}.pt-cv-wrapper .glyphicon-stats:before{content:"\e185"}.pt-cv-wrapper .glyphicon-sd-video:before{content:"\e186"}.pt-cv-wrapper .glyphicon-hd-video:before{content:"\e187"}.pt-cv-wrapper .glyphicon-subtitles:before{content:"\e188"}.pt-cv-wrapper .glyphicon-sound-stereo:before{content:"\e189"}.pt-cv-wrapper .glyphicon-sound-dolby:before{content:"\e190"}.pt-cv-wrapper .glyphicon-sound-5-1:before{content:"\e191"}.pt-cv-wrapper .glyphicon-sound-6-1:before{content:"\e192"}.pt-cv-wrapper .glyphicon-sound-7-1:before{content:"\e193"}.pt-cv-wrapper .glyphicon-copyright-mark:before{content:"\e194"}.pt-cv-wrapper .glyphicon-registration-mark:before{content:"\e195"}.pt-cv-wrapper .glyphicon-cloud-download:before{content:"\e197"}.pt-cv-wrapper .glyphicon-cloud-upload:before{content:"\e198"}.pt-cv-wrapper .glyphicon-tree-conifer:before{content:"\e199"}.pt-cv-wrapper .glyphicon-tree-deciduous:before{content:"\e200"}.pt-cv-wrapper .glyphicon-cd:before{content:"\e201"}.pt-cv-wrapper .glyphicon-save-file:before{content:"\e202"}.pt-cv-wrapper .glyphicon-open-file:before{content:"\e203"}.pt-cv-wrapper .glyphicon-level-up:before{content:"\e204"}.pt-cv-wrapper .glyphicon-copy:before{content:"\e205"}.pt-cv-wrapper .glyphicon-paste:before{content:"\e206"}.pt-cv-wrapper .glyphicon-alert:before{content:"\e209"}.pt-cv-wrapper .glyphicon-equalizer:before{content:"\e210"}.pt-cv-wrapper .glyphicon-king:before{content:"\e211"}.pt-cv-wrapper .glyphicon-queen:before{content:"\e212"}.pt-cv-wrapper .glyphicon-pawn:before{content:"\e213"}.pt-cv-wrapper .glyphicon-bishop:before{content:"\e214"}.pt-cv-wrapper .glyphicon-knight:before{content:"\e215"}.pt-cv-wrapper .glyphicon-baby-formula:before{content:"\e216"}.pt-cv-wrapper .glyphicon-tent:before{content:"\26fa"}.pt-cv-wrapper .glyphicon-blackboard:before{content:"\e218"}.pt-cv-wrapper .glyphicon-bed:before{content:"\e219"}.pt-cv-wrapper .glyphicon-apple:before{content:"\f8ff"}.pt-cv-wrapper .glyphicon-erase:before{content:"\e221"}.pt-cv-wrapper .glyphicon-hourglass:before{content:"\231b"}.pt-cv-wrapper .glyphicon-lamp:before{content:"\e223"}.pt-cv-wrapper .glyphicon-duplicate:before{content:"\e224"}.pt-cv-wrapper .glyphicon-piggy-bank:before{content:"\e225"}.pt-cv-wrapper .glyphicon-scissors:before{content:"\e226"}.pt-cv-wrapper .glyphicon-bitcoin:before,.pt-cv-wrapper .glyphicon-btc:before,.pt-cv-wrapper .glyphicon-xbt:before{content:"\e227"}.pt-cv-wrapper .glyphicon-jpy:before,.pt-cv-wrapper .glyphicon-yen:before{content:"\00a5"}.pt-cv-wrapper .glyphicon-rub:before,.pt-cv-wrapper .glyphicon-ruble:before{content:"\20bd"}.pt-cv-wrapper .glyphicon-scale:before{content:"\e230"}.pt-cv-wrapper .glyphicon-ice-lolly:before{content:"\e231"}.pt-cv-wrapper .glyphicon-ice-lolly-tasted:before{content:"\e232"}.pt-cv-wrapper .glyphicon-education:before{content:"\e233"}.pt-cv-wrapper .glyphicon-option-horizontal:before{content:"\e234"}.pt-cv-wrapper .glyphicon-option-vertical:before{content:"\e235"}.pt-cv-wrapper .glyphicon-menu-hamburger:before{content:"\e236"}.pt-cv-wrapper .glyphicon-modal-window:before{content:"\e237"}.pt-cv-wrapper .glyphicon-oil:before{content:"\e238"}.pt-cv-wrapper .glyphicon-grain:before{content:"\e239"}.pt-cv-wrapper .glyphicon-sunglasses:before{content:"\e240"}.pt-cv-wrapper .glyphicon-text-size:before{content:"\e241"}.pt-cv-wrapper .glyphicon-text-color:before{content:"\e242"}.pt-cv-wrapper .glyphicon-text-background:before{content:"\e243"}.pt-cv-wrapper .glyphicon-object-align-top:before{content:"\e244"}.pt-cv-wrapper .glyphicon-object-align-bottom:before{content:"\e245"}.pt-cv-wrapper .glyphicon-object-align-horizontal:before{content:"\e246"}.pt-cv-wrapper .glyphicon-object-align-left:before{content:"\e247"}.pt-cv-wrapper .glyphicon-object-align-vertical:before{content:"\e248"}.pt-cv-wrapper .glyphicon-object-align-right:before{content:"\e249"}.pt-cv-wrapper .glyphicon-triangle-right:before{content:"\e250"}.pt-cv-wrapper .glyphicon-triangle-left:before{content:"\e251"}.pt-cv-wrapper .glyphicon-triangle-bottom:before{content:"\e252"}.pt-cv-wrapper .glyphicon-triangle-top:before{content:"\e253"}.pt-cv-wrapper .glyphicon-console:before{content:"\e254"}.pt-cv-wrapper .glyphicon-superscript:before{content:"\e255"}.pt-cv-wrapper .glyphicon-subscript:before{content:"\e256"}.pt-cv-wrapper .glyphicon-menu-left:before{content:"\e257"}.pt-cv-wrapper .glyphicon-menu-right:before{content:"\e258"}.pt-cv-wrapper .glyphicon-menu-down:before{content:"\e259"}.pt-cv-wrapper .glyphicon-menu-up:before{content:"\e260"}.pt-cv-wrapper img{vertical-align:middle}.pt-cv-wrapper .carousel-inner>.item>a>img,.pt-cv-wrapper .carousel-inner>.item>img,.pt-cv-wrapper .img-responsive,.pt-cv-wrapper .thumbnail a>img,.pt-cv-wrapper .thumbnail>img{display:block;max-width:100%;height:auto}.pt-cv-wrapper .img-rounded{border-radius:6px}.pt-cv-wrapper .img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.pt-cv-wrapper .img-circle{border-radius:50%}.pt-cv-wrapper hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.pt-cv-wrapper .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.pt-cv-wrapper .sr-only-focusable:active,.pt-cv-wrapper .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.pt-cv-wrapper [role=button]{cursor:pointer}.pt-cv-wrapper .container,.pt-cv-wrapper .container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media(min-width:768px){.pt-cv-wrapper .container{width:750px}}@media(min-width:992px){.pt-cv-wrapper .container{width:970px}}@media(min-width:1200px){.pt-cv-wrapper .container{width:1170px}}.pt-cv-wrapper .row{margin-left:-15px;margin-right:-15px}.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-lg-12,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-lg-9,.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-md-12,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-md-9,.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-sm-12,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-sm-9,.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-xs-12,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-xs-9{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-xs-12,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-xs-9{float:left}.pt-cv-wrapper .col-xs-12{width:100%}.pt-cv-wrapper .col-xs-11{width:91.66666667%}.pt-cv-wrapper .col-xs-10{width:83.33333333%}.pt-cv-wrapper .col-xs-9{width:75%}.pt-cv-wrapper .col-xs-8{width:66.66666667%}.pt-cv-wrapper .col-xs-7{width:58.33333333%}.pt-cv-wrapper .col-xs-6{width:50%}.pt-cv-wrapper .col-xs-5{width:41.66666667%}.pt-cv-wrapper .col-xs-4{width:33.33333333%}.pt-cv-wrapper .col-xs-3{width:25%}.pt-cv-wrapper .col-xs-2{width:16.66666667%}.pt-cv-wrapper .col-xs-1{width:8.33333333%}.pt-cv-wrapper .col-xs-pull-12{right:100%}.pt-cv-wrapper .col-xs-pull-11{right:91.66666667%}.pt-cv-wrapper .col-xs-pull-10{right:83.33333333%}.pt-cv-wrapper .col-xs-pull-9{right:75%}.pt-cv-wrapper .col-xs-pull-8{right:66.66666667%}.pt-cv-wrapper .col-xs-pull-7{right:58.33333333%}.pt-cv-wrapper .col-xs-pull-6{right:50%}.pt-cv-wrapper .col-xs-pull-5{right:41.66666667%}.pt-cv-wrapper .col-xs-pull-4{right:33.33333333%}.pt-cv-wrapper .col-xs-pull-3{right:25%}.pt-cv-wrapper .col-xs-pull-2{right:16.66666667%}.pt-cv-wrapper .col-xs-pull-1{right:8.33333333%}.pt-cv-wrapper .col-xs-pull-0{right:auto}.pt-cv-wrapper .col-xs-push-12{left:100%}.pt-cv-wrapper .col-xs-push-11{left:91.66666667%}.pt-cv-wrapper .col-xs-push-10{left:83.33333333%}.pt-cv-wrapper .col-xs-push-9{left:75%}.pt-cv-wrapper .col-xs-push-8{left:66.66666667%}.pt-cv-wrapper .col-xs-push-7{left:58.33333333%}.pt-cv-wrapper .col-xs-push-6{left:50%}.pt-cv-wrapper .col-xs-push-5{left:41.66666667%}.pt-cv-wrapper .col-xs-push-4{left:33.33333333%}.pt-cv-wrapper .col-xs-push-3{left:25%}.pt-cv-wrapper .col-xs-push-2{left:16.66666667%}.pt-cv-wrapper .col-xs-push-1{left:8.33333333%}.pt-cv-wrapper .col-xs-push-0{left:auto}.pt-cv-wrapper .col-xs-offset-12{margin-left:100%}.pt-cv-wrapper .col-xs-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-xs-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-xs-offset-9{margin-left:75%}.pt-cv-wrapper .col-xs-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-xs-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-xs-offset-6{margin-left:50%}.pt-cv-wrapper .col-xs-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-xs-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-xs-offset-3{margin-left:25%}.pt-cv-wrapper .col-xs-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-xs-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-xs-offset-0{margin-left:0}@media(min-width:768px){.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-sm-12,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-sm-9{float:left}.pt-cv-wrapper .col-sm-12{width:100%}.pt-cv-wrapper .col-sm-11{width:91.66666667%}.pt-cv-wrapper .col-sm-10{width:83.33333333%}.pt-cv-wrapper .col-sm-9{width:75%}.pt-cv-wrapper .col-sm-8{width:66.66666667%}.pt-cv-wrapper .col-sm-7{width:58.33333333%}.pt-cv-wrapper .col-sm-6{width:50%}.pt-cv-wrapper .col-sm-5{width:41.66666667%}.pt-cv-wrapper .col-sm-4{width:33.33333333%}.pt-cv-wrapper .col-sm-3{width:25%}.pt-cv-wrapper .col-sm-2{width:16.66666667%}.pt-cv-wrapper .col-sm-1{width:8.33333333%}.pt-cv-wrapper .col-sm-pull-12{right:100%}.pt-cv-wrapper .col-sm-pull-11{right:91.66666667%}.pt-cv-wrapper .col-sm-pull-10{right:83.33333333%}.pt-cv-wrapper .col-sm-pull-9{right:75%}.pt-cv-wrapper .col-sm-pull-8{right:66.66666667%}.pt-cv-wrapper .col-sm-pull-7{right:58.33333333%}.pt-cv-wrapper .col-sm-pull-6{right:50%}.pt-cv-wrapper .col-sm-pull-5{right:41.66666667%}.pt-cv-wrapper .col-sm-pull-4{right:33.33333333%}.pt-cv-wrapper .col-sm-pull-3{right:25%}.pt-cv-wrapper .col-sm-pull-2{right:16.66666667%}.pt-cv-wrapper .col-sm-pull-1{right:8.33333333%}.pt-cv-wrapper .col-sm-pull-0{right:auto}.pt-cv-wrapper .col-sm-push-12{left:100%}.pt-cv-wrapper .col-sm-push-11{left:91.66666667%}.pt-cv-wrapper .col-sm-push-10{left:83.33333333%}.pt-cv-wrapper .col-sm-push-9{left:75%}.pt-cv-wrapper .col-sm-push-8{left:66.66666667%}.pt-cv-wrapper .col-sm-push-7{left:58.33333333%}.pt-cv-wrapper .col-sm-push-6{left:50%}.pt-cv-wrapper .col-sm-push-5{left:41.66666667%}.pt-cv-wrapper .col-sm-push-4{left:33.33333333%}.pt-cv-wrapper .col-sm-push-3{left:25%}.pt-cv-wrapper .col-sm-push-2{left:16.66666667%}.pt-cv-wrapper .col-sm-push-1{left:8.33333333%}.pt-cv-wrapper .col-sm-push-0{left:auto}.pt-cv-wrapper .col-sm-offset-12{margin-left:100%}.pt-cv-wrapper .col-sm-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-sm-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-sm-offset-9{margin-left:75%}.pt-cv-wrapper .col-sm-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-sm-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-sm-offset-6{margin-left:50%}.pt-cv-wrapper .col-sm-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-sm-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-sm-offset-3{margin-left:25%}.pt-cv-wrapper .col-sm-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-sm-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-sm-offset-0{margin-left:0}}@media(min-width:992px){.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-md-12,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-md-9{float:left}.pt-cv-wrapper .col-md-12{width:100%}.pt-cv-wrapper .col-md-11{width:91.66666667%}.pt-cv-wrapper .col-md-10{width:83.33333333%}.pt-cv-wrapper .col-md-9{width:75%}.pt-cv-wrapper .col-md-8{width:66.66666667%}.pt-cv-wrapper .col-md-7{width:58.33333333%}.pt-cv-wrapper .col-md-6{width:50%}.pt-cv-wrapper .col-md-5{width:41.66666667%}.pt-cv-wrapper .col-md-4{width:33.33333333%}.pt-cv-wrapper .col-md-3{width:25%}.pt-cv-wrapper .col-md-2{width:16.66666667%}.pt-cv-wrapper .col-md-1{width:8.33333333%}.pt-cv-wrapper .col-md-pull-12{right:100%}.pt-cv-wrapper .col-md-pull-11{right:91.66666667%}.pt-cv-wrapper .col-md-pull-10{right:83.33333333%}.pt-cv-wrapper .col-md-pull-9{right:75%}.pt-cv-wrapper .col-md-pull-8{right:66.66666667%}.pt-cv-wrapper .col-md-pull-7{right:58.33333333%}.pt-cv-wrapper .col-md-pull-6{right:50%}.pt-cv-wrapper .col-md-pull-5{right:41.66666667%}.pt-cv-wrapper .col-md-pull-4{right:33.33333333%}.pt-cv-wrapper .col-md-pull-3{right:25%}.pt-cv-wrapper .col-md-pull-2{right:16.66666667%}.pt-cv-wrapper .col-md-pull-1{right:8.33333333%}.pt-cv-wrapper .col-md-pull-0{right:auto}.pt-cv-wrapper .col-md-push-12{left:100%}.pt-cv-wrapper .col-md-push-11{left:91.66666667%}.pt-cv-wrapper .col-md-push-10{left:83.33333333%}.pt-cv-wrapper .col-md-push-9{left:75%}.pt-cv-wrapper .col-md-push-8{left:66.66666667%}.pt-cv-wrapper .col-md-push-7{left:58.33333333%}.pt-cv-wrapper .col-md-push-6{left:50%}.pt-cv-wrapper .col-md-push-5{left:41.66666667%}.pt-cv-wrapper .col-md-push-4{left:33.33333333%}.pt-cv-wrapper .col-md-push-3{left:25%}.pt-cv-wrapper .col-md-push-2{left:16.66666667%}.pt-cv-wrapper .col-md-push-1{left:8.33333333%}.pt-cv-wrapper .col-md-push-0{left:auto}.pt-cv-wrapper .col-md-offset-12{margin-left:100%}.pt-cv-wrapper .col-md-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-md-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-md-offset-9{margin-left:75%}.pt-cv-wrapper .col-md-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-md-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-md-offset-6{margin-left:50%}.pt-cv-wrapper .col-md-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-md-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-md-offset-3{margin-left:25%}.pt-cv-wrapper .col-md-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-md-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-md-offset-0{margin-left:0}}@media(min-width:1200px){.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-lg-12,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-lg-9{float:left}.pt-cv-wrapper .col-lg-12{width:100%}.pt-cv-wrapper .col-lg-11{width:91.66666667%}.pt-cv-wrapper .col-lg-10{width:83.33333333%}.pt-cv-wrapper .col-lg-9{width:75%}.pt-cv-wrapper .col-lg-8{width:66.66666667%}.pt-cv-wrapper .col-lg-7{width:58.33333333%}.pt-cv-wrapper .col-lg-6{width:50%}.pt-cv-wrapper .col-lg-5{width:41.66666667%}.pt-cv-wrapper .col-lg-4{width:33.33333333%}.pt-cv-wrapper .col-lg-3{width:25%}.pt-cv-wrapper .col-lg-2{width:16.66666667%}.pt-cv-wrapper .col-lg-1{width:8.33333333%}.pt-cv-wrapper .col-lg-pull-12{right:100%}.pt-cv-wrapper .col-lg-pull-11{right:91.66666667%}.pt-cv-wrapper .col-lg-pull-10{right:83.33333333%}.pt-cv-wrapper .col-lg-pull-9{right:75%}.pt-cv-wrapper .col-lg-pull-8{right:66.66666667%}.pt-cv-wrapper .col-lg-pull-7{right:58.33333333%}.pt-cv-wrapper .col-lg-pull-6{right:50%}.pt-cv-wrapper .col-lg-pull-5{right:41.66666667%}.pt-cv-wrapper .col-lg-pull-4{right:33.33333333%}.pt-cv-wrapper .col-lg-pull-3{right:25%}.pt-cv-wrapper .col-lg-pull-2{right:16.66666667%}.pt-cv-wrapper .col-lg-pull-1{right:8.33333333%}.pt-cv-wrapper .col-lg-pull-0{right:auto}.pt-cv-wrapper .col-lg-push-12{left:100%}.pt-cv-wrapper .col-lg-push-11{left:91.66666667%}.pt-cv-wrapper .col-lg-push-10{left:83.33333333%}.pt-cv-wrapper .col-lg-push-9{left:75%}.pt-cv-wrapper .col-lg-push-8{left:66.66666667%}.pt-cv-wrapper .col-lg-push-7{left:58.33333333%}.pt-cv-wrapper .col-lg-push-6{left:50%}.pt-cv-wrapper .col-lg-push-5{left:41.66666667%}.pt-cv-wrapper .col-lg-push-4{left:33.33333333%}.pt-cv-wrapper .col-lg-push-3{left:25%}.pt-cv-wrapper .col-lg-push-2{left:16.66666667%}.pt-cv-wrapper .col-lg-push-1{left:8.33333333%}.pt-cv-wrapper .col-lg-push-0{left:auto}.pt-cv-wrapper .col-lg-offset-12{margin-left:100%}.pt-cv-wrapper .col-lg-offset-11{margin-left:91.66666667%}.pt-cv-wrapper .col-lg-offset-10{margin-left:83.33333333%}.pt-cv-wrapper .col-lg-offset-9{margin-left:75%}.pt-cv-wrapper .col-lg-offset-8{margin-left:66.66666667%}.pt-cv-wrapper .col-lg-offset-7{margin-left:58.33333333%}.pt-cv-wrapper .col-lg-offset-6{margin-left:50%}.pt-cv-wrapper .col-lg-offset-5{margin-left:41.66666667%}.pt-cv-wrapper .col-lg-offset-4{margin-left:33.33333333%}.pt-cv-wrapper .col-lg-offset-3{margin-left:25%}.pt-cv-wrapper .col-lg-offset-2{margin-left:16.66666667%}.pt-cv-wrapper .col-lg-offset-1{margin-left:8.33333333%}.pt-cv-wrapper .col-lg-offset-0{margin-left:0}}.pt-cv-wrapper .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pt-cv-wrapper .btn.active.focus,.pt-cv-wrapper .btn.active:focus,.pt-cv-wrapper .btn.focus,.pt-cv-wrapper .btn:active.focus,.pt-cv-wrapper .btn:active:focus,.pt-cv-wrapper .btn:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}.pt-cv-wrapper .btn.focus,.pt-cv-wrapper .btn:focus,.pt-cv-wrapper .btn:hover{color:#333;text-decoration:none}.pt-cv-wrapper .btn.active,.pt-cv-wrapper .btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.pt-cv-wrapper .btn.disabled,.pt-cv-wrapper .btn[disabled],.pt-cv-wrapper fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.pt-cv-wrapper a.btn.disabled,.pt-cv-wrapper fieldset[disabled] a.btn{pointer-events:none}.pt-cv-wrapper .btn-default{color:#333;background-color:#fff;border-color:#ccc}.pt-cv-wrapper .btn-default.focus,.pt-cv-wrapper .btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .btn-default:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.pt-cv-wrapper .btn-default.active.focus,.pt-cv-wrapper .btn-default.active:focus,.pt-cv-wrapper .btn-default.active:hover,.pt-cv-wrapper .btn-default:active.focus,.pt-cv-wrapper .btn-default:active:focus,.pt-cv-wrapper .btn-default:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-default.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{background-image:none}.pt-cv-wrapper .btn-default.disabled,.pt-cv-wrapper .btn-default.disabled.active,.pt-cv-wrapper .btn-default.disabled.focus,.pt-cv-wrapper .btn-default.disabled:active,.pt-cv-wrapper .btn-default.disabled:focus,.pt-cv-wrapper .btn-default.disabled:hover,.pt-cv-wrapper .btn-default[disabled],.pt-cv-wrapper .btn-default[disabled].active,.pt-cv-wrapper .btn-default[disabled].focus,.pt-cv-wrapper .btn-default[disabled]:active,.pt-cv-wrapper .btn-default[disabled]:focus,.pt-cv-wrapper .btn-default[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-default,.pt-cv-wrapper fieldset[disabled] .btn-default.active,.pt-cv-wrapper fieldset[disabled] .btn-default.focus,.pt-cv-wrapper fieldset[disabled] .btn-default:active,.pt-cv-wrapper fieldset[disabled] .btn-default:focus,.pt-cv-wrapper fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.pt-cv-wrapper .btn-default .badge{color:#fff;background-color:#333}.pt-cv-wrapper .btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.pt-cv-wrapper .btn-primary.focus,.pt-cv-wrapper .btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .btn-primary:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.pt-cv-wrapper .btn-primary.active.focus,.pt-cv-wrapper .btn-primary.active:focus,.pt-cv-wrapper .btn-primary.active:hover,.pt-cv-wrapper .btn-primary:active.focus,.pt-cv-wrapper .btn-primary:active:focus,.pt-cv-wrapper .btn-primary:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{background-image:none}.pt-cv-wrapper .btn-primary.disabled,.pt-cv-wrapper .btn-primary.disabled.active,.pt-cv-wrapper .btn-primary.disabled.focus,.pt-cv-wrapper .btn-primary.disabled:active,.pt-cv-wrapper .btn-primary.disabled:focus,.pt-cv-wrapper .btn-primary.disabled:hover,.pt-cv-wrapper .btn-primary[disabled],.pt-cv-wrapper .btn-primary[disabled].active,.pt-cv-wrapper .btn-primary[disabled].focus,.pt-cv-wrapper .btn-primary[disabled]:active,.pt-cv-wrapper .btn-primary[disabled]:focus,.pt-cv-wrapper .btn-primary[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-primary,.pt-cv-wrapper fieldset[disabled] .btn-primary.active,.pt-cv-wrapper fieldset[disabled] .btn-primary.focus,.pt-cv-wrapper fieldset[disabled] .btn-primary:active,.pt-cv-wrapper fieldset[disabled] .btn-primary:focus,.pt-cv-wrapper fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.pt-cv-wrapper .btn-primary .badge{color:#337ab7;background-color:#fff}.pt-cv-wrapper .btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.pt-cv-wrapper .btn-success.focus,.pt-cv-wrapper .btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .btn-success:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.pt-cv-wrapper .btn-success.active.focus,.pt-cv-wrapper .btn-success.active:focus,.pt-cv-wrapper .btn-success.active:hover,.pt-cv-wrapper .btn-success:active.focus,.pt-cv-wrapper .btn-success:active:focus,.pt-cv-wrapper .btn-success:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-success.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{background-image:none}.pt-cv-wrapper .btn-success.disabled,.pt-cv-wrapper .btn-success.disabled.active,.pt-cv-wrapper .btn-success.disabled.focus,.pt-cv-wrapper .btn-success.disabled:active,.pt-cv-wrapper .btn-success.disabled:focus,.pt-cv-wrapper .btn-success.disabled:hover,.pt-cv-wrapper .btn-success[disabled],.pt-cv-wrapper .btn-success[disabled].active,.pt-cv-wrapper .btn-success[disabled].focus,.pt-cv-wrapper .btn-success[disabled]:active,.pt-cv-wrapper .btn-success[disabled]:focus,.pt-cv-wrapper .btn-success[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-success,.pt-cv-wrapper fieldset[disabled] .btn-success.active,.pt-cv-wrapper fieldset[disabled] .btn-success.focus,.pt-cv-wrapper fieldset[disabled] .btn-success:active,.pt-cv-wrapper fieldset[disabled] .btn-success:focus,.pt-cv-wrapper fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.pt-cv-wrapper .btn-success .badge{color:#5cb85c;background-color:#fff}.pt-cv-wrapper .btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.pt-cv-wrapper .btn-info.focus,.pt-cv-wrapper .btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .btn-info:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.pt-cv-wrapper .btn-info.active.focus,.pt-cv-wrapper .btn-info.active:focus,.pt-cv-wrapper .btn-info.active:hover,.pt-cv-wrapper .btn-info:active.focus,.pt-cv-wrapper .btn-info:active:focus,.pt-cv-wrapper .btn-info:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-info.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{background-image:none}.pt-cv-wrapper .btn-info.disabled,.pt-cv-wrapper .btn-info.disabled.active,.pt-cv-wrapper .btn-info.disabled.focus,.pt-cv-wrapper .btn-info.disabled:active,.pt-cv-wrapper .btn-info.disabled:focus,.pt-cv-wrapper .btn-info.disabled:hover,.pt-cv-wrapper .btn-info[disabled],.pt-cv-wrapper .btn-info[disabled].active,.pt-cv-wrapper .btn-info[disabled].focus,.pt-cv-wrapper .btn-info[disabled]:active,.pt-cv-wrapper .btn-info[disabled]:focus,.pt-cv-wrapper .btn-info[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-info,.pt-cv-wrapper fieldset[disabled] .btn-info.active,.pt-cv-wrapper fieldset[disabled] .btn-info.focus,.pt-cv-wrapper fieldset[disabled] .btn-info:active,.pt-cv-wrapper fieldset[disabled] .btn-info:focus,.pt-cv-wrapper fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.pt-cv-wrapper .btn-info .badge{color:#5bc0de;background-color:#fff}.pt-cv-wrapper .btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.pt-cv-wrapper .btn-warning.focus,.pt-cv-wrapper .btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .btn-warning:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.pt-cv-wrapper .btn-warning.active.focus,.pt-cv-wrapper .btn-warning.active:focus,.pt-cv-wrapper .btn-warning.active:hover,.pt-cv-wrapper .btn-warning:active.focus,.pt-cv-wrapper .btn-warning:active:focus,.pt-cv-wrapper .btn-warning:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{background-image:none}.pt-cv-wrapper .btn-warning.disabled,.pt-cv-wrapper .btn-warning.disabled.active,.pt-cv-wrapper .btn-warning.disabled.focus,.pt-cv-wrapper .btn-warning.disabled:active,.pt-cv-wrapper .btn-warning.disabled:focus,.pt-cv-wrapper .btn-warning.disabled:hover,.pt-cv-wrapper .btn-warning[disabled],.pt-cv-wrapper .btn-warning[disabled].active,.pt-cv-wrapper .btn-warning[disabled].focus,.pt-cv-wrapper .btn-warning[disabled]:active,.pt-cv-wrapper .btn-warning[disabled]:focus,.pt-cv-wrapper .btn-warning[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-warning,.pt-cv-wrapper fieldset[disabled] .btn-warning.active,.pt-cv-wrapper fieldset[disabled] .btn-warning.focus,.pt-cv-wrapper fieldset[disabled] .btn-warning:active,.pt-cv-wrapper fieldset[disabled] .btn-warning:focus,.pt-cv-wrapper fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.pt-cv-wrapper .btn-warning .badge{color:#f0ad4e;background-color:#fff}.pt-cv-wrapper .btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.pt-cv-wrapper .btn-danger.focus,.pt-cv-wrapper .btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .btn-danger:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.pt-cv-wrapper .btn-danger.active.focus,.pt-cv-wrapper .btn-danger.active:focus,.pt-cv-wrapper .btn-danger.active:hover,.pt-cv-wrapper .btn-danger:active.focus,.pt-cv-wrapper .btn-danger:active:focus,.pt-cv-wrapper .btn-danger:active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{background-image:none}.pt-cv-wrapper .btn-danger.disabled,.pt-cv-wrapper .btn-danger.disabled.active,.pt-cv-wrapper .btn-danger.disabled.focus,.pt-cv-wrapper .btn-danger.disabled:active,.pt-cv-wrapper .btn-danger.disabled:focus,.pt-cv-wrapper .btn-danger.disabled:hover,.pt-cv-wrapper .btn-danger[disabled],.pt-cv-wrapper .btn-danger[disabled].active,.pt-cv-wrapper .btn-danger[disabled].focus,.pt-cv-wrapper .btn-danger[disabled]:active,.pt-cv-wrapper .btn-danger[disabled]:focus,.pt-cv-wrapper .btn-danger[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-danger,.pt-cv-wrapper fieldset[disabled] .btn-danger.active,.pt-cv-wrapper fieldset[disabled] .btn-danger.focus,.pt-cv-wrapper fieldset[disabled] .btn-danger:active,.pt-cv-wrapper fieldset[disabled] .btn-danger:focus,.pt-cv-wrapper fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.pt-cv-wrapper .btn-danger .badge{color:#d9534f;background-color:#fff}.pt-cv-wrapper .btn-link{color:#337ab7;font-weight:400;border-radius:0}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link.active,.pt-cv-wrapper .btn-link:active,.pt-cv-wrapper .btn-link[disabled],.pt-cv-wrapper fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link:active,.pt-cv-wrapper .btn-link:focus,.pt-cv-wrapper .btn-link:hover{border-color:transparent}.pt-cv-wrapper .btn-link:focus,.pt-cv-wrapper .btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.pt-cv-wrapper .btn-link[disabled]:focus,.pt-cv-wrapper .btn-link[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-link:focus,.pt-cv-wrapper fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.pt-cv-wrapper .btn-group-lg>.btn,.pt-cv-wrapper .btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.pt-cv-wrapper .btn-group-sm>.btn,.pt-cv-wrapper .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.pt-cv-wrapper .btn-group-xs>.btn,.pt-cv-wrapper .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.pt-cv-wrapper .btn-block{display:block;width:100%}.pt-cv-wrapper .btn-block+.btn-block{margin-top:5px}.pt-cv-wrapper input[type=button].btn-block,.pt-cv-wrapper input[type=reset].btn-block,.pt-cv-wrapper input[type=submit].btn-block{width:100%}.pt-cv-wrapper .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.pt-cv-wrapper .fade.in{opacity:1}.pt-cv-wrapper .collapse{display:none}.pt-cv-wrapper .collapse.in{display:block}.pt-cv-wrapper tr.collapse.in{display:table-row}.pt-cv-wrapper tbody.collapse.in{display:table-row-group}.pt-cv-wrapper .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.pt-cv-wrapper .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-right:4px solid transparent;border-left:4px solid transparent}.pt-cv-wrapper .dropdown,.pt-cv-wrapper .dropup{position:relative}.pt-cv-wrapper .dropdown-toggle:focus{outline:0}.pt-cv-wrapper .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);-webkit-background-clip:padding-box;background-clip:padding-box}.pt-cv-wrapper .dropdown-menu.pull-right{right:0;left:auto}.pt-cv-wrapper .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pt-cv-wrapper .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.pt-cv-wrapper .dropdown-menu>li>a:focus,.pt-cv-wrapper .dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.pt-cv-wrapper .dropdown-menu>.active>a,.pt-cv-wrapper .dropdown-menu>.active>a:focus,.pt-cv-wrapper .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.pt-cv-wrapper .dropdown-menu>.disabled>a,.pt-cv-wrapper .dropdown-menu>.disabled>a:focus,.pt-cv-wrapper .dropdown-menu>.disabled>a:hover{color:#777}.pt-cv-wrapper .dropdown-menu>.disabled>a:focus,.pt-cv-wrapper .dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.pt-cv-wrapper .open>.dropdown-menu{display:block}.pt-cv-wrapper .open>a{outline:0}.pt-cv-wrapper .dropdown-menu-right{left:auto;right:0}.pt-cv-wrapper .dropdown-menu-left{left:0;right:auto}.pt-cv-wrapper .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.pt-cv-wrapper .dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pt-cv-wrapper .pull-right>.dropdown-menu{right:0;left:auto}.pt-cv-wrapper .dropup .caret,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;content:""}.pt-cv-wrapper .dropup .dropdown-menu,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media(min-width:768px){.pt-cv-wrapper .navbar-right .dropdown-menu{left:auto;right:0}.pt-cv-wrapper .navbar-right .dropdown-menu-left{left:0;right:auto}}.pt-cv-wrapper .btn-group,.pt-cv-wrapper .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.pt-cv-wrapper .btn-group-vertical>.btn,.pt-cv-wrapper .btn-group>.btn{position:relative;float:left}.pt-cv-wrapper .btn-group-vertical>.btn.active,.pt-cv-wrapper .btn-group-vertical>.btn:active,.pt-cv-wrapper .btn-group-vertical>.btn:focus,.pt-cv-wrapper .btn-group-vertical>.btn:hover,.pt-cv-wrapper .btn-group>.btn.active,.pt-cv-wrapper .btn-group>.btn:active,.pt-cv-wrapper .btn-group>.btn:focus,.pt-cv-wrapper .btn-group>.btn:hover{z-index:2}.pt-cv-wrapper .btn-group .btn+.btn,.pt-cv-wrapper .btn-group .btn+.btn-group,.pt-cv-wrapper .btn-group .btn-group+.btn,.pt-cv-wrapper .btn-group .btn-group+.btn-group{margin-left:-1px}.pt-cv-wrapper .btn-toolbar{margin-left:-5px}.pt-cv-wrapper .btn-toolbar .btn,.pt-cv-wrapper .btn-toolbar .btn-group,.pt-cv-wrapper .btn-toolbar .input-group{float:left}.pt-cv-wrapper .btn-toolbar>.btn,.pt-cv-wrapper .btn-toolbar>.btn-group,.pt-cv-wrapper .btn-toolbar>.input-group{margin-left:5px}.pt-cv-wrapper .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.pt-cv-wrapper .btn-group>.btn:first-child{margin-left:0}.pt-cv-wrapper .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.pt-cv-wrapper .btn-group>.btn:last-child:not(:first-child),.pt-cv-wrapper .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group>.btn-group{float:left}.pt-cv-wrapper .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.pt-cv-wrapper .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group .dropdown-toggle:active,.pt-cv-wrapper .btn-group.open .dropdown-toggle{outline:0}.pt-cv-wrapper .btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.pt-cv-wrapper .btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.pt-cv-wrapper .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.pt-cv-wrapper .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.pt-cv-wrapper .btn .caret{margin-left:0}.pt-cv-wrapper .btn-lg .caret{border-width:5px 5px 0}.pt-cv-wrapper .dropup .btn-lg .caret{border-width:0 5px 5px}.pt-cv-wrapper .btn-group-vertical>.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{float:none}.pt-cv-wrapper .btn-group-vertical>.btn+.btn,.pt-cv-wrapper .btn-group-vertical>.btn+.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.pt-cv-wrapper .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.pt-cv-wrapper .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.pt-cv-wrapper .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.pt-cv-wrapper .btn-group-justified>.btn,.pt-cv-wrapper .btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.pt-cv-wrapper .btn-group-justified>.btn-group .btn{width:100%}.pt-cv-wrapper .btn-group-justified>.btn-group .dropdown-menu{left:auto}.pt-cv-wrapper [data-toggle=buttons]>.btn input[type=checkbox],.pt-cv-wrapper [data-toggle=buttons]>.btn input[type=radio],.pt-cv-wrapper [data-toggle=buttons]>.btn-group>.btn input[type=checkbox],.pt-cv-wrapper [data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.pt-cv-wrapper .nav{margin-bottom:0;padding-left:0;list-style:none}.pt-cv-wrapper .nav>li{position:relative;display:block}.pt-cv-wrapper .nav>li>a{position:relative;display:block;padding:10px 15px}.pt-cv-wrapper .nav>li>a:focus,.pt-cv-wrapper .nav>li>a:hover{text-decoration:none;background-color:#eee}.pt-cv-wrapper .nav>li.disabled>a{color:#777}.pt-cv-wrapper .nav>li.disabled>a:focus,.pt-cv-wrapper .nav>li.disabled>a:hover{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.pt-cv-wrapper .nav .open>a,.pt-cv-wrapper .nav .open>a:focus,.pt-cv-wrapper .nav .open>a:hover{background-color:#eee;border-color:#337ab7}.pt-cv-wrapper .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.pt-cv-wrapper .nav>li>a>img{max-width:none}.pt-cv-wrapper .nav-tabs{border-bottom:1px solid #ddd}.pt-cv-wrapper .nav-tabs>li{float:left;margin-bottom:-1px}.pt-cv-wrapper .nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.pt-cv-wrapper .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.pt-cv-wrapper .nav-tabs>li.active>a,.pt-cv-wrapper .nav-tabs>li.active>a:focus,.pt-cv-wrapper .nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.pt-cv-wrapper .nav-tabs.nav-justified{width:100%;border-bottom:0}.pt-cv-wrapper .nav-tabs.nav-justified>li{float:none}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.pt-cv-wrapper .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li{display:table-cell;width:1%}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-bottom:0}}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.pt-cv-wrapper .nav-pills>li{float:left}.pt-cv-wrapper .nav-pills>li>a{border-radius:4px}.pt-cv-wrapper .nav-pills>li+li{margin-left:2px}.pt-cv-wrapper .nav-pills>li.active>a,.pt-cv-wrapper .nav-pills>li.active>a:focus,.pt-cv-wrapper .nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.pt-cv-wrapper .nav-stacked>li{float:none}.pt-cv-wrapper .nav-stacked>li+li{margin-top:2px;margin-left:0}.pt-cv-wrapper .nav-justified{width:100%}.pt-cv-wrapper .nav-justified>li{float:none}.pt-cv-wrapper .nav-justified>li>a{text-align:center;margin-bottom:5px}.pt-cv-wrapper .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media(min-width:768px){.pt-cv-wrapper .nav-justified>li{display:table-cell;width:1%}.pt-cv-wrapper .nav-justified>li>a{margin-bottom:0}}.pt-cv-wrapper .nav-tabs-justified{border-bottom:0}.pt-cv-wrapper .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media(min-width:768px){.pt-cv-wrapper .nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.pt-cv-wrapper .tab-content>.tab-pane{display:none}.pt-cv-wrapper .tab-content>.active{display:block}.pt-cv-wrapper .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.pt-cv-wrapper .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pt-cv-wrapper .pagination>li{display:inline}.pt-cv-wrapper .pagination>li>a,.pt-cv-wrapper .pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pt-cv-wrapper .pagination>li:first-child>a,.pt-cv-wrapper .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pt-cv-wrapper .pagination>li:last-child>a,.pt-cv-wrapper .pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pt-cv-wrapper .pagination>li>a:focus,.pt-cv-wrapper .pagination>li>a:hover,.pt-cv-wrapper .pagination>li>span:focus,.pt-cv-wrapper .pagination>li>span:hover{z-index:3;color:#23527c;background-color:#eee;border-color:#ddd}.pt-cv-wrapper .pagination>.active>a,.pt-cv-wrapper .pagination>.active>a:focus,.pt-cv-wrapper .pagination>.active>a:hover,.pt-cv-wrapper .pagination>.active>span,.pt-cv-wrapper .pagination>.active>span:focus,.pt-cv-wrapper .pagination>.active>span:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pt-cv-wrapper .pagination>.disabled>a,.pt-cv-wrapper .pagination>.disabled>a:focus,.pt-cv-wrapper .pagination>.disabled>a:hover,.pt-cv-wrapper .pagination>.disabled>span,.pt-cv-wrapper .pagination>.disabled>span:focus,.pt-cv-wrapper .pagination>.disabled>span:hover{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pt-cv-wrapper .pagination-lg>li>a,.pt-cv-wrapper .pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pt-cv-wrapper .pagination-lg>li:first-child>a,.pt-cv-wrapper .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pt-cv-wrapper .pagination-lg>li:last-child>a,.pt-cv-wrapper .pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pt-cv-wrapper .pagination-sm>li>a,.pt-cv-wrapper .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pt-cv-wrapper .pagination-sm>li:first-child>a,.pt-cv-wrapper .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pt-cv-wrapper .pagination-sm>li:last-child>a,.pt-cv-wrapper .pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pt-cv-wrapper .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.pt-cv-wrapper .thumbnail a>img,.pt-cv-wrapper .thumbnail>img{margin-left:auto;margin-right:auto}.pt-cv-wrapper a.thumbnail.active,.pt-cv-wrapper a.thumbnail:focus,.pt-cv-wrapper a.thumbnail:hover{border-color:#337ab7}.pt-cv-wrapper .thumbnail .caption{padding:9px;color:#333}.pt-cv-wrapper .pt-cv-carousel{position:relative}.pt-cv-wrapper .carousel-inner{position:relative;overflow:hidden;width:100%}.pt-cv-wrapper .carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.pt-cv-wrapper .carousel-inner>.item>a>img,.pt-cv-wrapper .carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.pt-cv-wrapper .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.pt-cv-wrapper .carousel-inner>.item.active.right,.pt-cv-wrapper .carousel-inner>.item.next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}.pt-cv-wrapper .carousel-inner>.item.active.left,.pt-cv-wrapper .carousel-inner>.item.prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}.pt-cv-wrapper .carousel-inner>.item.active,.pt-cv-wrapper .carousel-inner>.item.next.left,.pt-cv-wrapper .carousel-inner>.item.prev.right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}.pt-cv-wrapper .carousel-inner>.active,.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{display:block}.pt-cv-wrapper .carousel-inner>.active{left:0}.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{position:absolute;top:0;width:100%}.pt-cv-wrapper .carousel-inner>.next{left:100%}.pt-cv-wrapper .carousel-inner>.prev{left:-100%}.pt-cv-wrapper .carousel-inner>.next.left,.pt-cv-wrapper .carousel-inner>.prev.right{left:0}.pt-cv-wrapper .carousel-inner>.active.left{left:-100%}.pt-cv-wrapper .carousel-inner>.active.right{left:100%}.pt-cv-wrapper .carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.pt-cv-wrapper .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.pt-cv-wrapper .carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.pt-cv-wrapper .carousel-control:focus,.pt-cv-wrapper .carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .icon-prev{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .icon-prev{left:50%;margin-left:-10px}.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next{right:50%;margin-right:-10px}.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .icon-prev{width:20px;height:20px;line-height:1;font-family:serif}.pt-cv-wrapper .carousel-control .icon-prev:before{content:'\2039'}.pt-cv-wrapper .carousel-control .icon-next:before{content:'\203a'}.pt-cv-wrapper .pt-cv-carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.pt-cv-wrapper .pt-cv-carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:transparent}.pt-cv-wrapper .pt-cv-carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.pt-cv-wrapper .pt-cv-carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.pt-cv-wrapper .pt-cv-carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .icon-prev{margin-left:-15px}.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next{margin-right:-15px}.pt-cv-wrapper .pt-cv-carousel-caption{left:20%;right:20%;padding-bottom:30px}.pt-cv-wrapper .pt-cv-carousel-indicators{bottom:20px}}.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .btn-group-vertical>.btn-group:before,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .btn-toolbar:before,.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .clearfix:before,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .container-fluid:before,.pt-cv-wrapper .container:after,.pt-cv-wrapper .container:before,.pt-cv-wrapper .nav:after,.pt-cv-wrapper .nav:before,.pt-cv-wrapper .row:after,.pt-cv-wrapper .row:before{content:" ";display:table}.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .container:after,.pt-cv-wrapper .nav:after,.pt-cv-wrapper .row:after{clear:both}.pt-cv-wrapper .center-block{display:block;margin-left:auto;margin-right:auto}.pt-cv-wrapper .pull-right{float:right!important}.pt-cv-wrapper .pull-left{float:left!important}.pt-cv-wrapper .hide{display:none!important}.pt-cv-wrapper .show{display:block!important}.pt-cv-wrapper .invisible{visibility:hidden}.pt-cv-wrapper .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.pt-cv-wrapper .hidden{display:none!important}.pt-cv-wrapper .affix{position:fixed}.pt-cv-wrapper .text-left{text-align:left}.pt-cv-wrapper .text-right{text-align:right}.pt-cv-wrapper .text-center{text-align:center}.pt-cv-wrapper .text-justify{text-align:justify}.pt-cv-wrapper .text-nowrap{white-space:nowrap}.pt-cv-wrapper .text-lowercase{text-transform:lowercase}.pt-cv-wrapper .text-uppercase{text-transform:uppercase}.pt-cv-wrapper .text-capitalize{text-transform:capitalize}.pt-cv-wrapper .text-muted{color:#777}.pt-cv-wrapper .text-primary{color:#428bca}.pt-cv-wrapper .h1,.pt-cv-wrapper .h2,.pt-cv-wrapper .h3,.pt-cv-wrapper .h4,.pt-cv-wrapper .h5,.pt-cv-wrapper .h6,.pt-cv-wrapper h1,.pt-cv-wrapper h2,.pt-cv-wrapper h3,.pt-cv-wrapper h4,.pt-cv-wrapper h5,.pt-cv-wrapper h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.pt-cv-view *,.pt-cv-view :after,.pt-cv-view :before{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.pt-cv-view{position:relative;clear:both}.pt-cv-view:after{clear:both;content:'';display:block}.pt-cv-page{position:relative}.pt-cv-gls-group{clear:left}.pt-cv-view strong,.pt-cv-view strong *{font-weight:600!important}.pt-cv-colsys{margin-left:-15px;margin-right:-15px}@media (min-width:992px){.pt-cv-colsys [data-cvc="11"] .col-md-1:nth-child(11n+1),.pt-cv-colsys [data-cvc="12"] .col-md-1:nth-child(12n+1),.pt-cv-colsys [data-cvc="2"] .col-md-6:nth-child(2n+1),.pt-cv-colsys [data-cvc="3"] .col-md-4:nth-child(3n+1),.pt-cv-colsys [data-cvc="4"] .col-md-3:nth-child(4n+1),.pt-cv-colsys [data-cvc="5"] .col-md-2:nth-child(5n+1),.pt-cv-colsys [data-cvc="6"] .col-md-2:nth-child(6n+1),.pt-cv-colsys [data-cvc="7"] .col-md-1:nth-child(7n+1),.pt-cv-colsys [data-cvc="8"] .col-md-1:nth-child(8n+1),.pt-cv-colsys [data-cvc="9"] .col-md-1:nth-child(9n+1),.pt-cv-colsys [data-cvc="10"] .col-md-1:nth-child(10n+1){clear:left!important}}@media (min-width:768px) and (max-width:991px){.pt-cv-colsys .col-sm-2:nth-child(5n+1),.pt-cv-colsys .col-sm-2:nth-child(6n+1),.pt-cv-colsys .col-sm-3:nth-child(4n+1),.pt-cv-colsys .col-sm-4:nth-child(3n+1),.pt-cv-colsys .col-sm-6:nth-child(2n+1){clear:left!important}}@media (max-width:767px){.pt-cv-colsys .col-xs-2:nth-child(5n+1),.pt-cv-colsys .col-xs-2:nth-child(6n+1),.pt-cv-colsys .col-xs-3:nth-child(4n+1),.pt-cv-colsys .col-xs-4:nth-child(3n+1),.pt-cv-colsys .col-xs-6:nth-child(2n+1){clear:left!important}}@media (min-width:992px){.pt-cv-colsys [data-cvc="5"] .pt-cv-content-item{width:20%}.pt-cv-colsys [data-cvc="7"] .pt-cv-content-item{width:14.28571428%}.pt-cv-colsys [data-cvc="8"] .pt-cv-content-item{width:12.5%}.pt-cv-colsys [data-cvc="9"] .pt-cv-content-item{width:11.11111111%}.pt-cv-colsys [data-cvc="10"] .pt-cv-content-item{width:10%}.pt-cv-colsys [data-cvc="11"] .pt-cv-content-item{width:9.09090909%}}.pt-cv-colsys .pt-cv-content-item{flex:none;max-width:initial}.pt-cv-view a,.pt-cv-wrapper .btn{text-decoration:none!important;outline:0!important;font-style:normal}.pt-cv-view a{pointer-events:auto}.pt-cv-readmore{color:#fff;margin:10px 0;max-width:100%}.pt-cv-content-item{padding-bottom:15px;position:relative;overflow:hidden}.pt-cv-ifield>*,.pt-cv-view .pt-cv-content-item>*{margin-bottom:10px}.pt-cv-collapsible .pt-cv-content-item>*{margin-bottom:0!important}.pt-cv-title{margin-top:0!important}h4.pt-cv-title{font-size:18px}.pt-cv-view .pt-cv-title{margin-bottom:10px}.pt-cv-title a{font-weight:600}.pt-cv-thumbnail{height:auto;max-width:100%!important;margin-top:0!important;margin-bottom:10px!important;min-width:inherit!important}.pt-cv-thumbnail.pull-left{margin-right:15px!important}.pt-cv-thumbnail.pull-right{margin-left:15px}.pt-cv-no-image{min-width:80px;min-height:80px}.pt-cv-content,.pt-cv-content *{font-weight:400}.pt-cv-meta-fields{font-size:13px;margin-top:0}.pt-cv-meta-fields a{color:#41b7d8}.pt-cv-pagination-wrapper{margin:20px 0}.pt-cv-view+.pagination{float:left;margin:0 auto!important}.pt-cv-view+.pagination>li{background:0 0!important}.pt-cv-view+.pagination>li>a{cursor:pointer}.pt-cv-spinner{width:15px!important;height:15px!important;margin-top:-25px;display:inline-block;opacity:0;filter:alpha(opacity=0);color:#0470ec;-webkit-transition:opacity .25s,width .25s;-moz-transition:opacity .25s,width .25s;-o-transition:opacity .25s,width .25s;transition:opacity .25s,width .25s}.pt-cv-spinner.active{opacity:1;filter:alpha(opacity=100)}.pt-cv-clear-pagination{margin-bottom:50px}.pt-cv-pagination-wrapper{clear:both;position:relative}.pt-cv-pagination-wrapper .pt-cv-pagination.pagination{-webkit-box-shadow:none!important;box-shadow:none!important;border:0;padding:0;margin:initial;min-height:initial;width:auto;display:inline-block}.pt-cv-pagination li{display:inline!important;background-image:none!important}.pt-cv-pagination li:after,.pt-cv-pagination li:before{content:none!important}.pt-cv-pagination a{cursor:pointer}.pt-cv-pagination li.active a{border-color:rgba(66,139,202,.2)!important}.pt-cv-pagination li a[href="#"]{pointer-events:none}.pt-cv-collapsible .panel{display:block}.pt-cv-collapsible .panel-heading{padding:0}.pt-cv-collapsible .panel-heading a{display:block;padding:10px 15px}.pt-cv-collapsible .panel-body{padding:10px}.pt-cv-view .collapse{display:none;visibility:hidden}.pt-cv-view .collapse.in{display:block;visibility:visible;overflow:auto}.pt-cv-collapsible .panel-heading br{display:none}.pt-cv-scrollable{margin-left:0;margin-right:0}.pt-cv-scrollable .pt-cv-carousel-caption{text-align:left;bottom:15px;padding:10px}.pt-cv-scrollable .pt-cv-carousel-caption *{text-shadow:none}.pt-cv-scrollable .pt-cv-title{padding-bottom:0}.pt-cv-scrollable .pt-cv-carousel-caption{margin-bottom:10px!important}.pt-cv-scrollable .pt-cv-thumbnail{width:100%}.pt-cv-carousel-caption:empty{display:none}.pt-cv-scrollable .pt-cv-carousel .item{height:auto;margin:auto;min-height:0;max-height:none;line-height:normal}.pt-cv-scrollable .pt-cv-cap-w-img{background:rgba(0,0,0,.6);text-shadow:0 1px 1px #000;left:15px;right:15px}.pt-cv-cap-w-img *{color:#fff}.pt-cv-cap-w-img .pt-cv-title a{color:#fff!important}.pt-cv-scrollable .pt-cv-cap-wo-img{position:relative!important;bottom:0!important;left:0;right:0}.pt-cv-cap-wo-img *{color:#000}.pt-cv-cap-wo-img .pt-cv-readmore{color:#fff}.pt-cv-view .carousel-control{background-image:none!important;height:30px;width:40px;bottom:0;top:auto;color:#00A100;cursor:pointer}.pt-cv-view .pt-cv-carousel-indicators{bottom:0;margin-bottom:4px}.pt-cv-view .pt-cv-carousel-indicators li{background:#cecece;border:1px solid #cecece;margin:0}.pt-cv-view .pt-cv-carousel-indicators li.active{background:#428bca;border:1px solid #428bca}.pt-cv-2-col .pt-cv-title{clear:none!important}@media (min-width:480px){.pt-cv-2-col .pt-cv-colwrap{display:table;word-break:break-word}}@media (max-width:479px){.pt-cv-2-col .pt-cv-colwrap{clear:both}}.pt-cv-view .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.pt-cv-view .panel-default{border-color:#ddd;padding-bottom:0}.pt-cv-view .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.pt-cv-pagination:after,.pt-cv-pagination:before{content:none!important}.pt-cv-wrapper [class*=pt-cv-] a{box-shadow:none}.pt-cv-view p:empty{display:none}.pt-cv-view .pt-cv-ifield{margin-bottom:0!important}@media (max-width:480px){.pt-cv-nolf .pt-cv-2-col .pt-cv-thumbnail{float:none!important;margin:0}}@media print{.pt-cv-view a[href]:after{content:none!important}.pt-cv-view .collapse{display:block!important;height:auto!important;visibility:visible!important}}
|
public/assets/css/cv.im.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
-
/*!
|
2 |
-
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
3 |
-
* Copyright 2011-2015 Twitter, Inc.
|
4 |
-
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
-
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.pt-cv-wrapper article,.pt-cv-wrapper aside,.pt-cv-wrapper details,.pt-cv-wrapper figcaption,.pt-cv-wrapper footer,.pt-cv-wrapper header,.pt-cv-wrapper hgroup,.pt-cv-wrapper main,.pt-cv-wrapper menu,.pt-cv-wrapper nav,.pt-cv-wrapper section,.pt-cv-wrapper summary{display:block!important}.pt-cv-wrapper audio,.pt-cv-wrapper canvas,.pt-cv-wrapper progress,.pt-cv-wrapper video{display:inline-block!important;vertical-align:baseline!important}.pt-cv-wrapper audio:not([controls]){display:none!important;height:0!important}.pt-cv-wrapper [hidden],.pt-cv-wrapper template{display:none!important}.pt-cv-wrapper a{background-color:transparent!important}.pt-cv-wrapper a:active,.pt-cv-wrapper a:hover{outline:0!important}.pt-cv-wrapper abbr[title]{border-bottom:1px dotted!important}.pt-cv-wrapper b,.pt-cv-wrapper strong{font-weight:bold!important}.pt-cv-wrapper dfn{font-style:italic!important}.pt-cv-wrapper h1{margin:.67em 0!important}.pt-cv-wrapper mark{background:#ff0!important;color:#000!important}.pt-cv-wrapper small{font-size:80%!important}.pt-cv-wrapper sub,.pt-cv-wrapper sup{font-size:75%!important;line-height:0!important;position:relative!important;vertical-align:baseline!important}.pt-cv-wrapper sup{top:-0.5em!important}.pt-cv-wrapper sub{bottom:-0.25em!important}.pt-cv-wrapper img{border:0!important}.pt-cv-wrapper svg:not(:root){overflow:hidden!important}.pt-cv-wrapper hr{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important;height:0!important}.pt-cv-wrapper pre{overflow:auto!important}.pt-cv-wrapper code,.pt-cv-wrapper kbd,.pt-cv-wrapper pre,.pt-cv-wrapper samp{font-family:monospace,monospace!important;font-size:1em!important}.pt-cv-wrapper button,.pt-cv-wrapper input,.pt-cv-wrapper optgroup,.pt-cv-wrapper select,.pt-cv-wrapper textarea{color:inherit!important;font:inherit!important;margin:0!important}.pt-cv-wrapper button{overflow:visible!important}.pt-cv-wrapper button,.pt-cv-wrapper select{text-transform:none!important}.pt-cv-wrapper button,.pt-cv-wrapper html input[type="button"],.pt-cv-wrapper input[type="reset"],.pt-cv-wrapper input[type="submit"]{-webkit-appearance:button!important;cursor:pointer!important}.pt-cv-wrapper button[disabled],.pt-cv-wrapper html input[disabled]{cursor:default!important}.pt-cv-wrapper button::-moz-focus-inner,.pt-cv-wrapper input::-moz-focus-inner{border:0!important;padding:0!important}.pt-cv-wrapper input{line-height:normal!important}.pt-cv-wrapper input[type="checkbox"],.pt-cv-wrapper input[type="radio"]{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important;padding:0!important}.pt-cv-wrapper input[type="number"]::-webkit-inner-spin-button,.pt-cv-wrapper input[type="number"]::-webkit-outer-spin-button{height:auto!important}.pt-cv-wrapper input[type="search"]{-webkit-appearance:textfield!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.pt-cv-wrapper input[type="search"]::-webkit-search-cancel-button,.pt-cv-wrapper input[type="search"]::-webkit-search-decoration{-webkit-appearance:none!important}.pt-cv-wrapper fieldset{border:1px solid #c0c0c0!important;margin:0 2px!important;padding:.35em .625em .75em!important}.pt-cv-wrapper legend{border:0!important;padding:0!important}.pt-cv-wrapper textarea{overflow:auto!important}.pt-cv-wrapper optgroup{font-weight:bold!important}.pt-cv-wrapper table{border-collapse:collapse!important;border-spacing:0!important}.pt-cv-wrapper td,.pt-cv-wrapper th{padding:0!important}@media print{.pt-cv-wrapper *,.pt-cv-wrapper *:before,.pt-cv-wrapper *:after{background:transparent!important;color:#000!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}.pt-cv-wrapper a,.pt-cv-wrapper a:visited{text-decoration:underline!important}.pt-cv-wrapper a[href]:after{content:" (" attr(href) ")"!important}.pt-cv-wrapper abbr[title]:after{content:" (" attr(title) ")"!important}.pt-cv-wrapper a[href^="#"]:after,.pt-cv-wrapper a[href^="javascript:"]:after{content:""!important}.pt-cv-wrapper pre,.pt-cv-wrapper blockquote{border:1px solid #999!important;page-break-inside:avoid!important}.pt-cv-wrapper thead{display:table-header-group!important}.pt-cv-wrapper tr,.pt-cv-wrapper img{page-break-inside:avoid!important}.pt-cv-wrapper img{max-width:100%!important}.pt-cv-wrapper p,.pt-cv-wrapper h2,.pt-cv-wrapper h3{orphans:3!important;widows:3!important}.pt-cv-wrapper h2,.pt-cv-wrapper h3{page-break-after:avoid!important}.pt-cv-wrapper .navbar{display:none!important}.pt-cv-wrapper .btn>.caret,.pt-cv-wrapper .dropup>.btn>.caret{border-top-color:#000!important}.pt-cv-wrapper .label{border:1px solid #000!important}.pt-cv-wrapper .table{border-collapse:collapse!important}.pt-cv-wrapper .table td,.pt-cv-wrapper .table th{background-color:#fff!important}.pt-cv-wrapper .table-bordered th,.pt-cv-wrapper .table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.pt-cv-wrapper .glyphicon{position:relative!important;top:1px!important;display:inline-block!important;font-family:'Glyphicons Halflings'!important;font-style:normal!important;font-weight:normal!important;line-height:1!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.pt-cv-wrapper .glyphicon-asterisk:before{content:"\2a"!important}.pt-cv-wrapper .glyphicon-plus:before{content:"\2b"!important}.pt-cv-wrapper .glyphicon-euro:before,.pt-cv-wrapper .glyphicon-eur:before{content:"\20ac"!important}.pt-cv-wrapper .glyphicon-minus:before{content:"\2212"!important}.pt-cv-wrapper .glyphicon-cloud:before{content:"\2601"!important}.pt-cv-wrapper .glyphicon-envelope:before{content:"\2709"!important}.pt-cv-wrapper .glyphicon-pencil:before{content:"\270f"!important}.pt-cv-wrapper .glyphicon-glass:before{content:"\e001"!important}.pt-cv-wrapper .glyphicon-music:before{content:"\e002"!important}.pt-cv-wrapper .glyphicon-search:before{content:"\e003"!important}.pt-cv-wrapper .glyphicon-heart:before{content:"\e005"!important}.pt-cv-wrapper .glyphicon-star:before{content:"\e006"!important}.pt-cv-wrapper .glyphicon-star-empty:before{content:"\e007"!important}.pt-cv-wrapper .glyphicon-user:before{content:"\e008"!important}.pt-cv-wrapper .glyphicon-film:before{content:"\e009"!important}.pt-cv-wrapper .glyphicon-th-large:before{content:"\e010"!important}.pt-cv-wrapper .glyphicon-th:before{content:"\e011"!important}.pt-cv-wrapper .glyphicon-th-list:before{content:"\e012"!important}.pt-cv-wrapper .glyphicon-ok:before{content:"\e013"!important}.pt-cv-wrapper .glyphicon-remove:before{content:"\e014"!important}.pt-cv-wrapper .glyphicon-zoom-in:before{content:"\e015"!important}.pt-cv-wrapper .glyphicon-zoom-out:before{content:"\e016"!important}.pt-cv-wrapper .glyphicon-off:before{content:"\e017"!important}.pt-cv-wrapper .glyphicon-signal:before{content:"\e018"!important}.pt-cv-wrapper .glyphicon-cog:before{content:"\e019"!important}.pt-cv-wrapper .glyphicon-trash:before{content:"\e020"!important}.pt-cv-wrapper .glyphicon-home:before{content:"\e021"!important}.pt-cv-wrapper .glyphicon-file:before{content:"\e022"!important}.pt-cv-wrapper .glyphicon-time:before{content:"\e023"!important}.pt-cv-wrapper .glyphicon-road:before{content:"\e024"!important}.pt-cv-wrapper .glyphicon-download-alt:before{content:"\e025"!important}.pt-cv-wrapper .glyphicon-download:before{content:"\e026"!important}.pt-cv-wrapper .glyphicon-upload:before{content:"\e027"!important}.pt-cv-wrapper .glyphicon-inbox:before{content:"\e028"!important}.pt-cv-wrapper .glyphicon-play-circle:before{content:"\e029"!important}.pt-cv-wrapper .glyphicon-repeat:before{content:"\e030"!important}.pt-cv-wrapper .glyphicon-refresh:before{content:"\e031"!important}.pt-cv-wrapper .glyphicon-list-alt:before{content:"\e032"!important}.pt-cv-wrapper .glyphicon-lock:before{content:"\e033"!important}.pt-cv-wrapper .glyphicon-flag:before{content:"\e034"!important}.pt-cv-wrapper .glyphicon-headphones:before{content:"\e035"!important}.pt-cv-wrapper .glyphicon-volume-off:before{content:"\e036"!important}.pt-cv-wrapper .glyphicon-volume-down:before{content:"\e037"!important}.pt-cv-wrapper .glyphicon-volume-up:before{content:"\e038"!important}.pt-cv-wrapper .glyphicon-qrcode:before{content:"\e039"!important}.pt-cv-wrapper .glyphicon-barcode:before{content:"\e040"!important}.pt-cv-wrapper .glyphicon-tag:before{content:"\e041"!important}.pt-cv-wrapper .glyphicon-tags:before{content:"\e042"!important}.pt-cv-wrapper .glyphicon-book:before{content:"\e043"!important}.pt-cv-wrapper .glyphicon-bookmark:before{content:"\e044"!important}.pt-cv-wrapper .glyphicon-print:before{content:"\e045"!important}.pt-cv-wrapper .glyphicon-camera:before{content:"\e046"!important}.pt-cv-wrapper .glyphicon-font:before{content:"\e047"!important}.pt-cv-wrapper .glyphicon-bold:before{content:"\e048"!important}.pt-cv-wrapper .glyphicon-italic:before{content:"\e049"!important}.pt-cv-wrapper .glyphicon-text-height:before{content:"\e050"!important}.pt-cv-wrapper .glyphicon-text-width:before{content:"\e051"!important}.pt-cv-wrapper .glyphicon-align-left:before{content:"\e052"!important}.pt-cv-wrapper .glyphicon-align-center:before{content:"\e053"!important}.pt-cv-wrapper .glyphicon-align-right:before{content:"\e054"!important}.pt-cv-wrapper .glyphicon-align-justify:before{content:"\e055"!important}.pt-cv-wrapper .glyphicon-list:before{content:"\e056"!important}.pt-cv-wrapper .glyphicon-indent-left:before{content:"\e057"!important}.pt-cv-wrapper .glyphicon-indent-right:before{content:"\e058"!important}.pt-cv-wrapper .glyphicon-facetime-video:before{content:"\e059"!important}.pt-cv-wrapper .glyphicon-picture:before{content:"\e060"!important}.pt-cv-wrapper .glyphicon-map-marker:before{content:"\e062"!important}.pt-cv-wrapper .glyphicon-adjust:before{content:"\e063"!important}.pt-cv-wrapper .glyphicon-tint:before{content:"\e064"!important}.pt-cv-wrapper .glyphicon-edit:before{content:"\e065"!important}.pt-cv-wrapper .glyphicon-share:before{content:"\e066"!important}.pt-cv-wrapper .glyphicon-check:before{content:"\e067"!important}.pt-cv-wrapper .glyphicon-move:before{content:"\e068"!important}.pt-cv-wrapper .glyphicon-step-backward:before{content:"\e069"!important}.pt-cv-wrapper .glyphicon-fast-backward:before{content:"\e070"!important}.pt-cv-wrapper .glyphicon-backward:before{content:"\e071"!important}.pt-cv-wrapper .glyphicon-play:before{content:"\e072"!important}.pt-cv-wrapper .glyphicon-pause:before{content:"\e073"!important}.pt-cv-wrapper .glyphicon-stop:before{content:"\e074"!important}.pt-cv-wrapper .glyphicon-forward:before{content:"\e075"!important}.pt-cv-wrapper .glyphicon-fast-forward:before{content:"\e076"!important}.pt-cv-wrapper .glyphicon-step-forward:before{content:"\e077"!important}.pt-cv-wrapper .glyphicon-eject:before{content:"\e078"!important}.pt-cv-wrapper .glyphicon-chevron-left:before{content:"\e079"!important}.pt-cv-wrapper .glyphicon-chevron-right:before{content:"\e080"!important}.pt-cv-wrapper .glyphicon-plus-sign:before{content:"\e081"!important}.pt-cv-wrapper .glyphicon-minus-sign:before{content:"\e082"!important}.pt-cv-wrapper .glyphicon-remove-sign:before{content:"\e083"!important}.pt-cv-wrapper .glyphicon-ok-sign:before{content:"\e084"!important}.pt-cv-wrapper .glyphicon-question-sign:before{content:"\e085"!important}.pt-cv-wrapper .glyphicon-info-sign:before{content:"\e086"!important}.pt-cv-wrapper .glyphicon-screenshot:before{content:"\e087"!important}.pt-cv-wrapper .glyphicon-remove-circle:before{content:"\e088"!important}.pt-cv-wrapper .glyphicon-ok-circle:before{content:"\e089"!important}.pt-cv-wrapper .glyphicon-ban-circle:before{content:"\e090"!important}.pt-cv-wrapper .glyphicon-arrow-left:before{content:"\e091"!important}.pt-cv-wrapper .glyphicon-arrow-right:before{content:"\e092"!important}.pt-cv-wrapper .glyphicon-arrow-up:before{content:"\e093"!important}.pt-cv-wrapper .glyphicon-arrow-down:before{content:"\e094"!important}.pt-cv-wrapper .glyphicon-share-alt:before{content:"\e095"!important}.pt-cv-wrapper .glyphicon-resize-full:before{content:"\e096"!important}.pt-cv-wrapper .glyphicon-resize-small:before{content:"\e097"!important}.pt-cv-wrapper .glyphicon-exclamation-sign:before{content:"\e101"!important}.pt-cv-wrapper .glyphicon-gift:before{content:"\e102"!important}.pt-cv-wrapper .glyphicon-leaf:before{content:"\e103"!important}.pt-cv-wrapper .glyphicon-fire:before{content:"\e104"!important}.pt-cv-wrapper .glyphicon-eye-open:before{content:"\e105"!important}.pt-cv-wrapper .glyphicon-eye-close:before{content:"\e106"!important}.pt-cv-wrapper .glyphicon-warning-sign:before{content:"\e107"!important}.pt-cv-wrapper .glyphicon-plane:before{content:"\e108"!important}.pt-cv-wrapper .glyphicon-calendar:before{content:"\e109"!important}.pt-cv-wrapper .glyphicon-random:before{content:"\e110"!important}.pt-cv-wrapper .glyphicon-comment:before{content:"\e111"!important}.pt-cv-wrapper .glyphicon-magnet:before{content:"\e112"!important}.pt-cv-wrapper .glyphicon-chevron-up:before{content:"\e113"!important}.pt-cv-wrapper .glyphicon-chevron-down:before{content:"\e114"!important}.pt-cv-wrapper .glyphicon-retweet:before{content:"\e115"!important}.pt-cv-wrapper .glyphicon-shopping-cart:before{content:"\e116"!important}.pt-cv-wrapper .glyphicon-folder-close:before{content:"\e117"!important}.pt-cv-wrapper .glyphicon-folder-open:before{content:"\e118"!important}.pt-cv-wrapper .glyphicon-resize-vertical:before{content:"\e119"!important}.pt-cv-wrapper .glyphicon-resize-horizontal:before{content:"\e120"!important}.pt-cv-wrapper .glyphicon-hdd:before{content:"\e121"!important}.pt-cv-wrapper .glyphicon-bullhorn:before{content:"\e122"!important}.pt-cv-wrapper .glyphicon-bell:before{content:"\e123"!important}.pt-cv-wrapper .glyphicon-certificate:before{content:"\e124"!important}.pt-cv-wrapper .glyphicon-thumbs-up:before{content:"\e125"!important}.pt-cv-wrapper .glyphicon-thumbs-down:before{content:"\e126"!important}.pt-cv-wrapper .glyphicon-hand-right:before{content:"\e127"!important}.pt-cv-wrapper .glyphicon-hand-left:before{content:"\e128"!important}.pt-cv-wrapper .glyphicon-hand-up:before{content:"\e129"!important}.pt-cv-wrapper .glyphicon-hand-down:before{content:"\e130"!important}.pt-cv-wrapper .glyphicon-circle-arrow-right:before{content:"\e131"!important}.pt-cv-wrapper .glyphicon-circle-arrow-left:before{content:"\e132"!important}.pt-cv-wrapper .glyphicon-circle-arrow-up:before{content:"\e133"!important}.pt-cv-wrapper .glyphicon-circle-arrow-down:before{content:"\e134"!important}.pt-cv-wrapper .glyphicon-globe:before{content:"\e135"!important}.pt-cv-wrapper .glyphicon-wrench:before{content:"\e136"!important}.pt-cv-wrapper .glyphicon-tasks:before{content:"\e137"!important}.pt-cv-wrapper .glyphicon-filter:before{content:"\e138"!important}.pt-cv-wrapper .glyphicon-briefcase:before{content:"\e139"!important}.pt-cv-wrapper .glyphicon-fullscreen:before{content:"\e140"!important}.pt-cv-wrapper .glyphicon-dashboard:before{content:"\e141"!important}.pt-cv-wrapper .glyphicon-paperclip:before{content:"\e142"!important}.pt-cv-wrapper .glyphicon-heart-empty:before{content:"\e143"!important}.pt-cv-wrapper .glyphicon-link:before{content:"\e144"!important}.pt-cv-wrapper .glyphicon-phone:before{content:"\e145"!important}.pt-cv-wrapper .glyphicon-pushpin:before{content:"\e146"!important}.pt-cv-wrapper .glyphicon-usd:before{content:"\e148"!important}.pt-cv-wrapper .glyphicon-gbp:before{content:"\e149"!important}.pt-cv-wrapper .glyphicon-sort:before{content:"\e150"!important}.pt-cv-wrapper .glyphicon-sort-by-alphabet:before{content:"\e151"!important}.pt-cv-wrapper .glyphicon-sort-by-alphabet-alt:before{content:"\e152"!important}.pt-cv-wrapper .glyphicon-sort-by-order:before{content:"\e153"!important}.pt-cv-wrapper .glyphicon-sort-by-order-alt:before{content:"\e154"!important}.pt-cv-wrapper .glyphicon-sort-by-attributes:before{content:"\e155"!important}.pt-cv-wrapper .glyphicon-sort-by-attributes-alt:before{content:"\e156"!important}.pt-cv-wrapper .glyphicon-unchecked:before{content:"\e157"!important}.pt-cv-wrapper .glyphicon-expand:before{content:"\e158"!important}.pt-cv-wrapper .glyphicon-collapse-down:before{content:"\e159"!important}.pt-cv-wrapper .glyphicon-collapse-up:before{content:"\e160"!important}.pt-cv-wrapper .glyphicon-log-in:before{content:"\e161"!important}.pt-cv-wrapper .glyphicon-flash:before{content:"\e162"!important}.pt-cv-wrapper .glyphicon-log-out:before{content:"\e163"!important}.pt-cv-wrapper .glyphicon-new-window:before{content:"\e164"!important}.pt-cv-wrapper .glyphicon-record:before{content:"\e165"!important}.pt-cv-wrapper .glyphicon-save:before{content:"\e166"!important}.pt-cv-wrapper .glyphicon-open:before{content:"\e167"!important}.pt-cv-wrapper .glyphicon-saved:before{content:"\e168"!important}.pt-cv-wrapper .glyphicon-import:before{content:"\e169"!important}.pt-cv-wrapper .glyphicon-export:before{content:"\e170"!important}.pt-cv-wrapper .glyphicon-send:before{content:"\e171"!important}.pt-cv-wrapper .glyphicon-floppy-disk:before{content:"\e172"!important}.pt-cv-wrapper .glyphicon-floppy-saved:before{content:"\e173"!important}.pt-cv-wrapper .glyphicon-floppy-remove:before{content:"\e174"!important}.pt-cv-wrapper .glyphicon-floppy-save:before{content:"\e175"!important}.pt-cv-wrapper .glyphicon-floppy-open:before{content:"\e176"!important}.pt-cv-wrapper .glyphicon-credit-card:before{content:"\e177"!important}.pt-cv-wrapper .glyphicon-transfer:before{content:"\e178"!important}.pt-cv-wrapper .glyphicon-cutlery:before{content:"\e179"!important}.pt-cv-wrapper .glyphicon-header:before{content:"\e180"!important}.pt-cv-wrapper .glyphicon-compressed:before{content:"\e181"!important}.pt-cv-wrapper .glyphicon-earphone:before{content:"\e182"!important}.pt-cv-wrapper .glyphicon-phone-alt:before{content:"\e183"!important}.pt-cv-wrapper .glyphicon-tower:before{content:"\e184"!important}.pt-cv-wrapper .glyphicon-stats:before{content:"\e185"!important}.pt-cv-wrapper .glyphicon-sd-video:before{content:"\e186"!important}.pt-cv-wrapper .glyphicon-hd-video:before{content:"\e187"!important}.pt-cv-wrapper .glyphicon-subtitles:before{content:"\e188"!important}.pt-cv-wrapper .glyphicon-sound-stereo:before{content:"\e189"!important}.pt-cv-wrapper .glyphicon-sound-dolby:before{content:"\e190"!important}.pt-cv-wrapper .glyphicon-sound-5-1:before{content:"\e191"!important}.pt-cv-wrapper .glyphicon-sound-6-1:before{content:"\e192"!important}.pt-cv-wrapper .glyphicon-sound-7-1:before{content:"\e193"!important}.pt-cv-wrapper .glyphicon-copyright-mark:before{content:"\e194"!important}.pt-cv-wrapper .glyphicon-registration-mark:before{content:"\e195"!important}.pt-cv-wrapper .glyphicon-cloud-download:before{content:"\e197"!important}.pt-cv-wrapper .glyphicon-cloud-upload:before{content:"\e198"!important}.pt-cv-wrapper .glyphicon-tree-conifer:before{content:"\e199"!important}.pt-cv-wrapper .glyphicon-tree-deciduous:before{content:"\e200"!important}.pt-cv-wrapper .glyphicon-cd:before{content:"\e201"!important}.pt-cv-wrapper .glyphicon-save-file:before{content:"\e202"!important}.pt-cv-wrapper .glyphicon-open-file:before{content:"\e203"!important}.pt-cv-wrapper .glyphicon-level-up:before{content:"\e204"!important}.pt-cv-wrapper .glyphicon-copy:before{content:"\e205"!important}.pt-cv-wrapper .glyphicon-paste:before{content:"\e206"!important}.pt-cv-wrapper .glyphicon-alert:before{content:"\e209"!important}.pt-cv-wrapper .glyphicon-equalizer:before{content:"\e210"!important}.pt-cv-wrapper .glyphicon-king:before{content:"\e211"!important}.pt-cv-wrapper .glyphicon-queen:before{content:"\e212"!important}.pt-cv-wrapper .glyphicon-pawn:before{content:"\e213"!important}.pt-cv-wrapper .glyphicon-bishop:before{content:"\e214"!important}.pt-cv-wrapper .glyphicon-knight:before{content:"\e215"!important}.pt-cv-wrapper .glyphicon-baby-formula:before{content:"\e216"!important}.pt-cv-wrapper .glyphicon-tent:before{content:"\26fa"!important}.pt-cv-wrapper .glyphicon-blackboard:before{content:"\e218"!important}.pt-cv-wrapper .glyphicon-bed:before{content:"\e219"!important}.pt-cv-wrapper .glyphicon-apple:before{content:"\f8ff"!important}.pt-cv-wrapper .glyphicon-erase:before{content:"\e221"!important}.pt-cv-wrapper .glyphicon-hourglass:before{content:"\231b"!important}.pt-cv-wrapper .glyphicon-lamp:before{content:"\e223"!important}.pt-cv-wrapper .glyphicon-duplicate:before{content:"\e224"!important}.pt-cv-wrapper .glyphicon-piggy-bank:before{content:"\e225"!important}.pt-cv-wrapper .glyphicon-scissors:before{content:"\e226"!important}.pt-cv-wrapper .glyphicon-bitcoin:before{content:"\e227"!important}.pt-cv-wrapper .glyphicon-btc:before{content:"\e227"!important}.pt-cv-wrapper .glyphicon-xbt:before{content:"\e227"!important}.pt-cv-wrapper .glyphicon-yen:before{content:"\00a5"!important}.pt-cv-wrapper .glyphicon-jpy:before{content:"\00a5"!important}.pt-cv-wrapper .glyphicon-ruble:before{content:"\20bd"!important}.pt-cv-wrapper .glyphicon-rub:before{content:"\20bd"!important}.pt-cv-wrapper .glyphicon-scale:before{content:"\e230"!important}.pt-cv-wrapper .glyphicon-ice-lolly:before{content:"\e231"!important}.pt-cv-wrapper .glyphicon-ice-lolly-tasted:before{content:"\e232"!important}.pt-cv-wrapper .glyphicon-education:before{content:"\e233"!important}.pt-cv-wrapper .glyphicon-option-horizontal:before{content:"\e234"!important}.pt-cv-wrapper .glyphicon-option-vertical:before{content:"\e235"!important}.pt-cv-wrapper .glyphicon-menu-hamburger:before{content:"\e236"!important}.pt-cv-wrapper .glyphicon-modal-window:before{content:"\e237"!important}.pt-cv-wrapper .glyphicon-oil:before{content:"\e238"!important}.pt-cv-wrapper .glyphicon-grain:before{content:"\e239"!important}.pt-cv-wrapper .glyphicon-sunglasses:before{content:"\e240"!important}.pt-cv-wrapper .glyphicon-text-size:before{content:"\e241"!important}.pt-cv-wrapper .glyphicon-text-color:before{content:"\e242"!important}.pt-cv-wrapper .glyphicon-text-background:before{content:"\e243"!important}.pt-cv-wrapper .glyphicon-object-align-top:before{content:"\e244"!important}.pt-cv-wrapper .glyphicon-object-align-bottom:before{content:"\e245"!important}.pt-cv-wrapper .glyphicon-object-align-horizontal:before{content:"\e246"!important}.pt-cv-wrapper .glyphicon-object-align-left:before{content:"\e247"!important}.pt-cv-wrapper .glyphicon-object-align-vertical:before{content:"\e248"!important}.pt-cv-wrapper .glyphicon-object-align-right:before{content:"\e249"!important}.pt-cv-wrapper .glyphicon-triangle-right:before{content:"\e250"!important}.pt-cv-wrapper .glyphicon-triangle-left:before{content:"\e251"!important}.pt-cv-wrapper .glyphicon-triangle-bottom:before{content:"\e252"!important}.pt-cv-wrapper .glyphicon-triangle-top:before{content:"\e253"!important}.pt-cv-wrapper .glyphicon-console:before{content:"\e254"!important}.pt-cv-wrapper .glyphicon-superscript:before{content:"\e255"!important}.pt-cv-wrapper .glyphicon-subscript:before{content:"\e256"!important}.pt-cv-wrapper .glyphicon-menu-left:before{content:"\e257"!important}.pt-cv-wrapper .glyphicon-menu-right:before{content:"\e258"!important}.pt-cv-wrapper .glyphicon-menu-down:before{content:"\e259"!important}.pt-cv-wrapper .glyphicon-menu-up:before{content:"\e260"!important}.pt-cv-wrapper img{vertical-align:middle!important}.pt-cv-wrapper .img-responsive,.pt-cv-wrapper .thumbnail>img,.pt-cv-wrapper .thumbnail a>img,.pt-cv-wrapper .carousel-inner>.item>img,.pt-cv-wrapper .carousel-inner>.item>a>img{display:block!important;max-width:100%!important;height:auto!important}.pt-cv-wrapper .img-rounded{border-radius:6px!important}.pt-cv-wrapper .img-thumbnail{padding:4px!important;line-height:1.42857143!important;background-color:#fff!important;border:1px solid #ddd!important;border-radius:4px!important;-webkit-transition:all .2s ease-in-out!important;-o-transition:all .2s ease-in-out!important;transition:all .2s ease-in-out!important;display:inline-block!important;max-width:100%!important;height:auto!important}.pt-cv-wrapper .img-circle{border-radius:50%!important}.pt-cv-wrapper hr{margin-top:20px!important;margin-bottom:20px!important;border:0!important;border-top:1px solid #eee!important}.pt-cv-wrapper .sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;border:0!important}.pt-cv-wrapper .sr-only-focusable:active,.pt-cv-wrapper .sr-only-focusable:focus{position:static!important;width:auto!important;height:auto!important;margin:0!important;overflow:visible!important;clip:auto!important}.pt-cv-wrapper [role="button"]{cursor:pointer!important}.pt-cv-wrapper .container{margin-right:auto!important;margin-left:auto!important;padding-left:15px!important;padding-right:15px!important}@media(min-width:768px){.pt-cv-wrapper .container{width:750px!important}}@media(min-width:992px){.pt-cv-wrapper .container{width:970px!important}}@media(min-width:1200px){.pt-cv-wrapper .container{width:1170px!important}}.pt-cv-wrapper .container-fluid{margin-right:auto!important;margin-left:auto!important;padding-left:15px!important;padding-right:15px!important}.pt-cv-wrapper .row{margin-left:-15px!important;margin-right:-15px!important}.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-xs-9,.pt-cv-wrapper .col-sm-9,.pt-cv-wrapper .col-md-9,.pt-cv-wrapper .col-lg-9,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-xs-12,.pt-cv-wrapper .col-sm-12,.pt-cv-wrapper .col-md-12,.pt-cv-wrapper .col-lg-12{position:relative!important;min-height:1px!important;padding-left:15px!important;padding-right:15px!important}.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-xs-9,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-xs-12{float:left!important}.pt-cv-wrapper .col-xs-12{width:100%!important}.pt-cv-wrapper .col-xs-11{width:91.66666667%!important}.pt-cv-wrapper .col-xs-10{width:83.33333333%!important}.pt-cv-wrapper .col-xs-9{width:75%!important}.pt-cv-wrapper .col-xs-8{width:66.66666667%!important}.pt-cv-wrapper .col-xs-7{width:58.33333333%!important}.pt-cv-wrapper .col-xs-6{width:50%!important}.pt-cv-wrapper .col-xs-5{width:41.66666667%!important}.pt-cv-wrapper .col-xs-4{width:33.33333333%!important}.pt-cv-wrapper .col-xs-3{width:25%!important}.pt-cv-wrapper .col-xs-2{width:16.66666667%!important}.pt-cv-wrapper .col-xs-1{width:8.33333333%!important}.pt-cv-wrapper .col-xs-pull-12{right:100%!important}.pt-cv-wrapper .col-xs-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-xs-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-xs-pull-9{right:75%!important}.pt-cv-wrapper .col-xs-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-xs-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-xs-pull-6{right:50%!important}.pt-cv-wrapper .col-xs-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-xs-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-xs-pull-3{right:25%!important}.pt-cv-wrapper .col-xs-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-xs-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-xs-pull-0{right:auto!important}.pt-cv-wrapper .col-xs-push-12{left:100%!important}.pt-cv-wrapper .col-xs-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-xs-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-xs-push-9{left:75%!important}.pt-cv-wrapper .col-xs-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-xs-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-xs-push-6{left:50%!important}.pt-cv-wrapper .col-xs-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-xs-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-xs-push-3{left:25%!important}.pt-cv-wrapper .col-xs-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-xs-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-xs-push-0{left:auto!important}.pt-cv-wrapper .col-xs-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-xs-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-xs-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-xs-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-xs-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-xs-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-xs-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-xs-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-xs-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-xs-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-xs-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-xs-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-xs-offset-0{margin-left:0!important}@media(min-width:768px){.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-sm-9,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-sm-12{float:left!important}.pt-cv-wrapper .col-sm-12{width:100%!important}.pt-cv-wrapper .col-sm-11{width:91.66666667%!important}.pt-cv-wrapper .col-sm-10{width:83.33333333%!important}.pt-cv-wrapper .col-sm-9{width:75%!important}.pt-cv-wrapper .col-sm-8{width:66.66666667%!important}.pt-cv-wrapper .col-sm-7{width:58.33333333%!important}.pt-cv-wrapper .col-sm-6{width:50%!important}.pt-cv-wrapper .col-sm-5{width:41.66666667%!important}.pt-cv-wrapper .col-sm-4{width:33.33333333%!important}.pt-cv-wrapper .col-sm-3{width:25%!important}.pt-cv-wrapper .col-sm-2{width:16.66666667%!important}.pt-cv-wrapper .col-sm-1{width:8.33333333%!important}.pt-cv-wrapper .col-sm-pull-12{right:100%!important}.pt-cv-wrapper .col-sm-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-sm-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-sm-pull-9{right:75%!important}.pt-cv-wrapper .col-sm-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-sm-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-sm-pull-6{right:50%!important}.pt-cv-wrapper .col-sm-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-sm-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-sm-pull-3{right:25%!important}.pt-cv-wrapper .col-sm-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-sm-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-sm-pull-0{right:auto!important}.pt-cv-wrapper .col-sm-push-12{left:100%!important}.pt-cv-wrapper .col-sm-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-sm-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-sm-push-9{left:75%!important}.pt-cv-wrapper .col-sm-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-sm-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-sm-push-6{left:50%!important}.pt-cv-wrapper .col-sm-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-sm-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-sm-push-3{left:25%!important}.pt-cv-wrapper .col-sm-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-sm-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-sm-push-0{left:auto!important}.pt-cv-wrapper .col-sm-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-sm-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-sm-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-sm-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-sm-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-sm-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-sm-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-sm-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-sm-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-sm-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-sm-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-sm-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-sm-offset-0{margin-left:0!important}}@media(min-width:992px){.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-md-9,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-md-12{float:left!important}.pt-cv-wrapper .col-md-12{width:100%!important}.pt-cv-wrapper .col-md-11{width:91.66666667%!important}.pt-cv-wrapper .col-md-10{width:83.33333333%!important}.pt-cv-wrapper .col-md-9{width:75%!important}.pt-cv-wrapper .col-md-8{width:66.66666667%!important}.pt-cv-wrapper .col-md-7{width:58.33333333%!important}.pt-cv-wrapper .col-md-6{width:50%!important}.pt-cv-wrapper .col-md-5{width:41.66666667%!important}.pt-cv-wrapper .col-md-4{width:33.33333333%!important}.pt-cv-wrapper .col-md-3{width:25%!important}.pt-cv-wrapper .col-md-2{width:16.66666667%!important}.pt-cv-wrapper .col-md-1{width:8.33333333%!important}.pt-cv-wrapper .col-md-pull-12{right:100%!important}.pt-cv-wrapper .col-md-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-md-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-md-pull-9{right:75%!important}.pt-cv-wrapper .col-md-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-md-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-md-pull-6{right:50%!important}.pt-cv-wrapper .col-md-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-md-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-md-pull-3{right:25%!important}.pt-cv-wrapper .col-md-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-md-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-md-pull-0{right:auto!important}.pt-cv-wrapper .col-md-push-12{left:100%!important}.pt-cv-wrapper .col-md-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-md-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-md-push-9{left:75%!important}.pt-cv-wrapper .col-md-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-md-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-md-push-6{left:50%!important}.pt-cv-wrapper .col-md-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-md-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-md-push-3{left:25%!important}.pt-cv-wrapper .col-md-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-md-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-md-push-0{left:auto!important}.pt-cv-wrapper .col-md-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-md-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-md-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-md-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-md-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-md-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-md-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-md-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-md-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-md-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-md-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-md-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-md-offset-0{margin-left:0!important}}@media(min-width:1200px){.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-lg-9,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-lg-12{float:left!important}.pt-cv-wrapper .col-lg-12{width:100%!important}.pt-cv-wrapper .col-lg-11{width:91.66666667%!important}.pt-cv-wrapper .col-lg-10{width:83.33333333%!important}.pt-cv-wrapper .col-lg-9{width:75%!important}.pt-cv-wrapper .col-lg-8{width:66.66666667%!important}.pt-cv-wrapper .col-lg-7{width:58.33333333%!important}.pt-cv-wrapper .col-lg-6{width:50%!important}.pt-cv-wrapper .col-lg-5{width:41.66666667%!important}.pt-cv-wrapper .col-lg-4{width:33.33333333%!important}.pt-cv-wrapper .col-lg-3{width:25%!important}.pt-cv-wrapper .col-lg-2{width:16.66666667%!important}.pt-cv-wrapper .col-lg-1{width:8.33333333%!important}.pt-cv-wrapper .col-lg-pull-12{right:100%!important}.pt-cv-wrapper .col-lg-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-lg-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-lg-pull-9{right:75%!important}.pt-cv-wrapper .col-lg-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-lg-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-lg-pull-6{right:50%!important}.pt-cv-wrapper .col-lg-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-lg-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-lg-pull-3{right:25%!important}.pt-cv-wrapper .col-lg-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-lg-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-lg-pull-0{right:auto!important}.pt-cv-wrapper .col-lg-push-12{left:100%!important}.pt-cv-wrapper .col-lg-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-lg-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-lg-push-9{left:75%!important}.pt-cv-wrapper .col-lg-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-lg-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-lg-push-6{left:50%!important}.pt-cv-wrapper .col-lg-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-lg-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-lg-push-3{left:25%!important}.pt-cv-wrapper .col-lg-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-lg-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-lg-push-0{left:auto!important}.pt-cv-wrapper .col-lg-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-lg-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-lg-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-lg-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-lg-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-lg-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-lg-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-lg-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-lg-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-lg-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-lg-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-lg-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-lg-offset-0{margin-left:0!important}}.pt-cv-wrapper .btn{display:inline-block!important;margin-bottom:0!important;font-weight:normal!important;text-align:center!important;vertical-align:middle!important;-ms-touch-action:manipulation!important;touch-action:manipulation!important;cursor:pointer!important;background-image:none!important;border:1px solid transparent!important;white-space:nowrap!important;padding:6px 12px!important;font-size:14px!important;line-height:1.42857143!important;border-radius:4px!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pt-cv-wrapper .btn:focus,.pt-cv-wrapper .btn:active:focus,.pt-cv-wrapper .btn.active:focus,.pt-cv-wrapper .btn.focus,.pt-cv-wrapper .btn:active.focus,.pt-cv-wrapper .btn.active.focus{outline:thin dotted!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px!important}.pt-cv-wrapper .btn:hover,.pt-cv-wrapper .btn:focus,.pt-cv-wrapper .btn.focus{color:#333!important;text-decoration:none!important}.pt-cv-wrapper .btn:active,.pt-cv-wrapper .btn.active{outline:0!important;background-image:none!important;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important;box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important}.pt-cv-wrapper .btn.disabled,.pt-cv-wrapper .btn[disabled],.pt-cv-wrapper fieldset[disabled] .btn{cursor:not-allowed!important;opacity:.65!important;filter:alpha(opacity=65)!important;-webkit-box-shadow:none!important;box-shadow:none!important}.pt-cv-wrapper a.btn.disabled,.pt-cv-wrapper fieldset[disabled] a.btn{pointer-events:none!important}.pt-cv-wrapper .btn-default{color:#333!important;background-color:#fff!important;border-color:#ccc!important}.pt-cv-wrapper .btn-default:focus,.pt-cv-wrapper .btn-default.focus{color:#333!important;background-color:#e6e6e6!important;border-color:#8c8c8c!important}.pt-cv-wrapper .btn-default:hover{color:#333!important;background-color:#e6e6e6!important;border-color:#adadad!important}.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{color:#333!important;background-color:#e6e6e6!important;border-color:#adadad!important}.pt-cv-wrapper .btn-default:active:hover,.pt-cv-wrapper .btn-default.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:hover,.pt-cv-wrapper .btn-default:active:focus,.pt-cv-wrapper .btn-default.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:focus,.pt-cv-wrapper .btn-default:active.focus,.pt-cv-wrapper .btn-default.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default.focus{color:#333!important;background-color:#d4d4d4!important;border-color:#8c8c8c!important}.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{background-image:none!important}.pt-cv-wrapper .btn-default.disabled,.pt-cv-wrapper .btn-default[disabled],.pt-cv-wrapper fieldset[disabled] .btn-default,.pt-cv-wrapper .btn-default.disabled:hover,.pt-cv-wrapper .btn-default[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-default:hover,.pt-cv-wrapper .btn-default.disabled:focus,.pt-cv-wrapper .btn-default[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-default:focus,.pt-cv-wrapper .btn-default.disabled.focus,.pt-cv-wrapper .btn-default[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-default.focus,.pt-cv-wrapper .btn-default.disabled:active,.pt-cv-wrapper .btn-default[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-default:active,.pt-cv-wrapper .btn-default.disabled.active,.pt-cv-wrapper .btn-default[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-default.active{background-color:#fff!important;border-color:#ccc!important}.pt-cv-wrapper .btn-default .badge{color:#fff!important;background-color:#333!important}.pt-cv-wrapper .btn-primary{color:#fff!important;background-color:#337ab7!important;border-color:#2e6da4!important}.pt-cv-wrapper .btn-primary:focus,.pt-cv-wrapper .btn-primary.focus{color:#fff!important;background-color:#286090!important;border-color:#122b40!important}.pt-cv-wrapper .btn-primary:hover{color:#fff!important;background-color:#286090!important;border-color:#204d74!important}.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{color:#fff!important;background-color:#286090!important;border-color:#204d74!important}.pt-cv-wrapper .btn-primary:active:hover,.pt-cv-wrapper .btn-primary.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:hover,.pt-cv-wrapper .btn-primary:active:focus,.pt-cv-wrapper .btn-primary.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:focus,.pt-cv-wrapper .btn-primary:active.focus,.pt-cv-wrapper .btn-primary.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary.focus{color:#fff!important;background-color:#204d74!important;border-color:#122b40!important}.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{background-image:none!important}.pt-cv-wrapper .btn-primary.disabled,.pt-cv-wrapper .btn-primary[disabled],.pt-cv-wrapper fieldset[disabled] .btn-primary,.pt-cv-wrapper .btn-primary.disabled:hover,.pt-cv-wrapper .btn-primary[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-primary:hover,.pt-cv-wrapper .btn-primary.disabled:focus,.pt-cv-wrapper .btn-primary[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-primary:focus,.pt-cv-wrapper .btn-primary.disabled.focus,.pt-cv-wrapper .btn-primary[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-primary.focus,.pt-cv-wrapper .btn-primary.disabled:active,.pt-cv-wrapper .btn-primary[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-primary:active,.pt-cv-wrapper .btn-primary.disabled.active,.pt-cv-wrapper .btn-primary[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-primary.active{background-color:#337ab7!important;border-color:#2e6da4!important}.pt-cv-wrapper .btn-primary .badge{color:#337ab7!important;background-color:#fff!important}.pt-cv-wrapper .btn-success{color:#fff!important;background-color:#5cb85c!important;border-color:#4cae4c!important}.pt-cv-wrapper .btn-success:focus,.pt-cv-wrapper .btn-success.focus{color:#fff!important;background-color:#449d44!important;border-color:#255625!important}.pt-cv-wrapper .btn-success:hover{color:#fff!important;background-color:#449d44!important;border-color:#398439!important}.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{color:#fff!important;background-color:#449d44!important;border-color:#398439!important}.pt-cv-wrapper .btn-success:active:hover,.pt-cv-wrapper .btn-success.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:hover,.pt-cv-wrapper .btn-success:active:focus,.pt-cv-wrapper .btn-success.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:focus,.pt-cv-wrapper .btn-success:active.focus,.pt-cv-wrapper .btn-success.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success.focus{color:#fff!important;background-color:#398439!important;border-color:#255625!important}.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{background-image:none!important}.pt-cv-wrapper .btn-success.disabled,.pt-cv-wrapper .btn-success[disabled],.pt-cv-wrapper fieldset[disabled] .btn-success,.pt-cv-wrapper .btn-success.disabled:hover,.pt-cv-wrapper .btn-success[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-success:hover,.pt-cv-wrapper .btn-success.disabled:focus,.pt-cv-wrapper .btn-success[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-success:focus,.pt-cv-wrapper .btn-success.disabled.focus,.pt-cv-wrapper .btn-success[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-success.focus,.pt-cv-wrapper .btn-success.disabled:active,.pt-cv-wrapper .btn-success[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-success:active,.pt-cv-wrapper .btn-success.disabled.active,.pt-cv-wrapper .btn-success[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-success.active{background-color:#5cb85c!important;border-color:#4cae4c!important}.pt-cv-wrapper .btn-success .badge{color:#5cb85c!important;background-color:#fff!important}.pt-cv-wrapper .btn-info{color:#fff!important;background-color:#5bc0de!important;border-color:#46b8da!important}.pt-cv-wrapper .btn-info:focus,.pt-cv-wrapper .btn-info.focus{color:#fff!important;background-color:#31b0d5!important;border-color:#1b6d85!important}.pt-cv-wrapper .btn-info:hover{color:#fff!important;background-color:#31b0d5!important;border-color:#269abc!important}.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{color:#fff!important;background-color:#31b0d5!important;border-color:#269abc!important}.pt-cv-wrapper .btn-info:active:hover,.pt-cv-wrapper .btn-info.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:hover,.pt-cv-wrapper .btn-info:active:focus,.pt-cv-wrapper .btn-info.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:focus,.pt-cv-wrapper .btn-info:active.focus,.pt-cv-wrapper .btn-info.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info.focus{color:#fff!important;background-color:#269abc!important;border-color:#1b6d85!important}.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{background-image:none!important}.pt-cv-wrapper .btn-info.disabled,.pt-cv-wrapper .btn-info[disabled],.pt-cv-wrapper fieldset[disabled] .btn-info,.pt-cv-wrapper .btn-info.disabled:hover,.pt-cv-wrapper .btn-info[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-info:hover,.pt-cv-wrapper .btn-info.disabled:focus,.pt-cv-wrapper .btn-info[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-info:focus,.pt-cv-wrapper .btn-info.disabled.focus,.pt-cv-wrapper .btn-info[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-info.focus,.pt-cv-wrapper .btn-info.disabled:active,.pt-cv-wrapper .btn-info[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-info:active,.pt-cv-wrapper .btn-info.disabled.active,.pt-cv-wrapper .btn-info[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-info.active{background-color:#5bc0de!important;border-color:#46b8da!important}.pt-cv-wrapper .btn-info .badge{color:#5bc0de!important;background-color:#fff!important}.pt-cv-wrapper .btn-warning{color:#fff!important;background-color:#f0ad4e!important;border-color:#eea236!important}.pt-cv-wrapper .btn-warning:focus,.pt-cv-wrapper .btn-warning.focus{color:#fff!important;background-color:#ec971f!important;border-color:#985f0d!important}.pt-cv-wrapper .btn-warning:hover{color:#fff!important;background-color:#ec971f!important;border-color:#d58512!important}.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{color:#fff!important;background-color:#ec971f!important;border-color:#d58512!important}.pt-cv-wrapper .btn-warning:active:hover,.pt-cv-wrapper .btn-warning.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:hover,.pt-cv-wrapper .btn-warning:active:focus,.pt-cv-wrapper .btn-warning.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:focus,.pt-cv-wrapper .btn-warning:active.focus,.pt-cv-wrapper .btn-warning.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning.focus{color:#fff!important;background-color:#d58512!important;border-color:#985f0d!important}.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{background-image:none!important}.pt-cv-wrapper .btn-warning.disabled,.pt-cv-wrapper .btn-warning[disabled],.pt-cv-wrapper fieldset[disabled] .btn-warning,.pt-cv-wrapper .btn-warning.disabled:hover,.pt-cv-wrapper .btn-warning[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-warning:hover,.pt-cv-wrapper .btn-warning.disabled:focus,.pt-cv-wrapper .btn-warning[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-warning:focus,.pt-cv-wrapper .btn-warning.disabled.focus,.pt-cv-wrapper .btn-warning[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-warning.focus,.pt-cv-wrapper .btn-warning.disabled:active,.pt-cv-wrapper .btn-warning[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-warning:active,.pt-cv-wrapper .btn-warning.disabled.active,.pt-cv-wrapper .btn-warning[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-warning.active{background-color:#f0ad4e!important;border-color:#eea236!important}.pt-cv-wrapper .btn-warning .badge{color:#f0ad4e!important;background-color:#fff!important}.pt-cv-wrapper .btn-danger{color:#fff!important;background-color:#d9534f!important;border-color:#d43f3a!important}.pt-cv-wrapper .btn-danger:focus,.pt-cv-wrapper .btn-danger.focus{color:#fff!important;background-color:#c9302c!important;border-color:#761c19!important}.pt-cv-wrapper .btn-danger:hover{color:#fff!important;background-color:#c9302c!important;border-color:#ac2925!important}.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{color:#fff!important;background-color:#c9302c!important;border-color:#ac2925!important}.pt-cv-wrapper .btn-danger:active:hover,.pt-cv-wrapper .btn-danger.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:hover,.pt-cv-wrapper .btn-danger:active:focus,.pt-cv-wrapper .btn-danger.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:focus,.pt-cv-wrapper .btn-danger:active.focus,.pt-cv-wrapper .btn-danger.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger.focus{color:#fff!important;background-color:#ac2925!important;border-color:#761c19!important}.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{background-image:none!important}.pt-cv-wrapper .btn-danger.disabled,.pt-cv-wrapper .btn-danger[disabled],.pt-cv-wrapper fieldset[disabled] .btn-danger,.pt-cv-wrapper .btn-danger.disabled:hover,.pt-cv-wrapper .btn-danger[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-danger:hover,.pt-cv-wrapper .btn-danger.disabled:focus,.pt-cv-wrapper .btn-danger[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-danger:focus,.pt-cv-wrapper .btn-danger.disabled.focus,.pt-cv-wrapper .btn-danger[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-danger.focus,.pt-cv-wrapper .btn-danger.disabled:active,.pt-cv-wrapper .btn-danger[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-danger:active,.pt-cv-wrapper .btn-danger.disabled.active,.pt-cv-wrapper .btn-danger[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-danger.active{background-color:#d9534f!important;border-color:#d43f3a!important}.pt-cv-wrapper .btn-danger .badge{color:#d9534f!important;background-color:#fff!important}.pt-cv-wrapper .btn-link{color:#337ab7!important;font-weight:normal!important;border-radius:0!important}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link:active,.pt-cv-wrapper .btn-link.active,.pt-cv-wrapper .btn-link[disabled],.pt-cv-wrapper fieldset[disabled] .btn-link{background-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link:hover,.pt-cv-wrapper .btn-link:focus,.pt-cv-wrapper .btn-link:active{border-color:transparent!important}.pt-cv-wrapper .btn-link:hover,.pt-cv-wrapper .btn-link:focus{color:#23527c!important;text-decoration:underline!important;background-color:transparent!important}.pt-cv-wrapper .btn-link[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-link:hover,.pt-cv-wrapper .btn-link[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-link:focus{color:#777!important;text-decoration:none!important}.pt-cv-wrapper .btn-lg,.pt-cv-wrapper .btn-group-lg>.btn{padding:10px 16px!important;font-size:18px!important;line-height:1.3333333!important;border-radius:6px!important}.pt-cv-wrapper .btn-sm,.pt-cv-wrapper .btn-group-sm>.btn{padding:5px 10px!important;font-size:12px!important;line-height:1.5!important;border-radius:3px!important}.pt-cv-wrapper .btn-xs,.pt-cv-wrapper .btn-group-xs>.btn{padding:1px 5px!important;font-size:12px!important;line-height:1.5!important;border-radius:3px!important}.pt-cv-wrapper .btn-block{display:block!important;width:100%!important}.pt-cv-wrapper .btn-block+.btn-block{margin-top:5px!important}.pt-cv-wrapper input[type="submit"].btn-block,.pt-cv-wrapper input[type="reset"].btn-block,.pt-cv-wrapper input[type="button"].btn-block{width:100%!important}.pt-cv-wrapper .fade{opacity:0!important;-webkit-transition:opacity .15s linear!important;-o-transition:opacity .15s linear!important;transition:opacity .15s linear!important}.pt-cv-wrapper .fade.in{opacity:1!important}.pt-cv-wrapper .collapse{display:none!important}.pt-cv-wrapper .collapse.in{display:block!important}.pt-cv-wrapper tr.collapse.in{display:table-row!important}.pt-cv-wrapper tbody.collapse.in{display:table-row-group!important}.pt-cv-wrapper .collapsing{position:relative!important;height:0!important;overflow:hidden!important;-webkit-transition-property:height,visibility!important;-o-transition-property:height,visibility!important;transition-property:height,visibility!important;-webkit-transition-duration:.35s!important;-o-transition-duration:.35s!important;transition-duration:.35s!important;-webkit-transition-timing-function:ease!important;-o-transition-timing-function:ease!important;transition-timing-function:ease!important}.pt-cv-wrapper .caret{display:inline-block!important;width:0!important;height:0!important;margin-left:2px!important;vertical-align:middle!important;border-top:4px dashed!important;border-top:4px solid \9!important;border-right:4px solid transparent!important;border-left:4px solid transparent!important}.pt-cv-wrapper .dropup,.pt-cv-wrapper .dropdown{position:relative!important}.pt-cv-wrapper .dropdown-toggle:focus{outline:0!important}.pt-cv-wrapper .dropdown-menu{position:absolute!important;top:100%!important;left:0!important;z-index:1000!important;display:none!important;float:left!important;min-width:160px!important;padding:5px 0!important;margin:2px 0 0!important;list-style:none!important;font-size:14px!important;text-align:left!important;background-color:#fff!important;border:1px solid #ccc!important;border:1px solid rgba(0,0,0,0.15)!important;border-radius:4px!important;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175)!important;box-shadow:0 6px 12px rgba(0,0,0,0.175)!important;-webkit-background-clip:padding-box!important;background-clip:padding-box!important}.pt-cv-wrapper .dropdown-menu.pull-right{right:0!important;left:auto!important}.pt-cv-wrapper .dropdown-menu .divider{height:1px!important;margin:9px 0!important;overflow:hidden!important;background-color:#e5e5e5!important}.pt-cv-wrapper .dropdown-menu>li>a{display:block!important;padding:3px 20px!important;clear:both!important;font-weight:normal!important;line-height:1.42857143!important;color:#333!important;white-space:nowrap!important}.pt-cv-wrapper .dropdown-menu>li>a:hover,.pt-cv-wrapper .dropdown-menu>li>a:focus{text-decoration:none!important;color:#262626!important;background-color:#f5f5f5!important}.pt-cv-wrapper .dropdown-menu>.active>a,.pt-cv-wrapper .dropdown-menu>.active>a:hover,.pt-cv-wrapper .dropdown-menu>.active>a:focus{color:#fff!important;text-decoration:none!important;outline:0!important;background-color:#337ab7!important}.pt-cv-wrapper .dropdown-menu>.disabled>a,.pt-cv-wrapper .dropdown-menu>.disabled>a:hover,.pt-cv-wrapper .dropdown-menu>.disabled>a:focus{color:#777!important}.pt-cv-wrapper .dropdown-menu>.disabled>a:hover,.pt-cv-wrapper .dropdown-menu>.disabled>a:focus{text-decoration:none!important;background-color:transparent!important;background-image:none!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)!important;cursor:not-allowed!important}.pt-cv-wrapper .open>.dropdown-menu{display:block!important}.pt-cv-wrapper .open>a{outline:0!important}.pt-cv-wrapper .dropdown-menu-right{left:auto!important;right:0!important}.pt-cv-wrapper .dropdown-menu-left{left:0!important;right:auto!important}.pt-cv-wrapper .dropdown-header{display:block!important;padding:3px 20px!important;font-size:12px!important;line-height:1.42857143!important;color:#777!important;white-space:nowrap!important}.pt-cv-wrapper .dropdown-backdrop{position:fixed!important;left:0!important;right:0!important;bottom:0!important;top:0!important;z-index:990!important}.pt-cv-wrapper .pull-right>.dropdown-menu{right:0!important;left:auto!important}.pt-cv-wrapper .dropup .caret,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .caret{border-top:0!important;border-bottom:4px dashed!important;border-bottom:4px solid \9!important;content:""!important}.pt-cv-wrapper .dropup .dropdown-menu,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto!important;bottom:100%!important;margin-bottom:2px!important}@media(min-width:768px){.pt-cv-wrapper .navbar-right .dropdown-menu{left:auto!important;right:0!important}.pt-cv-wrapper .navbar-right .dropdown-menu-left{left:0!important;right:auto!important}}.pt-cv-wrapper .btn-group,.pt-cv-wrapper .btn-group-vertical{position:relative!important;display:inline-block!important;vertical-align:middle!important}.pt-cv-wrapper .btn-group>.btn,.pt-cv-wrapper .btn-group-vertical>.btn{position:relative!important;float:left!important}.pt-cv-wrapper .btn-group>.btn:hover,.pt-cv-wrapper .btn-group-vertical>.btn:hover,.pt-cv-wrapper .btn-group>.btn:focus,.pt-cv-wrapper .btn-group-vertical>.btn:focus,.pt-cv-wrapper .btn-group>.btn:active,.pt-cv-wrapper .btn-group-vertical>.btn:active,.pt-cv-wrapper .btn-group>.btn.active,.pt-cv-wrapper .btn-group-vertical>.btn.active{z-index:2!important}.pt-cv-wrapper .btn-group .btn+.btn,.pt-cv-wrapper .btn-group .btn+.btn-group,.pt-cv-wrapper .btn-group .btn-group+.btn,.pt-cv-wrapper .btn-group .btn-group+.btn-group{margin-left:-1px!important}.pt-cv-wrapper .btn-toolbar{margin-left:-5px!important}.pt-cv-wrapper .btn-toolbar .btn,.pt-cv-wrapper .btn-toolbar .btn-group,.pt-cv-wrapper .btn-toolbar .input-group{float:left!important}.pt-cv-wrapper .btn-toolbar>.btn,.pt-cv-wrapper .btn-toolbar>.btn-group,.pt-cv-wrapper .btn-toolbar>.input-group{margin-left:5px!important}.pt-cv-wrapper .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0!important}.pt-cv-wrapper .btn-group>.btn:first-child{margin-left:0!important}.pt-cv-wrapper .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0!important;border-top-right-radius:0!important}.pt-cv-wrapper .btn-group>.btn:last-child:not(:first-child),.pt-cv-wrapper .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group>.btn-group{float:left!important}.pt-cv-wrapper .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0!important}.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.pt-cv-wrapper .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group .dropdown-toggle:active,.pt-cv-wrapper .btn-group.open .dropdown-toggle{outline:0!important}.pt-cv-wrapper .btn-group>.btn+.dropdown-toggle{padding-left:8px!important;padding-right:8px!important}.pt-cv-wrapper .btn-group>.btn-lg+.dropdown-toggle{padding-left:12px!important;padding-right:12px!important}.pt-cv-wrapper .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important;box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important}.pt-cv-wrapper .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none!important;box-shadow:none!important}.pt-cv-wrapper .btn .caret{margin-left:0!important}.pt-cv-wrapper .btn-lg .caret{border-width:5px 5px 0!important;border-bottom-width:0!important}.pt-cv-wrapper .dropup .btn-lg .caret{border-width:0 5px 5px!important}.pt-cv-wrapper .btn-group-vertical>.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{display:block!important;float:none!important;width:100%!important;max-width:100%!important}.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{float:none!important}.pt-cv-wrapper .btn-group-vertical>.btn+.btn,.pt-cv-wrapper .btn-group-vertical>.btn+.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px!important;margin-left:0!important}.pt-cv-wrapper .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px!important;border-top-right-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group-justified{display:table!important;width:100%!important;table-layout:fixed!important;border-collapse:separate!important}.pt-cv-wrapper .btn-group-justified>.btn,.pt-cv-wrapper .btn-group-justified>.btn-group{float:none!important;display:table-cell!important;width:1%!important}.pt-cv-wrapper .btn-group-justified>.btn-group .btn{width:100%!important}.pt-cv-wrapper .btn-group-justified>.btn-group .dropdown-menu{left:auto!important}.pt-cv-wrapper [data-toggle="buttons"]>.btn input[type="radio"],.pt-cv-wrapper [data-toggle="buttons"]>.btn-group>.btn input[type="radio"],.pt-cv-wrapper [data-toggle="buttons"]>.btn input[type="checkbox"],.pt-cv-wrapper [data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute!important;clip:rect(0,0,0,0)!important;pointer-events:none!important}.pt-cv-wrapper .nav{margin-bottom:0!important;padding-left:0!important;list-style:none!important}.pt-cv-wrapper .nav>li{position:relative!important;display:block!important}.pt-cv-wrapper .nav>li>a{position:relative!important;display:block!important;padding:10px 15px!important}.pt-cv-wrapper .nav>li>a:hover,.pt-cv-wrapper .nav>li>a:focus{text-decoration:none!important;background-color:#eee!important}.pt-cv-wrapper .nav>li.disabled>a{color:#777!important}.pt-cv-wrapper .nav>li.disabled>a:hover,.pt-cv-wrapper .nav>li.disabled>a:focus{color:#777!important;text-decoration:none!important;background-color:transparent!important;cursor:not-allowed!important}.pt-cv-wrapper .nav .open>a,.pt-cv-wrapper .nav .open>a:hover,.pt-cv-wrapper .nav .open>a:focus{background-color:#eee!important;border-color:#337ab7!important}.pt-cv-wrapper .nav .nav-divider{height:1px!important;margin:9px 0!important;overflow:hidden!important;background-color:#e5e5e5!important}.pt-cv-wrapper .nav>li>a>img{max-width:none!important}.pt-cv-wrapper .nav-tabs{border-bottom:1px solid #ddd!important}.pt-cv-wrapper .nav-tabs>li{float:left!important;margin-bottom:-1px!important}.pt-cv-wrapper .nav-tabs>li>a{margin-right:2px!important;line-height:1.42857143!important;border:1px solid transparent!important;border-radius:4px 4px 0 0!important}.pt-cv-wrapper .nav-tabs>li>a:hover{border-color:#eee #eee #ddd!important}.pt-cv-wrapper .nav-tabs>li.active>a,.pt-cv-wrapper .nav-tabs>li.active>a:hover,.pt-cv-wrapper .nav-tabs>li.active>a:focus{color:#555!important;background-color:#fff!important;border:1px solid #ddd!important;border-bottom-color:transparent!important;cursor:default!important}.pt-cv-wrapper .nav-tabs.nav-justified{width:100%!important;border-bottom:0!important}.pt-cv-wrapper .nav-tabs.nav-justified>li{float:none!important}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{text-align:center!important;margin-bottom:5px!important}.pt-cv-wrapper .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto!important;left:auto!important}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li{display:table-cell!important;width:1%!important}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-bottom:0!important}}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-right:0!important;border-radius:4px!important}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd!important}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd!important;border-radius:4px 4px 0 0!important}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff!important}}.pt-cv-wrapper .nav-pills>li{float:left!important}.pt-cv-wrapper .nav-pills>li>a{border-radius:4px!important}.pt-cv-wrapper .nav-pills>li+li{margin-left:2px!important}.pt-cv-wrapper .nav-pills>li.active>a,.pt-cv-wrapper .nav-pills>li.active>a:hover,.pt-cv-wrapper .nav-pills>li.active>a:focus{color:#fff!important;background-color:#337ab7!important}.pt-cv-wrapper .nav-stacked>li{float:none!important}.pt-cv-wrapper .nav-stacked>li+li{margin-top:2px!important;margin-left:0!important}.pt-cv-wrapper .nav-justified{width:100%!important}.pt-cv-wrapper .nav-justified>li{float:none!important}.pt-cv-wrapper .nav-justified>li>a{text-align:center!important;margin-bottom:5px!important}.pt-cv-wrapper .nav-justified>.dropdown .dropdown-menu{top:auto!important;left:auto!important}@media(min-width:768px){.pt-cv-wrapper .nav-justified>li{display:table-cell!important;width:1%!important}.pt-cv-wrapper .nav-justified>li>a{margin-bottom:0!important}}.pt-cv-wrapper .nav-tabs-justified{border-bottom:0!important}.pt-cv-wrapper .nav-tabs-justified>li>a{margin-right:0!important;border-radius:4px!important}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus{border:1px solid #ddd!important}@media(min-width:768px){.pt-cv-wrapper .nav-tabs-justified>li>a{border-bottom:1px solid #ddd!important;border-radius:4px 4px 0 0!important}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus{border-bottom-color:#fff!important}}.pt-cv-wrapper .tab-content>.tab-pane{display:none!important}.pt-cv-wrapper .tab-content>.active{display:block!important}.pt-cv-wrapper .nav-tabs .dropdown-menu{margin-top:-1px!important;border-top-right-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .pagination{display:inline-block!important;padding-left:0!important;margin:20px 0!important;border-radius:4px!important}.pt-cv-wrapper .pagination>li{display:inline!important}.pt-cv-wrapper .pagination>li>a,.pt-cv-wrapper .pagination>li>span{position:relative!important;float:left!important;padding:6px 12px!important;line-height:1.42857143!important;text-decoration:none!important;color:#337ab7!important;background-color:#fff!important;border:1px solid #ddd!important;margin-left:-1px!important}.pt-cv-wrapper .pagination>li:first-child>a,.pt-cv-wrapper .pagination>li:first-child>span{margin-left:0!important;border-bottom-left-radius:4px!important;border-top-left-radius:4px!important}.pt-cv-wrapper .pagination>li:last-child>a,.pt-cv-wrapper .pagination>li:last-child>span{border-bottom-right-radius:4px!important;border-top-right-radius:4px!important}.pt-cv-wrapper .pagination>li>a:hover,.pt-cv-wrapper .pagination>li>span:hover,.pt-cv-wrapper .pagination>li>a:focus,.pt-cv-wrapper .pagination>li>span:focus{z-index:3!important;color:#23527c!important;background-color:#eee!important;border-color:#ddd!important}.pt-cv-wrapper .pagination>.active>a,.pt-cv-wrapper .pagination>.active>span,.pt-cv-wrapper .pagination>.active>a:hover,.pt-cv-wrapper .pagination>.active>span:hover,.pt-cv-wrapper .pagination>.active>a:focus,.pt-cv-wrapper .pagination>.active>span:focus{z-index:2!important;color:#fff!important;background-color:#337ab7!important;border-color:#337ab7!important;cursor:default!important}.pt-cv-wrapper .pagination>.disabled>span,.pt-cv-wrapper .pagination>.disabled>span:hover,.pt-cv-wrapper .pagination>.disabled>span:focus,.pt-cv-wrapper .pagination>.disabled>a,.pt-cv-wrapper .pagination>.disabled>a:hover,.pt-cv-wrapper .pagination>.disabled>a:focus{color:#777!important;background-color:#fff!important;border-color:#ddd!important;cursor:not-allowed!important}.pt-cv-wrapper .pagination-lg>li>a,.pt-cv-wrapper .pagination-lg>li>span{padding:10px 16px!important;font-size:18px!important;line-height:1.3333333!important}.pt-cv-wrapper .pagination-lg>li:first-child>a,.pt-cv-wrapper .pagination-lg>li:first-child>span{border-bottom-left-radius:6px!important;border-top-left-radius:6px!important}.pt-cv-wrapper .pagination-lg>li:last-child>a,.pt-cv-wrapper .pagination-lg>li:last-child>span{border-bottom-right-radius:6px!important;border-top-right-radius:6px!important}.pt-cv-wrapper .pagination-sm>li>a,.pt-cv-wrapper .pagination-sm>li>span{padding:5px 10px!important;font-size:12px!important;line-height:1.5!important}.pt-cv-wrapper .pagination-sm>li:first-child>a,.pt-cv-wrapper .pagination-sm>li:first-child>span{border-bottom-left-radius:3px!important;border-top-left-radius:3px!important}.pt-cv-wrapper .pagination-sm>li:last-child>a,.pt-cv-wrapper .pagination-sm>li:last-child>span{border-bottom-right-radius:3px!important;border-top-right-radius:3px!important}.pt-cv-wrapper .thumbnail{display:block!important;padding:4px!important;margin-bottom:20px!important;line-height:1.42857143!important;background-color:#fff!important;border:1px solid #ddd!important;border-radius:4px!important;-webkit-transition:border .2s ease-in-out!important;-o-transition:border .2s ease-in-out!important;transition:border .2s ease-in-out!important}.pt-cv-wrapper .thumbnail>img,.pt-cv-wrapper .thumbnail a>img{margin-left:auto!important;margin-right:auto!important}.pt-cv-wrapper a.thumbnail:hover,.pt-cv-wrapper a.thumbnail:focus,.pt-cv-wrapper a.thumbnail.active{border-color:#337ab7!important}.pt-cv-wrapper .thumbnail .caption{padding:9px!important;color:#333!important}.pt-cv-wrapper .pt-cv-carousel{position:relative!important}.pt-cv-wrapper .carousel-inner{position:relative!important;overflow:hidden!important;width:100%!important}.pt-cv-wrapper .carousel-inner>.item{display:none!important;position:relative!important;-webkit-transition:.6s ease-in-out left!important;-o-transition:.6s ease-in-out left!important;transition:.6s ease-in-out left!important}.pt-cv-wrapper .carousel-inner>.item>img,.pt-cv-wrapper .carousel-inner>.item>a>img{line-height:1!important}@media all and (transform-3d),(-webkit-transform-3d){.pt-cv-wrapper .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out!important;-o-transition:-o-transform .6s ease-in-out!important;transition:transform .6s ease-in-out!important;-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-perspective:1000px!important;perspective:1000px!important}.pt-cv-wrapper .carousel-inner>.item.next,.pt-cv-wrapper .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0)!important;transform:translate3d(100%,0,0)!important;left:0!important}.pt-cv-wrapper .carousel-inner>.item.prev,.pt-cv-wrapper .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0)!important;transform:translate3d(-100%,0,0)!important;left:0!important}.pt-cv-wrapper .carousel-inner>.item.next.left,.pt-cv-wrapper .carousel-inner>.item.prev.right,.pt-cv-wrapper .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important;left:0!important}}.pt-cv-wrapper .carousel-inner>.active,.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{display:block!important}.pt-cv-wrapper .carousel-inner>.active{left:0!important}.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{position:absolute!important;top:0!important;width:100%!important}.pt-cv-wrapper .carousel-inner>.next{left:100%!important}.pt-cv-wrapper .carousel-inner>.prev{left:-100%!important}.pt-cv-wrapper .carousel-inner>.next.left,.pt-cv-wrapper .carousel-inner>.prev.right{left:0!important}.pt-cv-wrapper .carousel-inner>.active.left{left:-100%!important}.pt-cv-wrapper .carousel-inner>.active.right{left:100%!important}.pt-cv-wrapper .carousel-control{position:absolute!important;top:0!important;left:0!important;bottom:0!important;width:15%!important;opacity:.5!important;filter:alpha(opacity=50)!important;font-size:20px!important;color:#fff!important;text-align:center!important;text-shadow:0 1px 2px rgba(0,0,0,0.6)!important}.pt-cv-wrapper .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%)!important;background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%)!important;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)))!important;background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%)!important;background-repeat:repeat-x!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)!important}.pt-cv-wrapper .carousel-control.right{left:auto!important;right:0!important;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%)!important;background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%)!important;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)))!important;background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%)!important;background-repeat:repeat-x!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)!important}.pt-cv-wrapper .carousel-control:hover,.pt-cv-wrapper .carousel-control:focus{outline:0!important;color:#fff!important;text-decoration:none!important;opacity:.9!important;filter:alpha(opacity=90)!important}.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right{position:absolute!important;top:50%!important;margin-top:-10px!important;z-index:5!important;display:inline-block!important}.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .glyphicon-chevron-left{left:50%!important;margin-left:-10px!important}.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right{right:50%!important;margin-right:-10px!important}.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .icon-next{width:20px!important;height:20px!important;line-height:1!important;font-family:serif!important}.pt-cv-wrapper .carousel-control .icon-prev:before{content:'\2039'!important}.pt-cv-wrapper .carousel-control .icon-next:before{content:'\203a'!important}.pt-cv-wrapper .pt-cv-carousel-indicators{position:absolute!important;bottom:10px!important;left:50%!important;z-index:15!important;width:60%!important;margin-left:-30%!important;padding-left:0!important;list-style:none!important;text-align:center!important}.pt-cv-wrapper .pt-cv-carousel-indicators li{display:inline-block!important;width:10px!important;height:10px!important;margin:1px!important;text-indent:-999px!important;border:1px solid #fff!important;border-radius:10px!important;cursor:pointer!important;background-color:#000 \9!important;background-color:rgba(0,0,0,0)!important}.pt-cv-wrapper .pt-cv-carousel-indicators .active{margin:0!important;width:12px!important;height:12px!important;background-color:#fff!important}.pt-cv-wrapper .pt-cv-carousel-caption{position:absolute!important;left:15%!important;right:15%!important;bottom:20px!important;z-index:10!important;padding-top:20px!important;padding-bottom:20px!important;color:#fff!important;text-align:center!important;text-shadow:0 1px 2px rgba(0,0,0,0.6)!important}.pt-cv-wrapper .pt-cv-carousel-caption .btn{text-shadow:none!important}@media screen and (min-width:768px){.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .icon-next{width:30px!important;height:30px!important;margin-top:-15px!important;font-size:30px!important}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .icon-prev{margin-left:-15px!important}.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next{margin-right:-15px!important}.pt-cv-wrapper .pt-cv-carousel-caption{left:20%!important;right:20%!important;padding-bottom:30px!important}.pt-cv-wrapper .pt-cv-carousel-indicators{bottom:20px!important}}.pt-cv-wrapper .clearfix:before,.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .container:before,.pt-cv-wrapper .container:after,.pt-cv-wrapper .container-fluid:before,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .row:before,.pt-cv-wrapper .row:after,.pt-cv-wrapper .btn-toolbar:before,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .btn-group-vertical>.btn-group:before,.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .nav:before,.pt-cv-wrapper .nav:after{content:" "!important;display:table!important}.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .container:after,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .row:after,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .nav:after{clear:both!important}.pt-cv-wrapper .center-block{display:block!important;margin-left:auto!important;margin-right:auto!important}.pt-cv-wrapper .pull-right{float:right!important}.pt-cv-wrapper .pull-left{float:left!important}.pt-cv-wrapper .hide{display:none!important}.pt-cv-wrapper .show{display:block!important}.pt-cv-wrapper .invisible{visibility:hidden!important}.pt-cv-wrapper .text-hide{font:0/0 a!important;color:transparent!important;text-shadow:none!important;background-color:transparent!important;border:0!important}.pt-cv-wrapper .hidden{display:none!important}.pt-cv-wrapper .affix{position:fixed!important}.pt-cv-wrapper .text-left{text-align:left!important}.pt-cv-wrapper .text-right{text-align:right!important}.pt-cv-wrapper .text-center{text-align:center!important}.pt-cv-wrapper .text-justify{text-align:justify!important}.pt-cv-wrapper .text-nowrap{white-space:nowrap!important}.pt-cv-wrapper .text-lowercase{text-transform:lowercase!important}.pt-cv-wrapper .text-uppercase{text-transform:uppercase!important}.pt-cv-wrapper .text-capitalize{text-transform:capitalize!important}.pt-cv-wrapper .text-muted{color:#777!important}.pt-cv-wrapper .text-primary{color:#428bca!important}.pt-cv-wrapper .h1,.pt-cv-wrapper .h2,.pt-cv-wrapper .h3,.pt-cv-wrapper .h4,.pt-cv-wrapper .h5,.pt-cv-wrapper .h6,.pt-cv-wrapper h1,.pt-cv-wrapper h2,.pt-cv-wrapper h3,.pt-cv-wrapper h4,.pt-cv-wrapper h5,.pt-cv-wrapper h6{font-family:inherit!important;font-weight:500!important;line-height:1.1!important;color:inherit!important}.pt-cv-view *,.pt-cv-view *:before,.pt-cv-view *:after{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.pt-cv-view{position:relative!important;clear:both!important}.pt-cv-view:after{clear:both!important;content:''!important;display:block!important}.pt-cv-page{position:relative!important}.pt-cv-gls-group{clear:left!important}.pt-cv-view strong,.pt-cv-view strong *{font-weight:600!important}.pt-cv-colsys{margin-left:-15px!important;margin-right:-15px!important}@media(min-width:992px){.pt-cv-colsys [data-cvc="2"] .col-md-6:nth-child(2n+1),.pt-cv-colsys [data-cvc="3"] .col-md-4:nth-child(3n+1),.pt-cv-colsys [data-cvc="4"] .col-md-3:nth-child(4n+1),.pt-cv-colsys [data-cvc="5"] .col-md-2:nth-child(5n+1),.pt-cv-colsys [data-cvc="6"] .col-md-2:nth-child(6n+1),.pt-cv-colsys [data-cvc="7"] .col-md-1:nth-child(7n+1),.pt-cv-colsys [data-cvc="8"] .col-md-1:nth-child(8n+1),.pt-cv-colsys [data-cvc="9"] .col-md-1:nth-child(9n+1),.pt-cv-colsys [data-cvc="10"] .col-md-1:nth-child(10n+1),.pt-cv-colsys [data-cvc="11"] .col-md-1:nth-child(11n+1),.pt-cv-colsys [data-cvc="12"] .col-md-1:nth-child(12n+1){clear:left!important}}@media(min-width:768px) and (max-width:991px){.pt-cv-colsys .col-sm-6:nth-child(2n+1),.pt-cv-colsys .col-sm-4:nth-child(3n+1),.pt-cv-colsys .col-sm-3:nth-child(4n+1),.pt-cv-colsys .col-sm-2:nth-child(5n+1),.pt-cv-colsys .col-sm-2:nth-child(6n+1){clear:left!important}}@media(max-width:767px){.pt-cv-colsys .col-xs-6:nth-child(2n+1),.pt-cv-colsys .col-xs-4:nth-child(3n+1),.pt-cv-colsys .col-xs-3:nth-child(4n+1),.pt-cv-colsys .col-xs-2:nth-child(5n+1),.pt-cv-colsys .col-xs-2:nth-child(6n+1){clear:left!important}}@media(min-width:992px){.pt-cv-colsys [data-cvc="5"] .pt-cv-content-item{width:20%!important}.pt-cv-colsys [data-cvc="7"] .pt-cv-content-item{width:14.28571428%!important}.pt-cv-colsys [data-cvc="8"] .pt-cv-content-item{width:12.5%!important}.pt-cv-colsys [data-cvc="9"] .pt-cv-content-item{width:11.11111111%!important}.pt-cv-colsys [data-cvc="10"] .pt-cv-content-item{width:10%!important}.pt-cv-colsys [data-cvc="11"] .pt-cv-content-item{width:9.09090909%!important}}.pt-cv-colsys .pt-cv-content-item{flex:none!important;max-width:initial!important}.pt-cv-view a,.pt-cv-wrapper .btn{text-decoration:none!important;outline:0!important;font-style:normal!important}.pt-cv-view a{pointer-events:auto!important}.pt-cv-readmore{color:#fff!important;margin:10px 0!important;max-width:100%!important}.pt-cv-content-item{padding-bottom:15px!important;position:relative!important;overflow:hidden!important}.pt-cv-view .pt-cv-content-item>*{margin-bottom:10px!important}.pt-cv-ifield>*{margin-bottom:10px!important}.pt-cv-collapsible .pt-cv-content-item>*{margin-bottom:0!important}.pt-cv-title{margin-top:0!important}h4.pt-cv-title{font-size:18px!important}.pt-cv-view .pt-cv-title{margin-bottom:10px!important}.pt-cv-title a{font-weight:600!important}.pt-cv-thumbnail{height:auto!important;max-width:100%!important;margin-top:0!important;margin-bottom:10px!important;min-width:inherit!important}.pt-cv-thumbnail.pull-left{margin-right:15px!important}.pt-cv-thumbnail.pull-right{margin-left:15px!important}.pt-cv-no-image{min-width:80px!important;min-height:80px!important}.pt-cv-content,.pt-cv-content *{font-weight:400!important}.pt-cv-meta-fields{font-size:13px!important;margin-top:0!important}.pt-cv-meta-fields a{color:#41b7d8!important}.pt-cv-pagination-wrapper{margin:20px 0!important}.pt-cv-view+.pagination{float:left!important;margin:0 auto!important}.pt-cv-view+.pagination>li{background:none!important}.pt-cv-view+.pagination>li>a{cursor:pointer!important}.pt-cv-spinner{width:15px!important;height:15px!important;margin-top:-25px!important;display:inline-block!important;opacity:0!important;filter:alpha(opacity=0)!important;color:#0470ec!important;-webkit-transition:opacity .25s,width .25s!important;-moz-transition:opacity .25s,width .25s!important;-o-transition:opacity .25s,width .25s!important;transition:opacity .25s,width .25s!important}.pt-cv-spinner.active{opacity:1!important;filter:alpha(opacity=100)!important}.pt-cv-clear-pagination{margin-bottom:50px!important}.pt-cv-pagination-wrapper{clear:both!important;position:relative!important}.pt-cv-pagination-wrapper .pt-cv-pagination.pagination{-webkit-box-shadow:none!important;box-shadow:none!important;border:0!important;padding:0!important;margin:initial!important;min-height:initial!important;width:auto!important;display:inline-block!important}.pt-cv-pagination li{display:inline!important;background-image:none!important}.pt-cv-pagination li:before,.pt-cv-pagination li:after{content:none!important}.pt-cv-pagination a{cursor:pointer!important}.pt-cv-pagination li.active a{border-color:rgba(66,139,202,0.2)!important}.pt-cv-pagination li a[href="#"]{pointer-events:none!important}.pt-cv-collapsible .panel{display:block!important}.pt-cv-collapsible .panel-heading{padding:0!important}.pt-cv-collapsible .panel-heading a{display:block!important;padding:10px 15px!important}.pt-cv-collapsible .panel-body{padding:10px!important}.pt-cv-view .collapse{display:none!important;visibility:hidden!important}.pt-cv-view .collapse.in{display:block!important;visibility:visible!important;overflow:auto!important}.pt-cv-collapsible .panel-heading br{display:none!important}.pt-cv-scrollable{margin-left:0!important;margin-right:0!important}.pt-cv-scrollable .pt-cv-carousel-caption{text-align:left!important;bottom:15px!important;padding:10px!important}.pt-cv-scrollable .pt-cv-carousel-caption *{text-shadow:none!important}.pt-cv-scrollable .pt-cv-title{padding-bottom:0!important}.pt-cv-scrollable .pt-cv-carousel-caption{margin-bottom:10px!important}.pt-cv-scrollable .pt-cv-thumbnail{width:100%!important}.pt-cv-carousel-caption:empty{display:none!important}.pt-cv-scrollable .pt-cv-carousel .item{height:auto!important;margin:auto!important;min-height:0!important;max-height:none!important;line-height:normal!important}.pt-cv-scrollable .pt-cv-cap-w-img{background:rgba(0,0,0,0.6)!important;text-shadow:0 1px 1px #000!important;left:15px!important;right:15px!important}.pt-cv-cap-w-img *{color:#fff!important}.pt-cv-cap-w-img .pt-cv-title a{color:#fff!important}.pt-cv-scrollable .pt-cv-cap-wo-img{position:relative!important;bottom:0!important;left:0!important;right:0!important}.pt-cv-cap-wo-img *{color:#000!important}.pt-cv-cap-wo-img .pt-cv-readmore{color:#fff!important}.pt-cv-view .carousel-control{background-image:none!important;height:30px!important;width:40px!important;bottom:0!important;top:auto!important;color:#00a100!important}.pt-cv-view .pt-cv-carousel-indicators{bottom:0!important;margin-bottom:4px!important}.pt-cv-view .pt-cv-carousel-indicators li{background:#cecece!important;border:1px solid #cecece!important;margin:0 0!important}.pt-cv-view .pt-cv-carousel-indicators li.active{background:#428bca!important;border:1px solid #428bca!important}.pt-cv-2-col .pt-cv-title{clear:none!important}@media(min-width:480px){.pt-cv-2-col .pt-cv-colwrap{display:table!important;word-break:break-word!important}}@media(max-width:479px){.pt-cv-2-col .pt-cv-colwrap{clear:both!important}}.pt-cv-view .panel{margin-bottom:20px!important;background-color:#fff!important;border:1px solid transparent!important;border-radius:4px!important;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05)!important;box-shadow:0 1px 1px rgba(0,0,0,0.05)!important}.pt-cv-view .panel-default{border-color:#ddd!important;padding-bottom:0!important}.pt-cv-view .panel-default>.panel-heading{color:#333!important;background-color:#f5f5f5!important;border-color:#ddd!important}.pt-cv-pagination:after,.pt-cv-pagination:before{content:none!important}.pt-cv-wrapper [class*="pt-cv-"] a{box-shadow:none!important}.pt-cv-view p:empty{display:none!important}.pt-cv-view .pt-cv-ifield{margin-bottom:0!important}@media(max-width:480px){.pt-cv-nolf .pt-cv-2-col .pt-cv-thumbnail{float:none!important;margin:0!important}}@media print{.pt-cv-view a[href]:after{content:none!important}.pt-cv-view .collapse{display:block!important;height:auto!important;visibility:visible!important}}
|
1 |
+
/*!
|
2 |
+
* Bootstrap v3.3.5 (http://getbootstrap.com)
|
3 |
+
* Copyright 2011-2015 Twitter, Inc.
|
4 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
+
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */.pt-cv-wrapper article,.pt-cv-wrapper aside,.pt-cv-wrapper details,.pt-cv-wrapper figcaption,.pt-cv-wrapper footer,.pt-cv-wrapper header,.pt-cv-wrapper hgroup,.pt-cv-wrapper main,.pt-cv-wrapper menu,.pt-cv-wrapper nav,.pt-cv-wrapper section,.pt-cv-wrapper summary{display:block!important}.pt-cv-wrapper audio,.pt-cv-wrapper canvas,.pt-cv-wrapper progress,.pt-cv-wrapper video{display:inline-block!important;vertical-align:baseline!important}.pt-cv-wrapper audio:not([controls]){display:none!important;height:0!important}.pt-cv-wrapper [hidden],.pt-cv-wrapper template{display:none!important}.pt-cv-wrapper a{background-color:transparent!important}.pt-cv-wrapper a:active,.pt-cv-wrapper a:hover{outline:0!important}.pt-cv-wrapper abbr[title]{border-bottom:1px dotted!important}.pt-cv-wrapper b,.pt-cv-wrapper strong{font-weight:bold!important}.pt-cv-wrapper dfn{font-style:italic!important}.pt-cv-wrapper h1{margin:.67em 0!important}.pt-cv-wrapper mark{background:#ff0!important;color:#000!important}.pt-cv-wrapper small{font-size:80%!important}.pt-cv-wrapper sub,.pt-cv-wrapper sup{font-size:75%!important;line-height:0!important;position:relative!important;vertical-align:baseline!important}.pt-cv-wrapper sup{top:-0.5em!important}.pt-cv-wrapper sub{bottom:-0.25em!important}.pt-cv-wrapper img{border:0!important}.pt-cv-wrapper svg:not(:root){overflow:hidden!important}.pt-cv-wrapper hr{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important;height:0!important}.pt-cv-wrapper pre{overflow:auto!important}.pt-cv-wrapper code,.pt-cv-wrapper kbd,.pt-cv-wrapper pre,.pt-cv-wrapper samp{font-family:monospace,monospace!important;font-size:1em!important}.pt-cv-wrapper button,.pt-cv-wrapper input,.pt-cv-wrapper optgroup,.pt-cv-wrapper select,.pt-cv-wrapper textarea{color:inherit!important;font:inherit!important;margin:0!important}.pt-cv-wrapper button{overflow:visible!important}.pt-cv-wrapper button,.pt-cv-wrapper select{text-transform:none!important}.pt-cv-wrapper button,.pt-cv-wrapper html input[type="button"],.pt-cv-wrapper input[type="reset"],.pt-cv-wrapper input[type="submit"]{-webkit-appearance:button!important;cursor:pointer!important}.pt-cv-wrapper button[disabled],.pt-cv-wrapper html input[disabled]{cursor:default!important}.pt-cv-wrapper button::-moz-focus-inner,.pt-cv-wrapper input::-moz-focus-inner{border:0!important;padding:0!important}.pt-cv-wrapper input{line-height:normal!important}.pt-cv-wrapper input[type="checkbox"],.pt-cv-wrapper input[type="radio"]{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important;padding:0!important}.pt-cv-wrapper input[type="number"]::-webkit-inner-spin-button,.pt-cv-wrapper input[type="number"]::-webkit-outer-spin-button{height:auto!important}.pt-cv-wrapper input[type="search"]{-webkit-appearance:textfield!important;-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.pt-cv-wrapper input[type="search"]::-webkit-search-cancel-button,.pt-cv-wrapper input[type="search"]::-webkit-search-decoration{-webkit-appearance:none!important}.pt-cv-wrapper fieldset{border:1px solid #c0c0c0!important;margin:0 2px!important;padding:.35em .625em .75em!important}.pt-cv-wrapper legend{border:0!important;padding:0!important}.pt-cv-wrapper textarea{overflow:auto!important}.pt-cv-wrapper optgroup{font-weight:bold!important}.pt-cv-wrapper table{border-collapse:collapse!important;border-spacing:0!important}.pt-cv-wrapper td,.pt-cv-wrapper th{padding:0!important}@media print{.pt-cv-wrapper *,.pt-cv-wrapper *:before,.pt-cv-wrapper *:after{background:transparent!important;color:#000!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}.pt-cv-wrapper a,.pt-cv-wrapper a:visited{text-decoration:underline!important}.pt-cv-wrapper a[href]:after{content:" (" attr(href) ")"!important}.pt-cv-wrapper abbr[title]:after{content:" (" attr(title) ")"!important}.pt-cv-wrapper a[href^="#"]:after,.pt-cv-wrapper a[href^="javascript:"]:after{content:""!important}.pt-cv-wrapper pre,.pt-cv-wrapper blockquote{border:1px solid #999!important;page-break-inside:avoid!important}.pt-cv-wrapper thead{display:table-header-group!important}.pt-cv-wrapper tr,.pt-cv-wrapper img{page-break-inside:avoid!important}.pt-cv-wrapper img{max-width:100%!important}.pt-cv-wrapper p,.pt-cv-wrapper h2,.pt-cv-wrapper h3{orphans:3!important;widows:3!important}.pt-cv-wrapper h2,.pt-cv-wrapper h3{page-break-after:avoid!important}.pt-cv-wrapper .navbar{display:none!important}.pt-cv-wrapper .btn>.caret,.pt-cv-wrapper .dropup>.btn>.caret{border-top-color:#000!important}.pt-cv-wrapper .label{border:1px solid #000!important}.pt-cv-wrapper .table{border-collapse:collapse!important}.pt-cv-wrapper .table td,.pt-cv-wrapper .table th{background-color:#fff!important}.pt-cv-wrapper .table-bordered th,.pt-cv-wrapper .table-bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.pt-cv-wrapper .glyphicon{position:relative!important;top:1px!important;display:inline-block!important;font-family:'Glyphicons Halflings'!important;font-style:normal!important;font-weight:normal!important;line-height:1!important;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale!important}.pt-cv-wrapper .glyphicon-asterisk:before{content:"\2a"!important}.pt-cv-wrapper .glyphicon-plus:before{content:"\2b"!important}.pt-cv-wrapper .glyphicon-euro:before,.pt-cv-wrapper .glyphicon-eur:before{content:"\20ac"!important}.pt-cv-wrapper .glyphicon-minus:before{content:"\2212"!important}.pt-cv-wrapper .glyphicon-cloud:before{content:"\2601"!important}.pt-cv-wrapper .glyphicon-envelope:before{content:"\2709"!important}.pt-cv-wrapper .glyphicon-pencil:before{content:"\270f"!important}.pt-cv-wrapper .glyphicon-glass:before{content:"\e001"!important}.pt-cv-wrapper .glyphicon-music:before{content:"\e002"!important}.pt-cv-wrapper .glyphicon-search:before{content:"\e003"!important}.pt-cv-wrapper .glyphicon-heart:before{content:"\e005"!important}.pt-cv-wrapper .glyphicon-star:before{content:"\e006"!important}.pt-cv-wrapper .glyphicon-star-empty:before{content:"\e007"!important}.pt-cv-wrapper .glyphicon-user:before{content:"\e008"!important}.pt-cv-wrapper .glyphicon-film:before{content:"\e009"!important}.pt-cv-wrapper .glyphicon-th-large:before{content:"\e010"!important}.pt-cv-wrapper .glyphicon-th:before{content:"\e011"!important}.pt-cv-wrapper .glyphicon-th-list:before{content:"\e012"!important}.pt-cv-wrapper .glyphicon-ok:before{content:"\e013"!important}.pt-cv-wrapper .glyphicon-remove:before{content:"\e014"!important}.pt-cv-wrapper .glyphicon-zoom-in:before{content:"\e015"!important}.pt-cv-wrapper .glyphicon-zoom-out:before{content:"\e016"!important}.pt-cv-wrapper .glyphicon-off:before{content:"\e017"!important}.pt-cv-wrapper .glyphicon-signal:before{content:"\e018"!important}.pt-cv-wrapper .glyphicon-cog:before{content:"\e019"!important}.pt-cv-wrapper .glyphicon-trash:before{content:"\e020"!important}.pt-cv-wrapper .glyphicon-home:before{content:"\e021"!important}.pt-cv-wrapper .glyphicon-file:before{content:"\e022"!important}.pt-cv-wrapper .glyphicon-time:before{content:"\e023"!important}.pt-cv-wrapper .glyphicon-road:before{content:"\e024"!important}.pt-cv-wrapper .glyphicon-download-alt:before{content:"\e025"!important}.pt-cv-wrapper .glyphicon-download:before{content:"\e026"!important}.pt-cv-wrapper .glyphicon-upload:before{content:"\e027"!important}.pt-cv-wrapper .glyphicon-inbox:before{content:"\e028"!important}.pt-cv-wrapper .glyphicon-play-circle:before{content:"\e029"!important}.pt-cv-wrapper .glyphicon-repeat:before{content:"\e030"!important}.pt-cv-wrapper .glyphicon-refresh:before{content:"\e031"!important}.pt-cv-wrapper .glyphicon-list-alt:before{content:"\e032"!important}.pt-cv-wrapper .glyphicon-lock:before{content:"\e033"!important}.pt-cv-wrapper .glyphicon-flag:before{content:"\e034"!important}.pt-cv-wrapper .glyphicon-headphones:before{content:"\e035"!important}.pt-cv-wrapper .glyphicon-volume-off:before{content:"\e036"!important}.pt-cv-wrapper .glyphicon-volume-down:before{content:"\e037"!important}.pt-cv-wrapper .glyphicon-volume-up:before{content:"\e038"!important}.pt-cv-wrapper .glyphicon-qrcode:before{content:"\e039"!important}.pt-cv-wrapper .glyphicon-barcode:before{content:"\e040"!important}.pt-cv-wrapper .glyphicon-tag:before{content:"\e041"!important}.pt-cv-wrapper .glyphicon-tags:before{content:"\e042"!important}.pt-cv-wrapper .glyphicon-book:before{content:"\e043"!important}.pt-cv-wrapper .glyphicon-bookmark:before{content:"\e044"!important}.pt-cv-wrapper .glyphicon-print:before{content:"\e045"!important}.pt-cv-wrapper .glyphicon-camera:before{content:"\e046"!important}.pt-cv-wrapper .glyphicon-font:before{content:"\e047"!important}.pt-cv-wrapper .glyphicon-bold:before{content:"\e048"!important}.pt-cv-wrapper .glyphicon-italic:before{content:"\e049"!important}.pt-cv-wrapper .glyphicon-text-height:before{content:"\e050"!important}.pt-cv-wrapper .glyphicon-text-width:before{content:"\e051"!important}.pt-cv-wrapper .glyphicon-align-left:before{content:"\e052"!important}.pt-cv-wrapper .glyphicon-align-center:before{content:"\e053"!important}.pt-cv-wrapper .glyphicon-align-right:before{content:"\e054"!important}.pt-cv-wrapper .glyphicon-align-justify:before{content:"\e055"!important}.pt-cv-wrapper .glyphicon-list:before{content:"\e056"!important}.pt-cv-wrapper .glyphicon-indent-left:before{content:"\e057"!important}.pt-cv-wrapper .glyphicon-indent-right:before{content:"\e058"!important}.pt-cv-wrapper .glyphicon-facetime-video:before{content:"\e059"!important}.pt-cv-wrapper .glyphicon-picture:before{content:"\e060"!important}.pt-cv-wrapper .glyphicon-map-marker:before{content:"\e062"!important}.pt-cv-wrapper .glyphicon-adjust:before{content:"\e063"!important}.pt-cv-wrapper .glyphicon-tint:before{content:"\e064"!important}.pt-cv-wrapper .glyphicon-edit:before{content:"\e065"!important}.pt-cv-wrapper .glyphicon-share:before{content:"\e066"!important}.pt-cv-wrapper .glyphicon-check:before{content:"\e067"!important}.pt-cv-wrapper .glyphicon-move:before{content:"\e068"!important}.pt-cv-wrapper .glyphicon-step-backward:before{content:"\e069"!important}.pt-cv-wrapper .glyphicon-fast-backward:before{content:"\e070"!important}.pt-cv-wrapper .glyphicon-backward:before{content:"\e071"!important}.pt-cv-wrapper .glyphicon-play:before{content:"\e072"!important}.pt-cv-wrapper .glyphicon-pause:before{content:"\e073"!important}.pt-cv-wrapper .glyphicon-stop:before{content:"\e074"!important}.pt-cv-wrapper .glyphicon-forward:before{content:"\e075"!important}.pt-cv-wrapper .glyphicon-fast-forward:before{content:"\e076"!important}.pt-cv-wrapper .glyphicon-step-forward:before{content:"\e077"!important}.pt-cv-wrapper .glyphicon-eject:before{content:"\e078"!important}.pt-cv-wrapper .glyphicon-chevron-left:before{content:"\e079"!important}.pt-cv-wrapper .glyphicon-chevron-right:before{content:"\e080"!important}.pt-cv-wrapper .glyphicon-plus-sign:before{content:"\e081"!important}.pt-cv-wrapper .glyphicon-minus-sign:before{content:"\e082"!important}.pt-cv-wrapper .glyphicon-remove-sign:before{content:"\e083"!important}.pt-cv-wrapper .glyphicon-ok-sign:before{content:"\e084"!important}.pt-cv-wrapper .glyphicon-question-sign:before{content:"\e085"!important}.pt-cv-wrapper .glyphicon-info-sign:before{content:"\e086"!important}.pt-cv-wrapper .glyphicon-screenshot:before{content:"\e087"!important}.pt-cv-wrapper .glyphicon-remove-circle:before{content:"\e088"!important}.pt-cv-wrapper .glyphicon-ok-circle:before{content:"\e089"!important}.pt-cv-wrapper .glyphicon-ban-circle:before{content:"\e090"!important}.pt-cv-wrapper .glyphicon-arrow-left:before{content:"\e091"!important}.pt-cv-wrapper .glyphicon-arrow-right:before{content:"\e092"!important}.pt-cv-wrapper .glyphicon-arrow-up:before{content:"\e093"!important}.pt-cv-wrapper .glyphicon-arrow-down:before{content:"\e094"!important}.pt-cv-wrapper .glyphicon-share-alt:before{content:"\e095"!important}.pt-cv-wrapper .glyphicon-resize-full:before{content:"\e096"!important}.pt-cv-wrapper .glyphicon-resize-small:before{content:"\e097"!important}.pt-cv-wrapper .glyphicon-exclamation-sign:before{content:"\e101"!important}.pt-cv-wrapper .glyphicon-gift:before{content:"\e102"!important}.pt-cv-wrapper .glyphicon-leaf:before{content:"\e103"!important}.pt-cv-wrapper .glyphicon-fire:before{content:"\e104"!important}.pt-cv-wrapper .glyphicon-eye-open:before{content:"\e105"!important}.pt-cv-wrapper .glyphicon-eye-close:before{content:"\e106"!important}.pt-cv-wrapper .glyphicon-warning-sign:before{content:"\e107"!important}.pt-cv-wrapper .glyphicon-plane:before{content:"\e108"!important}.pt-cv-wrapper .glyphicon-calendar:before{content:"\e109"!important}.pt-cv-wrapper .glyphicon-random:before{content:"\e110"!important}.pt-cv-wrapper .glyphicon-comment:before{content:"\e111"!important}.pt-cv-wrapper .glyphicon-magnet:before{content:"\e112"!important}.pt-cv-wrapper .glyphicon-chevron-up:before{content:"\e113"!important}.pt-cv-wrapper .glyphicon-chevron-down:before{content:"\e114"!important}.pt-cv-wrapper .glyphicon-retweet:before{content:"\e115"!important}.pt-cv-wrapper .glyphicon-shopping-cart:before{content:"\e116"!important}.pt-cv-wrapper .glyphicon-folder-close:before{content:"\e117"!important}.pt-cv-wrapper .glyphicon-folder-open:before{content:"\e118"!important}.pt-cv-wrapper .glyphicon-resize-vertical:before{content:"\e119"!important}.pt-cv-wrapper .glyphicon-resize-horizontal:before{content:"\e120"!important}.pt-cv-wrapper .glyphicon-hdd:before{content:"\e121"!important}.pt-cv-wrapper .glyphicon-bullhorn:before{content:"\e122"!important}.pt-cv-wrapper .glyphicon-bell:before{content:"\e123"!important}.pt-cv-wrapper .glyphicon-certificate:before{content:"\e124"!important}.pt-cv-wrapper .glyphicon-thumbs-up:before{content:"\e125"!important}.pt-cv-wrapper .glyphicon-thumbs-down:before{content:"\e126"!important}.pt-cv-wrapper .glyphicon-hand-right:before{content:"\e127"!important}.pt-cv-wrapper .glyphicon-hand-left:before{content:"\e128"!important}.pt-cv-wrapper .glyphicon-hand-up:before{content:"\e129"!important}.pt-cv-wrapper .glyphicon-hand-down:before{content:"\e130"!important}.pt-cv-wrapper .glyphicon-circle-arrow-right:before{content:"\e131"!important}.pt-cv-wrapper .glyphicon-circle-arrow-left:before{content:"\e132"!important}.pt-cv-wrapper .glyphicon-circle-arrow-up:before{content:"\e133"!important}.pt-cv-wrapper .glyphicon-circle-arrow-down:before{content:"\e134"!important}.pt-cv-wrapper .glyphicon-globe:before{content:"\e135"!important}.pt-cv-wrapper .glyphicon-wrench:before{content:"\e136"!important}.pt-cv-wrapper .glyphicon-tasks:before{content:"\e137"!important}.pt-cv-wrapper .glyphicon-filter:before{content:"\e138"!important}.pt-cv-wrapper .glyphicon-briefcase:before{content:"\e139"!important}.pt-cv-wrapper .glyphicon-fullscreen:before{content:"\e140"!important}.pt-cv-wrapper .glyphicon-dashboard:before{content:"\e141"!important}.pt-cv-wrapper .glyphicon-paperclip:before{content:"\e142"!important}.pt-cv-wrapper .glyphicon-heart-empty:before{content:"\e143"!important}.pt-cv-wrapper .glyphicon-link:before{content:"\e144"!important}.pt-cv-wrapper .glyphicon-phone:before{content:"\e145"!important}.pt-cv-wrapper .glyphicon-pushpin:before{content:"\e146"!important}.pt-cv-wrapper .glyphicon-usd:before{content:"\e148"!important}.pt-cv-wrapper .glyphicon-gbp:before{content:"\e149"!important}.pt-cv-wrapper .glyphicon-sort:before{content:"\e150"!important}.pt-cv-wrapper .glyphicon-sort-by-alphabet:before{content:"\e151"!important}.pt-cv-wrapper .glyphicon-sort-by-alphabet-alt:before{content:"\e152"!important}.pt-cv-wrapper .glyphicon-sort-by-order:before{content:"\e153"!important}.pt-cv-wrapper .glyphicon-sort-by-order-alt:before{content:"\e154"!important}.pt-cv-wrapper .glyphicon-sort-by-attributes:before{content:"\e155"!important}.pt-cv-wrapper .glyphicon-sort-by-attributes-alt:before{content:"\e156"!important}.pt-cv-wrapper .glyphicon-unchecked:before{content:"\e157"!important}.pt-cv-wrapper .glyphicon-expand:before{content:"\e158"!important}.pt-cv-wrapper .glyphicon-collapse-down:before{content:"\e159"!important}.pt-cv-wrapper .glyphicon-collapse-up:before{content:"\e160"!important}.pt-cv-wrapper .glyphicon-log-in:before{content:"\e161"!important}.pt-cv-wrapper .glyphicon-flash:before{content:"\e162"!important}.pt-cv-wrapper .glyphicon-log-out:before{content:"\e163"!important}.pt-cv-wrapper .glyphicon-new-window:before{content:"\e164"!important}.pt-cv-wrapper .glyphicon-record:before{content:"\e165"!important}.pt-cv-wrapper .glyphicon-save:before{content:"\e166"!important}.pt-cv-wrapper .glyphicon-open:before{content:"\e167"!important}.pt-cv-wrapper .glyphicon-saved:before{content:"\e168"!important}.pt-cv-wrapper .glyphicon-import:before{content:"\e169"!important}.pt-cv-wrapper .glyphicon-export:before{content:"\e170"!important}.pt-cv-wrapper .glyphicon-send:before{content:"\e171"!important}.pt-cv-wrapper .glyphicon-floppy-disk:before{content:"\e172"!important}.pt-cv-wrapper .glyphicon-floppy-saved:before{content:"\e173"!important}.pt-cv-wrapper .glyphicon-floppy-remove:before{content:"\e174"!important}.pt-cv-wrapper .glyphicon-floppy-save:before{content:"\e175"!important}.pt-cv-wrapper .glyphicon-floppy-open:before{content:"\e176"!important}.pt-cv-wrapper .glyphicon-credit-card:before{content:"\e177"!important}.pt-cv-wrapper .glyphicon-transfer:before{content:"\e178"!important}.pt-cv-wrapper .glyphicon-cutlery:before{content:"\e179"!important}.pt-cv-wrapper .glyphicon-header:before{content:"\e180"!important}.pt-cv-wrapper .glyphicon-compressed:before{content:"\e181"!important}.pt-cv-wrapper .glyphicon-earphone:before{content:"\e182"!important}.pt-cv-wrapper .glyphicon-phone-alt:before{content:"\e183"!important}.pt-cv-wrapper .glyphicon-tower:before{content:"\e184"!important}.pt-cv-wrapper .glyphicon-stats:before{content:"\e185"!important}.pt-cv-wrapper .glyphicon-sd-video:before{content:"\e186"!important}.pt-cv-wrapper .glyphicon-hd-video:before{content:"\e187"!important}.pt-cv-wrapper .glyphicon-subtitles:before{content:"\e188"!important}.pt-cv-wrapper .glyphicon-sound-stereo:before{content:"\e189"!important}.pt-cv-wrapper .glyphicon-sound-dolby:before{content:"\e190"!important}.pt-cv-wrapper .glyphicon-sound-5-1:before{content:"\e191"!important}.pt-cv-wrapper .glyphicon-sound-6-1:before{content:"\e192"!important}.pt-cv-wrapper .glyphicon-sound-7-1:before{content:"\e193"!important}.pt-cv-wrapper .glyphicon-copyright-mark:before{content:"\e194"!important}.pt-cv-wrapper .glyphicon-registration-mark:before{content:"\e195"!important}.pt-cv-wrapper .glyphicon-cloud-download:before{content:"\e197"!important}.pt-cv-wrapper .glyphicon-cloud-upload:before{content:"\e198"!important}.pt-cv-wrapper .glyphicon-tree-conifer:before{content:"\e199"!important}.pt-cv-wrapper .glyphicon-tree-deciduous:before{content:"\e200"!important}.pt-cv-wrapper .glyphicon-cd:before{content:"\e201"!important}.pt-cv-wrapper .glyphicon-save-file:before{content:"\e202"!important}.pt-cv-wrapper .glyphicon-open-file:before{content:"\e203"!important}.pt-cv-wrapper .glyphicon-level-up:before{content:"\e204"!important}.pt-cv-wrapper .glyphicon-copy:before{content:"\e205"!important}.pt-cv-wrapper .glyphicon-paste:before{content:"\e206"!important}.pt-cv-wrapper .glyphicon-alert:before{content:"\e209"!important}.pt-cv-wrapper .glyphicon-equalizer:before{content:"\e210"!important}.pt-cv-wrapper .glyphicon-king:before{content:"\e211"!important}.pt-cv-wrapper .glyphicon-queen:before{content:"\e212"!important}.pt-cv-wrapper .glyphicon-pawn:before{content:"\e213"!important}.pt-cv-wrapper .glyphicon-bishop:before{content:"\e214"!important}.pt-cv-wrapper .glyphicon-knight:before{content:"\e215"!important}.pt-cv-wrapper .glyphicon-baby-formula:before{content:"\e216"!important}.pt-cv-wrapper .glyphicon-tent:before{content:"\26fa"!important}.pt-cv-wrapper .glyphicon-blackboard:before{content:"\e218"!important}.pt-cv-wrapper .glyphicon-bed:before{content:"\e219"!important}.pt-cv-wrapper .glyphicon-apple:before{content:"\f8ff"!important}.pt-cv-wrapper .glyphicon-erase:before{content:"\e221"!important}.pt-cv-wrapper .glyphicon-hourglass:before{content:"\231b"!important}.pt-cv-wrapper .glyphicon-lamp:before{content:"\e223"!important}.pt-cv-wrapper .glyphicon-duplicate:before{content:"\e224"!important}.pt-cv-wrapper .glyphicon-piggy-bank:before{content:"\e225"!important}.pt-cv-wrapper .glyphicon-scissors:before{content:"\e226"!important}.pt-cv-wrapper .glyphicon-bitcoin:before{content:"\e227"!important}.pt-cv-wrapper .glyphicon-btc:before{content:"\e227"!important}.pt-cv-wrapper .glyphicon-xbt:before{content:"\e227"!important}.pt-cv-wrapper .glyphicon-yen:before{content:"\00a5"!important}.pt-cv-wrapper .glyphicon-jpy:before{content:"\00a5"!important}.pt-cv-wrapper .glyphicon-ruble:before{content:"\20bd"!important}.pt-cv-wrapper .glyphicon-rub:before{content:"\20bd"!important}.pt-cv-wrapper .glyphicon-scale:before{content:"\e230"!important}.pt-cv-wrapper .glyphicon-ice-lolly:before{content:"\e231"!important}.pt-cv-wrapper .glyphicon-ice-lolly-tasted:before{content:"\e232"!important}.pt-cv-wrapper .glyphicon-education:before{content:"\e233"!important}.pt-cv-wrapper .glyphicon-option-horizontal:before{content:"\e234"!important}.pt-cv-wrapper .glyphicon-option-vertical:before{content:"\e235"!important}.pt-cv-wrapper .glyphicon-menu-hamburger:before{content:"\e236"!important}.pt-cv-wrapper .glyphicon-modal-window:before{content:"\e237"!important}.pt-cv-wrapper .glyphicon-oil:before{content:"\e238"!important}.pt-cv-wrapper .glyphicon-grain:before{content:"\e239"!important}.pt-cv-wrapper .glyphicon-sunglasses:before{content:"\e240"!important}.pt-cv-wrapper .glyphicon-text-size:before{content:"\e241"!important}.pt-cv-wrapper .glyphicon-text-color:before{content:"\e242"!important}.pt-cv-wrapper .glyphicon-text-background:before{content:"\e243"!important}.pt-cv-wrapper .glyphicon-object-align-top:before{content:"\e244"!important}.pt-cv-wrapper .glyphicon-object-align-bottom:before{content:"\e245"!important}.pt-cv-wrapper .glyphicon-object-align-horizontal:before{content:"\e246"!important}.pt-cv-wrapper .glyphicon-object-align-left:before{content:"\e247"!important}.pt-cv-wrapper .glyphicon-object-align-vertical:before{content:"\e248"!important}.pt-cv-wrapper .glyphicon-object-align-right:before{content:"\e249"!important}.pt-cv-wrapper .glyphicon-triangle-right:before{content:"\e250"!important}.pt-cv-wrapper .glyphicon-triangle-left:before{content:"\e251"!important}.pt-cv-wrapper .glyphicon-triangle-bottom:before{content:"\e252"!important}.pt-cv-wrapper .glyphicon-triangle-top:before{content:"\e253"!important}.pt-cv-wrapper .glyphicon-console:before{content:"\e254"!important}.pt-cv-wrapper .glyphicon-superscript:before{content:"\e255"!important}.pt-cv-wrapper .glyphicon-subscript:before{content:"\e256"!important}.pt-cv-wrapper .glyphicon-menu-left:before{content:"\e257"!important}.pt-cv-wrapper .glyphicon-menu-right:before{content:"\e258"!important}.pt-cv-wrapper .glyphicon-menu-down:before{content:"\e259"!important}.pt-cv-wrapper .glyphicon-menu-up:before{content:"\e260"!important}.pt-cv-wrapper img{vertical-align:middle!important}.pt-cv-wrapper .img-responsive,.pt-cv-wrapper .thumbnail>img,.pt-cv-wrapper .thumbnail a>img,.pt-cv-wrapper .carousel-inner>.item>img,.pt-cv-wrapper .carousel-inner>.item>a>img{display:block!important;max-width:100%!important;height:auto!important}.pt-cv-wrapper .img-rounded{border-radius:6px!important}.pt-cv-wrapper .img-thumbnail{padding:4px!important;line-height:1.42857143!important;background-color:#fff!important;border:1px solid #ddd!important;border-radius:4px!important;-webkit-transition:all .2s ease-in-out!important;-o-transition:all .2s ease-in-out!important;transition:all .2s ease-in-out!important;display:inline-block!important;max-width:100%!important;height:auto!important}.pt-cv-wrapper .img-circle{border-radius:50%!important}.pt-cv-wrapper hr{margin-top:20px!important;margin-bottom:20px!important;border:0!important;border-top:1px solid #eee!important}.pt-cv-wrapper .sr-only{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;border:0!important}.pt-cv-wrapper .sr-only-focusable:active,.pt-cv-wrapper .sr-only-focusable:focus{position:static!important;width:auto!important;height:auto!important;margin:0!important;overflow:visible!important;clip:auto!important}.pt-cv-wrapper [role="button"]{cursor:pointer!important}.pt-cv-wrapper .container{margin-right:auto!important;margin-left:auto!important;padding-left:15px!important;padding-right:15px!important}@media(min-width:768px){.pt-cv-wrapper .container{width:750px!important}}@media(min-width:992px){.pt-cv-wrapper .container{width:970px!important}}@media(min-width:1200px){.pt-cv-wrapper .container{width:1170px!important}}.pt-cv-wrapper .container-fluid{margin-right:auto!important;margin-left:auto!important;padding-left:15px!important;padding-right:15px!important}.pt-cv-wrapper .row{margin-left:-15px!important;margin-right:-15px!important}.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-xs-9,.pt-cv-wrapper .col-sm-9,.pt-cv-wrapper .col-md-9,.pt-cv-wrapper .col-lg-9,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-xs-12,.pt-cv-wrapper .col-sm-12,.pt-cv-wrapper .col-md-12,.pt-cv-wrapper .col-lg-12{position:relative!important;min-height:1px!important;padding-left:15px!important;padding-right:15px!important}.pt-cv-wrapper .col-xs-1,.pt-cv-wrapper .col-xs-2,.pt-cv-wrapper .col-xs-3,.pt-cv-wrapper .col-xs-4,.pt-cv-wrapper .col-xs-5,.pt-cv-wrapper .col-xs-6,.pt-cv-wrapper .col-xs-7,.pt-cv-wrapper .col-xs-8,.pt-cv-wrapper .col-xs-9,.pt-cv-wrapper .col-xs-10,.pt-cv-wrapper .col-xs-11,.pt-cv-wrapper .col-xs-12{float:left!important}.pt-cv-wrapper .col-xs-12{width:100%!important}.pt-cv-wrapper .col-xs-11{width:91.66666667%!important}.pt-cv-wrapper .col-xs-10{width:83.33333333%!important}.pt-cv-wrapper .col-xs-9{width:75%!important}.pt-cv-wrapper .col-xs-8{width:66.66666667%!important}.pt-cv-wrapper .col-xs-7{width:58.33333333%!important}.pt-cv-wrapper .col-xs-6{width:50%!important}.pt-cv-wrapper .col-xs-5{width:41.66666667%!important}.pt-cv-wrapper .col-xs-4{width:33.33333333%!important}.pt-cv-wrapper .col-xs-3{width:25%!important}.pt-cv-wrapper .col-xs-2{width:16.66666667%!important}.pt-cv-wrapper .col-xs-1{width:8.33333333%!important}.pt-cv-wrapper .col-xs-pull-12{right:100%!important}.pt-cv-wrapper .col-xs-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-xs-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-xs-pull-9{right:75%!important}.pt-cv-wrapper .col-xs-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-xs-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-xs-pull-6{right:50%!important}.pt-cv-wrapper .col-xs-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-xs-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-xs-pull-3{right:25%!important}.pt-cv-wrapper .col-xs-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-xs-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-xs-pull-0{right:auto!important}.pt-cv-wrapper .col-xs-push-12{left:100%!important}.pt-cv-wrapper .col-xs-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-xs-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-xs-push-9{left:75%!important}.pt-cv-wrapper .col-xs-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-xs-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-xs-push-6{left:50%!important}.pt-cv-wrapper .col-xs-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-xs-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-xs-push-3{left:25%!important}.pt-cv-wrapper .col-xs-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-xs-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-xs-push-0{left:auto!important}.pt-cv-wrapper .col-xs-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-xs-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-xs-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-xs-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-xs-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-xs-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-xs-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-xs-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-xs-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-xs-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-xs-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-xs-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-xs-offset-0{margin-left:0!important}@media(min-width:768px){.pt-cv-wrapper .col-sm-1,.pt-cv-wrapper .col-sm-2,.pt-cv-wrapper .col-sm-3,.pt-cv-wrapper .col-sm-4,.pt-cv-wrapper .col-sm-5,.pt-cv-wrapper .col-sm-6,.pt-cv-wrapper .col-sm-7,.pt-cv-wrapper .col-sm-8,.pt-cv-wrapper .col-sm-9,.pt-cv-wrapper .col-sm-10,.pt-cv-wrapper .col-sm-11,.pt-cv-wrapper .col-sm-12{float:left!important}.pt-cv-wrapper .col-sm-12{width:100%!important}.pt-cv-wrapper .col-sm-11{width:91.66666667%!important}.pt-cv-wrapper .col-sm-10{width:83.33333333%!important}.pt-cv-wrapper .col-sm-9{width:75%!important}.pt-cv-wrapper .col-sm-8{width:66.66666667%!important}.pt-cv-wrapper .col-sm-7{width:58.33333333%!important}.pt-cv-wrapper .col-sm-6{width:50%!important}.pt-cv-wrapper .col-sm-5{width:41.66666667%!important}.pt-cv-wrapper .col-sm-4{width:33.33333333%!important}.pt-cv-wrapper .col-sm-3{width:25%!important}.pt-cv-wrapper .col-sm-2{width:16.66666667%!important}.pt-cv-wrapper .col-sm-1{width:8.33333333%!important}.pt-cv-wrapper .col-sm-pull-12{right:100%!important}.pt-cv-wrapper .col-sm-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-sm-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-sm-pull-9{right:75%!important}.pt-cv-wrapper .col-sm-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-sm-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-sm-pull-6{right:50%!important}.pt-cv-wrapper .col-sm-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-sm-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-sm-pull-3{right:25%!important}.pt-cv-wrapper .col-sm-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-sm-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-sm-pull-0{right:auto!important}.pt-cv-wrapper .col-sm-push-12{left:100%!important}.pt-cv-wrapper .col-sm-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-sm-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-sm-push-9{left:75%!important}.pt-cv-wrapper .col-sm-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-sm-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-sm-push-6{left:50%!important}.pt-cv-wrapper .col-sm-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-sm-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-sm-push-3{left:25%!important}.pt-cv-wrapper .col-sm-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-sm-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-sm-push-0{left:auto!important}.pt-cv-wrapper .col-sm-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-sm-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-sm-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-sm-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-sm-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-sm-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-sm-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-sm-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-sm-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-sm-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-sm-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-sm-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-sm-offset-0{margin-left:0!important}}@media(min-width:992px){.pt-cv-wrapper .col-md-1,.pt-cv-wrapper .col-md-2,.pt-cv-wrapper .col-md-3,.pt-cv-wrapper .col-md-4,.pt-cv-wrapper .col-md-5,.pt-cv-wrapper .col-md-6,.pt-cv-wrapper .col-md-7,.pt-cv-wrapper .col-md-8,.pt-cv-wrapper .col-md-9,.pt-cv-wrapper .col-md-10,.pt-cv-wrapper .col-md-11,.pt-cv-wrapper .col-md-12{float:left!important}.pt-cv-wrapper .col-md-12{width:100%!important}.pt-cv-wrapper .col-md-11{width:91.66666667%!important}.pt-cv-wrapper .col-md-10{width:83.33333333%!important}.pt-cv-wrapper .col-md-9{width:75%!important}.pt-cv-wrapper .col-md-8{width:66.66666667%!important}.pt-cv-wrapper .col-md-7{width:58.33333333%!important}.pt-cv-wrapper .col-md-6{width:50%!important}.pt-cv-wrapper .col-md-5{width:41.66666667%!important}.pt-cv-wrapper .col-md-4{width:33.33333333%!important}.pt-cv-wrapper .col-md-3{width:25%!important}.pt-cv-wrapper .col-md-2{width:16.66666667%!important}.pt-cv-wrapper .col-md-1{width:8.33333333%!important}.pt-cv-wrapper .col-md-pull-12{right:100%!important}.pt-cv-wrapper .col-md-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-md-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-md-pull-9{right:75%!important}.pt-cv-wrapper .col-md-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-md-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-md-pull-6{right:50%!important}.pt-cv-wrapper .col-md-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-md-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-md-pull-3{right:25%!important}.pt-cv-wrapper .col-md-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-md-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-md-pull-0{right:auto!important}.pt-cv-wrapper .col-md-push-12{left:100%!important}.pt-cv-wrapper .col-md-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-md-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-md-push-9{left:75%!important}.pt-cv-wrapper .col-md-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-md-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-md-push-6{left:50%!important}.pt-cv-wrapper .col-md-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-md-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-md-push-3{left:25%!important}.pt-cv-wrapper .col-md-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-md-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-md-push-0{left:auto!important}.pt-cv-wrapper .col-md-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-md-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-md-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-md-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-md-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-md-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-md-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-md-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-md-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-md-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-md-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-md-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-md-offset-0{margin-left:0!important}}@media(min-width:1200px){.pt-cv-wrapper .col-lg-1,.pt-cv-wrapper .col-lg-2,.pt-cv-wrapper .col-lg-3,.pt-cv-wrapper .col-lg-4,.pt-cv-wrapper .col-lg-5,.pt-cv-wrapper .col-lg-6,.pt-cv-wrapper .col-lg-7,.pt-cv-wrapper .col-lg-8,.pt-cv-wrapper .col-lg-9,.pt-cv-wrapper .col-lg-10,.pt-cv-wrapper .col-lg-11,.pt-cv-wrapper .col-lg-12{float:left!important}.pt-cv-wrapper .col-lg-12{width:100%!important}.pt-cv-wrapper .col-lg-11{width:91.66666667%!important}.pt-cv-wrapper .col-lg-10{width:83.33333333%!important}.pt-cv-wrapper .col-lg-9{width:75%!important}.pt-cv-wrapper .col-lg-8{width:66.66666667%!important}.pt-cv-wrapper .col-lg-7{width:58.33333333%!important}.pt-cv-wrapper .col-lg-6{width:50%!important}.pt-cv-wrapper .col-lg-5{width:41.66666667%!important}.pt-cv-wrapper .col-lg-4{width:33.33333333%!important}.pt-cv-wrapper .col-lg-3{width:25%!important}.pt-cv-wrapper .col-lg-2{width:16.66666667%!important}.pt-cv-wrapper .col-lg-1{width:8.33333333%!important}.pt-cv-wrapper .col-lg-pull-12{right:100%!important}.pt-cv-wrapper .col-lg-pull-11{right:91.66666667%!important}.pt-cv-wrapper .col-lg-pull-10{right:83.33333333%!important}.pt-cv-wrapper .col-lg-pull-9{right:75%!important}.pt-cv-wrapper .col-lg-pull-8{right:66.66666667%!important}.pt-cv-wrapper .col-lg-pull-7{right:58.33333333%!important}.pt-cv-wrapper .col-lg-pull-6{right:50%!important}.pt-cv-wrapper .col-lg-pull-5{right:41.66666667%!important}.pt-cv-wrapper .col-lg-pull-4{right:33.33333333%!important}.pt-cv-wrapper .col-lg-pull-3{right:25%!important}.pt-cv-wrapper .col-lg-pull-2{right:16.66666667%!important}.pt-cv-wrapper .col-lg-pull-1{right:8.33333333%!important}.pt-cv-wrapper .col-lg-pull-0{right:auto!important}.pt-cv-wrapper .col-lg-push-12{left:100%!important}.pt-cv-wrapper .col-lg-push-11{left:91.66666667%!important}.pt-cv-wrapper .col-lg-push-10{left:83.33333333%!important}.pt-cv-wrapper .col-lg-push-9{left:75%!important}.pt-cv-wrapper .col-lg-push-8{left:66.66666667%!important}.pt-cv-wrapper .col-lg-push-7{left:58.33333333%!important}.pt-cv-wrapper .col-lg-push-6{left:50%!important}.pt-cv-wrapper .col-lg-push-5{left:41.66666667%!important}.pt-cv-wrapper .col-lg-push-4{left:33.33333333%!important}.pt-cv-wrapper .col-lg-push-3{left:25%!important}.pt-cv-wrapper .col-lg-push-2{left:16.66666667%!important}.pt-cv-wrapper .col-lg-push-1{left:8.33333333%!important}.pt-cv-wrapper .col-lg-push-0{left:auto!important}.pt-cv-wrapper .col-lg-offset-12{margin-left:100%!important}.pt-cv-wrapper .col-lg-offset-11{margin-left:91.66666667%!important}.pt-cv-wrapper .col-lg-offset-10{margin-left:83.33333333%!important}.pt-cv-wrapper .col-lg-offset-9{margin-left:75%!important}.pt-cv-wrapper .col-lg-offset-8{margin-left:66.66666667%!important}.pt-cv-wrapper .col-lg-offset-7{margin-left:58.33333333%!important}.pt-cv-wrapper .col-lg-offset-6{margin-left:50%!important}.pt-cv-wrapper .col-lg-offset-5{margin-left:41.66666667%!important}.pt-cv-wrapper .col-lg-offset-4{margin-left:33.33333333%!important}.pt-cv-wrapper .col-lg-offset-3{margin-left:25%!important}.pt-cv-wrapper .col-lg-offset-2{margin-left:16.66666667%!important}.pt-cv-wrapper .col-lg-offset-1{margin-left:8.33333333%!important}.pt-cv-wrapper .col-lg-offset-0{margin-left:0!important}}.pt-cv-wrapper .btn{display:inline-block!important;margin-bottom:0!important;font-weight:normal!important;text-align:center!important;vertical-align:middle!important;-ms-touch-action:manipulation!important;touch-action:manipulation!important;cursor:pointer!important;background-image:none!important;border:1px solid transparent!important;white-space:nowrap!important;padding:6px 12px!important;font-size:14px!important;line-height:1.42857143!important;border-radius:4px!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pt-cv-wrapper .btn:focus,.pt-cv-wrapper .btn:active:focus,.pt-cv-wrapper .btn.active:focus,.pt-cv-wrapper .btn.focus,.pt-cv-wrapper .btn:active.focus,.pt-cv-wrapper .btn.active.focus{outline:thin dotted!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px!important}.pt-cv-wrapper .btn:hover,.pt-cv-wrapper .btn:focus,.pt-cv-wrapper .btn.focus{color:#333!important;text-decoration:none!important}.pt-cv-wrapper .btn:active,.pt-cv-wrapper .btn.active{outline:0!important;background-image:none!important;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important;box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important}.pt-cv-wrapper .btn.disabled,.pt-cv-wrapper .btn[disabled],.pt-cv-wrapper fieldset[disabled] .btn{cursor:not-allowed!important;opacity:.65!important;filter:alpha(opacity=65)!important;-webkit-box-shadow:none!important;box-shadow:none!important}.pt-cv-wrapper a.btn.disabled,.pt-cv-wrapper fieldset[disabled] a.btn{pointer-events:none!important}.pt-cv-wrapper .btn-default{color:#333!important;background-color:#fff!important;border-color:#ccc!important}.pt-cv-wrapper .btn-default:focus,.pt-cv-wrapper .btn-default.focus{color:#333!important;background-color:#e6e6e6!important;border-color:#8c8c8c!important}.pt-cv-wrapper .btn-default:hover{color:#333!important;background-color:#e6e6e6!important;border-color:#adadad!important}.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{color:#333!important;background-color:#e6e6e6!important;border-color:#adadad!important}.pt-cv-wrapper .btn-default:active:hover,.pt-cv-wrapper .btn-default.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:hover,.pt-cv-wrapper .btn-default:active:focus,.pt-cv-wrapper .btn-default.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default:focus,.pt-cv-wrapper .btn-default:active.focus,.pt-cv-wrapper .btn-default.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-default.focus{color:#333!important;background-color:#d4d4d4!important;border-color:#8c8c8c!important}.pt-cv-wrapper .btn-default:active,.pt-cv-wrapper .btn-default.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-default{background-image:none!important}.pt-cv-wrapper .btn-default.disabled,.pt-cv-wrapper .btn-default[disabled],.pt-cv-wrapper fieldset[disabled] .btn-default,.pt-cv-wrapper .btn-default.disabled:hover,.pt-cv-wrapper .btn-default[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-default:hover,.pt-cv-wrapper .btn-default.disabled:focus,.pt-cv-wrapper .btn-default[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-default:focus,.pt-cv-wrapper .btn-default.disabled.focus,.pt-cv-wrapper .btn-default[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-default.focus,.pt-cv-wrapper .btn-default.disabled:active,.pt-cv-wrapper .btn-default[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-default:active,.pt-cv-wrapper .btn-default.disabled.active,.pt-cv-wrapper .btn-default[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-default.active{background-color:#fff!important;border-color:#ccc!important}.pt-cv-wrapper .btn-default .badge{color:#fff!important;background-color:#333!important}.pt-cv-wrapper .btn-primary{color:#fff!important;background-color:#337ab7!important;border-color:#2e6da4!important}.pt-cv-wrapper .btn-primary:focus,.pt-cv-wrapper .btn-primary.focus{color:#fff!important;background-color:#286090!important;border-color:#122b40!important}.pt-cv-wrapper .btn-primary:hover{color:#fff!important;background-color:#286090!important;border-color:#204d74!important}.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{color:#fff!important;background-color:#286090!important;border-color:#204d74!important}.pt-cv-wrapper .btn-primary:active:hover,.pt-cv-wrapper .btn-primary.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:hover,.pt-cv-wrapper .btn-primary:active:focus,.pt-cv-wrapper .btn-primary.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary:focus,.pt-cv-wrapper .btn-primary:active.focus,.pt-cv-wrapper .btn-primary.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary.focus{color:#fff!important;background-color:#204d74!important;border-color:#122b40!important}.pt-cv-wrapper .btn-primary:active,.pt-cv-wrapper .btn-primary.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-primary{background-image:none!important}.pt-cv-wrapper .btn-primary.disabled,.pt-cv-wrapper .btn-primary[disabled],.pt-cv-wrapper fieldset[disabled] .btn-primary,.pt-cv-wrapper .btn-primary.disabled:hover,.pt-cv-wrapper .btn-primary[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-primary:hover,.pt-cv-wrapper .btn-primary.disabled:focus,.pt-cv-wrapper .btn-primary[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-primary:focus,.pt-cv-wrapper .btn-primary.disabled.focus,.pt-cv-wrapper .btn-primary[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-primary.focus,.pt-cv-wrapper .btn-primary.disabled:active,.pt-cv-wrapper .btn-primary[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-primary:active,.pt-cv-wrapper .btn-primary.disabled.active,.pt-cv-wrapper .btn-primary[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-primary.active{background-color:#337ab7!important;border-color:#2e6da4!important}.pt-cv-wrapper .btn-primary .badge{color:#337ab7!important;background-color:#fff!important}.pt-cv-wrapper .btn-success{color:#fff!important;background-color:#5cb85c!important;border-color:#4cae4c!important}.pt-cv-wrapper .btn-success:focus,.pt-cv-wrapper .btn-success.focus{color:#fff!important;background-color:#449d44!important;border-color:#255625!important}.pt-cv-wrapper .btn-success:hover{color:#fff!important;background-color:#449d44!important;border-color:#398439!important}.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{color:#fff!important;background-color:#449d44!important;border-color:#398439!important}.pt-cv-wrapper .btn-success:active:hover,.pt-cv-wrapper .btn-success.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:hover,.pt-cv-wrapper .btn-success:active:focus,.pt-cv-wrapper .btn-success.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success:focus,.pt-cv-wrapper .btn-success:active.focus,.pt-cv-wrapper .btn-success.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-success.focus{color:#fff!important;background-color:#398439!important;border-color:#255625!important}.pt-cv-wrapper .btn-success:active,.pt-cv-wrapper .btn-success.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-success{background-image:none!important}.pt-cv-wrapper .btn-success.disabled,.pt-cv-wrapper .btn-success[disabled],.pt-cv-wrapper fieldset[disabled] .btn-success,.pt-cv-wrapper .btn-success.disabled:hover,.pt-cv-wrapper .btn-success[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-success:hover,.pt-cv-wrapper .btn-success.disabled:focus,.pt-cv-wrapper .btn-success[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-success:focus,.pt-cv-wrapper .btn-success.disabled.focus,.pt-cv-wrapper .btn-success[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-success.focus,.pt-cv-wrapper .btn-success.disabled:active,.pt-cv-wrapper .btn-success[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-success:active,.pt-cv-wrapper .btn-success.disabled.active,.pt-cv-wrapper .btn-success[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-success.active{background-color:#5cb85c!important;border-color:#4cae4c!important}.pt-cv-wrapper .btn-success .badge{color:#5cb85c!important;background-color:#fff!important}.pt-cv-wrapper .btn-info{color:#fff!important;background-color:#5bc0de!important;border-color:#46b8da!important}.pt-cv-wrapper .btn-info:focus,.pt-cv-wrapper .btn-info.focus{color:#fff!important;background-color:#31b0d5!important;border-color:#1b6d85!important}.pt-cv-wrapper .btn-info:hover{color:#fff!important;background-color:#31b0d5!important;border-color:#269abc!important}.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{color:#fff!important;background-color:#31b0d5!important;border-color:#269abc!important}.pt-cv-wrapper .btn-info:active:hover,.pt-cv-wrapper .btn-info.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:hover,.pt-cv-wrapper .btn-info:active:focus,.pt-cv-wrapper .btn-info.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info:focus,.pt-cv-wrapper .btn-info:active.focus,.pt-cv-wrapper .btn-info.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-info.focus{color:#fff!important;background-color:#269abc!important;border-color:#1b6d85!important}.pt-cv-wrapper .btn-info:active,.pt-cv-wrapper .btn-info.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-info{background-image:none!important}.pt-cv-wrapper .btn-info.disabled,.pt-cv-wrapper .btn-info[disabled],.pt-cv-wrapper fieldset[disabled] .btn-info,.pt-cv-wrapper .btn-info.disabled:hover,.pt-cv-wrapper .btn-info[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-info:hover,.pt-cv-wrapper .btn-info.disabled:focus,.pt-cv-wrapper .btn-info[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-info:focus,.pt-cv-wrapper .btn-info.disabled.focus,.pt-cv-wrapper .btn-info[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-info.focus,.pt-cv-wrapper .btn-info.disabled:active,.pt-cv-wrapper .btn-info[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-info:active,.pt-cv-wrapper .btn-info.disabled.active,.pt-cv-wrapper .btn-info[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-info.active{background-color:#5bc0de!important;border-color:#46b8da!important}.pt-cv-wrapper .btn-info .badge{color:#5bc0de!important;background-color:#fff!important}.pt-cv-wrapper .btn-warning{color:#fff!important;background-color:#f0ad4e!important;border-color:#eea236!important}.pt-cv-wrapper .btn-warning:focus,.pt-cv-wrapper .btn-warning.focus{color:#fff!important;background-color:#ec971f!important;border-color:#985f0d!important}.pt-cv-wrapper .btn-warning:hover{color:#fff!important;background-color:#ec971f!important;border-color:#d58512!important}.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{color:#fff!important;background-color:#ec971f!important;border-color:#d58512!important}.pt-cv-wrapper .btn-warning:active:hover,.pt-cv-wrapper .btn-warning.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:hover,.pt-cv-wrapper .btn-warning:active:focus,.pt-cv-wrapper .btn-warning.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning:focus,.pt-cv-wrapper .btn-warning:active.focus,.pt-cv-wrapper .btn-warning.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning.focus{color:#fff!important;background-color:#d58512!important;border-color:#985f0d!important}.pt-cv-wrapper .btn-warning:active,.pt-cv-wrapper .btn-warning.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-warning{background-image:none!important}.pt-cv-wrapper .btn-warning.disabled,.pt-cv-wrapper .btn-warning[disabled],.pt-cv-wrapper fieldset[disabled] .btn-warning,.pt-cv-wrapper .btn-warning.disabled:hover,.pt-cv-wrapper .btn-warning[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-warning:hover,.pt-cv-wrapper .btn-warning.disabled:focus,.pt-cv-wrapper .btn-warning[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-warning:focus,.pt-cv-wrapper .btn-warning.disabled.focus,.pt-cv-wrapper .btn-warning[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-warning.focus,.pt-cv-wrapper .btn-warning.disabled:active,.pt-cv-wrapper .btn-warning[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-warning:active,.pt-cv-wrapper .btn-warning.disabled.active,.pt-cv-wrapper .btn-warning[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-warning.active{background-color:#f0ad4e!important;border-color:#eea236!important}.pt-cv-wrapper .btn-warning .badge{color:#f0ad4e!important;background-color:#fff!important}.pt-cv-wrapper .btn-danger{color:#fff!important;background-color:#d9534f!important;border-color:#d43f3a!important}.pt-cv-wrapper .btn-danger:focus,.pt-cv-wrapper .btn-danger.focus{color:#fff!important;background-color:#c9302c!important;border-color:#761c19!important}.pt-cv-wrapper .btn-danger:hover{color:#fff!important;background-color:#c9302c!important;border-color:#ac2925!important}.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{color:#fff!important;background-color:#c9302c!important;border-color:#ac2925!important}.pt-cv-wrapper .btn-danger:active:hover,.pt-cv-wrapper .btn-danger.active:hover,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:hover,.pt-cv-wrapper .btn-danger:active:focus,.pt-cv-wrapper .btn-danger.active:focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger:focus,.pt-cv-wrapper .btn-danger:active.focus,.pt-cv-wrapper .btn-danger.active.focus,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger.focus{color:#fff!important;background-color:#ac2925!important;border-color:#761c19!important}.pt-cv-wrapper .btn-danger:active,.pt-cv-wrapper .btn-danger.active,.pt-cv-wrapper .open>.dropdown-toggle.btn-danger{background-image:none!important}.pt-cv-wrapper .btn-danger.disabled,.pt-cv-wrapper .btn-danger[disabled],.pt-cv-wrapper fieldset[disabled] .btn-danger,.pt-cv-wrapper .btn-danger.disabled:hover,.pt-cv-wrapper .btn-danger[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-danger:hover,.pt-cv-wrapper .btn-danger.disabled:focus,.pt-cv-wrapper .btn-danger[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-danger:focus,.pt-cv-wrapper .btn-danger.disabled.focus,.pt-cv-wrapper .btn-danger[disabled].focus,.pt-cv-wrapper fieldset[disabled] .btn-danger.focus,.pt-cv-wrapper .btn-danger.disabled:active,.pt-cv-wrapper .btn-danger[disabled]:active,.pt-cv-wrapper fieldset[disabled] .btn-danger:active,.pt-cv-wrapper .btn-danger.disabled.active,.pt-cv-wrapper .btn-danger[disabled].active,.pt-cv-wrapper fieldset[disabled] .btn-danger.active{background-color:#d9534f!important;border-color:#d43f3a!important}.pt-cv-wrapper .btn-danger .badge{color:#d9534f!important;background-color:#fff!important}.pt-cv-wrapper .btn-link{color:#337ab7!important;font-weight:normal!important;border-radius:0!important}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link:active,.pt-cv-wrapper .btn-link.active,.pt-cv-wrapper .btn-link[disabled],.pt-cv-wrapper fieldset[disabled] .btn-link{background-color:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}.pt-cv-wrapper .btn-link,.pt-cv-wrapper .btn-link:hover,.pt-cv-wrapper .btn-link:focus,.pt-cv-wrapper .btn-link:active{border-color:transparent!important}.pt-cv-wrapper .btn-link:hover,.pt-cv-wrapper .btn-link:focus{color:#23527c!important;text-decoration:underline!important;background-color:transparent!important}.pt-cv-wrapper .btn-link[disabled]:hover,.pt-cv-wrapper fieldset[disabled] .btn-link:hover,.pt-cv-wrapper .btn-link[disabled]:focus,.pt-cv-wrapper fieldset[disabled] .btn-link:focus{color:#777!important;text-decoration:none!important}.pt-cv-wrapper .btn-lg,.pt-cv-wrapper .btn-group-lg>.btn{padding:10px 16px!important;font-size:18px!important;line-height:1.3333333!important;border-radius:6px!important}.pt-cv-wrapper .btn-sm,.pt-cv-wrapper .btn-group-sm>.btn{padding:5px 10px!important;font-size:12px!important;line-height:1.5!important;border-radius:3px!important}.pt-cv-wrapper .btn-xs,.pt-cv-wrapper .btn-group-xs>.btn{padding:1px 5px!important;font-size:12px!important;line-height:1.5!important;border-radius:3px!important}.pt-cv-wrapper .btn-block{display:block!important;width:100%!important}.pt-cv-wrapper .btn-block+.btn-block{margin-top:5px!important}.pt-cv-wrapper input[type="submit"].btn-block,.pt-cv-wrapper input[type="reset"].btn-block,.pt-cv-wrapper input[type="button"].btn-block{width:100%!important}.pt-cv-wrapper .fade{opacity:0!important;-webkit-transition:opacity .15s linear!important;-o-transition:opacity .15s linear!important;transition:opacity .15s linear!important}.pt-cv-wrapper .fade.in{opacity:1!important}.pt-cv-wrapper .collapse{display:none!important}.pt-cv-wrapper .collapse.in{display:block!important}.pt-cv-wrapper tr.collapse.in{display:table-row!important}.pt-cv-wrapper tbody.collapse.in{display:table-row-group!important}.pt-cv-wrapper .collapsing{position:relative!important;height:0!important;overflow:hidden!important;-webkit-transition-property:height,visibility!important;-o-transition-property:height,visibility!important;transition-property:height,visibility!important;-webkit-transition-duration:.35s!important;-o-transition-duration:.35s!important;transition-duration:.35s!important;-webkit-transition-timing-function:ease!important;-o-transition-timing-function:ease!important;transition-timing-function:ease!important}.pt-cv-wrapper .caret{display:inline-block!important;width:0!important;height:0!important;margin-left:2px!important;vertical-align:middle!important;border-top:4px dashed!important;border-top:4px solid \9!important;border-right:4px solid transparent!important;border-left:4px solid transparent!important}.pt-cv-wrapper .dropup,.pt-cv-wrapper .dropdown{position:relative!important}.pt-cv-wrapper .dropdown-toggle:focus{outline:0!important}.pt-cv-wrapper .dropdown-menu{position:absolute!important;top:100%!important;left:0!important;z-index:1000!important;display:none!important;float:left!important;min-width:160px!important;padding:5px 0!important;margin:2px 0 0!important;list-style:none!important;font-size:14px!important;text-align:left!important;background-color:#fff!important;border:1px solid #ccc!important;border:1px solid rgba(0,0,0,0.15)!important;border-radius:4px!important;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175)!important;box-shadow:0 6px 12px rgba(0,0,0,0.175)!important;-webkit-background-clip:padding-box!important;background-clip:padding-box!important}.pt-cv-wrapper .dropdown-menu.pull-right{right:0!important;left:auto!important}.pt-cv-wrapper .dropdown-menu .divider{height:1px!important;margin:9px 0!important;overflow:hidden!important;background-color:#e5e5e5!important}.pt-cv-wrapper .dropdown-menu>li>a{display:block!important;padding:3px 20px!important;clear:both!important;font-weight:normal!important;line-height:1.42857143!important;color:#333!important;white-space:nowrap!important}.pt-cv-wrapper .dropdown-menu>li>a:hover,.pt-cv-wrapper .dropdown-menu>li>a:focus{text-decoration:none!important;color:#262626!important;background-color:#f5f5f5!important}.pt-cv-wrapper .dropdown-menu>.active>a,.pt-cv-wrapper .dropdown-menu>.active>a:hover,.pt-cv-wrapper .dropdown-menu>.active>a:focus{color:#fff!important;text-decoration:none!important;outline:0!important;background-color:#337ab7!important}.pt-cv-wrapper .dropdown-menu>.disabled>a,.pt-cv-wrapper .dropdown-menu>.disabled>a:hover,.pt-cv-wrapper .dropdown-menu>.disabled>a:focus{color:#777!important}.pt-cv-wrapper .dropdown-menu>.disabled>a:hover,.pt-cv-wrapper .dropdown-menu>.disabled>a:focus{text-decoration:none!important;background-color:transparent!important;background-image:none!important;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)!important;cursor:not-allowed!important}.pt-cv-wrapper .open>.dropdown-menu{display:block!important}.pt-cv-wrapper .open>a{outline:0!important}.pt-cv-wrapper .dropdown-menu-right{left:auto!important;right:0!important}.pt-cv-wrapper .dropdown-menu-left{left:0!important;right:auto!important}.pt-cv-wrapper .dropdown-header{display:block!important;padding:3px 20px!important;font-size:12px!important;line-height:1.42857143!important;color:#777!important;white-space:nowrap!important}.pt-cv-wrapper .dropdown-backdrop{position:fixed!important;left:0!important;right:0!important;bottom:0!important;top:0!important;z-index:990!important}.pt-cv-wrapper .pull-right>.dropdown-menu{right:0!important;left:auto!important}.pt-cv-wrapper .dropup .caret,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .caret{border-top:0!important;border-bottom:4px dashed!important;border-bottom:4px solid \9!important;content:""!important}.pt-cv-wrapper .dropup .dropdown-menu,.pt-cv-wrapper .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto!important;bottom:100%!important;margin-bottom:2px!important}@media(min-width:768px){.pt-cv-wrapper .navbar-right .dropdown-menu{left:auto!important;right:0!important}.pt-cv-wrapper .navbar-right .dropdown-menu-left{left:0!important;right:auto!important}}.pt-cv-wrapper .btn-group,.pt-cv-wrapper .btn-group-vertical{position:relative!important;display:inline-block!important;vertical-align:middle!important}.pt-cv-wrapper .btn-group>.btn,.pt-cv-wrapper .btn-group-vertical>.btn{position:relative!important;float:left!important}.pt-cv-wrapper .btn-group>.btn:hover,.pt-cv-wrapper .btn-group-vertical>.btn:hover,.pt-cv-wrapper .btn-group>.btn:focus,.pt-cv-wrapper .btn-group-vertical>.btn:focus,.pt-cv-wrapper .btn-group>.btn:active,.pt-cv-wrapper .btn-group-vertical>.btn:active,.pt-cv-wrapper .btn-group>.btn.active,.pt-cv-wrapper .btn-group-vertical>.btn.active{z-index:2!important}.pt-cv-wrapper .btn-group .btn+.btn,.pt-cv-wrapper .btn-group .btn+.btn-group,.pt-cv-wrapper .btn-group .btn-group+.btn,.pt-cv-wrapper .btn-group .btn-group+.btn-group{margin-left:-1px!important}.pt-cv-wrapper .btn-toolbar{margin-left:-5px!important}.pt-cv-wrapper .btn-toolbar .btn,.pt-cv-wrapper .btn-toolbar .btn-group,.pt-cv-wrapper .btn-toolbar .input-group{float:left!important}.pt-cv-wrapper .btn-toolbar>.btn,.pt-cv-wrapper .btn-toolbar>.btn-group,.pt-cv-wrapper .btn-toolbar>.input-group{margin-left:5px!important}.pt-cv-wrapper .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0!important}.pt-cv-wrapper .btn-group>.btn:first-child{margin-left:0!important}.pt-cv-wrapper .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0!important;border-top-right-radius:0!important}.pt-cv-wrapper .btn-group>.btn:last-child:not(:first-child),.pt-cv-wrapper .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group>.btn-group{float:left!important}.pt-cv-wrapper .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0!important}.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0!important;border-top-right-radius:0!important}.pt-cv-wrapper .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group .dropdown-toggle:active,.pt-cv-wrapper .btn-group.open .dropdown-toggle{outline:0!important}.pt-cv-wrapper .btn-group>.btn+.dropdown-toggle{padding-left:8px!important;padding-right:8px!important}.pt-cv-wrapper .btn-group>.btn-lg+.dropdown-toggle{padding-left:12px!important;padding-right:12px!important}.pt-cv-wrapper .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important;box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)!important}.pt-cv-wrapper .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none!important;box-shadow:none!important}.pt-cv-wrapper .btn .caret{margin-left:0!important}.pt-cv-wrapper .btn-lg .caret{border-width:5px 5px 0!important;border-bottom-width:0!important}.pt-cv-wrapper .dropup .btn-lg .caret{border-width:0 5px 5px!important}.pt-cv-wrapper .btn-group-vertical>.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{display:block!important;float:none!important;width:100%!important;max-width:100%!important}.pt-cv-wrapper .btn-group-vertical>.btn-group>.btn{float:none!important}.pt-cv-wrapper .btn-group-vertical>.btn+.btn,.pt-cv-wrapper .btn-group-vertical>.btn+.btn-group,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn,.pt-cv-wrapper .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px!important;margin-left:0!important}.pt-cv-wrapper .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px!important;border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px!important;border-top-right-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.pt-cv-wrapper .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0!important;border-bottom-left-radius:0!important}.pt-cv-wrapper .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .btn-group-justified{display:table!important;width:100%!important;table-layout:fixed!important;border-collapse:separate!important}.pt-cv-wrapper .btn-group-justified>.btn,.pt-cv-wrapper .btn-group-justified>.btn-group{float:none!important;display:table-cell!important;width:1%!important}.pt-cv-wrapper .btn-group-justified>.btn-group .btn{width:100%!important}.pt-cv-wrapper .btn-group-justified>.btn-group .dropdown-menu{left:auto!important}.pt-cv-wrapper [data-toggle="buttons"]>.btn input[type="radio"],.pt-cv-wrapper [data-toggle="buttons"]>.btn-group>.btn input[type="radio"],.pt-cv-wrapper [data-toggle="buttons"]>.btn input[type="checkbox"],.pt-cv-wrapper [data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute!important;clip:rect(0,0,0,0)!important;pointer-events:none!important}.pt-cv-wrapper .nav{margin-bottom:0!important;padding-left:0!important;list-style:none!important}.pt-cv-wrapper .nav>li{position:relative!important;display:block!important}.pt-cv-wrapper .nav>li>a{position:relative!important;display:block!important;padding:10px 15px!important}.pt-cv-wrapper .nav>li>a:hover,.pt-cv-wrapper .nav>li>a:focus{text-decoration:none!important;background-color:#eee!important}.pt-cv-wrapper .nav>li.disabled>a{color:#777!important}.pt-cv-wrapper .nav>li.disabled>a:hover,.pt-cv-wrapper .nav>li.disabled>a:focus{color:#777!important;text-decoration:none!important;background-color:transparent!important;cursor:not-allowed!important}.pt-cv-wrapper .nav .open>a,.pt-cv-wrapper .nav .open>a:hover,.pt-cv-wrapper .nav .open>a:focus{background-color:#eee!important;border-color:#337ab7!important}.pt-cv-wrapper .nav .nav-divider{height:1px!important;margin:9px 0!important;overflow:hidden!important;background-color:#e5e5e5!important}.pt-cv-wrapper .nav>li>a>img{max-width:none!important}.pt-cv-wrapper .nav-tabs{border-bottom:1px solid #ddd!important}.pt-cv-wrapper .nav-tabs>li{float:left!important;margin-bottom:-1px!important}.pt-cv-wrapper .nav-tabs>li>a{margin-right:2px!important;line-height:1.42857143!important;border:1px solid transparent!important;border-radius:4px 4px 0 0!important}.pt-cv-wrapper .nav-tabs>li>a:hover{border-color:#eee #eee #ddd!important}.pt-cv-wrapper .nav-tabs>li.active>a,.pt-cv-wrapper .nav-tabs>li.active>a:hover,.pt-cv-wrapper .nav-tabs>li.active>a:focus{color:#555!important;background-color:#fff!important;border:1px solid #ddd!important;border-bottom-color:transparent!important;cursor:default!important}.pt-cv-wrapper .nav-tabs.nav-justified{width:100%!important;border-bottom:0!important}.pt-cv-wrapper .nav-tabs.nav-justified>li{float:none!important}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{text-align:center!important;margin-bottom:5px!important}.pt-cv-wrapper .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto!important;left:auto!important}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li{display:table-cell!important;width:1%!important}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-bottom:0!important}}.pt-cv-wrapper .nav-tabs.nav-justified>li>a{margin-right:0!important;border-radius:4px!important}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd!important}@media(min-width:768px){.pt-cv-wrapper .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd!important;border-radius:4px 4px 0 0!important}.pt-cv-wrapper .nav-tabs.nav-justified>.active>a,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff!important}}.pt-cv-wrapper .nav-pills>li{float:left!important}.pt-cv-wrapper .nav-pills>li>a{border-radius:4px!important}.pt-cv-wrapper .nav-pills>li+li{margin-left:2px!important}.pt-cv-wrapper .nav-pills>li.active>a,.pt-cv-wrapper .nav-pills>li.active>a:hover,.pt-cv-wrapper .nav-pills>li.active>a:focus{color:#fff!important;background-color:#337ab7!important}.pt-cv-wrapper .nav-stacked>li{float:none!important}.pt-cv-wrapper .nav-stacked>li+li{margin-top:2px!important;margin-left:0!important}.pt-cv-wrapper .nav-justified{width:100%!important}.pt-cv-wrapper .nav-justified>li{float:none!important}.pt-cv-wrapper .nav-justified>li>a{text-align:center!important;margin-bottom:5px!important}.pt-cv-wrapper .nav-justified>.dropdown .dropdown-menu{top:auto!important;left:auto!important}@media(min-width:768px){.pt-cv-wrapper .nav-justified>li{display:table-cell!important;width:1%!important}.pt-cv-wrapper .nav-justified>li>a{margin-bottom:0!important}}.pt-cv-wrapper .nav-tabs-justified{border-bottom:0!important}.pt-cv-wrapper .nav-tabs-justified>li>a{margin-right:0!important;border-radius:4px!important}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus{border:1px solid #ddd!important}@media(min-width:768px){.pt-cv-wrapper .nav-tabs-justified>li>a{border-bottom:1px solid #ddd!important;border-radius:4px 4px 0 0!important}.pt-cv-wrapper .nav-tabs-justified>.active>a,.pt-cv-wrapper .nav-tabs-justified>.active>a:hover,.pt-cv-wrapper .nav-tabs-justified>.active>a:focus{border-bottom-color:#fff!important}}.pt-cv-wrapper .tab-content>.tab-pane{display:none!important}.pt-cv-wrapper .tab-content>.active{display:block!important}.pt-cv-wrapper .nav-tabs .dropdown-menu{margin-top:-1px!important;border-top-right-radius:0!important;border-top-left-radius:0!important}.pt-cv-wrapper .pagination{display:inline-block!important;padding-left:0!important;margin:20px 0!important;border-radius:4px!important}.pt-cv-wrapper .pagination>li{display:inline!important}.pt-cv-wrapper .pagination>li>a,.pt-cv-wrapper .pagination>li>span{position:relative!important;float:left!important;padding:6px 12px!important;line-height:1.42857143!important;text-decoration:none!important;color:#337ab7!important;background-color:#fff!important;border:1px solid #ddd!important;margin-left:-1px!important}.pt-cv-wrapper .pagination>li:first-child>a,.pt-cv-wrapper .pagination>li:first-child>span{margin-left:0!important;border-bottom-left-radius:4px!important;border-top-left-radius:4px!important}.pt-cv-wrapper .pagination>li:last-child>a,.pt-cv-wrapper .pagination>li:last-child>span{border-bottom-right-radius:4px!important;border-top-right-radius:4px!important}.pt-cv-wrapper .pagination>li>a:hover,.pt-cv-wrapper .pagination>li>span:hover,.pt-cv-wrapper .pagination>li>a:focus,.pt-cv-wrapper .pagination>li>span:focus{z-index:3!important;color:#23527c!important;background-color:#eee!important;border-color:#ddd!important}.pt-cv-wrapper .pagination>.active>a,.pt-cv-wrapper .pagination>.active>span,.pt-cv-wrapper .pagination>.active>a:hover,.pt-cv-wrapper .pagination>.active>span:hover,.pt-cv-wrapper .pagination>.active>a:focus,.pt-cv-wrapper .pagination>.active>span:focus{z-index:2!important;color:#fff!important;background-color:#337ab7!important;border-color:#337ab7!important;cursor:default!important}.pt-cv-wrapper .pagination>.disabled>span,.pt-cv-wrapper .pagination>.disabled>span:hover,.pt-cv-wrapper .pagination>.disabled>span:focus,.pt-cv-wrapper .pagination>.disabled>a,.pt-cv-wrapper .pagination>.disabled>a:hover,.pt-cv-wrapper .pagination>.disabled>a:focus{color:#777!important;background-color:#fff!important;border-color:#ddd!important;cursor:not-allowed!important}.pt-cv-wrapper .pagination-lg>li>a,.pt-cv-wrapper .pagination-lg>li>span{padding:10px 16px!important;font-size:18px!important;line-height:1.3333333!important}.pt-cv-wrapper .pagination-lg>li:first-child>a,.pt-cv-wrapper .pagination-lg>li:first-child>span{border-bottom-left-radius:6px!important;border-top-left-radius:6px!important}.pt-cv-wrapper .pagination-lg>li:last-child>a,.pt-cv-wrapper .pagination-lg>li:last-child>span{border-bottom-right-radius:6px!important;border-top-right-radius:6px!important}.pt-cv-wrapper .pagination-sm>li>a,.pt-cv-wrapper .pagination-sm>li>span{padding:5px 10px!important;font-size:12px!important;line-height:1.5!important}.pt-cv-wrapper .pagination-sm>li:first-child>a,.pt-cv-wrapper .pagination-sm>li:first-child>span{border-bottom-left-radius:3px!important;border-top-left-radius:3px!important}.pt-cv-wrapper .pagination-sm>li:last-child>a,.pt-cv-wrapper .pagination-sm>li:last-child>span{border-bottom-right-radius:3px!important;border-top-right-radius:3px!important}.pt-cv-wrapper .thumbnail{display:block!important;padding:4px!important;margin-bottom:20px!important;line-height:1.42857143!important;background-color:#fff!important;border:1px solid #ddd!important;border-radius:4px!important;-webkit-transition:border .2s ease-in-out!important;-o-transition:border .2s ease-in-out!important;transition:border .2s ease-in-out!important}.pt-cv-wrapper .thumbnail>img,.pt-cv-wrapper .thumbnail a>img{margin-left:auto!important;margin-right:auto!important}.pt-cv-wrapper a.thumbnail:hover,.pt-cv-wrapper a.thumbnail:focus,.pt-cv-wrapper a.thumbnail.active{border-color:#337ab7!important}.pt-cv-wrapper .thumbnail .caption{padding:9px!important;color:#333!important}.pt-cv-wrapper .pt-cv-carousel{position:relative!important}.pt-cv-wrapper .carousel-inner{position:relative!important;overflow:hidden!important;width:100%!important}.pt-cv-wrapper .carousel-inner>.item{display:none!important;position:relative!important;-webkit-transition:.6s ease-in-out left!important;-o-transition:.6s ease-in-out left!important;transition:.6s ease-in-out left!important}.pt-cv-wrapper .carousel-inner>.item>img,.pt-cv-wrapper .carousel-inner>.item>a>img{line-height:1!important}@media all and (transform-3d),(-webkit-transform-3d){.pt-cv-wrapper .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out!important;-o-transition:-o-transform .6s ease-in-out!important;transition:transform .6s ease-in-out!important;-webkit-backface-visibility:hidden!important;backface-visibility:hidden!important;-webkit-perspective:1000px!important;perspective:1000px!important}.pt-cv-wrapper .carousel-inner>.item.next,.pt-cv-wrapper .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0)!important;transform:translate3d(100%,0,0)!important;left:0!important}.pt-cv-wrapper .carousel-inner>.item.prev,.pt-cv-wrapper .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0)!important;transform:translate3d(-100%,0,0)!important;left:0!important}.pt-cv-wrapper .carousel-inner>.item.next.left,.pt-cv-wrapper .carousel-inner>.item.prev.right,.pt-cv-wrapper .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important;left:0!important}}.pt-cv-wrapper .carousel-inner>.active,.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{display:block!important}.pt-cv-wrapper .carousel-inner>.active{left:0!important}.pt-cv-wrapper .carousel-inner>.next,.pt-cv-wrapper .carousel-inner>.prev{position:absolute!important;top:0!important;width:100%!important}.pt-cv-wrapper .carousel-inner>.next{left:100%!important}.pt-cv-wrapper .carousel-inner>.prev{left:-100%!important}.pt-cv-wrapper .carousel-inner>.next.left,.pt-cv-wrapper .carousel-inner>.prev.right{left:0!important}.pt-cv-wrapper .carousel-inner>.active.left{left:-100%!important}.pt-cv-wrapper .carousel-inner>.active.right{left:100%!important}.pt-cv-wrapper .carousel-control{position:absolute!important;top:0!important;left:0!important;bottom:0!important;width:15%!important;opacity:.5!important;filter:alpha(opacity=50)!important;font-size:20px!important;color:#fff!important;text-align:center!important;text-shadow:0 1px 2px rgba(0,0,0,0.6)!important}.pt-cv-wrapper .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%)!important;background-image:-o-linear-gradient(left,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%)!important;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.5)),to(rgba(0,0,0,0.0001)))!important;background-image:linear-gradient(to right,rgba(0,0,0,0.5) 0,rgba(0,0,0,0.0001) 100%)!important;background-repeat:repeat-x!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1)!important}.pt-cv-wrapper .carousel-control.right{left:auto!important;right:0!important;background-image:-webkit-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%)!important;background-image:-o-linear-gradient(left,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%)!important;background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,0.0001)),to(rgba(0,0,0,0.5)))!important;background-image:linear-gradient(to right,rgba(0,0,0,0.0001) 0,rgba(0,0,0,0.5) 100%)!important;background-repeat:repeat-x!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1)!important}.pt-cv-wrapper .carousel-control:hover,.pt-cv-wrapper .carousel-control:focus{outline:0!important;color:#fff!important;text-decoration:none!important;opacity:.9!important;filter:alpha(opacity=90)!important}.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right{position:absolute!important;top:50%!important;margin-top:-10px!important;z-index:5!important;display:inline-block!important}.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .glyphicon-chevron-left{left:50%!important;margin-left:-10px!important}.pt-cv-wrapper .carousel-control .icon-next,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right{right:50%!important;margin-right:-10px!important}.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .icon-next{width:20px!important;height:20px!important;line-height:1!important;font-family:serif!important}.pt-cv-wrapper .carousel-control .icon-prev:before{content:'\2039'!important}.pt-cv-wrapper .carousel-control .icon-next:before{content:'\203a'!important}.pt-cv-wrapper .pt-cv-carousel-indicators{position:absolute!important;bottom:10px!important;left:50%!important;z-index:15!important;width:60%!important;margin-left:-30%!important;padding-left:0!important;list-style:none!important;text-align:center!important}.pt-cv-wrapper .pt-cv-carousel-indicators li{display:inline-block!important;width:10px!important;height:10px!important;margin:1px!important;text-indent:-999px!important;border:1px solid #fff!important;border-radius:10px!important;cursor:pointer!important;background-color:#000 \9!important;background-color:rgba(0,0,0,0)!important}.pt-cv-wrapper .pt-cv-carousel-indicators .active{margin:0!important;width:12px!important;height:12px!important;background-color:#fff!important}.pt-cv-wrapper .pt-cv-carousel-caption{position:absolute!important;left:15%!important;right:15%!important;bottom:20px!important;z-index:10!important;padding-top:20px!important;padding-bottom:20px!important;color:#fff!important;text-align:center!important;text-shadow:0 1px 2px rgba(0,0,0,0.6)!important}.pt-cv-wrapper .pt-cv-carousel-caption .btn{text-shadow:none!important}@media screen and (min-width:768px){.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-prev,.pt-cv-wrapper .carousel-control .icon-next{width:30px!important;height:30px!important;margin-top:-15px!important;font-size:30px!important}.pt-cv-wrapper .carousel-control .glyphicon-chevron-left,.pt-cv-wrapper .carousel-control .icon-prev{margin-left:-15px!important}.pt-cv-wrapper .carousel-control .glyphicon-chevron-right,.pt-cv-wrapper .carousel-control .icon-next{margin-right:-15px!important}.pt-cv-wrapper .pt-cv-carousel-caption{left:20%!important;right:20%!important;padding-bottom:30px!important}.pt-cv-wrapper .pt-cv-carousel-indicators{bottom:20px!important}}.pt-cv-wrapper .clearfix:before,.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .container:before,.pt-cv-wrapper .container:after,.pt-cv-wrapper .container-fluid:before,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .row:before,.pt-cv-wrapper .row:after,.pt-cv-wrapper .btn-toolbar:before,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .btn-group-vertical>.btn-group:before,.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .nav:before,.pt-cv-wrapper .nav:after{content:" "!important;display:table!important}.pt-cv-wrapper .clearfix:after,.pt-cv-wrapper .container:after,.pt-cv-wrapper .container-fluid:after,.pt-cv-wrapper .row:after,.pt-cv-wrapper .btn-toolbar:after,.pt-cv-wrapper .btn-group-vertical>.btn-group:after,.pt-cv-wrapper .nav:after{clear:both!important}.pt-cv-wrapper .center-block{display:block!important;margin-left:auto!important;margin-right:auto!important}.pt-cv-wrapper .pull-right{float:right!important}.pt-cv-wrapper .pull-left{float:left!important}.pt-cv-wrapper .hide{display:none!important}.pt-cv-wrapper .show{display:block!important}.pt-cv-wrapper .invisible{visibility:hidden!important}.pt-cv-wrapper .text-hide{font:0/0 a!important;color:transparent!important;text-shadow:none!important;background-color:transparent!important;border:0!important}.pt-cv-wrapper .hidden{display:none!important}.pt-cv-wrapper .affix{position:fixed!important}.pt-cv-wrapper .text-left{text-align:left!important}.pt-cv-wrapper .text-right{text-align:right!important}.pt-cv-wrapper .text-center{text-align:center!important}.pt-cv-wrapper .text-justify{text-align:justify!important}.pt-cv-wrapper .text-nowrap{white-space:nowrap!important}.pt-cv-wrapper .text-lowercase{text-transform:lowercase!important}.pt-cv-wrapper .text-uppercase{text-transform:uppercase!important}.pt-cv-wrapper .text-capitalize{text-transform:capitalize!important}.pt-cv-wrapper .text-muted{color:#777!important}.pt-cv-wrapper .text-primary{color:#428bca!important}.pt-cv-wrapper .h1,.pt-cv-wrapper .h2,.pt-cv-wrapper .h3,.pt-cv-wrapper .h4,.pt-cv-wrapper .h5,.pt-cv-wrapper .h6,.pt-cv-wrapper h1,.pt-cv-wrapper h2,.pt-cv-wrapper h3,.pt-cv-wrapper h4,.pt-cv-wrapper h5,.pt-cv-wrapper h6{font-family:inherit!important;font-weight:500!important;line-height:1.1!important;color:inherit!important}.pt-cv-view *,.pt-cv-view *:before,.pt-cv-view *:after{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.pt-cv-view{position:relative!important;clear:both!important}.pt-cv-view:after{clear:both!important;content:''!important;display:block!important}.pt-cv-page{position:relative!important}.pt-cv-gls-group{clear:left!important}.pt-cv-view strong,.pt-cv-view strong *{font-weight:600!important}.pt-cv-colsys{margin-left:-15px!important;margin-right:-15px!important}@media(min-width:992px){.pt-cv-colsys [data-cvc="2"] .col-md-6:nth-child(2n+1),.pt-cv-colsys [data-cvc="3"] .col-md-4:nth-child(3n+1),.pt-cv-colsys [data-cvc="4"] .col-md-3:nth-child(4n+1),.pt-cv-colsys [data-cvc="5"] .col-md-2:nth-child(5n+1),.pt-cv-colsys [data-cvc="6"] .col-md-2:nth-child(6n+1),.pt-cv-colsys [data-cvc="7"] .col-md-1:nth-child(7n+1),.pt-cv-colsys [data-cvc="8"] .col-md-1:nth-child(8n+1),.pt-cv-colsys [data-cvc="9"] .col-md-1:nth-child(9n+1),.pt-cv-colsys [data-cvc="10"] .col-md-1:nth-child(10n+1),.pt-cv-colsys [data-cvc="11"] .col-md-1:nth-child(11n+1),.pt-cv-colsys [data-cvc="12"] .col-md-1:nth-child(12n+1){clear:left!important}}@media(min-width:768px) and (max-width:991px){.pt-cv-colsys .col-sm-6:nth-child(2n+1),.pt-cv-colsys .col-sm-4:nth-child(3n+1),.pt-cv-colsys .col-sm-3:nth-child(4n+1),.pt-cv-colsys .col-sm-2:nth-child(5n+1),.pt-cv-colsys .col-sm-2:nth-child(6n+1){clear:left!important}}@media(max-width:767px){.pt-cv-colsys .col-xs-6:nth-child(2n+1),.pt-cv-colsys .col-xs-4:nth-child(3n+1),.pt-cv-colsys .col-xs-3:nth-child(4n+1),.pt-cv-colsys .col-xs-2:nth-child(5n+1),.pt-cv-colsys .col-xs-2:nth-child(6n+1){clear:left!important}}@media(min-width:992px){.pt-cv-colsys [data-cvc="5"] .pt-cv-content-item{width:20%!important}.pt-cv-colsys [data-cvc="7"] .pt-cv-content-item{width:14.28571428%!important}.pt-cv-colsys [data-cvc="8"] .pt-cv-content-item{width:12.5%!important}.pt-cv-colsys [data-cvc="9"] .pt-cv-content-item{width:11.11111111%!important}.pt-cv-colsys [data-cvc="10"] .pt-cv-content-item{width:10%!important}.pt-cv-colsys [data-cvc="11"] .pt-cv-content-item{width:9.09090909%!important}}.pt-cv-colsys .pt-cv-content-item{flex:none!important;max-width:initial!important}.pt-cv-view a,.pt-cv-wrapper .btn{text-decoration:none!important;outline:0!important;font-style:normal!important}.pt-cv-view a{pointer-events:auto!important}.pt-cv-readmore{color:#fff!important;margin:10px 0!important;max-width:100%!important}.pt-cv-content-item{padding-bottom:15px!important;position:relative!important;overflow:hidden!important}.pt-cv-view .pt-cv-content-item>*{margin-bottom:10px!important}.pt-cv-ifield>*{margin-bottom:10px!important}.pt-cv-collapsible .pt-cv-content-item>*{margin-bottom:0!important}.pt-cv-title{margin-top:0!important}h4.pt-cv-title{font-size:18px!important}.pt-cv-view .pt-cv-title{margin-bottom:10px!important}.pt-cv-title a{font-weight:600!important}.pt-cv-thumbnail{height:auto!important;max-width:100%!important;margin-top:0!important;margin-bottom:10px!important;min-width:inherit!important}.pt-cv-thumbnail.pull-left{margin-right:15px!important}.pt-cv-thumbnail.pull-right{margin-left:15px!important}.pt-cv-no-image{min-width:80px!important;min-height:80px!important}.pt-cv-content,.pt-cv-content *{font-weight:400!important}.pt-cv-meta-fields{font-size:13px!important;margin-top:0!important}.pt-cv-meta-fields a{color:#41b7d8!important}.pt-cv-pagination-wrapper{margin:20px 0!important}.pt-cv-view+.pagination{float:left!important;margin:0 auto!important}.pt-cv-view+.pagination>li{background:none!important}.pt-cv-view+.pagination>li>a{cursor:pointer!important}.pt-cv-spinner{width:15px!important;height:15px!important;margin-top:-25px!important;display:inline-block!important;opacity:0!important;filter:alpha(opacity=0)!important;color:#0470ec!important;-webkit-transition:opacity .25s,width .25s!important;-moz-transition:opacity .25s,width .25s!important;-o-transition:opacity .25s,width .25s!important;transition:opacity .25s,width .25s!important}.pt-cv-spinner.active{opacity:1!important;filter:alpha(opacity=100)!important}.pt-cv-clear-pagination{margin-bottom:50px!important}.pt-cv-pagination-wrapper{clear:both!important;position:relative!important}.pt-cv-pagination-wrapper .pt-cv-pagination.pagination{-webkit-box-shadow:none!important;box-shadow:none!important;border:0!important;padding:0!important;margin:initial!important;min-height:initial!important;width:auto!important;display:inline-block!important}.pt-cv-pagination li{display:inline!important;background-image:none!important}.pt-cv-pagination li:before,.pt-cv-pagination li:after{content:none!important}.pt-cv-pagination a{cursor:pointer!important}.pt-cv-pagination li.active a{border-color:rgba(66,139,202,0.2)!important}.pt-cv-pagination li a[href="#"]{pointer-events:none!important}.pt-cv-collapsible .panel{display:block!important}.pt-cv-collapsible .panel-heading{padding:0!important}.pt-cv-collapsible .panel-heading a{display:block!important;padding:10px 15px!important}.pt-cv-collapsible .panel-body{padding:10px!important}.pt-cv-view .collapse{display:none!important;visibility:hidden!important}.pt-cv-view .collapse.in{display:block!important;visibility:visible!important;overflow:auto!important}.pt-cv-collapsible .panel-heading br{display:none!important}.pt-cv-scrollable{margin-left:0!important;margin-right:0!important}.pt-cv-scrollable .pt-cv-carousel-caption{text-align:left!important;bottom:15px!important;padding:10px!important}.pt-cv-scrollable .pt-cv-carousel-caption *{text-shadow:none!important}.pt-cv-scrollable .pt-cv-title{padding-bottom:0!important}.pt-cv-scrollable .pt-cv-carousel-caption{margin-bottom:10px!important}.pt-cv-scrollable .pt-cv-thumbnail{width:100%!important}.pt-cv-carousel-caption:empty{display:none!important}.pt-cv-scrollable .pt-cv-carousel .item{height:auto!important;margin:auto!important;min-height:0!important;max-height:none!important;line-height:normal!important}.pt-cv-scrollable .pt-cv-cap-w-img{background:rgba(0,0,0,0.6)!important;text-shadow:0 1px 1px #000!important;left:15px!important;right:15px!important}.pt-cv-cap-w-img *{color:#fff!important}.pt-cv-cap-w-img .pt-cv-title a{color:#fff!important}.pt-cv-scrollable .pt-cv-cap-wo-img{position:relative!important;bottom:0!important;left:0!important;right:0!important}.pt-cv-cap-wo-img *{color:#000!important}.pt-cv-cap-wo-img .pt-cv-readmore{color:#fff!important}.pt-cv-view .carousel-control{background-image:none!important;height:30px!important;width:40px!important;bottom:0!important;top:auto!important;color:#00a100!important;cursor:pointer!important}.pt-cv-view .pt-cv-carousel-indicators{bottom:0!important;margin-bottom:4px!important}.pt-cv-view .pt-cv-carousel-indicators li{background:#cecece!important;border:1px solid #cecece!important;margin:0 0!important}.pt-cv-view .pt-cv-carousel-indicators li.active{background:#428bca!important;border:1px solid #428bca!important}.pt-cv-2-col .pt-cv-title{clear:none!important}@media(min-width:480px){.pt-cv-2-col .pt-cv-colwrap{display:table!important;word-break:break-word!important}}@media(max-width:479px){.pt-cv-2-col .pt-cv-colwrap{clear:both!important}}.pt-cv-view .panel{margin-bottom:20px!important;background-color:#fff!important;border:1px solid transparent!important;border-radius:4px!important;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05)!important;box-shadow:0 1px 1px rgba(0,0,0,0.05)!important}.pt-cv-view .panel-default{border-color:#ddd!important;padding-bottom:0!important}.pt-cv-view .panel-default>.panel-heading{color:#333!important;background-color:#f5f5f5!important;border-color:#ddd!important}.pt-cv-pagination:after,.pt-cv-pagination:before{content:none!important}.pt-cv-wrapper [class*="pt-cv-"] a{box-shadow:none!important}.pt-cv-view p:empty{display:none!important}.pt-cv-view .pt-cv-ifield{margin-bottom:0!important}@media(max-width:480px){.pt-cv-nolf .pt-cv-2-col .pt-cv-thumbnail{float:none!important;margin:0!important}}@media print{.pt-cv-view a[href]:after{content:none!important}.pt-cv-view .collapse{display:block!important;height:auto!important;visibility:visible!important}}
|
public/assets/js/cv.js
CHANGED
@@ -1,17 +1,17 @@
|
|
1 |
-
/*! content-views
|
2 |
-
/*!
|
3 |
-
* Bootstrap v3.4.1 (http://getbootstrap.com)
|
4 |
-
* Copyright 2011-2019 Twitter, Inc.
|
5 |
-
* Licensed under the MIT license
|
6 |
-
*/
|
7 |
-
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.cvslide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".pt-cv-carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("pt-cv-slide")?(f.addClass(b),"object"==typeof f&&f.length&&f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;d||(a.fn.carousel=b,a.fn.carousel.Constructor=c),a.fn.cvcarousel=b,a.fn.cvcarousel.Constructor=c;var e=function(c){var d=a(this),e=d.attr("href");e&&(e=e.replace(/.*(?=#[^\s]+$)/,""));var f=d.attr("data-target")||e,g=a(document).find(f);if(g.hasClass("pt-cv-carousel")){var h=a.extend({},g.data(),d.data()),i=d.attr("data-cvslide-to");i&&(h.interval=!1),b.call(g,h),i&&g.data("bs.carousel").to(i),c.preventDefault()}};a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.carousel.data-api","[data-cvslide]",e).on("click.bs.carousel.data-api","[data-cvslide-to]",e)}),a(window).on("load",function(){a('[data-ride="cvcarousel"]',".pt-cv-wrapper").each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="cvcollapse"][href="#'+b.id+'"],[data-toggle="cvcollapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.4.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){!window.cv_collapse_ignore_others&&e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="cvcollapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;e||(a.fn.collapse=c,a.fn.collapse.Constructor=d),a.fn.cvcollapse=c,a.fn.cvcollapse.Constructor=d,a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.collapse.data-api",'[data-toggle="cvcollapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})})}(jQuery),+function(a){function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d="#"!==c?a(document).find(c):null;return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.4.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;h||(a.fn.dropdown=d,a.fn.dropdown.Constructor=g),a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)})}(jQuery),+function(a){function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.4.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(document).find(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;d||(a.fn.tab=b,a.fn.tab.Constructor=c);var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)})}(jQuery),/*!
|
8 |
-
* Bootstrap paginator v0.5
|
9 |
-
* Copyright 2013 Yun Lai <lyonlai1984@gmail.com>
|
10 |
-
* Licensed http://www.apache.org/licenses/LICENSE-2.0
|
11 |
-
*/
|
12 |
-
function(a){var b=function(a,b){this.init(a,b)},c=null;b.prototype={init:function(b,c){this.$element=a(b);{var d=c&&c.bootstrapMajorVersion?c.bootstrapMajorVersion:a.fn.bootstrapPaginator.defaults.bootstrapMajorVersion;this.$element.attr("id")}if(2===d&&!this.$element.is("div"))throw"in Bootstrap version 2 the pagination must be a div element. Or if you are using Bootstrap pagination 3. Please specify it in bootstrapMajorVersion in the option";if(d>2&&!this.$element.is("ul"))throw"in Bootstrap version 3 the pagination root item must be an ul element.";this.currentPage=1,this.lastPage=1,this.setOptions(c),this.initialized=!0},setOptions:function(b){this.options=a.extend({},this.options||a.fn.bootstrapPaginator.defaults,b),this.totalPages=parseInt(this.options.totalPages,10),this.numberOfPages=parseInt(this.options.numberOfPages,10),b&&"undefined"!=typeof b.currentPage&&this.setCurrentPage(b.currentPage),this.listen(),this.render(),this.initialized||this.lastPage===this.currentPage||this.$element.trigger("page-changed",[this.lastPage,this.currentPage])},listen:function(){this.$element.off("page-clicked"),this.$element.off("page-changed"),"function"==typeof this.options.onPageClicked&&this.$element.bind("page-clicked",this.options.onPageClicked),"function"==typeof this.options.onPageChanged&&this.$element.on("page-changed",this.options.onPageChanged),this.$element.bind("page-clicked",this.onPageClicked)},destroy:function(){this.$element.off("page-clicked"),this.$element.off("page-changed"),this.$element.removeData("bootstrapPaginator"),this.$element.empty()},show:function(a){this.setCurrentPage(a),this.render(),this.lastPage!==this.currentPage&&this.$element.trigger("page-changed",[this.lastPage,this.currentPage])},showNext:function(){var a=this.getPages();a.next&&this.show(a.next)},showPrevious:function(){var a=this.getPages();a.prev&&this.show(a.prev)},showFirst:function(){var a=this.getPages();a.first&&this.show(a.first)},showLast:function(){var a=this.getPages();a.last&&this.show(a.last)},onPageItemClicked:function(a){var b=a.data.type,c=a.data.page;this.$element.trigger("page-clicked",[a,b,c])},onPageClicked:function(b,c,d,e){var f=a(b.currentTarget);switch(d){case"first":f.bootstrapPaginator("showFirst");break;case"prev":f.bootstrapPaginator("showPrevious");break;case"next":f.bootstrapPaginator("showNext");break;case"last":f.bootstrapPaginator("showLast");break;case"page":f.bootstrapPaginator("show",e)}},render:function(){var b=this.getValueFromOption(this.options.containerClass,this.$element),c=this.options.size||"normal",d=this.options.alignment||"left",e=this.getPages(),f=2===this.options.bootstrapMajorVersion?a("<ul></ul>"):this.$element,g=2===this.options.bootstrapMajorVersion?this.getValueFromOption(this.options.listContainerClass,f):null,h=null,i=null,j=null,k=null,l=null,m=0;switch(c.toLowerCase()){case"large":case"small":case"mini":this.$element.addClass(a.fn.bootstrapPaginator.sizeArray[this.options.bootstrapMajorVersion][c.toLowerCase()])}if(2===this.options.bootstrapMajorVersion)switch(d.toLowerCase()){case"center":this.$element.addClass("pagination-centered");break;case"right":this.$element.addClass("pagination-right")}for(this.$element.addClass(b),this.$element.empty(),2===this.options.bootstrapMajorVersion&&(this.$element.append(f),f.addClass(g)),this.pageRef=[],e.first&&(h=this.buildPageItem("first",e.first),h&&f.append(h)),e.prev&&(i=this.buildPageItem("prev",e.prev),i&&f.append(i)),m=0;m<e.length;m+=1)l=this.buildPageItem("page",e[m]),l&&f.append(l);e.next&&(j=this.buildPageItem("next",e.next),j&&f.append(j)),e.last&&(k=this.buildPageItem("last",e.last),k&&f.append(k))},buildPageItem:function(b,c){var d=a("<li></li>"),e=a("<a></a>"),f="",g="",h=this.options.itemContainerClass(b,c,this.currentPage),i=this.getValueFromOption(this.options.itemContentClass,b,c,this.currentPage),j=null;switch(b){case"first":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"last":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"prev":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"next":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"page":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage)}return d.addClass(h).append(e),e.addClass(i).html(f).on("click",null,{type:b,page:c},a.proxy(this.onPageItemClicked,this)),this.options.pageUrl&&e.attr("href",this.getValueFromOption(this.options.pageUrl,b,c,this.currentPage)),this.options.useBootstrapTooltip?(j=a.extend({},this.options.bootstrapTooltipOptions,{title:g}),e.tooltip(j)):e.attr("title",g),d},setCurrentPage:function(a){
|
13 |
-
* CV JS
|
14 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
15 |
-
* @license GPL-2.0+
|
16 |
-
*/
|
17 |
-
function(a){"use strict";a.PT_CV_Public=a.PT_CV_Public||{},PT_CV_PUBLIC=PT_CV_PUBLIC||{};var b=PT_CV_PUBLIC._prefix;a.PT_CV_Public=function(b){this.options=a.extend({},b),"undefined"==typeof this.options.skip&&this.pagination()},a.PT_CV_Public.prototype={pagination:function(){var c=this;a("."+b+"pagination."+b+"ajax").each(function(){var b=a(this),d=a(this).attr("data-totalpages"),e=a(this).attr("data-currentpage");a(this).bootstrapPaginator({bootstrapMajorVersion:3,currentPage:e?parseInt(e):1,totalPages:d?parseInt(d):1,numberOfPages:PT_CV_PUBLIC.page_to_show,shouldShowPage:function(a){if(!(d&&10>d))return!0;switch(a){case"first":case"last":return!1;default:return!0}},itemContainerClass:function(a,b,c){var d="cv-pageitem-"+("page"===a?"number":a);return d+" "+(b===c?"active":"")},onPageClicked:function(a,d,e,f){c._setup_pagination(b,f,function(){PT_CV_PUBLIC.paging=0})}})})},_setup_pagination:function(a,c,d){var e=this;if(PT_CV_PUBLIC.paging=PT_CV_PUBLIC.paging||0,!PT_CV_PUBLIC.paging&&!a.data("disabled")){PT_CV_PUBLIC.paging=1;var f=a.next("."+b+"spinner"),g=a;a.parent("."+b+"pagination-wrapper").length&&(g=a.parent("."+b+"pagination-wrapper"));var h=g.closest("."+b+"wrapper").children("."+b+"view");if(h.hasClass(b+"timeline")&&(h=h.children(".tl-items").first()),g.find("."+b+"more").length>0){var i=h.children("."+b+"page").first();i.length>0&&(h=i)}e._get_page(a,c,f,h,d)}},_get_page:function(c,d,e,f,g){var h=this
|
1 |
+
/*! content-views 01-2020 */
|
2 |
+
/*!
|
3 |
+
* Bootstrap v3.4.1 (http://getbootstrap.com)
|
4 |
+
* Copyright 2011-2019 Twitter, Inc.
|
5 |
+
* Licensed under the MIT license
|
6 |
+
*/
|
7 |
+
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.cvslide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".pt-cv-carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.4.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("pt-cv-slide")?(f.addClass(b),"object"==typeof f&&f.length&&f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;d||(a.fn.carousel=b,a.fn.carousel.Constructor=c),a.fn.cvcarousel=b,a.fn.cvcarousel.Constructor=c;var e=function(c){var d=a(this),e=d.attr("href");e&&(e=e.replace(/.*(?=#[^\s]+$)/,""));var f=d.attr("data-target")||e,g=a(document).find(f);if(g.hasClass("pt-cv-carousel")){var h=a.extend({},g.data(),d.data()),i=d.attr("data-cvslide-to");i&&(h.interval=!1),b.call(g,h),i&&g.data("bs.carousel").to(i),c.preventDefault()}};a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.carousel.data-api","[data-cvslide]",e).on("click.bs.carousel.data-api","[data-cvslide-to]",e)}),a(window).on("load",function(){a('[data-ride="cvcarousel"]',".pt-cv-wrapper").each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(document).find(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="cvcollapse"][href="#'+b.id+'"],[data-toggle="cvcollapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.4.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){!window.cv_collapse_ignore_others&&e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(document).find(this.options.parent).find('[data-toggle="cvcollapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;e||(a.fn.collapse=c,a.fn.collapse.Constructor=d),a.fn.cvcollapse=c,a.fn.cvcollapse.Constructor=d,a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.collapse.data-api",'[data-toggle="cvcollapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})})}(jQuery),+function(a){function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d="#"!==c?a(document).find(c):null;return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.4.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;h||(a.fn.dropdown=d,a.fn.dropdown.Constructor=g),a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)})}(jQuery),+function(a){function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.4.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(document).find(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;d||(a.fn.tab=b,a.fn.tab.Constructor=c);var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).ready(function(){a(".pt-cv-wrapper").on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)})}(jQuery),/*!
|
8 |
+
* Bootstrap paginator v0.5
|
9 |
+
* Copyright 2013 Yun Lai <lyonlai1984@gmail.com>
|
10 |
+
* Licensed http://www.apache.org/licenses/LICENSE-2.0
|
11 |
+
*/
|
12 |
+
function(a){var b=function(a,b){this.init(a,b)},c=null;b.prototype={init:function(b,c){this.$element=a(b);{var d=c&&c.bootstrapMajorVersion?c.bootstrapMajorVersion:a.fn.bootstrapPaginator.defaults.bootstrapMajorVersion;this.$element.attr("id")}if(2===d&&!this.$element.is("div"))throw"in Bootstrap version 2 the pagination must be a div element. Or if you are using Bootstrap pagination 3. Please specify it in bootstrapMajorVersion in the option";if(d>2&&!this.$element.is("ul"))throw"in Bootstrap version 3 the pagination root item must be an ul element.";this.currentPage=1,this.lastPage=1,this.setOptions(c),this.initialized=!0},setOptions:function(b){this.options=a.extend({},this.options||a.fn.bootstrapPaginator.defaults,b),this.totalPages=parseInt(this.options.totalPages,10),this.numberOfPages=parseInt(this.options.numberOfPages,10),b&&"undefined"!=typeof b.currentPage&&this.setCurrentPage(b.currentPage),this.listen(),this.render(),this.initialized||this.lastPage===this.currentPage||this.$element.trigger("page-changed",[this.lastPage,this.currentPage])},listen:function(){this.$element.off("page-clicked"),this.$element.off("page-changed"),"function"==typeof this.options.onPageClicked&&this.$element.bind("page-clicked",this.options.onPageClicked),"function"==typeof this.options.onPageChanged&&this.$element.on("page-changed",this.options.onPageChanged),this.$element.bind("page-clicked",this.onPageClicked)},destroy:function(){this.$element.off("page-clicked"),this.$element.off("page-changed"),this.$element.removeData("bootstrapPaginator"),this.$element.empty()},show:function(a){this.setCurrentPage(a),this.render(),this.lastPage!==this.currentPage&&this.$element.trigger("page-changed",[this.lastPage,this.currentPage])},showNext:function(){var a=this.getPages();a.next&&this.show(a.next)},showPrevious:function(){var a=this.getPages();a.prev&&this.show(a.prev)},showFirst:function(){var a=this.getPages();a.first&&this.show(a.first)},showLast:function(){var a=this.getPages();a.last&&this.show(a.last)},onPageItemClicked:function(a){var b=a.data.type,c=a.data.page;this.$element.trigger("page-clicked",[a,b,c])},onPageClicked:function(b,c,d,e){var f=a(b.currentTarget);switch(d){case"first":f.bootstrapPaginator("showFirst");break;case"prev":f.bootstrapPaginator("showPrevious");break;case"next":f.bootstrapPaginator("showNext");break;case"last":f.bootstrapPaginator("showLast");break;case"page":f.bootstrapPaginator("show",e)}},render:function(){var b=this.getValueFromOption(this.options.containerClass,this.$element),c=this.options.size||"normal",d=this.options.alignment||"left",e=this.getPages(),f=2===this.options.bootstrapMajorVersion?a("<ul></ul>"):this.$element,g=2===this.options.bootstrapMajorVersion?this.getValueFromOption(this.options.listContainerClass,f):null,h=null,i=null,j=null,k=null,l=null,m=0;switch(c.toLowerCase()){case"large":case"small":case"mini":this.$element.addClass(a.fn.bootstrapPaginator.sizeArray[this.options.bootstrapMajorVersion][c.toLowerCase()])}if(2===this.options.bootstrapMajorVersion)switch(d.toLowerCase()){case"center":this.$element.addClass("pagination-centered");break;case"right":this.$element.addClass("pagination-right")}for(this.$element.addClass(b),this.$element.empty(),2===this.options.bootstrapMajorVersion&&(this.$element.append(f),f.addClass(g)),this.pageRef=[],e.first&&(h=this.buildPageItem("first",e.first),h&&f.append(h)),e.prev&&(i=this.buildPageItem("prev",e.prev),i&&f.append(i)),m=0;m<e.length;m+=1)l=this.buildPageItem("page",e[m]),l&&f.append(l);e.next&&(j=this.buildPageItem("next",e.next),j&&f.append(j)),e.last&&(k=this.buildPageItem("last",e.last),k&&f.append(k))},buildPageItem:function(b,c){var d=a("<li></li>"),e=a("<a></a>"),f="",g="",h=this.options.itemContainerClass(b,c,this.currentPage),i=this.getValueFromOption(this.options.itemContentClass,b,c,this.currentPage),j=null;switch(b){case"first":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"last":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"prev":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"next":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage);break;case"page":if(!this.getValueFromOption(this.options.shouldShowPage,b,c,this.currentPage))return;f=this.options.itemTexts(b,c,this.currentPage),g=this.options.tooltipTitles(b,c,this.currentPage)}return d.addClass(h).append(e),e.addClass(i).html(f).on("click",null,{type:b,page:c},a.proxy(this.onPageItemClicked,this)),this.options.pageUrl&&e.attr("href",this.getValueFromOption(this.options.pageUrl,b,c,this.currentPage)),this.options.useBootstrapTooltip?(j=a.extend({},this.options.bootstrapTooltipOptions,{title:g}),e.tooltip(j)):e.attr("title",g),d},setCurrentPage:function(a){(a>this.totalPages||1>a)&&(a=this.totalPages),this.lastPage=this.currentPage,this.currentPage=parseInt(a,10)},getPages:function(){var a=this.totalPages,b=this.currentPage-parseInt(this.numberOfPages/2),b=b+this.numberOfPages>a?a-this.numberOfPages+1:b,c=[],d=0,e=0;for(b=1>b?1:b,d=b,e=0;e<this.numberOfPages&&a>=d;d+=1,e+=1)c.push(d);return c.first=1,c.prev=this.currentPage>1?this.currentPage-1:1,c.next=this.currentPage<a?this.currentPage+1:a,c.last=a,c.current=this.currentPage,c.total=a,c.numberOfPages=this.options.numberOfPages,c},getValueFromOption:function(a){var b=null,c=Array.prototype.slice.call(arguments,1);return b="function"==typeof a?a.apply(this,c):a}},c=a.fn.bootstrapPaginator,a.fn.bootstrapPaginator=function(c){var d=arguments,e=null;return a(this).each(function(f,g){var h=a(g),i=h.data("bootstrapPaginator"),j="object"!=typeof c?null:c;if(!i)return i=new b(this,j),h=a(i.$element),void h.data("bootstrapPaginator",i);if("string"==typeof c){if(!i[c])throw"Method "+c+" does not exist";e=i[c].apply(i,Array.prototype.slice.call(d,1))}else e=i.setOptions(c)}),e},a.fn.bootstrapPaginator.sizeArray={2:{large:"pagination-large",small:"pagination-small",mini:"pagination-mini"},3:{large:"pagination-lg",small:"pagination-sm",mini:""}},a.fn.bootstrapPaginator.defaults={containerClass:"",size:"normal",alignment:"left",bootstrapMajorVersion:2,listContainerClass:"",itemContainerClass:function(a,b,c){return b===c?"active":""},itemContentClass:function(){return""},currentPage:1,numberOfPages:5,totalPages:1,pageUrl:function(){return null},onPageClicked:null,onPageChanged:null,useBootstrapTooltip:!1,shouldShowPage:function(a,b,c){var d=!0;switch(a){case"first":d=1!==c;break;case"prev":d=1!==c;break;case"next":d=c!==this.totalPages;break;case"last":d=c!==this.totalPages;break;case"page":d=!0}return d},itemTexts:function(a,b){switch(a){case"first":return PT_CV_PAGINATION.first;case"prev":return PT_CV_PAGINATION.prev;case"next":return PT_CV_PAGINATION.next;case"last":return PT_CV_PAGINATION.last;case"page":return b}},tooltipTitles:function(a,b,c){switch(a){case"first":return PT_CV_PAGINATION.goto_first;case"prev":return PT_CV_PAGINATION.goto_prev;case"next":return PT_CV_PAGINATION.goto_next;case"last":return PT_CV_PAGINATION.goto_last;case"page":return b===c?PT_CV_PAGINATION.current_page+" "+b:PT_CV_PAGINATION.goto_page+" "+b}},bootstrapTooltipOptions:{animation:!0,html:!0,placement:"top",selector:!1,title:"",container:!1}},a.fn.bootstrapPaginator.Constructor=b}(window.jQuery),/**
|
13 |
+
* CV JS
|
14 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
15 |
+
* @license GPL-2.0+
|
16 |
+
*/
|
17 |
+
function(a){"use strict";a.PT_CV_Public=a.PT_CV_Public||{},PT_CV_PUBLIC=PT_CV_PUBLIC||{};var b=PT_CV_PUBLIC._prefix;a.PT_CV_Public=function(b){this.options=a.extend({},b),"undefined"==typeof this.options.skip&&this.pagination()},a.PT_CV_Public.prototype={pagination:function(){var c=this;a("."+b+"pagination."+b+"ajax").each(function(){var b=a(this),d=a(this).attr("data-totalpages"),e=a(this).attr("data-currentpage");a(this).bootstrapPaginator({bootstrapMajorVersion:3,currentPage:e?parseInt(e):1,totalPages:d?parseInt(d):1,numberOfPages:PT_CV_PUBLIC.page_to_show,shouldShowPage:function(a){if(!(d&&10>d))return!0;switch(a){case"first":case"last":return!1;default:return!0}},itemContainerClass:function(a,b,c){var d="cv-pageitem-"+("page"===a?"number":a);return d+" "+(b===c?"active":"")},onPageClicked:function(a,d,e,f){c._setup_pagination(b,f,function(){PT_CV_PUBLIC.paging=0})}})})},_setup_pagination:function(a,c,d){var e=this;if(PT_CV_PUBLIC.paging=PT_CV_PUBLIC.paging||0,!PT_CV_PUBLIC.paging&&!a.data("disabled")){PT_CV_PUBLIC.paging=1;var f=a.next("."+b+"spinner"),g=a;a.parent("."+b+"pagination-wrapper").length&&(g=a.parent("."+b+"pagination-wrapper"));var h=g.closest("."+b+"wrapper").children("."+b+"view");if(h.hasClass(b+"timeline")&&(h=h.children(".tl-items").first()),g.find("."+b+"more").length>0){var i=h.children("."+b+"page").first();i.length>0&&(h=i)}e._get_page(a,c,f,h,d)}},_get_page:function(c,d,e,f,g){var h=this;d=parseInt(d);var i=h._active_page(d,f,g);if(i)return g&&"function"==typeof g&&g(),void a("body").trigger(b+"pagination-finished-simple");a("body").trigger(b+"before-pagination");var j={action:"pagination_request",sid:c.attr("data-sid"),unid:c.attr("data-unid"),page:d,lang:PT_CV_PUBLIC.lang,ajax_nonce:PT_CV_PUBLIC._nonce,custom_data:window.cvdata};a.ajax({type:"POST",url:PT_CV_PUBLIC.ajaxurl,data:j,beforeSend:function(){e.addClass("active")}}).done(function(c){e.removeClass("active"),c.indexOf(b+"no-post")<0&&f.append(c),h._active_page(d,f,g),g&&"function"==typeof g&&g(),a("body").trigger(b+"pagination-finished",[f,a(c)])})},_active_page:function(c,d){var e=!1,f='[data-id="'+b+"page-"+c+'"]';return d.children(f).length&&(e=!0,d.children().hide(),d.children(f).show(),this._update_url(c),window.cvp_pagination_no_scroll||a("html, body").animate({scrollTop:d.children(f).offset().top-160},1e3)),e},_get_paginated_url:function(a){return PT_CV_PAGINATION.links.page_n&&PT_CV_PAGINATION.links.page_n.replace("_CVNUMBER_",parseInt(a))},_update_url:function(a){var b=this;if(!PT_CV_PUBLIC.is_admin&&!window.cv_pagination_no_update_url){var c=!1;c=a>1?b._get_paginated_url(a):PT_CV_PAGINATION.links.page_1,c&&history.replaceState(null,null,encodeURI(c))}}},a(function(){new a.PT_CV_Public})}(jQuery);
|
public/templates/collapsible/html/main.php
CHANGED
@@ -1,37 +1,43 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Layout Name: Collapsible List
|
4 |
-
*
|
5 |
-
* @package PT_Content_Views
|
6 |
-
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
-
* @license GPL-2.0+
|
8 |
-
* @link http://www.contentviewspro.com/
|
9 |
-
* @copyright 2014 PT Guy
|
10 |
-
*/
|
11 |
-
if ( !defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
$random_id = PT_CV_Functions::string_random();
|
16 |
-
$heading = isset( $fields_html[ 'title' ] ) ? $fields_html[ 'title' ] : '';
|
17 |
-
unset( $fields_html[ 'title' ] );
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
</div>
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Layout Name: Collapsible List
|
4 |
+
*
|
5 |
+
* @package PT_Content_Views
|
6 |
+
* @author PT Guy <http://www.contentviewspro.com/>
|
7 |
+
* @license GPL-2.0+
|
8 |
+
* @link http://www.contentviewspro.com/
|
9 |
+
* @copyright 2014 PT Guy
|
10 |
+
*/
|
11 |
+
if ( !defined( 'ABSPATH' ) ) {
|
12 |
+
exit;
|
13 |
+
}
|
14 |
+
|
15 |
+
$random_id = PT_CV_Functions::string_random();
|
16 |
+
$heading = isset( $fields_html[ 'title' ] ) ? $fields_html[ 'title' ] : '';
|
17 |
+
unset( $fields_html[ 'title' ] );
|
18 |
+
|
19 |
+
// Get link
|
20 |
+
$matches = array();
|
21 |
+
preg_match( '/href="([^"]+)"/', $heading, $matches );
|
22 |
+
$href = !empty( $matches[ 1 ] ) ? "href='" . esc_url( $matches[ 1 ] ) . "' onclick='event.preventDefault()'" : '';
|
23 |
+
?>
|
24 |
+
|
25 |
+
<div class="panel-heading">
|
26 |
+
<a class="panel-title" data-toggle="cvcollapse" data-parent="#<?php echo esc_attr( PT_CV_PREFIX_UPPER . 'ID' ); ?>" data-target="#<?php echo esc_attr( $random_id ); ?>" <?php echo $href; ?>>
|
27 |
+
<?php
|
28 |
+
// Remove title wrapper and anchor tags, remain original post's title
|
29 |
+
$tt = tag_escape( PT_CV_Functions::setting_value( PT_CV_PREFIX . 'field-title-tag' ) );
|
30 |
+
echo preg_replace( array( '/<(' . $tt . '|a)[^>]*>/i', '/<\/(' . $tt . '|a)>/i' ), '', $heading );
|
31 |
+
?>
|
32 |
+
</a>
|
33 |
+
<?php
|
34 |
+
echo apply_filters( PT_CV_PREFIX_ . 'scrollable_toggle_icon', '' );
|
35 |
+
?>
|
36 |
+
</div>
|
37 |
+
<div id="<?php echo esc_attr( $random_id ); ?>" class="panel-collapse collapse <?php echo esc_attr( PT_CV_PREFIX_UPPER . 'CLASS' ); ?>">
|
38 |
+
<div class="panel-body">
|
39 |
+
<?php
|
40 |
+
echo implode( "\n", $fields_html );
|
41 |
+
?>
|
42 |
+
</div>
|
43 |
</div>
|